]> www.pilppa.org Git - linux-2.6-omap-h63xx.git/commitdiff
Merge git://git.kernel.org/pub/scm/linux/kernel/git/jejb/scsi-misc-2.6
authorLinus Torvalds <torvalds@g5.osdl.org>
Thu, 5 Jan 2006 00:30:12 +0000 (16:30 -0800)
committerLinus Torvalds <torvalds@g5.osdl.org>
Thu, 5 Jan 2006 00:30:12 +0000 (16:30 -0800)
95 files changed:
Documentation/scsi/ChangeLog.megaraid
Documentation/scsi/scsi_mid_low_api.txt
block/ll_rw_blk.c
block/scsi_ioctl.c
drivers/md/dm-table.c
drivers/message/fusion/mptbase.c
drivers/message/fusion/mptbase.h
drivers/message/fusion/mptctl.c
drivers/message/fusion/mptfc.c
drivers/message/fusion/mptsas.c
drivers/message/fusion/mptscsih.c
drivers/message/fusion/mptscsih.h
drivers/message/fusion/mptspi.c
drivers/scsi/53c700.c
drivers/scsi/53c700.h
drivers/scsi/53c7xx.c
drivers/scsi/Kconfig
drivers/scsi/NCR5380.c
drivers/scsi/aha152x.c
drivers/scsi/aic7xxx/aic79xx_osm.c
drivers/scsi/aic7xxx/aic7xxx_osm.c
drivers/scsi/arm/Kconfig
drivers/scsi/arm/acornscsi.c
drivers/scsi/atari_NCR5380.c
drivers/scsi/ch.c
drivers/scsi/constants.c
drivers/scsi/ipr.c
drivers/scsi/ipr.h
drivers/scsi/iscsi_tcp.c
drivers/scsi/iscsi_tcp.h
drivers/scsi/lpfc/lpfc.h
drivers/scsi/lpfc/lpfc_attr.c
drivers/scsi/lpfc/lpfc_crtn.h
drivers/scsi/lpfc/lpfc_disc.h
drivers/scsi/lpfc/lpfc_els.c
drivers/scsi/lpfc/lpfc_hbadisc.c
drivers/scsi/lpfc/lpfc_hw.h
drivers/scsi/lpfc/lpfc_init.c
drivers/scsi/lpfc/lpfc_nportdisc.c
drivers/scsi/lpfc/lpfc_scsi.c
drivers/scsi/lpfc/lpfc_sli.c
drivers/scsi/lpfc/lpfc_version.h
drivers/scsi/megaraid.c
drivers/scsi/megaraid/Kconfig.megaraid
drivers/scsi/megaraid/megaraid_mbox.c
drivers/scsi/megaraid/megaraid_mbox.h
drivers/scsi/ncr53c8xx.c
drivers/scsi/ncr53c8xx.h
drivers/scsi/qla2xxx/Kconfig
drivers/scsi/qla2xxx/Makefile
drivers/scsi/qla2xxx/ql2400.c [new file with mode: 0644]
drivers/scsi/qla2xxx/ql2400_fw.c [new file with mode: 0644]
drivers/scsi/qla2xxx/qla_attr.c
drivers/scsi/qla2xxx/qla_def.h
drivers/scsi/qla2xxx/qla_gbl.h
drivers/scsi/qla2xxx/qla_init.c
drivers/scsi/qla2xxx/qla_os.c
drivers/scsi/raid_class.c
drivers/scsi/scsi_devinfo.c
drivers/scsi/scsi_error.c
drivers/scsi/scsi_lib.c
drivers/scsi/scsi_priv.h
drivers/scsi/scsi_scan.c
drivers/scsi/scsi_sysfs.c
drivers/scsi/scsi_transport_fc.c
drivers/scsi/scsi_transport_spi.c
drivers/scsi/sd.c
drivers/scsi/sg.c
drivers/scsi/sr.c
drivers/scsi/sr_vendor.c
drivers/scsi/st.c
drivers/scsi/st.h
drivers/scsi/sun3_NCR5380.c
drivers/scsi/sym53c8xx_2/sym_defs.h
drivers/scsi/sym53c8xx_2/sym_fw.c
drivers/scsi/sym53c8xx_2/sym_fw.h
drivers/scsi/sym53c8xx_2/sym_fw1.h
drivers/scsi/sym53c8xx_2/sym_fw2.h
drivers/scsi/sym53c8xx_2/sym_glue.c
drivers/scsi/sym53c8xx_2/sym_glue.h
drivers/scsi/sym53c8xx_2/sym_hipd.c
drivers/scsi/sym53c8xx_2/sym_hipd.h
drivers/scsi/sym53c8xx_2/sym_malloc.c
drivers/scsi/sym53c8xx_2/sym_nvram.c
drivers/scsi/sym53c8xx_2/sym_nvram.h
drivers/scsi/sym53c8xx_comm.h [deleted file]
drivers/scsi/sym53c8xx_defs.h [deleted file]
fs/bio.c
include/linux/bio.h
include/linux/blkdev.h
include/linux/pci_ids.h
include/scsi/scsi_cmnd.h
include/scsi/scsi_dbg.h
include/scsi/scsi_device.h
include/scsi/scsi_transport_spi.h

index 5331d91432c76cb7d598165ee89db51236f27e75..09f6300eda4bef7262c5955abbe9e0bc5b41f905 100644 (file)
@@ -1,3 +1,38 @@
+Release Date   : Fri Nov 11 12:27:22 EST 2005 - Seokmann Ju <sju@lsil.com>
+Current Version : 2.20.4.7 (scsi module), 2.20.2.6 (cmm module)
+Older Version  : 2.20.4.6 (scsi module), 2.20.2.6 (cmm module)
+
+1.     Sorted out PCI IDs to remove megaraid support overlaps.
+       Based on the patch from Daniel, sorted out PCI IDs along with
+       charactor node name change from 'megadev' to 'megadev_legacy' to avoid
+       conflict.
+       ---
+       Hopefully we'll be getting the build restriction zapped much sooner, 
+       but we should also be thinking about totally removing the hardware 
+       support overlap in the megaraid drivers.
+
+       This patch pencils in a date of Feb 06 for this, and performs some 
+       printk abuse in hope that existing legacy users might pick up on what's
+       going on.
+
+       Signed-off-by: Daniel Drake <dsd@gentoo.org>
+       ---
+
+2.     Fixed a issue: megaraid always fails to reset handler.
+       ---
+       I found that the megaraid driver always fails to reset the
+       adapter with the following message:
+               megaraid: resetting the host...
+               megaraid mbox: reset sequence completed successfully
+               megaraid: fast sync command timed out
+               megaraid: reservation reset failed
+       when the "Cluster mode" of the adapter BIOS is enabled.
+       So, whenever the reset occurs, the adapter goes to
+       offline and just become unavailable.
+
+       Jun'ichi Nomura [mailto:jnomura@mtc.biglobe.ne.jp]
+       ---
+
 Release Date   : Mon Mar 07 12:27:22 EST 2005 - Seokmann Ju <sju@lsil.com>
 Current Version : 2.20.4.6 (scsi module), 2.20.2.6 (cmm module)
 Older Version  : 2.20.4.5 (scsi module), 2.20.2.5 (cmm module)
index 66565d42288fc446ad08930b8839a7285dee37e6..c4af92bc705df3da3d390321d479eb131418b31e 100644 (file)
@@ -150,7 +150,8 @@ scsi devices of which only the first 2 respond:
 LLD                   mid level                    LLD
 ===-------------------=========--------------------===------
 scsi_host_alloc()  -->
-scsi_add_host()  --------+
+scsi_add_host()  ---->
+scsi_scan_host()  -------+
                          |
                     slave_alloc()
                     slave_configure() -->  scsi_adjust_queue_depth()
@@ -196,7 +197,7 @@ of the issues involved. See the section on reference counting below.
 
 
 The hotplug concept may be extended to SCSI devices. Currently, when an
-HBA is added, the scsi_add_host() function causes a scan for SCSI devices
+HBA is added, the scsi_scan_host() function causes a scan for SCSI devices
 attached to the HBA's SCSI transport. On newer SCSI transports the HBA
 may become aware of a new SCSI device _after_ the scan has completed.
 An LLD can use this sequence to make the mid level aware of a SCSI device:
@@ -372,7 +373,7 @@ names all start with "scsi_".
 Summary:
    scsi_activate_tcq - turn on tag command queueing
    scsi_add_device - creates new scsi device (lu) instance
-   scsi_add_host - perform sysfs registration and SCSI bus scan.
+   scsi_add_host - perform sysfs registration and set up transport class
    scsi_adjust_queue_depth - change the queue depth on a SCSI device
    scsi_assign_lock - replace default host_lock with given lock
    scsi_bios_ptable - return copy of block device's partition table
@@ -386,6 +387,7 @@ Summary:
    scsi_remove_device - detach and remove a SCSI device
    scsi_remove_host - detach and remove all SCSI devices owned by host
    scsi_report_bus_reset - report scsi _bus_ reset observed
+   scsi_scan_host - scan SCSI bus
    scsi_track_queue_full - track successive QUEUE_FULL events 
    scsi_unblock_requests - allow further commands to be queued to given host
    scsi_unregister - [calls scsi_host_put()]
@@ -425,10 +427,10 @@ void scsi_activate_tcq(struct scsi_device *sdev, int depth)
  *      Might block: yes
  *
  *      Notes: This call is usually performed internally during a scsi
- *      bus scan when an HBA is added (i.e. scsi_add_host()). So it
+ *      bus scan when an HBA is added (i.e. scsi_scan_host()). So it
  *      should only be called if the HBA becomes aware of a new scsi
- *      device (lu) after scsi_add_host() has completed. If successful
- *      this call we lead to slave_alloc() and slave_configure() callbacks
+ *      device (lu) after scsi_scan_host() has completed. If successful
+ *      this call can lead to slave_alloc() and slave_configure() callbacks
  *      into the LLD.
  *
  *      Defined in: drivers/scsi/scsi_scan.c
@@ -439,7 +441,7 @@ struct scsi_device * scsi_add_device(struct Scsi_Host *shost,
 
 
 /**
- * scsi_add_host - perform sysfs registration and SCSI bus scan.
+ * scsi_add_host - perform sysfs registration and set up transport class
  * @shost:   pointer to scsi host instance
  * @dev:     pointer to struct device of type scsi class
  *
@@ -448,7 +450,11 @@ struct scsi_device * scsi_add_device(struct Scsi_Host *shost,
  *      Might block: no
  *
  *      Notes: Only required in "hotplug initialization model" after a
- *      successful call to scsi_host_alloc().
+ *      successful call to scsi_host_alloc().  This function does not
+ *     scan the bus; this can be done by calling scsi_scan_host() or
+ *     in some other transport-specific way.  The LLD must set up
+ *     the transport template before calling this function and may only
+ *     access the transport class data after this function has been called.
  *
  *      Defined in: drivers/scsi/hosts.c
  **/
@@ -559,7 +565,7 @@ void scsi_deactivate_tcq(struct scsi_device *sdev, int depth)
  *      area for the LLD's exclusive use.
  *      Both associated refcounting objects have their refcount set to 1.
  *      Full registration (in sysfs) and a bus scan are performed later when
- *      scsi_add_host() is called.
+ *      scsi_add_host() and scsi_scan_host() are called.
  *
  *      Defined in: drivers/scsi/hosts.c .
  **/
@@ -698,6 +704,19 @@ int scsi_remove_host(struct Scsi_Host *shost)
 void scsi_report_bus_reset(struct Scsi_Host * shost, int channel)
 
 
+/**
+ * scsi_scan_host - scan SCSI bus
+ * @shost: a pointer to a scsi host instance
+ *
+ *     Might block: yes
+ *
+ *     Notes: Should be called after scsi_add_host()
+ *
+ *     Defined in: drivers/scsi/scsi_scan.c
+ **/
+void scsi_scan_host(struct Scsi_Host *shost)
+
+
 /**
  * scsi_track_queue_full - track successive QUEUE_FULL events on given
  *                      device to determine if and when there is a need
index 99c9ca6d5992ab18b3e40fa201423bd3e36a0055..d4beb9a89ee0b08b0b681ca5a09e5cda59b7e99f 100644 (file)
@@ -239,7 +239,7 @@ void blk_queue_make_request(request_queue_t * q, make_request_fn * mfn)
        q->backing_dev_info.ra_pages = (VM_MAX_READAHEAD * 1024) / PAGE_CACHE_SIZE;
        q->backing_dev_info.state = 0;
        q->backing_dev_info.capabilities = BDI_CAP_MAP_COPY;
-       blk_queue_max_sectors(q, MAX_SECTORS);
+       blk_queue_max_sectors(q, SAFE_MAX_SECTORS);
        blk_queue_hardsect_size(q, 512);
        blk_queue_dma_alignment(q, 511);
        blk_queue_congestion_threshold(q);
@@ -555,7 +555,12 @@ void blk_queue_max_sectors(request_queue_t *q, unsigned short max_sectors)
                printk("%s: set to minimum %d\n", __FUNCTION__, max_sectors);
        }
 
-       q->max_sectors = q->max_hw_sectors = max_sectors;
+       if (BLK_DEF_MAX_SECTORS > max_sectors)
+               q->max_hw_sectors = q->max_sectors = max_sectors;
+       else {
+               q->max_sectors = BLK_DEF_MAX_SECTORS;
+               q->max_hw_sectors = max_sectors;
+       }
 }
 
 EXPORT_SYMBOL(blk_queue_max_sectors);
@@ -657,8 +662,8 @@ EXPORT_SYMBOL(blk_queue_hardsect_size);
 void blk_queue_stack_limits(request_queue_t *t, request_queue_t *b)
 {
        /* zero is "infinity" */
-       t->max_sectors = t->max_hw_sectors =
-               min_not_zero(t->max_sectors,b->max_sectors);
+       t->max_sectors = min_not_zero(t->max_sectors,b->max_sectors);
+       t->max_hw_sectors = min_not_zero(t->max_hw_sectors,b->max_hw_sectors);
 
        t->max_phys_segments = min(t->max_phys_segments,b->max_phys_segments);
        t->max_hw_segments = min(t->max_hw_segments,b->max_hw_segments);
@@ -1293,9 +1298,15 @@ static inline int ll_new_hw_segment(request_queue_t *q,
 static int ll_back_merge_fn(request_queue_t *q, struct request *req, 
                            struct bio *bio)
 {
+       unsigned short max_sectors;
        int len;
 
-       if (req->nr_sectors + bio_sectors(bio) > q->max_sectors) {
+       if (unlikely(blk_pc_request(req)))
+               max_sectors = q->max_hw_sectors;
+       else
+               max_sectors = q->max_sectors;
+
+       if (req->nr_sectors + bio_sectors(bio) > max_sectors) {
                req->flags |= REQ_NOMERGE;
                if (req == q->last_merge)
                        q->last_merge = NULL;
@@ -1325,9 +1336,16 @@ static int ll_back_merge_fn(request_queue_t *q, struct request *req,
 static int ll_front_merge_fn(request_queue_t *q, struct request *req, 
                             struct bio *bio)
 {
+       unsigned short max_sectors;
        int len;
 
-       if (req->nr_sectors + bio_sectors(bio) > q->max_sectors) {
+       if (unlikely(blk_pc_request(req)))
+               max_sectors = q->max_hw_sectors;
+       else
+               max_sectors = q->max_sectors;
+
+
+       if (req->nr_sectors + bio_sectors(bio) > max_sectors) {
                req->flags |= REQ_NOMERGE;
                if (req == q->last_merge)
                        q->last_merge = NULL;
@@ -2144,7 +2162,7 @@ int blk_rq_map_user(request_queue_t *q, struct request *rq, void __user *ubuf,
        struct bio *bio;
        int reading;
 
-       if (len > (q->max_sectors << 9))
+       if (len > (q->max_hw_sectors << 9))
                return -EINVAL;
        if (!len || !ubuf)
                return -EINVAL;
@@ -2259,7 +2277,7 @@ int blk_rq_map_kern(request_queue_t *q, struct request *rq, void *kbuf,
 {
        struct bio *bio;
 
-       if (len > (q->max_sectors << 9))
+       if (len > (q->max_hw_sectors << 9))
                return -EINVAL;
        if (!len || !kbuf)
                return -EINVAL;
@@ -2306,6 +2324,8 @@ void blk_execute_rq_nowait(request_queue_t *q, struct gendisk *bd_disk,
        generic_unplug_device(q);
 }
 
+EXPORT_SYMBOL_GPL(blk_execute_rq_nowait);
+
 /**
  * blk_execute_rq - insert a request into queue for execution
  * @q:         queue to insert the request in
@@ -2444,7 +2464,7 @@ void disk_round_stats(struct gendisk *disk)
 /*
  * queue lock must be held
  */
-static void __blk_put_request(request_queue_t *q, struct request *req)
+void __blk_put_request(request_queue_t *q, struct request *req)
 {
        struct request_list *rl = req->rl;
 
@@ -2473,6 +2493,8 @@ static void __blk_put_request(request_queue_t *q, struct request *req)
        }
 }
 
+EXPORT_SYMBOL_GPL(__blk_put_request);
+
 void blk_put_request(struct request *req)
 {
        unsigned long flags;
index 6e7db2e79f427833bb1ca06086d7ed1c81c40dfb..1d8852f7bbff077d14209b850b6d64e35186f81c 100644 (file)
@@ -233,7 +233,7 @@ static int sg_io(struct file *file, request_queue_t *q,
        if (verify_command(file, cmd))
                return -EPERM;
 
-       if (hdr->dxfer_len > (q->max_sectors << 9))
+       if (hdr->dxfer_len > (q->max_hw_sectors << 9))
                return -EIO;
 
        if (hdr->dxfer_len)
index a6d3baa46f6168e7f9143191abe22ffa5e2a65c2..a6f2dc66c3db12b09606218e1595e147b20c8a57 100644 (file)
@@ -638,7 +638,7 @@ int dm_split_args(int *argc, char ***argvp, char *input)
 static void check_for_valid_limits(struct io_restrictions *rs)
 {
        if (!rs->max_sectors)
-               rs->max_sectors = MAX_SECTORS;
+               rs->max_sectors = SAFE_MAX_SECTORS;
        if (!rs->max_phys_segments)
                rs->max_phys_segments = MAX_PHYS_SEGMENTS;
        if (!rs->max_hw_segments)
index 4262a22adc22d469a4a1e4991714443c04c03ec2..537836068c493736d1efc7a3139974d16faeacc1 100644 (file)
@@ -313,13 +313,13 @@ mpt_reply(MPT_ADAPTER *ioc, u32 pa)
                u32      log_info = le32_to_cpu(mr->u.reply.IOCLogInfo);
                if (ioc->bus_type == FC)
                        mpt_fc_log_info(ioc, log_info);
-               else if (ioc->bus_type == SCSI)
+               else if (ioc->bus_type == SPI)
                        mpt_sp_log_info(ioc, log_info);
                else if (ioc->bus_type == SAS)
                        mpt_sas_log_info(ioc, log_info);
        }
        if (ioc_stat & MPI_IOCSTATUS_MASK) {
-               if (ioc->bus_type == SCSI &&
+               if (ioc->bus_type == SPI &&
                    cb_idx != mpt_stm_index &&
                    cb_idx != mpt_lan_index)
                        mpt_sp_ioc_info(ioc, (u32)ioc_stat, mf);
@@ -1376,7 +1376,7 @@ mpt_attach(struct pci_dev *pdev, const struct pci_device_id *id)
        }
        else if (pdev->device == MPI_MANUFACTPAGE_DEVID_53C1030) {
                ioc->prod_name = "LSI53C1030";
-               ioc->bus_type = SCSI;
+               ioc->bus_type = SPI;
                /* 1030 Chip Fix. Disable Split transactions
                 * for PCIX. Set MOST bits to zero if Rev < C0( = 8).
                 */
@@ -1389,7 +1389,7 @@ mpt_attach(struct pci_dev *pdev, const struct pci_device_id *id)
        }
        else if (pdev->device == MPI_MANUFACTPAGE_DEVID_1030_53C1035) {
                ioc->prod_name = "LSI53C1035";
-               ioc->bus_type = SCSI;
+               ioc->bus_type = SPI;
        }
        else if (pdev->device == MPI_MANUFACTPAGE_DEVID_SAS1064) {
                ioc->prod_name = "LSISAS1064";
@@ -3042,7 +3042,7 @@ mpt_downloadboot(MPT_ADAPTER *ioc, MpiFwHeader_t *pFwHeader, int sleepFlag)
        /* Clear the internal flash bad bit - autoincrementing register,
         * so must do two writes.
         */
-       if (ioc->bus_type == SCSI) {
+       if (ioc->bus_type == SPI) {
                /*
                 * 1030 and 1035 H/W errata, workaround to access
                 * the ClearFlashBadSignatureBit
@@ -3152,7 +3152,7 @@ KickStart(MPT_ADAPTER *ioc, int force, int sleepFlag)
        int cnt,cntdn;
 
        dinitprintk((KERN_WARNING MYNAM ": KickStarting %s!\n", ioc->name));
-       if (ioc->bus_type == SCSI) {
+       if (ioc->bus_type == SPI) {
                /* Always issue a Msg Unit Reset first. This will clear some
                 * SCSI bus hang conditions.
                 */
@@ -3580,7 +3580,7 @@ initChainBuffers(MPT_ADAPTER *ioc)
        dinitprintk((KERN_INFO MYNAM ": %s Now numSGE=%d num_sge=%d num_chain=%d\n",
                ioc->name, numSGE, num_sge, num_chain));
 
-       if (ioc->bus_type == SCSI)
+       if (ioc->bus_type == SPI)
                num_chain *= MPT_SCSI_CAN_QUEUE;
        else
                num_chain *= MPT_FC_CAN_QUEUE;
index bac8eb4186d2f83cada0550f07ca319d584a2b17..6c48d1f54ac92552b4fdf42f4ebbf66c74d5eda9 100644 (file)
@@ -76,8 +76,8 @@
 #define COPYRIGHT      "Copyright (c) 1999-2005 " MODULEAUTHOR
 #endif
 
-#define MPT_LINUX_VERSION_COMMON       "3.03.04"
-#define MPT_LINUX_PACKAGE_NAME         "@(#)mptlinux-3.03.04"
+#define MPT_LINUX_VERSION_COMMON       "3.03.05"
+#define MPT_LINUX_PACKAGE_NAME         "@(#)mptlinux-3.03.05"
 #define WHAT_MAGIC_STRING              "@" "(" "#" ")"
 
 #define show_mptmod_ver(s,ver)  \
@@ -321,7 +321,7 @@ typedef struct _SYSIF_REGS
  *     Dynamic Multi-Pathing specific stuff...
  */
 
-/* VirtDevice negoFlags field */
+/* VirtTarget negoFlags field */
 #define MPT_TARGET_NO_NEGO_WIDE                0x01
 #define MPT_TARGET_NO_NEGO_SYNC                0x02
 #define MPT_TARGET_NO_NEGO_QAS         0x04
@@ -330,8 +330,7 @@ typedef struct _SYSIF_REGS
 /*
  *     VirtDevice - FC LUN device or SCSI target device
  */
-typedef struct _VirtDevice {
-       struct scsi_device      *device;
+typedef struct _VirtTarget {
        u8                       tflags;
        u8                       ioc_id;
        u8                       target_id;
@@ -342,21 +341,18 @@ typedef struct _VirtDevice {
        u8                       negoFlags;     /* bit field, see above */
        u8                       raidVolume;    /* set, if RAID Volume */
        u8                       type;          /* byte 0 of Inquiry data */
-       u8                       cflags;        /* controller flags */
-       u8                       rsvd1raid;
-       u16                      fc_phys_lun;
-       u16                      fc_xlat_lun;
        u32                      num_luns;
        u32                      luns[8];               /* Max LUNs is 256 */
-       u8                       pad[4];
        u8                       inq_data[8];
-               /* IEEE Registered Extended Identifier
-                  obtained via INQUIRY VPD page 0x83 */
-               /* NOTE: Do not separate uniq_prepad and uniq_data
-                  as they are treateed as a single entity in the code */
-       u8                       uniq_prepad[8];
-       u8                       uniq_data[20];
-       u8                       pad2[4];
+} VirtTarget;
+
+typedef struct _VirtDevice {
+       VirtTarget              *vtarget;
+       u8                       ioc_id;
+       u8                       bus_id;
+       u8                       target_id;
+       u8                       configured_lun;
+       u32                      lun;
 } VirtDevice;
 
 /*
@@ -903,7 +899,7 @@ typedef struct _MPT_LOCAL_REPLY {
 
 typedef enum {
        FC,
-       SCSI,
+       SPI,
        SAS
 } BUS_TYPE;
 
@@ -912,7 +908,7 @@ typedef struct _MPT_SCSI_HOST {
        int                       port;
        u32                       pad0;
        struct scsi_cmnd        **ScsiLookup;
-       VirtDevice              **Targets;
+       VirtTarget              **Targets;
        MPT_LOCAL_REPLY          *pLocal;               /* used for internal commands */
        struct timer_list         timer;
                /* Pool of memory for holding SCpnts before doing
index 602138f8544db665ded8957738b1dcca7208a772..959d2c5951b8beb072b4c00b0fbc34ac836c6acc 100644 (file)
@@ -1245,7 +1245,7 @@ mptctl_gettargetinfo (unsigned long arg)
        MPT_ADAPTER             *ioc;
        struct Scsi_Host        *sh;
        MPT_SCSI_HOST           *hd;
-       VirtDevice              *vdev;
+       VirtTarget              *vdev;
        char                    *pmem;
        int                     *pdata;
        IOCPage2_t              *pIoc2;
@@ -1822,7 +1822,7 @@ mptctl_do_mpt_command (struct mpt_ioctl_command karg, void __user *mfPtr)
        case MPI_FUNCTION_SCSI_IO_REQUEST:
                if (ioc->sh) {
                        SCSIIORequest_t *pScsiReq = (SCSIIORequest_t *) mf;
-                       VirtDevice      *pTarget = NULL;
+                       VirtTarget      *pTarget = NULL;
                        MPT_SCSI_HOST   *hd = NULL;
                        int qtag = MPI_SCSIIO_CONTROL_UNTAGGED;
                        int scsidir = 0;
index a628be9bbbadd0070326e5af78f9dadfb2f6934a..ba61e18288585679d4915c9ec22abd82804496b7 100644 (file)
@@ -84,13 +84,16 @@ static int  mptfcTaskCtx = -1;
 static int     mptfcInternalCtx = -1; /* Used only for internal commands */
 
 static struct scsi_host_template mptfc_driver_template = {
+       .module                         = THIS_MODULE,
        .proc_name                      = "mptfc",
        .proc_info                      = mptscsih_proc_info,
        .name                           = "MPT FC Host",
        .info                           = mptscsih_info,
        .queuecommand                   = mptscsih_qcmd,
+       .target_alloc                   = mptscsih_target_alloc,
        .slave_alloc                    = mptscsih_slave_alloc,
        .slave_configure                = mptscsih_slave_configure,
+       .target_destroy                 = mptscsih_target_destroy,
        .slave_destroy                  = mptscsih_slave_destroy,
        .change_queue_depth             = mptscsih_change_queue_depth,
        .eh_abort_handler               = mptscsih_abort,
@@ -167,13 +170,15 @@ mptfc_probe(struct pci_dev *pdev, const struct pci_device_id *id)
                printk(MYIOC_s_WARN_FMT
                  "Skipping because it's not operational!\n",
                  ioc->name);
-               return -ENODEV;
+               error = -ENODEV;
+               goto out_mptfc_probe;
        }
 
        if (!ioc->active) {
                printk(MYIOC_s_WARN_FMT "Skipping because it's disabled!\n",
                  ioc->name);
-               return -ENODEV;
+               error = -ENODEV;
+               goto out_mptfc_probe;
        }
 
        /*  Sanity check - ensure at least 1 port is INITIATOR capable
@@ -198,7 +203,8 @@ mptfc_probe(struct pci_dev *pdev, const struct pci_device_id *id)
                printk(MYIOC_s_WARN_FMT
                        "Unable to register controller with SCSI subsystem\n",
                        ioc->name);
-                return -1;
+               error = -1;
+               goto out_mptfc_probe;
         }
 
        spin_lock_irqsave(&ioc->FreeQlock, flags);
@@ -266,7 +272,7 @@ mptfc_probe(struct pci_dev *pdev, const struct pci_device_id *id)
        mem = kmalloc(sz, GFP_ATOMIC);
        if (mem == NULL) {
                error = -ENOMEM;
-               goto mptfc_probe_failed;
+               goto out_mptfc_probe;
        }
 
        memset(mem, 0, sz);
@@ -284,14 +290,14 @@ mptfc_probe(struct pci_dev *pdev, const struct pci_device_id *id)
        mem = kmalloc(sz, GFP_ATOMIC);
        if (mem == NULL) {
                error = -ENOMEM;
-               goto mptfc_probe_failed;
+               goto out_mptfc_probe;
        }
 
        memset(mem, 0, sz);
-       hd->Targets = (VirtDevice **) mem;
+       hd->Targets = (VirtTarget **) mem;
 
        dprintk((KERN_INFO
-         "  Targets @ %p, sz=%d\n", hd->Targets, sz));
+         "  vdev @ %p, sz=%d\n", hd->Targets, sz));
 
        /* Clear the TM flags
         */
@@ -330,13 +336,13 @@ mptfc_probe(struct pci_dev *pdev, const struct pci_device_id *id)
        if(error) {
                dprintk((KERN_ERR MYNAM
                  "scsi_add_host failed\n"));
-               goto mptfc_probe_failed;
+               goto out_mptfc_probe;
        }
 
        scsi_scan_host(sh);
        return 0;
 
-mptfc_probe_failed:
+out_mptfc_probe:
 
        mptscsih_remove(pdev);
        return error;
index e0a8bb8ba7d8f15bfdd3214a63f035884295129b..17e9757e728be780211d1e7a0008aaa9e2724d18 100644 (file)
@@ -228,31 +228,35 @@ static void mptsas_print_expander_pg1(SasExpanderPage1_t *pg1)
  * implement ->target_alloc.
  */
 static int
-mptsas_slave_alloc(struct scsi_device *device)
+mptsas_slave_alloc(struct scsi_device *sdev)
 {
-       struct Scsi_Host        *host = device->host;
+       struct Scsi_Host        *host = sdev->host;
        MPT_SCSI_HOST           *hd = (MPT_SCSI_HOST *)host->hostdata;
        struct sas_rphy         *rphy;
        struct mptsas_portinfo  *p;
+       VirtTarget              *vtarget;
        VirtDevice              *vdev;
-       uint                    target = device->id;
+       struct scsi_target      *starget;
        int i;
 
-       if ((vdev = hd->Targets[target]) != NULL)
-               goto out;
-
        vdev = kmalloc(sizeof(VirtDevice), GFP_KERNEL);
        if (!vdev) {
                printk(MYIOC_s_ERR_FMT "slave_alloc kmalloc(%zd) FAILED!\n",
                                hd->ioc->name, sizeof(VirtDevice));
                return -ENOMEM;
        }
-
        memset(vdev, 0, sizeof(VirtDevice));
-       vdev->tflags = MPT_TARGET_FLAGS_Q_YES|MPT_TARGET_FLAGS_VALID_INQUIRY;
        vdev->ioc_id = hd->ioc->id;
+       sdev->hostdata = vdev;
+       starget = scsi_target(sdev);
+       vtarget = starget->hostdata;
+       vdev->vtarget = vtarget;
+       if (vtarget->num_luns == 0) {
+               vtarget->tflags = MPT_TARGET_FLAGS_Q_YES|MPT_TARGET_FLAGS_VALID_INQUIRY;
+               hd->Targets[sdev->id] = vtarget;
+       }
 
-       rphy = dev_to_rphy(device->sdev_target->dev.parent);
+       rphy = dev_to_rphy(sdev->sdev_target->dev.parent);
        list_for_each_entry(p, &hd->ioc->sas_topology, list) {
                for (i = 0; i < p->num_phys; i++) {
                        if (p->phy_info[i].attached.sas_address ==
@@ -260,7 +264,7 @@ mptsas_slave_alloc(struct scsi_device *device)
                                vdev->target_id =
                                        p->phy_info[i].attached.target;
                                vdev->bus_id = p->phy_info[i].attached.bus;
-                               hd->Targets[device->id] = vdev;
+                               vdev->lun = sdev->lun;
                                goto out;
                        }
                }
@@ -271,19 +275,24 @@ mptsas_slave_alloc(struct scsi_device *device)
        return -ENODEV;
 
  out:
-       vdev->num_luns++;
-       device->hostdata = vdev;
+       vtarget->ioc_id = vdev->ioc_id;
+       vtarget->target_id = vdev->target_id;
+       vtarget->bus_id = vdev->bus_id;
+       vtarget->num_luns++;
        return 0;
 }
 
 static struct scsi_host_template mptsas_driver_template = {
+       .module                         = THIS_MODULE,
        .proc_name                      = "mptsas",
        .proc_info                      = mptscsih_proc_info,
        .name                           = "MPT SPI Host",
        .info                           = mptscsih_info,
        .queuecommand                   = mptscsih_qcmd,
+       .target_alloc                   = mptscsih_target_alloc,
        .slave_alloc                    = mptsas_slave_alloc,
        .slave_configure                = mptscsih_slave_configure,
+       .target_destroy                 = mptscsih_target_destroy,
        .slave_destroy                  = mptscsih_slave_destroy,
        .change_queue_depth             = mptscsih_change_queue_depth,
        .eh_abort_handler               = mptscsih_abort,
@@ -986,7 +995,6 @@ mptsas_probe_hba_phys(MPT_ADAPTER *ioc, int *index)
                goto out_free_port_info;
 
        list_add_tail(&port_info->list, &ioc->sas_topology);
-
        for (i = 0; i < port_info->num_phys; i++) {
                mptsas_sas_phy_pg0(ioc, &port_info->phy_info[i],
                        (MPI_SAS_PHY_PGAD_FORM_PHY_NUMBER <<
@@ -1133,13 +1141,15 @@ mptsas_probe(struct pci_dev *pdev, const struct pci_device_id *id)
                printk(MYIOC_s_WARN_FMT
                  "Skipping because it's not operational!\n",
                  ioc->name);
-               return -ENODEV;
+               error = -ENODEV;
+               goto out_mptsas_probe;
        }
 
        if (!ioc->active) {
                printk(MYIOC_s_WARN_FMT "Skipping because it's disabled!\n",
                  ioc->name);
-               return -ENODEV;
+               error = -ENODEV;
+               goto out_mptsas_probe;
        }
 
        /*  Sanity check - ensure at least 1 port is INITIATOR capable
@@ -1163,7 +1173,8 @@ mptsas_probe(struct pci_dev *pdev, const struct pci_device_id *id)
                printk(MYIOC_s_WARN_FMT
                        "Unable to register controller with SCSI subsystem\n",
                        ioc->name);
-                return -1;
+               error = -1;
+               goto out_mptsas_probe;
         }
 
        spin_lock_irqsave(&ioc->FreeQlock, flags);
@@ -1237,7 +1248,7 @@ mptsas_probe(struct pci_dev *pdev, const struct pci_device_id *id)
        mem = kmalloc(sz, GFP_ATOMIC);
        if (mem == NULL) {
                error = -ENOMEM;
-               goto mptsas_probe_failed;
+               goto out_mptsas_probe;
        }
 
        memset(mem, 0, sz);
@@ -1255,14 +1266,14 @@ mptsas_probe(struct pci_dev *pdev, const struct pci_device_id *id)
        mem = kmalloc(sz, GFP_ATOMIC);
        if (mem == NULL) {
                error = -ENOMEM;
-               goto mptsas_probe_failed;
+               goto out_mptsas_probe;
        }
 
        memset(mem, 0, sz);
-       hd->Targets = (VirtDevice **) mem;
+       hd->Targets = (VirtTarget **) mem;
 
        dprintk((KERN_INFO
-         "  Targets @ %p, sz=%d\n", hd->Targets, sz));
+         "  vtarget @ %p, sz=%d\n", hd->Targets, sz));
 
        /* Clear the TM flags
         */
@@ -1308,14 +1319,14 @@ mptsas_probe(struct pci_dev *pdev, const struct pci_device_id *id)
        if (error) {
                dprintk((KERN_ERR MYNAM
                  "scsi_add_host failed\n"));
-               goto mptsas_probe_failed;
+               goto out_mptsas_probe;
        }
 
        mptsas_scan_sas_topology(ioc);
 
        return 0;
 
-mptsas_probe_failed:
+out_mptsas_probe:
 
        mptscsih_remove(pdev);
        return error;
index b7b9846ff3fd960859bd077f2716e95a9ab23dd7..93a16fa3c4baeab822056108f9e622e906b10d5c 100644 (file)
@@ -150,28 +150,29 @@ static int        mptscsih_IssueTaskMgmt(MPT_SCSI_HOST *hd, u8 type, u8 channel, u8 tar
 int            mptscsih_ioc_reset(MPT_ADAPTER *ioc, int post_reset);
 int            mptscsih_event_process(MPT_ADAPTER *ioc, EventNotificationReply_t *pEvReply);
 
-static void    mptscsih_initTarget(MPT_SCSI_HOST *hd, int bus_id, int target_id, u8 lun, char *data, int dlen);
-static void    mptscsih_setTargetNegoParms(MPT_SCSI_HOST *hd, VirtDevice *target, char byte56);
-static void    mptscsih_set_dvflags(MPT_SCSI_HOST *hd, SCSIIORequest_t *pReq);
+static void    mptscsih_initTarget(MPT_SCSI_HOST *hd, VirtTarget *vtarget, u8 lun, char *data, int dlen);
+static void    mptscsih_setTargetNegoParms(MPT_SCSI_HOST *hd, VirtTarget *vtarget, char byte56);
 static void    mptscsih_setDevicePage1Flags (u8 width, u8 factor, u8 offset, int *requestedPtr, int *configurationPtr, u8 flags);
-static void    mptscsih_no_negotiate(MPT_SCSI_HOST *hd, int target_id);
+static void    mptscsih_no_negotiate(MPT_SCSI_HOST *hd, struct scsi_cmnd *sc);
 static int     mptscsih_writeSDP1(MPT_SCSI_HOST *hd, int portnum, int target, int flags);
 static int     mptscsih_writeIOCPage4(MPT_SCSI_HOST *hd, int target_id, int bus);
 int            mptscsih_scandv_complete(MPT_ADAPTER *ioc, MPT_FRAME_HDR *mf, MPT_FRAME_HDR *r);
 static int     mptscsih_do_cmd(MPT_SCSI_HOST *hd, INTERNAL_CMD *iocmd);
-static int     mptscsih_synchronize_cache(MPT_SCSI_HOST *hd, int portnum);
+static void    mptscsih_synchronize_cache(MPT_SCSI_HOST *hd, VirtDevice *vdevice);
+static void    mptscsih_negotiate_to_asyn_narrow(MPT_SCSI_HOST *hd, VirtTarget *vtarget);
+static int     mptscsih_is_phys_disk(MPT_ADAPTER *ioc, int id);
 
 static struct work_struct   mptscsih_persistTask;
 
 #ifdef MPTSCSIH_ENABLE_DOMAIN_VALIDATION
 static int     mptscsih_do_raid(MPT_SCSI_HOST *hd, u8 action, INTERNAL_CMD *io);
 static void    mptscsih_domainValidation(void *hd);
-static int     mptscsih_is_phys_disk(MPT_ADAPTER *ioc, int id);
 static void    mptscsih_qas_check(MPT_SCSI_HOST *hd, int id);
 static int     mptscsih_doDv(MPT_SCSI_HOST *hd, int channel, int target);
 static void    mptscsih_dv_parms(MPT_SCSI_HOST *hd, DVPARAMETERS *dv,void *pPage);
 static void    mptscsih_fillbuf(char *buffer, int size, int index, int width);
 static void    mptscsih_set_dvflags_raid(MPT_SCSI_HOST *hd, int id);
+static void    mptscsih_set_dvflags(MPT_SCSI_HOST *hd, struct scsi_cmnd *sc);
 #endif
 
 void           mptscsih_remove(struct pci_dev *);
@@ -627,7 +628,7 @@ mptscsih_io_done(MPT_ADAPTER *ioc, MPT_FRAME_HDR *mf, MPT_FRAME_HDR *mr)
                dreplyprintk((KERN_NOTICE "Reply ha=%d id=%d lun=%d:\n"
                        "IOCStatus=%04xh SCSIState=%02xh SCSIStatus=%02xh\n"
                        "resid=%d bufflen=%d xfer_cnt=%d\n",
-                       ioc->id, pScsiReq->TargetID, pScsiReq->LUN[1],
+                       ioc->id, sc->device->id, sc->device->lun,
                        status, scsi_state, scsi_status, sc->resid,
                        sc->request_bufflen, xfer_cnt));
 
@@ -641,7 +642,7 @@ mptscsih_io_done(MPT_ADAPTER *ioc, MPT_FRAME_HDR *mf, MPT_FRAME_HDR *mr)
                    pScsiReply->ResponseInfo) {
                        printk(KERN_NOTICE "ha=%d id=%d lun=%d: "
                        "FCP_ResponseInfo=%08xh\n",
-                       ioc->id, pScsiReq->TargetID, pScsiReq->LUN[1],
+                       ioc->id, sc->device->id, sc->device->lun,
                        le32_to_cpu(pScsiReply->ResponseInfo));
                }
 
@@ -677,8 +678,8 @@ mptscsih_io_done(MPT_ADAPTER *ioc, MPT_FRAME_HDR *mf, MPT_FRAME_HDR *mr)
                        sc->result = DID_RESET << 16;
 
                        /* GEM Workaround. */
-                       if (ioc->bus_type == SCSI)
-                               mptscsih_no_negotiate(hd, sc->device->id);
+                       if (ioc->bus_type == SPI)
+                               mptscsih_no_negotiate(hd, sc);
                        break;
 
                case MPI_IOCSTATUS_SCSI_RESIDUAL_MISMATCH:      /* 0x0049 */
@@ -892,16 +893,15 @@ mptscsih_flush_running_cmds(MPT_SCSI_HOST *hd)
  *             when a lun is disable by mid-layer.
  *             Do NOT access the referenced scsi_cmnd structure or
  *             members. Will cause either a paging or NULL ptr error.
- *     @hd: Pointer to a SCSI HOST structure
- *     @target: target id
- *     @lun: lun
+ *      @hd: Pointer to a SCSI HOST structure
+ *     @vdevice: per device private data
  *
  *     Returns: None.
  *
  *     Called from slave_destroy.
  */
 static void
-mptscsih_search_running_cmds(MPT_SCSI_HOST *hd, uint target, uint lun)
+mptscsih_search_running_cmds(MPT_SCSI_HOST *hd, VirtDevice *vdevice)
 {
        SCSIIORequest_t *mf = NULL;
        int              ii;
@@ -909,7 +909,7 @@ mptscsih_search_running_cmds(MPT_SCSI_HOST *hd, uint target, uint lun)
        struct scsi_cmnd *sc;
 
        dsprintk((KERN_INFO MYNAM ": search_running target %d lun %d max %d\n",
-                       target, lun, max));
+                       vdevice->target_id, vdevice->lun, max));
 
        for (ii=0; ii < max; ii++) {
                if ((sc = hd->ScsiLookup[ii]) != NULL) {
@@ -919,7 +919,7 @@ mptscsih_search_running_cmds(MPT_SCSI_HOST *hd, uint target, uint lun)
                        dsprintk(( "search_running: found (sc=%p, mf = %p) target %d, lun %d \n",
                                        hd->ScsiLookup[ii], mf, mf->TargetID, mf->LUN[1]));
 
-                       if ((mf->TargetID != ((u8)target)) || (mf->LUN[1] != ((u8) lun)))
+                       if ((mf->TargetID != ((u8)vdevice->target_id)) || (mf->LUN[1] != ((u8) vdevice->lun)))
                                continue;
 
                        /* Cleanup
@@ -993,8 +993,10 @@ mptscsih_remove(struct pci_dev *pdev)
        MPT_ADAPTER             *ioc = pci_get_drvdata(pdev);
        struct Scsi_Host        *host = ioc->sh;
        MPT_SCSI_HOST           *hd;
+#ifdef MPTSCSIH_ENABLE_DOMAIN_VALIDATION
        int                     count;
        unsigned long           flags;
+#endif 
        int sz1;
 
        if(!host) {
@@ -1075,11 +1077,6 @@ mptscsih_shutdown(struct pci_dev *pdev)
 
        hd = (MPT_SCSI_HOST *)host->hostdata;
 
-       /* Flush the cache of this adapter
-        */
-       if(hd != NULL)
-               mptscsih_synchronize_cache(hd, 0);
-
 }
 
 #ifdef CONFIG_PM
@@ -1286,7 +1283,7 @@ mptscsih_qcmd(struct scsi_cmnd *SCpnt, void (*done)(struct scsi_cmnd *))
        MPT_SCSI_HOST           *hd;
        MPT_FRAME_HDR           *mf;
        SCSIIORequest_t         *pScsiReq;
-       VirtDevice              *pTarget = SCpnt->device->hostdata;
+       VirtDevice              *vdev = SCpnt->device->hostdata;
        int      lun;
        u32      datalen;
        u32      scsictl;
@@ -1341,8 +1338,8 @@ mptscsih_qcmd(struct scsi_cmnd *SCpnt, void (*done)(struct scsi_cmnd *))
        /* Default to untagged. Once a target structure has been allocated,
         * use the Inquiry data to determine if device supports tagged.
         */
-       if (pTarget
-           && (pTarget->tflags & MPT_TARGET_FLAGS_Q_YES)
+       if (vdev
+           && (vdev->vtarget->tflags & MPT_TARGET_FLAGS_Q_YES)
            && (SCpnt->device->tagged_supported)) {
                scsictl = scsidir | MPI_SCSIIO_CONTROL_SIMPLEQ;
        } else {
@@ -1351,8 +1348,8 @@ mptscsih_qcmd(struct scsi_cmnd *SCpnt, void (*done)(struct scsi_cmnd *))
 
        /* Use the above information to set up the message frame
         */
-       pScsiReq->TargetID = (u8) pTarget->target_id;
-       pScsiReq->Bus = pTarget->bus_id;
+       pScsiReq->TargetID = (u8) vdev->target_id;
+       pScsiReq->Bus = vdev->bus_id;
        pScsiReq->ChainOffset = 0;
        pScsiReq->Function = MPI_FUNCTION_SCSI_IO_REQUEST;
        pScsiReq->CDBLength = SCpnt->cmd_len;
@@ -1403,8 +1400,8 @@ mptscsih_qcmd(struct scsi_cmnd *SCpnt, void (*done)(struct scsi_cmnd *))
        SCpnt->host_scribble = NULL;
 
 #ifdef MPTSCSIH_ENABLE_DOMAIN_VALIDATION
-       if (hd->ioc->bus_type == SCSI) {
-               int dvStatus = hd->ioc->spi_data.dvStatus[pTarget->target_id];
+       if (hd->ioc->bus_type == SPI) {
+               int dvStatus = hd->ioc->spi_data.dvStatus[vdev->target_id];
                int issueCmd = 1;
 
                if (dvStatus || hd->ioc->spi_data.forceDv) {
@@ -1437,7 +1434,7 @@ mptscsih_qcmd(struct scsi_cmnd *SCpnt, void (*done)(struct scsi_cmnd *))
                        /* Set the DV flags.
                         */
                        if (dvStatus & MPT_SCSICFG_DV_NOT_DONE)
-                               mptscsih_set_dvflags(hd, pScsiReq);
+                               mptscsih_set_dvflags(hd, SCpnt);
 
                        if (!issueCmd)
                                goto fail;
@@ -1741,6 +1738,7 @@ mptscsih_abort(struct scsi_cmnd * SCpnt)
        u32              ctx2abort;
        int              scpnt_idx;
        int              retval;
+       VirtDevice       *vdev;
 
        /* If we can't locate our host adapter structure, return FAILED status.
         */
@@ -1790,8 +1788,9 @@ mptscsih_abort(struct scsi_cmnd * SCpnt)
 
        hd->abortSCpnt = SCpnt;
 
+       vdev = SCpnt->device->hostdata;
        retval = mptscsih_TMHandler(hd, MPI_SCSITASKMGMT_TASKTYPE_ABORT_TASK,
-               SCpnt->device->channel, SCpnt->device->id, SCpnt->device->lun,
+               vdev->bus_id, vdev->target_id, vdev->lun,
                ctx2abort, 2 /* 2 second timeout */);
 
        printk (KERN_WARNING MYNAM ": %s: task abort: %s (sc=%p)\n",
@@ -1822,6 +1821,7 @@ mptscsih_dev_reset(struct scsi_cmnd * SCpnt)
 {
        MPT_SCSI_HOST   *hd;
        int              retval;
+       VirtDevice       *vdev;
 
        /* If we can't locate our host adapter structure, return FAILED status.
         */
@@ -1839,8 +1839,9 @@ mptscsih_dev_reset(struct scsi_cmnd * SCpnt)
               hd->ioc->name, SCpnt);
        scsi_print_command(SCpnt);
 
+       vdev = SCpnt->device->hostdata;
        retval = mptscsih_TMHandler(hd, MPI_SCSITASKMGMT_TASKTYPE_TARGET_RESET,
-               SCpnt->device->channel, SCpnt->device->id,
+               vdev->bus_id, vdev->target_id,
                0, 0, 5 /* 5 second timeout */);
 
        printk (KERN_WARNING MYNAM ": %s: target reset: %s (sc=%p)\n",
@@ -1871,6 +1872,7 @@ mptscsih_bus_reset(struct scsi_cmnd * SCpnt)
 {
        MPT_SCSI_HOST   *hd;
        int              retval;
+       VirtDevice       *vdev;
 
        /* If we can't locate our host adapter structure, return FAILED status.
         */
@@ -1888,8 +1890,9 @@ mptscsih_bus_reset(struct scsi_cmnd * SCpnt)
        if (hd->timeouts < -1)
                hd->timeouts++;
 
+       vdev = SCpnt->device->hostdata;
        retval = mptscsih_TMHandler(hd, MPI_SCSITASKMGMT_TASKTYPE_RESET_BUS,
-               SCpnt->device->channel, 0, 0, 0, 5 /* 5 second timeout */);
+               vdev->bus_id, 0, 0, 0, 5 /* 5 second timeout */);
 
        printk (KERN_WARNING MYNAM ": %s: bus reset: %s (sc=%p)\n",
                hd->ioc->name,
@@ -2148,26 +2151,39 @@ mptscsih_bios_param(struct scsi_device * sdev, struct block_device *bdev,
        return 0;
 }
 
+/*=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=*/
+/*
+ *     OS entry point to allow host driver to alloc memory
+ *     for each scsi target. Called once per device the bus scan.
+ *     Return non-zero if allocation fails.
+ */
+int
+mptscsih_target_alloc(struct scsi_target *starget)
+{
+       VirtTarget              *vtarget;
+
+       vtarget = kmalloc(sizeof(VirtTarget), GFP_KERNEL);
+       if (!vtarget)
+               return -ENOMEM;
+       memset(vtarget, 0, sizeof(VirtTarget));
+       starget->hostdata = vtarget;
+       return 0;
+}
+
 /*=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=*/
 /*
  *     OS entry point to allow host driver to alloc memory
  *     for each scsi device. Called once per device the bus scan.
  *     Return non-zero if allocation fails.
- *     Init memory once per id (not LUN).
  */
 int
-mptscsih_slave_alloc(struct scsi_device *device)
+mptscsih_slave_alloc(struct scsi_device *sdev)
 {
-       struct Scsi_Host        *host = device->host;
+       struct Scsi_Host        *host = sdev->host;
        MPT_SCSI_HOST           *hd = (MPT_SCSI_HOST *)host->hostdata;
+       VirtTarget              *vtarget;
        VirtDevice              *vdev;
-       uint                    target = device->id;
-
-       if (hd == NULL)
-               return -ENODEV;
-
-       if ((vdev = hd->Targets[target]) != NULL)
-               goto out;
+       struct scsi_target      *starget;
 
        vdev = kmalloc(sizeof(VirtDevice), GFP_KERNEL);
        if (!vdev) {
@@ -2177,25 +2193,33 @@ mptscsih_slave_alloc(struct scsi_device *device)
        }
 
        memset(vdev, 0, sizeof(VirtDevice));
-       vdev->tflags = MPT_TARGET_FLAGS_Q_YES;
        vdev->ioc_id = hd->ioc->id;
-       vdev->target_id = device->id;
-       vdev->bus_id = device->channel;
-       vdev->raidVolume = 0;
-       hd->Targets[device->id] = vdev;
-       if (hd->ioc->bus_type == SCSI) {
-               if (hd->ioc->raid_data.isRaid & (1 << device->id)) {
-                       vdev->raidVolume = 1;
-                       ddvtprintk((KERN_INFO
-                           "RAID Volume @ id %d\n", device->id));
+       vdev->target_id = sdev->id;
+       vdev->bus_id = sdev->channel;
+       vdev->lun = sdev->lun;
+       sdev->hostdata = vdev;
+
+       starget = scsi_target(sdev);
+       vtarget = starget->hostdata;
+       vdev->vtarget = vtarget;
+
+       if (vtarget->num_luns == 0) {
+               hd->Targets[sdev->id] = vtarget;
+               vtarget->ioc_id = hd->ioc->id;
+               vtarget->tflags = MPT_TARGET_FLAGS_Q_YES;
+               vtarget->target_id = sdev->id;
+               vtarget->bus_id = sdev->channel;
+               if (hd->ioc->bus_type == SPI) {
+                       if (hd->ioc->raid_data.isRaid & (1 << sdev->id)) {
+                               vtarget->raidVolume = 1;
+                               ddvtprintk((KERN_INFO
+                                   "RAID Volume @ id %d\n", sdev->id));
+                       }
+               } else {
+                       vtarget->tflags |= MPT_TARGET_FLAGS_VALID_INQUIRY;
                }
-       } else {
-               vdev->tflags |= MPT_TARGET_FLAGS_VALID_INQUIRY;
        }
-
- out:
-       vdev->num_luns++;
-       device->hostdata = vdev;
+       vtarget->num_luns++;
        return 0;
 }
 
@@ -2204,40 +2228,52 @@ mptscsih_slave_alloc(struct scsi_device *device)
  *     Called if no device present or device being unloaded
  */
 void
-mptscsih_slave_destroy(struct scsi_device *device)
+mptscsih_target_destroy(struct scsi_target *starget)
 {
-       struct Scsi_Host        *host = device->host;
-       MPT_SCSI_HOST           *hd = (MPT_SCSI_HOST *)host->hostdata;
-       VirtDevice              *vdev;
-       uint                    target = device->id;
-       uint                    lun = device->lun;
-
-       if (hd == NULL)
-               return;
-
-       mptscsih_search_running_cmds(hd, target, lun);
-
-       vdev = hd->Targets[target];
-       vdev->luns[0] &= ~(1 << lun);
-       if (--vdev->num_luns)
-               return;
-
-       kfree(hd->Targets[target]);
-       hd->Targets[target] = NULL;
-
-       if (hd->ioc->bus_type == SCSI) {
-               if (mptscsih_is_phys_disk(hd->ioc, target)) {
-                       hd->ioc->spi_data.forceDv |= MPT_SCSICFG_RELOAD_IOC_PG3;
-               } else {
-                       hd->ioc->spi_data.dvStatus[target] =
-                               MPT_SCSICFG_NEGOTIATE;
+       if (starget->hostdata)
+               kfree(starget->hostdata);
+       starget->hostdata = NULL;
+}
 
-                       if (!hd->negoNvram) {
-                               hd->ioc->spi_data.dvStatus[target] |=
-                                       MPT_SCSICFG_DV_NOT_DONE;
+/*
+ *     OS entry point to allow for host driver to free allocated memory
+ *     Called if no device present or device being unloaded
+ */
+void
+mptscsih_slave_destroy(struct scsi_device *sdev)
+{
+       struct Scsi_Host        *host = sdev->host;
+       MPT_SCSI_HOST           *hd = (MPT_SCSI_HOST *)host->hostdata;
+       VirtTarget              *vtarget;
+       VirtDevice              *vdevice;
+       struct scsi_target      *starget;
+
+       starget = scsi_target(sdev);
+       vtarget = starget->hostdata;
+       vdevice = sdev->hostdata;
+
+       mptscsih_search_running_cmds(hd, vdevice);
+       vtarget->luns[0] &= ~(1 << vdevice->lun);
+       vtarget->num_luns--;
+       if (vtarget->num_luns == 0) {
+               mptscsih_negotiate_to_asyn_narrow(hd, vtarget);
+               if (hd->ioc->bus_type == SPI) {
+                       if (mptscsih_is_phys_disk(hd->ioc, vtarget->target_id)) {
+                               hd->ioc->spi_data.forceDv |= MPT_SCSICFG_RELOAD_IOC_PG3;
+                       } else {
+                               hd->ioc->spi_data.dvStatus[vtarget->target_id] =
+                                       MPT_SCSICFG_NEGOTIATE;
+                               if (!hd->negoNvram) {
+                                       hd->ioc->spi_data.dvStatus[vtarget->target_id] |=
+                                               MPT_SCSICFG_DV_NOT_DONE;
+                               }
                        }
                }
+               hd->Targets[sdev->id] = NULL;
        }
+       mptscsih_synchronize_cache(hd, vdevice);
+       kfree(vdevice);
+       sdev->hostdata = NULL;
 }
 
 /*=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=*/
@@ -2251,22 +2287,21 @@ mptscsih_slave_destroy(struct scsi_device *device)
 int
 mptscsih_change_queue_depth(struct scsi_device *sdev, int qdepth)
 {
-       MPT_SCSI_HOST   *hd = (MPT_SCSI_HOST *)sdev->host->hostdata;
-       VirtDevice *pTarget;
-       int     max_depth;
-       int     tagged;
-
-       if (hd == NULL)
-               return 0;
-       if (!(pTarget = hd->Targets[sdev->id]))
-               return 0;
-
-       if (hd->ioc->bus_type == SCSI) {
-               if (pTarget->tflags & MPT_TARGET_FLAGS_VALID_INQUIRY) {
-                       if (!(pTarget->tflags & MPT_TARGET_FLAGS_Q_YES))
+       MPT_SCSI_HOST           *hd = (MPT_SCSI_HOST *)sdev->host->hostdata;
+       VirtTarget              *vtarget;
+       struct scsi_target      *starget;
+       int                     max_depth;
+       int                     tagged;
+
+       starget = scsi_target(sdev);
+       vtarget = starget->hostdata;
+
+       if (hd->ioc->bus_type == SPI) {
+               if (vtarget->tflags & MPT_TARGET_FLAGS_VALID_INQUIRY) {
+                       if (!(vtarget->tflags & MPT_TARGET_FLAGS_Q_YES))
                                max_depth = 1;
-                       else if (((pTarget->inq_data[0] & 0x1f) == 0x00) &&
-                                (pTarget->minSyncFactor <= MPT_ULTRA160 ))
+                       else if (((vtarget->inq_data[0] & 0x1f) == 0x00) &&
+                                (vtarget->minSyncFactor <= MPT_ULTRA160 ))
                                max_depth = MPT_SCSI_CMD_PER_DEV_HIGH;
                        else
                                max_depth = MPT_SCSI_CMD_PER_DEV_LOW;
@@ -2295,64 +2330,58 @@ mptscsih_change_queue_depth(struct scsi_device *sdev, int qdepth)
  *     Return non-zero if fails.
  */
 int
-mptscsih_slave_configure(struct scsi_device *device)
+mptscsih_slave_configure(struct scsi_device *sdev)
 {
-       struct Scsi_Host        *sh = device->host;
-       VirtDevice              *pTarget;
+       struct Scsi_Host        *sh = sdev->host;
+       VirtTarget              *vtarget;
+       VirtDevice              *vdevice;
+       struct scsi_target      *starget;
        MPT_SCSI_HOST           *hd = (MPT_SCSI_HOST *)sh->hostdata;
+       int                     indexed_lun, lun_index;
 
-       if ((hd == NULL) || (hd->Targets == NULL)) {
-               return 0;
-       }
+       starget = scsi_target(sdev);
+       vtarget = starget->hostdata;
+       vdevice = sdev->hostdata;
 
        dsprintk((MYIOC_s_INFO_FMT
                "device @ %p, id=%d, LUN=%d, channel=%d\n",
-               hd->ioc->name, device, device->id, device->lun, device->channel));
-       dsprintk((MYIOC_s_INFO_FMT
-               "sdtr %d wdtr %d ppr %d inq length=%d\n",
-               hd->ioc->name, device->sdtr, device->wdtr,
-               device->ppr, device->inquiry_len));
-
-       if (device->id > sh->max_id) {
+               hd->ioc->name, sdev, sdev->id, sdev->lun, sdev->channel));
+       if (hd->ioc->bus_type == SPI)
+               dsprintk((MYIOC_s_INFO_FMT
+                   "sdtr %d wdtr %d ppr %d inq length=%d\n",
+                   hd->ioc->name, sdev->sdtr, sdev->wdtr,
+                   sdev->ppr, sdev->inquiry_len));
+
+       if (sdev->id > sh->max_id) {
                /* error case, should never happen */
-               scsi_adjust_queue_depth(device, 0, 1);
-               goto slave_configure_exit;
-       }
-
-       pTarget = hd->Targets[device->id];
-
-       if (pTarget == NULL) {
-               /* Driver doesn't know about this device.
-                * Kernel may generate a "Dummy Lun 0" which
-                * may become a real Lun if a
-                * "scsi add-single-device" command is executed
-                * while the driver is active (hot-plug a
-                * device).  LSI Raid controllers need
-                * queue_depth set to DEV_HIGH for this reason.
-                */
-               scsi_adjust_queue_depth(device, MSG_SIMPLE_TAG,
-                       MPT_SCSI_CMD_PER_DEV_HIGH);
+               scsi_adjust_queue_depth(sdev, 0, 1);
                goto slave_configure_exit;
        }
 
-       mptscsih_initTarget(hd, device->channel, device->id, device->lun,
-               device->inquiry, device->inquiry_len );
-       mptscsih_change_queue_depth(device, MPT_SCSI_CMD_PER_DEV_HIGH);
+       vdevice->configured_lun=1;
+       lun_index = (vdevice->lun >> 5);  /* 32 luns per lun_index */
+       indexed_lun = (vdevice->lun % 32);
+       vtarget->luns[lun_index] |= (1 << indexed_lun);
+       mptscsih_initTarget(hd, vtarget, sdev->lun, sdev->inquiry,
+           sdev->inquiry_len );
+       mptscsih_change_queue_depth(sdev, MPT_SCSI_CMD_PER_DEV_HIGH);
 
        dsprintk((MYIOC_s_INFO_FMT
                "Queue depth=%d, tflags=%x\n",
-               hd->ioc->name, device->queue_depth, pTarget->tflags));
+               hd->ioc->name, sdev->queue_depth, vtarget->tflags));
 
-       dsprintk((MYIOC_s_INFO_FMT
-               "negoFlags=%x, maxOffset=%x, SyncFactor=%x\n",
-               hd->ioc->name, pTarget->negoFlags, pTarget->maxOffset, pTarget->minSyncFactor));
+       if (hd->ioc->bus_type == SPI)
+               dsprintk((MYIOC_s_INFO_FMT
+                   "negoFlags=%x, maxOffset=%x, SyncFactor=%x\n",
+                   hd->ioc->name, vtarget->negoFlags, vtarget->maxOffset,
+                   vtarget->minSyncFactor));
 
 slave_configure_exit:
 
        dsprintk((MYIOC_s_INFO_FMT
                "tagged %d, simple %d, ordered %d\n",
-               hd->ioc->name,device->tagged_supported, device->simple_tags,
-               device->ordered_tags));
+               hd->ioc->name,sdev->tagged_supported, sdev->simple_tags,
+               sdev->ordered_tags));
 
        return 0;
 }
@@ -2370,16 +2399,14 @@ slave_configure_exit:
 static void
 mptscsih_copy_sense_data(struct scsi_cmnd *sc, MPT_SCSI_HOST *hd, MPT_FRAME_HDR *mf, SCSIIOReply_t *pScsiReply)
 {
-       VirtDevice      *target;
+       VirtDevice      *vdev;
        SCSIIORequest_t *pReq;
        u32              sense_count = le32_to_cpu(pScsiReply->SenseCount);
-       int              index;
 
        /* Get target structure
         */
        pReq = (SCSIIORequest_t *) mf;
-       index = (int) pReq->TargetID;
-       target = hd->Targets[index];
+       vdev = sc->device->hostdata;
 
        if (sense_count) {
                u8 *sense_data;
@@ -2393,7 +2420,7 @@ mptscsih_copy_sense_data(struct scsi_cmnd *sc, MPT_SCSI_HOST *hd, MPT_FRAME_HDR
                /* Log SMART data (asc = 0x5D, non-IM case only) if required.
                 */
                if ((hd->ioc->events) && (hd->ioc->eventTypes & (1 << MPI_EVENT_SCSI_DEVICE_STATUS_CHANGE))) {
-                       if ((sense_data[12] == 0x5D) && (target->raidVolume == 0)) {
+                       if ((sense_data[12] == 0x5D) && (vdev->vtarget->raidVolume == 0)) {
                                int idx;
                                MPT_ADAPTER *ioc = hd->ioc;
 
@@ -2403,7 +2430,7 @@ mptscsih_copy_sense_data(struct scsi_cmnd *sc, MPT_SCSI_HOST *hd, MPT_FRAME_HDR
 
                                ioc->events[idx].data[0] = (pReq->LUN[1] << 24) ||
                                        (MPI_EVENT_SCSI_DEV_STAT_RC_SMART_DATA << 16) ||
-                                       (pReq->Bus << 8) || pReq->TargetID;
+                                       (sc->device->channel << 8) || sc->device->id;
 
                                ioc->events[idx].data[1] = (sense_data[13] << 8) || sense_data[12];
 
@@ -2503,9 +2530,9 @@ mptscsih_ioc_reset(MPT_ADAPTER *ioc, int reset_phase)
                /* 2. Chain Buffer initialization
                 */
 
-               /* 4. Renegotiate to all devices, if SCSI
+               /* 4. Renegotiate to all devices, if SPI
                 */
-               if (ioc->bus_type == SCSI) {
+               if (ioc->bus_type == SPI) {
                        dnegoprintk(("writeSDP1: ALL_IDS USE_NVRAM\n"));
                        mptscsih_writeSDP1(hd, 0, 0, MPT_SCSICFG_ALL_IDS | MPT_SCSICFG_USE_NVRAM);
                }
@@ -2534,7 +2561,7 @@ mptscsih_ioc_reset(MPT_ADAPTER *ioc, int reset_phase)
 
                /* 7. Set flag to force DV and re-read IOC Page 3
                 */
-               if (ioc->bus_type == SCSI) {
+               if (ioc->bus_type == SPI) {
                        ioc->spi_data.forceDv = MPT_SCSICFG_NEED_DV | MPT_SCSICFG_RELOAD_IOC_PG3;
                        ddvtprintk(("Set reload IOC Pg3 Flag\n"));
                }
@@ -2576,7 +2603,7 @@ mptscsih_event_process(MPT_ADAPTER *ioc, EventNotificationReply_t *pEvReply)
                break;
        case MPI_EVENT_IOC_BUS_RESET:                   /* 04 */
        case MPI_EVENT_EXT_BUS_RESET:                   /* 05 */
-               if (hd && (ioc->bus_type == SCSI) && (hd->soft_resets < -1))
+               if (hd && (ioc->bus_type == SPI) && (hd->soft_resets < -1))
                        hd->soft_resets++;
                break;
        case MPI_EVENT_LOGOUT:                          /* 09 */
@@ -2597,11 +2624,11 @@ mptscsih_event_process(MPT_ADAPTER *ioc, EventNotificationReply_t *pEvReply)
 
        case MPI_EVENT_INTEGRATED_RAID:                 /* 0B */
        {
+#ifdef MPTSCSIH_ENABLE_DOMAIN_VALIDATION
                pMpiEventDataRaid_t pRaidEventData =
                    (pMpiEventDataRaid_t) pEvReply->Data;
-#ifdef MPTSCSIH_ENABLE_DOMAIN_VALIDATION
                /* Domain Validation Needed */
-               if (ioc->bus_type == SCSI &&
+               if (ioc->bus_type == SPI &&
                    pRaidEventData->ReasonCode ==
                    MPI_EVENT_RAID_RC_DOMAIN_VAL_NEEDED)
                        mptscsih_set_dvflags_raid(hd, pRaidEventData->PhysDiskNum);
@@ -2632,8 +2659,7 @@ mptscsih_event_process(MPT_ADAPTER *ioc, EventNotificationReply_t *pEvReply)
 /*
  *     mptscsih_initTarget - Target, LUN alloc/free functionality.
  *     @hd: Pointer to MPT_SCSI_HOST structure
- *     @bus_id: Bus number (?)
- *     @target_id: SCSI target id
+ *     @vtarget: per target private data
  *     @lun: SCSI LUN id
  *     @data: Pointer to data
  *     @dlen: Number of INQUIRY bytes
@@ -2646,15 +2672,14 @@ mptscsih_event_process(MPT_ADAPTER *ioc, EventNotificationReply_t *pEvReply)
  *
  */
 static void
-mptscsih_initTarget(MPT_SCSI_HOST *hd, int bus_id, int target_id, u8 lun, char *data, int dlen)
+mptscsih_initTarget(MPT_SCSI_HOST *hd, VirtTarget *vtarget, u8 lun, char *data, int dlen)
 {
-       int             indexed_lun, lun_index;
-       VirtDevice      *vdev;
        SpiCfgData      *pSpi;
        char            data_56;
+       int             inq_len;
 
        dinitprintk((MYIOC_s_INFO_FMT "initTarget bus=%d id=%d lun=%d hd=%p\n",
-                       hd->ioc->name, bus_id, target_id, lun, hd));
+               hd->ioc->name, vtarget->bus_id, vtarget->target_id, lun, hd));
 
        /*
         * If the peripheral qualifier filter is enabled then if the target reports a 0x1
@@ -2674,75 +2699,68 @@ mptscsih_initTarget(MPT_SCSI_HOST *hd, int bus_id, int target_id, u8 lun, char *
        if (data[0] & 0xe0)
                return;
 
-       if ((vdev = hd->Targets[target_id]) == NULL) {
+       if (vtarget == NULL)
                return;
-       }
 
-       lun_index = (lun >> 5);  /* 32 luns per lun_index */
-       indexed_lun = (lun % 32);
-       vdev->luns[lun_index] |= (1 << indexed_lun);
-
-       if (hd->ioc->bus_type == SCSI) {
-               if ((data[0] == TYPE_PROCESSOR) && (hd->ioc->spi_data.Saf_Te)) {
-                       /* Treat all Processors as SAF-TE if
-                        * command line option is set */
-                       vdev->tflags |= MPT_TARGET_FLAGS_SAF_TE_ISSUED;
-                       mptscsih_writeIOCPage4(hd, target_id, bus_id);
-               }else if ((data[0] == TYPE_PROCESSOR) &&
-                       !(vdev->tflags & MPT_TARGET_FLAGS_SAF_TE_ISSUED )) {
-                       if ( dlen > 49 ) {
-                               vdev->tflags |= MPT_TARGET_FLAGS_VALID_INQUIRY;
-                               if ( data[44] == 'S' &&
-                                    data[45] == 'A' &&
-                                    data[46] == 'F' &&
-                                    data[47] == '-' &&
-                                    data[48] == 'T' &&
-                                    data[49] == 'E' ) {
-                                       vdev->tflags |= MPT_TARGET_FLAGS_SAF_TE_ISSUED;
-                                       mptscsih_writeIOCPage4(hd, target_id, bus_id);
-                               }
+       if (data)
+               vtarget->type = data[0];
+
+       if (hd->ioc->bus_type != SPI)
+               return;
+
+       if ((data[0] == TYPE_PROCESSOR) && (hd->ioc->spi_data.Saf_Te)) {
+               /* Treat all Processors as SAF-TE if
+                * command line option is set */
+               vtarget->tflags |= MPT_TARGET_FLAGS_SAF_TE_ISSUED;
+               mptscsih_writeIOCPage4(hd, vtarget->target_id, vtarget->bus_id);
+       }else if ((data[0] == TYPE_PROCESSOR) &&
+               !(vtarget->tflags & MPT_TARGET_FLAGS_SAF_TE_ISSUED )) {
+               if ( dlen > 49 ) {
+                       vtarget->tflags |= MPT_TARGET_FLAGS_VALID_INQUIRY;
+                       if ( data[44] == 'S' &&
+                            data[45] == 'A' &&
+                            data[46] == 'F' &&
+                            data[47] == '-' &&
+                            data[48] == 'T' &&
+                            data[49] == 'E' ) {
+                               vtarget->tflags |= MPT_TARGET_FLAGS_SAF_TE_ISSUED;
+                               mptscsih_writeIOCPage4(hd, vtarget->target_id, vtarget->bus_id);
                        }
                }
-               if (!(vdev->tflags & MPT_TARGET_FLAGS_VALID_INQUIRY)) {
-                       if ( dlen > 8 ) {
-                               memcpy (vdev->inq_data, data, 8);
-                       } else {
-                               memcpy (vdev->inq_data, data, dlen);
-                       }
+       }
+       if (!(vtarget->tflags & MPT_TARGET_FLAGS_VALID_INQUIRY)) {
+               inq_len = dlen < 8 ? dlen : 8;
+               memcpy (vtarget->inq_data, data, inq_len);
+               /* If have not done DV, set the DV flag.
+                */
+               pSpi = &hd->ioc->spi_data;
+               if ((data[0] == TYPE_TAPE) || (data[0] == TYPE_PROCESSOR)) {
+                       if (pSpi->dvStatus[vtarget->target_id] & MPT_SCSICFG_DV_NOT_DONE)
+                               pSpi->dvStatus[vtarget->target_id] |= MPT_SCSICFG_NEED_DV;
+               }
+               vtarget->tflags |= MPT_TARGET_FLAGS_VALID_INQUIRY;
 
-                       /* If have not done DV, set the DV flag.
+               data_56 = 0x0F;  /* Default to full capabilities if Inq data length is < 57 */
+               if (dlen > 56) {
+                       if ( (!(vtarget->tflags & MPT_TARGET_FLAGS_VALID_56))) {
+                       /* Update the target capabilities
                         */
-                       pSpi = &hd->ioc->spi_data;
-                       if ((data[0] == TYPE_TAPE) || (data[0] == TYPE_PROCESSOR)) {
-                               if (pSpi->dvStatus[target_id] & MPT_SCSICFG_DV_NOT_DONE)
-                                       pSpi->dvStatus[target_id] |= MPT_SCSICFG_NEED_DV;
-                       }
-
-                       vdev->tflags |= MPT_TARGET_FLAGS_VALID_INQUIRY;
-
-
-                       data_56 = 0x0F;  /* Default to full capabilities if Inq data length is < 57 */
-                       if (dlen > 56) {
-                               if ( (!(vdev->tflags & MPT_TARGET_FLAGS_VALID_56))) {
-                               /* Update the target capabilities
-                                */
-                                       data_56 = data[56];
-                                       vdev->tflags |= MPT_TARGET_FLAGS_VALID_56;
-                               }
+                               data_56 = data[56];
+                               vtarget->tflags |= MPT_TARGET_FLAGS_VALID_56;
                        }
-                       mptscsih_setTargetNegoParms(hd, vdev, data_56);
-               } else {
-                       /* Initial Inquiry may not request enough data bytes to
-                        * obtain byte 57.  DV will; if target doesn't return
-                        * at least 57 bytes, data[56] will be zero. */
-                       if (dlen > 56) {
-                               if ( (!(vdev->tflags & MPT_TARGET_FLAGS_VALID_56))) {
-                               /* Update the target capabilities
-                                */
-                                       data_56 = data[56];
-                                       vdev->tflags |= MPT_TARGET_FLAGS_VALID_56;
-                                       mptscsih_setTargetNegoParms(hd, vdev, data_56);
-                               }
+               }
+               mptscsih_setTargetNegoParms(hd, vtarget, data_56);
+       } else {
+               /* Initial Inquiry may not request enough data bytes to
+                * obtain byte 57.  DV will; if target doesn't return
+                * at least 57 bytes, data[56] will be zero. */
+               if (dlen > 56) {
+                       if ( (!(vtarget->tflags & MPT_TARGET_FLAGS_VALID_56))) {
+                       /* Update the target capabilities
+                        */
+                               data_56 = data[56];
+                               vtarget->tflags |= MPT_TARGET_FLAGS_VALID_56;
+                               mptscsih_setTargetNegoParms(hd, vtarget, data_56);
                        }
                }
        }
@@ -2755,12 +2773,12 @@ mptscsih_initTarget(MPT_SCSI_HOST *hd, int bus_id, int target_id, u8 lun, char *
  *
  */
 static void
-mptscsih_setTargetNegoParms(MPT_SCSI_HOST *hd, VirtDevice *target, char byte56)
+mptscsih_setTargetNegoParms(MPT_SCSI_HOST *hd, VirtTarget *target, char byte56)
 {
        SpiCfgData *pspi_data = &hd->ioc->spi_data;
        int  id = (int) target->target_id;
        int  nvram;
-       VirtDevice      *vdev;
+       VirtTarget      *vtarget;
        int ii;
        u8 width = MPT_NARROW;
        u8 factor = MPT_ASYNC;
@@ -2905,9 +2923,9 @@ mptscsih_setTargetNegoParms(MPT_SCSI_HOST *hd, VirtDevice *target, char byte56)
 
                        ddvtprintk((KERN_INFO "Disabling QAS due to noQas=%02x on id=%d!\n", noQas, id));
                        for (ii = 0; ii < id; ii++) {
-                               if ( (vdev = hd->Targets[ii]) ) {
-                                       vdev->negoFlags |= MPT_TARGET_NO_NEGO_QAS;
-                                       mptscsih_writeSDP1(hd, 0, ii, vdev->negoFlags);
+                               if ( (vtarget = hd->Targets[ii]) ) {
+                                       vtarget->negoFlags |= MPT_TARGET_NO_NEGO_QAS;
+                                       mptscsih_writeSDP1(hd, 0, ii, vtarget->negoFlags);
                                }
                        }
                }
@@ -2925,106 +2943,18 @@ mptscsih_setTargetNegoParms(MPT_SCSI_HOST *hd, VirtDevice *target, char byte56)
        }
 }
 
-/*=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=*/
-/* If DV disabled (negoNvram set to USE_NVARM) or if not LUN 0, return.
- * Else set the NEED_DV flag after Read Capacity Issued (disks)
- * or Mode Sense (cdroms).
- *
- * Tapes, initTarget will set this flag on completion of Inquiry command.
- * Called only if DV_NOT_DONE flag is set
- */
-static void
-mptscsih_set_dvflags(MPT_SCSI_HOST *hd, SCSIIORequest_t *pReq)
-{
-       MPT_ADAPTER     *ioc = hd->ioc;
-       u8 cmd;
-       SpiCfgData      *pSpi;
-
-       ddvtprintk((MYIOC_s_NOTE_FMT
-               " set_dvflags: id=%d lun=%d negoNvram=%x cmd=%x\n",
-               hd->ioc->name, pReq->TargetID, pReq->LUN[1], hd->negoNvram, pReq->CDB[0]));
-
-       if ((pReq->LUN[1] != 0) || (hd->negoNvram != 0))
-               return;
-
-       cmd = pReq->CDB[0];
-
-       if ((cmd == READ_CAPACITY) || (cmd == MODE_SENSE)) {
-               pSpi = &ioc->spi_data;
-               if ((ioc->raid_data.isRaid & (1 << pReq->TargetID)) && ioc->raid_data.pIocPg3) {
-                       /* Set NEED_DV for all hidden disks
-                        */
-                       Ioc3PhysDisk_t *pPDisk =  ioc->raid_data.pIocPg3->PhysDisk;
-                       int             numPDisk = ioc->raid_data.pIocPg3->NumPhysDisks;
-
-                       while (numPDisk) {
-                               pSpi->dvStatus[pPDisk->PhysDiskID] |= MPT_SCSICFG_NEED_DV;
-                               ddvtprintk(("NEED_DV set for phys disk id %d\n", pPDisk->PhysDiskID));
-                               pPDisk++;
-                               numPDisk--;
-                       }
-               }
-               pSpi->dvStatus[pReq->TargetID] |= MPT_SCSICFG_NEED_DV;
-               ddvtprintk(("NEED_DV set for visible disk id %d\n", pReq->TargetID));
-       }
-}
-
-/* mptscsih_raid_set_dv_flags()
- *
- * New or replaced disk. Set DV flag and schedule DV.
- */
-static void
-mptscsih_set_dvflags_raid(MPT_SCSI_HOST *hd, int id)
-{
-       MPT_ADAPTER     *ioc = hd->ioc;
-       SpiCfgData      *pSpi = &ioc->spi_data;
-       Ioc3PhysDisk_t  *pPDisk;
-       int              numPDisk;
-
-       if (hd->negoNvram != 0)
-               return;
-
-       ddvtprintk(("DV requested for phys disk id %d\n", id));
-       if (ioc->raid_data.pIocPg3) {
-               pPDisk =  ioc->raid_data.pIocPg3->PhysDisk;
-               numPDisk = ioc->raid_data.pIocPg3->NumPhysDisks;
-               while (numPDisk) {
-                       if (id == pPDisk->PhysDiskNum) {
-                               pSpi->dvStatus[pPDisk->PhysDiskID] =
-                                   (MPT_SCSICFG_NEED_DV | MPT_SCSICFG_DV_NOT_DONE);
-                               pSpi->forceDv = MPT_SCSICFG_NEED_DV;
-                               ddvtprintk(("NEED_DV set for phys disk id %d\n",
-                                   pPDisk->PhysDiskID));
-                               break;
-                       }
-                       pPDisk++;
-                       numPDisk--;
-               }
-
-               if (numPDisk == 0) {
-                       /* The physical disk that needs DV was not found
-                        * in the stored IOC Page 3. The driver must reload
-                        * this page. DV routine will set the NEED_DV flag for
-                        * all phys disks that have DV_NOT_DONE set.
-                        */
-                       pSpi->forceDv = MPT_SCSICFG_NEED_DV | MPT_SCSICFG_RELOAD_IOC_PG3;
-                       ddvtprintk(("phys disk %d not found. Setting reload IOC Pg3 Flag\n",id));
-               }
-       }
-}
-
 /*=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=*/
 /*
  * If no Target, bus reset on 1st I/O. Set the flag to
  * prevent any future negotiations to this device.
  */
 static void
-mptscsih_no_negotiate(MPT_SCSI_HOST *hd, int target_id)
+mptscsih_no_negotiate(MPT_SCSI_HOST *hd, struct scsi_cmnd *sc)
 {
+       VirtDevice      *vdev;
 
-       if ((hd->Targets) && (hd->Targets[target_id] == NULL))
-               hd->ioc->spi_data.dvStatus[target_id] |= MPT_SCSICFG_BLK_NEGO;
-
+       if ((vdev = sc->device->hostdata) != NULL)
+               hd->ioc->spi_data.dvStatus[vdev->target_id] |= MPT_SCSICFG_BLK_NEGO;
        return;
 }
 
@@ -3100,7 +3030,7 @@ mptscsih_writeSDP1(MPT_SCSI_HOST *hd, int portnum, int target_id, int flags)
        MPT_ADAPTER             *ioc = hd->ioc;
        Config_t                *pReq;
        SCSIDevicePage1_t       *pData;
-       VirtDevice              *pTarget=NULL;
+       VirtTarget              *vtarget=NULL;
        MPT_FRAME_HDR           *mf;
        dma_addr_t               dataDma;
        u16                      req_idx;
@@ -3180,11 +3110,11 @@ mptscsih_writeSDP1(MPT_SCSI_HOST *hd, int portnum, int target_id, int flags)
                /* If id is not a raid volume, get the updated
                 * transmission settings from the target structure.
                 */
-               if (hd->Targets && (pTarget = hd->Targets[id]) && !pTarget->raidVolume) {
-                       width = pTarget->maxWidth;
-                       factor = pTarget->minSyncFactor;
-                       offset = pTarget->maxOffset;
-                       negoFlags = pTarget->negoFlags;
+               if (hd->Targets && (vtarget = hd->Targets[id]) && !vtarget->raidVolume) {
+                       width = vtarget->maxWidth;
+                       factor = vtarget->minSyncFactor;
+                       offset = vtarget->maxOffset;
+                       negoFlags = vtarget->negoFlags;
                }
 
 #ifdef MPTSCSIH_ENABLE_DOMAIN_VALIDATION
@@ -3904,149 +3834,139 @@ mptscsih_do_cmd(MPT_SCSI_HOST *hd, INTERNAL_CMD *io)
 
 /*=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=*/
 /**
- *     mptscsih_synchronize_cache - Send SYNCHRONIZE_CACHE to all disks.
- *     @hd: Pointer to MPT_SCSI_HOST structure
- *     @portnum: IOC port number
+ *     mptscsih_negotiate_to_asyn_narrow - Restore devices to default state
+ *     @hd: Pointer to a SCSI HOST structure
+ *     @vtarget: per device private data
  *
  *     Uses the ISR, but with special processing.
  *     MUST be single-threaded.
  *
- *     Return: 0 on completion
  */
-static int
-mptscsih_synchronize_cache(MPT_SCSI_HOST *hd, int portnum)
+static void
+mptscsih_negotiate_to_asyn_narrow(MPT_SCSI_HOST *hd, VirtTarget *vtarget)
 {
        MPT_ADAPTER             *ioc= hd->ioc;
-       VirtDevice              *pTarget;
-       SCSIDevicePage1_t       *pcfg1Data = NULL;
-       INTERNAL_CMD             iocmd;
+       SCSIDevicePage1_t       *pcfg1Data;
        CONFIGPARMS              cfg;
-       dma_addr_t               cfg1_dma_addr = -1;
-       ConfigPageHeader_t       header1;
-       int                      bus = 0;
-       int                      id = 0;
-       int                      lun;
-       int                      indexed_lun, lun_index;
-       int                      hostId = ioc->pfacts[portnum].PortSCSIID;
-       int                      max_id;
-       int                      requested, configuration, data;
-       int                      doConfig = 0;
+       dma_addr_t               cfg1_dma_addr;
+       ConfigPageHeader_t       header;
+       int                      id;
+       int                      requested, configuration, data,i;
        u8                       flags, factor;
 
-       max_id = ioc->sh->max_id - 1;
-
-       /* Following parameters will not change
-        * in this routine.
-        */
-       iocmd.cmd = SYNCHRONIZE_CACHE;
-       iocmd.flags = 0;
-       iocmd.physDiskNum = -1;
-       iocmd.data = NULL;
-       iocmd.data_dma = -1;
-       iocmd.size = 0;
-       iocmd.rsvd = iocmd.rsvd2 = 0;
-
-       /* No SCSI hosts
-        */
-       if (hd->Targets == NULL)
-               return 0;
-
-       /* Skip the host
-        */
-       if (id == hostId)
-               id++;
-
-       /* Write SDP1 for all SCSI devices
-        * Alloc memory and set up config buffer
-        */
-       if (ioc->bus_type == SCSI) {
-               if (ioc->spi_data.sdp1length > 0) {
-                       pcfg1Data = (SCSIDevicePage1_t *)pci_alloc_consistent(ioc->pcidev,
-                                        ioc->spi_data.sdp1length * 4, &cfg1_dma_addr);
-
-                       if (pcfg1Data != NULL) {
-                               doConfig = 1;
-                               header1.PageVersion = ioc->spi_data.sdp1version;
-                               header1.PageLength = ioc->spi_data.sdp1length;
-                               header1.PageNumber = 1;
-                               header1.PageType = MPI_CONFIG_PAGETYPE_SCSI_DEVICE;
-                               cfg.cfghdr.hdr = &header1;
-                               cfg.physAddr = cfg1_dma_addr;
-                               cfg.action = MPI_CONFIG_ACTION_PAGE_WRITE_CURRENT;
-                               cfg.dir = 1;
-                               cfg.timeout = 0;
-                       }
-               }
-       }
+       if (ioc->bus_type != SPI)
+               return;
 
-       /* loop through all devices on this port
-        */
-       while (bus < MPT_MAX_BUS) {
-               iocmd.bus = bus;
-               iocmd.id = id;
-               pTarget = hd->Targets[(int)id];
+       if (!ioc->spi_data.sdp1length)
+               return;
 
-               if (doConfig) {
+       pcfg1Data = (SCSIDevicePage1_t *)pci_alloc_consistent(ioc->pcidev,
+                ioc->spi_data.sdp1length * 4, &cfg1_dma_addr);
 
-                       /* Set the negotiation flags */
-                       if (pTarget && (pTarget = hd->Targets[id]) && !pTarget->raidVolume) {
-                               flags = pTarget->negoFlags;
-                       } else {
-                               flags = hd->ioc->spi_data.noQas;
-                               if (hd->ioc->spi_data.nvram && (hd->ioc->spi_data.nvram[id] != MPT_HOST_NVRAM_INVALID)) {
-                                       data = hd->ioc->spi_data.nvram[id];
+       if (pcfg1Data == NULL)
+               return;
 
-                                       if (data & MPT_NVRAM_WIDE_DISABLE)
-                                               flags |= MPT_TARGET_NO_NEGO_WIDE;
+       header.PageVersion = ioc->spi_data.sdp1version;
+       header.PageLength = ioc->spi_data.sdp1length;
+       header.PageNumber = 1;
+       header.PageType = MPI_CONFIG_PAGETYPE_SCSI_DEVICE;
+       cfg.cfghdr.hdr = &header;
+       cfg.physAddr = cfg1_dma_addr;
+       cfg.action = MPI_CONFIG_ACTION_PAGE_WRITE_CURRENT;
+       cfg.dir = 1;
+       cfg.timeout = 0;
 
-                                       factor = (data & MPT_NVRAM_SYNC_MASK) >> MPT_NVRAM_SYNC_SHIFT;
-                                       if ((factor == 0) || (factor == MPT_ASYNC))
-                                               flags |= MPT_TARGET_NO_NEGO_SYNC;
-                               }
+       if (vtarget->raidVolume && ioc->raid_data.pIocPg3) {
+               for (i = 0; i < ioc->raid_data.pIocPg3->NumPhysDisks; i++) {
+                       id = ioc->raid_data.pIocPg3->PhysDisk[i].PhysDiskID;
+                       flags = hd->ioc->spi_data.noQas;
+                       if (hd->ioc->spi_data.nvram && (hd->ioc->spi_data.nvram[id] != MPT_HOST_NVRAM_INVALID)) {
+                               data = hd->ioc->spi_data.nvram[id];
+                               if (data & MPT_NVRAM_WIDE_DISABLE)
+                                       flags |= MPT_TARGET_NO_NEGO_WIDE;
+                               factor = (data & MPT_NVRAM_SYNC_MASK) >> MPT_NVRAM_SYNC_SHIFT;
+                               if ((factor == 0) || (factor == MPT_ASYNC))
+                                       flags |= MPT_TARGET_NO_NEGO_SYNC;
                        }
-
-                       /* Force to async, narrow */
                        mptscsih_setDevicePage1Flags(0, MPT_ASYNC, 0, &requested,
-                                       &configuration, flags);
+                               &configuration, flags);
                        dnegoprintk(("syncronize cache: id=%d width=0 factor=MPT_ASYNC "
                                "offset=0 negoFlags=%x request=%x config=%x\n",
                                id, flags, requested, configuration));
                        pcfg1Data->RequestedParameters = cpu_to_le32(requested);
                        pcfg1Data->Reserved = 0;
                        pcfg1Data->Configuration = cpu_to_le32(configuration);
-                       cfg.pageAddr = (bus<<8) | id;
+                       cfg.pageAddr = (vtarget->bus_id<<8) | id;
                        mpt_config(hd->ioc, &cfg);
                }
+       } else {
+               flags = vtarget->negoFlags;
+               mptscsih_setDevicePage1Flags(0, MPT_ASYNC, 0, &requested,
+                               &configuration, flags);
+               dnegoprintk(("syncronize cache: id=%d width=0 factor=MPT_ASYNC "
+                       "offset=0 negoFlags=%x request=%x config=%x\n",
+                       vtarget->target_id, flags, requested, configuration));
+               pcfg1Data->RequestedParameters = cpu_to_le32(requested);
+               pcfg1Data->Reserved = 0;
+               pcfg1Data->Configuration = cpu_to_le32(configuration);
+               cfg.pageAddr = (vtarget->bus_id<<8) | vtarget->target_id;
+               mpt_config(hd->ioc, &cfg);
+       }
 
-               /* If target Ptr NULL or if this target is NOT a disk, skip.
-                */
-               if ((pTarget) && (pTarget->inq_data[0] == TYPE_DISK)){
-                       for (lun=0; lun <= MPT_LAST_LUN; lun++) {
-                               /* If LUN present, issue the command
-                                */
-                               lun_index = (lun >> 5);  /* 32 luns per lun_index */
-                               indexed_lun = (lun % 32);
-                               if (pTarget->luns[lun_index] & (1<<indexed_lun)) {
-                                       iocmd.lun = lun;
-                                       (void) mptscsih_do_cmd(hd, &iocmd);
-                               }
-                       }
-               }
+       if (pcfg1Data)
+               pci_free_consistent(ioc->pcidev, header.PageLength * 4, pcfg1Data, cfg1_dma_addr);
+}
 
-               /* get next relevant device */
-               id++;
+/*=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=*/
+/**
+ *     mptscsih_synchronize_cache - Send SYNCHRONIZE_CACHE to all disks.
+ *     @hd: Pointer to a SCSI HOST structure
+ *     @vtarget: per device private data
+ *     @lun: lun
+ *
+ *     Uses the ISR, but with special processing.
+ *     MUST be single-threaded.
+ *
+ */
+static void
+mptscsih_synchronize_cache(MPT_SCSI_HOST *hd, VirtDevice *vdevice)
+{
+       INTERNAL_CMD             iocmd;
 
-               if (id == hostId)
-                       id++;
+       /* Following parameters will not change
+        * in this routine.
+        */
+       iocmd.cmd = SYNCHRONIZE_CACHE;
+       iocmd.flags = 0;
+       iocmd.physDiskNum = -1;
+       iocmd.data = NULL;
+       iocmd.data_dma = -1;
+       iocmd.size = 0;
+       iocmd.rsvd = iocmd.rsvd2 = 0;
+       iocmd.bus = vdevice->bus_id;
+       iocmd.id = vdevice->target_id;
+       iocmd.lun = (u8)vdevice->lun;
 
-               if (id > max_id) {
-                       id = 0;
-                       bus++;
-               }
-       }
+       if ((vdevice->vtarget->type & TYPE_DISK) &&
+           (vdevice->configured_lun))
+               mptscsih_do_cmd(hd, &iocmd);
+}
 
-       if (pcfg1Data) {
-               pci_free_consistent(ioc->pcidev, header1.PageLength * 4, pcfg1Data, cfg1_dma_addr);
+/* Search IOC page 3 to determine if this is hidden physical disk
+ */
+/* Search IOC page 3 to determine if this is hidden physical disk
+ */
+static int
+mptscsih_is_phys_disk(MPT_ADAPTER *ioc, int id)
+{
+       int i;
+
+       if (!ioc->raid_data.isRaid || !ioc->raid_data.pIocPg3)
+               return 0;
+
+       for (i = 0; i < ioc->raid_data.pIocPg3->NumPhysDisks; i++) {
+               if (id == ioc->raid_data.pIocPg3->PhysDisk[i].PhysDiskID)
+                       return 1;
        }
 
        return 0;
@@ -4101,8 +4021,8 @@ mptscsih_domainValidation(void *arg)
 
                        msleep(250);
 
-                       /* DV only to SCSI adapters */
-                       if (ioc->bus_type != SCSI)
+                       /* DV only to SPI adapters */
+                       if (ioc->bus_type != SPI)
                                continue;
 
                        /* Make sure everything looks ok */
@@ -4205,32 +4125,12 @@ mptscsih_domainValidation(void *arg)
        return;
 }
 
-/* Search IOC page 3 to determine if this is hidden physical disk
- */
-/* Search IOC page 3 to determine if this is hidden physical disk
- */
-static int
-mptscsih_is_phys_disk(MPT_ADAPTER *ioc, int id)
-{
-       int i;
-
-       if (!ioc->raid_data.isRaid || !ioc->raid_data.pIocPg3)
-               return 0;
-
-       for (i = 0; i < ioc->raid_data.pIocPg3->NumPhysDisks; i++) {
-               if (id == ioc->raid_data.pIocPg3->PhysDisk[i].PhysDiskID)
-                       return 1;
-       }
-
-       return 0;
-}
-
 /* Write SDP1 if no QAS has been enabled
  */
 static void
 mptscsih_qas_check(MPT_SCSI_HOST *hd, int id)
 {
-       VirtDevice *pTarget;
+       VirtTarget *vtarget;
        int ii;
 
        if (hd->Targets == NULL)
@@ -4243,11 +4143,11 @@ mptscsih_qas_check(MPT_SCSI_HOST *hd, int id)
                if ((hd->ioc->spi_data.dvStatus[ii] & MPT_SCSICFG_DV_NOT_DONE) != 0)
                        continue;
 
-               pTarget = hd->Targets[ii];
+               vtarget = hd->Targets[ii];
 
-               if ((pTarget != NULL) && (!pTarget->raidVolume)) {
-                       if ((pTarget->negoFlags & hd->ioc->spi_data.noQas) == 0) {
-                               pTarget->negoFlags |= hd->ioc->spi_data.noQas;
+               if ((vtarget != NULL) && (!vtarget->raidVolume)) {
+                       if ((vtarget->negoFlags & hd->ioc->spi_data.noQas) == 0) {
+                               vtarget->negoFlags |= hd->ioc->spi_data.noQas;
                                dnegoprintk(("writeSDP1: id=%d flags=0\n", id));
                                mptscsih_writeSDP1(hd, 0, ii, 0);
                        }
@@ -4287,7 +4187,7 @@ static int
 mptscsih_doDv(MPT_SCSI_HOST *hd, int bus_number, int id)
 {
        MPT_ADAPTER             *ioc = hd->ioc;
-       VirtDevice              *pTarget;
+       VirtTarget              *vtarget;
        SCSIDevicePage1_t       *pcfg1Data;
        SCSIDevicePage0_t       *pcfg0Data;
        u8                      *pbuf1;
@@ -4358,12 +4258,12 @@ mptscsih_doDv(MPT_SCSI_HOST *hd, int bus_number, int id)
        iocmd.physDiskNum = -1;
        iocmd.rsvd = iocmd.rsvd2 = 0;
 
-       pTarget = hd->Targets[id];
+       vtarget = hd->Targets[id];
 
        /* Use tagged commands if possible.
         */
-       if (pTarget) {
-               if (pTarget->tflags & MPT_TARGET_FLAGS_Q_YES)
+       if (vtarget) {
+               if (vtarget->tflags & MPT_TARGET_FLAGS_Q_YES)
                        iocmd.flags |= MPT_ICFLAG_TAGGED_CMD;
                else {
                        if (hd->ioc->facts.FWVersion.Word < 0x01000600)
@@ -4579,7 +4479,7 @@ mptscsih_doDv(MPT_SCSI_HOST *hd, int bus_number, int id)
                /* Reset the size for disks
                 */
                inq0 = (*pbuf1) & 0x1F;
-               if ((inq0 == 0) && pTarget && !pTarget->raidVolume) {
+               if ((inq0 == 0) && vtarget && !vtarget->raidVolume) {
                        sz = 0x40;
                        iocmd.size = sz;
                }
@@ -4589,8 +4489,7 @@ mptscsih_doDv(MPT_SCSI_HOST *hd, int bus_number, int id)
                 */
                if (inq0 == TYPE_PROCESSOR) {
                        mptscsih_initTarget(hd,
-                               bus,
-                               id,
+                               vtarget,
                                lun,
                                pbuf1,
                                sz);
@@ -4604,22 +4503,22 @@ mptscsih_doDv(MPT_SCSI_HOST *hd, int bus_number, int id)
                        goto target_done;
 
                if (sz == 0x40) {
-                       if ((pTarget->maxWidth == 1) && (pTarget->maxOffset) && (nfactor < 0x0A)
-                               && (pTarget->minSyncFactor > 0x09)) {
+                       if ((vtarget->maxWidth == 1) && (vtarget->maxOffset) && (nfactor < 0x0A)
+                               && (vtarget->minSyncFactor > 0x09)) {
                                if ((pbuf1[56] & 0x04) == 0)
                                        ;
                                else if ((pbuf1[56] & 0x01) == 1) {
-                                       pTarget->minSyncFactor =
+                                       vtarget->minSyncFactor =
                                            nfactor > MPT_ULTRA320 ? nfactor : MPT_ULTRA320;
                                } else {
-                                       pTarget->minSyncFactor =
+                                       vtarget->minSyncFactor =
                                            nfactor > MPT_ULTRA160 ? nfactor : MPT_ULTRA160;
                                }
 
-                               dv.max.factor = pTarget->minSyncFactor;
+                               dv.max.factor = vtarget->minSyncFactor;
 
                                if ((pbuf1[56] & 0x02) == 0) {
-                                       pTarget->negoFlags |= MPT_TARGET_NO_NEGO_QAS;
+                                       vtarget->negoFlags |= MPT_TARGET_NO_NEGO_QAS;
                                        hd->ioc->spi_data.noQas = MPT_TARGET_NO_NEGO_QAS;
                                        ddvprintk((MYIOC_s_NOTE_FMT
                                            "DV: Start Basic noQas on id=%d due to pbuf1[56]=%x\n",
@@ -4702,8 +4601,7 @@ mptscsih_doDv(MPT_SCSI_HOST *hd, int bus_number, int id)
                                                    "DV:Inquiry compared id=%d, calling initTarget\n", ioc->name, id));
                                                hd->ioc->spi_data.dvStatus[id] &= ~MPT_SCSICFG_DV_NOT_DONE;
                                                mptscsih_initTarget(hd,
-                                                       bus,
-                                                       id,
+                                                       vtarget,
                                                        lun,
                                                        pbuf1,
                                                        sz);
@@ -5204,7 +5102,7 @@ target_done:
 static void
 mptscsih_dv_parms(MPT_SCSI_HOST *hd, DVPARAMETERS *dv,void *pPage)
 {
-       VirtDevice              *pTarget;
+       VirtTarget              *vtarget;
        SCSIDevicePage0_t       *pPage0;
        SCSIDevicePage1_t       *pPage1;
        int                     val = 0, data, configuration;
@@ -5224,11 +5122,11 @@ mptscsih_dv_parms(MPT_SCSI_HOST *hd, DVPARAMETERS *dv,void *pPage)
                 * already throttled back.
                 */
                negoFlags = hd->ioc->spi_data.noQas;
-               if ((hd->Targets)&&((pTarget = hd->Targets[(int)id]) != NULL) && !pTarget->raidVolume) {
-                       width = pTarget->maxWidth;
-                       offset = pTarget->maxOffset;
-                       factor = pTarget->minSyncFactor;
-                       negoFlags |= pTarget->negoFlags;
+               if ((hd->Targets)&&((vtarget = hd->Targets[(int)id]) != NULL) && !vtarget->raidVolume) {
+                       width = vtarget->maxWidth;
+                       offset = vtarget->maxOffset;
+                       factor = vtarget->minSyncFactor;
+                       negoFlags |= vtarget->negoFlags;
                } else {
                        if (hd->ioc->spi_data.nvram && (hd->ioc->spi_data.nvram[id] != MPT_HOST_NVRAM_INVALID)) {
                                data = hd->ioc->spi_data.nvram[id];
@@ -5430,11 +5328,11 @@ mptscsih_dv_parms(MPT_SCSI_HOST *hd, DVPARAMETERS *dv,void *pPage)
                 * or overwrite nvram (phys disks only).
                 */
 
-               if ((hd->Targets)&&((pTarget = hd->Targets[(int)id]) != NULL) && !pTarget->raidVolume ) {
-                       pTarget->maxWidth = dv->now.width;
-                       pTarget->maxOffset = dv->now.offset;
-                       pTarget->minSyncFactor = dv->now.factor;
-                       pTarget->negoFlags = dv->now.flags;
+               if ((hd->Targets)&&((vtarget = hd->Targets[(int)id]) != NULL) && !vtarget->raidVolume ) {
+                       vtarget->maxWidth = dv->now.width;
+                       vtarget->maxOffset = dv->now.offset;
+                       vtarget->minSyncFactor = dv->now.factor;
+                       vtarget->negoFlags = dv->now.flags;
                } else {
                        /* Preserv all flags, use
                         * read-modify-write algorithm
@@ -5588,6 +5486,94 @@ mptscsih_fillbuf(char *buffer, int size, int index, int width)
                break;
        }
 }
+
+/*=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=*/
+/* If DV disabled (negoNvram set to USE_NVARM) or if not LUN 0, return.
+ * Else set the NEED_DV flag after Read Capacity Issued (disks)
+ * or Mode Sense (cdroms).
+ *
+ * Tapes, initTarget will set this flag on completion of Inquiry command.
+ * Called only if DV_NOT_DONE flag is set
+ */
+static void
+mptscsih_set_dvflags(MPT_SCSI_HOST *hd, struct scsi_cmnd *sc)
+{
+       MPT_ADAPTER     *ioc = hd->ioc;
+       u8 cmd;
+       SpiCfgData      *pSpi;
+
+       ddvtprintk((MYIOC_s_NOTE_FMT
+               " set_dvflags: id=%d lun=%d negoNvram=%x cmd=%x\n",
+               hd->ioc->name, sc->device->id, sc->device->lun , hd->negoNvram, sc->cmnd[0]));
+
+       if ((sc->device->lun != 0) || (hd->negoNvram != 0))
+               return;
+
+       cmd = sc->cmnd[0];
+
+       if ((cmd == READ_CAPACITY) || (cmd == MODE_SENSE)) {
+               pSpi = &ioc->spi_data;
+               if ((ioc->raid_data.isRaid & (1 << sc->device->id)) && ioc->raid_data.pIocPg3) {
+                       /* Set NEED_DV for all hidden disks
+                        */
+                       Ioc3PhysDisk_t *pPDisk =  ioc->raid_data.pIocPg3->PhysDisk;
+                       int             numPDisk = ioc->raid_data.pIocPg3->NumPhysDisks;
+
+                       while (numPDisk) {
+                               pSpi->dvStatus[pPDisk->PhysDiskID] |= MPT_SCSICFG_NEED_DV;
+                               ddvtprintk(("NEED_DV set for phys disk id %d\n", pPDisk->PhysDiskID));
+                               pPDisk++;
+                               numPDisk--;
+                       }
+               }
+               pSpi->dvStatus[sc->device->id] |= MPT_SCSICFG_NEED_DV;
+               ddvtprintk(("NEED_DV set for visible disk id %d\n", sc->device->id));
+       }
+}
+
+/* mptscsih_raid_set_dv_flags()
+ *
+ * New or replaced disk. Set DV flag and schedule DV.
+ */
+static void
+mptscsih_set_dvflags_raid(MPT_SCSI_HOST *hd, int id)
+{
+       MPT_ADAPTER     *ioc = hd->ioc;
+       SpiCfgData      *pSpi = &ioc->spi_data;
+       Ioc3PhysDisk_t  *pPDisk;
+       int              numPDisk;
+
+       if (hd->negoNvram != 0)
+               return;
+
+       ddvtprintk(("DV requested for phys disk id %d\n", id));
+       if (ioc->raid_data.pIocPg3) {
+               pPDisk =  ioc->raid_data.pIocPg3->PhysDisk;
+               numPDisk = ioc->raid_data.pIocPg3->NumPhysDisks;
+               while (numPDisk) {
+                       if (id == pPDisk->PhysDiskNum) {
+                               pSpi->dvStatus[pPDisk->PhysDiskID] =
+                                   (MPT_SCSICFG_NEED_DV | MPT_SCSICFG_DV_NOT_DONE);
+                               pSpi->forceDv = MPT_SCSICFG_NEED_DV;
+                               ddvtprintk(("NEED_DV set for phys disk id %d\n",
+                                   pPDisk->PhysDiskID));
+                               break;
+                       }
+                       pPDisk++;
+                       numPDisk--;
+               }
+
+               if (numPDisk == 0) {
+                       /* The physical disk that needs DV was not found
+                        * in the stored IOC Page 3. The driver must reload
+                        * this page. DV routine will set the NEED_DV flag for
+                        * all phys disks that have DV_NOT_DONE set.
+                        */
+                       pSpi->forceDv = MPT_SCSICFG_NEED_DV | MPT_SCSICFG_RELOAD_IOC_PG3;
+                       ddvtprintk(("phys disk %d not found. Setting reload IOC Pg3 Flag\n",id));
+               }
+       }
+}
 #endif /* ~MPTSCSIH_ENABLE_DOMAIN_VALIDATION */
 
 EXPORT_SYMBOL(mptscsih_remove);
@@ -5599,7 +5585,9 @@ EXPORT_SYMBOL(mptscsih_resume);
 EXPORT_SYMBOL(mptscsih_proc_info);
 EXPORT_SYMBOL(mptscsih_info);
 EXPORT_SYMBOL(mptscsih_qcmd);
+EXPORT_SYMBOL(mptscsih_target_alloc);
 EXPORT_SYMBOL(mptscsih_slave_alloc);
+EXPORT_SYMBOL(mptscsih_target_destroy);
 EXPORT_SYMBOL(mptscsih_slave_destroy);
 EXPORT_SYMBOL(mptscsih_slave_configure);
 EXPORT_SYMBOL(mptscsih_abort);
index 971fda4b8b57998c56ffeb2fb7aaa3a2d4ae5236..d3cba12f4bd95c38c110327bfbde76d9d6ecf1af 100644 (file)
@@ -91,7 +91,9 @@ extern int mptscsih_resume(struct pci_dev *pdev);
 extern int mptscsih_proc_info(struct Scsi_Host *host, char *buffer, char **start, off_t offset, int length, int func);
 extern const char * mptscsih_info(struct Scsi_Host *SChost);
 extern int mptscsih_qcmd(struct scsi_cmnd *SCpnt, void (*done)(struct scsi_cmnd *));
+extern int mptscsih_target_alloc(struct scsi_target *starget);
 extern int mptscsih_slave_alloc(struct scsi_device *device);
+extern void mptscsih_target_destroy(struct scsi_target *starget);
 extern void mptscsih_slave_destroy(struct scsi_device *device);
 extern int mptscsih_slave_configure(struct scsi_device *device);
 extern int mptscsih_abort(struct scsi_cmnd * SCpnt);
index 5c0e307d1d5d4c4c9440b5625b754b0ead959ff1..ce332a6085e5345e2b64a259da1d44a04eec693d 100644 (file)
@@ -103,13 +103,16 @@ static int        mptspiTaskCtx = -1;
 static int     mptspiInternalCtx = -1; /* Used only for internal commands */
 
 static struct scsi_host_template mptspi_driver_template = {
+       .module                         = THIS_MODULE,
        .proc_name                      = "mptspi",
        .proc_info                      = mptscsih_proc_info,
        .name                           = "MPT SPI Host",
        .info                           = mptscsih_info,
        .queuecommand                   = mptscsih_qcmd,
+       .target_alloc                   = mptscsih_target_alloc,
        .slave_alloc                    = mptscsih_slave_alloc,
        .slave_configure                = mptscsih_slave_configure,
+       .target_destroy                 = mptscsih_target_destroy,
        .slave_destroy                  = mptscsih_slave_destroy,
        .change_queue_depth             = mptscsih_change_queue_depth,
        .eh_abort_handler               = mptscsih_abort,
@@ -177,13 +180,15 @@ mptspi_probe(struct pci_dev *pdev, const struct pci_device_id *id)
                printk(MYIOC_s_WARN_FMT
                  "Skipping because it's not operational!\n",
                  ioc->name);
-               return -ENODEV;
+               error = -ENODEV;
+               goto out_mptspi_probe;
        }
 
        if (!ioc->active) {
                printk(MYIOC_s_WARN_FMT "Skipping because it's disabled!\n",
                  ioc->name);
-               return -ENODEV;
+               error = -ENODEV;
+               goto out_mptspi_probe;
        }
 
        /*  Sanity check - ensure at least 1 port is INITIATOR capable
@@ -208,7 +213,8 @@ mptspi_probe(struct pci_dev *pdev, const struct pci_device_id *id)
                printk(MYIOC_s_WARN_FMT
                        "Unable to register controller with SCSI subsystem\n",
                        ioc->name);
-                return -1;
+               error = -1;
+               goto out_mptspi_probe;
         }
 
        spin_lock_irqsave(&ioc->FreeQlock, flags);
@@ -286,7 +292,7 @@ mptspi_probe(struct pci_dev *pdev, const struct pci_device_id *id)
        mem = kmalloc(sz, GFP_ATOMIC);
        if (mem == NULL) {
                error = -ENOMEM;
-               goto mptspi_probe_failed;
+               goto out_mptspi_probe;
        }
 
        memset(mem, 0, sz);
@@ -304,14 +310,14 @@ mptspi_probe(struct pci_dev *pdev, const struct pci_device_id *id)
        mem = kmalloc(sz, GFP_ATOMIC);
        if (mem == NULL) {
                error = -ENOMEM;
-               goto mptspi_probe_failed;
+               goto out_mptspi_probe;
        }
 
        memset(mem, 0, sz);
-       hd->Targets = (VirtDevice **) mem;
+       hd->Targets = (VirtTarget **) mem;
 
        dprintk((KERN_INFO
-         "  Targets @ %p, sz=%d\n", hd->Targets, sz));
+         "  vdev @ %p, sz=%d\n", hd->Targets, sz));
 
        /* Clear the TM flags
         */
@@ -385,13 +391,13 @@ mptspi_probe(struct pci_dev *pdev, const struct pci_device_id *id)
        if(error) {
                dprintk((KERN_ERR MYNAM
                  "scsi_add_host failed\n"));
-               goto mptspi_probe_failed;
+               goto out_mptspi_probe;
        }
 
        scsi_scan_host(sh);
        return 0;
 
-mptspi_probe_failed:
+out_mptspi_probe:
 
        mptscsih_remove(pdev);
        return error;
index e7ad269041a4bdc36b1c95c8a24996cae519baa6..4ce7438608ecb68a374146276eff3308da099589 100644 (file)
@@ -857,7 +857,7 @@ process_extended_message(struct Scsi_Host *host,
                printk(KERN_INFO "scsi%d (%d:%d): Unexpected message %s: ",
                       host->host_no, pun, lun,
                       NCR_700_phase[(dsps & 0xf00) >> 8]);
-               scsi_print_msg(hostdata->msgin);
+               spi_print_msg(hostdata->msgin);
                printk("\n");
                /* just reject it */
                hostdata->msgout[0] = A_REJECT_MSG;
@@ -887,7 +887,7 @@ process_message(struct Scsi_Host *host,     struct NCR_700_Host_Parameters *hostdata
 #ifdef NCR_700_DEBUG
        printk("scsi%d (%d:%d): message %s: ", host->host_no, pun, lun,
               NCR_700_phase[(dsps & 0xf00) >> 8]);
-       scsi_print_msg(hostdata->msgin);
+       spi_print_msg(hostdata->msgin);
        printk("\n");
 #endif
 
@@ -939,7 +939,7 @@ process_message(struct Scsi_Host *host,     struct NCR_700_Host_Parameters *hostdata
                       host->host_no, pun, lun,
                       NCR_700_phase[(dsps & 0xf00) >> 8]);
 
-               scsi_print_msg(hostdata->msgin);
+               spi_print_msg(hostdata->msgin);
                printk("\n");
                /* just reject it */
                hostdata->msgout[0] = A_REJECT_MSG;
index 362d78483d091b47ccfbc925ca3d8f8dd7eef90c..a8c83bb036303dd44b9eea46857679f512e392be 100644 (file)
@@ -238,21 +238,23 @@ struct NCR_700_Host_Parameters {
 #ifdef CONFIG_53C700_LE_ON_BE
 #define bE     (hostdata->force_le_on_be ? 0 : 3)
 #define        bSWAP   (hostdata->force_le_on_be)
-/* This is terrible, but there's no raw version of ioread32.  That means
- * that on a be board we swap twice (once in ioread32 and once again to 
- * get the value correct) */
-#define bS_to_io(x)    ((hostdata->force_le_on_be) ? (x) : cpu_to_le32(x))
+#define bEBus  (!hostdata->force_le_on_be)
 #elif defined(__BIG_ENDIAN)
 #define bE     3
 #define bSWAP  0
-#define bS_to_io(x)    (x)
 #elif defined(__LITTLE_ENDIAN)
 #define bE     0
 #define bSWAP  0
-#define bS_to_io(x)    (x)
 #else
 #error "__BIG_ENDIAN or __LITTLE_ENDIAN must be defined, did you include byteorder.h?"
 #endif
+#ifndef bEBus
+#ifdef CONFIG_53C700_BE_BUS
+#define bEBus  1
+#else
+#define bEBus  0
+#endif
+#endif
 #define bS_to_cpu(x)   (bSWAP ? le32_to_cpu(x) : (x))
 #define bS_to_host(x)  (bSWAP ? cpu_to_le32(x) : (x))
 
@@ -466,14 +468,15 @@ NCR_700_readl(struct Scsi_Host *host, __u32 reg)
 {
        const struct NCR_700_Host_Parameters *hostdata
                = (struct NCR_700_Host_Parameters *)host->hostdata[0];
-       __u32 value = ioread32(hostdata->base + reg);
+       __u32 value = bEBus ? ioread32be(hostdata->base + reg) :
+               ioread32(hostdata->base + reg);
 #if 1
        /* sanity check the register */
        if((reg & 0x3) != 0)
                BUG();
 #endif
 
-       return bS_to_io(value);
+       return value;
 }
 
 static inline void
@@ -497,7 +500,8 @@ NCR_700_writel(__u32 value, struct Scsi_Host *host, __u32 reg)
                BUG();
 #endif
 
-       iowrite32(bS_to_io(value), hostdata->base + reg);
+       bEBus ? iowrite32be(value, hostdata->base + reg): 
+               iowrite32(value, hostdata->base + reg);
 }
 
 #endif
index 9cb5dd48383fbdde590270a36ac13512dafabb64..7894b8ea84bde7341cc39a6da81c956a6740c1ab 100644 (file)
 #include "scsi.h"
 #include <scsi/scsi_dbg.h>
 #include <scsi/scsi_host.h>
+#include <scsi/scsi_transport_spi.h>
 #include "53c7xx.h"
 #include <linux/stat.h>
 #include <linux/stddef.h>
@@ -1724,7 +1725,7 @@ NCR53c7xx_run_tests (struct Scsi_Host *host) {
                printk ("scsi%d : status ", host->host_no);
                scsi_print_status (status);
                printk ("\nscsi%d : message ", host->host_no);
-               scsi_print_msg (&msg);
+               spi_print_msg(&msg);
                printk ("\n");
            } else if (hostdata->test_completed == 3) {
                printk("scsi%d : test 2 no connection with target %d\n",
@@ -2313,7 +2314,7 @@ NCR53c7x0_dstat_sir_intr (struct Scsi_Host *host, struct
            printk ("scsi%d : received message", host->host_no);
            if (c) 
                printk (" from target %d lun %d ", c->device->id, c->device->lun);
-           scsi_print_msg ((unsigned char *) hostdata->msg_buf);
+           spi_print_msg((unsigned char *) hostdata->msg_buf);
            printk("\n");
        }
        
@@ -5540,7 +5541,7 @@ print_dsa (struct Scsi_Host *host, u32 *dsa, const char *prefix) {
            i > 0 && !check_address ((unsigned long) ptr, 1);
            ptr += len, i -= len) {
            printk("               ");
-           len = scsi_print_msg (ptr);
+           len = spi_print_msg(ptr);
            printk("\n");
            if (!len)
                break;
index 20dd85a77813a03fa9314a7c65f98a4ecd75e7e0..4c42065dea88bbc2623264ada6ff5d0329406c61 100644 (file)
@@ -336,6 +336,7 @@ config SCSI_ACARD
 config SCSI_AHA152X
        tristate "Adaptec AHA152X/2825 support"
        depends on ISA && SCSI && !64BIT
+       select SCSI_SPI_ATTRS
        ---help---
          This is a driver for the AHA-1510, AHA-1520, AHA-1522, and AHA-2825
          SCSI host adapters. It also works for the AVA-1505, but the IRQ etc.
@@ -623,6 +624,7 @@ config SCSI_OMIT_FLASHPOINT
 config SCSI_DMX3191D
        tristate "DMX3191D SCSI support"
        depends on PCI && SCSI
+       select SCSI_SPI_ATTRS
        help
          This is support for Domex DMX3191D SCSI Host Adapters.
 
@@ -632,6 +634,7 @@ config SCSI_DMX3191D
 config SCSI_DTC3280
        tristate "DTC3180/3280 SCSI support"
        depends on ISA && SCSI
+       select SCSI_SPI_ATTRS
        help
          This is support for DTC 3180/3280 SCSI Host Adapters.  Please read
          the SCSI-HOWTO, available from
@@ -752,6 +755,7 @@ config SCSI_GDTH
 config SCSI_GENERIC_NCR5380
        tristate "Generic NCR5380/53c400 SCSI PIO support"
        depends on ISA && SCSI
+       select SCSI_SPI_ATTRS
        ---help---
          This is a driver for the old NCR 53c80 series of SCSI controllers
          on boards using PIO. Most boards such as the Trantor T130 fit this
@@ -771,6 +775,7 @@ config SCSI_GENERIC_NCR5380
 config SCSI_GENERIC_NCR5380_MMIO
        tristate "Generic NCR5380/53c400 SCSI MMIO support"
        depends on ISA && SCSI
+       select SCSI_SPI_ATTRS
        ---help---
          This is a driver for the old NCR 53c80 series of SCSI controllers
          on boards using memory mapped I/O. 
@@ -1254,6 +1259,7 @@ config SCSI_MCA_53C9X
 config SCSI_PAS16
        tristate "PAS16 SCSI support"
        depends on ISA && SCSI
+       select SCSI_SPI_ATTRS
        ---help---
          This is support for a SCSI host adapter.  It is explained in section
          3.10 of the SCSI-HOWTO, available from
@@ -1423,6 +1429,7 @@ config SCSI_DC390T
 config SCSI_T128
        tristate "Trantor T128/T128F/T228 SCSI support"
        depends on ISA && SCSI
+       select SCSI_SPI_ATTRS
        ---help---
          This is support for a SCSI host adapter. It is explained in section
          3.11 of the SCSI-HOWTO, available from
@@ -1681,6 +1688,7 @@ config OKTAGON_SCSI
 config ATARI_SCSI
        tristate "Atari native SCSI support"
        depends on ATARI && SCSI && BROKEN
+       select SCSI_SPI_ATTRS
        ---help---
          If you have an Atari with built-in NCR5380 SCSI controller (TT,
          Falcon, ...) say Y to get it supported. Of course also, if you have
@@ -1722,6 +1730,7 @@ config TT_DMA_EMUL
 config MAC_SCSI
        bool "Macintosh NCR5380 SCSI"
        depends on MAC && SCSI=y
+       select SCSI_SPI_ATTRS
        help
          This is the NCR 5380 SCSI controller included on most of the 68030
          based Macintoshes.  If you have one of these say Y and read the
@@ -1743,6 +1752,7 @@ config SCSI_MAC_ESP
 config MVME147_SCSI
        bool "WD33C93 SCSI driver for MVME147"
        depends on MVME147 && SCSI=y
+       select SCSI_SPI_ATTRS
        help
          Support for the on-board SCSI controller on the Motorola MVME147
          single-board computer.
@@ -1750,6 +1760,7 @@ config MVME147_SCSI
 config MVME16x_SCSI
        bool "NCR53C710 SCSI driver for MVME16x"
        depends on MVME16x && SCSI && BROKEN
+       select SCSI_SPI_ATTRS
        help
          The Motorola MVME162, 166, 167, 172 and 177 boards use the NCR53C710
          SCSI controller chip.  Almost everyone using one of these boards
@@ -1758,6 +1769,7 @@ config MVME16x_SCSI
 config BVME6000_SCSI
        bool "NCR53C710 SCSI driver for BVME6000"
        depends on BVME6000 && SCSI && BROKEN
+       select SCSI_SPI_ATTRS
        help
          The BVME4000 and BVME6000 boards from BVM Ltd use the NCR53C710
          SCSI controller chip.  Almost everyone using one of these boards
@@ -1774,6 +1786,7 @@ config SCSI_NCR53C7xx_FAST
 config SUN3_SCSI
        tristate "Sun3 NCR5380 SCSI"
        depends on SUN3 && SCSI && BROKEN
+       select SCSI_SPI_ATTRS
        help
          This option will enable support for the OBIO (onboard io) NCR5380
          SCSI controller found in the Sun 3/50 and 3/60, as well as for
index cba9655d0f14075af5903b7d0c82ab5b6989f36a..9f0ddbe6dc765ef6decb10dfb30c0693cd92440b 100644 (file)
@@ -87,6 +87,7 @@
  *      the high level code.
  */
 #include <scsi/scsi_dbg.h>
+#include <scsi/scsi_transport_spi.h>
 
 #ifndef NDEBUG
 #define NDEBUG 0
@@ -2377,7 +2378,7 @@ static void NCR5380_information_transfer(struct Scsi_Host *instance) {
  * 3..length+1  arguments
  *
  * Start the extended message buffer with the EXTENDED_MESSAGE
- * byte, since scsi_print_msg() wants the whole thing.  
+ * byte, since spi_print_msg() wants the whole thing.  
  */
                                        extended_msg[0] = EXTENDED_MESSAGE;
                                        /* Accept first byte by clearing ACK */
@@ -2424,7 +2425,7 @@ static void NCR5380_information_transfer(struct Scsi_Host *instance) {
                                default:
                                        if (!tmp) {
                                                printk("scsi%d: rejecting message ", instance->host_no);
-                                               scsi_print_msg(extended_msg);
+                                               spi_print_msg(extended_msg);
                                                printk("\n");
                                        } else if (tmp != EXTENDED_MESSAGE)
                                                scmd_printk(KERN_INFO, cmd,
@@ -2560,7 +2561,7 @@ static void NCR5380_reselect(struct Scsi_Host *instance) {
 
        if (!(msg[0] & 0x80)) {
                printk(KERN_ERR "scsi%d : expecting IDENTIFY message, got ", instance->host_no);
-               scsi_print_msg(msg);
+               spi_print_msg(msg);
                abort = 1;
        } else {
                /* Accept message by clearing ACK */
index 9df23b654cec1aa929cb3d7f5eb7ae4b3b089c67..cb2ee25f213f1cc3d2dfd6a1b17ed9ade8c6f276 100644 (file)
 #include "scsi.h"
 #include <scsi/scsi_dbg.h>
 #include <scsi/scsi_host.h>
+#include <scsi/scsi_transport_spi.h>
 #include "aha152x.h"
 
 
@@ -1845,7 +1846,7 @@ static void msgi_run(struct Scsi_Host *shpnt)
 #if defined(AHA152X_DEBUG)
                if (HOSTDATA(shpnt)->debug & debug_msgi) {
                        printk(INFO_LEAD "inbound message %02x ", CMDINFO(CURRENT_SC), MSGI(0));
-                       scsi_print_msg(&MSGI(0));
+                       spi_print_msg(&MSGI(0));
                        printk("\n");
                }
 #endif
@@ -1933,7 +1934,7 @@ static void msgi_run(struct Scsi_Host *shpnt)
                                                break;
 
                                        printk(INFO_LEAD, CMDINFO(CURRENT_SC));
-                                       scsi_print_msg(&MSGI(0));
+                                       spi_print_msg(&MSGI(0));
                                        printk("\n");
 
                                        ticks = (MSGI(3) * 4 + 49) / 50;
@@ -2031,7 +2032,7 @@ static void msgo_init(struct Scsi_Host *shpnt)
                int i;
 
                printk(DEBUG_LEAD "messages( ", CMDINFO(CURRENT_SC));
-               for (i=0; i<MSGOLEN; i+=scsi_print_msg(&MSGO(i)), printk(" "))
+               for (i=0; i<MSGOLEN; i+=spi_print_msg(&MSGO(i)), printk(" "))
                        ;
                printk(")\n");
        }
index 6aab9dacdeeaaef59144cb5d5f072cb05deddef3..1c8f872e2dd41be16151067ebfb9553a6a6c6ab9 100644 (file)
@@ -1064,6 +1064,7 @@ ahd_linux_register_host(struct ahd_softc *ahd, struct scsi_host_template *templa
        struct  Scsi_Host *host;
        char    *new_name;
        u_long  s;
+       int     retval;
 
        template->name = ahd->description;
        host = scsi_host_alloc(template, sizeof(struct ahd_softc *));
@@ -1096,9 +1097,15 @@ ahd_linux_register_host(struct ahd_softc *ahd, struct scsi_host_template *templa
 
        host->transportt = ahd_linux_transport_template;
 
-       scsi_add_host(host, &ahd->dev_softc->dev); /* XXX handle failure */
+       retval = scsi_add_host(host, &ahd->dev_softc->dev);
+       if (retval) {
+               printk(KERN_WARNING "aic79xx: scsi_add_host failed\n");
+               scsi_host_put(host);
+               return retval;
+       }
+
        scsi_scan_host(host);
-       return (0);
+       return 0;
 }
 
 uint64_t
index d866213f42b8be6521a4b39dc78907c58b2a02b4..fd389e9f9460a7af31fd9510848f5dd13fac3b96 100644 (file)
@@ -1061,10 +1061,11 @@ uint32_t aic7xxx_verbose;
 int
 ahc_linux_register_host(struct ahc_softc *ahc, struct scsi_host_template *template)
 {
-       char     buf[80];
-       struct   Scsi_Host *host;
+       char    buf[80];
+       struct  Scsi_Host *host;
        char    *new_name;
-       u_long   s;
+       u_long  s;
+       int     retval;
 
        template->name = ahc->description;
        host = scsi_host_alloc(template, sizeof(struct ahc_softc *));
@@ -1097,9 +1098,16 @@ ahc_linux_register_host(struct ahc_softc *ahc, struct scsi_host_template *templa
 
        host->transportt = ahc_linux_transport_template;
 
-       scsi_add_host(host, (ahc->dev_softc ? &ahc->dev_softc->dev : NULL)); /* XXX handle failure */
+       retval = scsi_add_host(host,
+                       (ahc->dev_softc ? &ahc->dev_softc->dev : NULL));
+       if (retval) {
+               printk(KERN_WARNING "aic7xxx: scsi_add_host failed\n");
+               scsi_host_put(host);
+               return retval;
+       }
+
        scsi_scan_host(host);
-       return (0);
+       return 0;
 }
 
 /*
index 13f23043c8a370f507fc5e8599e5735a4c265c6f..06d7601cdf565626c74bf196494b41cbb36809ca 100644 (file)
@@ -4,6 +4,7 @@
 config SCSI_ACORNSCSI_3
        tristate "Acorn SCSI card (aka30) support"
        depends on ARCH_ACORN && SCSI && BROKEN
+       select SCSI_SPI_ATTRS
        help
          This enables support for the Acorn SCSI card (aka30). If you have an
          Acorn system with one of these, say Y. If unsure, say N.
index b7b20c689c245567026bf60b2b2a6913e1a7e703..09ed05727bcbb7f972be03d471e26328fa87d90d 100644 (file)
 #include "../scsi.h"
 #include <scsi/scsi_dbg.h>
 #include <scsi/scsi_host.h>
+#include <scsi/scsi_transport_spi.h>
 #include "acornscsi.h"
 #include "msgqueue.h"
 #include "scsi.h"
@@ -1370,7 +1371,7 @@ void acornscsi_sendmessage(AS_Host *host)
 
        host->scsi.last_message = msg->msg[0];
 #if (DEBUG & DEBUG_MESSAGES)
-       scsi_print_msg(msg->msg);
+       spi_print_msg(msg->msg);
 #endif
        break;
 
@@ -1392,7 +1393,7 @@ void acornscsi_sendmessage(AS_Host *host)
        while ((msg = msgqueue_getmsg(&host->scsi.msgs, msgnr++)) != NULL) {
            unsigned int i;
 #if (DEBUG & DEBUG_MESSAGES)
-           scsi_print_msg(msg);
+           spi_print_msg(msg);
 #endif
            i = 0;
            if (acornscsi_write_pio(host, msg->msg, &i, msg->length, 1000000))
@@ -1488,7 +1489,7 @@ void acornscsi_message(AS_Host *host)
 #if (DEBUG & DEBUG_MESSAGES)
     printk("scsi%d.%c: message in: ",
            host->host->host_no, acornscsi_target(host));
-    scsi_print_msg(message);
+    spi_print_msg(message);
     printk("\n");
 #endif
 
index 2ae31ceb32a8fc97b11d2d1618ca749a84420d36..57295bcea3e766a4ae87d760ab6bf4cf1be35b32 100644 (file)
@@ -74,6 +74,7 @@
  *     the high level code.
  */
 #include <scsi/scsi_dbg.h>
+#include <scsi/scsi_transport_spi.h>
 
 #if (NDEBUG & NDEBUG_LISTS)
 #define LIST(x,y) \
@@ -2355,7 +2356,7 @@ static void NCR5380_information_transfer (struct Scsi_Host *instance)
  * 3..length+1 arguments
  *
  * Start the extended message buffer with the EXTENDED_MESSAGE
- * byte, since scsi_print_msg() wants the whole thing.  
+ * byte, since spi_print_msg() wants the whole thing.  
  */
                    extended_msg[0] = EXTENDED_MESSAGE;
                    /* Accept first byte by clearing ACK */
@@ -2408,7 +2409,7 @@ static void NCR5380_information_transfer (struct Scsi_Host *instance)
                default:
                    if (!tmp) {
                        printk(KERN_DEBUG "scsi%d: rejecting message ", HOSTNO);
-                       scsi_print_msg (extended_msg);
+                       spi_print_msg(extended_msg);
                        printk("\n");
                    } else if (tmp != EXTENDED_MESSAGE)
                        printk(KERN_DEBUG "scsi%d: rejecting unknown "
@@ -2541,7 +2542,7 @@ static void NCR5380_reselect (struct Scsi_Host *instance)
 
     if (!(msg[0] & 0x80)) {
        printk(KERN_DEBUG "scsi%d: expecting IDENTIFY message, got ", HOSTNO);
-       scsi_print_msg(msg);
+       spi_print_msg(msg);
        do_abort(instance);
        return;
     }
index ccbbae2bf478291ff169d73a24f467f8ff0f7d05..0920220f331394a147337c1a14ba0007535961aa 100644 (file)
@@ -75,7 +75,7 @@ static int vendor_counts[CH_TYPES-4];
 module_param_array(vendor_firsts, int, NULL, 0444);
 module_param_array(vendor_counts, int, NULL, 0444);
 
-static char *vendor_labels[CH_TYPES-4] = {
+static const char * vendor_labels[CH_TYPES-4] = {
        "v0", "v1", "v2", "v3"
 };
 // module_param_string_array(vendor_labels, NULL, 0444);
@@ -140,7 +140,7 @@ static struct file_operations changer_fops =
 #endif
 };
 
-static struct {
+static const struct {
        unsigned char  sense;
        unsigned char  asc;
        unsigned char  ascq;
index 09bc81557b6ede1cfa24f5ddae2f20e8365acfaf..30a335349ceeb279109bc8b3d5cb45aaba06b847 100644 (file)
@@ -1065,7 +1065,7 @@ struct error_info2 {
        const char * fmt;
 };
 
-static struct error_info2 additional2[] =
+static const struct error_info2 additional2[] =
 {
        {0x40,0x00,0x7f,"Ram failure (%x)"},
        {0x40,0x80,0xff,"Diagnostic failure on component (%x)"},
@@ -1077,7 +1077,7 @@ static struct error_info2 additional2[] =
 };
 
 /* description of the sense key values */
-static const char *snstext[] = {
+static const char * const snstext[] = {
        "No Sense",         /* 0: There is no sense information */
        "Recovered Error",  /* 1: The last command completed successfully
                                  but used error correction */
@@ -1278,114 +1278,6 @@ void scsi_print_req_sense(const char *devclass, struct scsi_request *sreq)
 }
 EXPORT_SYMBOL(scsi_print_req_sense);
 
-#ifdef CONFIG_SCSI_CONSTANTS
-static const char *one_byte_msgs[] = {
-/* 0x00 */ "Command Complete", NULL, "Save Pointers",
-/* 0x03 */ "Restore Pointers", "Disconnect", "Initiator Error", 
-/* 0x06 */ "Abort", "Message Reject", "Nop", "Message Parity Error",
-/* 0x0a */ "Linked Command Complete", "Linked Command Complete w/flag",
-/* 0x0c */ "Bus device reset", "Abort Tag", "Clear Queue", 
-/* 0x0f */ "Initiate Recovery", "Release Recovery"
-};
-#define NO_ONE_BYTE_MSGS (sizeof(one_byte_msgs)  / sizeof (const char *))
-
-static const char *two_byte_msgs[] = {
-/* 0x20 */ "Simple Queue Tag", "Head of Queue Tag", "Ordered Queue Tag"
-/* 0x23 */ "Ignore Wide Residue"
-};
-#define NO_TWO_BYTE_MSGS (sizeof(two_byte_msgs)  / sizeof (const char *))
-
-static const char *extended_msgs[] = {
-/* 0x00 */ "Modify Data Pointer", "Synchronous Data Transfer Request",
-/* 0x02 */ "SCSI-I Extended Identify", "Wide Data Transfer Request"
-};
-#define NO_EXTENDED_MSGS (sizeof(two_byte_msgs)  / sizeof (const char *))
-
-
-int scsi_print_msg (const unsigned char *msg)
-{
-       int len = 0, i;
-       if (msg[0] == EXTENDED_MESSAGE) {
-               len = 3 + msg[1];
-               if (msg[2] < NO_EXTENDED_MSGS)
-                       printk ("%s ", extended_msgs[msg[2]]); 
-               else 
-                       printk ("Extended Message, reserved code (0x%02x) ",
-                               (int) msg[2]);
-               switch (msg[2]) {
-               case EXTENDED_MODIFY_DATA_POINTER:
-                       printk("pointer = %d", (int) (msg[3] << 24) |
-                               (msg[4] << 16) | (msg[5] << 8) | msg[6]);
-                       break;
-               case EXTENDED_SDTR:
-                       printk("period = %d ns, offset = %d",
-                               (int) msg[3] * 4, (int) msg[4]);
-                       break;
-               case EXTENDED_WDTR:
-                       printk("width = 2^%d bytes", msg[3]);
-                       break;
-               default:
-               for (i = 2; i < len; ++i) 
-                       printk("%02x ", msg[i]);
-               }
-       /* Identify */
-       } else if (msg[0] & 0x80) {
-               printk("Identify disconnect %sallowed %s %d ",
-                       (msg[0] & 0x40) ? "" : "not ",
-                       (msg[0] & 0x20) ? "target routine" : "lun",
-                       msg[0] & 0x7);
-               len = 1;
-       /* Normal One byte */
-       } else if (msg[0] < 0x1f) {
-               if (msg[0] < NO_ONE_BYTE_MSGS)
-                       printk(one_byte_msgs[msg[0]]);
-               else
-                       printk("reserved (%02x) ", msg[0]);
-               len = 1;
-       /* Two byte */
-       } else if (msg[0] <= 0x2f) {
-               if ((msg[0] - 0x20) < NO_TWO_BYTE_MSGS)
-                       printk("%s %02x ", two_byte_msgs[msg[0] - 0x20], 
-                               msg[1]);
-               else 
-                       printk("reserved two byte (%02x %02x) ", 
-                               msg[0], msg[1]);
-               len = 2;
-       } else 
-               printk("reserved");
-       return len;
-}
-EXPORT_SYMBOL(scsi_print_msg);
-
-#else  /* ifndef CONFIG_SCSI_CONSTANTS */
-
-int scsi_print_msg (const unsigned char *msg)
-{
-       int len = 0, i;
-
-       if (msg[0] == EXTENDED_MESSAGE) {
-               len = 3 + msg[1];
-               for (i = 0; i < len; ++i)
-                       printk("%02x ", msg[i]);
-       /* Identify */
-       } else if (msg[0] & 0x80) {
-               printk("%02x ", msg[0]);
-               len = 1;
-       /* Normal One byte */
-       } else if (msg[0] < 0x1f) {
-               printk("%02x ", msg[0]);
-               len = 1;
-       /* Two byte */
-       } else if (msg[0] <= 0x2f) {
-               printk("%02x %02x", msg[0], msg[1]);
-               len = 2;
-       } else 
-               printk("%02x ", msg[0]);
-       return len;
-}
-EXPORT_SYMBOL(scsi_print_msg);
-#endif /* ! CONFIG_SCSI_CONSTANTS */
-
 void scsi_print_command(struct scsi_cmnd *cmd)
 {
        /* Assume appended output (i.e. not at start of line) */
@@ -1397,7 +1289,7 @@ EXPORT_SYMBOL(scsi_print_command);
 
 #ifdef CONFIG_SCSI_CONSTANTS
 
-static const char * hostbyte_table[]={
+static const char * const hostbyte_table[]={
 "DID_OK", "DID_NO_CONNECT", "DID_BUS_BUSY", "DID_TIME_OUT", "DID_BAD_TARGET", 
 "DID_ABORT", "DID_PARITY", "DID_ERROR", "DID_RESET", "DID_BAD_INTR",
 "DID_PASSTHROUGH", "DID_SOFT_ERROR", "DID_IMM_RETRY"};
@@ -1422,12 +1314,12 @@ void scsi_print_hostbyte(int scsiresult)
 
 #ifdef CONFIG_SCSI_CONSTANTS
 
-static const char * driverbyte_table[]={
+static const char * const driverbyte_table[]={
 "DRIVER_OK", "DRIVER_BUSY", "DRIVER_SOFT",  "DRIVER_MEDIA", "DRIVER_ERROR", 
 "DRIVER_INVALID", "DRIVER_TIMEOUT", "DRIVER_HARD", "DRIVER_SENSE"};
 #define NUM_DRIVERBYTE_STRS (sizeof(driverbyte_table) / sizeof(const char *))
 
-static const char * driversuggest_table[]={"SUGGEST_OK",
+static const char * const driversuggest_table[]={"SUGGEST_OK",
 "SUGGEST_RETRY", "SUGGEST_ABORT", "SUGGEST_REMAP", "SUGGEST_DIE",
 "SUGGEST_5", "SUGGEST_6", "SUGGEST_7", "SUGGEST_SENSE"};
 #define NUM_SUGGEST_STRS (sizeof(driversuggest_table) / sizeof(const char *))
index fa2cb3582cfa5a2c1348d974bcfa3566e5e47d73..b6714da4d6e2185fb5a15acf627a8d528e2628c5 100644 (file)
@@ -5887,7 +5887,12 @@ static int __devinit ipr_probe_ioa_part2(struct ipr_ioa_cfg *ioa_cfg)
        ENTER;
        spin_lock_irqsave(ioa_cfg->host->host_lock, host_lock_flags);
        dev_dbg(&ioa_cfg->pdev->dev, "ioa_cfg adx: 0x%p\n", ioa_cfg);
-       _ipr_initiate_ioa_reset(ioa_cfg, ipr_reset_enable_ioa, IPR_SHUTDOWN_NONE);
+       if (ioa_cfg->needs_hard_reset) {
+               ioa_cfg->needs_hard_reset = 0;
+               ipr_initiate_ioa_reset(ioa_cfg, IPR_SHUTDOWN_NONE);
+       } else
+               _ipr_initiate_ioa_reset(ioa_cfg, ipr_reset_enable_ioa,
+                                       IPR_SHUTDOWN_NONE);
 
        spin_unlock_irqrestore(ioa_cfg->host->host_lock, host_lock_flags);
        wait_event(ioa_cfg->reset_wait_q, !ioa_cfg->in_reset_reload);
@@ -6264,6 +6269,7 @@ static int __devinit ipr_probe_ioa(struct pci_dev *pdev,
        unsigned long ipr_regs_pci;
        void __iomem *ipr_regs;
        u32 rc = PCIBIOS_SUCCESSFUL;
+       volatile u32 mask, uproc;
 
        ENTER;
 
@@ -6356,6 +6362,15 @@ static int __devinit ipr_probe_ioa(struct pci_dev *pdev,
                goto cleanup_nomem;
        }
 
+       /*
+        * If HRRQ updated interrupt is not masked, or reset alert is set,
+        * the card is in an unknown state and needs a hard reset
+        */
+       mask = readl(ioa_cfg->regs.sense_interrupt_mask_reg);
+       uproc = readl(ioa_cfg->regs.sense_uproc_interrupt_reg);
+       if ((mask & IPR_PCII_HRRQ_UPDATED) == 0 || (uproc & IPR_UPROCI_RESET_ALERT))
+               ioa_cfg->needs_hard_reset = 1;
+
        ipr_mask_and_clear_interrupts(ioa_cfg, ~IPR_PCII_IOA_TRANS_TO_OPER);
        rc = request_irq(pdev->irq, ipr_isr, SA_SHIRQ, IPR_NAME, ioa_cfg);
 
index 6bec673c925c20e0efb9d68010e016b91ddbde66..b639332131f1b8cb7dd251cfbdf58af919553a55 100644 (file)
@@ -36,8 +36,8 @@
 /*
  * Literals
  */
-#define IPR_DRIVER_VERSION "2.1.0"
-#define IPR_DRIVER_DATE "(October 31, 2005)"
+#define IPR_DRIVER_VERSION "2.1.1"
+#define IPR_DRIVER_DATE "(November 15, 2005)"
 
 /*
  * IPR_MAX_CMD_PER_LUN: This defines the maximum number of outstanding
@@ -922,6 +922,7 @@ struct ipr_ioa_cfg {
        u8 dump_taken:1;
        u8 allow_cmds:1;
        u8 allow_ml_add_del:1;
+       u8 needs_hard_reset:1;
 
        enum ipr_cache_state cache_state;
        u16 type; /* CCIN of the card */
index 3d8009f55342c9f0d93270ec5780739030428e1c..10bcf42cb65c0a0eaf021b4052a068019c9658d2 100644 (file)
@@ -49,7 +49,7 @@ MODULE_AUTHOR("Dmitry Yusupov <dmitry_yus@yahoo.com>, "
              "Alex Aizman <itn780@yahoo.com>");
 MODULE_DESCRIPTION("iSCSI/TCP data-path");
 MODULE_LICENSE("GPL");
-MODULE_VERSION("0:4.409");
+MODULE_VERSION("0:4.445");
 /* #define DEBUG_TCP */
 /* #define DEBUG_SCSI */
 #define DEBUG_ASSERT
@@ -581,10 +581,16 @@ iscsi_hdr_recv(struct iscsi_conn *conn)
                crypto_digest_digest(conn->rx_tfm, &sg, 1, (u8 *)&cdgst);
                rdgst = *(uint32_t*)((char*)hdr + sizeof(struct iscsi_hdr) +
                                     conn->in.ahslen);
+               if (cdgst != rdgst) {
+                       printk(KERN_ERR "iscsi_tcp: itt %x: hdrdgst error "
+                              "recv 0x%x calc 0x%x\n", conn->in.itt, rdgst,
+                              cdgst);
+                       return ISCSI_ERR_HDR_DGST;
+               }
        }
 
        /* save opcode for later */
-       conn->in.opcode = hdr->opcode;
+       conn->in.opcode = hdr->opcode & ISCSI_OPCODE_MASK;
 
        /* verify itt (itt encoding: age+cid+itt) */
        if (hdr->itt != cpu_to_be32(ISCSI_RESERVED_TAG)) {
@@ -610,13 +616,6 @@ iscsi_hdr_recv(struct iscsi_conn *conn)
                  conn->in.ahslen, conn->in.datalen);
 
        if (conn->in.itt < session->cmds_max) {
-               if (conn->hdrdgst_en && cdgst != rdgst) {
-                       printk(KERN_ERR "iscsi_tcp: itt %x: hdrdgst error "
-                              "recv 0x%x calc 0x%x\n", conn->in.itt, rdgst,
-                              cdgst);
-                       return ISCSI_ERR_HDR_DGST;
-               }
-
                ctask = (struct iscsi_cmd_task *)session->cmds[conn->in.itt];
 
                if (!ctask->sc) {
@@ -642,9 +641,7 @@ iscsi_hdr_recv(struct iscsi_conn *conn)
                switch(conn->in.opcode) {
                case ISCSI_OP_SCSI_CMD_RSP:
                        BUG_ON((void*)ctask != ctask->sc->SCp.ptr);
-                       if (ctask->hdr.flags & ISCSI_FLAG_CMD_WRITE)
-                               rc = iscsi_cmd_rsp(conn, ctask);
-                       else if (!conn->in.datalen)
+                       if (!conn->in.datalen)
                                rc = iscsi_cmd_rsp(conn, ctask);
                        else
                                /*
@@ -666,8 +663,7 @@ iscsi_hdr_recv(struct iscsi_conn *conn)
                        break;
                case ISCSI_OP_R2T:
                        BUG_ON((void*)ctask != ctask->sc->SCp.ptr);
-                       if (ctask->hdr.flags & ISCSI_FLAG_CMD_WRITE &&
-                           ctask->sc->sc_data_direction == DMA_TO_DEVICE)
+                       if (ctask->sc->sc_data_direction == DMA_TO_DEVICE)
                                rc = iscsi_r2t_rsp(conn, ctask);
                        else
                                rc = ISCSI_ERR_PROTO;
@@ -906,11 +902,20 @@ partial_sg_digest_update(struct iscsi_conn *conn, struct scatterlist *sg,
        crypto_digest_update(conn->data_rx_tfm, &temp, 1);
 }
 
+static void
+iscsi_recv_digest_update(struct iscsi_conn *conn, char* buf, int len)
+{
+       struct scatterlist tmp;
+
+       sg_init_one(&tmp, buf, len);
+       crypto_digest_update(conn->data_rx_tfm, &tmp, 1);
+}
+
 static int iscsi_scsi_data_in(struct iscsi_conn *conn)
 {
        struct iscsi_cmd_task *ctask = conn->in.ctask;
        struct scsi_cmnd *sc = ctask->sc;
-       struct scatterlist tmp, *sg;
+       struct scatterlist *sg;
        int i, offset, rc = 0;
 
        BUG_ON((void*)ctask != sc->SCp.ptr);
@@ -924,10 +929,8 @@ static int iscsi_scsi_data_in(struct iscsi_conn *conn)
                                      sc->request_bufflen, ctask->data_offset);
                if (rc == -EAGAIN)
                        return rc;
-               if (conn->datadgst_en) {
-                       sg_init_one(&tmp, sc->request_buffer, i);
-                       crypto_digest_update(conn->data_rx_tfm, &tmp, 1);
-               }
+               if (conn->datadgst_en) 
+                       iscsi_recv_digest_update(conn, sc->request_buffer, i);
                rc = 0;
                goto done;
        }
@@ -1021,6 +1024,9 @@ iscsi_data_recv(struct iscsi_conn *conn)
                conn->in.hdr = &conn->hdr;
                conn->senselen = (conn->data[0] << 8) | conn->data[1];
                rc = iscsi_cmd_rsp(conn, conn->in.ctask);
+               if (!rc && conn->datadgst_en) 
+                       iscsi_recv_digest_update(conn, conn->data,
+                                                conn->in.datalen);
        }
        break;
        case ISCSI_OP_TEXT_RSP:
@@ -1045,6 +1051,11 @@ iscsi_data_recv(struct iscsi_conn *conn)
                rc = iscsi_recv_pdu(iscsi_handle(conn), conn->in.hdr,
                                    conn->data, conn->in.datalen);
 
+               if (!rc && conn->datadgst_en && 
+                       conn->in.opcode != ISCSI_OP_LOGIN_RSP)
+                       iscsi_recv_digest_update(conn, conn->data,
+                                               conn->in.datalen);
+
                if (mtask && conn->login_mtask != mtask) {
                        spin_lock(&session->lock);
                        __kfifo_put(session->mgmtpool.queue, (void*)&mtask,
@@ -1053,6 +1064,8 @@ iscsi_data_recv(struct iscsi_conn *conn)
                }
        }
        break;
+       case ISCSI_OP_ASYNC_EVENT:
+       case ISCSI_OP_REJECT:
        default:
                BUG_ON(1);
        }
@@ -1114,8 +1127,7 @@ more:
                 */
                rc = iscsi_hdr_recv(conn);
                if (!rc && conn->in.datalen) {
-                       if (conn->datadgst_en &&
-                           conn->in.opcode == ISCSI_OP_SCSI_DATA_IN) {
+                       if (conn->datadgst_en) {
                                BUG_ON(!conn->data_rx_tfm);
                                crypto_digest_init(conn->data_rx_tfm);
                        }
@@ -1127,26 +1139,24 @@ more:
        }
 
        if (conn->in_progress == IN_PROGRESS_DDIGEST_RECV) {
+               uint32_t recv_digest;
                debug_tcp("extra data_recv offset %d copy %d\n",
                          conn->in.offset, conn->in.copy);
-               if (conn->in.opcode == ISCSI_OP_SCSI_DATA_IN) {
-                       uint32_t recv_digest;
-                       skb_copy_bits(conn->in.skb, conn->in.offset,
-                                     &recv_digest, 4);
-                       conn->in.offset += 4;
-                       conn->in.copy -= 4;
-                       if (recv_digest != conn->in.datadgst) {
-                               debug_tcp("iscsi_tcp: data digest error!"
-                                         "0x%x != 0x%x\n", recv_digest,
-                                         conn->in.datadgst);
-                               iscsi_conn_failure(conn, ISCSI_ERR_DATA_DGST);
-                               return 0;
-                       } else {
-                               debug_tcp("iscsi_tcp: data digest match!"
-                                         "0x%x == 0x%x\n", recv_digest,
-                                         conn->in.datadgst);
-                               conn->in_progress = IN_PROGRESS_WAIT_HEADER;
-                       }
+               skb_copy_bits(conn->in.skb, conn->in.offset,
+                               &recv_digest, 4);
+               conn->in.offset += 4;
+               conn->in.copy -= 4;
+               if (recv_digest != conn->in.datadgst) {
+                       debug_tcp("iscsi_tcp: data digest error!"
+                                 "0x%x != 0x%x\n", recv_digest,
+                                 conn->in.datadgst);
+                       iscsi_conn_failure(conn, ISCSI_ERR_DATA_DGST);
+                       return 0;
+               } else {
+                       debug_tcp("iscsi_tcp: data digest match!"
+                                 "0x%x == 0x%x\n", recv_digest,
+                                 conn->in.datadgst);
+                       conn->in_progress = IN_PROGRESS_WAIT_HEADER;
                }
        }
 
@@ -1167,8 +1177,7 @@ more:
                }
                conn->in.copy -= conn->in.padding;
                conn->in.offset += conn->in.padding;
-               if (conn->datadgst_en &&
-                   conn->in.opcode == ISCSI_OP_SCSI_DATA_IN) {
+               if (conn->datadgst_en) {
                        if (conn->in.padding) {
                                debug_tcp("padding -> %d\n", conn->in.padding);
                                memset(pad, 0, conn->in.padding);
@@ -1237,8 +1246,9 @@ iscsi_tcp_state_change(struct sock *sk)
        conn = (struct iscsi_conn*)sk->sk_user_data;
        session = conn->session;
 
-       if (sk->sk_state == TCP_CLOSE_WAIT ||
-           sk->sk_state == TCP_CLOSE) {
+       if ((sk->sk_state == TCP_CLOSE_WAIT ||
+            sk->sk_state == TCP_CLOSE) &&
+           !atomic_read(&sk->sk_rmem_alloc)) {
                debug_tcp("iscsi_tcp_state_change: TCP_CLOSE|TCP_CLOSE_WAIT\n");
                iscsi_conn_failure(conn, ISCSI_ERR_CONN_FAILED);
        }
@@ -2388,6 +2398,15 @@ fault:
        return 0;
 }
 
+static int
+iscsi_change_queue_depth(struct scsi_device *sdev, int depth)
+{
+       if (depth > ISCSI_MAX_CMD_PER_LUN)
+               depth = ISCSI_MAX_CMD_PER_LUN;
+       scsi_adjust_queue_depth(sdev, scsi_get_tag_type(sdev), depth);
+       return sdev->queue_depth;
+}
+
 static int
 iscsi_pool_init(struct iscsi_queue *q, int max, void ***items, int item_size)
 {
@@ -2853,8 +2872,11 @@ iscsi_conn_stop(iscsi_connh_t connh, int flag)
                 * in hdr_extract() and will be re-negotiated at
                 * set_param() time.
                 */
-               if (flag == STOP_CONN_RECOVER)
+               if (flag == STOP_CONN_RECOVER) {
                        conn->hdr_size = sizeof(struct iscsi_hdr);
+                       conn->hdrdgst_en = 0;
+                       conn->datadgst_en = 0;
+               }
        }
        up(&conn->xmitsema);
 }
@@ -3247,13 +3269,14 @@ iscsi_r2tpool_free(struct iscsi_session *session)
 static struct scsi_host_template iscsi_sht = {
        .name                   = "iSCSI Initiator over TCP/IP, v."
                                  ISCSI_VERSION_STR,
-        .queuecommand           = iscsi_queuecommand,
+       .queuecommand           = iscsi_queuecommand,
+       .change_queue_depth     = iscsi_change_queue_depth,
        .can_queue              = ISCSI_XMIT_CMDS_MAX - 1,
        .sg_tablesize           = ISCSI_SG_TABLESIZE,
-       .cmd_per_lun            = ISCSI_CMD_PER_LUN,
-        .eh_abort_handler       = iscsi_eh_abort,
-        .eh_host_reset_handler = iscsi_eh_host_reset,
-        .use_clustering         = DISABLE_CLUSTERING,
+       .cmd_per_lun            = ISCSI_DEF_CMD_PER_LUN,
+       .eh_abort_handler       = iscsi_eh_abort,
+       .eh_host_reset_handler  = iscsi_eh_host_reset,
+       .use_clustering         = DISABLE_CLUSTERING,
        .proc_name              = "iscsi_tcp",
        .this_id                = -1,
 };
index d23ae68fae0d8d6821b8045cfff25eba70a3e356..855f2dfd18afb9612b84754130162c6f8ed559a1 100644 (file)
@@ -71,7 +71,8 @@
 #define ISCSI_MGMT_CMDS_MAX            32      /* must be power of 2 */
 #define ISCSI_MGMT_ITT_OFFSET          0xa00
 #define ISCSI_SG_TABLESIZE             SG_ALL
-#define ISCSI_CMD_PER_LUN              128
+#define ISCSI_DEF_CMD_PER_LUN          32
+#define ISCSI_MAX_CMD_PER_LUN          128
 #define ISCSI_TCP_MAX_CMD_LEN          16
 
 #define ITT_MASK                       (0xfff)
index 3062b39fbdb97ca7e12e0a66a7af6f43c346cb5b..38ffa8d6e62901ed94231c45c42571750308e107 100644 (file)
@@ -29,9 +29,10 @@ struct lpfc_sli2_slim;
 #define LPFC_LC_HBA_Q_DEPTH    1024    /* max cmds per low cost hba */
 #define LPFC_LP101_HBA_Q_DEPTH 128     /* max cmds per low cost hba */
 
-#define LPFC_CMD_PER_LUN       30      /* max outstanding cmds per lun */
+#define LPFC_CMD_PER_LUN       3       /* max outstanding cmds per lun */
 #define LPFC_SG_SEG_CNT                64      /* sg element count per scsi cmnd */
 #define LPFC_IOCB_LIST_CNT     2250    /* list of IOCBs for fast-path usage. */
+#define LPFC_Q_RAMP_UP_INTERVAL 120     /* lun q_depth ramp up interval */
 
 /* Define macros for 64 bit support */
 #define putPaddrLow(addr)    ((uint32_t) (0xffffffff & (u64)(addr)))
@@ -45,6 +46,11 @@ struct lpfc_sli2_slim;
 
 #define MAX_HBAEVT     32
 
+enum lpfc_polling_flags {
+       ENABLE_FCP_RING_POLLING = 0x1,
+       DISABLE_FCP_RING_INT    = 0x2
+};
+
 /* Provide DMA memory definitions the driver uses per port instance. */
 struct lpfc_dmabuf {
        struct list_head list;
@@ -167,6 +173,7 @@ struct lpfc_hba {
        dma_addr_t slim2p_mapping;
        uint16_t pci_cfg_value;
 
+       struct semaphore hba_can_block;
        uint32_t hba_state;
 
 #define LPFC_INIT_START           1    /* Initial state after board reset */
@@ -286,6 +293,8 @@ struct lpfc_hba {
        uint32_t cfg_fcp_bind_method;
        uint32_t cfg_discovery_threads;
        uint32_t cfg_max_luns;
+       uint32_t cfg_poll;
+       uint32_t cfg_poll_tmo;
        uint32_t cfg_sg_seg_cnt;
        uint32_t cfg_sg_dma_buf_size;
 
@@ -337,7 +346,9 @@ struct lpfc_hba {
 #define VPD_PORT            0x8         /* valid vpd port data */
 #define VPD_MASK            0xf         /* mask for any vpd data */
 
+       struct timer_list fcp_poll_timer;
        struct timer_list els_tmofunc;
+
        /*
         * stat  counters
         */
@@ -348,6 +359,7 @@ struct lpfc_hba {
        struct lpfc_sysfs_mbox sysfs_mbox;
 
        /* fastpath list. */
+       spinlock_t scsi_buf_list_lock;
        struct list_head lpfc_scsi_buf_list;
        uint32_t total_scsi_bufs;
        struct list_head lpfc_iocb_list;
index 89e8222bc7cc4801ec981ee1c13523957744ce97..5625a8c2a8fde79eaf3620d0ef1857fe2511f5f1 100644 (file)
@@ -278,6 +278,71 @@ lpfc_board_online_store(struct class_device *cdev, const char *buf,
                return -EIO;
 }
 
+static ssize_t
+lpfc_poll_show(struct class_device *cdev, char *buf)
+{
+       struct Scsi_Host *host = class_to_shost(cdev);
+       struct lpfc_hba *phba = (struct lpfc_hba*)host->hostdata[0];
+
+       return snprintf(buf, PAGE_SIZE, "%#x\n", phba->cfg_poll);
+}
+
+static ssize_t
+lpfc_poll_store(struct class_device *cdev, const char *buf,
+               size_t count)
+{
+       struct Scsi_Host *host = class_to_shost(cdev);
+       struct lpfc_hba *phba = (struct lpfc_hba*)host->hostdata[0];
+       uint32_t creg_val;
+       uint32_t old_val;
+       int val=0;
+
+       if (!isdigit(buf[0]))
+               return -EINVAL;
+
+       if (sscanf(buf, "%i", &val) != 1)
+               return -EINVAL;
+
+       if ((val & 0x3) != val)
+               return -EINVAL;
+
+       spin_lock_irq(phba->host->host_lock);
+
+       old_val = phba->cfg_poll;
+
+       if (val & ENABLE_FCP_RING_POLLING) {
+               if ((val & DISABLE_FCP_RING_INT) &&
+                   !(old_val & DISABLE_FCP_RING_INT)) {
+                       creg_val = readl(phba->HCregaddr);
+                       creg_val &= ~(HC_R0INT_ENA << LPFC_FCP_RING);
+                       writel(creg_val, phba->HCregaddr);
+                       readl(phba->HCregaddr); /* flush */
+
+                       lpfc_poll_start_timer(phba);
+               }
+       } else if (val != 0x0) {
+               spin_unlock_irq(phba->host->host_lock);
+               return -EINVAL;
+       }
+
+       if (!(val & DISABLE_FCP_RING_INT) &&
+           (old_val & DISABLE_FCP_RING_INT))
+       {
+               spin_unlock_irq(phba->host->host_lock);
+               del_timer(&phba->fcp_poll_timer);
+               spin_lock_irq(phba->host->host_lock);
+               creg_val = readl(phba->HCregaddr);
+               creg_val |= (HC_R0INT_ENA << LPFC_FCP_RING);
+               writel(creg_val, phba->HCregaddr);
+               readl(phba->HCregaddr); /* flush */
+       }
+
+       phba->cfg_poll = val;
+
+       spin_unlock_irq(phba->host->host_lock);
+
+       return strlen(buf);
+}
 
 #define lpfc_param_show(attr)  \
 static ssize_t \
@@ -416,6 +481,15 @@ static CLASS_DEVICE_ATTR(management_version, S_IRUGO, management_version_show,
 static CLASS_DEVICE_ATTR(board_online, S_IRUGO | S_IWUSR,
                         lpfc_board_online_show, lpfc_board_online_store);
 
+static int lpfc_poll = 0;
+module_param(lpfc_poll, int, 0);
+MODULE_PARM_DESC(lpfc_poll, "FCP ring polling mode control:"
+                " 0 - none,"
+                " 1 - poll with interrupts enabled"
+                " 3 - poll and disable FCP ring interrupts");
+
+static CLASS_DEVICE_ATTR(lpfc_poll, S_IRUGO | S_IWUSR,
+                        lpfc_poll_show, lpfc_poll_store);
 
 /*
 # lpfc_log_verbose: Only turn this flag on if you are willing to risk being
@@ -523,10 +597,10 @@ LPFC_ATTR_R(ack0, 0, 0, 1, "Enable ACK0 support");
 # is 0. Default value of cr_count is 1. The cr_count feature is disabled if
 # cr_delay is set to 0.
 */
-LPFC_ATTR(cr_delay, 0, 0, 63, "A count of milliseconds after which an"
+LPFC_ATTR_RW(cr_delay, 0, 0, 63, "A count of milliseconds after which an"
                "interrupt response is generated");
 
-LPFC_ATTR(cr_count, 1, 1, 255, "A count of I/O completions after which an"
+LPFC_ATTR_RW(cr_count, 1, 1, 255, "A count of I/O completions after which an"
                "interrupt response is generated");
 
 /*
@@ -553,6 +627,13 @@ LPFC_ATTR(discovery_threads, 32, 1, 64, "Maximum number of ELS commands"
 LPFC_ATTR_R(max_luns, 256, 1, 32768,
             "Maximum number of LUNs per target driver will support");
 
+/*
+# lpfc_poll_tmo: .Milliseconds driver will wait between polling FCP ring.
+# Value range is [1,255], default value is 10.
+*/
+LPFC_ATTR_RW(poll_tmo, 10, 1, 255,
+            "Milliseconds driver will wait between polling FCP ring");
+
 struct class_device_attribute *lpfc_host_attrs[] = {
        &class_device_attr_info,
        &class_device_attr_serialnum,
@@ -575,11 +656,15 @@ struct class_device_attribute *lpfc_host_attrs[] = {
        &class_device_attr_lpfc_topology,
        &class_device_attr_lpfc_scan_down,
        &class_device_attr_lpfc_link_speed,
+       &class_device_attr_lpfc_cr_delay,
+       &class_device_attr_lpfc_cr_count,
        &class_device_attr_lpfc_fdmi_on,
        &class_device_attr_lpfc_max_luns,
        &class_device_attr_nport_evt_cnt,
        &class_device_attr_management_version,
        &class_device_attr_board_online,
+       &class_device_attr_lpfc_poll,
+       &class_device_attr_lpfc_poll_tmo,
        NULL,
 };
 
@@ -1292,6 +1377,9 @@ lpfc_get_cfgparam(struct lpfc_hba *phba)
        lpfc_fdmi_on_init(phba, lpfc_fdmi_on);
        lpfc_discovery_threads_init(phba, lpfc_discovery_threads);
        lpfc_max_luns_init(phba, lpfc_max_luns);
+       lpfc_poll_tmo_init(phba, lpfc_poll_tmo);
+
+       phba->cfg_poll = lpfc_poll;
 
        /*
         * The total number of segments is the configuration value plus 2
index d527d05a607fb4c4686d4f26a4ba136139eec65d..f1e708946e66d47a753ac5d9f0081f76c908fd56 100644 (file)
@@ -143,6 +143,9 @@ LPFC_MBOXQ_t *lpfc_mbox_get(struct lpfc_hba *);
 int lpfc_mem_alloc(struct lpfc_hba *);
 void lpfc_mem_free(struct lpfc_hba *);
 
+void lpfc_poll_timeout(unsigned long ptr);
+void lpfc_poll_start_timer(struct lpfc_hba * phba);
+void lpfc_sli_poll_fcp_ring(struct lpfc_hba * hba);
 struct lpfc_iocbq * lpfc_sli_get_iocbq(struct lpfc_hba *);
 void lpfc_sli_release_iocbq(struct lpfc_hba * phba, struct lpfc_iocbq * iocb);
 uint16_t lpfc_sli_next_iotag(struct lpfc_hba * phba, struct lpfc_iocbq * iocb);
index 084e7628ce172dc087a41d35b4d678fd7581f860..ed6c81660e03563f94d7720970086e17dd9af08b 100644 (file)
@@ -73,6 +73,8 @@ struct lpfc_nodelist {
        struct lpfc_hba      *nlp_phba;
        struct lpfc_work_evt nodev_timeout_evt;
        struct lpfc_work_evt els_retry_evt;
+       unsigned long last_ramp_up_time;        /* jiffy of last ramp up */
+       unsigned long last_q_full_time;         /* jiffy of last queue full */
 };
 
 /* Defines for nlp_flag (uint32) */
index bcc29ec126dc1a29761885fe31193f75c1ad29d9..20f1a0713db2dbd7d2210f4f85defa36deadd7c1 100644 (file)
@@ -720,6 +720,7 @@ lpfc_cmpl_els_plogi(struct lpfc_hba * phba, struct lpfc_iocbq * cmdiocb,
                /* Do not call DSM for lpfc_els_abort'ed ELS cmds */
                if ((irsp->ulpStatus == IOSTAT_LOCAL_REJECT) &&
                   ((irsp->un.ulpWord[4] == IOERR_SLI_ABORTED) ||
+                  (irsp->un.ulpWord[4] == IOERR_LINK_DOWN) ||
                   (irsp->un.ulpWord[4] == IOERR_SLI_DOWN))) {
                        disc = (ndlp->nlp_flag & NLP_NPR_2B_DISC);
                }
@@ -869,6 +870,7 @@ lpfc_cmpl_els_prli(struct lpfc_hba * phba, struct lpfc_iocbq * cmdiocb,
                /* Do not call DSM for lpfc_els_abort'ed ELS cmds */
                if ((irsp->ulpStatus == IOSTAT_LOCAL_REJECT) &&
                   ((irsp->un.ulpWord[4] == IOERR_SLI_ABORTED) ||
+                  (irsp->un.ulpWord[4] == IOERR_LINK_DOWN) ||
                   (irsp->un.ulpWord[4] == IOERR_SLI_DOWN))) {
                        goto out;
                }
@@ -1054,6 +1056,7 @@ lpfc_cmpl_els_adisc(struct lpfc_hba * phba, struct lpfc_iocbq * cmdiocb,
                /* Do not call DSM for lpfc_els_abort'ed ELS cmds */
                if ((irsp->ulpStatus == IOSTAT_LOCAL_REJECT) &&
                   ((irsp->un.ulpWord[4] == IOERR_SLI_ABORTED) ||
+                  (irsp->un.ulpWord[4] == IOERR_LINK_DOWN) ||
                   (irsp->un.ulpWord[4] == IOERR_SLI_DOWN))) {
                        disc = (ndlp->nlp_flag & NLP_NPR_2B_DISC);
                }
@@ -1205,6 +1208,7 @@ lpfc_cmpl_els_logo(struct lpfc_hba * phba, struct lpfc_iocbq * cmdiocb,
                /* Do not call DSM for lpfc_els_abort'ed ELS cmds */
                if ((irsp->ulpStatus == IOSTAT_LOCAL_REJECT) &&
                   ((irsp->un.ulpWord[4] == IOERR_SLI_ABORTED) ||
+                  (irsp->un.ulpWord[4] == IOERR_LINK_DOWN) ||
                   (irsp->un.ulpWord[4] == IOERR_SLI_DOWN))) {
                        goto out;
                }
index 259eeb161b82ce0e3ac55f706150c653f39a5bbe..a1f751e79405fee9fdc32db86bfc47bd7dcdcd31 100644 (file)
@@ -1017,12 +1017,7 @@ lpfc_register_remote_port(struct lpfc_hba * phba,
        rport_ids.port_name = wwn_to_u64(ndlp->nlp_portname.u.wwn);
        rport_ids.port_id = ndlp->nlp_DID;
        rport_ids.roles = FC_RPORT_ROLE_UNKNOWN;
-       if (ndlp->nlp_type & NLP_FCP_TARGET)
-               rport_ids.roles |= FC_RPORT_ROLE_FCP_TARGET;
-       if (ndlp->nlp_type & NLP_FCP_INITIATOR)
-               rport_ids.roles |= FC_RPORT_ROLE_FCP_INITIATOR;
 
-       scsi_block_requests(phba->host);
        ndlp->rport = rport = fc_remote_port_add(phba->host, 0, &rport_ids);
        if (!rport) {
                dev_printk(KERN_WARNING, &phba->pcidev->dev,
@@ -1039,7 +1034,16 @@ lpfc_register_remote_port(struct lpfc_hba * phba,
        }
        rdata = rport->dd_data;
        rdata->pnode = ndlp;
-       scsi_unblock_requests(phba->host);
+
+       if (ndlp->nlp_type & NLP_FCP_TARGET)
+               rport_ids.roles |= FC_RPORT_ROLE_FCP_TARGET;
+       if (ndlp->nlp_type & NLP_FCP_INITIATOR)
+               rport_ids.roles |= FC_RPORT_ROLE_FCP_INITIATOR;
+
+
+       if (rport_ids.roles !=  FC_RPORT_ROLE_UNKNOWN)
+               fc_remote_port_rolechg(rport, rport_ids.roles);
+
 
        return;
 }
@@ -1053,9 +1057,7 @@ lpfc_unregister_remote_port(struct lpfc_hba * phba,
 
        ndlp->rport = NULL;
        rdata->pnode = NULL;
-       scsi_block_requests(phba->host);
        fc_remote_port_delete(rport);
-       scsi_unblock_requests(phba->host);
 
        return;
 }
index 86c41981188b33b5d3c7a204411d79a52d01dce1..1ea565e0561ffe0432fed2e751a59f21e6ea5d8f 100644 (file)
@@ -266,9 +266,11 @@ struct lpfc_name {
                struct {
 #ifdef __BIG_ENDIAN_BITFIELD
                        uint8_t nameType:4;     /* FC Word 0, bit 28:31 */
-                       uint8_t IEEEextMsn:4;   /* FC Word 0, bit 24:27, bit 8:11 of IEEE ext */
+                       uint8_t IEEEextMsn:4;   /* FC Word 0, bit 24:27, bit
+                                                  8:11 of IEEE ext */
 #else  /*  __LITTLE_ENDIAN_BITFIELD */
-                       uint8_t IEEEextMsn:4;   /* FC Word 0, bit 24:27, bit 8:11 of IEEE ext */
+                       uint8_t IEEEextMsn:4;   /* FC Word 0, bit 24:27, bit
+                                                  8:11 of IEEE ext */
                        uint8_t nameType:4;     /* FC Word 0, bit 28:31 */
 #endif
 
@@ -278,7 +280,8 @@ struct lpfc_name {
 #define NAME_IP_TYPE        0x4        /* IP address */
 #define NAME_CCITT_TYPE     0xC
 #define NAME_CCITT_GR_TYPE  0xE
-                       uint8_t IEEEextLsb;     /* FC Word 0, bit 16:23, IEEE extended Lsb */
+                       uint8_t IEEEextLsb;     /* FC Word 0, bit 16:23, IEEE
+                                                  extended Lsb */
                        uint8_t IEEE[6];        /* FC IEEE address */
                } s;
                uint8_t wwn[8];
@@ -1024,23 +1027,38 @@ typedef struct {
 /* Start FireFly Register definitions */
 #define PCI_VENDOR_ID_EMULEX        0x10df
 #define PCI_DEVICE_ID_FIREFLY       0x1ae5
-#define PCI_DEVICE_ID_SUPERFLY      0xf700
-#define PCI_DEVICE_ID_DRAGONFLY     0xf800
 #define PCI_DEVICE_ID_RFLY          0xf095
 #define PCI_DEVICE_ID_PFLY          0xf098
+#define PCI_DEVICE_ID_LP101         0xf0a1
 #define PCI_DEVICE_ID_TFLY          0xf0a5
+#define PCI_DEVICE_ID_BSMB          0xf0d1
+#define PCI_DEVICE_ID_BMID          0xf0d5
+#define PCI_DEVICE_ID_ZSMB          0xf0e1
+#define PCI_DEVICE_ID_ZMID          0xf0e5
+#define PCI_DEVICE_ID_NEPTUNE       0xf0f5
+#define PCI_DEVICE_ID_NEPTUNE_SCSP  0xf0f6
+#define PCI_DEVICE_ID_NEPTUNE_DCSP  0xf0f7
+#define PCI_DEVICE_ID_SUPERFLY      0xf700
+#define PCI_DEVICE_ID_DRAGONFLY     0xf800
 #define PCI_DEVICE_ID_CENTAUR       0xf900
 #define PCI_DEVICE_ID_PEGASUS       0xf980
 #define PCI_DEVICE_ID_THOR          0xfa00
 #define PCI_DEVICE_ID_VIPER         0xfb00
+#define PCI_DEVICE_ID_LP10000S      0xfc00
+#define PCI_DEVICE_ID_LP11000S      0xfc10
+#define PCI_DEVICE_ID_LPE11000S     0xfc20
 #define PCI_DEVICE_ID_HELIOS        0xfd00
-#define PCI_DEVICE_ID_BMID          0xf0d5
-#define PCI_DEVICE_ID_BSMB          0xf0d1
+#define PCI_DEVICE_ID_HELIOS_SCSP   0xfd11
+#define PCI_DEVICE_ID_HELIOS_DCSP   0xfd12
 #define PCI_DEVICE_ID_ZEPHYR        0xfe00
-#define PCI_DEVICE_ID_ZMID          0xf0e5
-#define PCI_DEVICE_ID_ZSMB          0xf0e1
-#define PCI_DEVICE_ID_LP101        0xf0a1
-#define PCI_DEVICE_ID_LP10000S     0xfc00
+#define PCI_DEVICE_ID_ZEPHYR_SCSP   0xfe11
+#define PCI_DEVICE_ID_ZEPHYR_DCSP   0xfe12
+
+#define PCI_SUBSYSTEM_ID_LP11000S      0xfc11
+#define PCI_SUBSYSTEM_ID_LP11002S      0xfc12
+#define PCI_SUBSYSTEM_ID_LPE11000S     0xfc21
+#define PCI_SUBSYSTEM_ID_LPE11002S     0xfc22
+#define PCI_SUBSYSTEM_ID_LPE11010S     0xfc2A
 
 #define JEDEC_ID_ADDRESS            0x0080001c
 #define FIREFLY_JEDEC_ID            0x1ACC
index 07498118359de9f7a02beadc177af154ce4acc07..b7a603a45328f2dd95753f7384f56ef2e1ec7c02 100644 (file)
@@ -126,34 +126,26 @@ lpfc_config_port_prep(struct lpfc_hba * phba)
                return -ERESTART;
        }
 
-       /* The HBA's current state is provided by the ProgType and rr fields.
-        * Read and check the value of these fields before continuing to config
-        * this port.
+       /*
+        * The value of rr must be 1 since the driver set the cv field to 1.
+        * This setting requires the FW to set all revision fields.
         */
-       if (mb->un.varRdRev.rr == 0 || mb->un.varRdRev.un.b.ProgType != 2) {
-               /* Old firmware */
+       if (mb->un.varRdRev.rr == 0) {
                vp->rev.rBit = 0;
-               lpfc_printf_log(phba,
-                               KERN_ERR,
-                               LOG_INIT,
-                               "%d:0440 Adapter failed to init, mbxCmd x%x "
-                               "READ_REV detected outdated firmware"
-                               "Data: x%x\n",
-                               phba->brd_no,
-                               mb->mbxCommand, 0);
+               lpfc_printf_log(phba, KERN_ERR, LOG_INIT,
+                               "%d:0440 Adapter failed to init, READ_REV has "
+                               "missing revision information.\n",
+                               phba->brd_no);
                mempool_free(pmb, phba->mbox_mem_pool);
                return -ERESTART;
-       } else {
-               vp->rev.rBit = 1;
-               vp->rev.sli1FwRev = mb->un.varRdRev.sli1FwRev;
-               memcpy(vp->rev.sli1FwName,
-                       (char*)mb->un.varRdRev.sli1FwName, 16);
-               vp->rev.sli2FwRev = mb->un.varRdRev.sli2FwRev;
-               memcpy(vp->rev.sli2FwName,
-                                       (char *)mb->un.varRdRev.sli2FwName, 16);
        }
 
        /* Save information as VPD data */
+       vp->rev.rBit = 1;
+       vp->rev.sli1FwRev = mb->un.varRdRev.sli1FwRev;
+       memcpy(vp->rev.sli1FwName, (char*) mb->un.varRdRev.sli1FwName, 16);
+       vp->rev.sli2FwRev = mb->un.varRdRev.sli2FwRev;
+       memcpy(vp->rev.sli2FwName, (char *) mb->un.varRdRev.sli2FwName, 16);
        vp->rev.biuRev = mb->un.varRdRev.biuRev;
        vp->rev.smRev = mb->un.varRdRev.smRev;
        vp->rev.smFwRev = mb->un.varRdRev.un.smFwRev;
@@ -378,6 +370,10 @@ lpfc_config_port_post(struct lpfc_hba * phba)
        if (psli->num_rings > 3)
                status |= HC_R3INT_ENA;
 
+       if ((phba->cfg_poll & ENABLE_FCP_RING_POLLING) &&
+           (phba->cfg_poll & DISABLE_FCP_RING_INT))
+               status &= ~(HC_R0INT_ENA << LPFC_FCP_RING);
+
        writel(status, phba->HCregaddr);
        readl(phba->HCregaddr); /* flush */
        spin_unlock_irq(phba->host->host_lock);
@@ -571,6 +567,8 @@ lpfc_handle_latt(struct lpfc_hba * phba)
 
        rc = -EIO;
 
+       /* Cleanup any outstanding ELS commands */
+       lpfc_els_flush_cmd(phba);
 
        psli->slistat.link_event++;
        lpfc_read_la(phba, pmb, mp);
@@ -765,96 +763,139 @@ static void
 lpfc_get_hba_model_desc(struct lpfc_hba * phba, uint8_t * mdp, uint8_t * descp)
 {
        lpfc_vpd_t *vp;
-       uint32_t id;
-       uint8_t hdrtype;
-       char str[16];
+       uint16_t dev_id = phba->pcidev->device;
+       uint16_t dev_subid = phba->pcidev->subsystem_device;
+       uint8_t hdrtype = phba->pcidev->hdr_type;
+       char *model_str = "";
 
        vp = &phba->vpd;
-       pci_read_config_dword(phba->pcidev, PCI_VENDOR_ID, &id);
-       pci_read_config_byte(phba->pcidev, PCI_HEADER_TYPE, &hdrtype);
 
-       switch ((id >> 16) & 0xffff) {
+       switch (dev_id) {
        case PCI_DEVICE_ID_FIREFLY:
-               strcpy(str, "LP6000 1");
+               model_str = "LP6000 1Gb PCI";
                break;
        case PCI_DEVICE_ID_SUPERFLY:
                if (vp->rev.biuRev >= 1 && vp->rev.biuRev <= 3)
-                       strcpy(str, "LP7000 1");
+                       model_str = "LP7000 1Gb PCI";
                else
-                       strcpy(str, "LP7000E 1");
+                       model_str = "LP7000E 1Gb PCI";
                break;
        case PCI_DEVICE_ID_DRAGONFLY:
-               strcpy(str, "LP8000 1");
+               model_str = "LP8000 1Gb PCI";
                break;
        case PCI_DEVICE_ID_CENTAUR:
                if (FC_JEDEC_ID(vp->rev.biuRev) == CENTAUR_2G_JEDEC_ID)
-                       strcpy(str, "LP9002 2");
+                       model_str = "LP9002 2Gb PCI";
                else
-                       strcpy(str, "LP9000 1");
+                       model_str = "LP9000 1Gb PCI";
                break;
        case PCI_DEVICE_ID_RFLY:
-               strcpy(str, "LP952 2");
+               model_str = "LP952 2Gb PCI";
                break;
        case PCI_DEVICE_ID_PEGASUS:
-               strcpy(str, "LP9802 2");
+               model_str = "LP9802 2Gb PCI-X";
                break;
        case PCI_DEVICE_ID_THOR:
                if (hdrtype == 0x80)
-                       strcpy(str, "LP10000DC 2");
+                       model_str = "LP10000DC 2Gb 2-port PCI-X";
                else
-                       strcpy(str, "LP10000 2");
+                       model_str = "LP10000 2Gb PCI-X";
                break;
        case PCI_DEVICE_ID_VIPER:
-               strcpy(str, "LPX1000 10");
+               model_str = "LPX1000 10Gb PCI-X";
                break;
        case PCI_DEVICE_ID_PFLY:
-               strcpy(str, "LP982 2");
+               model_str = "LP982 2Gb PCI-X";
                break;
        case PCI_DEVICE_ID_TFLY:
                if (hdrtype == 0x80)
-                       strcpy(str, "LP1050DC 2");
+                       model_str = "LP1050DC 2Gb 2-port PCI-X";
                else
-                       strcpy(str, "LP1050 2");
+                       model_str = "LP1050 2Gb PCI-X";
                break;
        case PCI_DEVICE_ID_HELIOS:
                if (hdrtype == 0x80)
-                       strcpy(str, "LP11002 4");
+                       model_str = "LP11002 4Gb 2-port PCI-X2";
+               else
+                       model_str = "LP11000 4Gb PCI-X2";
+               break;
+       case PCI_DEVICE_ID_HELIOS_SCSP:
+               model_str = "LP11000-SP 4Gb PCI-X2";
+               break;
+       case PCI_DEVICE_ID_HELIOS_DCSP:
+               model_str = "LP11002-SP 4Gb 2-port PCI-X2";
+               break;
+       case PCI_DEVICE_ID_NEPTUNE:
+               if (hdrtype == 0x80)
+                       model_str = "LPe1002 4Gb 2-port";
                else
-                       strcpy(str, "LP11000 4");
+                       model_str = "LPe1000 4Gb PCIe";
+               break;
+       case PCI_DEVICE_ID_NEPTUNE_SCSP:
+               model_str = "LPe1000-SP 4Gb PCIe";
+               break;
+       case PCI_DEVICE_ID_NEPTUNE_DCSP:
+               model_str = "LPe1002-SP 4Gb 2-port PCIe";
                break;
        case PCI_DEVICE_ID_BMID:
-               strcpy(str, "LP1150 4");
+               model_str = "LP1150 4Gb PCI-X2";
                break;
        case PCI_DEVICE_ID_BSMB:
-               strcpy(str, "LP111 4");
+               model_str = "LP111 4Gb PCI-X2";
                break;
        case PCI_DEVICE_ID_ZEPHYR:
                if (hdrtype == 0x80)
-                       strcpy(str, "LPe11002 4");
+                       model_str = "LPe11002 4Gb 2-port PCIe";
                else
-                       strcpy(str, "LPe11000 4");
+                       model_str = "LPe11000 4Gb PCIe";
+               break;
+       case PCI_DEVICE_ID_ZEPHYR_SCSP:
+               model_str = "LPe11000-SP 4Gb PCIe";
+               break;
+       case PCI_DEVICE_ID_ZEPHYR_DCSP:
+               model_str = "LPe11002-SP 4Gb 2-port PCIe";
                break;
        case PCI_DEVICE_ID_ZMID:
-               strcpy(str, "LPe1150 4");
+               model_str = "LPe1150 4Gb PCIe";
                break;
        case PCI_DEVICE_ID_ZSMB:
-               strcpy(str, "LPe111 4");
+               model_str = "LPe111 4Gb PCIe";
                break;
        case PCI_DEVICE_ID_LP101:
-               strcpy(str, "LP101 2");
+               model_str = "LP101 2Gb PCI-X";
                break;
        case PCI_DEVICE_ID_LP10000S:
-               strcpy(str, "LP10000-S 2");
+               model_str = "LP10000-S 2Gb PCI";
+               break;
+       case PCI_DEVICE_ID_LP11000S:
+       case PCI_DEVICE_ID_LPE11000S:
+               switch (dev_subid) {
+               case PCI_SUBSYSTEM_ID_LP11000S:
+                       model_str = "LP11002-S 4Gb PCI-X2";
+                       break;
+               case PCI_SUBSYSTEM_ID_LP11002S:
+                       model_str = "LP11000-S 4Gb 2-port PCI-X2";
+                       break;
+               case PCI_SUBSYSTEM_ID_LPE11000S:
+                       model_str = "LPe11002-S 4Gb PCIe";
+                       break;
+               case PCI_SUBSYSTEM_ID_LPE11002S:
+                       model_str = "LPe11002-S 4Gb 2-port PCIe";
+                       break;
+               case PCI_SUBSYSTEM_ID_LPE11010S:
+                       model_str = "LPe11010-S 4Gb 10-port PCIe";
+                       break;
+               default:
+                       break;
+               }
                break;
        default:
-               memset(str, 0, 16);
                break;
        }
        if (mdp)
-               sscanf(str, "%s", mdp);
+               sscanf(model_str, "%s", mdp);
        if (descp)
-               sprintf(descp, "Emulex LightPulse %s Gigabit PCI Fibre "
-                       "Channel Adapter", str);
+               sprintf(descp, "Emulex %s Fibre Channel Adapter", model_str);
 }
 
 /**************************************************/
@@ -1196,6 +1237,7 @@ lpfc_stop_timer(struct lpfc_hba * phba)
                }
        }
 
+       del_timer_sync(&phba->fcp_poll_timer);
        del_timer_sync(&phba->fc_estabtmo);
        del_timer_sync(&phba->fc_disctmo);
        del_timer_sync(&phba->fc_fdmitmo);
@@ -1351,7 +1393,7 @@ lpfc_pci_probe_one(struct pci_dev *pdev, const struct pci_device_id *pid)
                goto out_put_host;
 
        host->unique_id = phba->brd_no;
-
+       init_MUTEX(&phba->hba_can_block);
        INIT_LIST_HEAD(&phba->ctrspbuflist);
        INIT_LIST_HEAD(&phba->rnidrspbuflist);
        INIT_LIST_HEAD(&phba->freebufList);
@@ -1375,6 +1417,10 @@ lpfc_pci_probe_one(struct pci_dev *pdev, const struct pci_device_id *pid)
        psli->mbox_tmo.function = lpfc_mbox_timeout;
        psli->mbox_tmo.data = (unsigned long)phba;
 
+       init_timer(&phba->fcp_poll_timer);
+       phba->fcp_poll_timer.function = lpfc_poll_timeout;
+       phba->fcp_poll_timer.data = (unsigned long)phba;
+
        /*
         * Get all the module params for configuring this host and then
         * establish the host parameters.
@@ -1489,6 +1535,7 @@ lpfc_pci_probe_one(struct pci_dev *pdev, const struct pci_device_id *pid)
        host->max_cmd_len = 16;
 
        /* Initialize the list of scsi buffers used by driver for scsi IO. */
+       spin_lock_init(&phba->scsi_buf_list_lock);
        INIT_LIST_HEAD(&phba->lpfc_scsi_buf_list);
 
        host->transportt = lpfc_transport_template;
@@ -1520,6 +1567,12 @@ lpfc_pci_probe_one(struct pci_dev *pdev, const struct pci_device_id *pid)
        if (error)
                goto out_free_irq;
 
+       if (phba->cfg_poll & DISABLE_FCP_RING_INT) {
+               spin_lock_irq(phba->host->host_lock);
+               lpfc_poll_start_timer(phba);
+               spin_unlock_irq(phba->host->host_lock);
+       }
+
        /*
         * set fixed host attributes
         * Must done after lpfc_sli_hba_setup()
@@ -1679,14 +1732,28 @@ static struct pci_device_id lpfc_id_table[] = {
                PCI_ANY_ID, PCI_ANY_ID, },
        {PCI_VENDOR_ID_EMULEX, PCI_DEVICE_ID_PFLY,
                PCI_ANY_ID, PCI_ANY_ID, },
+       {PCI_VENDOR_ID_EMULEX, PCI_DEVICE_ID_NEPTUNE,
+               PCI_ANY_ID, PCI_ANY_ID, },
+       {PCI_VENDOR_ID_EMULEX, PCI_DEVICE_ID_NEPTUNE_SCSP,
+               PCI_ANY_ID, PCI_ANY_ID, },
+       {PCI_VENDOR_ID_EMULEX, PCI_DEVICE_ID_NEPTUNE_DCSP,
+               PCI_ANY_ID, PCI_ANY_ID, },
        {PCI_VENDOR_ID_EMULEX, PCI_DEVICE_ID_HELIOS,
                PCI_ANY_ID, PCI_ANY_ID, },
+       {PCI_VENDOR_ID_EMULEX, PCI_DEVICE_ID_HELIOS_SCSP,
+               PCI_ANY_ID, PCI_ANY_ID, },
+       {PCI_VENDOR_ID_EMULEX, PCI_DEVICE_ID_HELIOS_DCSP,
+               PCI_ANY_ID, PCI_ANY_ID, },
        {PCI_VENDOR_ID_EMULEX, PCI_DEVICE_ID_BMID,
                PCI_ANY_ID, PCI_ANY_ID, },
        {PCI_VENDOR_ID_EMULEX, PCI_DEVICE_ID_BSMB,
                PCI_ANY_ID, PCI_ANY_ID, },
        {PCI_VENDOR_ID_EMULEX, PCI_DEVICE_ID_ZEPHYR,
                PCI_ANY_ID, PCI_ANY_ID, },
+       {PCI_VENDOR_ID_EMULEX, PCI_DEVICE_ID_ZEPHYR_SCSP,
+               PCI_ANY_ID, PCI_ANY_ID, },
+       {PCI_VENDOR_ID_EMULEX, PCI_DEVICE_ID_ZEPHYR_DCSP,
+               PCI_ANY_ID, PCI_ANY_ID, },
        {PCI_VENDOR_ID_EMULEX, PCI_DEVICE_ID_ZMID,
                PCI_ANY_ID, PCI_ANY_ID, },
        {PCI_VENDOR_ID_EMULEX, PCI_DEVICE_ID_ZSMB,
@@ -1697,6 +1764,10 @@ static struct pci_device_id lpfc_id_table[] = {
                PCI_ANY_ID, PCI_ANY_ID, },
        {PCI_VENDOR_ID_EMULEX, PCI_DEVICE_ID_LP10000S,
                PCI_ANY_ID, PCI_ANY_ID, },
+       {PCI_VENDOR_ID_EMULEX, PCI_DEVICE_ID_LP11000S,
+               PCI_ANY_ID, PCI_ANY_ID, },
+       {PCI_VENDOR_ID_EMULEX, PCI_DEVICE_ID_LPE11000S,
+               PCI_ANY_ID, PCI_ANY_ID, },
        { 0 }
 };
 
index 507a6af56f42d51ad52687a2f15889aca267729a..fbead786031f9ec948df36249d557d6e646a2d17 100644 (file)
@@ -55,55 +55,76 @@ lpfc_check_adisc(struct lpfc_hba * phba, struct lpfc_nodelist * ndlp,
        return (1);
 }
 
-
 int
 lpfc_check_sparm(struct lpfc_hba * phba,
                 struct lpfc_nodelist * ndlp, struct serv_parm * sp,
                 uint32_t class)
 {
        volatile struct serv_parm *hsp = &phba->fc_sparam;
-       /* First check for supported version */
-
-       /* Next check for class validity */
+       uint16_t hsp_value, ssp_value = 0;
+
+       /*
+        * The receive data field size and buffer-to-buffer receive data field
+        * size entries are 16 bits but are represented as two 8-bit fields in
+        * the driver data structure to account for rsvd bits and other control
+        * bits.  Reconstruct and compare the fields as a 16-bit values before
+        * correcting the byte values.
+        */
        if (sp->cls1.classValid) {
-
-               if (sp->cls1.rcvDataSizeMsb > hsp->cls1.rcvDataSizeMsb)
-                       sp->cls1.rcvDataSizeMsb = hsp->cls1.rcvDataSizeMsb;
-               if (sp->cls1.rcvDataSizeLsb > hsp->cls1.rcvDataSizeLsb)
+               hsp_value = (hsp->cls1.rcvDataSizeMsb << 8) |
+                               hsp->cls1.rcvDataSizeLsb;
+               ssp_value = (sp->cls1.rcvDataSizeMsb << 8) |
+                               sp->cls1.rcvDataSizeLsb;
+               if (ssp_value > hsp_value) {
                        sp->cls1.rcvDataSizeLsb = hsp->cls1.rcvDataSizeLsb;
+                       sp->cls1.rcvDataSizeMsb = hsp->cls1.rcvDataSizeMsb;
+               }
        } else if (class == CLASS1) {
-               return (0);
+               return 0;
        }
 
        if (sp->cls2.classValid) {
-
-               if (sp->cls2.rcvDataSizeMsb > hsp->cls2.rcvDataSizeMsb)
-                       sp->cls2.rcvDataSizeMsb = hsp->cls2.rcvDataSizeMsb;
-               if (sp->cls2.rcvDataSizeLsb > hsp->cls2.rcvDataSizeLsb)
+               hsp_value = (hsp->cls2.rcvDataSizeMsb << 8) |
+                               hsp->cls2.rcvDataSizeLsb;
+               ssp_value = (sp->cls2.rcvDataSizeMsb << 8) |
+                               sp->cls2.rcvDataSizeLsb;
+               if (ssp_value > hsp_value) {
                        sp->cls2.rcvDataSizeLsb = hsp->cls2.rcvDataSizeLsb;
+                       sp->cls2.rcvDataSizeMsb = hsp->cls2.rcvDataSizeMsb;
+               }
        } else if (class == CLASS2) {
-               return (0);
+               return 0;
        }
 
        if (sp->cls3.classValid) {
-
-               if (sp->cls3.rcvDataSizeMsb > hsp->cls3.rcvDataSizeMsb)
-                       sp->cls3.rcvDataSizeMsb = hsp->cls3.rcvDataSizeMsb;
-               if (sp->cls3.rcvDataSizeLsb > hsp->cls3.rcvDataSizeLsb)
+               hsp_value = (hsp->cls3.rcvDataSizeMsb << 8) |
+                               hsp->cls3.rcvDataSizeLsb;
+               ssp_value = (sp->cls3.rcvDataSizeMsb << 8) |
+                               sp->cls3.rcvDataSizeLsb;
+               if (ssp_value > hsp_value) {
                        sp->cls3.rcvDataSizeLsb = hsp->cls3.rcvDataSizeLsb;
+                       sp->cls3.rcvDataSizeMsb = hsp->cls3.rcvDataSizeMsb;
+               }
        } else if (class == CLASS3) {
-               return (0);
+               return 0;
        }
 
-       if (sp->cmn.bbRcvSizeMsb > hsp->cmn.bbRcvSizeMsb)
-               sp->cmn.bbRcvSizeMsb = hsp->cmn.bbRcvSizeMsb;
-       if (sp->cmn.bbRcvSizeLsb > hsp->cmn.bbRcvSizeLsb)
+       /*
+        * Preserve the upper four bits of the MSB from the PLOGI response.
+        * These bits contain the Buffer-to-Buffer State Change Number
+        * from the target and need to be passed to the FW.
+        */
+       hsp_value = (hsp->cmn.bbRcvSizeMsb << 8) | hsp->cmn.bbRcvSizeLsb;
+       ssp_value = (sp->cmn.bbRcvSizeMsb << 8) | sp->cmn.bbRcvSizeLsb;
+       if (ssp_value > hsp_value) {
                sp->cmn.bbRcvSizeLsb = hsp->cmn.bbRcvSizeLsb;
+               sp->cmn.bbRcvSizeMsb = (sp->cmn.bbRcvSizeMsb & 0xF0) |
+                                      (hsp->cmn.bbRcvSizeMsb & 0x0F);
+       }
 
-       /* If check is good, copy wwpn wwnn into ndlp */
        memcpy(&ndlp->nlp_nodename, &sp->nodeName, sizeof (struct lpfc_name));
        memcpy(&ndlp->nlp_portname, &sp->portName, sizeof (struct lpfc_name));
-       return (1);
+       return 1;
 }
 
 static void *
index c63275e66e2e6644c1e187904b4838476eda8e37..9ee8218404c058bc44e40157c891ad6464c2a605 100644 (file)
 #define LPFC_ABORT_WAIT  2
 
 
+static inline void
+lpfc_block_requests(struct lpfc_hba * phba)
+{
+       down(&phba->hba_can_block);
+       scsi_block_requests(phba->host);
+}
+
+static inline void
+lpfc_unblock_requests(struct lpfc_hba * phba)
+{
+       scsi_unblock_requests(phba->host);
+       up(&phba->hba_can_block);
+}
+
 /*
  * This routine allocates a scsi buffer, which contains all the necessary
  * information needed to initiate a SCSI I/O.  The non-DMAable buffer region
@@ -137,18 +151,22 @@ lpfc_new_scsi_buf(struct lpfc_hba * phba)
 }
 
 struct  lpfc_scsi_buf*
-lpfc_sli_get_scsi_buf(struct lpfc_hba * phba)
+lpfc_get_scsi_buf(struct lpfc_hba * phba)
 {
        struct  lpfc_scsi_buf * lpfc_cmd = NULL;
        struct list_head *scsi_buf_list = &phba->lpfc_scsi_buf_list;
+       unsigned long iflag = 0;
 
+       spin_lock_irqsave(&phba->scsi_buf_list_lock, iflag);
        list_remove_head(scsi_buf_list, lpfc_cmd, struct lpfc_scsi_buf, list);
+       spin_unlock_irqrestore(&phba->scsi_buf_list_lock, iflag);
        return  lpfc_cmd;
 }
 
 static void
 lpfc_release_scsi_buf(struct lpfc_hba * phba, struct lpfc_scsi_buf * psb)
 {
+       unsigned long iflag = 0;
        /*
         * There are only two special cases to consider.  (1) the scsi command
         * requested scatter-gather usage or (2) the scsi command allocated
@@ -166,8 +184,10 @@ lpfc_release_scsi_buf(struct lpfc_hba * phba, struct lpfc_scsi_buf * psb)
                 }
        }
 
+       spin_lock_irqsave(&phba->scsi_buf_list_lock, iflag);
        psb->pCmd = NULL;
        list_add_tail(&psb->list, &phba->lpfc_scsi_buf_list);
+       spin_unlock_irqrestore(&phba->scsi_buf_list_lock, iflag);
 }
 
 static int
@@ -389,7 +409,9 @@ lpfc_scsi_cmd_iocb_cmpl(struct lpfc_hba *phba, struct lpfc_iocbq *pIocbIn,
        struct lpfc_rport_data *rdata = lpfc_cmd->rdata;
        struct lpfc_nodelist *pnode = rdata->pnode;
        struct scsi_cmnd *cmd = lpfc_cmd->pCmd;
-       unsigned long iflag;
+       int result;
+       struct scsi_device *sdev, *tmp_sdev;
+       int depth = 0;
 
        lpfc_cmd->result = pIocbOut->iocb.un.ulpWord[4];
        lpfc_cmd->status = pIocbOut->iocb.ulpStatus;
@@ -441,11 +463,64 @@ lpfc_scsi_cmd_iocb_cmpl(struct lpfc_hba *phba, struct lpfc_iocbq *pIocbIn,
                                *lp, *(lp + 3), cmd->retries, cmd->resid);
        }
 
+       result = cmd->result;
+       sdev = cmd->device;
        cmd->scsi_done(cmd);
 
-       spin_lock_irqsave(phba->host->host_lock, iflag);
+       if (!result &&
+          ((jiffies - pnode->last_ramp_up_time) >
+               LPFC_Q_RAMP_UP_INTERVAL * HZ) &&
+          ((jiffies - pnode->last_q_full_time) >
+               LPFC_Q_RAMP_UP_INTERVAL * HZ) &&
+          (phba->cfg_lun_queue_depth > sdev->queue_depth)) {
+               shost_for_each_device(tmp_sdev, sdev->host) {
+                       if (phba->cfg_lun_queue_depth > tmp_sdev->queue_depth) {
+                               if (tmp_sdev->id != sdev->id)
+                                       continue;
+                               if (tmp_sdev->ordered_tags)
+                                       scsi_adjust_queue_depth(tmp_sdev,
+                                               MSG_ORDERED_TAG,
+                                               tmp_sdev->queue_depth+1);
+                               else
+                                       scsi_adjust_queue_depth(tmp_sdev,
+                                               MSG_SIMPLE_TAG,
+                                               tmp_sdev->queue_depth+1);
+
+                               pnode->last_ramp_up_time = jiffies;
+                       }
+               }
+       }
+
+       /*
+        * Check for queue full.  If the lun is reporting queue full, then
+        * back off the lun queue depth to prevent target overloads.
+        */
+       if (result == SAM_STAT_TASK_SET_FULL) {
+               pnode->last_q_full_time = jiffies;
+
+               shost_for_each_device(tmp_sdev, sdev->host) {
+                       if (tmp_sdev->id != sdev->id)
+                               continue;
+                       depth = scsi_track_queue_full(tmp_sdev,
+                                       tmp_sdev->queue_depth - 1);
+               }
+               /*
+                * The queue depth cannot be lowered any more.
+                * Modify the returned error code to store
+                * the final depth value set by
+                * scsi_track_queue_full.
+                */
+               if (depth == -1)
+                       depth = sdev->host->cmd_per_lun;
+
+               if (depth) {
+                       lpfc_printf_log(phba, KERN_WARNING, LOG_FCP,
+                               "%d:0711 detected queue full - lun queue depth "
+                               " adjusted to %d.\n", phba->brd_no, depth);
+               }
+       }
+
        lpfc_release_scsi_buf(phba, lpfc_cmd);
-       spin_unlock_irqrestore(phba->host->host_lock, iflag);
 }
 
 static void
@@ -693,6 +768,37 @@ lpfc_info(struct Scsi_Host *host)
        return lpfcinfobuf;
 }
 
+static __inline__ void lpfc_poll_rearm_timer(struct lpfc_hba * phba)
+{
+       unsigned long  poll_tmo_expires =
+               (jiffies + msecs_to_jiffies(phba->cfg_poll_tmo));
+
+       if (phba->sli.ring[LPFC_FCP_RING].txcmplq_cnt)
+               mod_timer(&phba->fcp_poll_timer,
+                         poll_tmo_expires);
+}
+
+void lpfc_poll_start_timer(struct lpfc_hba * phba)
+{
+       lpfc_poll_rearm_timer(phba);
+}
+
+void lpfc_poll_timeout(unsigned long ptr)
+{
+       struct lpfc_hba *phba = (struct lpfc_hba *)ptr;
+       unsigned long iflag;
+
+       spin_lock_irqsave(phba->host->host_lock, iflag);
+
+       if (phba->cfg_poll & ENABLE_FCP_RING_POLLING) {
+               lpfc_sli_poll_fcp_ring (phba);
+               if (phba->cfg_poll & DISABLE_FCP_RING_INT)
+                       lpfc_poll_rearm_timer(phba);
+       }
+
+       spin_unlock_irqrestore(phba->host->host_lock, iflag);
+}
+
 static int
 lpfc_queuecommand(struct scsi_cmnd *cmnd, void (*done) (struct scsi_cmnd *))
 {
@@ -719,10 +825,11 @@ lpfc_queuecommand(struct scsi_cmnd *cmnd, void (*done) (struct scsi_cmnd *))
                cmnd->result = ScsiResult(DID_BUS_BUSY, 0);
                goto out_fail_command;
        }
-       lpfc_cmd = lpfc_sli_get_scsi_buf (phba);
+       lpfc_cmd = lpfc_get_scsi_buf (phba);
        if (lpfc_cmd == NULL) {
-               printk(KERN_WARNING "%s: No buffer available - list empty, "
-                      "total count %d\n", __FUNCTION__, phba->total_scsi_bufs);
+               lpfc_printf_log(phba, KERN_INFO, LOG_FCP,
+                               "%d:0707 driver's buffer pool is empty, "
+                               "IO busied\n", phba->brd_no);
                goto out_host_busy;
        }
 
@@ -746,11 +853,17 @@ lpfc_queuecommand(struct scsi_cmnd *cmnd, void (*done) (struct scsi_cmnd *))
                                &lpfc_cmd->cur_iocbq, SLI_IOCB_RET_IOCB);
        if (err)
                goto out_host_busy_free_buf;
+
+       if (phba->cfg_poll & ENABLE_FCP_RING_POLLING) {
+               lpfc_sli_poll_fcp_ring(phba);
+               if (phba->cfg_poll & DISABLE_FCP_RING_INT)
+                       lpfc_poll_rearm_timer(phba);
+       }
+
        return 0;
 
  out_host_busy_free_buf:
        lpfc_release_scsi_buf(phba, lpfc_cmd);
-       cmnd->host_scribble = NULL;
  out_host_busy:
        return SCSI_MLQUEUE_HOST_BUSY;
 
@@ -759,11 +872,12 @@ lpfc_queuecommand(struct scsi_cmnd *cmnd, void (*done) (struct scsi_cmnd *))
        return 0;
 }
 
+
 static int
-__lpfc_abort_handler(struct scsi_cmnd *cmnd)
+lpfc_abort_handler(struct scsi_cmnd *cmnd)
 {
-       struct lpfc_hba *phba =
-                       (struct lpfc_hba *)cmnd->device->host->hostdata[0];
+       struct Scsi_Host *shost = cmnd->device->host;
+       struct lpfc_hba *phba = (struct lpfc_hba *)shost->hostdata[0];
        struct lpfc_sli_ring *pring = &phba->sli.ring[phba->sli.fcp_ring];
        struct lpfc_iocbq *iocb;
        struct lpfc_iocbq *abtsiocb;
@@ -772,6 +886,8 @@ __lpfc_abort_handler(struct scsi_cmnd *cmnd)
        unsigned int loop_count = 0;
        int ret = SUCCESS;
 
+       lpfc_block_requests(phba);
+       spin_lock_irq(shost->host_lock);
 
        lpfc_cmd = (struct lpfc_scsi_buf *)cmnd->host_scribble;
        BUG_ON(!lpfc_cmd);
@@ -821,9 +937,15 @@ __lpfc_abort_handler(struct scsi_cmnd *cmnd)
                goto out;
        }
 
+       if (phba->cfg_poll & DISABLE_FCP_RING_INT)
+               lpfc_sli_poll_fcp_ring (phba);
+
        /* Wait for abort to complete */
        while (lpfc_cmd->pCmd == cmnd)
        {
+               if (phba->cfg_poll & DISABLE_FCP_RING_INT)
+                       lpfc_sli_poll_fcp_ring (phba);
+
                spin_unlock_irq(phba->host->host_lock);
                        schedule_timeout_uninterruptible(LPFC_ABORT_WAIT*HZ);
                spin_lock_irq(phba->host->host_lock);
@@ -844,26 +966,19 @@ __lpfc_abort_handler(struct scsi_cmnd *cmnd)
 
  out:
        lpfc_printf_log(phba, KERN_WARNING, LOG_FCP,
-                       "%d:0749 SCSI layer issued abort device: ret %#x, "
-                       "ID %d, LUN %d, snum %#lx\n",
+                       "%d:0749 SCSI Layer I/O Abort Request "
+                       "Status x%x ID %d LUN %d snum %#lx\n",
                        phba->brd_no, ret, cmnd->device->id,
                        cmnd->device->lun, cmnd->serial_number);
 
-       return ret;
-}
+       spin_unlock_irq(shost->host_lock);
+       lpfc_unblock_requests(phba);
 
-static int
-lpfc_abort_handler(struct scsi_cmnd *cmnd)
-{
-       int rc;
-       spin_lock_irq(cmnd->device->host->host_lock);
-       rc = __lpfc_abort_handler(cmnd);
-       spin_unlock_irq(cmnd->device->host->host_lock);
-       return rc;
+       return ret;
 }
 
 static int
-__lpfc_reset_lun_handler(struct scsi_cmnd *cmnd)
+lpfc_reset_lun_handler(struct scsi_cmnd *cmnd)
 {
        struct Scsi_Host *shost = cmnd->device->host;
        struct lpfc_hba *phba = (struct lpfc_hba *)shost->hostdata[0];
@@ -871,9 +986,12 @@ __lpfc_reset_lun_handler(struct scsi_cmnd *cmnd)
        struct lpfc_iocbq *iocbq, *iocbqrsp;
        struct lpfc_rport_data *rdata = cmnd->device->hostdata;
        struct lpfc_nodelist *pnode = rdata->pnode;
+       uint32_t cmd_result = 0, cmd_status = 0;
        int ret = FAILED;
        int cnt, loopcnt;
 
+       lpfc_block_requests(phba);
+       spin_lock_irq(shost->host_lock);
        /*
         * If target is not in a MAPPED state, delay the reset until
         * target is rediscovered or nodev timeout expires.
@@ -891,7 +1009,7 @@ __lpfc_reset_lun_handler(struct scsi_cmnd *cmnd)
                        break;
        }
 
-       lpfc_cmd = lpfc_sli_get_scsi_buf (phba);
+       lpfc_cmd = lpfc_get_scsi_buf (phba);
        if (lpfc_cmd == NULL)
                goto out;
 
@@ -916,26 +1034,28 @@ __lpfc_reset_lun_handler(struct scsi_cmnd *cmnd)
        if (ret == IOCB_SUCCESS)
                ret = SUCCESS;
 
-       lpfc_cmd->result = iocbqrsp->iocb.un.ulpWord[4];
-       lpfc_cmd->status = iocbqrsp->iocb.ulpStatus;
-       if (lpfc_cmd->status == IOSTAT_LOCAL_REJECT)
-               if (lpfc_cmd->result & IOERR_DRVR_MASK)
-                       lpfc_cmd->status = IOSTAT_DRIVER_REJECT;
+
+       cmd_result = iocbqrsp->iocb.un.ulpWord[4];
+       cmd_status = iocbqrsp->iocb.ulpStatus;
+
+       lpfc_sli_release_iocbq(phba, iocbqrsp);
+       lpfc_release_scsi_buf(phba, lpfc_cmd);
 
        /*
-        * All outstanding txcmplq I/Os should have been aborted by the target.
+        * All outstanding txcmplq I/Os should have been aborted by the device.
         * Unfortunately, some targets do not abide by this forcing the driver
         * to double check.
         */
-       lpfc_sli_abort_iocb(phba, &phba->sli.ring[phba->sli.fcp_ring],
-                           cmnd->device->id, cmnd->device->lun, 0,
-                           LPFC_CTX_LUN);
-
+       cnt = lpfc_sli_sum_iocb(phba, &phba->sli.ring[phba->sli.fcp_ring],
+                               cmnd->device->id, cmnd->device->lun,
+                               LPFC_CTX_LUN);
+       if (cnt)
+               lpfc_sli_abort_iocb(phba,
+                                   &phba->sli.ring[phba->sli.fcp_ring],
+                                   cmnd->device->id, cmnd->device->lun,
+                                   0, LPFC_CTX_LUN);
        loopcnt = 0;
-       while((cnt = lpfc_sli_sum_iocb(phba,
-                                      &phba->sli.ring[phba->sli.fcp_ring],
-                                      cmnd->device->id, cmnd->device->lun,
-                                      LPFC_CTX_LUN))) {
+       while(cnt) {
                spin_unlock_irq(phba->host->host_lock);
                schedule_timeout_uninterruptible(LPFC_RESET_WAIT*HZ);
                spin_lock_irq(phba->host->host_lock);
@@ -943,6 +1063,11 @@ __lpfc_reset_lun_handler(struct scsi_cmnd *cmnd)
                if (++loopcnt
                    > (2 * phba->cfg_nodev_tmo)/LPFC_RESET_WAIT)
                        break;
+
+               cnt = lpfc_sli_sum_iocb(phba,
+                                       &phba->sli.ring[phba->sli.fcp_ring],
+                                       cmnd->device->id, cmnd->device->lun,
+                                       LPFC_CTX_LUN);
        }
 
        if (cnt) {
@@ -952,35 +1077,21 @@ __lpfc_reset_lun_handler(struct scsi_cmnd *cmnd)
                ret = FAILED;
        }
 
-       lpfc_sli_release_iocbq(phba, iocbqrsp);
-
 out_free_scsi_buf:
        lpfc_printf_log(phba, KERN_ERR, LOG_FCP,
                        "%d:0713 SCSI layer issued LUN reset (%d, %d) "
                        "Data: x%x x%x x%x\n",
-                       phba->brd_no, lpfc_cmd->pCmd->device->id,
-                       lpfc_cmd->pCmd->device->lun, ret, lpfc_cmd->status,
-                       lpfc_cmd->result);
-       lpfc_release_scsi_buf(phba, lpfc_cmd);
+                       phba->brd_no, cmnd->device->id,cmnd->device->lun,
+                       ret, cmd_status, cmd_result);
+
 out:
+       spin_unlock_irq(shost->host_lock);
+       lpfc_unblock_requests(phba);
        return ret;
 }
 
 static int
-lpfc_reset_lun_handler(struct scsi_cmnd *cmnd)
-{
-       int rc;
-       spin_lock_irq(cmnd->device->host->host_lock);
-       rc = __lpfc_reset_lun_handler(cmnd);
-       spin_unlock_irq(cmnd->device->host->host_lock);
-       return rc;
-}
-
-/*
- * Note: midlayer calls this function with the host_lock held
- */
-static int
-__lpfc_reset_bus_handler(struct scsi_cmnd *cmnd)
+lpfc_reset_bus_handler(struct scsi_cmnd *cmnd)
 {
        struct Scsi_Host *shost = cmnd->device->host;
        struct lpfc_hba *phba = (struct lpfc_hba *)shost->hostdata[0];
@@ -991,7 +1102,10 @@ __lpfc_reset_bus_handler(struct scsi_cmnd *cmnd)
        unsigned int midlayer_id = 0;
        struct lpfc_scsi_buf * lpfc_cmd;
 
-       lpfc_cmd = lpfc_sli_get_scsi_buf (phba);
+       lpfc_block_requests(phba);
+       spin_lock_irq(shost->host_lock);
+
+       lpfc_cmd = lpfc_get_scsi_buf(phba);
        if (lpfc_cmd == NULL)
                goto out;
 
@@ -1022,18 +1136,31 @@ __lpfc_reset_bus_handler(struct scsi_cmnd *cmnd)
                lpfc_cmd->pCmd->device->hostdata = ndlp->rport->dd_data;
                ret = lpfc_scsi_tgt_reset(lpfc_cmd, phba);
                if (ret != SUCCESS) {
-                       lpfc_printf_log(phba, KERN_INFO, LOG_FCP,
+                       lpfc_printf_log(phba, KERN_ERR, LOG_FCP,
                                "%d:0713 Bus Reset on target %d failed\n",
                                phba->brd_no, i);
                        err_count++;
                }
        }
 
+       if (err_count == 0)
+               ret = SUCCESS;
+
+       lpfc_release_scsi_buf(phba, lpfc_cmd);
+
+       /*
+        * All outstanding txcmplq I/Os should have been aborted by
+        * the targets.  Unfortunately, some targets do not abide by
+        * this forcing the driver to double check.
+        */
        cmnd->device->id = midlayer_id;
+       cnt = lpfc_sli_sum_iocb(phba, &phba->sli.ring[phba->sli.fcp_ring],
+                               0, 0, LPFC_CTX_HOST);
+       if (cnt)
+               lpfc_sli_abort_iocb(phba, &phba->sli.ring[phba->sli.fcp_ring],
+                                   0, 0, 0, LPFC_CTX_HOST);
        loopcnt = 0;
-       while((cnt = lpfc_sli_sum_iocb(phba,
-                               &phba->sli.ring[phba->sli.fcp_ring],
-                               0, 0, LPFC_CTX_HOST))) {
+       while(cnt) {
                spin_unlock_irq(phba->host->host_lock);
                schedule_timeout_uninterruptible(LPFC_RESET_WAIT*HZ);
                spin_lock_irq(phba->host->host_lock);
@@ -1041,44 +1168,30 @@ __lpfc_reset_bus_handler(struct scsi_cmnd *cmnd)
                if (++loopcnt
                    > (2 * phba->cfg_nodev_tmo)/LPFC_RESET_WAIT)
                        break;
+
+               cnt = lpfc_sli_sum_iocb(phba,
+                                       &phba->sli.ring[phba->sli.fcp_ring],
+                                       0, 0, LPFC_CTX_HOST);
        }
 
        if (cnt) {
-               /* flush all outstanding commands on the host */
-               i = lpfc_sli_abort_iocb(phba,
-                               &phba->sli.ring[phba->sli.fcp_ring], 0, 0, 0,
-                               LPFC_CTX_HOST);
-
-               lpfc_printf_log(phba, KERN_INFO, LOG_FCP,
+               lpfc_printf_log(phba, KERN_ERR, LOG_FCP,
                   "%d:0715 Bus Reset I/O flush failure: cnt x%x left x%x\n",
                   phba->brd_no, cnt, i);
-       }
-
-       if (cnt == 0)
-               ret = SUCCESS;
-       else
                ret = FAILED;
+       }
 
-       lpfc_release_scsi_buf(phba, lpfc_cmd);
        lpfc_printf_log(phba,
                        KERN_ERR,
                        LOG_FCP,
                        "%d:0714 SCSI layer issued Bus Reset Data: x%x\n",
                        phba->brd_no, ret);
 out:
+       spin_unlock_irq(shost->host_lock);
+       lpfc_unblock_requests(phba);
        return ret;
 }
 
-static int
-lpfc_reset_bus_handler(struct scsi_cmnd *cmnd)
-{
-       int rc;
-       spin_lock_irq(cmnd->device->host->host_lock);
-       rc = __lpfc_reset_bus_handler(cmnd);
-       spin_unlock_irq(cmnd->device->host->host_lock);
-       return rc;
-}
-
 static int
 lpfc_slave_alloc(struct scsi_device *sdev)
 {
@@ -1127,10 +1240,10 @@ lpfc_slave_alloc(struct scsi_device *sdev)
                        break;
                }
 
-               spin_lock_irqsave(phba->host->host_lock, flags);
+               spin_lock_irqsave(&phba->scsi_buf_list_lock, flags);
                phba->total_scsi_bufs++;
                list_add_tail(&scsi_buf->list, &phba->lpfc_scsi_buf_list);
-               spin_unlock_irqrestore(phba->host->host_lock, flags);
+               spin_unlock_irqrestore(&phba->scsi_buf_list_lock, flags);
        }
        return 0;
 }
@@ -1154,6 +1267,12 @@ lpfc_slave_configure(struct scsi_device *sdev)
         */
        rport->dev_loss_tmo = phba->cfg_nodev_tmo + 5;
 
+       if (phba->cfg_poll & ENABLE_FCP_RING_POLLING) {
+               lpfc_sli_poll_fcp_ring(phba);
+               if (phba->cfg_poll & DISABLE_FCP_RING_INT)
+                       lpfc_poll_rearm_timer(phba);
+       }
+
        return 0;
 }
 
index e2c08c5d83fb3d75b605d2596152951baa6114e0..7b785ade8b072ed414a15fb7112e012b4edc73d5 100644 (file)
@@ -886,6 +886,182 @@ lpfc_sli_process_sol_iocb(struct lpfc_hba * phba, struct lpfc_sli_ring * pring,
        return rc;
 }
 
+static void lpfc_sli_rsp_pointers_error(struct lpfc_hba * phba,
+                                       struct lpfc_sli_ring * pring)
+{
+       struct lpfc_pgp *pgp = &phba->slim2p->mbx.us.s2.port[pring->ringno];
+       /*
+        * Ring <ringno> handler: portRspPut <portRspPut> is bigger then
+        * rsp ring <portRspMax>
+        */
+       lpfc_printf_log(phba, KERN_ERR, LOG_SLI,
+                       "%d:0312 Ring %d handler: portRspPut %d "
+                       "is bigger then rsp ring %d\n",
+                       phba->brd_no, pring->ringno,
+                       le32_to_cpu(pgp->rspPutInx),
+                       pring->numRiocb);
+
+       phba->hba_state = LPFC_HBA_ERROR;
+
+       /*
+        * All error attention handlers are posted to
+        * worker thread
+        */
+       phba->work_ha |= HA_ERATT;
+       phba->work_hs = HS_FFER3;
+       if (phba->work_wait)
+               wake_up(phba->work_wait);
+
+       return;
+}
+
+void lpfc_sli_poll_fcp_ring(struct lpfc_hba * phba)
+{
+       struct lpfc_sli      * psli   = &phba->sli;
+       struct lpfc_sli_ring * pring = &psli->ring[LPFC_FCP_RING];
+       IOCB_t *irsp = NULL;
+       IOCB_t *entry = NULL;
+       struct lpfc_iocbq *cmdiocbq = NULL;
+       struct lpfc_iocbq rspiocbq;
+       struct lpfc_pgp *pgp;
+       uint32_t status;
+       uint32_t portRspPut, portRspMax;
+       int type;
+       uint32_t rsp_cmpl = 0;
+       void __iomem *to_slim;
+       uint32_t ha_copy;
+
+       pring->stats.iocb_event++;
+
+       /* The driver assumes SLI-2 mode */
+       pgp =  &phba->slim2p->mbx.us.s2.port[pring->ringno];
+
+       /*
+        * The next available response entry should never exceed the maximum
+        * entries.  If it does, treat it as an adapter hardware error.
+        */
+       portRspMax = pring->numRiocb;
+       portRspPut = le32_to_cpu(pgp->rspPutInx);
+       if (unlikely(portRspPut >= portRspMax)) {
+               lpfc_sli_rsp_pointers_error(phba, pring);
+               return;
+       }
+
+       rmb();
+       while (pring->rspidx != portRspPut) {
+
+               entry = IOCB_ENTRY(pring->rspringaddr, pring->rspidx);
+
+               if (++pring->rspidx >= portRspMax)
+                       pring->rspidx = 0;
+
+               lpfc_sli_pcimem_bcopy((uint32_t *) entry,
+                                     (uint32_t *) &rspiocbq.iocb,
+                                     sizeof (IOCB_t));
+               irsp = &rspiocbq.iocb;
+               type = lpfc_sli_iocb_cmd_type(irsp->ulpCommand & CMD_IOCB_MASK);
+               pring->stats.iocb_rsp++;
+               rsp_cmpl++;
+
+               if (unlikely(irsp->ulpStatus)) {
+                       /* Rsp ring <ringno> error: IOCB */
+                       lpfc_printf_log(phba, KERN_WARNING, LOG_SLI,
+                                       "%d:0326 Rsp Ring %d error: IOCB Data: "
+                                       "x%x x%x x%x x%x x%x x%x x%x x%x\n",
+                                       phba->brd_no, pring->ringno,
+                                       irsp->un.ulpWord[0],
+                                       irsp->un.ulpWord[1],
+                                       irsp->un.ulpWord[2],
+                                       irsp->un.ulpWord[3],
+                                       irsp->un.ulpWord[4],
+                                       irsp->un.ulpWord[5],
+                                       *(((uint32_t *) irsp) + 6),
+                                       *(((uint32_t *) irsp) + 7));
+               }
+
+               switch (type) {
+               case LPFC_ABORT_IOCB:
+               case LPFC_SOL_IOCB:
+                       /*
+                        * Idle exchange closed via ABTS from port.  No iocb
+                        * resources need to be recovered.
+                        */
+                       if (unlikely(irsp->ulpCommand == CMD_XRI_ABORTED_CX)) {
+                               printk(KERN_INFO "%s: IOCB cmd 0x%x processed."
+                                      " Skipping completion\n", __FUNCTION__,
+                                      irsp->ulpCommand);
+                               break;
+                       }
+
+                       cmdiocbq = lpfc_sli_iocbq_lookup(phba, pring,
+                                                        &rspiocbq);
+                       if ((cmdiocbq) && (cmdiocbq->iocb_cmpl)) {
+                               (cmdiocbq->iocb_cmpl)(phba, cmdiocbq,
+                                                     &rspiocbq);
+                       }
+                       break;
+               default:
+                       if (irsp->ulpCommand == CMD_ADAPTER_MSG) {
+                               char adaptermsg[LPFC_MAX_ADPTMSG];
+                               memset(adaptermsg, 0, LPFC_MAX_ADPTMSG);
+                               memcpy(&adaptermsg[0], (uint8_t *) irsp,
+                                      MAX_MSG_DATA);
+                               dev_warn(&((phba->pcidev)->dev), "lpfc%d: %s",
+                                        phba->brd_no, adaptermsg);
+                       } else {
+                               /* Unknown IOCB command */
+                               lpfc_printf_log(phba, KERN_ERR, LOG_SLI,
+                                               "%d:0321 Unknown IOCB command "
+                                               "Data: x%x, x%x x%x x%x x%x\n",
+                                               phba->brd_no, type,
+                                               irsp->ulpCommand,
+                                               irsp->ulpStatus,
+                                               irsp->ulpIoTag,
+                                               irsp->ulpContext);
+                       }
+                       break;
+               }
+
+               /*
+                * The response IOCB has been processed.  Update the ring
+                * pointer in SLIM.  If the port response put pointer has not
+                * been updated, sync the pgp->rspPutInx and fetch the new port
+                * response put pointer.
+                */
+               to_slim = phba->MBslimaddr +
+                       (SLIMOFF + (pring->ringno * 2) + 1) * 4;
+               writeb(pring->rspidx, to_slim);
+
+               if (pring->rspidx == portRspPut)
+                       portRspPut = le32_to_cpu(pgp->rspPutInx);
+       }
+
+       ha_copy = readl(phba->HAregaddr);
+       ha_copy >>= (LPFC_FCP_RING * 4);
+
+       if ((rsp_cmpl > 0) && (ha_copy & HA_R0RE_REQ)) {
+               pring->stats.iocb_rsp_full++;
+               status = ((CA_R0ATT | CA_R0RE_RSP) << (LPFC_FCP_RING * 4));
+               writel(status, phba->CAregaddr);
+               readl(phba->CAregaddr);
+       }
+       if ((ha_copy & HA_R0CE_RSP) &&
+           (pring->flag & LPFC_CALL_RING_AVAILABLE)) {
+               pring->flag &= ~LPFC_CALL_RING_AVAILABLE;
+               pring->stats.iocb_cmd_empty++;
+
+               /* Force update of the local copy of cmdGetInx */
+               pring->local_getidx = le32_to_cpu(pgp->cmdGetInx);
+               lpfc_sli_resume_iocb(phba, pring);
+
+               if ((pring->lpfc_sli_cmd_available))
+                       (pring->lpfc_sli_cmd_available) (phba, pring);
+
+       }
+
+       return;
+}
+
 /*
  * This routine presumes LPFC_FCP_RING handling and doesn't bother
  * to check it explicitly.
@@ -917,24 +1093,7 @@ lpfc_sli_handle_fast_ring_event(struct lpfc_hba * phba,
        portRspMax = pring->numRiocb;
        portRspPut = le32_to_cpu(pgp->rspPutInx);
        if (unlikely(portRspPut >= portRspMax)) {
-               /*
-                * Ring <ringno> handler: portRspPut <portRspPut> is bigger then
-                * rsp ring <portRspMax>
-                */
-               lpfc_printf_log(phba, KERN_ERR, LOG_SLI,
-                               "%d:0312 Ring %d handler: portRspPut %d "
-                               "is bigger then rsp ring %d\n",
-                               phba->brd_no, pring->ringno, portRspPut,
-                               portRspMax);
-
-               phba->hba_state = LPFC_HBA_ERROR;
-
-               /* All error attention handlers are posted to worker thread */
-               phba->work_ha |= HA_ERATT;
-               phba->work_hs = HS_FFER3;
-               if (phba->work_wait)
-                       wake_up(phba->work_wait);
-
+               lpfc_sli_rsp_pointers_error(phba, pring);
                spin_unlock_irqrestore(phba->host->host_lock, iflag);
                return 1;
        }
@@ -947,6 +1106,10 @@ lpfc_sli_handle_fast_ring_event(struct lpfc_hba * phba,
                 * network byte order and pci byte orders are different.
                 */
                entry = IOCB_ENTRY(pring->rspringaddr, pring->rspidx);
+
+               if (++pring->rspidx >= portRspMax)
+                       pring->rspidx = 0;
+
                lpfc_sli_pcimem_bcopy((uint32_t *) entry,
                                      (uint32_t *) &rspiocbq.iocb,
                                      sizeof (IOCB_t));
@@ -1020,9 +1183,6 @@ lpfc_sli_handle_fast_ring_event(struct lpfc_hba * phba,
                 * been updated, sync the pgp->rspPutInx and fetch the new port
                 * response put pointer.
                 */
-               if (++pring->rspidx >= portRspMax)
-                       pring->rspidx = 0;
-
                to_slim = phba->MBslimaddr +
                        (SLIMOFF + (pring->ringno * 2) + 1) * 4;
                writel(pring->rspidx, to_slim);
@@ -2615,6 +2775,7 @@ lpfc_sli_issue_iocb_wait(struct lpfc_hba * phba,
        DECLARE_WAIT_QUEUE_HEAD(done_q);
        long timeleft, timeout_req = 0;
        int retval = IOCB_SUCCESS;
+       uint32_t creg_val;
 
        /*
         * If the caller has provided a response iocbq buffer, then context2
@@ -2630,6 +2791,13 @@ lpfc_sli_issue_iocb_wait(struct lpfc_hba * phba,
        piocb->context_un.wait_queue = &done_q;
        piocb->iocb_flag &= ~LPFC_IO_WAKE;
 
+       if (phba->cfg_poll & DISABLE_FCP_RING_INT) {
+               creg_val = readl(phba->HCregaddr);
+               creg_val |= (HC_R0INT_ENA << LPFC_FCP_RING);
+               writel(creg_val, phba->HCregaddr);
+               readl(phba->HCregaddr); /* flush */
+       }
+
        retval = lpfc_sli_issue_iocb(phba, pring, piocb, 0);
        if (retval == IOCB_SUCCESS) {
                timeout_req = timeout * HZ;
@@ -2663,6 +2831,13 @@ lpfc_sli_issue_iocb_wait(struct lpfc_hba * phba,
                retval = IOCB_ERROR;
        }
 
+       if (phba->cfg_poll & DISABLE_FCP_RING_INT) {
+               creg_val = readl(phba->HCregaddr);
+               creg_val &= ~(HC_R0INT_ENA << LPFC_FCP_RING);
+               writel(creg_val, phba->HCregaddr);
+               readl(phba->HCregaddr); /* flush */
+       }
+
        if (prspiocbq)
                piocb->context2 = NULL;
 
index 4f0466fbd5f277045432f13af2657af224c227e5..fa681a934ffe112e1cf3b600aa506e68261b1959 100644 (file)
@@ -18,7 +18,7 @@
  * included with this package.                                     *
  *******************************************************************/
 
-#define LPFC_DRIVER_VERSION "8.1.0"
+#define LPFC_DRIVER_VERSION "8.1.1"
 
 #define LPFC_DRIVER_NAME "lpfc"
 
index 578143e93a6f3b6c8afa4d64e1b7cda7e7a05515..4a6feb1e5e3d1249748cff23b770eb86412bb156 100644 (file)
@@ -2,7 +2,7 @@
  *
  *                     Linux MegaRAID device driver
  *
- * Copyright Â© 2002  LSI Logic Corporation.
+ * Copyright (c) 2002  LSI Logic Corporation.
  *
  *        This program is free software; you can redistribute it and/or
  *        modify it under the terms of the GNU General Public License
@@ -17,7 +17,8 @@
  * Copyright (c) 2003  Christoph Hellwig  <hch@lst.de>
  *       - new-style, hotplug-aware pci probing and scsi registration
  *
- * Version : v2.00.3 (Feb 19, 2003) - Atul Mukker <Atul.Mukker@lsil.com>
+ * Version : v2.00.4 Mon Nov 14 14:02:43 EST 2005 - Seokmann Ju
+ *                                             <Seokmann.Ju@lsil.com>
  *
  * Description: Linux device driver for LSI Logic MegaRAID controller
  *
 
 #include "megaraid.h"
 
-#define MEGARAID_MODULE_VERSION "2.00.3"
+#define MEGARAID_MODULE_VERSION "2.00.4"
 
-MODULE_AUTHOR ("LSI Logic Corporation");
-MODULE_DESCRIPTION ("LSI Logic MegaRAID driver");
+MODULE_AUTHOR ("sju@lsil.com");
+MODULE_DESCRIPTION ("LSI Logic MegaRAID legacy driver");
 MODULE_LICENSE ("GPL");
 MODULE_VERSION(MEGARAID_MODULE_VERSION);
 
@@ -4553,7 +4554,7 @@ mega_internal_done(Scsi_Cmnd *scmd)
 static struct scsi_host_template megaraid_template = {
        .module                         = THIS_MODULE,
        .name                           = "MegaRAID",
-       .proc_name                      = "megaraid",
+       .proc_name                      = "megaraid_legacy",
        .info                           = megaraid_info,
        .queuecommand                   = megaraid_queue,       
        .bios_param                     = megaraid_biosparam,
@@ -5037,22 +5038,12 @@ megaraid_shutdown(struct pci_dev *pdev)
 }
 
 static struct pci_device_id megaraid_pci_tbl[] = {
-       {PCI_VENDOR_ID_DELL, PCI_DEVICE_ID_DISCOVERY,
-               PCI_ANY_ID, PCI_ANY_ID, 0, 0, 0},
-       {PCI_VENDOR_ID_DELL, PCI_DEVICE_ID_PERC4_DI,
-               PCI_ANY_ID, PCI_ANY_ID, 0, 0, BOARD_64BIT},
-       {PCI_VENDOR_ID_LSI_LOGIC, PCI_DEVICE_ID_PERC4_QC_VERDE,
-               PCI_ANY_ID, PCI_ANY_ID, 0, 0, BOARD_64BIT},
        {PCI_VENDOR_ID_AMI, PCI_DEVICE_ID_AMI_MEGARAID,
                PCI_ANY_ID, PCI_ANY_ID, 0, 0, 0},
        {PCI_VENDOR_ID_AMI, PCI_DEVICE_ID_AMI_MEGARAID2,
                PCI_ANY_ID, PCI_ANY_ID, 0, 0, 0},
-       {PCI_VENDOR_ID_AMI, PCI_DEVICE_ID_AMI_MEGARAID3,
-               PCI_ANY_ID, PCI_ANY_ID, 0, 0, 0},
        {PCI_VENDOR_ID_INTEL, PCI_DEVICE_ID_AMI_MEGARAID3,
                PCI_ANY_ID, PCI_ANY_ID, 0, 0, 0},
-       {PCI_VENDOR_ID_LSI_LOGIC, PCI_DEVICE_ID_AMI_MEGARAID3,
-               PCI_ANY_ID, PCI_ANY_ID, 0, 0, 0},
        {0,}
 };
 MODULE_DEVICE_TABLE(pci, megaraid_pci_tbl);
@@ -5095,7 +5086,7 @@ static int __init megaraid_init(void)
         * First argument (major) to register_chrdev implies a dynamic
         * major number allocation.
         */
-       major = register_chrdev(0, "megadev", &megadev_fops);
+       major = register_chrdev(0, "megadev_legacy", &megadev_fops);
        if (!major) {
                printk(KERN_WARNING
                                "megaraid: failed to register char device\n");
@@ -5109,7 +5100,7 @@ static void __exit megaraid_exit(void)
        /*
         * Unregister the character device interface to the driver.
         */
-       unregister_chrdev(major, "megadev");
+       unregister_chrdev(major, "megadev_legacy");
 
        pci_unregister_driver(&megaraid_pci_driver);
 
index 7363e12663acab0a92711ec59569b7014b0ba456..17419e30ffc87aeabdaa58981334450b680b3dc6 100644 (file)
@@ -64,7 +64,6 @@ config MEGARAID_MAILBOX
        To compile this driver as a module, choose M here: the
        module will be called megaraid_mbox
 
-if MEGARAID_NEWGEN=n
 config MEGARAID_LEGACY
        tristate "LSI Logic Legacy MegaRAID Driver"
        depends on PCI && SCSI
@@ -75,7 +74,6 @@ config MEGARAID_LEGACY
 
        To compile this driver as a module, choose M here: the
        module will be called megaraid
-endif
 
 config MEGARAID_SAS
        tristate "LSI Logic MegaRAID SAS RAID Module"
index 4b5d420d2f4d36c017e01a3541d7d277c890f67b..d18a4bc2498c5271be970ed2c9d8d77dee0e6a28 100644 (file)
  *        2 of the License, or (at your option) any later version.
  *
  * FILE                : megaraid_mbox.c
- * Version     : v2.20.4.6 (Mar 07 2005)
+ * Version     : v2.20.4.7 (Nov 14 2005)
  *
  * Authors:
  *     Atul Mukker             <Atul.Mukker@lsil.com>
  *     Sreenivas Bagalkote     <Sreenivas.Bagalkote@lsil.com>
  *     Manoj Jose              <Manoj.Jose@lsil.com>
+ *     Seokmann Ju             <Seokmann.Ju@lsil.com>
  *
  * List of supported controllers
  *
@@ -136,7 +137,7 @@ static int wait_till_fw_empty(adapter_t *);
 
 
 
-MODULE_AUTHOR("LSI Logic Corporation");
+MODULE_AUTHOR("sju@lsil.com");
 MODULE_DESCRIPTION("LSI Logic MegaRAID Mailbox Driver");
 MODULE_LICENSE("GPL");
 MODULE_VERSION(MEGARAID_VERSION);
@@ -278,68 +279,14 @@ static struct pci_device_id pci_id_table_g[] =  {
        {
                PCI_VENDOR_ID_AMI,
                PCI_DEVICE_ID_AMI_MEGARAID3,
-               PCI_VENDOR_ID_DELL,
-               PCI_SUBSYS_ID_PERC3_QC,
-       },
-       {
-               PCI_VENDOR_ID_AMI,
-               PCI_DEVICE_ID_AMI_MEGARAID3,
-               PCI_VENDOR_ID_DELL,
-               PCI_SUBSYS_ID_PERC3_DC,
-       },
-       {
-               PCI_VENDOR_ID_AMI,
-               PCI_DEVICE_ID_AMI_MEGARAID3,
-               PCI_VENDOR_ID_DELL,
-               PCI_SUBSYS_ID_PERC3_SC,
-       },
-       {
-               PCI_VENDOR_ID_AMI,
-               PCI_DEVICE_ID_AMI_MEGARAID3,
-               PCI_VENDOR_ID_AMI,
-               PCI_SUBSYS_ID_PERC3_SC,
-       },
-       {
-               PCI_VENDOR_ID_AMI,
-               PCI_DEVICE_ID_AMI_MEGARAID3,
-               PCI_VENDOR_ID_AMI,
-               PCI_SUBSYS_ID_PERC3_DC,
-       },
-       {
-               PCI_VENDOR_ID_LSI_LOGIC,
-               PCI_DEVICE_ID_MEGARAID_SCSI_320_0,
-               PCI_VENDOR_ID_LSI_LOGIC,
-               PCI_SUBSYS_ID_MEGARAID_SCSI_320_0,
-       },
-       {
-               PCI_VENDOR_ID_LSI_LOGIC,
-               PCI_DEVICE_ID_MEGARAID_SCSI_320_1,
-               PCI_VENDOR_ID_LSI_LOGIC,
-               PCI_SUBSYS_ID_MEGARAID_SCSI_320_1,
-       },
-       {
-               PCI_VENDOR_ID_LSI_LOGIC,
-               PCI_DEVICE_ID_MEGARAID_SCSI_320_2,
-               PCI_VENDOR_ID_LSI_LOGIC,
-               PCI_SUBSYS_ID_MEGARAID_SCSI_320_2,
-       },
-       {
-               PCI_VENDOR_ID_LSI_LOGIC,
-               PCI_DEVICE_ID_MEGARAID_I4_133_RAID,
-               PCI_VENDOR_ID_LSI_LOGIC,
-               PCI_SUBSYS_ID_MEGARAID_I4_133_RAID,
-       },
-       {
-               PCI_VENDOR_ID_LSI_LOGIC,
-               PCI_DEVICE_ID_MEGARAID_SATA_150_4,
-               PCI_VENDOR_ID_LSI_LOGIC,
-               PCI_SUBSYS_ID_MEGARAID_SATA_150_4,
+               PCI_ANY_ID,
+               PCI_ANY_ID,
        },
        {
                PCI_VENDOR_ID_LSI_LOGIC,
-               PCI_DEVICE_ID_MEGARAID_SATA_150_6,
-               PCI_VENDOR_ID_LSI_LOGIC,
-               PCI_SUBSYS_ID_MEGARAID_SATA_150_6,
+               PCI_DEVICE_ID_AMI_MEGARAID3,
+               PCI_ANY_ID,
+               PCI_ANY_ID,
        },
        {
                PCI_VENDOR_ID_LSI_LOGIC,
@@ -347,18 +294,6 @@ static struct pci_device_id pci_id_table_g[] =  {
                PCI_ANY_ID,
                PCI_ANY_ID,
        },
-       {
-               PCI_VENDOR_ID_LSI_LOGIC,
-               PCI_DEVICE_ID_INTEL_RAID_SRCS16,
-               PCI_VENDOR_ID_INTEL,
-               PCI_SUBSYS_ID_INTEL_RAID_SRCS16,
-       },
-       {
-               PCI_VENDOR_ID_LSI_LOGIC,
-               PCI_DEVICE_ID_INTEL_RAID_SRCU41L_LAKE_SHETEK,
-               PCI_VENDOR_ID_INTEL,
-               PCI_SUBSYS_ID_INTEL_RAID_SRCU41L_LAKE_SHETEK,
-       },
        {0}     /* Terminating entry */
 };
 MODULE_DEVICE_TABLE(pci, pci_id_table_g);
@@ -2985,6 +2920,7 @@ mbox_post_sync_cmd_fast(adapter_t *adapter, uint8_t raw_mbox[])
 
        for (i = 0; i < 0xFFFFF; i++) {
                if (mbox->numstatus != 0xFF) break;
+               rmb();
        }
 
        if (i == 0xFFFFF) {
index 644b91bdb0282cfd0269c569fc3bdeaa04719d2f..882fb1a0b57560ca493fc6cc7e16cb2d4e1a0d66 100644 (file)
@@ -21,8 +21,8 @@
 #include "megaraid_ioctl.h"
 
 
-#define MEGARAID_VERSION       "2.20.4.6"
-#define MEGARAID_EXT_VERSION   "(Release Date: Mon Mar 07 12:27:22 EST 2005)"
+#define MEGARAID_VERSION       "2.20.4.7"
+#define MEGARAID_EXT_VERSION   "(Release Date: Mon Nov 14 12:27:22 EST 2005)"
 
 
 /*
index 243470936fab4e18b1aeab916b023a3040bedb07..32350707b940d93234a2f1f5d337437b40967d3f 100644 (file)
 #define NAME53C                        "ncr53c"
 #define NAME53C8XX             "ncr53c8xx"
 
-#include "sym53c8xx_comm.h"
+
+/*==========================================================
+**
+**     Debugging tags
+**
+**==========================================================
+*/
+
+#define DEBUG_ALLOC    (0x0001)
+#define DEBUG_PHASE    (0x0002)
+#define DEBUG_QUEUE    (0x0008)
+#define DEBUG_RESULT   (0x0010)
+#define DEBUG_POINTER  (0x0020)
+#define DEBUG_SCRIPT   (0x0040)
+#define DEBUG_TINY     (0x0080)
+#define DEBUG_TIMING   (0x0100)
+#define DEBUG_NEGO     (0x0200)
+#define DEBUG_TAGS     (0x0400)
+#define DEBUG_SCATTER  (0x0800)
+#define DEBUG_IC        (0x1000)
+
+/*
+**    Enable/Disable debug messages.
+**    Can be changed at runtime too.
+*/
+
+#ifdef SCSI_NCR_DEBUG_INFO_SUPPORT
+static int ncr_debug = SCSI_NCR_DEBUG_FLAGS;
+       #define DEBUG_FLAGS ncr_debug
+#else
+       #define DEBUG_FLAGS     SCSI_NCR_DEBUG_FLAGS
+#endif
+
+static inline struct list_head *ncr_list_pop(struct list_head *head)
+{
+       if (!list_empty(head)) {
+               struct list_head *elem = head->next;
+
+               list_del(elem);
+               return elem;
+       }
+
+       return NULL;
+}
+
+/*==========================================================
+**
+**     Simple power of two buddy-like allocator.
+**
+**     This simple code is not intended to be fast, but to 
+**     provide power of 2 aligned memory allocations.
+**     Since the SCRIPTS processor only supplies 8 bit 
+**     arithmetic, this allocator allows simple and fast 
+**     address calculations  from the SCRIPTS code.
+**     In addition, cache line alignment is guaranteed for 
+**     power of 2 cache line size.
+**     Enhanced in linux-2.3.44 to provide a memory pool 
+**     per pcidev to support dynamic dma mapping. (I would 
+**     have preferred a real bus astraction, btw).
+**
+**==========================================================
+*/
+
+#define MEMO_SHIFT     4       /* 16 bytes minimum memory chunk */
+#if PAGE_SIZE >= 8192
+#define MEMO_PAGE_ORDER        0       /* 1 PAGE  maximum */
+#else
+#define MEMO_PAGE_ORDER        1       /* 2 PAGES maximum */
+#endif
+#define MEMO_FREE_UNUSED       /* Free unused pages immediately */
+#define MEMO_WARN      1
+#define MEMO_GFP_FLAGS GFP_ATOMIC
+#define MEMO_CLUSTER_SHIFT     (PAGE_SHIFT+MEMO_PAGE_ORDER)
+#define MEMO_CLUSTER_SIZE      (1UL << MEMO_CLUSTER_SHIFT)
+#define MEMO_CLUSTER_MASK      (MEMO_CLUSTER_SIZE-1)
+
+typedef u_long m_addr_t;       /* Enough bits to bit-hack addresses */
+typedef struct device *m_bush_t;       /* Something that addresses DMAable */
+
+typedef struct m_link {                /* Link between free memory chunks */
+       struct m_link *next;
+} m_link_s;
+
+typedef struct m_vtob {                /* Virtual to Bus address translation */
+       struct m_vtob *next;
+       m_addr_t vaddr;
+       m_addr_t baddr;
+} m_vtob_s;
+#define VTOB_HASH_SHIFT                5
+#define VTOB_HASH_SIZE         (1UL << VTOB_HASH_SHIFT)
+#define VTOB_HASH_MASK         (VTOB_HASH_SIZE-1)
+#define VTOB_HASH_CODE(m)      \
+       ((((m_addr_t) (m)) >> MEMO_CLUSTER_SHIFT) & VTOB_HASH_MASK)
+
+typedef struct m_pool {                /* Memory pool of a given kind */
+       m_bush_t bush;
+       m_addr_t (*getp)(struct m_pool *);
+       void (*freep)(struct m_pool *, m_addr_t);
+       int nump;
+       m_vtob_s *(vtob[VTOB_HASH_SIZE]);
+       struct m_pool *next;
+       struct m_link h[PAGE_SHIFT-MEMO_SHIFT+MEMO_PAGE_ORDER+1];
+} m_pool_s;
+
+static void *___m_alloc(m_pool_s *mp, int size)
+{
+       int i = 0;
+       int s = (1 << MEMO_SHIFT);
+       int j;
+       m_addr_t a;
+       m_link_s *h = mp->h;
+
+       if (size > (PAGE_SIZE << MEMO_PAGE_ORDER))
+               return NULL;
+
+       while (size > s) {
+               s <<= 1;
+               ++i;
+       }
+
+       j = i;
+       while (!h[j].next) {
+               if (s == (PAGE_SIZE << MEMO_PAGE_ORDER)) {
+                       h[j].next = (m_link_s *)mp->getp(mp);
+                       if (h[j].next)
+                               h[j].next->next = NULL;
+                       break;
+               }
+               ++j;
+               s <<= 1;
+       }
+       a = (m_addr_t) h[j].next;
+       if (a) {
+               h[j].next = h[j].next->next;
+               while (j > i) {
+                       j -= 1;
+                       s >>= 1;
+                       h[j].next = (m_link_s *) (a+s);
+                       h[j].next->next = NULL;
+               }
+       }
+#ifdef DEBUG
+       printk("___m_alloc(%d) = %p\n", size, (void *) a);
+#endif
+       return (void *) a;
+}
+
+static void ___m_free(m_pool_s *mp, void *ptr, int size)
+{
+       int i = 0;
+       int s = (1 << MEMO_SHIFT);
+       m_link_s *q;
+       m_addr_t a, b;
+       m_link_s *h = mp->h;
+
+#ifdef DEBUG
+       printk("___m_free(%p, %d)\n", ptr, size);
+#endif
+
+       if (size > (PAGE_SIZE << MEMO_PAGE_ORDER))
+               return;
+
+       while (size > s) {
+               s <<= 1;
+               ++i;
+       }
+
+       a = (m_addr_t) ptr;
+
+       while (1) {
+#ifdef MEMO_FREE_UNUSED
+               if (s == (PAGE_SIZE << MEMO_PAGE_ORDER)) {
+                       mp->freep(mp, a);
+                       break;
+               }
+#endif
+               b = a ^ s;
+               q = &h[i];
+               while (q->next && q->next != (m_link_s *) b) {
+                       q = q->next;
+               }
+               if (!q->next) {
+                       ((m_link_s *) a)->next = h[i].next;
+                       h[i].next = (m_link_s *) a;
+                       break;
+               }
+               q->next = q->next->next;
+               a = a & b;
+               s <<= 1;
+               ++i;
+       }
+}
+
+static DEFINE_SPINLOCK(ncr53c8xx_lock);
+
+static void *__m_calloc2(m_pool_s *mp, int size, char *name, int uflags)
+{
+       void *p;
+
+       p = ___m_alloc(mp, size);
+
+       if (DEBUG_FLAGS & DEBUG_ALLOC)
+               printk ("new %-10s[%4d] @%p.\n", name, size, p);
+
+       if (p)
+               memset(p, 0, size);
+       else if (uflags & MEMO_WARN)
+               printk (NAME53C8XX ": failed to allocate %s[%d]\n", name, size);
+
+       return p;
+}
+
+#define __m_calloc(mp, s, n)   __m_calloc2(mp, s, n, MEMO_WARN)
+
+static void __m_free(m_pool_s *mp, void *ptr, int size, char *name)
+{
+       if (DEBUG_FLAGS & DEBUG_ALLOC)
+               printk ("freeing %-10s[%4d] @%p.\n", name, size, ptr);
+
+       ___m_free(mp, ptr, size);
+
+}
+
+/*
+ * With pci bus iommu support, we use a default pool of unmapped memory 
+ * for memory we donnot need to DMA from/to and one pool per pcidev for 
+ * memory accessed by the PCI chip. `mp0' is the default not DMAable pool.
+ */
+
+static m_addr_t ___mp0_getp(m_pool_s *mp)
+{
+       m_addr_t m = __get_free_pages(MEMO_GFP_FLAGS, MEMO_PAGE_ORDER);
+       if (m)
+               ++mp->nump;
+       return m;
+}
+
+static void ___mp0_freep(m_pool_s *mp, m_addr_t m)
+{
+       free_pages(m, MEMO_PAGE_ORDER);
+       --mp->nump;
+}
+
+static m_pool_s mp0 = {NULL, ___mp0_getp, ___mp0_freep};
+
+/*
+ * DMAable pools.
+ */
+
+/*
+ * With pci bus iommu support, we maintain one pool per pcidev and a 
+ * hashed reverse table for virtual to bus physical address translations.
+ */
+static m_addr_t ___dma_getp(m_pool_s *mp)
+{
+       m_addr_t vp;
+       m_vtob_s *vbp;
+
+       vbp = __m_calloc(&mp0, sizeof(*vbp), "VTOB");
+       if (vbp) {
+               dma_addr_t daddr;
+               vp = (m_addr_t) dma_alloc_coherent(mp->bush,
+                                               PAGE_SIZE<<MEMO_PAGE_ORDER,
+                                               &daddr, GFP_ATOMIC);
+               if (vp) {
+                       int hc = VTOB_HASH_CODE(vp);
+                       vbp->vaddr = vp;
+                       vbp->baddr = daddr;
+                       vbp->next = mp->vtob[hc];
+                       mp->vtob[hc] = vbp;
+                       ++mp->nump;
+                       return vp;
+               }
+       }
+       if (vbp)
+               __m_free(&mp0, vbp, sizeof(*vbp), "VTOB");
+       return 0;
+}
+
+static void ___dma_freep(m_pool_s *mp, m_addr_t m)
+{
+       m_vtob_s **vbpp, *vbp;
+       int hc = VTOB_HASH_CODE(m);
+
+       vbpp = &mp->vtob[hc];
+       while (*vbpp && (*vbpp)->vaddr != m)
+               vbpp = &(*vbpp)->next;
+       if (*vbpp) {
+               vbp = *vbpp;
+               *vbpp = (*vbpp)->next;
+               dma_free_coherent(mp->bush, PAGE_SIZE<<MEMO_PAGE_ORDER,
+                                 (void *)vbp->vaddr, (dma_addr_t)vbp->baddr);
+               __m_free(&mp0, vbp, sizeof(*vbp), "VTOB");
+               --mp->nump;
+       }
+}
+
+static inline m_pool_s *___get_dma_pool(m_bush_t bush)
+{
+       m_pool_s *mp;
+       for (mp = mp0.next; mp && mp->bush != bush; mp = mp->next);
+       return mp;
+}
+
+static m_pool_s *___cre_dma_pool(m_bush_t bush)
+{
+       m_pool_s *mp;
+       mp = __m_calloc(&mp0, sizeof(*mp), "MPOOL");
+       if (mp) {
+               memset(mp, 0, sizeof(*mp));
+               mp->bush = bush;
+               mp->getp = ___dma_getp;
+               mp->freep = ___dma_freep;
+               mp->next = mp0.next;
+               mp0.next = mp;
+       }
+       return mp;
+}
+
+static void ___del_dma_pool(m_pool_s *p)
+{
+       struct m_pool **pp = &mp0.next;
+
+       while (*pp && *pp != p)
+               pp = &(*pp)->next;
+       if (*pp) {
+               *pp = (*pp)->next;
+               __m_free(&mp0, p, sizeof(*p), "MPOOL");
+       }
+}
+
+static void *__m_calloc_dma(m_bush_t bush, int size, char *name)
+{
+       u_long flags;
+       struct m_pool *mp;
+       void *m = NULL;
+
+       spin_lock_irqsave(&ncr53c8xx_lock, flags);
+       mp = ___get_dma_pool(bush);
+       if (!mp)
+               mp = ___cre_dma_pool(bush);
+       if (mp)
+               m = __m_calloc(mp, size, name);
+       if (mp && !mp->nump)
+               ___del_dma_pool(mp);
+       spin_unlock_irqrestore(&ncr53c8xx_lock, flags);
+
+       return m;
+}
+
+static void __m_free_dma(m_bush_t bush, void *m, int size, char *name)
+{
+       u_long flags;
+       struct m_pool *mp;
+
+       spin_lock_irqsave(&ncr53c8xx_lock, flags);
+       mp = ___get_dma_pool(bush);
+       if (mp)
+               __m_free(mp, m, size, name);
+       if (mp && !mp->nump)
+               ___del_dma_pool(mp);
+       spin_unlock_irqrestore(&ncr53c8xx_lock, flags);
+}
+
+static m_addr_t __vtobus(m_bush_t bush, void *m)
+{
+       u_long flags;
+       m_pool_s *mp;
+       int hc = VTOB_HASH_CODE(m);
+       m_vtob_s *vp = NULL;
+       m_addr_t a = ((m_addr_t) m) & ~MEMO_CLUSTER_MASK;
+
+       spin_lock_irqsave(&ncr53c8xx_lock, flags);
+       mp = ___get_dma_pool(bush);
+       if (mp) {
+               vp = mp->vtob[hc];
+               while (vp && (m_addr_t) vp->vaddr != a)
+                       vp = vp->next;
+       }
+       spin_unlock_irqrestore(&ncr53c8xx_lock, flags);
+       return vp ? vp->baddr + (((m_addr_t) m) - a) : 0;
+}
+
+#define _m_calloc_dma(np, s, n)                __m_calloc_dma(np->dev, s, n)
+#define _m_free_dma(np, p, s, n)       __m_free_dma(np->dev, p, s, n)
+#define m_calloc_dma(s, n)             _m_calloc_dma(np, s, n)
+#define m_free_dma(p, s, n)            _m_free_dma(np, p, s, n)
+#define _vtobus(np, p)                 __vtobus(np->dev, p)
+#define vtobus(p)                      _vtobus(np, p)
+
+/*
+ *  Deal with DMA mapping/unmapping.
+ */
+
+/* To keep track of the dma mapping (sg/single) that has been set */
+#define __data_mapped  SCp.phase
+#define __data_mapping SCp.have_data_in
+
+static void __unmap_scsi_data(struct device *dev, struct scsi_cmnd *cmd)
+{
+       switch(cmd->__data_mapped) {
+       case 2:
+               dma_unmap_sg(dev, cmd->buffer, cmd->use_sg,
+                               cmd->sc_data_direction);
+               break;
+       case 1:
+               dma_unmap_single(dev, cmd->__data_mapping,
+                                cmd->request_bufflen,
+                                cmd->sc_data_direction);
+               break;
+       }
+       cmd->__data_mapped = 0;
+}
+
+static u_long __map_scsi_single_data(struct device *dev, struct scsi_cmnd *cmd)
+{
+       dma_addr_t mapping;
+
+       if (cmd->request_bufflen == 0)
+               return 0;
+
+       mapping = dma_map_single(dev, cmd->request_buffer,
+                                cmd->request_bufflen,
+                                cmd->sc_data_direction);
+       cmd->__data_mapped = 1;
+       cmd->__data_mapping = mapping;
+
+       return mapping;
+}
+
+static int __map_scsi_sg_data(struct device *dev, struct scsi_cmnd *cmd)
+{
+       int use_sg;
+
+       if (cmd->use_sg == 0)
+               return 0;
+
+       use_sg = dma_map_sg(dev, cmd->buffer, cmd->use_sg,
+                       cmd->sc_data_direction);
+       cmd->__data_mapped = 2;
+       cmd->__data_mapping = use_sg;
+
+       return use_sg;
+}
+
+#define unmap_scsi_data(np, cmd)       __unmap_scsi_data(np->dev, cmd)
+#define map_scsi_single_data(np, cmd)  __map_scsi_single_data(np->dev, cmd)
+#define map_scsi_sg_data(np, cmd)      __map_scsi_sg_data(np->dev, cmd)
+
+/*==========================================================
+**
+**     Driver setup.
+**
+**     This structure is initialized from linux config 
+**     options. It can be overridden at boot-up by the boot 
+**     command line.
+**
+**==========================================================
+*/
+static struct ncr_driver_setup
+       driver_setup                    = SCSI_NCR_DRIVER_SETUP;
+
+#ifdef SCSI_NCR_BOOT_COMMAND_LINE_SUPPORT
+static struct ncr_driver_setup
+       driver_safe_setup __initdata    = SCSI_NCR_DRIVER_SAFE_SETUP;
+#endif
+
+#define initverbose (driver_setup.verbose)
+#define bootverbose (np->verbose)
+
+
+/*===================================================================
+**
+**     Driver setup from the boot command line
+**
+**===================================================================
+*/
+
+#ifdef MODULE
+#define        ARG_SEP ' '
+#else
+#define        ARG_SEP ','
+#endif
+
+#define OPT_TAGS               1
+#define OPT_MASTER_PARITY      2
+#define OPT_SCSI_PARITY                3
+#define OPT_DISCONNECTION      4
+#define OPT_SPECIAL_FEATURES   5
+#define OPT_UNUSED_1           6
+#define OPT_FORCE_SYNC_NEGO    7
+#define OPT_REVERSE_PROBE      8
+#define OPT_DEFAULT_SYNC       9
+#define OPT_VERBOSE            10
+#define OPT_DEBUG              11
+#define OPT_BURST_MAX          12
+#define OPT_LED_PIN            13
+#define OPT_MAX_WIDE           14
+#define OPT_SETTLE_DELAY       15
+#define OPT_DIFF_SUPPORT       16
+#define OPT_IRQM               17
+#define OPT_PCI_FIX_UP         18
+#define OPT_BUS_CHECK          19
+#define OPT_OPTIMIZE           20
+#define OPT_RECOVERY           21
+#define OPT_SAFE_SETUP         22
+#define OPT_USE_NVRAM          23
+#define OPT_EXCLUDE            24
+#define OPT_HOST_ID            25
+
+#ifdef SCSI_NCR_IARB_SUPPORT
+#define OPT_IARB               26
+#endif
+
+static char setup_token[] __initdata = 
+       "tags:"   "mpar:"
+       "spar:"   "disc:"
+       "specf:"  "ultra:"
+       "fsn:"    "revprob:"
+       "sync:"   "verb:"
+       "debug:"  "burst:"
+       "led:"    "wide:"
+       "settle:" "diff:"
+       "irqm:"   "pcifix:"
+       "buschk:" "optim:"
+       "recovery:"
+       "safe:"   "nvram:"
+       "excl:"   "hostid:"
+#ifdef SCSI_NCR_IARB_SUPPORT
+       "iarb:"
+#endif
+       ;       /* DONNOT REMOVE THIS ';' */
+
+#ifdef MODULE
+#define        ARG_SEP ' '
+#else
+#define        ARG_SEP ','
+#endif
+
+static int __init get_setup_token(char *p)
+{
+       char *cur = setup_token;
+       char *pc;
+       int i = 0;
+
+       while (cur != NULL && (pc = strchr(cur, ':')) != NULL) {
+               ++pc;
+               ++i;
+               if (!strncmp(p, cur, pc - cur))
+                       return i;
+               cur = pc;
+       }
+       return 0;
+}
+
+
+static int __init sym53c8xx__setup(char *str)
+{
+#ifdef SCSI_NCR_BOOT_COMMAND_LINE_SUPPORT
+       char *cur = str;
+       char *pc, *pv;
+       int i, val, c;
+       int xi = 0;
+
+       while (cur != NULL && (pc = strchr(cur, ':')) != NULL) {
+               char *pe;
+
+               val = 0;
+               pv = pc;
+               c = *++pv;
+
+               if      (c == 'n')
+                       val = 0;
+               else if (c == 'y')
+                       val = 1;
+               else
+                       val = (int) simple_strtoul(pv, &pe, 0);
+
+               switch (get_setup_token(cur)) {
+               case OPT_TAGS:
+                       driver_setup.default_tags = val;
+                       if (pe && *pe == '/') {
+                               i = 0;
+                               while (*pe && *pe != ARG_SEP && 
+                                       i < sizeof(driver_setup.tag_ctrl)-1) {
+                                       driver_setup.tag_ctrl[i++] = *pe++;
+                               }
+                               driver_setup.tag_ctrl[i] = '\0';
+                       }
+                       break;
+               case OPT_MASTER_PARITY:
+                       driver_setup.master_parity = val;
+                       break;
+               case OPT_SCSI_PARITY:
+                       driver_setup.scsi_parity = val;
+                       break;
+               case OPT_DISCONNECTION:
+                       driver_setup.disconnection = val;
+                       break;
+               case OPT_SPECIAL_FEATURES:
+                       driver_setup.special_features = val;
+                       break;
+               case OPT_FORCE_SYNC_NEGO:
+                       driver_setup.force_sync_nego = val;
+                       break;
+               case OPT_REVERSE_PROBE:
+                       driver_setup.reverse_probe = val;
+                       break;
+               case OPT_DEFAULT_SYNC:
+                       driver_setup.default_sync = val;
+                       break;
+               case OPT_VERBOSE:
+                       driver_setup.verbose = val;
+                       break;
+               case OPT_DEBUG:
+                       driver_setup.debug = val;
+                       break;
+               case OPT_BURST_MAX:
+                       driver_setup.burst_max = val;
+                       break;
+               case OPT_LED_PIN:
+                       driver_setup.led_pin = val;
+                       break;
+               case OPT_MAX_WIDE:
+                       driver_setup.max_wide = val? 1:0;
+                       break;
+               case OPT_SETTLE_DELAY:
+                       driver_setup.settle_delay = val;
+                       break;
+               case OPT_DIFF_SUPPORT:
+                       driver_setup.diff_support = val;
+                       break;
+               case OPT_IRQM:
+                       driver_setup.irqm = val;
+                       break;
+               case OPT_PCI_FIX_UP:
+                       driver_setup.pci_fix_up = val;
+                       break;
+               case OPT_BUS_CHECK:
+                       driver_setup.bus_check = val;
+                       break;
+               case OPT_OPTIMIZE:
+                       driver_setup.optimize = val;
+                       break;
+               case OPT_RECOVERY:
+                       driver_setup.recovery = val;
+                       break;
+               case OPT_USE_NVRAM:
+                       driver_setup.use_nvram = val;
+                       break;
+               case OPT_SAFE_SETUP:
+                       memcpy(&driver_setup, &driver_safe_setup,
+                               sizeof(driver_setup));
+                       break;
+               case OPT_EXCLUDE:
+                       if (xi < SCSI_NCR_MAX_EXCLUDES)
+                               driver_setup.excludes[xi++] = val;
+                       break;
+               case OPT_HOST_ID:
+                       driver_setup.host_id = val;
+                       break;
+#ifdef SCSI_NCR_IARB_SUPPORT
+               case OPT_IARB:
+                       driver_setup.iarb = val;
+                       break;
+#endif
+               default:
+                       printk("sym53c8xx_setup: unexpected boot option '%.*s' ignored\n", (int)(pc-cur+1), cur);
+                       break;
+               }
+
+               if ((cur = strchr(cur, ARG_SEP)) != NULL)
+                       ++cur;
+       }
+#endif /* SCSI_NCR_BOOT_COMMAND_LINE_SUPPORT */
+       return 1;
+}
+
+/*===================================================================
+**
+**     Get device queue depth from boot command line.
+**
+**===================================================================
+*/
+#define DEF_DEPTH      (driver_setup.default_tags)
+#define ALL_TARGETS    -2
+#define NO_TARGET      -1
+#define ALL_LUNS       -2
+#define NO_LUN         -1
+
+static int device_queue_depth(int unit, int target, int lun)
+{
+       int c, h, t, u, v;
+       char *p = driver_setup.tag_ctrl;
+       char *ep;
+
+       h = -1;
+       t = NO_TARGET;
+       u = NO_LUN;
+       while ((c = *p++) != 0) {
+               v = simple_strtoul(p, &ep, 0);
+               switch(c) {
+               case '/':
+                       ++h;
+                       t = ALL_TARGETS;
+                       u = ALL_LUNS;
+                       break;
+               case 't':
+                       if (t != target)
+                               t = (target == v) ? v : NO_TARGET;
+                       u = ALL_LUNS;
+                       break;
+               case 'u':
+                       if (u != lun)
+                               u = (lun == v) ? v : NO_LUN;
+                       break;
+               case 'q':
+                       if (h == unit &&
+                               (t == ALL_TARGETS || t == target) &&
+                               (u == ALL_LUNS    || u == lun))
+                               return v;
+                       break;
+               case '-':
+                       t = ALL_TARGETS;
+                       u = ALL_LUNS;
+                       break;
+               default:
+                       break;
+               }
+               p = ep;
+       }
+       return DEF_DEPTH;
+}
 
 
 /*==========================================================
@@ -2971,21 +3703,10 @@ struct host_data {
 
 static void ncr_print_msg(struct ccb *cp, char *label, u_char *msg)
 {
-       int i;
        PRINT_ADDR(cp->cmd, "%s: ", label);
 
-       printk ("%x",*msg);
-       if (*msg == M_EXTENDED) {
-               for (i = 1; i < 8; i++) {
-                       if (i - 1 > msg[1])
-                               break;
-                       printk ("-%x",msg[i]);
-               }
-       } else if ((*msg & 0xf0) == 0x20) {
-               printk ("-%x",msg[1]);
-       }
-
-       printk(".\n");
+       spi_print_msg(msg);
+       printk("\n");
 }
 
 /*==========================================================
index 05c7b83cef0944e0a5dd109c45fca8f337180f4a..6a7bef2e6118e6ddbfcb62ff4b3a6b849b8a49e9 100644 (file)
@@ -2,6 +2,7 @@
 **  Device driver for the PCI-SCSI NCR538XX controller family.
 **
 **  Copyright (C) 1994  Wolfgang Stanglmeier
+**  Copyright (C) 1998-2001  Gerard Roudier <groudier@free.fr>
 **
 **  This program is free software; you can redistribute it and/or modify
 **  it under the terms of the GNU General Public License as published by
 **  And has been ported to NetBSD by
 **          Charles M. Hannum           <mycroft@gnu.ai.mit.edu>
 **
+**  NVRAM detection and reading.
+**    Copyright (C) 1997 Richard Waltham <dormouse@farsrobt.demon.co.uk>
+**
+**  Added support for MIPS big endian systems.
+**    Carsten Langgaard, carstenl@mips.com
+**    Copyright (C) 2000 MIPS Technologies, Inc.  All rights reserved.
+**
+**  Added support for HP PARISC big endian systems.
+**    Copyright (C) 2000 MIPS Technologies, Inc.  All rights reserved.
+**
 *******************************************************************************
 */
 
 #ifndef NCR53C8XX_H
 #define NCR53C8XX_H
 
+#include <linux/config.h>
 #include <scsi/scsi_host.h>
 
-#include "sym53c8xx_defs.h"
+/*
+**     If you want a driver as small as possible, do not define the 
+**     following options.
+*/
+#define SCSI_NCR_BOOT_COMMAND_LINE_SUPPORT
+#define SCSI_NCR_DEBUG_INFO_SUPPORT
+
+/*
+**     To disable integrity checking, do not define the 
+**     following option.
+*/
+#ifdef CONFIG_SCSI_NCR53C8XX_INTEGRITY_CHECK
+#      define SCSI_NCR_ENABLE_INTEGRITY_CHECK
+#endif
+
+/* ---------------------------------------------------------------------
+** Take into account kernel configured parameters.
+** Most of these options can be overridden at startup by a command line.
+** ---------------------------------------------------------------------
+*/
+
+/*
+ * For Ultra2 and Ultra3 SCSI support option, use special features. 
+ *
+ * Value (default) means:
+ *     bit 0 : all features enabled, except:
+ *             bit 1 : PCI Write And Invalidate.
+ *             bit 2 : Data Phase Mismatch handling from SCRIPTS.
+ *
+ * Use boot options ncr53c8xx=specf:1 if you want all chip features to be 
+ * enabled by the driver.
+ */
+#define        SCSI_NCR_SETUP_SPECIAL_FEATURES         (3)
+
+#define SCSI_NCR_MAX_SYNC                      (80)
+
+/*
+ * Allow tags from 2 to 256, default 8
+ */
+#ifdef CONFIG_SCSI_NCR53C8XX_MAX_TAGS
+#if    CONFIG_SCSI_NCR53C8XX_MAX_TAGS < 2
+#define SCSI_NCR_MAX_TAGS      (2)
+#elif  CONFIG_SCSI_NCR53C8XX_MAX_TAGS > 256
+#define SCSI_NCR_MAX_TAGS      (256)
+#else
+#define        SCSI_NCR_MAX_TAGS       CONFIG_SCSI_NCR53C8XX_MAX_TAGS
+#endif
+#else
+#define SCSI_NCR_MAX_TAGS      (8)
+#endif
+
+/*
+ * Allow tagged command queuing support if configured with default number 
+ * of tags set to max (see above).
+ */
+#ifdef CONFIG_SCSI_NCR53C8XX_DEFAULT_TAGS
+#define        SCSI_NCR_SETUP_DEFAULT_TAGS     CONFIG_SCSI_NCR53C8XX_DEFAULT_TAGS
+#elif  defined CONFIG_SCSI_NCR53C8XX_TAGGED_QUEUE
+#define        SCSI_NCR_SETUP_DEFAULT_TAGS     SCSI_NCR_MAX_TAGS
+#else
+#define        SCSI_NCR_SETUP_DEFAULT_TAGS     (0)
+#endif
+
+/*
+ * Immediate arbitration
+ */
+#if defined(CONFIG_SCSI_NCR53C8XX_IARB)
+#define SCSI_NCR_IARB_SUPPORT
+#endif
+
+/*
+ * Sync transfer frequency at startup.
+ * Allow from 5Mhz to 80Mhz default 20 Mhz.
+ */
+#ifndef        CONFIG_SCSI_NCR53C8XX_SYNC
+#define        CONFIG_SCSI_NCR53C8XX_SYNC      (20)
+#elif  CONFIG_SCSI_NCR53C8XX_SYNC > SCSI_NCR_MAX_SYNC
+#undef CONFIG_SCSI_NCR53C8XX_SYNC
+#define        CONFIG_SCSI_NCR53C8XX_SYNC      SCSI_NCR_MAX_SYNC
+#endif
+
+#if    CONFIG_SCSI_NCR53C8XX_SYNC == 0
+#define        SCSI_NCR_SETUP_DEFAULT_SYNC     (255)
+#elif  CONFIG_SCSI_NCR53C8XX_SYNC <= 5
+#define        SCSI_NCR_SETUP_DEFAULT_SYNC     (50)
+#elif  CONFIG_SCSI_NCR53C8XX_SYNC <= 20
+#define        SCSI_NCR_SETUP_DEFAULT_SYNC     (250/(CONFIG_SCSI_NCR53C8XX_SYNC))
+#elif  CONFIG_SCSI_NCR53C8XX_SYNC <= 33
+#define        SCSI_NCR_SETUP_DEFAULT_SYNC     (11)
+#elif  CONFIG_SCSI_NCR53C8XX_SYNC <= 40
+#define        SCSI_NCR_SETUP_DEFAULT_SYNC     (10)
+#else
+#define        SCSI_NCR_SETUP_DEFAULT_SYNC     (9)
+#endif
+
+/*
+ * Disallow disconnections at boot-up
+ */
+#ifdef CONFIG_SCSI_NCR53C8XX_NO_DISCONNECT
+#define SCSI_NCR_SETUP_DISCONNECTION   (0)
+#else
+#define SCSI_NCR_SETUP_DISCONNECTION   (1)
+#endif
+
+/*
+ * Force synchronous negotiation for all targets
+ */
+#ifdef CONFIG_SCSI_NCR53C8XX_FORCE_SYNC_NEGO
+#define SCSI_NCR_SETUP_FORCE_SYNC_NEGO (1)
+#else
+#define SCSI_NCR_SETUP_FORCE_SYNC_NEGO (0)
+#endif
+
+/*
+ * Disable master parity checking (flawed hardwares need that)
+ */
+#ifdef CONFIG_SCSI_NCR53C8XX_DISABLE_MPARITY_CHECK
+#define SCSI_NCR_SETUP_MASTER_PARITY   (0)
+#else
+#define SCSI_NCR_SETUP_MASTER_PARITY   (1)
+#endif
+
+/*
+ * Disable scsi parity checking (flawed devices may need that)
+ */
+#ifdef CONFIG_SCSI_NCR53C8XX_DISABLE_PARITY_CHECK
+#define SCSI_NCR_SETUP_SCSI_PARITY     (0)
+#else
+#define SCSI_NCR_SETUP_SCSI_PARITY     (1)
+#endif
+
+/*
+ * Settle time after reset at boot-up
+ */
+#define SCSI_NCR_SETUP_SETTLE_TIME     (2)
+
+/*
+**     Bridge quirks work-around option defaulted to 1.
+*/
+#ifndef        SCSI_NCR_PCIQ_WORK_AROUND_OPT
+#define        SCSI_NCR_PCIQ_WORK_AROUND_OPT   1
+#endif
+
+/*
+**     Work-around common bridge misbehaviour.
+**
+**     - Do not flush posted writes in the opposite 
+**       direction on read.
+**     - May reorder DMA writes to memory.
+**
+**     This option should not affect performances 
+**     significantly, so it is the default.
+*/
+#if    SCSI_NCR_PCIQ_WORK_AROUND_OPT == 1
+#define        SCSI_NCR_PCIQ_MAY_NOT_FLUSH_PW_UPSTREAM
+#define        SCSI_NCR_PCIQ_MAY_REORDER_WRITES
+#define        SCSI_NCR_PCIQ_MAY_MISS_COMPLETIONS
+
+/*
+**     Same as option 1, but also deal with 
+**     misconfigured interrupts.
+**
+**     - Edge triggerred instead of level sensitive.
+**     - No interrupt line connected.
+**     - IRQ number misconfigured.
+**     
+**     If no interrupt is delivered, the driver will 
+**     catch the interrupt conditions 10 times per 
+**     second. No need to say that this option is 
+**     not recommended.
+*/
+#elif  SCSI_NCR_PCIQ_WORK_AROUND_OPT == 2
+#define        SCSI_NCR_PCIQ_MAY_NOT_FLUSH_PW_UPSTREAM
+#define        SCSI_NCR_PCIQ_MAY_REORDER_WRITES
+#define        SCSI_NCR_PCIQ_MAY_MISS_COMPLETIONS
+#define        SCSI_NCR_PCIQ_BROKEN_INTR
+
+/*
+**     Some bridge designers decided to flush 
+**     everything prior to deliver the interrupt.
+**     This option tries to deal with such a 
+**     behaviour.
+*/
+#elif  SCSI_NCR_PCIQ_WORK_AROUND_OPT == 3
+#define        SCSI_NCR_PCIQ_SYNC_ON_INTR
+#endif
+
+/*
+**     Other parameters not configurable with "make config"
+**     Avoid to change these constants, unless you know what you are doing.
+*/
+
+#define SCSI_NCR_ALWAYS_SIMPLE_TAG
+#define SCSI_NCR_MAX_SCATTER   (127)
+#define SCSI_NCR_MAX_TARGET    (16)
+
+/*
+**   Compute some desirable value for CAN_QUEUE 
+**   and CMD_PER_LUN.
+**   The driver will use lower values if these 
+**   ones appear to be too large.
+*/
+#define SCSI_NCR_CAN_QUEUE     (8*SCSI_NCR_MAX_TAGS + 2*SCSI_NCR_MAX_TARGET)
+#define SCSI_NCR_CMD_PER_LUN   (SCSI_NCR_MAX_TAGS)
+
+#define SCSI_NCR_SG_TABLESIZE  (SCSI_NCR_MAX_SCATTER)
+#define SCSI_NCR_TIMER_INTERVAL        (HZ)
+
+#if 1 /* defined CONFIG_SCSI_MULTI_LUN */
+#define SCSI_NCR_MAX_LUN       (16)
+#else
+#define SCSI_NCR_MAX_LUN       (1)
+#endif
+
+/*
+ *  IO functions definition for big/little endian CPU support.
+ *  For now, the NCR is only supported in little endian addressing mode, 
+ */
+
+#ifdef __BIG_ENDIAN
+
+#define        inw_l2b         inw
+#define        inl_l2b         inl
+#define        outw_b2l        outw
+#define        outl_b2l        outl
+
+#define        readb_raw       readb
+#define        writeb_raw      writeb
+
+#if defined(SCSI_NCR_BIG_ENDIAN)
+#define        readw_l2b       __raw_readw
+#define        readl_l2b       __raw_readl
+#define        writew_b2l      __raw_writew
+#define        writel_b2l      __raw_writel
+#define        readw_raw       __raw_readw
+#define        readl_raw       __raw_readl
+#define        writew_raw      __raw_writew
+#define        writel_raw      __raw_writel
+#else  /* Other big-endian */
+#define        readw_l2b       readw
+#define        readl_l2b       readl
+#define        writew_b2l      writew
+#define        writel_b2l      writel
+#define        readw_raw       readw
+#define        readl_raw       readl
+#define        writew_raw      writew
+#define        writel_raw      writel
+#endif
+
+#else  /* little endian */
+
+#define        inw_raw         inw
+#define        inl_raw         inl
+#define        outw_raw        outw
+#define        outl_raw        outl
+
+#define        readb_raw       readb
+#define        readw_raw       readw
+#define        readl_raw       readl
+#define        writeb_raw      writeb
+#define        writew_raw      writew
+#define        writel_raw      writel
+
+#endif
+
+#if !defined(__hppa__) && !defined(__mips__)
+#ifdef SCSI_NCR_BIG_ENDIAN
+#error "The NCR in BIG ENDIAN addressing mode is not (yet) supported"
+#endif
+#endif
+
+#define MEMORY_BARRIER()       mb()
+
+
+/*
+ *  If the NCR uses big endian addressing mode over the 
+ *  PCI, actual io register addresses for byte and word 
+ *  accesses must be changed according to lane routing.
+ *  Btw, ncr_offb() and ncr_offw() macros only apply to 
+ *  constants and so donnot generate bloated code.
+ */
+
+#if    defined(SCSI_NCR_BIG_ENDIAN)
+
+#define ncr_offb(o)    (((o)&~3)+((~((o)&3))&3))
+#define ncr_offw(o)    (((o)&~3)+((~((o)&3))&2))
+
+#else
+
+#define ncr_offb(o)    (o)
+#define ncr_offw(o)    (o)
+
+#endif
+
+/*
+ *  If the CPU and the NCR use same endian-ness addressing,
+ *  no byte reordering is needed for script patching.
+ *  Macro cpu_to_scr() is to be used for script patching.
+ *  Macro scr_to_cpu() is to be used for getting a DWORD 
+ *  from the script.
+ */
+
+#if    defined(__BIG_ENDIAN) && !defined(SCSI_NCR_BIG_ENDIAN)
+
+#define cpu_to_scr(dw) cpu_to_le32(dw)
+#define scr_to_cpu(dw) le32_to_cpu(dw)
+
+#elif  defined(__LITTLE_ENDIAN) && defined(SCSI_NCR_BIG_ENDIAN)
+
+#define cpu_to_scr(dw) cpu_to_be32(dw)
+#define scr_to_cpu(dw) be32_to_cpu(dw)
+
+#else
+
+#define cpu_to_scr(dw) (dw)
+#define scr_to_cpu(dw) (dw)
+
+#endif
+
+/*
+ *  Access to the controller chip.
+ *
+ *  If the CPU and the NCR use same endian-ness addressing,
+ *  no byte reordering is needed for accessing chip io 
+ *  registers. Functions suffixed by '_raw' are assumed 
+ *  to access the chip over the PCI without doing byte 
+ *  reordering. Functions suffixed by '_l2b' are 
+ *  assumed to perform little-endian to big-endian byte 
+ *  reordering, those suffixed by '_b2l' blah, blah,
+ *  blah, ...
+ */
+
+/*
+ *  MEMORY mapped IO input / output
+ */
+
+#define INB_OFF(o)             readb_raw((char __iomem *)np->reg + ncr_offb(o))
+#define OUTB_OFF(o, val)       writeb_raw((val), (char __iomem *)np->reg + ncr_offb(o))
+
+#if    defined(__BIG_ENDIAN) && !defined(SCSI_NCR_BIG_ENDIAN)
+
+#define INW_OFF(o)             readw_l2b((char __iomem *)np->reg + ncr_offw(o))
+#define INL_OFF(o)             readl_l2b((char __iomem *)np->reg + (o))
+
+#define OUTW_OFF(o, val)       writew_b2l((val), (char __iomem *)np->reg + ncr_offw(o))
+#define OUTL_OFF(o, val)       writel_b2l((val), (char __iomem *)np->reg + (o))
+
+#elif  defined(__LITTLE_ENDIAN) && defined(SCSI_NCR_BIG_ENDIAN)
+
+#define INW_OFF(o)             readw_b2l((char __iomem *)np->reg + ncr_offw(o))
+#define INL_OFF(o)             readl_b2l((char __iomem *)np->reg + (o))
+
+#define OUTW_OFF(o, val)       writew_l2b((val), (char __iomem *)np->reg + ncr_offw(o))
+#define OUTL_OFF(o, val)       writel_l2b((val), (char __iomem *)np->reg + (o))
+
+#else
+
+#ifdef CONFIG_SCSI_NCR53C8XX_NO_WORD_TRANSFERS
+/* Only 8 or 32 bit transfers allowed */
+#define INW_OFF(o)             (readb((char __iomem *)np->reg + ncr_offw(o)) << 8 | readb((char __iomem *)np->reg + ncr_offw(o) + 1))
+#else
+#define INW_OFF(o)             readw_raw((char __iomem *)np->reg + ncr_offw(o))
+#endif
+#define INL_OFF(o)             readl_raw((char __iomem *)np->reg + (o))
+
+#ifdef CONFIG_SCSI_NCR53C8XX_NO_WORD_TRANSFERS
+/* Only 8 or 32 bit transfers allowed */
+#define OUTW_OFF(o, val)       do { writeb((char)((val) >> 8), (char __iomem *)np->reg + ncr_offw(o)); writeb((char)(val), (char __iomem *)np->reg + ncr_offw(o) + 1); } while (0)
+#else
+#define OUTW_OFF(o, val)       writew_raw((val), (char __iomem *)np->reg + ncr_offw(o))
+#endif
+#define OUTL_OFF(o, val)       writel_raw((val), (char __iomem *)np->reg + (o))
+
+#endif
+
+#define INB(r)         INB_OFF (offsetof(struct ncr_reg,r))
+#define INW(r)         INW_OFF (offsetof(struct ncr_reg,r))
+#define INL(r)         INL_OFF (offsetof(struct ncr_reg,r))
+
+#define OUTB(r, val)   OUTB_OFF (offsetof(struct ncr_reg,r), (val))
+#define OUTW(r, val)   OUTW_OFF (offsetof(struct ncr_reg,r), (val))
+#define OUTL(r, val)   OUTL_OFF (offsetof(struct ncr_reg,r), (val))
+
+/*
+ *  Set bit field ON, OFF 
+ */
+
+#define OUTONB(r, m)   OUTB(r, INB(r) | (m))
+#define OUTOFFB(r, m)  OUTB(r, INB(r) & ~(m))
+#define OUTONW(r, m)   OUTW(r, INW(r) | (m))
+#define OUTOFFW(r, m)  OUTW(r, INW(r) & ~(m))
+#define OUTONL(r, m)   OUTL(r, INL(r) | (m))
+#define OUTOFFL(r, m)  OUTL(r, INL(r) & ~(m))
+
+/*
+ *  We normally want the chip to have a consistent view
+ *  of driver internal data structures when we restart it.
+ *  Thus these macros.
+ */
+#define OUTL_DSP(v)                            \
+       do {                                    \
+               MEMORY_BARRIER();               \
+               OUTL (nc_dsp, (v));             \
+       } while (0)
+
+#define OUTONB_STD()                           \
+       do {                                    \
+               MEMORY_BARRIER();               \
+               OUTONB (nc_dcntl, (STD|NOCOM)); \
+       } while (0)
+
+
+/*
+**   NCR53C8XX devices features table.
+*/
+struct ncr_chip {
+       unsigned short  revision_id;
+       unsigned char   burst_max;      /* log-base-2 of max burst */
+       unsigned char   offset_max;
+       unsigned char   nr_divisor;
+       unsigned int    features;
+#define FE_LED0                (1<<0)
+#define FE_WIDE                (1<<1)    /* Wide data transfers */
+#define FE_ULTRA       (1<<2)    /* Ultra speed 20Mtrans/sec */
+#define FE_DBLR                (1<<4)    /* Clock doubler present */
+#define FE_QUAD                (1<<5)    /* Clock quadrupler present */
+#define FE_ERL         (1<<6)    /* Enable read line */
+#define FE_CLSE                (1<<7)    /* Cache line size enable */
+#define FE_WRIE                (1<<8)    /* Write & Invalidate enable */
+#define FE_ERMP                (1<<9)    /* Enable read multiple */
+#define FE_BOF         (1<<10)   /* Burst opcode fetch */
+#define FE_DFS         (1<<11)   /* DMA fifo size */
+#define FE_PFEN                (1<<12)   /* Prefetch enable */
+#define FE_LDSTR       (1<<13)   /* Load/Store supported */
+#define FE_RAM         (1<<14)   /* On chip RAM present */
+#define FE_VARCLK      (1<<15)   /* SCSI clock may vary */
+#define FE_RAM8K       (1<<16)   /* On chip RAM sized 8Kb */
+#define FE_64BIT       (1<<17)   /* Have a 64-bit PCI interface */
+#define FE_IO256       (1<<18)   /* Requires full 256 bytes in PCI space */
+#define FE_NOPM                (1<<19)   /* Scripts handles phase mismatch */
+#define FE_LEDC                (1<<20)   /* Hardware control of LED */
+#define FE_DIFF                (1<<21)   /* Support Differential SCSI */
+#define FE_66MHZ       (1<<23)   /* 66MHz PCI Support */
+#define FE_DAC         (1<<24)   /* Support DAC cycles (64 bit addressing) */
+#define FE_ISTAT1      (1<<25)   /* Have ISTAT1, MBOX0, MBOX1 registers */
+#define FE_DAC_IN_USE  (1<<26)   /* Platform does DAC cycles */
+#define FE_EHP         (1<<27)   /* 720: Even host parity */
+#define FE_MUX         (1<<28)   /* 720: Multiplexed bus */
+#define FE_EA          (1<<29)   /* 720: Enable Ack */
+
+#define FE_CACHE_SET   (FE_ERL|FE_CLSE|FE_WRIE|FE_ERMP)
+#define FE_SCSI_SET    (FE_WIDE|FE_ULTRA|FE_DBLR|FE_QUAD|F_CLK80)
+#define FE_SPECIAL_SET (FE_CACHE_SET|FE_BOF|FE_DFS|FE_LDSTR|FE_PFEN|FE_RAM)
+};
+
+
+/*
+**     Driver setup structure.
+**
+**     This structure is initialized from linux config options.
+**     It can be overridden at boot-up by the boot command line.
+*/
+#define SCSI_NCR_MAX_EXCLUDES 8
+struct ncr_driver_setup {
+       u8      master_parity;
+       u8      scsi_parity;
+       u8      disconnection;
+       u8      special_features;
+       u8      force_sync_nego;
+       u8      reverse_probe;
+       u8      pci_fix_up;
+       u8      use_nvram;
+       u8      verbose;
+       u8      default_tags;
+       u16     default_sync;
+       u16     debug;
+       u8      burst_max;
+       u8      led_pin;
+       u8      max_wide;
+       u8      settle_delay;
+       u8      diff_support;
+       u8      irqm;
+       u8      bus_check;
+       u8      optimize;
+       u8      recovery;
+       u8      host_id;
+       u16     iarb;
+       u32     excludes[SCSI_NCR_MAX_EXCLUDES];
+       char    tag_ctrl[100];
+};
+
+/*
+**     Initial setup.
+**     Can be overriden at startup by a command line.
+*/
+#define SCSI_NCR_DRIVER_SETUP                  \
+{                                              \
+       SCSI_NCR_SETUP_MASTER_PARITY,           \
+       SCSI_NCR_SETUP_SCSI_PARITY,             \
+       SCSI_NCR_SETUP_DISCONNECTION,           \
+       SCSI_NCR_SETUP_SPECIAL_FEATURES,        \
+       SCSI_NCR_SETUP_FORCE_SYNC_NEGO,         \
+       0,                                      \
+       0,                                      \
+       1,                                      \
+       0,                                      \
+       SCSI_NCR_SETUP_DEFAULT_TAGS,            \
+       SCSI_NCR_SETUP_DEFAULT_SYNC,            \
+       0x00,                                   \
+       7,                                      \
+       0,                                      \
+       1,                                      \
+       SCSI_NCR_SETUP_SETTLE_TIME,             \
+       0,                                      \
+       0,                                      \
+       1,                                      \
+       0,                                      \
+       0,                                      \
+       255,                                    \
+       0x00                                    \
+}
+
+/*
+**     Boot fail safe setup.
+**     Override initial setup from boot command line:
+**     ncr53c8xx=safe:y
+*/
+#define SCSI_NCR_DRIVER_SAFE_SETUP             \
+{                                              \
+       0,                                      \
+       1,                                      \
+       0,                                      \
+       0,                                      \
+       0,                                      \
+       0,                                      \
+       0,                                      \
+       1,                                      \
+       2,                                      \
+       0,                                      \
+       255,                                    \
+       0x00,                                   \
+       255,                                    \
+       0,                                      \
+       0,                                      \
+       10,                                     \
+       1,                                      \
+       1,                                      \
+       1,                                      \
+       0,                                      \
+       0,                                      \
+       255                                     \
+}
+
+/**************** ORIGINAL CONTENT of ncrreg.h from FreeBSD ******************/
+
+/*-----------------------------------------------------------------
+**
+**     The ncr 53c810 register structure.
+**
+**-----------------------------------------------------------------
+*/
+
+struct ncr_reg {
+/*00*/  u8     nc_scntl0;    /* full arb., ena parity, par->ATN  */
+
+/*01*/  u8     nc_scntl1;    /* no reset                         */
+        #define   ISCON   0x10  /* connected to scsi               */
+        #define   CRST    0x08  /* force reset                      */
+        #define   IARB    0x02  /* immediate arbitration            */
+
+/*02*/  u8     nc_scntl2;    /* no disconnect expected           */
+       #define   SDU     0x80  /* cmd: disconnect will raise error */
+       #define   CHM     0x40  /* sta: chained mode                */
+       #define   WSS     0x08  /* sta: wide scsi send           [W]*/
+       #define   WSR     0x01  /* sta: wide scsi received       [W]*/
+
+/*03*/  u8     nc_scntl3;    /* cnf system clock dependent       */
+       #define   EWS     0x08  /* cmd: enable wide scsi         [W]*/
+       #define   ULTRA   0x80  /* cmd: ULTRA enable                */
+                               /* bits 0-2, 7 rsvd for C1010       */
+
+/*04*/  u8     nc_scid;        /* cnf host adapter scsi address    */
+       #define   RRE     0x40  /* r/w:e enable response to resel.  */
+       #define   SRE     0x20  /* r/w:e enable response to select  */
+
+/*05*/  u8     nc_sxfer;       /* ### Sync speed and count         */
+                               /* bits 6-7 rsvd for C1010          */
+
+/*06*/  u8     nc_sdid;        /* ### Destination-ID               */
+
+/*07*/  u8     nc_gpreg;       /* ??? IO-Pins                      */
+
+/*08*/  u8     nc_sfbr;        /* ### First byte in phase          */
+
+/*09*/  u8     nc_socl;
+       #define   CREQ    0x80  /* r/w: SCSI-REQ                    */
+       #define   CACK    0x40  /* r/w: SCSI-ACK                    */
+       #define   CBSY    0x20  /* r/w: SCSI-BSY                    */
+       #define   CSEL    0x10  /* r/w: SCSI-SEL                    */
+       #define   CATN    0x08  /* r/w: SCSI-ATN                    */
+       #define   CMSG    0x04  /* r/w: SCSI-MSG                    */
+       #define   CC_D    0x02  /* r/w: SCSI-C_D                    */
+       #define   CI_O    0x01  /* r/w: SCSI-I_O                    */
+
+/*0a*/  u8     nc_ssid;
+
+/*0b*/  u8     nc_sbcl;
+
+/*0c*/  u8     nc_dstat;
+        #define   DFE     0x80  /* sta: dma fifo empty              */
+        #define   MDPE    0x40  /* int: master data parity error    */
+        #define   BF      0x20  /* int: script: bus fault           */
+        #define   ABRT    0x10  /* int: script: command aborted     */
+        #define   SSI     0x08  /* int: script: single step         */
+        #define   SIR     0x04  /* int: script: interrupt instruct. */
+        #define   IID     0x01  /* int: script: illegal instruct.   */
+
+/*0d*/  u8     nc_sstat0;
+        #define   ILF     0x80  /* sta: data in SIDL register lsb   */
+        #define   ORF     0x40  /* sta: data in SODR register lsb   */
+        #define   OLF     0x20  /* sta: data in SODL register lsb   */
+        #define   AIP     0x10  /* sta: arbitration in progress     */
+        #define   LOA     0x08  /* sta: arbitration lost            */
+        #define   WOA     0x04  /* sta: arbitration won             */
+        #define   IRST    0x02  /* sta: scsi reset signal           */
+        #define   SDP     0x01  /* sta: scsi parity signal          */
+
+/*0e*/  u8     nc_sstat1;
+       #define   FF3210  0xf0  /* sta: bytes in the scsi fifo      */
+
+/*0f*/  u8     nc_sstat2;
+        #define   ILF1    0x80  /* sta: data in SIDL register msb[W]*/
+        #define   ORF1    0x40  /* sta: data in SODR register msb[W]*/
+        #define   OLF1    0x20  /* sta: data in SODL register msb[W]*/
+        #define   DM      0x04  /* sta: DIFFSENS mismatch (895/6 only) */
+        #define   LDSC    0x02  /* sta: disconnect & reconnect      */
+
+/*10*/  u8     nc_dsa; /* --> Base page                    */
+/*11*/  u8     nc_dsa1;
+/*12*/  u8     nc_dsa2;
+/*13*/  u8     nc_dsa3;
+
+/*14*/  u8     nc_istat;       /* --> Main Command and status      */
+        #define   CABRT   0x80  /* cmd: abort current operation     */
+        #define   SRST    0x40  /* mod: reset chip                  */
+        #define   SIGP    0x20  /* r/w: message from host to ncr    */
+        #define   SEM     0x10  /* r/w: message between host + ncr  */
+        #define   CON     0x08  /* sta: connected to scsi           */
+        #define   INTF    0x04  /* sta: int on the fly (reset by wr)*/
+        #define   SIP     0x02  /* sta: scsi-interrupt              */
+        #define   DIP     0x01  /* sta: host/script interrupt       */
+
+/*15*/  u8     nc_istat1;      /* 896 and later cores only */
+        #define   FLSH    0x04  /* sta: chip is flushing            */
+        #define   SRUN    0x02  /* sta: scripts are running         */
+        #define   SIRQD   0x01  /* r/w: disable INT pin             */
+
+/*16*/  u8     nc_mbox0;       /* 896 and later cores only */
+/*17*/  u8     nc_mbox1;       /* 896 and later cores only */
+
+/*18*/ u8      nc_ctest0;
+       #define   EHP     0x04  /* 720 even host parity             */
+/*19*/  u8     nc_ctest1;
+
+/*1a*/  u8     nc_ctest2;
+       #define   CSIGP   0x40
+                               /* bits 0-2,7 rsvd for C1010        */
+
+/*1b*/  u8     nc_ctest3;
+       #define   FLF     0x08  /* cmd: flush dma fifo              */
+       #define   CLF     0x04  /* cmd: clear dma fifo              */
+       #define   FM      0x02  /* mod: fetch pin mode              */
+       #define   WRIE    0x01  /* mod: write and invalidate enable */
+                               /* bits 4-7 rsvd for C1010          */
+
+/*1c*/  u32    nc_temp;        /* ### Temporary stack              */
+
+/*20*/ u8      nc_dfifo;
+/*21*/  u8     nc_ctest4;
+       #define   MUX     0x80  /* 720 host bus multiplex mode      */
+       #define   BDIS    0x80  /* mod: burst disable               */
+       #define   MPEE    0x08  /* mod: master parity error enable  */
+
+/*22*/  u8     nc_ctest5;
+       #define   DFS     0x20  /* mod: dma fifo size               */
+                               /* bits 0-1, 3-7 rsvd for C1010          */
+/*23*/  u8     nc_ctest6;
+
+/*24*/  u32    nc_dbc; /* ### Byte count and command       */
+/*28*/  u32    nc_dnad;        /* ### Next command register        */
+/*2c*/  u32    nc_dsp; /* --> Script Pointer               */
+/*30*/  u32    nc_dsps;        /* --> Script pointer save/opcode#2 */
+
+/*34*/  u8     nc_scratcha;  /* Temporary register a            */
+/*35*/  u8     nc_scratcha1;
+/*36*/  u8     nc_scratcha2;
+/*37*/  u8     nc_scratcha3;
+
+/*38*/  u8     nc_dmode;
+       #define   BL_2    0x80  /* mod: burst length shift value +2 */
+       #define   BL_1    0x40  /* mod: burst length shift value +1 */
+       #define   ERL     0x08  /* mod: enable read line            */
+       #define   ERMP    0x04  /* mod: enable read multiple        */
+       #define   BOF     0x02  /* mod: burst op code fetch         */
+
+/*39*/  u8     nc_dien;
+/*3a*/  u8     nc_sbr;
+
+/*3b*/  u8     nc_dcntl;       /* --> Script execution control     */
+       #define   CLSE    0x80  /* mod: cache line size enable      */
+       #define   PFF     0x40  /* cmd: pre-fetch flush             */
+       #define   PFEN    0x20  /* mod: pre-fetch enable            */
+       #define   EA      0x20  /* mod: 720 enable-ack              */
+       #define   SSM     0x10  /* mod: single step mode            */
+       #define   IRQM    0x08  /* mod: irq mode (1 = totem pole !) */
+       #define   STD     0x04  /* cmd: start dma mode              */
+       #define   IRQD    0x02  /* mod: irq disable                 */
+       #define   NOCOM   0x01  /* cmd: protect sfbr while reselect */
+                               /* bits 0-1 rsvd for C1010          */
+
+/*3c*/  u32    nc_adder;
+
+/*40*/  u16    nc_sien;        /* -->: interrupt enable            */
+/*42*/  u16    nc_sist;        /* <--: interrupt status            */
+        #define   SBMC    0x1000/* sta: SCSI Bus Mode Change (895/6 only) */
+        #define   STO     0x0400/* sta: timeout (select)            */
+        #define   GEN     0x0200/* sta: timeout (general)           */
+        #define   HTH     0x0100/* sta: timeout (handshake)         */
+        #define   MA      0x80  /* sta: phase mismatch              */
+        #define   CMP     0x40  /* sta: arbitration complete        */
+        #define   SEL     0x20  /* sta: selected by another device  */
+        #define   RSL     0x10  /* sta: reselected by another device*/
+        #define   SGE     0x08  /* sta: gross error (over/underflow)*/
+        #define   UDC     0x04  /* sta: unexpected disconnect       */
+        #define   RST     0x02  /* sta: scsi bus reset detected     */
+        #define   PAR     0x01  /* sta: scsi parity error           */
+
+/*44*/  u8     nc_slpar;
+/*45*/  u8     nc_swide;
+/*46*/  u8     nc_macntl;
+/*47*/  u8     nc_gpcntl;
+/*48*/  u8     nc_stime0;    /* cmd: timeout for select&handshake*/
+/*49*/  u8     nc_stime1;    /* cmd: timeout user defined        */
+/*4a*/  u16   nc_respid;    /* sta: Reselect-IDs                */
+
+/*4c*/  u8     nc_stest0;
+
+/*4d*/  u8     nc_stest1;
+       #define   SCLK    0x80  /* Use the PCI clock as SCSI clock      */
+       #define   DBLEN   0x08  /* clock doubler running                */
+       #define   DBLSEL  0x04  /* clock doubler selected               */
+  
+
+/*4e*/  u8     nc_stest2;
+       #define   ROF     0x40  /* reset scsi offset (after gross error!) */
+       #define   DIF     0x20  /* 720 SCSI differential mode             */
+       #define   EXT     0x02  /* extended filtering                     */
+
+/*4f*/  u8     nc_stest3;
+       #define   TE     0x80   /* c: tolerAnt enable */
+       #define   HSC    0x20   /* c: Halt SCSI Clock */
+       #define   CSF    0x02   /* c: clear scsi fifo */
+
+/*50*/  u16   nc_sidl; /* Lowlevel: latched from scsi data */
+/*52*/  u8     nc_stest4;
+       #define   SMODE  0xc0   /* SCSI bus mode      (895/6 only) */
+       #define    SMODE_HVD 0x40       /* High Voltage Differential       */
+       #define    SMODE_SE  0x80       /* Single Ended                    */
+       #define    SMODE_LVD 0xc0       /* Low Voltage Differential        */
+       #define   LCKFRQ 0x20   /* Frequency Lock (895/6 only)     */
+                               /* bits 0-5 rsvd for C1010          */
+
+/*53*/  u8     nc_53_;
+/*54*/  u16    nc_sodl;        /* Lowlevel: data out to scsi data  */
+/*56*/ u8      nc_ccntl0;      /* Chip Control 0 (896)             */
+       #define   ENPMJ  0x80   /* Enable Phase Mismatch Jump       */
+       #define   PMJCTL 0x40   /* Phase Mismatch Jump Control      */
+       #define   ENNDJ  0x20   /* Enable Non Data PM Jump          */
+       #define   DISFC  0x10   /* Disable Auto FIFO Clear          */
+       #define   DILS   0x02   /* Disable Internal Load/Store      */
+       #define   DPR    0x01   /* Disable Pipe Req                 */
+
+/*57*/ u8      nc_ccntl1;      /* Chip Control 1 (896)             */
+       #define   ZMOD   0x80   /* High Impedance Mode              */
+       #define   DIC    0x10   /* Disable Internal Cycles          */
+       #define   DDAC   0x08   /* Disable Dual Address Cycle       */
+       #define   XTIMOD 0x04   /* 64-bit Table Ind. Indexing Mode  */
+       #define   EXTIBMV 0x02  /* Enable 64-bit Table Ind. BMOV    */
+       #define   EXDBMV 0x01   /* Enable 64-bit Direct BMOV        */
+
+/*58*/  u16    nc_sbdl;        /* Lowlevel: data from scsi data    */
+/*5a*/  u16    nc_5a_;
+
+/*5c*/  u8     nc_scr0;        /* Working register B               */
+/*5d*/  u8     nc_scr1;        /*                                  */
+/*5e*/  u8     nc_scr2;        /*                                  */
+/*5f*/  u8     nc_scr3;        /*                                  */
+
+/*60*/  u8     nc_scrx[64];    /* Working register C-R             */
+/*a0*/ u32     nc_mmrs;        /* Memory Move Read Selector        */
+/*a4*/ u32     nc_mmws;        /* Memory Move Write Selector       */
+/*a8*/ u32     nc_sfs;         /* Script Fetch Selector            */
+/*ac*/ u32     nc_drs;         /* DSA Relative Selector            */
+/*b0*/ u32     nc_sbms;        /* Static Block Move Selector       */
+/*b4*/ u32     nc_dbms;        /* Dynamic Block Move Selector      */
+/*b8*/ u32     nc_dnad64;      /* DMA Next Address 64              */
+/*bc*/ u16     nc_scntl4;      /* C1010 only                       */
+       #define   U3EN   0x80   /* Enable Ultra 3                   */
+       #define   AIPEN  0x40   /* Allow check upper byte lanes     */
+       #define   XCLKH_DT 0x08 /* Extra clock of data hold on DT
+                                       transfer edge               */
+       #define   XCLKH_ST 0x04 /* Extra clock of data hold on ST
+                                       transfer edge               */
+
+/*be*/  u8     nc_aipcntl0;    /* Epat Control 1 C1010 only        */
+/*bf*/  u8     nc_aipcntl1;    /* AIP Control C1010_66 Only        */
+
+/*c0*/ u32     nc_pmjad1;      /* Phase Mismatch Jump Address 1    */
+/*c4*/ u32     nc_pmjad2;      /* Phase Mismatch Jump Address 2    */
+/*c8*/ u8      nc_rbc;         /* Remaining Byte Count             */
+/*c9*/ u8      nc_rbc1;        /*                                  */
+/*ca*/ u8      nc_rbc2;        /*                                  */
+/*cb*/ u8      nc_rbc3;        /*                                  */
+
+/*cc*/ u8      nc_ua;          /* Updated Address                  */
+/*cd*/ u8      nc_ua1;         /*                                  */
+/*ce*/ u8      nc_ua2;         /*                                  */
+/*cf*/ u8      nc_ua3;         /*                                  */
+/*d0*/ u32     nc_esa;         /* Entry Storage Address            */
+/*d4*/ u8      nc_ia;          /* Instruction Address              */
+/*d5*/ u8      nc_ia1;
+/*d6*/ u8      nc_ia2;
+/*d7*/ u8      nc_ia3;
+/*d8*/ u32     nc_sbc;         /* SCSI Byte Count (3 bytes only)   */
+/*dc*/ u32     nc_csbc;        /* Cumulative SCSI Byte Count       */
+
+                               /* Following for C1010 only         */
+/*e0*/  u16    nc_crcpad;      /* CRC Value                        */
+/*e2*/  u8     nc_crccntl0;    /* CRC control register             */
+       #define   SNDCRC  0x10  /* Send CRC Request                 */
+/*e3*/  u8     nc_crccntl1;    /* CRC control register             */
+/*e4*/  u32    nc_crcdata;     /* CRC data register                */ 
+/*e8*/  u32    nc_e8_;         /* rsvd                             */
+/*ec*/  u32    nc_ec_;         /* rsvd                             */
+/*f0*/  u16    nc_dfbc;        /* DMA FIFO byte count              */ 
+
+};
+
+/*-----------------------------------------------------------
+**
+**     Utility macros for the script.
+**
+**-----------------------------------------------------------
+*/
+
+#define REGJ(p,r) (offsetof(struct ncr_reg, p ## r))
+#define REG(r) REGJ (nc_, r)
+
+typedef u32 ncrcmd;
+
+/*-----------------------------------------------------------
+**
+**     SCSI phases
+**
+**     DT phases illegal for ncr driver.
+**
+**-----------------------------------------------------------
+*/
+
+#define        SCR_DATA_OUT    0x00000000
+#define        SCR_DATA_IN     0x01000000
+#define        SCR_COMMAND     0x02000000
+#define        SCR_STATUS      0x03000000
+#define SCR_DT_DATA_OUT        0x04000000
+#define SCR_DT_DATA_IN 0x05000000
+#define SCR_MSG_OUT    0x06000000
+#define SCR_MSG_IN      0x07000000
+
+#define SCR_ILG_OUT    0x04000000
+#define SCR_ILG_IN     0x05000000
+
+/*-----------------------------------------------------------
+**
+**     Data transfer via SCSI.
+**
+**-----------------------------------------------------------
+**
+**     MOVE_ABS (LEN)
+**     <<start address>>
+**
+**     MOVE_IND (LEN)
+**     <<dnad_offset>>
+**
+**     MOVE_TBL
+**     <<dnad_offset>>
+**
+**-----------------------------------------------------------
+*/
+
+#define OPC_MOVE          0x08000000
+
+#define SCR_MOVE_ABS(l) ((0x00000000 | OPC_MOVE) | (l))
+#define SCR_MOVE_IND(l) ((0x20000000 | OPC_MOVE) | (l))
+#define SCR_MOVE_TBL     (0x10000000 | OPC_MOVE)
+
+#define SCR_CHMOV_ABS(l) ((0x00000000) | (l))
+#define SCR_CHMOV_IND(l) ((0x20000000) | (l))
+#define SCR_CHMOV_TBL     (0x10000000)
+
+struct scr_tblmove {
+        u32  size;
+        u32  addr;
+};
+
+/*-----------------------------------------------------------
+**
+**     Selection
+**
+**-----------------------------------------------------------
+**
+**     SEL_ABS | SCR_ID (0..15)    [ | REL_JMP]
+**     <<alternate_address>>
+**
+**     SEL_TBL | << dnad_offset>>  [ | REL_JMP]
+**     <<alternate_address>>
+**
+**-----------------------------------------------------------
+*/
+
+#define        SCR_SEL_ABS     0x40000000
+#define        SCR_SEL_ABS_ATN 0x41000000
+#define        SCR_SEL_TBL     0x42000000
+#define        SCR_SEL_TBL_ATN 0x43000000
+
+
+#ifdef SCSI_NCR_BIG_ENDIAN
+struct scr_tblsel {
+        u8     sel_scntl3;
+        u8     sel_id;
+        u8     sel_sxfer;
+        u8     sel_scntl4;     
+};
+#else
+struct scr_tblsel {
+        u8     sel_scntl4;     
+        u8     sel_sxfer;
+        u8     sel_id;
+        u8     sel_scntl3;
+};
+#endif
+
+#define SCR_JMP_REL     0x04000000
+#define SCR_ID(id)     (((u32)(id)) << 16)
+
+/*-----------------------------------------------------------
+**
+**     Waiting for Disconnect or Reselect
+**
+**-----------------------------------------------------------
+**
+**     WAIT_DISC
+**     dummy: <<alternate_address>>
+**
+**     WAIT_RESEL
+**     <<alternate_address>>
+**
+**-----------------------------------------------------------
+*/
+
+#define        SCR_WAIT_DISC   0x48000000
+#define SCR_WAIT_RESEL  0x50000000
+
+/*-----------------------------------------------------------
+**
+**     Bit Set / Reset
+**
+**-----------------------------------------------------------
+**
+**     SET (flags {|.. })
+**
+**     CLR (flags {|.. })
+**
+**-----------------------------------------------------------
+*/
+
+#define SCR_SET(f)     (0x58000000 | (f))
+#define SCR_CLR(f)     (0x60000000 | (f))
+
+#define        SCR_CARRY       0x00000400
+#define        SCR_TRG         0x00000200
+#define        SCR_ACK         0x00000040
+#define        SCR_ATN         0x00000008
+
+
+
+
+/*-----------------------------------------------------------
+**
+**     Memory to memory move
+**
+**-----------------------------------------------------------
+**
+**     COPY (bytecount)
+**     << source_address >>
+**     << destination_address >>
+**
+**     SCR_COPY   sets the NO FLUSH option by default.
+**     SCR_COPY_F does not set this option.
+**
+**     For chips which do not support this option,
+**     ncr_copy_and_bind() will remove this bit.
+**-----------------------------------------------------------
+*/
+
+#define SCR_NO_FLUSH 0x01000000
+
+#define SCR_COPY(n) (0xc0000000 | SCR_NO_FLUSH | (n))
+#define SCR_COPY_F(n) (0xc0000000 | (n))
+
+/*-----------------------------------------------------------
+**
+**     Register move and binary operations
+**
+**-----------------------------------------------------------
+**
+**     SFBR_REG (reg, op, data)        reg  = SFBR op data
+**     << 0 >>
+**
+**     REG_SFBR (reg, op, data)        SFBR = reg op data
+**     << 0 >>
+**
+**     REG_REG  (reg, op, data)        reg  = reg op data
+**     << 0 >>
+**
+**-----------------------------------------------------------
+**     On 810A, 860, 825A, 875, 895 and 896 chips the content 
+**     of SFBR register can be used as data (SCR_SFBR_DATA).
+**     The 896 has additionnal IO registers starting at 
+**     offset 0x80. Bit 7 of register offset is stored in 
+**     bit 7 of the SCRIPTS instruction first DWORD.
+**-----------------------------------------------------------
+*/
+
+#define SCR_REG_OFS(ofs) ((((ofs) & 0x7f) << 16ul) + ((ofs) & 0x80)) 
+
+#define SCR_SFBR_REG(reg,op,data) \
+        (0x68000000 | (SCR_REG_OFS(REG(reg))) | (op) | (((data)&0xff)<<8ul))
+
+#define SCR_REG_SFBR(reg,op,data) \
+        (0x70000000 | (SCR_REG_OFS(REG(reg))) | (op) | (((data)&0xff)<<8ul))
+
+#define SCR_REG_REG(reg,op,data) \
+        (0x78000000 | (SCR_REG_OFS(REG(reg))) | (op) | (((data)&0xff)<<8ul))
+
+
+#define      SCR_LOAD   0x00000000
+#define      SCR_SHL    0x01000000
+#define      SCR_OR     0x02000000
+#define      SCR_XOR    0x03000000
+#define      SCR_AND    0x04000000
+#define      SCR_SHR    0x05000000
+#define      SCR_ADD    0x06000000
+#define      SCR_ADDC   0x07000000
+
+#define      SCR_SFBR_DATA   (0x00800000>>8ul) /* Use SFBR as data */
+
+/*-----------------------------------------------------------
+**
+**     FROM_REG (reg)            SFBR = reg
+**     << 0 >>
+**
+**     TO_REG   (reg)            reg  = SFBR
+**     << 0 >>
+**
+**     LOAD_REG (reg, data)      reg  = <data>
+**     << 0 >>
+**
+**     LOAD_SFBR(data)           SFBR = <data>
+**     << 0 >>
+**
+**-----------------------------------------------------------
+*/
+
+#define        SCR_FROM_REG(reg) \
+       SCR_REG_SFBR(reg,SCR_OR,0)
+
+#define        SCR_TO_REG(reg) \
+       SCR_SFBR_REG(reg,SCR_OR,0)
+
+#define        SCR_LOAD_REG(reg,data) \
+       SCR_REG_REG(reg,SCR_LOAD,data)
+
+#define SCR_LOAD_SFBR(data) \
+        (SCR_REG_SFBR (gpreg, SCR_LOAD, data))
+
+/*-----------------------------------------------------------
+**
+**     LOAD  from memory   to register.
+**     STORE from register to memory.
+**
+**     Only supported by 810A, 860, 825A, 875, 895 and 896.
+**
+**-----------------------------------------------------------
+**
+**     LOAD_ABS (LEN)
+**     <<start address>>
+**
+**     LOAD_REL (LEN)        (DSA relative)
+**     <<dsa_offset>>
+**
+**-----------------------------------------------------------
+*/
+
+#define SCR_REG_OFS2(ofs) (((ofs) & 0xff) << 16ul)
+#define SCR_NO_FLUSH2  0x02000000
+#define SCR_DSA_REL2   0x10000000
+
+#define SCR_LOAD_R(reg, how, n) \
+        (0xe1000000 | how | (SCR_REG_OFS2(REG(reg))) | (n))
+
+#define SCR_STORE_R(reg, how, n) \
+        (0xe0000000 | how | (SCR_REG_OFS2(REG(reg))) | (n))
+
+#define SCR_LOAD_ABS(reg, n)   SCR_LOAD_R(reg, SCR_NO_FLUSH2, n)
+#define SCR_LOAD_REL(reg, n)   SCR_LOAD_R(reg, SCR_NO_FLUSH2|SCR_DSA_REL2, n)
+#define SCR_LOAD_ABS_F(reg, n) SCR_LOAD_R(reg, 0, n)
+#define SCR_LOAD_REL_F(reg, n) SCR_LOAD_R(reg, SCR_DSA_REL2, n)
+
+#define SCR_STORE_ABS(reg, n)  SCR_STORE_R(reg, SCR_NO_FLUSH2, n)
+#define SCR_STORE_REL(reg, n)  SCR_STORE_R(reg, SCR_NO_FLUSH2|SCR_DSA_REL2,n)
+#define SCR_STORE_ABS_F(reg, n)        SCR_STORE_R(reg, 0, n)
+#define SCR_STORE_REL_F(reg, n)        SCR_STORE_R(reg, SCR_DSA_REL2, n)
+
+
+/*-----------------------------------------------------------
+**
+**     Waiting for Disconnect or Reselect
+**
+**-----------------------------------------------------------
+**
+**     JUMP            [ | IFTRUE/IFFALSE ( ... ) ]
+**     <<address>>
+**
+**     JUMPR           [ | IFTRUE/IFFALSE ( ... ) ]
+**     <<distance>>
+**
+**     CALL            [ | IFTRUE/IFFALSE ( ... ) ]
+**     <<address>>
+**
+**     CALLR           [ | IFTRUE/IFFALSE ( ... ) ]
+**     <<distance>>
+**
+**     RETURN          [ | IFTRUE/IFFALSE ( ... ) ]
+**     <<dummy>>
+**
+**     INT             [ | IFTRUE/IFFALSE ( ... ) ]
+**     <<ident>>
+**
+**     INT_FLY         [ | IFTRUE/IFFALSE ( ... ) ]
+**     <<ident>>
+**
+**     Conditions:
+**          WHEN (phase)
+**          IF   (phase)
+**          CARRYSET
+**          DATA (data, mask)
+**
+**-----------------------------------------------------------
+*/
+
+#define SCR_NO_OP       0x80000000
+#define SCR_JUMP        0x80080000
+#define SCR_JUMP64      0x80480000
+#define SCR_JUMPR       0x80880000
+#define SCR_CALL        0x88080000
+#define SCR_CALLR       0x88880000
+#define SCR_RETURN      0x90080000
+#define SCR_INT         0x98080000
+#define SCR_INT_FLY     0x98180000
+
+#define IFFALSE(arg)   (0x00080000 | (arg))
+#define IFTRUE(arg)    (0x00000000 | (arg))
+
+#define WHEN(phase)    (0x00030000 | (phase))
+#define IF(phase)      (0x00020000 | (phase))
+
+#define DATA(D)        (0x00040000 | ((D) & 0xff))
+#define MASK(D,M)      (0x00040000 | (((M ^ 0xff) & 0xff) << 8ul)|((D) & 0xff))
+
+#define CARRYSET       (0x00200000)
+
+/*-----------------------------------------------------------
+**
+**     SCSI  constants.
+**
+**-----------------------------------------------------------
+*/
+
+/*
+**     Messages
+*/
+
+#define        M_COMPLETE      COMMAND_COMPLETE
+#define        M_EXTENDED      EXTENDED_MESSAGE
+#define        M_SAVE_DP       SAVE_POINTERS
+#define        M_RESTORE_DP    RESTORE_POINTERS
+#define        M_DISCONNECT    DISCONNECT
+#define        M_ID_ERROR      INITIATOR_ERROR
+#define        M_ABORT         ABORT_TASK_SET
+#define        M_REJECT        MESSAGE_REJECT
+#define        M_NOOP          NOP
+#define        M_PARITY        MSG_PARITY_ERROR
+#define        M_LCOMPLETE     LINKED_CMD_COMPLETE
+#define        M_FCOMPLETE     LINKED_FLG_CMD_COMPLETE
+#define        M_RESET         TARGET_RESET
+#define        M_ABORT_TAG     ABORT_TASK
+#define        M_CLEAR_QUEUE   CLEAR_TASK_SET
+#define        M_INIT_REC      INITIATE_RECOVERY
+#define        M_REL_REC       RELEASE_RECOVERY
+#define        M_TERMINATE     (0x11)
+#define        M_SIMPLE_TAG    SIMPLE_QUEUE_TAG
+#define        M_HEAD_TAG      HEAD_OF_QUEUE_TAG
+#define        M_ORDERED_TAG   ORDERED_QUEUE_TAG
+#define        M_IGN_RESIDUE   IGNORE_WIDE_RESIDUE
+#define        M_IDENTIFY      (0x80)
+
+#define        M_X_MODIFY_DP   EXTENDED_MODIFY_DATA_POINTER
+#define        M_X_SYNC_REQ    EXTENDED_SDTR
+#define        M_X_WIDE_REQ    EXTENDED_WDTR
+#define        M_X_PPR_REQ     EXTENDED_PPR
+
+/*
+**     Status
+*/
+
+#define        S_GOOD          (0x00)
+#define        S_CHECK_COND    (0x02)
+#define        S_COND_MET      (0x04)
+#define        S_BUSY          (0x08)
+#define        S_INT           (0x10)
+#define        S_INT_COND_MET  (0x14)
+#define        S_CONFLICT      (0x18)
+#define        S_TERMINATED    (0x20)
+#define        S_QUEUE_FULL    (0x28)
+#define        S_ILLEGAL       (0xff)
+#define        S_SENSE         (0x80)
+
+/*
+ * End of ncrreg from FreeBSD
+ */
 
 /*
        Build a scatter/gather entry.
index c1c1c687bcbd2cbf37f60b933c364c0910c688ec..5205c4e7d6fffb84c5608b2d687c195831322694 100644 (file)
@@ -1,55 +1,70 @@
 config SCSI_QLA2XXX
-       tristate
-       default (SCSI && PCI)
-       depends on SCSI && PCI
+       tristate "QLogic QLA2XXX Fibre Channel Support"
+       depends on PCI && SCSI
+       select SCSI_FC_ATTRS
+       select FW_LOADER
+       ---help---
+       This qla2xxx driver supports all QLogic Fibre Channel
+       PCI and PCIe host adapters.
 
-config SCSI_QLA21XX
-       tristate "QLogic ISP2100 host adapter family support"
+       By default, firmware for the ISP parts will be loaded
+       via the Firmware Loader interface.
+
+       ISP             Firmware Filename
+       ----------      -----------------
+       21xx            ql2100_fw.bin
+       22xx            ql2200_fw.bin
+       2300, 2312      ql2300_fw.bin
+       2322            ql2322_fw.bin
+       6312, 6322      ql6312_fw.bin
+       24xx            ql2400_fw.bin
+
+       Upon request, the driver caches the firmware image until
+       the driver is unloaded.
+
+       NOTE: The original method of building firmware-loader
+       modules has been deprecated as the firmware-images will
+       be removed from the kernel sources.
+
+config SCSI_QLA2XXX_EMBEDDED_FIRMWARE
+       bool "  Use firmware-loader modules (DEPRECATED)"
        depends on SCSI_QLA2XXX
-        select SCSI_FC_ATTRS
-       select FW_LOADER
+
+config SCSI_QLA21XX
+       tristate "  Build QLogic ISP2100 firmware-module"
+       depends on SCSI_QLA2XXX_EMBEDDED_FIRMWARE
        ---help---
        This driver supports the QLogic 21xx (ISP2100) host adapter family.
 
 config SCSI_QLA22XX
-       tristate "QLogic ISP2200 host adapter family support"
-       depends on SCSI_QLA2XXX
-        select SCSI_FC_ATTRS
-       select FW_LOADER
+       tristate "  Build QLogic ISP2200 firmware-module"
+       depends on SCSI_QLA2XXX_EMBEDDED_FIRMWARE
        ---help---
        This driver supports the QLogic 22xx (ISP2200) host adapter family.
 
 config SCSI_QLA2300
-       tristate "QLogic ISP2300 host adapter family support"
-       depends on SCSI_QLA2XXX
-        select SCSI_FC_ATTRS
-       select FW_LOADER
+       tristate "  Build QLogic ISP2300 firmware-module"
+       depends on SCSI_QLA2XXX_EMBEDDED_FIRMWARE
        ---help---
        This driver supports the QLogic 2300 (ISP2300 and ISP2312) host
        adapter family.
 
 config SCSI_QLA2322
-       tristate "QLogic ISP2322 host adapter family support"
-       depends on SCSI_QLA2XXX
-        select SCSI_FC_ATTRS
-       select FW_LOADER
+       tristate "  Build QLogic ISP2322 firmware-module"
+       depends on SCSI_QLA2XXX_EMBEDDED_FIRMWARE
        ---help---
        This driver supports the QLogic 2322 (ISP2322) host adapter family.
 
 config SCSI_QLA6312
-       tristate "QLogic ISP63xx host adapter family support"
-       depends on SCSI_QLA2XXX
-        select SCSI_FC_ATTRS
-       select FW_LOADER
+       tristate "  Build QLogic ISP63xx firmware-module"
+       depends on SCSI_QLA2XXX_EMBEDDED_FIRMWARE
        ---help---
        This driver supports the QLogic 63xx (ISP6312 and ISP6322) host
        adapter family.
 
 config SCSI_QLA24XX
-       tristate "QLogic ISP24xx host adapter family support"
-       depends on SCSI_QLA2XXX
-       select SCSI_FC_ATTRS
-       select FW_LOADER
+       tristate "  Build QLogic ISP24xx firmware-module"
+       depends on SCSI_QLA2XXX_EMBEDDED_FIRMWARE
        ---help---
        This driver supports the QLogic 24xx (ISP2422 and ISP2432) host
        adapter family.
index b169687d08ff4d01145a4879f3fdb5f5eb41f18e..40c0de1258897966413cad237debe24377769aa7 100644 (file)
@@ -3,15 +3,18 @@ EXTRA_CFLAGS += -DUNIQUE_FW_NAME
 qla2xxx-y := qla_os.o qla_init.o qla_mbx.o qla_iocb.o qla_isr.o qla_gs.o \
                qla_dbg.o qla_sup.o qla_rscn.o qla_attr.o
 
+obj-$(CONFIG_SCSI_QLA2XXX) += qla2xxx.o
+
 qla2100-y := ql2100.o ql2100_fw.o
 qla2200-y := ql2200.o ql2200_fw.o
 qla2300-y := ql2300.o ql2300_fw.o
 qla2322-y := ql2322.o ql2322_fw.o
 qla6312-y := ql6312.o ql6312_fw.o
+qla2400-y := ql2400.o ql2400_fw.o
 
 obj-$(CONFIG_SCSI_QLA21XX) += qla2xxx.o qla2100.o
 obj-$(CONFIG_SCSI_QLA22XX) += qla2xxx.o qla2200.o
 obj-$(CONFIG_SCSI_QLA2300) += qla2xxx.o qla2300.o
 obj-$(CONFIG_SCSI_QLA2322) += qla2xxx.o qla2322.o
 obj-$(CONFIG_SCSI_QLA6312) += qla2xxx.o qla6312.o
-obj-$(CONFIG_SCSI_QLA24XX) += qla2xxx.o
+obj-$(CONFIG_SCSI_QLA24XX) += qla2xxx.o qla2400.o
diff --git a/drivers/scsi/qla2xxx/ql2400.c b/drivers/scsi/qla2xxx/ql2400.c
new file mode 100644 (file)
index 0000000..6c7165f
--- /dev/null
@@ -0,0 +1,111 @@
+/*
+ * QLogic Fibre Channel HBA Driver
+ * Copyright (c)  2003-2005 QLogic Corporation
+ *
+ * See LICENSE.qla2xxx for copyright and licensing details.
+ */
+#include <linux/init.h>
+#include <linux/module.h>
+#include <linux/pci.h>
+
+#include "qla_def.h"
+
+static char qla_driver_name[] = "qla2400";
+
+extern uint32_t fw2400_version_str[];
+extern uint32_t fw2400_addr01;
+extern uint32_t fw2400_code01[];
+extern uint32_t fw2400_length01;
+extern uint32_t fw2400_addr02;
+extern uint32_t fw2400_code02[];
+extern uint32_t fw2400_length02;
+
+static struct qla_fw_info qla_fw_tbl[] = {
+       {
+               .addressing     = FW_INFO_ADDR_EXTENDED,
+               .fwcode         = (unsigned short *)&fw2400_code01[0],
+               .fwlen          = (unsigned short *)&fw2400_length01,
+               .lfwstart       = (unsigned long *)&fw2400_addr01,
+       },
+       {
+               .addressing     = FW_INFO_ADDR_EXTENDED,
+               .fwcode         = (unsigned short *)&fw2400_code02[0],
+               .fwlen          = (unsigned short *)&fw2400_length02,
+               .lfwstart       = (unsigned long *)&fw2400_addr02,
+       },
+       { FW_INFO_ADDR_NOMORE, },
+};
+
+static struct qla_board_info qla_board_tbl[] = {
+       {
+               .drv_name       = qla_driver_name,
+               .isp_name       = "ISP2422",
+               .fw_info        = qla_fw_tbl,
+               .fw_fname       = "ql2400_fw.bin",
+       },
+       {
+               .drv_name       = qla_driver_name,
+               .isp_name       = "ISP2432",
+               .fw_info        = qla_fw_tbl,
+               .fw_fname       = "ql2400_fw.bin",
+       },
+};
+
+static struct pci_device_id qla24xx_pci_tbl[] = {
+       {
+               .vendor         = PCI_VENDOR_ID_QLOGIC,
+               .device         = PCI_DEVICE_ID_QLOGIC_ISP2422,
+               .subvendor      = PCI_ANY_ID,
+               .subdevice      = PCI_ANY_ID,
+               .driver_data    = (unsigned long)&qla_board_tbl[0],
+       },
+       {
+               .vendor         = PCI_VENDOR_ID_QLOGIC,
+               .device         = PCI_DEVICE_ID_QLOGIC_ISP2432,
+               .subvendor      = PCI_ANY_ID,
+               .subdevice      = PCI_ANY_ID,
+               .driver_data    = (unsigned long)&qla_board_tbl[1],
+       },
+       {0, 0},
+};
+MODULE_DEVICE_TABLE(pci, qla24xx_pci_tbl);
+
+static int __devinit
+qla24xx_probe_one(struct pci_dev *pdev, const struct pci_device_id *id)
+{
+       return qla2x00_probe_one(pdev,
+           (struct qla_board_info *)id->driver_data);
+}
+
+static void __devexit
+qla24xx_remove_one(struct pci_dev *pdev)
+{
+       qla2x00_remove_one(pdev);
+}
+
+static struct pci_driver qla24xx_pci_driver = {
+       .name           = "qla2400",
+       .id_table       = qla24xx_pci_tbl,
+       .probe          = qla24xx_probe_one,
+       .remove         = __devexit_p(qla24xx_remove_one),
+};
+
+static int __init
+qla24xx_init(void)
+{
+       return pci_module_init(&qla24xx_pci_driver);
+}
+
+static void __exit
+qla24xx_exit(void)
+{
+       pci_unregister_driver(&qla24xx_pci_driver);
+}
+
+module_init(qla24xx_init);
+module_exit(qla24xx_exit);
+
+MODULE_AUTHOR("QLogic Corporation");
+MODULE_DESCRIPTION("QLogic ISP24xx FC-SCSI Host Bus Adapter driver");
+MODULE_LICENSE("GPL");
+MODULE_VERSION(QLA2XXX_VERSION);
diff --git a/drivers/scsi/qla2xxx/ql2400_fw.c b/drivers/scsi/qla2xxx/ql2400_fw.c
new file mode 100644 (file)
index 0000000..5977795
--- /dev/null
@@ -0,0 +1,12376 @@
+/*
+ * QLogic Fibre Channel HBA Driver
+ * Copyright (c)  2003-2005 QLogic Corporation
+ *
+ * See LICENSE.qla2xxx for copyright and licensing details.
+ */
+#include <linux/types.h>
+
+/*
+ *     Firmware Version 4.00.16 (08:09 Oct 26, 2005)
+ */
+
+#ifdef UNIQUE_FW_NAME
+uint32_t fw2400_version = 4*1024+0;
+#else
+uint32_t risc_code_version = 4*1024+0;
+#endif
+
+#ifdef UNIQUE_FW_NAME
+uint32_t fw2400_version_str[] = {4, 0,16};
+#else
+uint32_t firmware_version[] = {4, 0,16};
+#endif
+
+#ifdef UNIQUE_FW_NAME
+#define fw2400_VERSION_STRING "4.00.16"
+#else
+#define FW_VERSION_STRING "4.00.16"
+#endif
+
+#ifdef UNIQUE_FW_NAME
+uint32_t fw2400_addr01 = 0x00100000 ;
+#else
+uint32_t risc_code_addr01 = 0x00100000 ;
+#endif
+
+#ifdef UNIQUE_FW_NAME
+uint32_t fw2400_code01[] = {
+#else
+uint32_t risc_code01[] = {
+#endif
+       0x0401f17c, 0x0010e000, 0x00100000, 0x0000ab4a,
+       0x00000004, 0x00000000, 0x00000010, 0x00000002,
+       0x00000003, 0x00000000, 0x20434f50, 0x59524947,
+       0x48542032, 0x30303520, 0x514c4f47, 0x49432043,
+       0x4f52504f, 0x52415449, 0x4f4e2020, 0x20495350,
+       0x32347878, 0x20466972, 0x6d776172, 0x65202020,
+       0x56657273, 0x696f6e20, 0x342e302e, 0x31362020,
+       0x20202024, 0x00000000, 0x00000000, 0x00000000,
+       0x00000000, 0x00000000, 0x00000000, 0x00000000,
+       0x00000000, 0x00000000, 0x00000000, 0x00000000,
+       0x00000000, 0x00000000, 0x00000000, 0x00000000,
+       0x00000000, 0x00000000, 0x00000000, 0x00000000,
+       0x42001800, 0x0010014f, 0x42002000, 0x0010b8fe,
+       0x500c0800, 0x800c1800, 0x500c1000, 0x800c1800,
+       0x54042000, 0x80102000, 0x80040800, 0x80081040,
+       0x040207fc, 0x500c0800, 0x800409c0, 0x040207f6,
+       0x44002000, 0x80102000, 0x40100000, 0x44040000,
+       0x80000000, 0x44080000, 0x80000000, 0x440c0000,
+       0x80000000, 0x44100000, 0x80000000, 0x44140000,
+       0x80000000, 0x44180000, 0x80000000, 0x441c0000,
+       0x80000000, 0x44200000, 0x80000000, 0x44240000,
+       0x80000000, 0x44280000, 0x80000000, 0x442c0000,
+       0x80000000, 0x44300000, 0x80000000, 0x44340000,
+       0x80000000, 0x44380000, 0x80000000, 0x443c0000,
+       0x80000000, 0x44400000, 0x80000000, 0x44440000,
+       0x80000000, 0x44480000, 0x80000000, 0x444c0000,
+       0x80000000, 0x44500000, 0x80000000, 0x44540000,
+       0x80000000, 0x44580000, 0x80000000, 0x445c0000,
+       0x80000000, 0x44600000, 0x80000000, 0x44640000,
+       0x80000000, 0x44680000, 0x80000000, 0x446c0000,
+       0x80000000, 0x44700000, 0x80000000, 0x44740000,
+       0x80000000, 0x44780000, 0x80000000, 0x447c0000,
+       0x80000000, 0x44800000, 0x80000000, 0x44840000,
+       0x80000000, 0x44880000, 0x80000000, 0x448c0000,
+       0x80000000, 0x44900000, 0x80000000, 0x44940000,
+       0x80000000, 0x44980000, 0x80000000, 0x449c0000,
+       0x80000000, 0x44a00000, 0x80000000, 0x44a40000,
+       0x80000000, 0x44a80000, 0x80000000, 0x44ac0000,
+       0x80000000, 0x44b00000, 0x80000000, 0x44b40000,
+       0x80000000, 0x44b80000, 0x80000000, 0x44bc0000,
+       0x80000000, 0x44c00000, 0x80000000, 0x44c40000,
+       0x80000000, 0x44c80000, 0x80000000, 0x44cc0000,
+       0x80000000, 0x44d00000, 0x80000000, 0x44d80000,
+       0x80000000, 0x44d40000, 0x80000000, 0x44dc0000,
+       0x80000000, 0x44e00000, 0x80000000, 0x44e40000,
+       0x80000000, 0x44e80000, 0x80000000, 0x44ec0000,
+       0x80000000, 0x44f00000, 0x80000000, 0x44f40000,
+       0x80000000, 0x44f80000, 0x80000000, 0x44fc0000,
+       0x80000000, 0x45000000, 0x80000000, 0x45040000,
+       0x80000000, 0x45080000, 0x80000000, 0x450c0000,
+       0x80000000, 0x45100000, 0x80000000, 0x45140000,
+       0x80000000, 0x45180000, 0x80000000, 0x451c0000,
+       0x80000000, 0x45200000, 0x80000000, 0x45240000,
+       0x80000000, 0x45280000, 0x80000000, 0x452c0000,
+       0x80000000, 0x45300000, 0x80000000, 0x45340000,
+       0x80000000, 0x45380000, 0x80000000, 0x453c0000,
+       0x80000000, 0x45400000, 0x80000000, 0x45440000,
+       0x80000000, 0x45480000, 0x80000000, 0x454c0000,
+       0x80000000, 0x45500000, 0x80000000, 0x45540000,
+       0x80000000, 0x45580000, 0x80000000, 0x455c0000,
+       0x80000000, 0x45600000, 0x80000000, 0x45640000,
+       0x80000000, 0x45680000, 0x80000000, 0x456c0000,
+       0x80000000, 0x45700000, 0x80000000, 0x45740000,
+       0x80000000, 0x45780000, 0x80000000, 0x457c0000,
+       0x80000000, 0x45800000, 0x80000000, 0x45840000,
+       0x80000000, 0x45880000, 0x80000000, 0x458c0000,
+       0x80000000, 0x45900000, 0x80000000, 0x45940000,
+       0x80000000, 0x45980000, 0x80000000, 0x459c0000,
+       0x80000000, 0x45a00000, 0x80000000, 0x45a40000,
+       0x80000000, 0x45a80000, 0x80000000, 0x45ac0000,
+       0x80000000, 0x45b00000, 0x80000000, 0x45b40000,
+       0x80000000, 0x45b80000, 0x80000000, 0x45bc0000,
+       0x80000000, 0x45c00000, 0x80000000, 0x45c40000,
+       0x80000000, 0x45c80000, 0x80000000, 0x45cc0000,
+       0x80000000, 0x45d00000, 0x80000000, 0x45d40000,
+       0x80000000, 0x45d80000, 0x80000000, 0x45dc0000,
+       0x80000000, 0x45e00000, 0x80000000, 0x45e40000,
+       0x80000000, 0x45e80000, 0x80000000, 0x45ec0000,
+       0x80000000, 0x45f00000, 0x80000000, 0x45f40000,
+       0x80000000, 0x45f80000, 0x80000000, 0x45fc0000,
+       0x4a03c020, 0x00004000, 0x4a03c011, 0x40000010,
+       0x04006000, 0x4203e000, 0x40000000, 0x59e00017,
+       0x8c000508, 0x04000003, 0x4a03c017, 0x00000000,
+       0x4203e000, 0x30000001, 0x0401f000, 0x0000bf00,
+       0x00000080, 0x0000bfe0, 0x00000020, 0x0000ff00,
+       0x00000080, 0x0000ffd0, 0x00000030, 0x00007100,
+       0x00000010, 0x00007200, 0x00000008, 0x00007209,
+       0x00000007, 0x00007300, 0x00000008, 0x00007309,
+       0x00000007, 0x00007400, 0x00000008, 0x00007409,
+       0x00000007, 0x00007600, 0x000000b0, 0x00007700,
+       0x00000040, 0x00003000, 0x00000070, 0x00004000,
+       0x000000c0, 0x00006000, 0x00000050, 0x00006100,
+       0x00000010, 0x00006130, 0x00000010, 0x00006150,
+       0x00000010, 0x00006170, 0x00000010, 0x00006190,
+       0x00000010, 0x000061b0, 0x00000010, 0x00000000,
+       0x42000000, 0x00000100, 0x4202f000, 0x00000000,
+       0x42000800, 0x00021f00, 0x45780800, 0x80040800,
+       0x80000040, 0x040207fd, 0x4203f000, 0x00021fff,
+       0x40000000, 0x4203e000, 0x90000100, 0x40000000,
+       0x0201f800, 0x001006fd, 0x42000000, 0x00001000,
+       0x50000000, 0x82000480, 0x24320002, 0x04020015,
+       0x42000800, 0x00000064, 0x80040840, 0x04000007,
+       0x4a030000, 0x00000001, 0x40000000, 0x59800000,
+       0x8c000500, 0x040007f9, 0x04000008, 0x42000800,
+       0x00007a17, 0x50040000, 0x8c00050e, 0x04020003,
+       0x8400054e, 0x44000800, 0x4a030000, 0x00000000,
+       0x4a03c020, 0x00000004, 0x4203e000, 0x6000000f,
+       0x59e00023, 0x8c000500, 0x04020039, 0x42000000,
+       0x00100001, 0x50000800, 0x82040c00, 0x00000004,
+       0x58042003, 0x42001000, 0xffffffff, 0x0201f800,
+       0x001006f4, 0x0402004e, 0x58042003, 0x42001000,
+       0xffffffff, 0x0201f800, 0x001006f4, 0x04020048,
+       0x58042003, 0x42001000, 0x00ffffff, 0x0201f800,
+       0x001006f4, 0x04020042, 0x58042003, 0x42001000,
+       0x00ffffff, 0x0201f800, 0x001006f4, 0x0402003c,
+       0x42000000, 0x00100001, 0x5000a000, 0x8250a400,
+       0x00000004, 0x4200a800, 0x00020000, 0x5850b003,
+       0x0201f800, 0x0010ab17, 0x8250a400, 0x00000005,
+       0x4a0370e8, 0x00000003, 0x4200a800, 0x0000c000,
+       0x5850b003, 0x0201f800, 0x0010ab17, 0x4a0378e8,
+       0x00000003, 0x4200a800, 0x00008000, 0x5850b003,
+       0x0201f800, 0x0010ab17, 0x0401f02b, 0x42000800,
+       0x00020000, 0x58042003, 0x42001000, 0xffffffff,
+       0x0201f800, 0x001006f4, 0x04020019, 0x4a0370e8,
+       0x00000003, 0x42000800, 0x0000c000, 0x58042003,
+       0x82102500, 0x00ffffff, 0x42001000, 0x00ffffff,
+       0x0201f800, 0x001006f4, 0x0402000d, 0x4a0378e8,
+       0x00000003, 0x42000800, 0x00008000, 0x58042003,
+       0x82102500, 0x00ffffff, 0x42001000, 0x00ffffff,
+       0x0201f800, 0x001006f4, 0x0400000b, 0x4a03c020,
+       0x00004010, 0x4a03c011, 0x40100011, 0x04006000,
+       0x4203e000, 0x40000000, 0x4203e000, 0x30000001,
+       0x0401f000, 0x0201f800, 0x00100791, 0x42001000,
+       0x0010ab4a, 0x40080000, 0x80140480, 0x82001d00,
+       0xffffff00, 0x04020003, 0x40001800, 0x0401f003,
+       0x42001800, 0x000000ff, 0x480bc840, 0x480fc842,
+       0x04011000, 0x400c0000, 0x80081400, 0x40140000,
+       0x80080580, 0x040207f0, 0x4817500d, 0x45782800,
+       0x59c40000, 0x82000500, 0xffff0000, 0x80000120,
+       0x82000580, 0x00002422, 0x04020005, 0x59a80005,
+       0x8400054e, 0x48035005, 0x0401f008, 0x59e00003,
+       0x82000500, 0x00030000, 0x04000004, 0x59a80005,
+       0x84000554, 0x48035005, 0x42000800, 0x00000040,
+       0x59a80005, 0x8c000514, 0x0402000e, 0x42000800,
+       0x00001000, 0x82141480, 0x0017ffff, 0x04021009,
+       0x80040902, 0x82141480, 0x0013ffff, 0x04021005,
+       0x80040902, 0x82141480, 0x0011ffff, 0x04001b8d,
+       0x4807500e, 0x42001000, 0x00000024, 0x0201f800,
+       0x00106681, 0x82040c00, 0x0010d1c0, 0x4807500b,
+       0x4a03c810, 0x00100000, 0x4a03c811, 0x0010ab4a,
+       0x4a03c829, 0x00000004, 0x59e40001, 0x82000540,
+       0x0003001d, 0x4803c801, 0x4a03c014, 0x001c001c,
+       0x42001000, 0x0000001c, 0x0201f800, 0x001006e2,
+       0x4202c000, 0x0010d1c0, 0x59aab00b, 0x59aaa00b,
+       0x59aaa80b, 0x59aac80e, 0x49675069, 0x59a8000b,
+       0x4803500c, 0x0401fbf5, 0x0201f800, 0x00107903,
+       0x0201f800, 0x001007be, 0x0201f800, 0x00100807,
+       0x0201f800, 0x00101a05, 0x0201f800, 0x00101354,
+       0x0201f800, 0x00100969, 0x0201f800, 0x00101354,
+       0x0201f800, 0x00100f4c, 0x0201f800, 0x001066c1,
+       0x0401fb1a, 0x0201f800, 0x0010220e, 0x0201f800,
+       0x001053bb, 0x0201f800, 0x00104c90, 0x0201f800,
+       0x00106194, 0x0201f800, 0x00105f28, 0x0201f800,
+       0x001013ed, 0x0201f800, 0x0010126f, 0x4203e000,
+       0xf0000001, 0x42000000, 0x00001000, 0x50000000,
+       0x82000480, 0x24220001, 0x04000016, 0x59e00002,
+       0x8c00051e, 0x42000000, 0x7ffe00fe, 0x04020003,
+       0x42000000, 0x7ffe01fe, 0x50000800, 0x48075058,
+       0x80040920, 0x82040580, 0x0000013a, 0x04000004,
+       0x82040580, 0x0000013b, 0x04020006, 0x59a80005,
+       0x84000552, 0x48035005, 0x4a0378e4, 0x000c0000,
+       0x4a03c018, 0x0000000f, 0x4203e000, 0x20000511,
+       0x4203e000, 0x50010000, 0x4a03c020, 0x00000000,
+       0x04027013, 0x59e00020, 0x82000580, 0x00000002,
+       0x0402000f, 0x4a03c020, 0x00004000, 0x4a03c011,
+       0x40000010, 0x04006000, 0x4203e000, 0x40000000,
+       0x59e00017, 0x8c000508, 0x04000003, 0x4a03c017,
+       0x00000000, 0x4203e000, 0x30000001, 0x4202d800,
+       0x00000000, 0x4203e000, 0xb0600000, 0x59a80005,
+       0x42000800, 0x00000002, 0x8c000512, 0x04020007,
+       0x42000800, 0x0000000f, 0x8c000514, 0x04020003,
+       0x42000800, 0x00000001, 0x4007f800, 0x59a80005,
+       0x8c000514, 0x02020000, 0x00020004, 0x59e00003,
+       0x82000500, 0x00030000, 0x82000580, 0x00000000,
+       0x04020af8, 0x0201f000, 0x00020004, 0x4df00000,
+       0x4203e000, 0x50000000, 0x416c0000, 0x82000c80,
+       0x00000008, 0x04021aef, 0x0c01f804, 0x5c03e000,
+       0x0201f000, 0x00020008, 0x001002f7, 0x0010030a,
+       0x001003d7, 0x001002f6, 0x00100452, 0x001002f6,
+       0x001002f6, 0x00100593, 0x0401fae2, 0x42000800,
+       0x0010b4a4, 0x5804001d, 0x4803c857, 0x8c000500,
+       0x0400000d, 0x84000500, 0x4800081d, 0x4202d800,
+       0x00000004, 0x0401fbd3, 0x49f3c857, 0x5c000800,
+       0x5c000000, 0x82000540, 0x00003e00, 0x4c000000,
+       0x4c040000, 0x1c01f000, 0x0401fbbd, 0x0201f800,
+       0x0010513b, 0x04000009, 0x0201f800, 0x00105151,
+       0x0402002e, 0x59c40006, 0x82000540, 0x000000c0,
+       0x48038806, 0x0401f029, 0x0201f800, 0x001050a2,
+       0x836c0580, 0x00000001, 0x040200bc, 0x59a80017,
+       0x82000580, 0x00000009, 0x040200b8, 0x497b5010,
+       0x4a038893, 0x00000001, 0x42001000, 0x000000f0,
+       0x0201f800, 0x0010193d, 0x0201f800, 0x00105149,
+       0x59c41006, 0x04020006, 0x82081540, 0x000000f1,
+       0x82081500, 0xbbffffff, 0x0401f003, 0x82081540,
+       0x440000f1, 0x480b8806, 0x0201f800, 0x0010609e,
+       0x4a0378e4, 0x00002000, 0x42000000, 0x0010b83a,
+       0x0201f800, 0x0010aa47, 0x42001000, 0x00008030,
+       0x497b5013, 0x0401f035, 0x0201f800, 0x00103b38,
+       0x59c400a4, 0x82000500, 0x0000000f, 0x82000480,
+       0x00000007, 0x04021091, 0x0201f800, 0x0010609e,
+       0x59c400a3, 0x82000500, 0xffefffff, 0x480388a3,
+       0x59a8004b, 0x800001c0, 0x04020004, 0x0201f800,
+       0x00104139, 0x0401f085, 0x59a80015, 0x84000546,
+       0x48035015, 0x0201f800, 0x00105141, 0x59c41006,
+       0x04020006, 0x82081540, 0x44000001, 0x82081500,
+       0xffffff0f, 0x0401f003, 0x82081540, 0x440000f1,
+       0x480b8806, 0x497b9005, 0x4a038802, 0x0000ffff,
+       0x4a0378e4, 0x00003000, 0x42000000, 0x0010b80c,
+       0x0201f800, 0x0010aa47, 0x59a81010, 0x42000800,
+       0x00000003, 0x0201f800, 0x00106c78, 0x42001000,
+       0x00008010, 0x59a8180a, 0x0201f800, 0x00103a3e,
+       0x0201f800, 0x00101815, 0x59a80805, 0x82040d00,
+       0xffffffdf, 0x48075005, 0x0201f800, 0x0010483d,
+       0x0201f800, 0x0010513b, 0x0400000a, 0x0201f800,
+       0x0010413e, 0x04000007, 0x4a035013, 0x00000001,
+       0x497b5021, 0x0201f800, 0x00103c80, 0x0401f04f,
+       0x0201f800, 0x001048ec, 0x04000005, 0x59c41002,
+       0x8408150c, 0x480b8802, 0x0401f012, 0x0201f800,
+       0x0010513b, 0x04020006, 0x59a8001d, 0x80000540,
+       0x02000800, 0x0010930f, 0x0401f00a, 0x0201f800,
+       0x0010930f, 0x59a80026, 0x8c000506, 0x04020005,
+       0x59a8001d, 0x80000540, 0x02020800, 0x00104245,
+       0x497b5028, 0x497b5027, 0x497b5018, 0x0201f800,
+       0x0010513b, 0x59a81026, 0x0402000a, 0x0201f800,
+       0x0010162a, 0x80001580, 0x59a8002a, 0x82000500,
+       0xffff0000, 0x80040d40, 0x4807502a, 0x0401f005,
+       0x59a8002a, 0x82000500, 0xffff0000, 0x4803502a,
+       0x599c0017, 0x8c00050a, 0x04000002, 0x84081544,
+       0x480b5026, 0x0201f800, 0x0010513b, 0x04000004,
+       0x0201f800, 0x0010162a, 0x48078880, 0x42001000,
+       0x00000005, 0x0201f800, 0x001070b0, 0x497b5028,
+       0x497b501b, 0x4a03501c, 0x0000ffff, 0x4a0378e4,
+       0x000000c0, 0x4202d800, 0x00000002, 0x0201f800,
+       0x0010513b, 0x04000007, 0x59a80026, 0x82000500,
+       0x0000000c, 0x82000580, 0x00000004, 0x04000003,
+       0x0201f800, 0x00101e45, 0x1c01f000, 0x59a8001c,
+       0x82000580, 0x0000ffff, 0x04000004, 0x0201f800,
+       0x00101e45, 0x0401f074, 0x59a80026, 0x8c00050a,
+       0x04020003, 0x8c000506, 0x0400001c, 0x8c000500,
+       0x0400001a, 0x4a038802, 0x0000ffbf, 0x8c000502,
+       0x04000016, 0x599c0018, 0x8c000516, 0x04020010,
+       0x59a80027, 0x82000580, 0x0000ffff, 0x0400000c,
+       0x0201f800, 0x00101f9a, 0x59a80026, 0x8c000504,
+       0x0402005d, 0x42001000, 0x00000003, 0x417a5800,
+       0x0201f800, 0x00101fbf, 0x0401f057, 0x59a80028,
+       0x80000540, 0x04020054, 0x59a80026, 0x8c000508,
+       0x04020005, 0x59a8001b, 0x80000540, 0x0402004e,
+       0x0401f003, 0x8c000516, 0x0400004b, 0x0201f800,
+       0x001048ec, 0x04020048, 0x599c0018, 0x8c000516,
+       0x04020004, 0x0201f800, 0x00104c51, 0x04020042,
+       0x599c0017, 0x8c00050a, 0x0400000d, 0x4200b000,
+       0x000007f0, 0x417a8800, 0x0201f800, 0x00020245,
+       0x04020004, 0x59340200, 0x8c00051a, 0x04020036,
+       0x81468800, 0x8058b040, 0x040207f8, 0x4a038802,
+       0x0000ffff, 0x42001800, 0x0010b4eb, 0x0401fb8c,
+       0x42001800, 0x0010b4f8, 0x0401fb89, 0x59a80005,
+       0x84000502, 0x48035005, 0x4a0378e4, 0x00000080,
+       0x4202d800, 0x00000003, 0x4a03501c, 0x0000ffff,
+       0x0401fa7f, 0x80000580, 0x0201f800, 0x00101590,
+       0x599c0018, 0x8c000516, 0x04000004, 0x0201f800,
+       0x00103b10, 0x0401f009, 0x42001800, 0x0000ffff,
+       0x42002000, 0x00000006, 0x42003000, 0x00000000,
+       0x0201f800, 0x00103aae, 0x0201f800, 0x00105151,
+       0x0400000b, 0x59c40006, 0x0201f800, 0x0010513b,
+       0x04000004, 0x82000500, 0xffffff0f, 0x0401f003,
+       0x82000500, 0xfbffffff, 0x48038806, 0x0201f800,
+       0x00106f36, 0x1c01f000, 0x4c040000, 0x4c080000,
+       0x4c100000, 0x59a8003e, 0x82000c80, 0x00000004,
+       0x04021980, 0x0c01f805, 0x5c002000, 0x5c001000,
+       0x5c000800, 0x1c01f000, 0x00100462, 0x001004ea,
+       0x00100516, 0x00100577, 0x42000000, 0x00000001,
+       0x0201f800, 0x00101590, 0x0201f800, 0x0010609e,
+       0x59c408a3, 0x82040d00, 0xfffffff7, 0x480788a3,
+       0x0201f800, 0x00105141, 0x0400000e, 0x0201f800,
+       0x00105151, 0x0400000b, 0x0201f800, 0x00105149,
+       0x04020964, 0x59c400a3, 0x84000532, 0x84000570,
+       0x480388a3, 0x4a038808, 0x00000008, 0x0401f010,
+       0x59c400a3, 0x84000530, 0x82000500, 0xbf7fffff,
+       0x480388a3, 0x42000800, 0x000000f8, 0x0201f800,
+       0x00104200, 0x59c400a3, 0x82000540, 0x00018000,
+       0x8400051c, 0x480388a3, 0x497b8808, 0x59c40006,
+       0x82000500, 0xfbffff0e, 0x48038806, 0x497b2822,
+       0x497b2823, 0x42000800, 0x000001f4, 0x42001000,
+       0x00100591, 0x0201f800, 0x00105f83, 0x59c40805,
+       0x42001000, 0x00000001, 0x0201f800, 0x0010193d,
+       0x0201f800, 0x0010163b, 0x0402000a, 0x42000000,
+       0x00000001, 0x0201f800, 0x0010188c, 0x42000000,
+       0x00000001, 0x0201f800, 0x00101821, 0x0401f022,
+       0x0201f800, 0x00101642, 0x04020008, 0x41780000,
+       0x0201f800, 0x0010188c, 0x41780000, 0x0201f800,
+       0x00101821, 0x0401f018, 0x0201f800, 0x00101649,
+       0x0402000a, 0x42000000, 0x00000002, 0x0201f800,
+       0x0010188c, 0x42000000, 0x00000002, 0x0201f800,
+       0x00101821, 0x0401f00c, 0x0201f800, 0x00101650,
+       0x04020918, 0x59a80049, 0x800001c0, 0x04000006,
+       0x0201f800, 0x00101656, 0x4a03503e, 0x00000001,
+       0x0401f021, 0x0201f800, 0x00101927, 0x4a03503e,
+       0x00000001, 0x0201f800, 0x00105141, 0x0400000c,
+       0x0201f800, 0x00105151, 0x04000009, 0x0201f800,
+       0x00105149, 0x04020903, 0x4a035033, 0x00000001,
+       0x0201f800, 0x001050a2, 0x0401f00f, 0x59c400a4,
+       0x82000500, 0x0000000f, 0x82000580, 0x00000008,
+       0x04000003, 0x4a038805, 0x04000000, 0x59c400a3,
+       0x82000540, 0x0001c000, 0x480388a3, 0x84000520,
+       0x480388a3, 0x1c01f000, 0x0401f8a3, 0x04020004,
+       0x4a03503e, 0x00000003, 0x0401f027, 0x0201f800,
+       0x00101650, 0x04020011, 0x59a80049, 0x800001c0,
+       0x0400000e, 0x0201f800, 0x00101656, 0x59a80048,
+       0x8c00051e, 0x0400001c, 0x0201f800, 0x00105149,
+       0x04020009, 0x4a035033, 0x00000001, 0x0201f800,
+       0x001050a2, 0x0401f004, 0x0201f800, 0x001018d3,
+       0x04020011, 0x0201f800, 0x00101815, 0x4a03503e,
+       0x00000002, 0x497b5049, 0x59c400a3, 0x84000520,
+       0x480388a3, 0x497b2822, 0x497b2823, 0x42000800,
+       0x0000002d, 0x42001000, 0x00100591, 0x0201f800,
+       0x00105f83, 0x1c01f000, 0x0401f877, 0x04020004,
+       0x4a03503e, 0x00000003, 0x0401f05b, 0x4a038805,
+       0x000000f0, 0x0201f800, 0x001018d3, 0x04020050,
+       0x0201f800, 0x00105149, 0x04000044, 0x59c400a4,
+       0x82000500, 0x0000000f, 0x82000580, 0x00000008,
+       0x04000020, 0x59c40005, 0x8c000534, 0x0402001d,
+       0x59940022, 0x82000580, 0x00000001, 0x04020046,
+       0x0201f800, 0x00105151, 0x04020043, 0x4a038805,
+       0x000000f0, 0x0201f800, 0x00105196, 0x4a035032,
+       0x0000aaaa, 0x4a035033, 0x00000000, 0x59c408a3,
+       0x82040d40, 0x00000008, 0x480788a3, 0x4202d800,
+       0x00000001, 0x4a03503e, 0x00000000, 0x4a038805,
+       0x00000001, 0x497b2822, 0x497b2823, 0x0401f01f,
+       0x0201f800, 0x00105151, 0x04020007, 0x59a80032,
+       0x82000580, 0x0000aaaa, 0x04020003, 0x4a035010,
+       0x00ffffff, 0x497b5032, 0x59c40006, 0x82000540,
+       0x04000001, 0x48038806, 0x59a80805, 0x8c040d06,
+       0x04020005, 0x59c408a3, 0x82040d40, 0x00000008,
+       0x480788a3, 0x4202d800, 0x00000001, 0x4a03503e,
+       0x00000000, 0x4a038805, 0x00000001, 0x497b2822,
+       0x497b2823, 0x0401f010, 0x59c40005, 0x82000500,
+       0x000000c0, 0x0400000c, 0x59c40006, 0x82000540,
+       0x000000f1, 0x48038806, 0x0401f7ef, 0x0201f800,
+       0x00101650, 0x04020004, 0x59a80049, 0x800001c0,
+       0x040207a4, 0x497b8885, 0x1c01f000, 0x4803c856,
+       0x42000000, 0x00000001, 0x0201f800, 0x00101590,
+       0x4a03503e, 0x00000000, 0x0201f800, 0x00101650,
+       0x0402000b, 0x59a80052, 0x800001c0, 0x04000004,
+       0x80000040, 0x48035052, 0x04020005, 0x4a035052,
+       0x0000000a, 0x4a035049, 0x00000001, 0x497b8885,
+       0x0401f0ed, 0x59940022, 0x59940823, 0x80040540,
+       0x1c01f000, 0x497b2823, 0x1c01f000, 0x4c080000,
+       0x42001000, 0x000000f0, 0x0201f800, 0x0010193d,
+       0x5c001000, 0x1c01f000, 0x4a03505c, 0x00000004,
+       0x4a03505d, 0x00000000, 0x4a03505e, 0x00000010,
+       0x4a03505f, 0x00000002, 0x4a035010, 0x00ffffff,
+       0x0201f800, 0x0010930f, 0x4a03502a, 0x20200000,
+       0x4a03502b, 0x88000200, 0x4a03502c, 0x00ff001f,
+       0x4a03502d, 0x000007d0, 0x4a03502e, 0x80000000,
+       0x4a03502f, 0x00000200, 0x4a035030, 0x00ff0000,
+       0x4a035031, 0x00010000, 0x4a03503a, 0x514c4f47,
+       0x4a03503b, 0x49432020, 0x1c01f000, 0x4d440000,
+       0x417a8800, 0x41780800, 0x0201f800, 0x00020245,
+       0x04020005, 0x0201f800, 0x001049e7, 0x04020002,
+       0x80040800, 0x81468800, 0x83440580, 0x000007f0,
+       0x040207f6, 0x5c028800, 0x1c01f000, 0x4803c857,
+       0x5c000000, 0x4c000000, 0x4803c857, 0x0401f809,
+       0x485fc857, 0x4203e000, 0x50000000, 0x5c000000,
+       0x4d780000, 0x4200b800, 0x00008002, 0x0401f006,
+       0x485fc857, 0x4203e000, 0x50000000, 0x4200b800,
+       0x00008002, 0x04006000, 0x4c000000, 0x4c040000,
+       0x59bc00ea, 0x82000500, 0x00000007, 0x82000580,
+       0x00000001, 0x04020005, 0x42000800, 0x00000000,
+       0x0201f800, 0x00106c6c, 0x5c000800, 0x4807c025,
+       0x80040920, 0x4807c026, 0x5c000000, 0x4803c023,
+       0x80000120, 0x4803c024, 0x5c000000, 0x4803c857,
+       0x4803c021, 0x80000120, 0x4803c022, 0x41f80000,
+       0x4803c027, 0x80000120, 0x4803c028, 0x42000000,
+       0x00001000, 0x50000000, 0x82000480, 0x24320001,
+       0x4803c857, 0x0400104f, 0x42000800, 0x00000064,
+       0x80040840, 0x04000007, 0x4a030000, 0x00000001,
+       0x40000000, 0x59800000, 0x8c000500, 0x040007f9,
+       0x04000042, 0x42000800, 0x0010c1a3, 0x46000800,
+       0xfaceface, 0x80040800, 0x42001000, 0x00007a00,
+       0x58080013, 0x44000800, 0x80040800, 0x58080019,
+       0x44000800, 0x80040800, 0x5808001a, 0x44000800,
+       0x80040800, 0x5808001b, 0x44000800, 0x80040800,
+       0x5808001c, 0x44000800, 0x80040800, 0x5808001f,
+       0x44000800, 0x80040800, 0x42001000, 0x00007a40,
+       0x42001800, 0x0000000b, 0x50080000, 0x44000800,
+       0x80081000, 0x80040800, 0x800c1840, 0x040207fb,
+       0x42001800, 0x00000003, 0x42001000, 0x00007b00,
+       0x480c1003, 0x58080005, 0x44000800, 0x80040800,
+       0x800c1840, 0x040217fb, 0x42001000, 0x00007c00,
+       0x58080002, 0x44000800, 0x80040800, 0x58080003,
+       0x44000800, 0x80040800, 0x58080020, 0x44000800,
+       0x80040800, 0x58080021, 0x44000800, 0x80040800,
+       0x58080022, 0x44000800, 0x80040800, 0x58080023,
+       0x44000800, 0x80040800, 0x4a030000, 0x00000000,
+       0x485fc020, 0x905cb9c0, 0x825cbd40, 0x00000012,
+       0x485fc011, 0x4203e000, 0x40000000, 0x4202d800,
+       0x00000005, 0x59e00017, 0x8c000508, 0x04000003,
+       0x4a03c017, 0x00000002, 0x4203e000, 0x30000001,
+       0x0401f81a, 0x0401f7ff, 0x4a03c850, 0x0010c1bf,
+       0x4a03c851, 0x0010d1be, 0x4a03c853, 0x00000800,
+       0x4a03c855, 0x0001eb5a, 0x59e40001, 0x82000540,
+       0x00003f00, 0x4803c801, 0x4a03b104, 0x70000002,
+       0x4a03a804, 0x70000002, 0x4a03b004, 0x70000002,
+       0x42000000, 0x0010b8ec, 0x49780001, 0x49780002,
+       0x1c01f000, 0x1c01f000, 0x59a8006b, 0x8c000530,
+       0x040207fe, 0x4c080000, 0x42001000, 0x00000004,
+       0x0401f862, 0x5c001000, 0x4201d000, 0x00028b0a,
+       0x0201f800, 0x0010608e, 0x4c080000, 0x42001000,
+       0x00000008, 0x0401f859, 0x5c001000, 0x4201d000,
+       0x00028b0a, 0x0201f800, 0x0010608e, 0x4c080000,
+       0x42001000, 0x00000010, 0x0401f850, 0x5c001000,
+       0x4201d000, 0x00028b0a, 0x0201f800, 0x0010608e,
+       0x0401f7e2, 0x8c00050c, 0x59a8086b, 0x04020003,
+       0x84040d30, 0x0401f006, 0x84040d70, 0x4807506b,
+       0x42001000, 0x00000000, 0x0401f040, 0x4807506b,
+       0x836c0500, 0x00000007, 0x0c01f001, 0x001006e1,
+       0x001006c7, 0x001006c7, 0x001006af, 0x001006d4,
+       0x001006c7, 0x001006c7, 0x001006d4, 0x59a80005,
+       0x8c000514, 0x04020013, 0x59c40801, 0x82040d00,
+       0x00018000, 0x82040580, 0x00010000, 0x0400000a,
+       0x82040580, 0x00008000, 0x04000004, 0x42001000,
+       0x42004000, 0x0401f006, 0x42001000, 0x22002000,
+       0x0401f003, 0x42001000, 0x12001000, 0x0401f025,
+       0x42001000, 0x00001004, 0x0401f022, 0x59a80005,
+       0x8c000514, 0x04020008, 0x59a8006b, 0x8c000534,
+       0x04020004, 0x42001000, 0x74057005, 0x0401f819,
+       0x1c01f000, 0x42001000, 0x00002008, 0x0401f7fc,
+       0x59a8006b, 0x8c000534, 0x0402000a, 0x59a80005,
+       0x8c000514, 0x04000004, 0x42001000, 0x24052005,
+       0x0401f00c, 0x42001000, 0x74057005, 0x0401f009,
+       0x1c01f000, 0x1c01f000, 0x82081500, 0x0000001c,
+       0x82081540, 0x001c0000, 0x480bc013, 0x1c01f000,
+       0x59a8006b, 0x8c000530, 0x04000002, 0x84081570,
+       0x480b506b, 0x8c000530, 0x04020005, 0x82081500,
+       0x00007000, 0x80081114, 0x0401fff0, 0x1c01f000,
+       0x41780000, 0x50041800, 0x800c0400, 0x80040800,
+       0x80102040, 0x040207fc, 0x80080500, 0x80000540,
+       0x1c01f000, 0x4202f000, 0x00000000, 0x41780000,
+       0x41780800, 0x41781000, 0x41781800, 0x41782000,
+       0x41782800, 0x41783000, 0x41783800, 0x41784000,
+       0x41784800, 0x41785000, 0x41785800, 0x41786000,
+       0x41786800, 0x41787000, 0x41787800, 0x41788000,
+       0x41788800, 0x41789000, 0x41789800, 0x4178a000,
+       0x4178a800, 0x4178b000, 0x4178b800, 0x4178c000,
+       0x4178c800, 0x4178d000, 0x4178d800, 0x4178e000,
+       0x4178e800, 0x4178f000, 0x4178f800, 0x41790000,
+       0x41790800, 0x41791000, 0x41791800, 0x41792000,
+       0x41792800, 0x41793000, 0x41793800, 0x41794000,
+       0x41794800, 0x41795000, 0x41795800, 0x41796000,
+       0x41796800, 0x41797000, 0x41797800, 0x41798000,
+       0x41798800, 0x42019000, 0x0010b537, 0x42019800,
+       0x0010b50e, 0x4179a000, 0x4179b000, 0x4179a800,
+       0x4179b800, 0x4179c800, 0x4179c000, 0x4179d000,
+       0x4179d800, 0x4179e000, 0x4179e800, 0x4179f000,
+       0x4179f800, 0x417a0000, 0x417a0800, 0x417a1000,
+       0x417a1800, 0x417a2000, 0x42022800, 0x00006100,
+       0x417a3000, 0x417a3800, 0x417a4000, 0x417a4800,
+       0x417a5000, 0x417a5800, 0x417a6000, 0x417a6800,
+       0x417a7000, 0x417a7800, 0x417a8000, 0x417a8800,
+       0x417a9000, 0x417a9800, 0x417ae800, 0x417af800,
+       0x42030000, 0x00007c00, 0x42031000, 0x0010b806,
+       0x42031800, 0x0000bf1d, 0x42032000, 0x0000bf32,
+       0x42032800, 0x0010b7ce, 0x42033000, 0x0010b46e,
+       0x42034000, 0x0010b4a4, 0x42033800, 0x0010b4c3,
+       0x42034800, 0x0010b544, 0x42035000, 0x0010b400,
+       0x42035800, 0x0010ac00, 0x42030800, 0x0010b505,
+       0x417b6000, 0x42036800, 0x00006f00, 0x4203c800,
+       0x00003000, 0x42037000, 0x0000ff00, 0x42037800,
+       0x0000bf00, 0x42038000, 0x00007700, 0x42038800,
+       0x00004000, 0x42039000, 0x00006000, 0x42039800,
+       0x0010bedb, 0x4203a000, 0x00007600, 0x4203a800,
+       0x00007400, 0x4203b000, 0x00007200, 0x4203b800,
+       0x00007100, 0x4203c000, 0x00007000, 0x4203d000,
+       0x00000000, 0x4203e800, 0x00101b95, 0x417bd800,
+       0x1c01f000, 0x42000800, 0x00100000, 0x50040000,
+       0x4c000000, 0x42000000, 0x0000aaaa, 0x44000800,
+       0x42001800, 0x00005555, 0x41782000, 0x82102400,
+       0x00010000, 0x40100000, 0x80042c00, 0x440c2800,
+       0x42003000, 0x0000000a, 0x80183040, 0x040207ff,
+       0x50140000, 0x800c0580, 0x04020004, 0x50040000,
+       0x800c0580, 0x040207f2, 0x5c000000, 0x44000800,
+       0x80142840, 0x4817c861, 0x1c01f000, 0x59a8081f,
+       0x800409c0, 0x04020009, 0x49781c0c, 0x4a001a0c,
+       0x00000200, 0x4a001804, 0x07000000, 0x59a80010,
+       0x9c0001c0, 0x48001805, 0x0401fe01, 0x9c0409c0,
+       0x48041806, 0x1c01f000, 0x59a8080c, 0x4006d000,
+       0x4202b800, 0x00000001, 0x59a8180d, 0x480fc857,
+       0x82041400, 0x00000014, 0x82082400, 0x00000014,
+       0x40100000, 0x800c0480, 0x04001006, 0x44080800,
+       0x40080800, 0x40101000, 0x815eb800, 0x0401f7f7,
+       0x45780800, 0x495f5020, 0x1c01f000, 0x835c0480,
+       0x00000020, 0x04001009, 0x496bc857, 0x815eb840,
+       0x416a5800, 0x592ed000, 0x497a5800, 0x497a5801,
+       0x812e59c0, 0x1c01f000, 0x42000000, 0x0010b853,
+       0x0201f800, 0x0010aa47, 0x417a5800, 0x0401f7f9,
+       0x815eb840, 0x04001008, 0x416a5800, 0x492fc857,
+       0x592ed000, 0x497a5800, 0x497a5801, 0x812e59c0,
+       0x1c01f000, 0x42000000, 0x0010b853, 0x0201f800,
+       0x0010aa47, 0x417ab800, 0x417a5800, 0x0401f7f8,
+       0x492fc857, 0x496a5800, 0x412ed000, 0x815eb800,
+       0x59c80000, 0x82000540, 0x00001200, 0x48039000,
+       0x1c01f000, 0x492fc857, 0x812e59c0, 0x04000007,
+       0x592c0001, 0x497a5801, 0x4c000000, 0x0401fff1,
+       0x5c025800, 0x0401f7f9, 0x1c01f000, 0x4807c856,
+       0x42007000, 0x0010b7f8, 0x4a007001, 0x00000000,
+       0x59e00003, 0x82000540, 0x00008080, 0x4803c003,
+       0x4a03b805, 0x90000001, 0x59dc0006, 0x4a03b805,
+       0x70000000, 0x59dc0006, 0x4a03b805, 0x30000000,
+       0x4200b000, 0x00000020, 0x497bb807, 0x8058b040,
+       0x040207fe, 0x4a03b805, 0x30000000, 0x59dc0006,
+       0x4a03b805, 0x60000001, 0x59dc0006, 0x4a03b805,
+       0x70000001, 0x59dc0006, 0x4a03b805, 0x30000002,
+       0x4200b000, 0x00000020, 0x497bb807, 0x8058b040,
+       0x040207fe, 0x4a03b805, 0x30000000, 0x59dc0006,
+       0x4a03b805, 0x60000001, 0x0401ffa1, 0x04000da5,
+       0x42001000, 0x0010b7f6, 0x452c1000, 0x4a025801,
+       0x00000001, 0x4a025802, 0x00000100, 0x4a025809,
+       0x00107149, 0x497a580a, 0x497a580b, 0x497a580c,
+       0x0401ff93, 0x04000d97, 0x42001000, 0x0010b7f7,
+       0x452c1000, 0x4a025801, 0x00000000, 0x4a025802,
+       0x00000100, 0x4a025809, 0x001011bc, 0x497a5803,
+       0x497a5807, 0x497a5808, 0x497a580a, 0x59a80005,
+       0x8c00050e, 0x04000006, 0x4a03b805, 0xe0000001,
+       0x59dc0006, 0x8c000522, 0x040007fc, 0x1c01f000,
+       0x4df00000, 0x4203e000, 0x50000000, 0x4c380000,
+       0x40087000, 0x480bc857, 0x4a007002, 0x00000000,
+       0x42007000, 0x0010b7f8, 0x82080400, 0x00000000,
+       0x45780000, 0x58380005, 0x48087005, 0x80000540,
+       0x04000005, 0x82000400, 0x00000000, 0x44080000,
+       0x0401f003, 0x480bc857, 0x48087006, 0x58380001,
+       0x80000540, 0x0400080c, 0x5c007000, 0x5c03e000,
+       0x1c01f000, 0x4c380000, 0x42007000, 0x0010b7f8,
+       0x58380001, 0x80000540, 0x04000803, 0x5c007000,
+       0x1c01f000, 0x42007000, 0x0010b7f8, 0x58380001,
+       0x82000580, 0x00000000, 0x04020012, 0x58380000,
+       0x0c01f001, 0x0010088e, 0x0010088d, 0x0010088d,
+       0x0010088d, 0x0010088d, 0x0010088d, 0x0010088d,
+       0x0010088d, 0x0401fd4b, 0x58380808, 0x800409c0,
+       0x04020024, 0x58380006, 0x80000540, 0x04020002,
+       0x1c01f000, 0x4803c857, 0x48007002, 0x40006800,
+       0x58340000, 0x80000540, 0x04020002, 0x48007005,
+       0x48007006, 0x4a03b805, 0x20000000, 0x59dc0006,
+       0x4a03b805, 0x30000000, 0x58340007, 0x4803b800,
+       0x58340008, 0x4803b801, 0x58340004, 0x48007003,
+       0x58340003, 0x48007004, 0x4803b803, 0x58340001,
+       0x8c000500, 0x04000004, 0x4a007001, 0x00000001,
+       0x0401f028, 0x4a007001, 0x00000002, 0x0401f03d,
+       0x0201f800, 0x001093ea, 0x0201f800, 0x0010a69d,
+       0x04000017, 0x4a03b805, 0x20000000, 0x59dc0006,
+       0x4a03b805, 0x30000000, 0x4807b800, 0x480bb801,
+       0x4a007003, 0x00000010, 0x480c7009, 0x42001000,
+       0x00100875, 0x0201f800, 0x00105f9a, 0x58380008,
+       0x82000400, 0x00000004, 0x48007004, 0x4803b803,
+       0x4a007001, 0x00000007, 0x0401f022, 0x0201f800,
+       0x00109402, 0x42000800, 0x00000001, 0x42001000,
+       0x00100875, 0x0201f800, 0x00105f76, 0x0401f7ba,
+       0x4c040000, 0x4c080000, 0x58380803, 0x42001000,
+       0x00003fff, 0x82040480, 0x00003fff, 0x04021003,
+       0x40041000, 0x80000580, 0x48007003, 0x800800c4,
+       0x4803b802, 0x4a03b805, 0x30000002, 0x59dc0006,
+       0x4a03b805, 0x70000001, 0x59dc0006, 0x4a03b805,
+       0x10000000, 0x5c001000, 0x5c000800, 0x1c01f000,
+       0x483bc857, 0x4c040000, 0x4c080000, 0x58380803,
+       0x42001000, 0x00003fff, 0x82040480, 0x00003fff,
+       0x04021003, 0x40041000, 0x80000580, 0x48007003,
+       0x800800c4, 0x4803b802, 0x4a03b805, 0x10000002,
+       0x5c001000, 0x5c000800, 0x1c01f000, 0x4c040000,
+       0x4c380000, 0x42007000, 0x0010b7f8, 0x59dc0806,
+       0x4807c857, 0x4a03b805, 0x20000000, 0x8c040d3e,
+       0x04000007, 0x8c040d08, 0x04020cca, 0x58380001,
+       0x82000500, 0x00000007, 0x0c01f804, 0x5c007000,
+       0x5c000800, 0x1c01f000, 0x0010087d, 0x0010091e,
+       0x0010092e, 0x001005d8, 0x001005d8, 0x001005d8,
+       0x001005d8, 0x001011ea, 0x4807c856, 0x82040d00,
+       0x43000f80, 0x04020009, 0x58380003, 0x80000540,
+       0x0400001c, 0x59dc0000, 0x4803b800, 0x59dc0001,
+       0x4803b801, 0x0401f7af, 0x58380802, 0x4a000802,
+       0x00000200, 0x0401f01e, 0x4807c856, 0x82040d00,
+       0x43000f80, 0x04020009, 0x58380003, 0x80000540,
+       0x0400000c, 0x59dc0000, 0x4803b800, 0x59dc0001,
+       0x4803b801, 0x0401f7b7, 0x58380002, 0x82000400,
+       0x00000002, 0x46000000, 0x00000200, 0x0401f00c,
+       0x4c340000, 0x58386802, 0x59dc0000, 0x4803c857,
+       0x48006807, 0x59dc0001, 0x4803c857, 0x48006808,
+       0x4a006802, 0x00000100, 0x5c006800, 0x4a007001,
+       0x00000000, 0x4c300000, 0x58386002, 0x0401f80c,
+       0x04000009, 0x58300009, 0x82000c80, 0x0010ab4a,
+       0x04021c84, 0x82000c80, 0x00020000, 0x04001c81,
+       0x0801f800, 0x5c006000, 0x0401f723, 0x4833c857,
+       0x803061c0, 0x04000009, 0x59a8000c, 0x80300480,
+       0x04001007, 0x59a8000d, 0x80300480, 0x04021004,
+       0x82000540, 0x00000001, 0x1c01f000, 0x80000580,
+       0x1c01f000, 0x4803c856, 0x4dc00000, 0x42007000,
+       0x0010b803, 0x4a007400, 0x00000000, 0x49787001,
+       0x42038000, 0x00007720, 0x4a038006, 0x60000001,
+       0x4a038009, 0xf4f60000, 0x42038000, 0x00007700,
+       0x4a038006, 0x60000001, 0x4a038009, 0xf4f60000,
+       0x4a03c822, 0x00000010, 0x4a0370e8, 0x00000000,
+       0x0401f809, 0x4a0370e9, 0x00003a0f, 0x4a0370e8,
+       0x00000000, 0x4a0370e8, 0x00000001, 0x5c038000,
+       0x1c01f000, 0x4c5c0000, 0x4178b800, 0x0401f80a,
+       0x5c00b800, 0x1c01f000, 0x4803c856, 0x4c5c0000,
+       0x825cbd40, 0x00000001, 0x0401f803, 0x5c00b800,
+       0x1c01f000, 0x4803c856, 0x4dc00000, 0x4c500000,
+       0x4c580000, 0x4c540000, 0x4a0370e8, 0x00000000,
+       0x805cb9c0, 0x04000009, 0x4a038807, 0x00000004,
+       0x59b800ea, 0x8c000510, 0x04000004, 0x59b800e0,
+       0x0401f87b, 0x0401f7fb, 0x42038000, 0x00007720,
+       0x0201f800, 0x00100ec1, 0x59c00007, 0x4a038006,
+       0x20000000, 0x59c00007, 0x4a038006, 0x8000000a,
+       0x59c00007, 0x4a038006, 0x8000000b, 0x59c00007,
+       0x4a038006, 0x40000001, 0x83c00580, 0x00007700,
+       0x04000004, 0x42038000, 0x00007700, 0x0401f7ed,
+       0x42038000, 0x00007720, 0x42000800, 0x00000800,
+       0x59c00007, 0x8c00051e, 0x04000006, 0x4a038006,
+       0x90000001, 0x80040840, 0x040207fa, 0x0401fc11,
+       0x83c00580, 0x00007700, 0x04000004, 0x42038000,
+       0x00007700, 0x0401f7f1, 0x805cb9c0, 0x0402001d,
+       0x4200b000, 0x00000020, 0x83b8ac00, 0x00000020,
+       0x0201f800, 0x0010ab20, 0x4a0370fb, 0x00000001,
+       0x4a037020, 0x001010bd, 0x59a80039, 0x82000500,
+       0x0000ffff, 0x48037021, 0x4a037035, 0x0010bddb,
+       0x4a037030, 0x0010b410, 0x4a037031, 0x0010ac00,
+       0x4a037032, 0x0010b519, 0x4a037036, 0x0010b524,
+       0x59840002, 0x48037034, 0x4a037038, 0x001010b4,
+       0x4a0370fb, 0x00000001, 0x4178a000, 0x4200b000,
+       0x00000020, 0x83b8ac00, 0x00000000, 0x0201f800,
+       0x0010ab20, 0x4200b000, 0x00000040, 0x83b8ac00,
+       0x00000040, 0x0201f800, 0x0010ab20, 0x805cb9c0,
+       0x04020004, 0x4a0370e4, 0xaaaaaaaa, 0x0401f003,
+       0x4a0370e4, 0xa2aaaa82, 0x4a0370e5, 0xaaaaaaaa,
+       0x4a0370e6, 0xaaaaaaaa, 0x4a0370fb, 0x00000000,
+       0x4a0370e6, 0xaaaaaaaa, 0x42038000, 0x00007720,
+       0x4a038006, 0x90000000, 0x59c00007, 0x8c00051e,
+       0x02020800, 0x001005d8, 0x42038000, 0x00007700,
+       0x4a038006, 0x90000000, 0x59c00007, 0x8c00051e,
+       0x02020800, 0x001005d8, 0x5c00a800, 0x5c00b000,
+       0x5c00a000, 0x5c038000, 0x1c01f000, 0x4d300000,
+       0x4d380000, 0x40026000, 0x82000500, 0x7f000000,
+       0x82000580, 0x00000003, 0x0402000f, 0x83326500,
+       0x00ffffff, 0x59300203, 0x82000580, 0x00000004,
+       0x04020009, 0x59300c06, 0x82040580, 0x00000009,
+       0x04020005, 0x42027000, 0x00000047, 0x0201f800,
+       0x000207a1, 0x5c027000, 0x5c026000, 0x1c01f000,
+       0x4d300000, 0x4d2c0000, 0x4d340000, 0x4d400000,
+       0x4cfc0000, 0x4d380000, 0x4d3c0000, 0x4d440000,
+       0x4d4c0000, 0x4d480000, 0x4c5c0000, 0x4c600000,
+       0x4c640000, 0x4cc80000, 0x4ccc0000, 0x4cf00000,
+       0x4cf40000, 0x4cf80000, 0x4cfc0000, 0x4d000000,
+       0x4d040000, 0x0201f800, 0x00020015, 0x5c020800,
+       0x5c020000, 0x5c01f800, 0x5c01f000, 0x5c01e800,
+       0x5c01e000, 0x5c019800, 0x5c019000, 0x5c00c800,
+       0x5c00c000, 0x5c00b800, 0x5c029000, 0x5c029800,
+       0x5c028800, 0x5c027800, 0x5c027000, 0x5c01f800,
+       0x5c028000, 0x5c026800, 0x5c025800, 0x5c026000,
+       0x1c01f000, 0x493bc857, 0x0201f000, 0x00020044,
+       0x83300500, 0x1f000000, 0x04000008, 0x81326580,
+       0x80000130, 0x82000c80, 0x00000014, 0x02021800,
+       0x001005d8, 0x0c01f013, 0x83300500, 0x000000ff,
+       0x82000c80, 0x00000007, 0x02021800, 0x001005d8,
+       0x0c01f025, 0x1c01f000, 0x82000d00, 0xc0000038,
+       0x02020800, 0x001005d0, 0x0201f800, 0x001005d8,
+       0x00000000, 0x00000048, 0x00000054, 0x00000053,
+       0x00100a9b, 0x00100abf, 0x00100aba, 0x00100adf,
+       0x00100aa6, 0x00100ab2, 0x00100a9b, 0x00100ada,
+       0x00100b1a, 0x00100a9b, 0x00100a9b, 0x00100a9b,
+       0x00100a9b, 0x00100b1d, 0x00100b23, 0x00100b34,
+       0x00100b45, 0x00100a9b, 0x00100b4e, 0x00100b5a,
+       0x00100a9b, 0x00100a9b, 0x00100a9b, 0x0201f800,
+       0x001005d8, 0x00100aa4, 0x00100bff, 0x00100aec,
+       0x00100b0f, 0x00100aa4, 0x00100aa4, 0x00100aa4,
+       0x0201f800, 0x001005d8, 0x4803c856, 0x59300004,
+       0x8c00053e, 0x04020005, 0x42027000, 0x00000055,
+       0x0201f000, 0x000207a1, 0x0201f800, 0x00106f60,
+       0x040007fa, 0x1c01f000, 0x4803c856, 0x0401f8a9,
+       0x40002800, 0x41782000, 0x42027000, 0x00000056,
+       0x0201f000, 0x000207a1, 0x4803c856, 0x42027000,
+       0x00000057, 0x0201f000, 0x000207a1, 0x4803c856,
+       0x59300007, 0x8c00051a, 0x04020010, 0x59325808,
+       0x812e59c0, 0x04000014, 0x592c0408, 0x8c00051c,
+       0x04020003, 0x4a026011, 0xffffffff, 0x59300004,
+       0x8c00053e, 0x04020009, 0x42027000, 0x00000048,
+       0x0201f000, 0x000207a1, 0x59325808, 0x4a025a06,
+       0x00000007, 0x0401f7f4, 0x0201f800, 0x00106f60,
+       0x040007f6, 0x1c01f000, 0x4803c856, 0x83300500,
+       0x00ffffff, 0x0201f000, 0x001064d7, 0x1c01f000,
+       0x4c040000, 0x59b808ea, 0x82040d00, 0x00000007,
+       0x82040580, 0x00000003, 0x04000004, 0x42000000,
+       0x60000000, 0x0401f8ab, 0x5c000800, 0x1c01f000,
+       0x0401f8f9, 0x59325808, 0x812e59c0, 0x04000018,
+       0x592c0204, 0x82000500, 0x000000ff, 0x82000d80,
+       0x00000029, 0x04020012, 0x59300203, 0x82000580,
+       0x00000003, 0x0400000b, 0x59300807, 0x84040d26,
+       0x48066007, 0x0201f800, 0x00020086, 0x4a03900d,
+       0x00000040, 0x4a0370e5, 0x00000008, 0x1c01f000,
+       0x0201f800, 0x00106f60, 0x040007f4, 0x59880052,
+       0x80000000, 0x48031052, 0x4a03900d, 0x00000040,
+       0x42000000, 0xc0000000, 0x0401f05a, 0x42007800,
+       0x0010bde2, 0x42002000, 0x00003000, 0x42003000,
+       0x00000105, 0x0201f800, 0x00105e04, 0x4a0370e4,
+       0x02000000, 0x1c01f000, 0x4933c857, 0x0201f000,
+       0x0002077d, 0x41300800, 0x800409c0, 0x02020800,
+       0x001005d8, 0x0201f800, 0x001005d0, 0x4933c857,
+       0x813261c0, 0x02000800, 0x001005d8, 0x0401f835,
+       0x40002800, 0x0201f800, 0x0010a99c, 0x0401f8ae,
+       0x04000007, 0x59326809, 0x59340200, 0x8c00050e,
+       0x59300414, 0x02020800, 0x001092ce, 0x1c01f000,
+       0x4933c857, 0x813261c0, 0x02000800, 0x001005d8,
+       0x0401f8a1, 0x0400000b, 0x59325808, 0x0201f800,
+       0x00109037, 0x04000007, 0x592c0208, 0x8400054e,
+       0x48025a08, 0x417a7800, 0x0201f800, 0x00108be3,
+       0x1c01f000, 0x485fc857, 0x5c000000, 0x4d780000,
+       0x4203e000, 0x50000000, 0x4200b800, 0x00008005,
+       0x0201f000, 0x001005dd, 0x4933c857, 0x83300480,
+       0x00000020, 0x02021800, 0x001005d8, 0x83300c00,
+       0x0010b8cc, 0x50040000, 0x80000000, 0x04001002,
+       0x44000800, 0x1c01f000, 0x4933c857, 0x0401f7f4,
+       0x4807c856, 0x59b800ea, 0x8c000510, 0x040007fd,
+       0x59b800e0, 0x4803c857, 0x1c01f000, 0x4803c856,
+       0x42000000, 0x10000000, 0x41300800, 0x0401f02d,
+       0x82000500, 0xf0000000, 0x82040d00, 0x0fffffff,
+       0x80040d40, 0x4807c857, 0x59b800ea, 0x8c000516,
+       0x04020003, 0x480770e1, 0x1c01f000, 0x8c000510,
+       0x040007fa, 0x4c040000, 0x0401f809, 0x5c000800,
+       0x82100480, 0x00000008, 0x040017f4, 0x4c040000,
+       0x0401febc, 0x5c000800, 0x0401f7f0, 0x59b800e2,
+       0x59b820e2, 0x80100580, 0x040207fd, 0x80102114,
+       0x0401f006, 0x59b800e2, 0x59b820e2, 0x80100580,
+       0x040207fd, 0x0401f001, 0x40101800, 0x800c190a,
+       0x82100500, 0x0000001f, 0x820c1d00, 0x0000001f,
+       0x800c2480, 0x82102500, 0x0000001f, 0x1c01f000,
+       0x82000500, 0xf0000000, 0x82040d00, 0x0fffffff,
+       0x80040d40, 0x4807c857, 0x42001000, 0x0010b804,
+       0x50080000, 0x80000540, 0x04020005, 0x4a0370e5,
+       0x00000003, 0x4a0370e4, 0x00000300, 0x80000000,
+       0x44001000, 0x42001000, 0x00000400, 0x59b800ea,
+       0x8c000510, 0x0400000c, 0x0401ffd5, 0x82100480,
+       0x00000008, 0x04001007, 0x4c040000, 0x4c080000,
+       0x0401fe88, 0x5c001000, 0x5c000800, 0x0401f020,
+       0x59b800ea, 0x8c000516, 0x0402001d, 0x4a0370e4,
+       0x00300000, 0x480770e1, 0x42001000, 0x0000ff00,
+       0x80081040, 0x04000012, 0x59b808e4, 0x8c040d28,
+       0x040207fc, 0x42001000, 0x0010b804, 0x50080000,
+       0x80000040, 0x04020005, 0x4a0370e5, 0x00000002,
+       0x4a0370e4, 0x00000200, 0x02001800, 0x001005d8,
+       0x44001000, 0x8c040d2c, 0x1c01f000, 0x41f80000,
+       0x50000000, 0x0201f800, 0x001005d8, 0x80081040,
+       0x040207d3, 0x41f80000, 0x50000000, 0x0201f800,
+       0x001005d8, 0x4d380000, 0x59300c06, 0x82040580,
+       0x00000009, 0x04020006, 0x42027000, 0x00000047,
+       0x0201f800, 0x000207a1, 0x80000580, 0x5c027000,
+       0x1c01f000, 0x4c500000, 0x4a03900d, 0x00000001,
+       0x59c8a020, 0x4a03900d, 0x00000002, 0x59c80820,
+       0x8c50a52e, 0x04000002, 0x900409c0, 0x82040d00,
+       0x0000ffff, 0x0201f800, 0x00105dd7, 0x02000800,
+       0x001005d8, 0x4933c857, 0x8250a500, 0xff000000,
+       0x82500580, 0x05000000, 0x04000003, 0x82000540,
+       0x00000001, 0x5c00a000, 0x1c01f000, 0x0401ffe6,
+       0x4933c857, 0x59300406, 0x82000580, 0x00000000,
+       0x04000040, 0x59c82021, 0x4a03900d, 0x00000001,
+       0x59c82821, 0x82142d00, 0x0000ffff, 0x59325808,
+       0x812e59c0, 0x04000037, 0x59326809, 0x0201f800,
+       0x001048d9, 0x02020800, 0x001092b6, 0x599c0019,
+       0x8c00050c, 0x04020018, 0x0201f800, 0x001048d9,
+       0x04020015, 0x59300811, 0x4807c857, 0x592c0408,
+       0x8c00051c, 0x0402000e, 0x8400055c, 0x48025c08,
+       0x592c0a04, 0x82040d00, 0x000000ff, 0x82040580,
+       0x00000048, 0x04000004, 0x82040580, 0x00000018,
+       0x04020003, 0x59300811, 0x48065803, 0x4a026011,
+       0x7fffffff, 0x48166013, 0x0201f800, 0x001010dd,
+       0x04020014, 0x0401f9fd, 0x40280000, 0x4802600d,
+       0x04000005, 0x4832600b, 0x50200000, 0x4802600a,
+       0x4822600c, 0x59300414, 0x8c00051c, 0x04020004,
+       0x599c0019, 0x8c00050c, 0x0402086e, 0x4a03900d,
+       0x00000040, 0x4a0370e5, 0x00000008, 0x1c01f000,
+       0x59880052, 0x80000000, 0x48031052, 0x4a03900d,
+       0x00000040, 0x42000000, 0xc0000000, 0x0401f71d,
+       0x4cf80000, 0x58f40000, 0x8001f540, 0x0401f820,
+       0x41781800, 0x0401f8e4, 0x04020014, 0x44140800,
+       0x0401f82a, 0x04000011, 0x40043800, 0x42001800,
+       0x00000001, 0x40142000, 0x0401f8db, 0x0402000b,
+       0x801c3800, 0x501c0000, 0x44000800, 0x0401f810,
+       0x801c0580, 0x04000004, 0x44103800, 0x801c3840,
+       0x44143800, 0x0401f819, 0x5c01f000, 0x1c01f000,
+       0x80f9f1c0, 0x04020003, 0x58f41202, 0x0401f003,
+       0x42001000, 0x00000007, 0x1c01f000, 0x80f9f1c0,
+       0x04020006, 0x58f40401, 0x82000480, 0x00000002,
+       0x80f40400, 0x0401f005, 0x58f80401, 0x82000480,
+       0x00000002, 0x80f80400, 0x50002800, 0x80000000,
+       0x50002000, 0x1c01f000, 0x80f9f1c0, 0x04020008,
+       0x58f40401, 0x82000480, 0x00000002, 0x02001800,
+       0x001005d8, 0x4801ec01, 0x0401f00b, 0x58f80401,
+       0x82000480, 0x00000002, 0x02001800, 0x001005d8,
+       0x4801f401, 0x82000580, 0x00000002, 0x04020002,
+       0x0401f809, 0x58f40202, 0x80000040, 0x4801ea02,
+       0x02000800, 0x001005d8, 0x82000580, 0x00000001,
+       0x1c01f000, 0x4d2c0000, 0x40fa5800, 0x0201f800,
+       0x001007f4, 0x4979e800, 0x4179f000, 0x5c025800,
+       0x1c01f000, 0x80f5e9c0, 0x04000009, 0x80f9f1c0,
+       0x04020ff5, 0x4d2c0000, 0x40f65800, 0x0201f800,
+       0x001007f4, 0x4179e800, 0x5c025800, 0x1c01f000,
+       0x4cf40000, 0x59300807, 0x82040500, 0x00003100,
+       0x04020032, 0x8c040d22, 0x04000032, 0x5930001f,
+       0x8001ed40, 0x02000800, 0x001005d8, 0x82000580,
+       0xffffffff, 0x04000029, 0x58f40201, 0x82000580,
+       0x0000dcb3, 0x02020800, 0x001005d8, 0x58f40a02,
+       0x82040500, 0x0000fffe, 0x04000003, 0x0401ff89,
+       0x58f40a02, 0x82040480, 0x0000000f, 0x04021059,
+       0x80040800, 0x4805ea02, 0x82040580, 0x00000008,
+       0x0400005d, 0x82040480, 0x00000008, 0x0400100a,
+       0x58f40000, 0x8001ed40, 0x02000800, 0x001005d8,
+       0x58f40201, 0x82000580, 0x0000ddb9, 0x02020800,
+       0x001005d8, 0x58f40401, 0x82000c00, 0x00000002,
+       0x4805ec01, 0x80f40400, 0x59300812, 0x44040000,
+       0x80000000, 0x45780000, 0x5c01e800, 0x1c01f000,
+       0x42001000, 0x00000400, 0x59b800e4, 0x8c000524,
+       0x04020023, 0x4a0370e4, 0x00030000, 0x40000000,
+       0x59b800e4, 0x8c000524, 0x0402001b, 0x59300807,
+       0x84040d62, 0x48066007, 0x4a0370e4, 0x00020000,
+       0x4d2c0000, 0x0201f800, 0x001007d3, 0x04000025,
+       0x492e601f, 0x4a025a01, 0x0000dcb3, 0x59300008,
+       0x80001d40, 0x02000800, 0x001005d8, 0x580c080f,
+       0x48065803, 0x59301811, 0x40040000, 0x800c0580,
+       0x0402000d, 0x497a5a02, 0x4a025c01, 0x00000004,
+       0x0401f011, 0x4a0370e4, 0x00020000, 0x40000000,
+       0x40000000, 0x80081040, 0x02000800, 0x001005d8,
+       0x0401f7d6, 0x4a025a02, 0x00000001, 0x4a025c01,
+       0x00000006, 0x497a5804, 0x400c0000, 0x80040480,
+       0x48025805, 0x412de800, 0x5c025800, 0x0401f7a9,
+       0x5c025800, 0x4a02601f, 0xffffffff, 0x0401f7c3,
+       0x4d2c0000, 0x58f65800, 0x0201f800, 0x001007f4,
+       0x40f65800, 0x0201f800, 0x001007f4, 0x5c025800,
+       0x0401f7f5, 0x4d2c0000, 0x0201f800, 0x001007d3,
+       0x040007f8, 0x4a025a01, 0x0000ddb9, 0x4a025c01,
+       0x00000002, 0x492de800, 0x412de800, 0x5c025800,
+       0x0401f7a5, 0x0401ff33, 0x82f40400, 0x00000004,
+       0x800c0400, 0x40000800, 0x50040000, 0x80100580,
+       0x04000016, 0x82040c00, 0x00000002, 0x80081040,
+       0x040207fa, 0x80f9f1c0, 0x04000011, 0x58f41202,
+       0x82081480, 0x00000007, 0x82f80400, 0x00000002,
+       0x800c0400, 0x40000800, 0x50040000, 0x80100580,
+       0x04000006, 0x82040c00, 0x00000002, 0x80081040,
+       0x040207fa, 0x0401f002, 0x1c01f000, 0x82000540,
+       0x00000001, 0x0401f7fd, 0x4cf40000, 0x4cf80000,
+       0x4001e800, 0x592c0a06, 0x800409c0, 0x0402001d,
+       0x82f40580, 0xffffffff, 0x04000017, 0x58f40201,
+       0x82000580, 0x0000dcb3, 0x02020800, 0x001005d8,
+       0x58f40000, 0x8001f540, 0x04000006, 0x58f80201,
+       0x82000580, 0x0000ddb9, 0x02020800, 0x001005d8,
+       0x41783800, 0x0401f839, 0x04020006, 0x0401ff32,
+       0x497a601f, 0x5c01f000, 0x5c01e800, 0x1c01f000,
+       0x0401ff2d, 0x4a025a06, 0x00000011, 0x0401f7f9,
+       0x82f40580, 0xffffffff, 0x04020f27, 0x0401f7f5,
+       0x4cf40000, 0x4cf80000, 0x4001e800, 0x82040580,
+       0x00000001, 0x0402001f, 0x82f40580, 0xffffffff,
+       0x04000019, 0x58f40201, 0x82000580, 0x0000dcb3,
+       0x02020800, 0x001005d8, 0x58f40000, 0x8001f540,
+       0x04000006, 0x58f80201, 0x82000580, 0x0000ddb9,
+       0x02020800, 0x001005d8, 0x41783800, 0x0401f813,
+       0x04020008, 0x0401ff0c, 0x42000800, 0x00000001,
+       0x497a601f, 0x5c01f000, 0x5c01e800, 0x1c01f000,
+       0x0401ff05, 0x42000800, 0x00000011, 0x0401f7f9,
+       0x4c040000, 0x82f40580, 0xffffffff, 0x04020efe,
+       0x5c000800, 0x0401f7f3, 0x4803c856, 0x401c2000,
+       0x41781800, 0x0401ff8c, 0x0402002c, 0x58f42003,
+       0x42001800, 0x00000001, 0x0401ff87, 0x04020027,
+       0x0401feb8, 0x40082800, 0x82f40400, 0x00000004,
+       0x40003000, 0x50182000, 0x40100000, 0x801c0580,
+       0x04000005, 0x42001800, 0x00000001, 0x0401ff7a,
+       0x0402001a, 0x82183400, 0x00000002, 0x80142840,
+       0x040207f5, 0x80f9f1c0, 0x04000013, 0x58f42a02,
+       0x82142c80, 0x00000007, 0x82f80400, 0x00000003,
+       0x40003000, 0x50182000, 0x40100000, 0x801c0580,
+       0x04000005, 0x42001800, 0x00000001, 0x0401ff66,
+       0x04020006, 0x82183400, 0x00000002, 0x80142840,
+       0x040207f5, 0x1c01f000, 0x82000540, 0x00000001,
+       0x0401f7fd, 0x0201f800, 0x001005d8, 0x58380207,
+       0x8c000502, 0x040007fc, 0x50200000, 0x80387c00,
+       0x583c2800, 0x583c2001, 0x58380404, 0x80001540,
+       0x04020002, 0x58381407, 0x58c83401, 0x58380c08,
+       0x59303807, 0x497a6012, 0x497a6013, 0x0201f000,
+       0x000200be, 0x592c0408, 0x8c000502, 0x040007ea,
+       0x592c0409, 0x80000540, 0x040007e7, 0x82000c80,
+       0x00000002, 0x04001011, 0x58380001, 0x80007540,
+       0x02000800, 0x001005d8, 0x58380204, 0x82000500,
+       0x0000000f, 0x82000400, 0x001010bd, 0x50004000,
+       0x40040000, 0x800409c0, 0x04000005, 0x82040c80,
+       0x00000005, 0x040217f1, 0x80204400, 0x50200000,
+       0x80387c00, 0x583c2800, 0x583c2001, 0x583c1002,
+       0x592c0a07, 0x592c4c08, 0x592c300d, 0x59303807,
+       0x497a6012, 0x497a6013, 0x4816600e, 0x4812600f,
+       0x480a6010, 0x481a6011, 0x80040840, 0x4806600d,
+       0x02000000, 0x000200c6, 0x80204000, 0x50201800,
+       0x800c19c0, 0x0402000c, 0x58380001, 0x80007540,
+       0x02000800, 0x001005d8, 0x58380204, 0x82000500,
+       0x0000000f, 0x82000400, 0x001010bd, 0x50004000,
+       0x50201800, 0x483a600b, 0x480e600a, 0x4822600c,
+       0x0201f000, 0x000200c6, 0x4803c856, 0x592c0208,
+       0x8c00051e, 0x04020017, 0x50200000, 0x80306c00,
+       0x40240000, 0x0c01f001, 0x00100e46, 0x00100e46,
+       0x00100e4f, 0x00100e46, 0x00100e46, 0x00100e46,
+       0x00100e46, 0x00100e46, 0x00100e4f, 0x00100e46,
+       0x00100e4f, 0x00100e46, 0x00100e46, 0x00100e4f,
+       0x00100e46, 0x00100e46, 0x0201f800, 0x001005d8,
+       0x8400051e, 0x48025a08, 0x50200000, 0x80306c00,
+       0x58343801, 0x481e600f, 0x0401f007, 0x58341802,
+       0x58342800, 0x58343801, 0x480e6010, 0x4816600e,
+       0x481e600f, 0x0401f246, 0x4933c857, 0x5931f808,
+       0x59300a06, 0x800409c0, 0x04000005, 0x80040906,
+       0x04020002, 0x80040800, 0x4805fc06, 0x4a026206,
+       0x00000002, 0x592c0409, 0x82000500, 0x00000008,
+       0x0400000b, 0x0401f834, 0x59300203, 0x82000580,
+       0x00000004, 0x04020005, 0x42027000, 0x00000048,
+       0x0201f800, 0x000207a1, 0x1c01f000, 0x4cfc0000,
+       0x58fc0204, 0x82000500, 0x000000ff, 0x82000580,
+       0x00000048, 0x0402000c, 0x58fc000b, 0x800001c0,
+       0x04000009, 0x58fc0407, 0x800001c0, 0x04000006,
+       0x58fc080b, 0x8c040d16, 0x04000017, 0x58fc0007,
+       0x0401f00a, 0x58fc0408, 0x8c000512, 0x04020014,
+       0x58fc0c09, 0x8c040d16, 0x04020003, 0x5c01f800,
+       0x1c01f000, 0x58fc000a, 0x59300811, 0x80040580,
+       0x04020009, 0x59300007, 0x84000500, 0x48026007,
+       0x42027000, 0x00000048, 0x5c01f800, 0x0201f000,
+       0x000207a1, 0x5c01f800, 0x1c01f000, 0x58fdf809,
+       0x0401f7ec, 0x4933c857, 0x59b808ea, 0x82040d00,
+       0x00000007, 0x82040580, 0x00000000, 0x0400001e,
+       0x82040580, 0x00000003, 0x0400001b, 0x59300406,
+       0x4c000000, 0x4a026406, 0x00000000, 0x42003000,
+       0x00000041, 0x42000000, 0x50000000, 0x41300800,
+       0x4c180000, 0x0401fce7, 0x5c003000, 0x0400000b,
+       0x42000000, 0x0000001e, 0x80000040, 0x040207ff,
+       0x80183040, 0x040207f4, 0x42000000, 0x40000000,
+       0x41300800, 0x0401fcdb, 0x5c000000, 0x48026406,
+       0x1c01f000, 0x59300007, 0x84000500, 0x48026007,
+       0x0401f7fc, 0x59c00007, 0x4a038006, 0x30000000,
+       0x40000000, 0x59c00007, 0x8c00050a, 0x040207fe,
+       0x1c01f000, 0x5c000000, 0x4c000000, 0x4803c857,
+       0x4dc00000, 0x4a0370e8, 0x00000000, 0x42038000,
+       0x00007720, 0x0401fff0, 0x42038000, 0x00007700,
+       0x0401ffed, 0x0201f800, 0x0010513b, 0x04020013,
+       0x4a038891, 0x0000ffff, 0x497b8880, 0x497b8892,
+       0x42001000, 0x00000190, 0x40000000, 0x40000000,
+       0x80081040, 0x040207fd, 0x42000000, 0x0010b8a6,
+       0x0201f800, 0x0010aa47, 0x0401f80e, 0x5c038000,
+       0x0201f000, 0x00105258, 0x0401f82d, 0x42000000,
+       0x0010b8a7, 0x0201f800, 0x0010aa47, 0x0401f805,
+       0x48178892, 0x480b8880, 0x5c038000, 0x1c01f000,
+       0x496fc857, 0x836c0580, 0x00000003, 0x0402000b,
+       0x4c080000, 0x4c0c0000, 0x42001000, 0x00008048,
+       0x42001800, 0x0000ffff, 0x0201f800, 0x00103a3e,
+       0x5c001800, 0x5c001000, 0x42000800, 0x0000003c,
+       0x0201f800, 0x00101345, 0x59a8006c, 0x80000540,
+       0x04000006, 0x59a8106d, 0x800811c0, 0x04000003,
+       0x0201f800, 0x00101aaf, 0x4a038891, 0x0000ffff,
+       0x4a03900d, 0x00000040, 0x0201f800, 0x0010098e,
+       0x4a0370e8, 0x00000001, 0x1c01f000, 0x5c000000,
+       0x4c000000, 0x4803c857, 0x59c41080, 0x497b8880,
+       0x59c42892, 0x497b8892, 0x0201f800, 0x0010513b,
+       0x04020002, 0x1c01f000, 0x42002000, 0x00000260,
+       0x59c418a4, 0x820c1d00, 0x0000000f, 0x820c0580,
+       0x00000000, 0x04000010, 0x59c41805, 0x820c1d00,
+       0x00000001, 0x0402000e, 0x59c418a4, 0x820c1d00,
+       0x0000000f, 0x820c0480, 0x00000007, 0x04001004,
+       0x820c0480, 0x0000000c, 0x04001003, 0x80102040,
+       0x040207ec, 0x497b8891, 0x1c01f000, 0x4c100000,
+       0x42002000, 0x00000019, 0x46000000, 0x00000001,
+       0x0201f800, 0x00101937, 0x50001800, 0x820c1d00,
+       0x00000001, 0x04000005, 0x80102040, 0x040207f7,
+       0x5c002000, 0x0401f7f0, 0x5c002000, 0x0401f7ec,
+       0x4803c856, 0x1c01f000, 0x4d2c0000, 0x59325808,
+       0x592c0a04, 0x4807c857, 0x82040d00, 0x000000ff,
+       0x82040500, 0x0000000f, 0x0c01f001, 0x00100f67,
+       0x00100f67, 0x00100f67, 0x00100f7f, 0x00100f67,
+       0x00100f67, 0x00100f67, 0x00100f67, 0x00100f67,
+       0x00100f7f, 0x00100f67, 0x00100f69, 0x00100f67,
+       0x00100f67, 0x00100f67, 0x00100f67, 0x0201f800,
+       0x001005d8, 0x82040580, 0x0000003b, 0x02020800,
+       0x001005d8, 0x592c020a, 0x8c000500, 0x0400005f,
+       0x592c1a07, 0x82040500, 0x0000000f, 0x82000400,
+       0x001010bd, 0x50001000, 0x50080000, 0x59302013,
+       0x4802600a, 0x492e600b, 0x480a600c, 0x480e600d,
+       0x48126012, 0x5c025800, 0x1c01f000, 0x82040500,
+       0x0000000f, 0x82000400, 0x001010bd, 0x50001000,
+       0x50080000, 0x592c1a07, 0x4802600a, 0x492e600b,
+       0x480a600c, 0x480e600d, 0x497a6012, 0x0401f7f2,
+       0x8c040d00, 0x04020041, 0x82040d00, 0x00000080,
+       0x0400003e, 0x0201f000, 0x000200cf, 0x59300013,
+       0x59301012, 0x80080580, 0x0402000c, 0x42007800,
+       0x80000005, 0x592c1208, 0x82080500, 0xffff7fff,
+       0x48025a08, 0x8c08151e, 0x0402002d, 0x823c7d40,
+       0x00000020, 0x0401f02a, 0x480bc857, 0x42000000,
+       0x0010b851, 0x0201f800, 0x0010aa47, 0x59300414,
+       0x4803c857, 0x8c000514, 0x04020007, 0x599c1819,
+       0x8c0c1d12, 0x04020004, 0x820c1d40, 0x00000001,
+       0x0401f01d, 0x59302013, 0x0401f92b, 0x0402001a,
+       0x42007800, 0x80000005, 0x5930500d, 0x592c0208,
+       0x4803c857, 0x8c00051e, 0x04020005, 0x823c7d40,
+       0x00000020, 0x5930400c, 0x0401f004, 0x8400051e,
+       0x48025a08, 0x0401f8da, 0x50201800, 0x480e600a,
+       0x4832600b, 0x4822600c, 0x482a600d, 0x480fc857,
+       0x4833c857, 0x4823c857, 0x482bc857, 0x80000580,
+       0x483e6004, 0x1c01f000, 0x0201f800, 0x001005d8,
+       0x4933c857, 0x4d2c0000, 0x59900004, 0x81300580,
+       0x02020800, 0x001005d8, 0x0201f800, 0x00109037,
+       0x02000800, 0x001005d8, 0x59325808, 0x4d3c0000,
+       0x4d400000, 0x59300004, 0x4803c857, 0x4c000000,
+       0x0201f800, 0x00106dc3, 0x0201f800, 0x00106b8a,
+       0x5c000000, 0x8c000516, 0x04000010, 0x592c000f,
+       0x4803c857, 0x48025807, 0x41780800, 0x42028000,
+       0x00000002, 0x0201f800, 0x00104e70, 0x4a025c06,
+       0x0000ffff, 0x0201f800, 0x000202da, 0x0201f800,
+       0x00107911, 0x0401f015, 0x4a026203, 0x00000002,
+       0x592c0208, 0x8400054e, 0x48025a08, 0x59300406,
+       0x82000580, 0x00000006, 0x04020009, 0x811800ca,
+       0x81c80c00, 0x58040939, 0x592c000d, 0x80040480,
+       0x592c080f, 0x80040480, 0x4802580b, 0x417a7800,
+       0x0201f800, 0x00108be3, 0x5c028000, 0x5c027800,
+       0x5c025800, 0x1c01f000, 0x4933c857, 0x4d2c0000,
+       0x59900004, 0x81300580, 0x02020800, 0x001005d8,
+       0x0201f800, 0x00109037, 0x02000800, 0x001005d8,
+       0x59325808, 0x592c0208, 0x84000540, 0x48025a08,
+       0x0401f7bf, 0x491bc857, 0x49d3c857, 0x4dd00000,
+       0x41780800, 0x8007a0ca, 0x83d3a400, 0x00007600,
+       0x4a03a005, 0x80000002, 0x42000000, 0x00001000,
+       0x50000000, 0x82000480, 0x24220001, 0x04020029,
+       0x59d01006, 0x82080500, 0x00006000, 0x82000580,
+       0x00006000, 0x0400002f, 0x82080500, 0x40008000,
+       0x040007f8, 0x800409c0, 0x0402002a, 0x811a31c0,
+       0x04000028, 0x42000000, 0x00001002, 0x50001000,
+       0x46000000, 0x00000512, 0x42001800, 0x0000000a,
+       0x59e00000, 0x8c00051a, 0x040207fc, 0x800c1840,
+       0x040207fc, 0x42000000, 0x00001002, 0x46000000,
+       0x00000514, 0x42001800, 0x0000000a, 0x59e00000,
+       0x8c00053a, 0x040207fc, 0x800c1840, 0x040207fc,
+       0x42000000, 0x00001002, 0x44080000, 0x0401f00d,
+       0x59d01006, 0x82080500, 0x00006000, 0x82000580,
+       0x00006000, 0x04000007, 0x8c08151e, 0x040007f9,
+       0x59d01006, 0x82080500, 0x00006000, 0x040207f5,
+       0x83d3a400, 0x00000020, 0x80040800, 0x82040480,
+       0x00000005, 0x040017bf, 0x5c03a000, 0x1c01f000,
+       0x491bc857, 0x49d3c857, 0x4dd00000, 0x41780800,
+       0x8007a0ca, 0x83d3a400, 0x00007600, 0x4a03a005,
+       0x80000001, 0x59d00006, 0x83d3a400, 0x00000020,
+       0x80040800, 0x82040480, 0x00000005, 0x040017f8,
+       0x5c03a000, 0x1c01f000, 0x59d00006, 0x8c00053e,
+       0x0400001e, 0x59902804, 0x4817c857, 0x801429c0,
+       0x04000013, 0x5990000a, 0x5990080b, 0x5990100c,
+       0x5990180d, 0x4800280a, 0x4804280b, 0x4808280c,
+       0x480c280d, 0x59d00000, 0x59d00801, 0x59d01002,
+       0x59d01803, 0x59d02004, 0x4800280e, 0x4804280f,
+       0x48082810, 0x480c2811, 0x48102812, 0x59900006,
+       0x82000500, 0xffff0000, 0x48032006, 0x4a03a005,
+       0x30000000, 0x59d00006, 0x1c01f000, 0x4803c856,
+       0x80204000, 0x50200000, 0x80000540, 0x04000003,
+       0x80285040, 0x1c01f000, 0x58300001, 0x80000540,
+       0x0400000e, 0x4802600b, 0x40006000, 0x58300204,
+       0x82000500, 0x0000000f, 0x82000400, 0x001010bd,
+       0x50004000, 0x802041c0, 0x02000800, 0x001005d8,
+       0x80285040, 0x1c01f000, 0x40005000, 0x1c01f000,
+       0x00000005, 0x00000008, 0x0000000b, 0x0000000e,
+       0x00000011, 0x00000000, 0x00000000, 0x0000000b,
+       0x00000000, 0x00000000, 0x00000000, 0x001010b8,
+       0x001010b7, 0x00000000, 0x00000000, 0x00000000,
+       0x00000000, 0x001010b8, 0x001010b7, 0x001010b4,
+       0x001010b8, 0x001010b7, 0x00000000, 0x00000000,
+       0x00000000, 0x00000000, 0x00000000, 0x001010b8,
+       0x00000000, 0x00000000, 0x00000000, 0x00000000,
+       0x00000000, 0x001010b8, 0x001010b8, 0x001010b8,
+       0x00000000, 0x001010b8, 0x00000000, 0x00000000,
+       0x00000000, 0x4813c857, 0x492fc857, 0x4933c857,
+       0x48126012, 0x592c5207, 0x802851c0, 0x0400004a,
+       0x412c6000, 0x0401f84b, 0x04000009, 0x82240580,
+       0x00000002, 0x04020003, 0x5830000d, 0x80102480,
+       0x50200000, 0x80004540, 0x0400003f, 0x50200000,
+       0x80000540, 0x0400000b, 0x80301400, 0x58080002,
+       0x80102480, 0x0400101e, 0x801021c0, 0x04000009,
+       0x80285040, 0x04000034, 0x80204000, 0x0401f7f4,
+       0x58300001, 0x80006540, 0x0400002f, 0x0401f7e6,
+       0x80285040, 0x0400002c, 0x80204000, 0x50200000,
+       0x80000540, 0x0402000a, 0x58300001, 0x80006540,
+       0x04000025, 0x58300204, 0x82004d00, 0x0000000f,
+       0x82244400, 0x001010bd, 0x50204000, 0x592c0208,
+       0x8400051e, 0x48025a08, 0x0401f013, 0x80102080,
+       0x80102000, 0x48126010, 0x4813c857, 0x58080802,
+       0x40100000, 0x80042480, 0x02001800, 0x001005d8,
+       0x58080000, 0x58081801, 0x80102400, 0x4812600e,
+       0x480e600f, 0x4813c857, 0x592c0208, 0x8400055e,
+       0x48025a08, 0x4833c857, 0x4823c857, 0x482bc857,
+       0x4832600b, 0x4822600c, 0x482a600d, 0x80000580,
+       0x0401f003, 0x82000540, 0x00000001, 0x1c01f000,
+       0x58300204, 0x82004d00, 0x0000000f, 0x82244400,
+       0x001010bd, 0x82000500, 0x000000ff, 0x82000580,
+       0x00000029, 0x0402001b, 0x50204000, 0x592c0409,
+       0x80000540, 0x02000800, 0x001005d8, 0x82000c80,
+       0x00000002, 0x04001011, 0x58300001, 0x80006540,
+       0x02000800, 0x001005d8, 0x58300204, 0x82000500,
+       0x0000000f, 0x82000400, 0x001010bd, 0x50004000,
+       0x40040000, 0x800409c0, 0x04000006, 0x82040c80,
+       0x00000005, 0x040217f1, 0x80204400, 0x80000580,
+       0x1c01f000, 0x59e00004, 0x8c00050e, 0x02020000,
+       0x00100903, 0x1c01f000, 0x4c5c0000, 0x59e4b800,
+       0x485fc857, 0x825c0500, 0x0000001f, 0x04000004,
+       0x59e40862, 0x0201f800, 0x001005d8, 0x825c0500,
+       0x000000e0, 0x02000800, 0x001005d8, 0x8c5cbd0e,
+       0x04020807, 0x8c5cbd0c, 0x04020809, 0x8c5cbd0a,
+       0x04020878, 0x5c00b800, 0x1c01f000, 0x4803c856,
+       0x4a03c800, 0x00000080, 0x1c01f000, 0x4d2c0000,
+       0x42007800, 0x0010b8ec, 0x583c0001, 0x583c0802,
+       0x80040540, 0x0400003f, 0x42000800, 0x0010b7f7,
+       0x50065800, 0x592c0002, 0x82000580, 0x00000000,
+       0x0400000e, 0x59e40850, 0x59e41853, 0x400c0000,
+       0x80040400, 0x59e40852, 0x4807c857, 0x80041480,
+       0x04021008, 0x40001000, 0x480bc857, 0x4a007800,
+       0x00000001, 0x0401f006, 0x4803c857, 0x0401f029,
+       0x59e41050, 0x480bc857, 0x49787800, 0x480bc857,
+       0x480fc857, 0x592c0003, 0x80000540, 0x04000006,
+       0x80080580, 0x04020004, 0x592c0003, 0x4803c857,
+       0x480bc857, 0x480a5803, 0x592c0007, 0x800001c0,
+       0x04000007, 0x592c1007, 0x480bc857, 0x583c0003,
+       0x4803c857, 0x80080480, 0x04001003, 0x583c1001,
+       0x480bc857, 0x583c0802, 0x480bc857, 0x4807c857,
+       0x4a025801, 0x00000000, 0x4a025809, 0x001011bc,
+       0x480a5807, 0x48065808, 0x59e40053, 0x48025804,
+       0x412c1000, 0x492fc857, 0x0201f800, 0x00100858,
+       0x5c025800, 0x4a03c800, 0x00000040, 0x1c01f000,
+       0x42007800, 0x0010b7f7, 0x503c7800, 0x4a007802,
+       0x00000100, 0x42007800, 0x0010b8ec, 0x583c0000,
+       0x4803c857, 0x82000d80, 0x00000001, 0x04000004,
+       0x80000000, 0x48007800, 0x0401f019, 0x49787800,
+       0x583c1806, 0x583c0005, 0x800c1800, 0x480c7806,
+       0x800c0580, 0x04020002, 0x49787806, 0x583c0807,
+       0x800409c0, 0x0400000e, 0x583c0008, 0x80000000,
+       0x48007808, 0x80040580, 0x04020009, 0x49787808,
+       0x583c2006, 0x42001800, 0x00000001, 0x42001000,
+       0x00008028, 0x0201f800, 0x00103a3e, 0x1c01f000,
+       0x4a03c800, 0x00000020, 0x0201f800, 0x0010aa40,
+       0x59e40000, 0x1c01f000, 0x4d2c0000, 0x4a007001,
+       0x00000000, 0x82040d00, 0x43000f80, 0x02020800,
+       0x001005d8, 0x58380009, 0x4803c00f, 0x0201f800,
+       0x00109402, 0x583a5808, 0x592c0000, 0x48007008,
+       0x800001c0, 0x04020002, 0x49787007, 0x0201f800,
+       0x001007f4, 0x5c025800, 0x0201f000, 0x0010087d,
+       0x4803c856, 0x4c3c0000, 0x4d2c0000, 0x4d300000,
+       0x5830000a, 0x80025d40, 0x02000800, 0x001005d8,
+       0x592e6008, 0x4c300000, 0x0201f800, 0x0010941a,
+       0x5c006000, 0x02000800, 0x001005d8, 0x58300002,
+       0x82000580, 0x00000100, 0x04020010, 0x5930780b,
+       0x583c0001, 0x80000540, 0x0400000e, 0x4802600b,
+       0x40007800, 0x82000400, 0x00000002, 0x48006003,
+       0x583c0000, 0x48006004, 0x40301000, 0x0201f800,
+       0x00100858, 0x0401f00c, 0x4a025a06, 0x00000002,
+       0x4c300000, 0x0201f800, 0x000202da, 0x5c006000,
+       0x40325800, 0x0201f800, 0x001007f4, 0x0201f800,
+       0x0002077d, 0x5c026000, 0x5c025800, 0x5c007800,
+       0x1c01f000, 0x4803c856, 0x4d2c0000, 0x4d300000,
+       0x42007000, 0x0010b7f8, 0x58380801, 0x82040580,
+       0x00000002, 0x04020011, 0x58386002, 0x5830000a,
+       0x812c0580, 0x0402000d, 0x59e00004, 0x8c00050e,
+       0x040007fe, 0x59dc0006, 0x4803c857, 0x4a03b805,
+       0x20000000, 0x8c00053e, 0x040007f8, 0x4a007001,
+       0x00000000, 0x0401f019, 0x58386006, 0x40305000,
+       0x803061c0, 0x02000800, 0x001005d8, 0x5830000a,
+       0x812c0580, 0x04000004, 0x40305000, 0x58306000,
+       0x0401f7f8, 0x40280000, 0x80300580, 0x58300000,
+       0x04000006, 0x48005000, 0x800001c0, 0x04020007,
+       0x48287005, 0x0401f005, 0x800001c0, 0x04020002,
+       0x48007005, 0x48007006, 0x40325800, 0x0201f800,
+       0x001007f4, 0x42007000, 0x0010b7f8, 0x58380001,
+       0x82000580, 0x00000000, 0x02000800, 0x0010087d,
+       0x5c026000, 0x5c025800, 0x1c01f000, 0x4803c856,
+       0x42000800, 0x0000003c, 0x48079000, 0x59c80000,
+       0x80040500, 0x040207fe, 0x497b9005, 0x4a039035,
+       0x00880200, 0x59a8000e, 0x800000e0, 0x4803900e,
+       0x4a039011, 0x00000024, 0x4a03900f, 0x0010d1c0,
+       0x4a039010, 0x0010d1c0, 0x4a039015, 0x0000007f,
+       0x4a03900d, 0x00000040, 0x4a039000, 0x00001600,
+       0x1c01f000, 0x59c80007, 0x8c000508, 0x040208b7,
+       0x59c80800, 0x8c040d16, 0x04020004, 0x82000500,
+       0x00000006, 0x0c01f005, 0x4807c857, 0x82000500,
+       0x0000000e, 0x0c01f001, 0x001012a8, 0x001012a6,
+       0x00105999, 0x001012a6, 0x001012aa, 0x001012a6,
+       0x001012aa, 0x001012aa, 0x001012a6, 0x001012a6,
+       0x001012a6, 0x001012a6, 0x001012aa, 0x001012a6,
+       0x001012aa, 0x001012a6, 0x0201f800, 0x001005d8,
+       0x4803c857, 0x1c01f000, 0x59c8080c, 0x4807c857,
+       0x82040500, 0x00006000, 0x04000004, 0x0201f800,
+       0x0010aa03, 0x0401f006, 0x82040500, 0x007f0000,
+       0x04000006, 0x0201f800, 0x0010a9d5, 0x0201f800,
+       0x00106eb3, 0x0401f02b, 0x82040500, 0x00000014,
+       0x04000014, 0x0201f800, 0x0010aa32, 0x836c0580,
+       0x00000003, 0x0400000d, 0x0201f800, 0x0010513b,
+       0x04000004, 0x0201f800, 0x0010411d, 0x0401f007,
+       0x4a035033, 0x00000001, 0x4202d800, 0x00000001,
+       0x0201f800, 0x001050a2, 0x0401f817, 0x0401f015,
+       0x82040500, 0x00001c00, 0x04000005, 0x0201f800,
+       0x0010aa11, 0x0401f810, 0x0401f00e, 0x82040500,
+       0x00000140, 0x04000005, 0x0201f800, 0x0010aa24,
+       0x0401f809, 0x0401f007, 0x82040500, 0x00008000,
+       0x04000004, 0x0201f800, 0x0010a9fc, 0x0401f802,
+       0x1c01f000, 0x4c0c0000, 0x4c100000, 0x4c140000,
+       0x0201f800, 0x00100ec9, 0x5c002800, 0x5c002000,
+       0x5c001800, 0x1c01f000, 0x4803c856, 0x59a80804,
+       0x59a8002b, 0x82000500, 0xfffff000, 0x80040540,
+       0x4803502b, 0x59a8002f, 0x82000500, 0xfffff000,
+       0x80040540, 0x4803502f, 0x48078882, 0x82041c00,
+       0x0000000f, 0x800c1908, 0x820c1c00, 0x00000004,
+       0x400c2000, 0x901029c0, 0x82040480, 0x000001e4,
+       0x04021005, 0x42001000, 0x00000008, 0x801020c6,
+       0x0401f031, 0x82040480, 0x00000230, 0x04021009,
+       0x42001000, 0x00000007, 0x801000c2, 0x800000c2,
+       0x80100400, 0x80100400, 0x80102400, 0x0401f026,
+       0x82040480, 0x00000298, 0x04021008, 0x42001000,
+       0x00000006, 0x801000c2, 0x800000c2, 0x80100400,
+       0x80102400, 0x0401f01c, 0x82040480, 0x00000328,
+       0x04021007, 0x42001000, 0x00000005, 0x801000c2,
+       0x800000c2, 0x80102400, 0x0401f013, 0x82040480,
+       0x00000404, 0x04021005, 0x42001000, 0x00000004,
+       0x801020c4, 0x0401f00c, 0x82040480, 0x0000056c,
+       0x04021006, 0x42001000, 0x00000003, 0x801000c2,
+       0x80102400, 0x0401f004, 0x42001000, 0x00000002,
+       0x801020c2, 0x82100480, 0x00000110, 0x80000080,
+       0x80002000, 0x800800d0, 0x80140540, 0x80100540,
+       0x48039035, 0x1c01f000, 0x59c80815, 0x0201f800,
+       0x001005d0, 0x82040d00, 0x0000007c, 0x48079000,
+       0x59c80000, 0x80040500, 0x040207fe, 0x8c040d04,
+       0x04000003, 0x59c80035, 0x48039035, 0x59c80000,
+       0x82000540, 0x00001200, 0x48039000, 0x1c01f000,
+       0x4803c856, 0x497b88a9, 0x4a038807, 0x00000001,
+       0x497b8807, 0x59c40005, 0x48038805, 0x0201f800,
+       0x00101815, 0x4201d000, 0x000001f4, 0x0201f800,
+       0x0010608e, 0x497b880e, 0x4200b000, 0x000001f4,
+       0x42000000, 0x00000001, 0x42000800, 0x00000014,
+       0x0201f800, 0x00101944, 0x42000800, 0x00000014,
+       0x0201f800, 0x0010193f, 0x8c040d00, 0x04000005,
+       0x8058b040, 0x040207f3, 0x0201f800, 0x001005d8,
+       0x4200b000, 0x00000032, 0x42000000, 0x00000001,
+       0x42000800, 0x000000b4, 0x0201f800, 0x00101944,
+       0x42000800, 0x000000b4, 0x0201f800, 0x0010193f,
+       0x8c040d00, 0x04000005, 0x8058b040, 0x040207f3,
+       0x0201f800, 0x001005d8, 0x59c40005, 0x48038805,
+       0x42000000, 0x00000089, 0x800008d0, 0x48075054,
+       0x48075055, 0x48075056, 0x42000800, 0x000000e0,
+       0x0201f800, 0x00101944, 0x42000800, 0x000000f4,
+       0x0201f800, 0x0010193f, 0x82040500, 0xffffffd1,
+       0x82000540, 0x00000002, 0x42000800, 0x000000f4,
+       0x0201f800, 0x00101944, 0x42000800, 0x000000a0,
+       0x0201f800, 0x0010193f, 0x82040540, 0x00000001,
+       0x42000800, 0x000000a0, 0x0201f800, 0x00101944,
+       0x42000800, 0x00000000, 0x0201f800, 0x0010193f,
+       0x82040540, 0x00000001, 0x42000800, 0x00000000,
+       0x0201f800, 0x00101944, 0x4201d000, 0x0001d4c0,
+       0x0201f800, 0x0010608e, 0x0401fa2b, 0x4a0388a7,
+       0x0000f7f7, 0x4a0388a3, 0x8000403c, 0x4a0388ae,
+       0x000061a8, 0x4a038801, 0x00032063, 0x4a038810,
+       0x00410108, 0x4a038811, 0x00520608, 0x4a038812,
+       0x00450320, 0x4a038813, 0x00440405, 0x4a03881c,
+       0x004132e1, 0x4a038850, 0x80000108, 0x4a038860,
+       0x00000008, 0x4a038870, 0x00000008, 0x4a038851,
+       0x80000508, 0x4a038861, 0x00800000, 0x4a038871,
+       0x00800000, 0x4a038852, 0x80000708, 0x4a038862,
+       0x00800000, 0x4a038872, 0x00800000, 0x4a038853,
+       0x80000608, 0x497b8863, 0x4a038873, 0x00800000,
+       0x4a038882, 0x00000840, 0x4a0388a5, 0x0000001e,
+       0x4a0388a6, 0x0000001e, 0x4a0388b0, 0x00007530,
+       0x4a038802, 0x0000ffff, 0x4a038806, 0xc0e00800,
+       0x1c01f000, 0x497b5022, 0x4a035021, 0x00000001,
+       0x42000800, 0x00000040, 0x0201f800, 0x0010193f,
+       0x82040500, 0xffffffaf, 0x82000540, 0x00000000,
+       0x42000800, 0x00000040, 0x0201f800, 0x00101944,
+       0x42000800, 0x000000f4, 0x0201f800, 0x0010193f,
+       0x4c040000, 0x40040000, 0x84000548, 0x42000800,
+       0x000000f4, 0x0201f800, 0x00101944, 0x42000800,
+       0x00000000, 0x0201f800, 0x0010193f, 0x82040500,
+       0xffffffc1, 0x82000540, 0x00000038, 0x42000800,
+       0x00000000, 0x0201f800, 0x00101944, 0x5c000000,
+       0x42000800, 0x000000f4, 0x0201f000, 0x00101944,
+       0x59c40805, 0x4807c857, 0x59c40006, 0x80040d00,
+       0x02000800, 0x001005d8, 0x82040500, 0x00e00800,
+       0x04020004, 0x8c040d3e, 0x040208c4, 0x0401f007,
+       0x82040500, 0x00800800, 0x02020800, 0x001005d0,
+       0x0201f800, 0x001005d8, 0x4c5c0000, 0x4c600000,
+       0x59c4b805, 0x485fc857, 0x59c40006, 0x8c000500,
+       0x04000003, 0x8c5cbd00, 0x04020079, 0x0201f800,
+       0x0010513b, 0x04000014, 0x59c40005, 0x82000500,
+       0x000000c0, 0x04000036, 0x0201f800, 0x00105151,
+       0x04020033, 0x4a038805, 0x04000000, 0x59c400a3,
+       0x82000500, 0xbf203fff, 0x480388a3, 0x497b5049,
+       0x4a038805, 0x000000c0, 0x0201f800, 0x00105065,
+       0x0401f063, 0x8c5cbd34, 0x04020025, 0x59c40005,
+       0x8c00050c, 0x04020012, 0x8c00050e, 0x04020013,
+       0x8c00050a, 0x04020014, 0x8c000508, 0x0400000b,
+       0x59a80017, 0x82000580, 0x00000009, 0x04020007,
+       0x42000000, 0x0010b844, 0x0201f800, 0x0010aa47,
+       0x0201f800, 0x00105318, 0x0401f04b, 0x4a035033,
+       0x00000000, 0x0401f00b, 0x4a035033, 0x00000002,
+       0x0401f008, 0x42000000, 0x0010b846, 0x0201f800,
+       0x0010aa47, 0x0201f800, 0x001052c2, 0x0401f03e,
+       0x0201f800, 0x00105378, 0x0401f03b, 0x8c5cbd34,
+       0x04000037, 0x59c40005, 0x8c00053a, 0x04020005,
+       0x42000000, 0x0010b818, 0x0201f800, 0x0010aa47,
+       0x4a038805, 0x02000000, 0x0201f800, 0x0010513b,
+       0x04020010, 0x4a038805, 0x04000000, 0x0201f800,
+       0x00105149, 0x04020008, 0x4a035033, 0x00000001,
+       0x4202d800, 0x00000001, 0x0201f800, 0x001050a2,
+       0x0401f05b, 0x41780000, 0x0201f800, 0x00105113,
+       0x0201f800, 0x001019fe, 0x4000c000, 0x0201f800,
+       0x00101963, 0x836c1580, 0x00000004, 0x0402000d,
+       0x8c5cbd00, 0x04020012, 0x59a81005, 0x8c081506,
+       0x04020005, 0x59c410a3, 0x82081540, 0x00000008,
+       0x480b88a3, 0x59c41006, 0x84081540, 0x480b8806,
+       0x4a038805, 0x04000000, 0x4202d800, 0x00000001,
+       0x497b5014, 0x0201f800, 0x00103b38, 0x8c5cbd3c,
+       0x04020858, 0x8c5cbd00, 0x04000036, 0x42000000,
+       0x0010b8ca, 0x0201f800, 0x0010aa47, 0x4a038805,
+       0x00000001, 0x4200b000, 0x000003e8, 0x4201d000,
+       0x00000064, 0x4c580000, 0x0201f800, 0x0010608e,
+       0x0201f800, 0x001018d3, 0x5c00b000, 0x04000004,
+       0x8058b040, 0x040207f6, 0x0401f004, 0x4a038805,
+       0x00000001, 0x0401f01f, 0x59c40006, 0x84000500,
+       0x48038806, 0x0201f800, 0x00106ede, 0x497b8880,
+       0x0201f800, 0x0010a9c0, 0x59c4000d, 0x8c000500,
+       0x02020800, 0x0010a9ce, 0x59c400a3, 0x82000500,
+       0xfcf8ffff, 0x480388a3, 0x4a03504c, 0x00000002,
+       0x4202d800, 0x00000004, 0x4a038805, 0x00000001,
+       0x0201f800, 0x001006d4, 0x0401fb3b, 0x497b5052,
+       0x4a035049, 0x00000001, 0x0201f800, 0x00100452,
+       0x825cbd00, 0xbbfffffe, 0x485f8805, 0x5c00c000,
+       0x5c00b800, 0x1c01f000, 0x59c41004, 0x480bc857,
+       0x8c081500, 0x04000006, 0x4803c856, 0x497b2807,
+       0x0201f800, 0x00106fa4, 0x0401f00a, 0x82080500,
+       0x000001f0, 0x04000007, 0x4803c856, 0x417a3000,
+       0x0201f800, 0x00106062, 0x0201f800, 0x00106fc6,
+       0x4a038805, 0x80000000, 0x1c01f000, 0x59c408a3,
+       0x4807c857, 0x84040d40, 0x480788a3, 0x1c01f000,
+       0x4d900000, 0x4dd00000, 0x4da40000, 0x4d140000,
+       0x4a038805, 0x40000000, 0x42000000, 0x0010b8c6,
+       0x0201f800, 0x0010aa47, 0x0201f800, 0x00106c55,
+       0x59c41004, 0x8c081500, 0x04000054, 0x598e600d,
+       0x497b2807, 0x813261c0, 0x04000032, 0x59300403,
+       0x82000580, 0x00000032, 0x0402002e, 0x5930001c,
+       0x48038833, 0x4a038807, 0x00018000, 0x4201d000,
+       0x00000002, 0x0201f800, 0x0010608e, 0x497b8807,
+       0x4201d000, 0x00000002, 0x0201f800, 0x0010608e,
+       0x0201f800, 0x00106e21, 0x4201d000, 0x00007530,
+       0x0201f800, 0x0010608e, 0x59c408a4, 0x82040d00,
+       0x0000000f, 0x82040d80, 0x00000000, 0x04000005,
+       0x42000000, 0x00200000, 0x0201f800, 0x00101949,
+       0x0201f800, 0x00106bbf, 0x59300008, 0x80000540,
+       0x02000800, 0x001005d8, 0x40025800, 0x4a025a04,
+       0x00000103, 0x5931d821, 0x58ef400b, 0x58ec0009,
+       0x0801f800, 0x0201f800, 0x0002077d, 0x0401f047,
+       0x598c000f, 0x82001c80, 0x000000c8, 0x0402100f,
+       0x80000000, 0x4803180f, 0x59c400a4, 0x82000500,
+       0x0000000f, 0x82000580, 0x00000002, 0x04020004,
+       0x42000000, 0x00200000, 0x0401fbf7, 0x0201f800,
+       0x0010604d, 0x0401f035, 0x4933c857, 0x0201f800,
+       0x00106e21, 0x813261c0, 0x04000030, 0x4a026203,
+       0x00000001, 0x42027000, 0x00000027, 0x0201f800,
+       0x000207a1, 0x0401f029, 0x8c081508, 0x04000027,
+       0x417a3000, 0x0201f800, 0x001070d8, 0x42032000,
+       0x0000bf32, 0x0201f800, 0x00106062, 0x59926004,
+       0x813261c0, 0x04000012, 0x42001800, 0x000000c8,
+       0x0201f800, 0x001070a4, 0x0402000d, 0x59c400a4,
+       0x82000500, 0x0000000f, 0x82000580, 0x00000002,
+       0x04020004, 0x42000000, 0x00200000, 0x0401fbce,
+       0x0201f800, 0x00106052, 0x0401f00c, 0x4933c857,
+       0x0201f800, 0x00106dc3, 0x813261c0, 0x04000007,
+       0x42027000, 0x0000004f, 0x4a026203, 0x00000003,
+       0x0201f800, 0x000207a1, 0x5c022800, 0x5c034800,
+       0x5c03a000, 0x5c032000, 0x0201f000, 0x00106c4b,
+       0x4803c857, 0x59a80821, 0x48035021, 0x80041580,
+       0x04000045, 0x800409c0, 0x04000023, 0x497b504c,
+       0x42000000, 0x0010b80d, 0x0201f800, 0x0010aa47,
+       0x0201f800, 0x0010aaf9, 0x42001000, 0x00008011,
+       0x59c40001, 0x82000500, 0x00018000, 0x82001d80,
+       0x00000000, 0x04000009, 0x82001d80, 0x00008000,
+       0x04000009, 0x82001d80, 0x00010000, 0x04000009,
+       0x0201f800, 0x001005d8, 0x42001800, 0x00000000,
+       0x0401f006, 0x42001800, 0x00000001, 0x0401f003,
+       0x42001800, 0x00000003, 0x0201f800, 0x00103a3e,
+       0x0401f021, 0x59a8084c, 0x800409c0, 0x04020007,
+       0x59c4000d, 0x8c000520, 0x04000004, 0x42001800,
+       0x00000003, 0x0401f002, 0x40041800, 0x0201f800,
+       0x0010aadd, 0x42001000, 0x00008012, 0x0201f800,
+       0x00103a3e, 0x0201f800, 0x001006d4, 0x0201f800,
+       0x0010ab33, 0x0402000c, 0x0401f853, 0x4d400000,
+       0x4d3c0000, 0x42028000, 0x00000028, 0x42027800,
+       0x00000408, 0x0201f800, 0x00101fe5, 0x5c027800,
+       0x5c028000, 0x1c01f000, 0x4803c857, 0x82000400,
+       0x0010210e, 0x50000800, 0x82040d00, 0x000000ff,
+       0x1c01f000, 0x4803c856, 0x4c580000, 0x4200b000,
+       0x00000010, 0x497b88ac, 0x497b88ad, 0x8058b040,
+       0x040207fe, 0x5c00b000, 0x1c01f000, 0x4807c857,
+       0x48075010, 0x80041108, 0x4200b000, 0x00000010,
+       0x497b88ac, 0x80000580, 0x800811c0, 0x04020006,
+       0x82040500, 0x0000000f, 0x82000400, 0x0010ab38,
+       0x50000000, 0x480388ad, 0x80081040, 0x8058b040,
+       0x040207f5, 0x1c01f000, 0x59a80005, 0x04000003,
+       0x84000546, 0x0401f002, 0x84000506, 0x48035005,
+       0x4803c857, 0x1c01f000, 0x4803c857, 0x4c080000,
+       0x4c040000, 0x4c000000, 0x59c40892, 0x4807c857,
+       0x80041580, 0x04000010, 0x80041480, 0x04021007,
+       0x80081080, 0x80081000, 0x4008b000, 0x42000000,
+       0x00000201, 0x0401f004, 0x4008b000, 0x42000000,
+       0x00000210, 0x48038886, 0x8058b040, 0x040207fe,
+       0x497b8886, 0x5c000000, 0x5c000800, 0x5c001000,
+       0x1c01f000, 0x4803c856, 0x0201f800, 0x00103b25,
+       0x04000005, 0x42028000, 0x0000002e, 0x0201f000,
+       0x0010a449, 0x1c01f000, 0x42000800, 0x00000002,
+       0x59a80005, 0x8c000514, 0x0402000b, 0x59c80835,
+       0x82040d00, 0x00001f00, 0x80040910, 0x80040800,
+       0x59a8006c, 0x80000540, 0x04000003, 0x42000800,
+       0x0000025a, 0x4807c857, 0x1c01f000, 0x4c000000,
+       0x59a80053, 0x4803c857, 0x82000580, 0x00000000,
+       0x5c000000, 0x1c01f000, 0x4c000000, 0x59a80053,
+       0x4803c857, 0x82000580, 0x00000001, 0x5c000000,
+       0x1c01f000, 0x4c000000, 0x59a80053, 0x4803c857,
+       0x82000580, 0x00000003, 0x5c000000, 0x1c01f000,
+       0x4c000000, 0x59a80053, 0x82000580, 0x00000002,
+       0x5c000000, 0x1c01f000, 0x4c000000, 0x4c040000,
+       0x4c080000, 0x4c380000, 0x59a80040, 0x82000c80,
+       0x00000007, 0x02021800, 0x001005d8, 0x0c01f806,
+       0x5c007000, 0x5c001000, 0x5c000800, 0x5c000000,
+       0x1c01f000, 0x0010166c, 0x0010167f, 0x00101693,
+       0x00101695, 0x001016bc, 0x001016be, 0x001016c0,
+       0x4803c856, 0x4a035042, 0x00000000, 0x42000000,
+       0x00000002, 0x0401fa1b, 0x42000000, 0x00000002,
+       0x0401f9ad, 0x0401fab2, 0x4803c856, 0x4a035040,
+       0x00000006, 0x42000800, 0x0000001e, 0x42001000,
+       0x001016c1, 0x0201f000, 0x0010606e, 0x497b5045,
+       0x4a035050, 0x00000036, 0x4a03504f, 0x0000002a,
+       0x4803c856, 0x4a035042, 0x00000001, 0x42000000,
+       0x00000002, 0x0401f998, 0x4803c856, 0x4a035040,
+       0x00000006, 0x42000800, 0x0000001e, 0x42001000,
+       0x001016c1, 0x0201f000, 0x0010606e, 0x0201f800,
+       0x001005d8, 0x4a035050, 0x00000036, 0x4803c856,
+       0x4a035042, 0x00000003, 0x42000800, 0x00000000,
+       0x0401faa3, 0x82040d00, 0x00000090, 0x82040580,
+       0x00000090, 0x04000009, 0x82040580, 0x00000010,
+       0x04000009, 0x82040580, 0x00000000, 0x04000008,
+       0x0201f800, 0x001005d8, 0x42000000, 0x00000001,
+       0x0401f005, 0x41780000, 0x0401f003, 0x42000000,
+       0x00000002, 0x0401f970, 0x497b5046, 0x4803c856,
+       0x4a035040, 0x00000006, 0x42000800, 0x0000001e,
+       0x42001000, 0x001016c1, 0x0201f000, 0x0010606e,
+       0x0201f800, 0x001005d8, 0x0201f800, 0x001005d8,
+       0x1c01f000, 0x4c000000, 0x4c040000, 0x4c080000,
+       0x4c380000, 0x59a80042, 0x82000c80, 0x00000007,
+       0x02021800, 0x001005d8, 0x0c01f806, 0x5c007000,
+       0x5c001000, 0x5c000800, 0x5c000000, 0x1c01f000,
+       0x001016d7, 0x001016f6, 0x0010174a, 0x00101761,
+       0x00101778, 0x00101781, 0x00101783, 0x0401f9fc,
+       0x0402001b, 0x59a81048, 0x42000800, 0x00000000,
+       0x0401fa63, 0x82040d00, 0x00000090, 0x82040580,
+       0x00000090, 0x04000009, 0x82040580, 0x00000010,
+       0x04000008, 0x82040580, 0x00000000, 0x04000007,
+       0x0201f800, 0x001005d8, 0x84081540, 0x0401f004,
+       0x84081542, 0x0401f002, 0x84081544, 0x480b5048,
+       0x4a035040, 0x00000001, 0x0401f003, 0x0401f8cb,
+       0x0401ff82, 0x1c01f000, 0x0401f88f, 0x04000052,
+       0x0401f9db, 0x0402002a, 0x42000800, 0x00000000,
+       0x0401fa43, 0x82040d00, 0x00000090, 0x82040580,
+       0x00000000, 0x04000044, 0x82040580, 0x00000010,
+       0x04000006, 0x82040580, 0x00000090, 0x04000009,
+       0x0201f800, 0x001005d8, 0x59c40801, 0x82040d00,
+       0x00018000, 0x82040580, 0x00000000, 0x04000036,
+       0x42000800, 0x00000000, 0x0401fa2d, 0x82040d00,
+       0x00000090, 0x82040580, 0x00000010, 0x04000006,
+       0x82040580, 0x00000090, 0x04000006, 0x02020800,
+       0x001005d8, 0x59a80048, 0x84000542, 0x0401f003,
+       0x59a80048, 0x84000540, 0x48035048, 0x59a80045,
+       0x80000000, 0x48035045, 0x82000580, 0x00000005,
+       0x04000003, 0x0401f861, 0x0401f01e, 0x497b5045,
+       0x59c40801, 0x82040d00, 0x00018000, 0x82040580,
+       0x00000000, 0x04000009, 0x82040580, 0x00008000,
+       0x04000009, 0x82040580, 0x00010000, 0x04000008,
+       0x0201f800, 0x001005d8, 0x42000000, 0x00000001,
+       0x0401f005, 0x41780000, 0x0401f003, 0x42000000,
+       0x00000002, 0x0401f94b, 0x4a035042, 0x00000002,
+       0x0401f004, 0x4a035040, 0x00000003, 0x0401f002,
+       0x0401ff42, 0x1c01f000, 0x0401f83b, 0x04000015,
+       0x59a8004f, 0x80000040, 0x4803504f, 0x0401f984,
+       0x04020005, 0x4a035040, 0x00000003, 0x497b5041,
+       0x0401f00c, 0x59a8004f, 0x80000540, 0x04020003,
+       0x0401f89e, 0x0401f002, 0x0401f84b, 0x0401f82f,
+       0x497b5045, 0x4a035042, 0x00000001, 0x0401ff2b,
+       0x1c01f000, 0x0401f824, 0x04000015, 0x0401f970,
+       0x0402000f, 0x59a80046, 0x80000000, 0x48035046,
+       0x82000580, 0x00000007, 0x0402000c, 0x4a035052,
+       0x0000000a, 0x497b5049, 0x59a80048, 0x8400055e,
+       0x48035048, 0x4803c857, 0x0401f005, 0x0401f817,
+       0x4a035042, 0x00000004, 0x0401ff3d, 0x1c01f000,
+       0x0401f80d, 0x04000007, 0x0401f959, 0x04020003,
+       0x0401ff1b, 0x0401f003, 0x0401f80c, 0x0401ff34,
+       0x1c01f000, 0x0201f800, 0x001005d8, 0x0201f800,
+       0x001005d8, 0x59a80050, 0x80000040, 0x48035050,
+       0x0400088d, 0x1c01f000, 0x4c040000, 0x42000800,
+       0x00000000, 0x0401f9b2, 0x82040d00, 0x00000090,
+       0x82040580, 0x00000090, 0x04000009, 0x82040580,
+       0x00000010, 0x04000009, 0x82040580, 0x00000000,
+       0x04000009, 0x0201f800, 0x001005d8, 0x42000000,
+       0x00000002, 0x0401f005, 0x42000000, 0x00000001,
+       0x0401f002, 0x41780000, 0x0401f8ea, 0x5c000800,
+       0x1c01f000, 0x4c040000, 0x59c40801, 0x82040d00,
+       0x00018000, 0x82040580, 0x00000000, 0x04000009,
+       0x82040580, 0x00008000, 0x04000009, 0x82040580,
+       0x00010000, 0x04000009, 0x0201f800, 0x001005d8,
+       0x42000000, 0x00000002, 0x0401f005, 0x42000000,
+       0x00000001, 0x0401f002, 0x41780000, 0x0401f866,
+       0x5c000800, 0x1c01f000, 0x4c040000, 0x59a80045,
+       0x80000000, 0x48035045, 0x82000580, 0x00000005,
+       0x04020018, 0x497b5045, 0x59c40801, 0x82040d00,
+       0x00018000, 0x82040580, 0x00000000, 0x04000009,
+       0x82040580, 0x00008000, 0x04000009, 0x82040580,
+       0x00010000, 0x04000009, 0x0201f800, 0x001005d8,
+       0x42000000, 0x00000002, 0x0401f005, 0x42000000,
+       0x00000001, 0x0401f002, 0x41780000, 0x0401f846,
+       0x42000800, 0x00000000, 0x0401f961, 0x82040d00,
+       0x00000090, 0x82040580, 0x00000090, 0x04000009,
+       0x82040580, 0x00000010, 0x04000009, 0x82040580,
+       0x00000000, 0x04000009, 0x0201f800, 0x001005d8,
+       0x42000000, 0x00000002, 0x0401f005, 0x42000000,
+       0x00000001, 0x0401f002, 0x41780000, 0x0401f899,
+       0x5c000800, 0x1c01f000, 0x4c200000, 0x59a80048,
+       0x82000500, 0x00007fff, 0x02000800, 0x001005d8,
+       0x59a84047, 0x80204102, 0x02001800, 0x001005d8,
+       0x48235047, 0x80204500, 0x040007fa, 0x8c000504,
+       0x04020007, 0x8c000502, 0x04020008, 0x8c000500,
+       0x04020008, 0x0201f800, 0x001005d8, 0x42000000,
+       0x00000002, 0x0401f005, 0x41780000, 0x0401f003,
+       0x42000000, 0x00000001, 0x0401f80f, 0x5c004000,
+       0x1c01f000, 0x04011000, 0x4a03c840, 0x0010b440,
+       0x4a03c842, 0x00000009, 0x40000000, 0x040117ff,
+       0x4a035047, 0x00000004, 0x4a03503e, 0x00000000,
+       0x1c01f000, 0x59a80858, 0x82040d80, 0x01391077,
+       0x04020008, 0x59e00813, 0x8c040d00, 0x04000005,
+       0x82000d80, 0x00000002, 0x04020002, 0x41780000,
+       0x4c000000, 0x0401f9b1, 0x5c000000, 0x800001c0,
+       0x04000040, 0x82000d80, 0x00000001, 0x0402001d,
+       0x42000800, 0x000000a0, 0x0401f909, 0x82040540,
+       0x00000004, 0x42000800, 0x000000a0, 0x0401f909,
+       0x42000800, 0x000000c0, 0x0401f901, 0x82040540,
+       0x00000020, 0x42000800, 0x000000c0, 0x0401f901,
+       0x59c40001, 0x82000500, 0xfffe7fff, 0x82000540,
+       0x00000000, 0x48038801, 0x59a80054, 0x80000110,
+       0x42000800, 0x000000e0, 0x0401f8f6, 0x0401f03c,
+       0x82000d80, 0x00000002, 0x02020800, 0x001005d8,
+       0x42000800, 0x000000a0, 0x0401f8e9, 0x82040500,
+       0xfffffffb, 0x42000800, 0x000000a0, 0x0401f8e9,
+       0x42000800, 0x000000c0, 0x0401f8e1, 0x82040500,
+       0xffffffdf, 0x42000800, 0x000000c0, 0x0401f8e1,
+       0x59c40001, 0x82000500, 0xfffe7fff, 0x82000540,
+       0x00010000, 0x48038801, 0x59a80056, 0x80000110,
+       0x42000800, 0x000000e0, 0x0401f8d6, 0x0401f01c,
+       0x42000800, 0x000000a0, 0x0401f8cd, 0x82040540,
+       0x00000004, 0x42000800, 0x000000a0, 0x0401f8cd,
+       0x42000800, 0x000000c0, 0x0401f8c5, 0x82040500,
+       0xffffffdf, 0x42000800, 0x000000c0, 0x0401f8c5,
+       0x59c40001, 0x82000500, 0xfffe7fff, 0x82000540,
+       0x00008000, 0x48038801, 0x59a80055, 0x80000110,
+       0x42000800, 0x000000e0, 0x0401f8ba, 0x0401f163,
+       0x4803c857, 0x59a80858, 0x82040d80, 0x01391077,
+       0x04020008, 0x59e00813, 0x8c040d00, 0x04000005,
+       0x82000d80, 0x00000002, 0x04020002, 0x41780000,
+       0x4c000000, 0x0401f94d, 0x5c000000, 0x800001c0,
+       0x04000026, 0x82000d80, 0x00000001, 0x04020010,
+       0x59a8006c, 0x80000540, 0x04000004, 0x42001000,
+       0x00000000, 0x0401fa0a, 0x42000800, 0x00000000,
+       0x0401f897, 0x82040540, 0x00000090, 0x42000800,
+       0x00000000, 0x0401f897, 0x0401f024, 0x82000d80,
+       0x00000002, 0x02020800, 0x001005d8, 0x59a8006c,
+       0x80000540, 0x04000004, 0x42001000, 0x00010000,
+       0x0401f9f7, 0x42000800, 0x00000000, 0x0401f884,
+       0x82040500, 0xffffff6f, 0x42000800, 0x00000000,
+       0x0401f884, 0x0401f011, 0x59a8006c, 0x80000540,
+       0x04000004, 0x42001000, 0x00008000, 0x0401f9e8,
+       0x42000800, 0x00000000, 0x0401f875, 0x82040500,
+       0xffffff6f, 0x82000540, 0x00000010, 0x42000800,
+       0x00000000, 0x0401f873, 0x0401f124, 0x4c580000,
+       0x4200b000, 0x00000014, 0x8058b040, 0x04000043,
+       0x59c4000d, 0x8c000520, 0x040207fc, 0x0401f85c,
+       0x59c4000d, 0x8c000520, 0x040207f8, 0x59c40808,
+       0x84040d50, 0x48078808, 0x4200b000, 0x000000c8,
+       0x8058b040, 0x040207ff, 0x4200b000, 0x00000014,
+       0x8058b040, 0x04000031, 0x59c4000d, 0x8c000520,
+       0x0402002e, 0x42000800, 0x00001000, 0x50040800,
+       0x82040c80, 0x24220001, 0x04020003, 0x8c000504,
+       0x040007f4, 0x0401f842, 0x59c4000d, 0x8c000520,
+       0x04020022, 0x42000800, 0x00001000, 0x50040800,
+       0x82040c80, 0x24220001, 0x04020003, 0x8c000504,
+       0x040007e8, 0x4200b000, 0x0000000a, 0x8058b040,
+       0x04000003, 0x0401f832, 0x0401f7fd, 0x4200b000,
+       0x00000064, 0x59c4000d, 0x8c00051e, 0x0400000f,
+       0x8058b040, 0x040207fc, 0x42000000, 0x00001000,
+       0x50000000, 0x82000480, 0x24220001, 0x04020004,
+       0x59c40808, 0x84040d10, 0x48078808, 0x80000580,
+       0x4803c857, 0x0401f00c, 0x42000000, 0x00001000,
+       0x50000000, 0x82000480, 0x24220001, 0x04020004,
+       0x59c40808, 0x84040d10, 0x48078808, 0x82000540,
+       0x00000001, 0x5c00b000, 0x1c01f000, 0x42000800,
+       0x000000a0, 0x0401f816, 0x82040500, 0xfffffffe,
+       0x42000800, 0x000000a0, 0x0401f816, 0x42000800,
+       0x00000000, 0x0401f80e, 0x82040500, 0xfffffffe,
+       0x42000800, 0x00000000, 0x0401f00e, 0x40000000,
+       0x40000000, 0x40000000, 0x40000000, 0x40000000,
+       0x1c01f000, 0x480b8805, 0x1c01f000, 0x4807880e,
+       0x59c4080f, 0x82040d00, 0x000000ff, 0x1c01f000,
+       0x900001c0, 0x80040d40, 0x84040d40, 0x4807880e,
+       0x1c01f000, 0x82000d80, 0x00200000, 0x04000009,
+       0x82000d80, 0x02000000, 0x04000006, 0x82000d80,
+       0x01000000, 0x04000006, 0x59c408a3, 0x0401f006,
+       0x59c408a3, 0x84040d30, 0x0401f003, 0x59c408a3,
+       0x84040d32, 0x80040540, 0x480388a3, 0x480788a3,
+       0x1c01f000, 0x59c400a3, 0x84000556, 0x480388a3,
+       0x84000516, 0x480388a3, 0x1c01f000, 0x485fc857,
+       0x4863c857, 0x4c640000, 0x4d3c0000, 0x4d400000,
+       0x0201f800, 0x00106ede, 0x4863500a, 0x0201f800,
+       0x0010ab33, 0x0402006c, 0x82600d00, 0x0000ff00,
+       0x800409c0, 0x0400000c, 0x4200c800, 0x00000001,
+       0x59a80010, 0x82000500, 0x000000ff, 0x80041110,
+       0x80081580, 0x04000021, 0x82041580, 0x0000ff00,
+       0x0400000a, 0x59c410a3, 0x82081500, 0x00008000,
+       0x04000009, 0x59c410a7, 0x82081500, 0x0000ff00,
+       0x82081580, 0x0000ff00, 0x4200c800, 0x00000000,
+       0x04000012, 0x59a80005, 0x8c000502, 0x04020008,
+       0x8c000500, 0x0402000d, 0x599c1017, 0x8c08151a,
+       0x0400003e, 0x84000542, 0x48035005, 0x4200c800,
+       0x00000002, 0x42028000, 0x00000004, 0x42027800,
+       0x00000008, 0x0401f008, 0x59a80805, 0x84040d40,
+       0x48075005, 0x42028000, 0x00000004, 0x42027800,
+       0x00000400, 0x59a80006, 0x8c000502, 0x04020006,
+       0x59a80805, 0x8c040d0a, 0x04020033, 0x84040d4a,
+       0x48075005, 0x42000000, 0x0010b812, 0x0201f800,
+       0x0010aa47, 0x59a8180a, 0x42001000, 0x00008013,
+       0x0201f800, 0x00103a3e, 0x0201f800, 0x00103b25,
+       0x04000015, 0x4d400000, 0x82600500, 0x000000ff,
+       0x42028800, 0x0000ffff, 0x40643000, 0x42028000,
+       0x0000000e, 0x0201f800, 0x0010a446, 0x42000800,
+       0x00000001, 0x42001000, 0x00000100, 0x0201f800,
+       0x0010618b, 0x5c028000, 0x599c0817, 0x8c040d0a,
+       0x04020011, 0x493fc857, 0x4943c857, 0x0201f800,
+       0x00101fe5, 0x0401f00c, 0x0201f800, 0x00103b25,
+       0x04000009, 0x42028000, 0x0000000f, 0x42028800,
+       0x0000ffff, 0x42003000, 0x00000000, 0x0201f800,
+       0x0010a449, 0x497b8880, 0x5c028000, 0x5c027800,
+       0x5c00c800, 0x1c01f000, 0x42000800, 0x000000a0,
+       0x0401ff5f, 0x82040540, 0x00000002, 0x42000800,
+       0x000000a0, 0x0401f75f, 0x42000800, 0x00000000,
+       0x0401ff57, 0x82040540, 0x00000002, 0x42000800,
+       0x00000000, 0x0401f757, 0x42000800, 0x000000a0,
+       0x0401ff4f, 0x82040500, 0xfffffffd, 0x42000800,
+       0x000000a0, 0x0401f74f, 0x42000800, 0x00000000,
+       0x0401ff47, 0x82040500, 0xfffffffd, 0x42000800,
+       0x00000000, 0x0401f747, 0x59c408a8, 0x0401ff38,
+       0x0401ff37, 0x59c400a8, 0x80040d80, 0x040207fb,
+       0x1c01f000, 0x4803c856, 0x4a038807, 0x00000001,
+       0x497b8807, 0x59c40005, 0x48038805, 0x497b506c,
+       0x497b506d, 0x41785800, 0x42006000, 0x00000001,
+       0x42006800, 0x00000003, 0x0401f824, 0x0401f82f,
+       0x40400000, 0x4803c857, 0x82408580, 0x00000000,
+       0x0402001d, 0x41785800, 0x42006000, 0x0000001e,
+       0x42006800, 0x00000014, 0x0401f818, 0x0401f823,
+       0x40400000, 0x4803c857, 0x82408580, 0x00000800,
+       0x04020011, 0x42005800, 0x00000001, 0x42006000,
+       0x0000001e, 0x42006800, 0x00000014, 0x0401f80b,
+       0x0401f816, 0x40400000, 0x4803c857, 0x82408580,
+       0x0000ffff, 0x04020004, 0x4a03506c, 0x00000001,
+       0x4803c856, 0x1c01f000, 0x41785000, 0x0401f812,
+       0x0401f838, 0x40347000, 0x40340800, 0x0401f03d,
+       0x42005000, 0x00000001, 0x0401f80b, 0x0401f831,
+       0x40340800, 0x0401f037, 0x42005000, 0x00000002,
+       0x0401f805, 0x0401f81d, 0x0401f835, 0x40048000,
+       0x1c01f000, 0x0401f808, 0x0401f814, 0x40280800,
+       0x0401f826, 0x402c0800, 0x0401f827, 0x40300800,
+       0x0401f025, 0x42000800, 0x0000ffff, 0x42001000,
+       0x00000001, 0x0401f829, 0x42001000, 0x00000010,
+       0x0401f826, 0x42000800, 0x0000ffff, 0x42001000,
+       0x00000010, 0x0401f021, 0x41780800, 0x42001000,
+       0x00000002, 0x0401f01d, 0x0401f92e, 0x4a03d000,
+       0x00050004, 0x0401f92b, 0x4a03d000, 0x00050005,
+       0x0401f928, 0x4a03d000, 0x00050004, 0x42000800,
+       0x00000001, 0x42001000, 0x00000001, 0x0401f00f,
+       0x42000800, 0x00000002, 0x42001000, 0x00000002,
+       0x0401f00a, 0x42001000, 0x00000005, 0x0401f007,
+       0x42001000, 0x00000010, 0x0401f004, 0x42001000,
+       0x00000010, 0x0401f01b, 0x0401f912, 0x82082c00,
+       0x0010ab38, 0x50142800, 0x82081500, 0xffffffff,
+       0x04000013, 0x0401f90b, 0x80081040, 0x80142902,
+       0x40040000, 0x80140500, 0x04000007, 0x4a03d000,
+       0x00070006, 0x0401f903, 0x4a03d000, 0x00070007,
+       0x0401f006, 0x4a03d000, 0x00070004, 0x0401f8fd,
+       0x4a03d000, 0x00070005, 0x0401f7ec, 0x1c01f000,
+       0x41780800, 0x82082c00, 0x0010ab38, 0x50142800,
+       0x82081500, 0xffffffff, 0x04000010, 0x0401f8f1,
+       0x4a03d000, 0x00050001, 0x0401f8ee, 0x59e81800,
+       0x80081040, 0x80142902, 0x8c0c1d06, 0x04000004,
+       0x40140000, 0x80040d40, 0x0401f8e6, 0x4a03d000,
+       0x00070000, 0x0401f7ef, 0x1c01f000, 0x480bc857,
+       0x480b506d, 0x59c40001, 0x82000500, 0xffffefff,
+       0x48038801, 0x41781800, 0x0401f8c4, 0x41785800,
+       0x42006000, 0x0000001e, 0x42006800, 0x00000004,
+       0x0401ff7a, 0x42006800, 0x0000003c, 0x0401ff7d,
+       0x41785800, 0x42006000, 0x0000001e, 0x42006800,
+       0x00000004, 0x0401ff71, 0x41786800, 0x0401ff75,
+       0x41785800, 0x42006000, 0x0000001e, 0x41786800,
+       0x0401ff6a, 0x42006800, 0x00000002, 0x0401ff6d,
+       0x42006800, 0x00000001, 0x0401ff64, 0x42006800,
+       0x000000f5, 0x0401ff67, 0x41785800, 0x42006000,
+       0x0000001e, 0x42006800, 0x00000004, 0x0401ff5b,
+       0x42006800, 0x00000020, 0x0401ff5e, 0x59a8106d,
+       0x0401f865, 0x42001800, 0x000200f5, 0x0401f897,
+       0x59a8106d, 0x0401f879, 0x41785800, 0x42006000,
+       0x0000001e, 0x42006800, 0x00000004, 0x0401ff4b,
+       0x41786800, 0x0401ff4f, 0x59c40001, 0x82000540,
+       0x00001000, 0x48038801, 0x41785800, 0x42006000,
+       0x0000001e, 0x42006800, 0x00000015, 0x0401ff3f,
+       0x0401ff4a, 0x40400000, 0x82000540, 0x00000002,
+       0x4c000000, 0x41785800, 0x42006000, 0x0000001e,
+       0x42006800, 0x00000015, 0x0401ff34, 0x5c000000,
+       0x40006800, 0x0401ff37, 0x41785800, 0x42006000,
+       0x0000001e, 0x42006800, 0x00000015, 0x0401ff2b,
+       0x0401ff36, 0x40400000, 0x82000500, 0x0000fffd,
+       0x4c000000, 0x41785800, 0x42006000, 0x0000001e,
+       0x42006800, 0x00000015, 0x0401ff20, 0x5c000000,
+       0x40006800, 0x0401ff23, 0x41785800, 0x42006000,
+       0x0000001e, 0x42006800, 0x00000014, 0x0401ff17,
+       0x0401ff22, 0x40400000, 0x82000540, 0x00000040,
+       0x4c000000, 0x41785800, 0x42006000, 0x0000001e,
+       0x42006800, 0x00000014, 0x0401ff0c, 0x5c000000,
+       0x40006800, 0x0401ff0f, 0x41785800, 0x42006000,
+       0x0000001e, 0x42006800, 0x00000014, 0x0401ff03,
+       0x0401ff0e, 0x40400000, 0x82000500, 0x0000ffbf,
+       0x4c000000, 0x41785800, 0x42006000, 0x0000001e,
+       0x42006800, 0x00000014, 0x0401fef8, 0x5c000000,
+       0x40006800, 0x0401fefb, 0x4a038886, 0x00002020,
+       0x0401f04c, 0x480bc857, 0x82080580, 0x00010000,
+       0x04020007, 0x82040d40, 0x00010000, 0x42001800,
+       0x00000001, 0x0401f82d, 0x0401f00f, 0x82080580,
+       0x00008000, 0x04000007, 0x82040d40, 0x00000000,
+       0x42001800, 0x00900001, 0x0401f824, 0x0401f006,
+       0x82040d40, 0x00008000, 0x42001800, 0x00100001,
+       0x0401f81e, 0x1c01f000, 0x480bc857, 0x82080580,
+       0x00010000, 0x04020008, 0x42001800, 0x000000a1,
+       0x0401f816, 0x42001800, 0x000000c1, 0x0401f813,
+       0x0401f011, 0x82080580, 0x00008000, 0x04000008,
+       0x42001800, 0x000400a1, 0x0401f80c, 0x42001800,
+       0x002000c1, 0x0401f809, 0x0401f007, 0x42001800,
+       0x000400a1, 0x0401f805, 0x42001800, 0x000000c1,
+       0x0401f802, 0x1c01f000, 0x480fc857, 0x41785800,
+       0x42006000, 0x0000001e, 0x41786800, 0x0401feb7,
+       0x400c6800, 0x80346960, 0x0401feba, 0x42006800,
+       0x00000001, 0x0401feb1, 0x400c6800, 0x0401feb5,
+       0x42006800, 0x00000003, 0x0401feac, 0x0401feb7,
+       0x40400000, 0x8c000504, 0x040207fc, 0x1c01f000,
+       0x42000000, 0x00000064, 0x80000040, 0x040207ff,
+       0x1c01f000, 0x00020103, 0x00101bd5, 0x00101bdb,
+       0x00101be1, 0x00101be9, 0x00101bef, 0x00101bf7,
+       0x00101bff, 0x00101c09, 0x00101c0f, 0x00101c17,
+       0x00101c1f, 0x00101c29, 0x00101c31, 0x00101c3b,
+       0x00101c45, 0x000200f8, 0x00101c51, 0x00101c59,
+       0x00101c61, 0x00101c6b, 0x00101c73, 0x00101c7d,
+       0x00101c87, 0x00101c93, 0x00101c9b, 0x00101ca5,
+       0x00101caf, 0x00101cbb, 0x00101cc5, 0x00101cd1,
+       0x00101cdd, 0x000200fd, 0x00101ceb, 0x00101cf3,
+       0x00101cfb, 0x00101d05, 0x00101d0d, 0x00101d17,
+       0x00101d21, 0x00101d2d, 0x00101d35, 0x00101d3f,
+       0x00101d49, 0x00101d55, 0x00101d5f, 0x00101d6b,
+       0x00101d77, 0x00101d85, 0x00101d8d, 0x00101d97,
+       0x00101da1, 0x00101dad, 0x00101db7, 0x00101dc3,
+       0x00101dcf, 0x00101ddd, 0x00101de7, 0x00101df3,
+       0x00101dff, 0x00101e0d, 0x00101e19, 0x00101e27,
+       0x00101e35, 0x4c000000, 0x4df00000, 0x0201f800,
+       0x00020104, 0x0201f000, 0x00020101, 0x4c000000,
+       0x4df00000, 0x0201f800, 0x00101418, 0x0201f000,
+       0x00020101, 0x4c000000, 0x4df00000, 0x0201f800,
+       0x00101418, 0x0201f800, 0x00020104, 0x0201f000,
+       0x00020101, 0x4c000000, 0x4df00000, 0x0201f800,
+       0x00101155, 0x0201f000, 0x00020101, 0x4c000000,
+       0x4df00000, 0x0201f800, 0x00101155, 0x0201f800,
+       0x00020104, 0x0201f000, 0x00020101, 0x4c000000,
+       0x4df00000, 0x0201f800, 0x00101155, 0x0201f800,
+       0x00101418, 0x0201f000, 0x00020101, 0x4c000000,
+       0x4df00000, 0x0201f800, 0x00101155, 0x0201f800,
+       0x00101418, 0x0201f800, 0x00020104, 0x0201f000,
+       0x00020101, 0x4c000000, 0x4df00000, 0x0201f800,
+       0x00101289, 0x0201f000, 0x00020101, 0x4c000000,
+       0x4df00000, 0x0201f800, 0x00101289, 0x0201f800,
+       0x00020104, 0x0201f000, 0x00020101, 0x4c000000,
+       0x4df00000, 0x0201f800, 0x00101418, 0x0201f800,
+       0x00101289, 0x0201f000, 0x00020101, 0x4c000000,
+       0x4df00000, 0x0201f800, 0x00101418, 0x0201f800,
+       0x00101289, 0x0201f800, 0x00020104, 0x0201f000,
+       0x00020101, 0x4c000000, 0x4df00000, 0x0201f800,
+       0x00101155, 0x0201f800, 0x00101289, 0x0201f000,
+       0x00020101, 0x4c000000, 0x4df00000, 0x0201f800,
+       0x00101155, 0x0201f800, 0x00101289, 0x0201f800,
+       0x00020104, 0x0201f000, 0x00020101, 0x4c000000,
+       0x4df00000, 0x0201f800, 0x00101155, 0x0201f800,
+       0x00101418, 0x0201f800, 0x00101289, 0x0201f000,
+       0x00020101, 0x4c000000, 0x4df00000, 0x0201f800,
+       0x00101155, 0x0201f800, 0x00101418, 0x0201f800,
+       0x00101289, 0x0201f800, 0x00020104, 0x0201f000,
+       0x00020101, 0x4c000000, 0x4df00000, 0x0201f800,
+       0x00020729, 0x0201f800, 0x00020104, 0x0201f000,
+       0x00020101, 0x4c000000, 0x4df00000, 0x0201f800,
+       0x00101418, 0x0201f800, 0x00020729, 0x0201f000,
+       0x00020101, 0x4c000000, 0x4df00000, 0x0201f800,
+       0x00101418, 0x0201f800, 0x00020729, 0x0201f800,
+       0x00020104, 0x0201f000, 0x00020101, 0x4c000000,
+       0x4df00000, 0x0201f800, 0x00101155, 0x0201f800,
+       0x00020729, 0x0201f000, 0x00020101, 0x4c000000,
+       0x4df00000, 0x0201f800, 0x00101155, 0x0201f800,
+       0x00020729, 0x0201f800, 0x00020104, 0x0201f000,
+       0x00020101, 0x4c000000, 0x4df00000, 0x0201f800,
+       0x00101155, 0x0201f800, 0x00101418, 0x0201f800,
+       0x00020729, 0x0201f000, 0x00020101, 0x4c000000,
+       0x4df00000, 0x0201f800, 0x00101155, 0x0201f800,
+       0x00101418, 0x0201f800, 0x00020729, 0x0201f800,
+       0x00020104, 0x0201f000, 0x00020101, 0x4c000000,
+       0x4df00000, 0x0201f800, 0x00020729, 0x0201f800,
+       0x00101289, 0x0201f000, 0x00020101, 0x4c000000,
+       0x4df00000, 0x0201f800, 0x00020729, 0x0201f800,
+       0x00101289, 0x0201f800, 0x00020104, 0x0201f000,
+       0x00020101, 0x4c000000, 0x4df00000, 0x0201f800,
+       0x00101418, 0x0201f800, 0x00020729, 0x0201f800,
+       0x00101289, 0x0201f000, 0x00020101, 0x4c000000,
+       0x4df00000, 0x0201f800, 0x00101418, 0x0201f800,
+       0x00020729, 0x0201f800, 0x00101289, 0x0201f800,
+       0x00020104, 0x0201f000, 0x00020101, 0x4c000000,
+       0x4df00000, 0x0201f800, 0x00101155, 0x0201f800,
+       0x00020729, 0x0201f800, 0x00101289, 0x0201f000,
+       0x00020101, 0x4c000000, 0x4df00000, 0x0201f800,
+       0x00101155, 0x0201f800, 0x00020729, 0x0201f800,
+       0x00101289, 0x0201f800, 0x00020104, 0x0201f000,
+       0x00020101, 0x4c000000, 0x4df00000, 0x0201f800,
+       0x00101155, 0x0201f800, 0x00101418, 0x0201f800,
+       0x00020729, 0x0201f800, 0x00101289, 0x0201f000,
+       0x00020101, 0x4c000000, 0x4df00000, 0x0201f800,
+       0x00101155, 0x0201f800, 0x00101418, 0x0201f800,
+       0x00020729, 0x0201f800, 0x00101289, 0x0201f800,
+       0x00020104, 0x0201f000, 0x00020101, 0x4c000000,
+       0x4df00000, 0x0201f800, 0x00020015, 0x0201f800,
+       0x00020104, 0x0201f000, 0x00020101, 0x4c000000,
+       0x4df00000, 0x0201f800, 0x00101418, 0x0201f800,
+       0x00020015, 0x0201f000, 0x00020101, 0x4c000000,
+       0x4df00000, 0x0201f800, 0x00101418, 0x0201f800,
+       0x00020015, 0x0201f800, 0x00020104, 0x0201f000,
+       0x00020101, 0x4c000000, 0x4df00000, 0x0201f800,
+       0x00101155, 0x0201f800, 0x00020015, 0x0201f000,
+       0x00020101, 0x4c000000, 0x4df00000, 0x0201f800,
+       0x00101155, 0x0201f800, 0x00020015, 0x0201f800,
+       0x00020104, 0x0201f000, 0x00020101, 0x4c000000,
+       0x4df00000, 0x0201f800, 0x00101418, 0x0201f800,
+       0x00101155, 0x0201f800, 0x00020015, 0x0201f000,
+       0x00020101, 0x4c000000, 0x4df00000, 0x0201f800,
+       0x00101418, 0x0201f800, 0x00101155, 0x0201f800,
+       0x00020015, 0x0201f800, 0x00020104, 0x0201f000,
+       0x00020101, 0x4c000000, 0x4df00000, 0x0201f800,
+       0x00020015, 0x0201f800, 0x00101289, 0x0201f000,
+       0x00020101, 0x4c000000, 0x4df00000, 0x0201f800,
+       0x00020015, 0x0201f800, 0x00101289, 0x0201f800,
+       0x00020104, 0x0201f000, 0x00020101, 0x4c000000,
+       0x4df00000, 0x0201f800, 0x00101418, 0x0201f800,
+       0x00020015, 0x0201f800, 0x00101289, 0x0201f000,
+       0x00020101, 0x4c000000, 0x4df00000, 0x0201f800,
+       0x00101418, 0x0201f800, 0x00020015, 0x0201f800,
+       0x00101289, 0x0201f800, 0x00020104, 0x0201f000,
+       0x00020101, 0x4c000000, 0x4df00000, 0x0201f800,
+       0x00020015, 0x0201f800, 0x00101289, 0x0201f800,
+       0x00101155, 0x0201f000, 0x00020101, 0x4c000000,
+       0x4df00000, 0x0201f800, 0x00020015, 0x0201f800,
+       0x00101289, 0x0201f800, 0x00101155, 0x0201f800,
+       0x00020104, 0x0201f000, 0x00020101, 0x4c000000,
+       0x4df00000, 0x0201f800, 0x00101418, 0x0201f800,
+       0x00020015, 0x0201f800, 0x00101289, 0x0201f800,
+       0x00101155, 0x0201f000, 0x00020101, 0x4c000000,
+       0x4df00000, 0x0201f800, 0x00101418, 0x0201f800,
+       0x00020015, 0x0201f800, 0x00101289, 0x0201f800,
+       0x00101155, 0x0201f800, 0x00020104, 0x0201f000,
+       0x00020101, 0x4c000000, 0x4df00000, 0x0201f800,
+       0x00020729, 0x0201f800, 0x00020015, 0x0201f000,
+       0x00020101, 0x4c000000, 0x4df00000, 0x0201f800,
+       0x00020729, 0x0201f800, 0x00020015, 0x0201f800,
+       0x00020104, 0x0201f000, 0x00020101, 0x4c000000,
+       0x4df00000, 0x0201f800, 0x00101418, 0x0201f800,
+       0x00020729, 0x0201f800, 0x00020015, 0x0201f000,
+       0x00020101, 0x4c000000, 0x4df00000, 0x0201f800,
+       0x00101418, 0x0201f800, 0x00020729, 0x0201f800,
+       0x00020015, 0x0201f800, 0x00020104, 0x0201f000,
+       0x00020101, 0x4c000000, 0x4df00000, 0x0201f800,
+       0x00020729, 0x0201f800, 0x00020015, 0x0201f800,
+       0x00101155, 0x0201f000, 0x00020101, 0x4c000000,
+       0x4df00000, 0x0201f800, 0x00020729, 0x0201f800,
+       0x00020015, 0x0201f800, 0x00101155, 0x0201f800,
+       0x00020104, 0x0201f000, 0x00020101, 0x4c000000,
+       0x4df00000, 0x0201f800, 0x00101418, 0x0201f800,
+       0x00020729, 0x0201f800, 0x00020015, 0x0201f800,
+       0x00101155, 0x0201f000, 0x00020101, 0x4c000000,
+       0x4df00000, 0x0201f800, 0x00101418, 0x0201f800,
+       0x00020729, 0x0201f800, 0x00020015, 0x0201f800,
+       0x00101155, 0x0201f800, 0x00020104, 0x0201f000,
+       0x00020101, 0x4c000000, 0x4df00000, 0x0201f800,
+       0x00020729, 0x0201f800, 0x00020015, 0x0201f800,
+       0x00101289, 0x0201f000, 0x00020101, 0x4c000000,
+       0x4df00000, 0x0201f800, 0x00020729, 0x0201f800,
+       0x00020015, 0x0201f800, 0x00101289, 0x0201f800,
+       0x00020104, 0x0201f000, 0x00020101, 0x4c000000,
+       0x4df00000, 0x0201f800, 0x00101418, 0x0201f800,
+       0x00020729, 0x0201f800, 0x00020015, 0x0201f800,
+       0x00101289, 0x0201f000, 0x00020101, 0x4c000000,
+       0x4df00000, 0x0201f800, 0x00101418, 0x0201f800,
+       0x00020729, 0x0201f800, 0x00020015, 0x0201f800,
+       0x00101289, 0x0201f800, 0x00020104, 0x0201f000,
+       0x00020101, 0x4c000000, 0x4df00000, 0x0201f800,
+       0x00101155, 0x0201f800, 0x00020729, 0x0201f800,
+       0x00020015, 0x0201f800, 0x00101289, 0x0201f000,
+       0x00020101, 0x4c000000, 0x4df00000, 0x0201f800,
+       0x00101155, 0x0201f800, 0x00020729, 0x0201f800,
+       0x00020015, 0x0201f800, 0x00101289, 0x0201f800,
+       0x00020104, 0x0201f000, 0x00020101, 0x4c000000,
+       0x4df00000, 0x0201f800, 0x00101155, 0x0201f800,
+       0x00101418, 0x0201f800, 0x00020729, 0x0201f800,
+       0x00020015, 0x0201f800, 0x00101289, 0x0201f000,
+       0x00020101, 0x4c000000, 0x4df00000, 0x0201f800,
+       0x00101155, 0x0201f800, 0x00101418, 0x0201f800,
+       0x00020729, 0x0201f800, 0x00020015, 0x0201f800,
+       0x00101289, 0x0201f800, 0x00020104, 0x0201f000,
+       0x00020101, 0x4c5c0000, 0x4c600000, 0x4178b800,
+       0x0201f800, 0x001048ec, 0x040200fd, 0x59a8c026,
+       0x0201f800, 0x0010513b, 0x04000003, 0x8c60c506,
+       0x0400000e, 0x8c60c500, 0x04020004, 0x8c60c50e,
+       0x040008f6, 0x0401f0f2, 0x0401fab4, 0x040200f0,
+       0x0201f800, 0x0010513b, 0x04020004, 0x4a03501c,
+       0x0000ffff, 0x0401f0ea, 0x8c60c504, 0x04000004,
+       0x4a03501c, 0x0000ffff, 0x0401f0e5, 0x59a8c010,
+       0x8260c500, 0x000000ff, 0x59a81013, 0x8c081500,
+       0x0400005d, 0x8c081502, 0x0402005b, 0x59a8b81c,
+       0x825c0d80, 0x0000ffff, 0x04020003, 0x4200b800,
+       0x00000001, 0x805c1104, 0x82086400, 0x0010be21,
+       0x50300800, 0x825c0500, 0x00000003, 0x0c01f001,
+       0x00101e81, 0x00101e7c, 0x00101e80, 0x00101e7e,
+       0x80040910, 0x0401f004, 0x80040930, 0x0401f002,
+       0x80040920, 0x82040500, 0x000000ff, 0x82000d80,
+       0x000000ff, 0x0400000f, 0x4c000000, 0x82000400,
+       0x0010210e, 0x50000800, 0x80040910, 0x82040580,
+       0x00000080, 0x5c000000, 0x04000030, 0x80600d80,
+       0x0400002e, 0x80000540, 0x0400002c, 0x0401f00b,
+       0x59a81005, 0x82081500, 0x00000003, 0x0402002b,
+       0x59a81013, 0x84081542, 0x480b5013, 0x4a03501c,
+       0x0000ffff, 0x0401f028, 0x4c000000, 0x59a80005,
+       0x8c000514, 0x42001000, 0x00000010, 0x02020800,
+       0x00104c6d, 0x5c000000, 0x0402001c, 0x417a8800,
+       0x0201f800, 0x00105c9a, 0x04020016, 0x0201f800,
+       0x001045e5, 0x04000006, 0x0201f800, 0x00104c62,
+       0x0401f8b1, 0x0400000f, 0x0401f00c, 0x599c0019,
+       0x8c00050e, 0x04020009, 0x0201f800, 0x001045a6,
+       0x04020008, 0x0201f800, 0x00104c62, 0x0401f9e1,
+       0x0401f8be, 0x04000003, 0x805cb800, 0x0401f7b2,
+       0x485f501c, 0x0401f086, 0x4a03501c, 0x0000ffff,
+       0x0401f083, 0x42003000, 0x0000007e, 0x59a8001c,
+       0x82001580, 0x0000ffff, 0x04020005, 0x80000d80,
+       0x4018b000, 0x4803c856, 0x0401f009, 0x8018b480,
+       0x04001004, 0x40000800, 0x4803c856, 0x0401f004,
+       0x4a03501c, 0x0000ffff, 0x0401f071, 0x4c040000,
+       0x4c580000, 0x82040400, 0x0010210e, 0x50000000,
+       0x82000500, 0x000000ff, 0x80604580, 0x0400005c,
+       0x0201f800, 0x00105c9b, 0x04020061, 0x59a80005,
+       0x8c000514, 0x42001000, 0x00000010, 0x02020800,
+       0x00104c6d, 0x5c00b000, 0x5c000800, 0x040207d7,
+       0x4c040000, 0x4c580000, 0x845cbd00, 0x0201f800,
+       0x00020245, 0x04000008, 0x599c0019, 0x8c00050e,
+       0x04020047, 0x0201f800, 0x001045ab, 0x0402004c,
+       0x0401f002, 0x845cbd40, 0x0201f800, 0x00104c62,
+       0x0201f800, 0x001049e7, 0x04020007, 0x59a80005,
+       0x8c000502, 0x04000033, 0x59340200, 0x8c00050e,
+       0x04020030, 0x59a81013, 0x8c081502, 0x04000025,
+       0x0201f800, 0x00104a09, 0x04000031, 0x8c5cbd00,
+       0x04020004, 0x0201f800, 0x001045ff, 0x0401f02c,
+       0x0401f9cd, 0x0400002a, 0x42026000, 0x0010bde9,
+       0x49366009, 0x497a6008, 0x417a7800, 0x0401f925,
+       0x42000000, 0x0010b864, 0x0201f800, 0x0010aa47,
+       0x0201f800, 0x00103b25, 0x0400001d, 0x41782800,
+       0x42003000, 0x00000008, 0x4d400000, 0x4d440000,
+       0x59368c03, 0x42028000, 0x00000029, 0x0201f800,
+       0x0010a446, 0x5c028800, 0x5c028000, 0x0401f010,
+       0x4937c857, 0x599c0019, 0x8c00050e, 0x0402000c,
+       0x0401f96c, 0x0401f849, 0x04000011, 0x0401f008,
+       0x59a80013, 0x8c000500, 0x04000003, 0x0401f9a6,
+       0x04000003, 0x0401f828, 0x04000009, 0x5c00b000,
+       0x5c000800, 0x80040800, 0x8058b040, 0x04020798,
+       0x4a03501c, 0x0000ffff, 0x0401f005, 0x4937c857,
+       0x5c00b000, 0x5c000800, 0x4807501c, 0x5c00c000,
+       0x5c00b800, 0x1c01f000, 0x4803c856, 0x4a03501c,
+       0x00000001, 0x42028800, 0x000007fe, 0x42003000,
+       0x00fffffe, 0x0201f800, 0x001045a6, 0x0402000c,
+       0x0401f948, 0x0401f825, 0x04000009, 0x59a80026,
+       0x8400054e, 0x48035026, 0x0201f800, 0x0010930f,
+       0x82000540, 0x00000001, 0x1c01f000, 0x80000580,
+       0x0401f7fe, 0x4937c857, 0x0201f800, 0x00107942,
+       0x04000015, 0x49366009, 0x4a026406, 0x00000001,
+       0x417a7800, 0x0201f800, 0x00104567, 0x59a8001b,
+       0x80000000, 0x4803501b, 0x42027000, 0x00000004,
+       0x599c0019, 0x8c00050e, 0x04000003, 0x42027000,
+       0x00000000, 0x0201f800, 0x000207a1, 0x82000540,
+       0x00000001, 0x1c01f000, 0x4937c857, 0x0201f800,
+       0x00107942, 0x0400001c, 0x49366009, 0x59340403,
+       0x82000580, 0x000007fe, 0x04000005, 0x4d3c0000,
+       0x417a7800, 0x0401f8b7, 0x5c027800, 0x4a026406,
+       0x00000001, 0x417a7800, 0x0201f800, 0x00104567,
+       0x42000800, 0x00000003, 0x0201f800, 0x00104571,
+       0x59a8001b, 0x80000000, 0x4803501b, 0x42027000,
+       0x00000002, 0x0201f800, 0x000207a1, 0x82000540,
+       0x00000001, 0x1c01f000, 0x4803c856, 0x42028800,
+       0x000007fc, 0x42003000, 0x00fffffc, 0x0201f800,
+       0x001045a6, 0x04020005, 0x0401f805, 0x04000003,
+       0x4a035027, 0x0000ffff, 0x1c01f000, 0x4937c857,
+       0x0201f800, 0x00107942, 0x04000014, 0x49366009,
+       0x4a026406, 0x00000001, 0x417a7800, 0x0201f800,
+       0x00104567, 0x42000800, 0x00000003, 0x0201f800,
+       0x00104571, 0x59a80028, 0x80000000, 0x48035028,
+       0x42027000, 0x00000002, 0x0201f800, 0x000207a1,
+       0x82000540, 0x00000001, 0x1c01f000, 0x480bc857,
+       0x492fc857, 0x4c5c0000, 0x4008b800, 0x42028800,
+       0x000007fd, 0x42003000, 0x00fffffd, 0x0201f800,
+       0x001045a6, 0x0402001a, 0x0201f800, 0x0002075a,
+       0x04000017, 0x49366009, 0x5934000a, 0x84000544,
+       0x4802680a, 0x812e59c0, 0x04000005, 0x592c0404,
+       0x8c00051e, 0x04000002, 0x48ee6021, 0x492e6008,
+       0x4a026406, 0x00000001, 0x485e601c, 0x42027000,
+       0x00000022, 0x0201f800, 0x000207a1, 0x82000540,
+       0x00000001, 0x5c00b800, 0x1c01f000, 0x80000580,
+       0x0401f7fd, 0x5c000000, 0x4c000000, 0x4803c857,
+       0x4943c857, 0x493fc857, 0x4d340000, 0x4d440000,
+       0x4c580000, 0x4d2c0000, 0x4c5c0000, 0x0201f800,
+       0x00106c55, 0x4df00000, 0x0201f800, 0x001069f1,
+       0x0201f800, 0x00106aac, 0x0201f800, 0x00106737,
+       0x0201f800, 0x0010848a, 0x5c03e000, 0x02000800,
+       0x00106c4b, 0x4200b000, 0x000007f0, 0x417a8800,
+       0x0201f800, 0x00020245, 0x0402001f, 0x8d3e7d14,
+       0x04000005, 0x59340212, 0x82000500, 0x0000ff00,
+       0x04000019, 0x8d3e7d06, 0x04000004, 0x59340200,
+       0x8c00050e, 0x04020014, 0x8d3e7d18, 0x0400000f,
+       0x5934b80f, 0x805cb9c0, 0x04000009, 0x49425a06,
+       0x592cb800, 0x0201f800, 0x000202ce, 0x805cb9c0,
+       0x040207fb, 0x497a680f, 0x497a6810, 0x4a026c00,
+       0x00000707, 0x0401f004, 0x4937c857, 0x0201f800,
+       0x001042b4, 0x81468800, 0x8058b040, 0x040207dd,
+       0x8d3e7d02, 0x04000011, 0x497b501d, 0x42028800,
+       0x000007f0, 0x4200b000, 0x00000010, 0x0201f800,
+       0x00020245, 0x04020006, 0x4937c857, 0x4a026c00,
+       0x00000707, 0x0201f800, 0x001042b4, 0x81468800,
+       0x8058b040, 0x040207f6, 0x5c00b800, 0x5c025800,
+       0x5c00b000, 0x5c028800, 0x5c026800, 0x1c01f000,
+       0x5c000000, 0x4c000000, 0x4803c857, 0x4933c857,
+       0x493fc857, 0x4d340000, 0x4d400000, 0x4d440000,
+       0x4d2c0000, 0x4c5c0000, 0x0201f800, 0x00106c55,
+       0x4df00000, 0x59326809, 0x813669c0, 0x04000020,
+       0x59368c03, 0x42028000, 0x00000029, 0x0201f800,
+       0x00106a50, 0x0201f800, 0x00106ab4, 0x0201f800,
+       0x001067fd, 0x0201f800, 0x0010a2ff, 0x4937c857,
+       0x8d3e7d18, 0x04000010, 0x5934b80f, 0x805cb9c0,
+       0x0400000a, 0x405e5800, 0x49425a06, 0x592cb800,
+       0x0201f800, 0x000202ce, 0x805cb9c0, 0x040207fa,
+       0x497a680f, 0x497a6810, 0x4a026c00, 0x00000707,
+       0x0401f003, 0x0201f800, 0x001042b4, 0x5c03e000,
+       0x02000800, 0x00106c4b, 0x5c00b800, 0x5c025800,
+       0x5c028800, 0x5c028000, 0x5c026800, 0x1c01f000,
+       0x4933c857, 0x59a80026, 0x8c000508, 0x04020012,
+       0x59305009, 0x482bc857, 0x836c0580, 0x00000002,
+       0x0402000d, 0x0401f813, 0x0402000b, 0x58280403,
+       0x82000580, 0x000007fc, 0x04000008, 0x59a8001b,
+       0x80000040, 0x4803c857, 0x02001800, 0x001005d8,
+       0x4803501b, 0x1c01f000, 0x59a80028, 0x80000040,
+       0x4803c857, 0x040017fc, 0x48035028, 0x1c01f000,
+       0x59300008, 0x800001c0, 0x04020009, 0x59300403,
+       0x82000580, 0x00000001, 0x04020004, 0x82000540,
+       0x00000001, 0x0401f002, 0x80000580, 0x1c01f000,
+       0x4937c857, 0x59340200, 0x84000502, 0x48026a00,
+       0x1c01f000, 0x4933c857, 0x493fc857, 0x4947c857,
+       0x4d3c0000, 0x4d400000, 0x4d340000, 0x4d440000,
+       0x4c580000, 0x0201f800, 0x00106c55, 0x4df00000,
+       0x813e79c0, 0x04020004, 0x4200b000, 0x00000001,
+       0x0401f004, 0x4200b000, 0x000007f0, 0x417a8800,
+       0x41440000, 0x81ac0400, 0x50000000, 0x80026d40,
+       0x04000019, 0x42027800, 0x00000001, 0x0201f800,
+       0x001048f6, 0x42028000, 0x00000029, 0x417a7800,
+       0x0201f800, 0x00106a50, 0x0201f800, 0x00106ab4,
+       0x0201f800, 0x001067fd, 0x0201f800, 0x001049e7,
+       0x04020005, 0x4937c857, 0x4a026c00, 0x00000404,
+       0x0401f003, 0x0201f800, 0x00104a14, 0x0201f800,
+       0x0010a2ff, 0x81468800, 0x8058b040, 0x040207e1,
+       0x5c03e000, 0x02000800, 0x00106c4b, 0x5c00b000,
+       0x5c028800, 0x5c026800, 0x5c028000, 0x5c027800,
+       0x1c01f000, 0x4937c857, 0x4947c857, 0x4c5c0000,
+       0x4c600000, 0x4c640000, 0x59a80013, 0x8c000500,
+       0x0400001f, 0x599c0017, 0x8c00050a, 0x0402001c,
+       0x5934ba02, 0x825cbd00, 0x000000ff, 0x485fc857,
+       0x4178c000, 0x4178c800, 0x82600400, 0x0010be21,
+       0x50002000, 0x8060c1c0, 0x04000008, 0x82100500,
+       0x000000ff, 0x82002d80, 0x000000ff, 0x0400000c,
+       0x805c0580, 0x0400000d, 0x80102110, 0x8064c800,
+       0x82640580, 0x00000004, 0x040207f5, 0x8060c000,
+       0x82600580, 0x00000020, 0x040207eb, 0x4813c857,
+       0x82000540, 0x00000001, 0x5c00c800, 0x5c00c000,
+       0x5c00b800, 0x1c01f000, 0x59a80026, 0x4803c857,
+       0x8c000512, 0x1c01f000, 0x00007eef, 0x00007de8,
+       0x00007ce4, 0x000080e2, 0x00007be1, 0x000080e0,
+       0x000080dc, 0x000080da, 0x00007ad9, 0x000080d6,
+       0x000080d5, 0x000080d4, 0x000080d3, 0x000080d2,
+       0x000080d1, 0x000079ce, 0x000078cd, 0x000080cc,
+       0x000080cb, 0x000080ca, 0x000080c9, 0x000080c7,
+       0x000080c6, 0x000077c5, 0x000076c3, 0x000080bc,
+       0x000080ba, 0x000075b9, 0x000080b6, 0x000074b5,
+       0x000073b4, 0x000072b3, 0x000080b2, 0x000080b1,
+       0x000080ae, 0x000071ad, 0x000080ac, 0x000070ab,
+       0x00006faa, 0x00006ea9, 0x000080a7, 0x00006da6,
+       0x00006ca5, 0x00006ba3, 0x00006a9f, 0x0000699e,
+       0x0000689d, 0x0000809b, 0x00008098, 0x00006797,
+       0x00006690, 0x0000658f, 0x00006488, 0x00006384,
+       0x00006282, 0x00008081, 0x00008080, 0x0000617c,
+       0x0000607a, 0x00008079, 0x00005f76, 0x00008075,
+       0x00008074, 0x00008073, 0x00008072, 0x00008071,
+       0x0000806e, 0x00005e6d, 0x0000806c, 0x00005d6b,
+       0x00005c6a, 0x00005b69, 0x00008067, 0x00005a66,
+       0x00005965, 0x00005863, 0x0000575c, 0x0000565a,
+       0x00005559, 0x00008056, 0x00008055, 0x00005454,
+       0x00005353, 0x00005252, 0x00005151, 0x0000504e,
+       0x00004f4d, 0x0000804c, 0x0000804b, 0x00004e4a,
+       0x00004d49, 0x00008047, 0x00004c46, 0x00008045,
+       0x00008043, 0x0000803c, 0x0000803a, 0x00008039,
+       0x00008036, 0x00004b35, 0x00008034, 0x00004a33,
+       0x00004932, 0x00004831, 0x0000802e, 0x0000472d,
+       0x0000462c, 0x0000452b, 0x0000442a, 0x00004329,
+       0x00004227, 0x00008026, 0x00008025, 0x00004123,
+       0x0000401f, 0x00003f1e, 0x00003e1d, 0x00003d1b,
+       0x00003c18, 0x00008017, 0x00008010, 0x00003b0f,
+       0x00003a08, 0x00008004, 0x00003902, 0x00008001,
+       0x00008000, 0x00008000, 0x00003800, 0x00003700,
+       0x00003600, 0x00008000, 0x00003500, 0x00008000,
+       0x00008000, 0x00008000, 0x00003400, 0x00008000,
+       0x00008000, 0x00008000, 0x00008000, 0x00008000,
+       0x00008000, 0x00003300, 0x00003200, 0x00008000,
+       0x00008000, 0x00008000, 0x00008000, 0x00008000,
+       0x00008000, 0x00003100, 0x00003000, 0x00008000,
+       0x00008000, 0x00002f00, 0x00008000, 0x00002e00,
+       0x00002d00, 0x00002c00, 0x00008000, 0x00008000,
+       0x00008000, 0x00002b00, 0x00008000, 0x00002a00,
+       0x00002900, 0x00002800, 0x00008000, 0x00002700,
+       0x00002600, 0x00002500, 0x00002400, 0x00002300,
+       0x00002200, 0x00008000, 0x00008000, 0x00002100,
+       0x00002000, 0x00001f00, 0x00001e00, 0x00001d00,
+       0x00001c00, 0x00008000, 0x00008000, 0x00001b00,
+       0x00001a00, 0x00008000, 0x00001900, 0x00008000,
+       0x00008000, 0x00008000, 0x00008000, 0x00008000,
+       0x00008000, 0x00001800, 0x00008000, 0x00001700,
+       0x00001600, 0x00001500, 0x00008000, 0x00001400,
+       0x00001300, 0x00001200, 0x00001100, 0x00001000,
+       0x00000f00, 0x00008000, 0x00008000, 0x00000e00,
+       0x00000d00, 0x00000c00, 0x00000b00, 0x00000a00,
+       0x00000900, 0x00008000, 0x00008000, 0x00000800,
+       0x00000700, 0x00008000, 0x00000600, 0x00008000,
+       0x00008000, 0x00008000, 0x00000500, 0x00000400,
+       0x00000300, 0x00008000, 0x00000200, 0x00008000,
+       0x00008000, 0x00008000, 0x00000100, 0x00008000,
+       0x00008000, 0x00008000, 0x00008000, 0x00008000,
+       0x00008000, 0x00000000, 0x00008000, 0x00008000,
+       0x00008000, 0x00008000, 0x00008000, 0x00008000,
+       0x00008000, 0x00008000, 0x00008000, 0x00008000,
+       0x00008000, 0x00008000, 0x00008000, 0x00008000,
+       0x00008000, 0x00008000, 0x0201f800, 0x001007d3,
+       0x02000800, 0x001005d8, 0x492f4016, 0x1c01f000,
+       0x83a0ac00, 0x00000006, 0x83a00580, 0x0010b4a4,
+       0x0400000c, 0x492fc857, 0x812e59c0, 0x02000800,
+       0x001005d8, 0x832ca400, 0x00000006, 0x4200b000,
+       0x0000000d, 0x0201f800, 0x0010ab17, 0x0401f00f,
+       0x4200b000, 0x00000010, 0x83e0a400, 0x00000020,
+       0x50500000, 0x8050a000, 0x50500800, 0x900409c0,
+       0x80040540, 0x4400a800, 0x8050a000, 0x8054a800,
+       0x8058b040, 0x040207f7, 0x1c01f000, 0x59a00206,
+       0x4803c857, 0x82000c80, 0x0000007f, 0x040210c9,
+       0x59a80821, 0x0c01f001, 0x001022c0, 0x00102300,
+       0x00102300, 0x0010234b, 0x0010236d, 0x00102300,
+       0x001022c0, 0x0010238f, 0x001023a0, 0x00102300,
+       0x00102300, 0x001023ad, 0x001023c5, 0x001023dd,
+       0x00102300, 0x001023e7, 0x001023f4, 0x00102300,
+       0x0010241d, 0x00102300, 0x0010247a, 0x00102300,
+       0x00102300, 0x00102300, 0x00102300, 0x00102300,
+       0x00102300, 0x00102300, 0x00102300, 0x00102300,
+       0x00102300, 0x00102300, 0x00102491, 0x00102300,
+       0x001024e3, 0x00102300, 0x00102300, 0x00102300,
+       0x00102300, 0x001024e8, 0x00102560, 0x00102300,
+       0x00102567, 0x00102300, 0x00102300, 0x00102300,
+       0x00102300, 0x00102300, 0x00102569, 0x001025ea,
+       0x00102727, 0x00102300, 0x00102300, 0x00102300,
+       0x00102300, 0x00102300, 0x00102736, 0x00102300,
+       0x00102300, 0x00102300, 0x00102300, 0x00102300,
+       0x00102300, 0x00102300, 0x00102753, 0x001027a6,
+       0x00102802, 0x00102816, 0x00102835, 0x00102a70,
+       0x00102dff, 0x00102300, 0x00102300, 0x00102300,
+       0x00102300, 0x00102300, 0x00102300, 0x00102300,
+       0x00102300, 0x00102300, 0x00102300, 0x00102300,
+       0x00102300, 0x00102fb4, 0x00103028, 0x00102300,
+       0x00102300, 0x00103094, 0x00102300, 0x00103126,
+       0x001031d8, 0x00102300, 0x00102300, 0x0010320f,
+       0x0010326b, 0x00102300, 0x001032bd, 0x00103419,
+       0x00102300, 0x0010342d, 0x001034b8, 0x00102300,
+       0x00102300, 0x00102300, 0x00102300, 0x00103522,
+       0x00103526, 0x00103545, 0x00102300, 0x001035e7,
+       0x00102300, 0x00102300, 0x00103615, 0x00102300,
+       0x00103643, 0x00102300, 0x00102300, 0x001036aa,
+       0x001037b7, 0x00103814, 0x00102300, 0x0010387a,
+       0x00102300, 0x00102300, 0x001038d3, 0x00103936,
+       0x00102300, 0x48efc857, 0x4031d800, 0x58ef400b,
+       0x58ec0002, 0x82000580, 0x00000200, 0x04000045,
+       0x48efc857, 0x4a034206, 0x00004000, 0x0201f800,
+       0x00103a15, 0x83a00580, 0x0010b4a4, 0x0400000d,
+       0x58ee580a, 0x4d2c0000, 0x0401f856, 0x41a25800,
+       0x0201f800, 0x001007f4, 0x40ee5800, 0x0201f800,
+       0x001007f4, 0x5c025800, 0x0201f000, 0x000202da,
+       0x04026007, 0x59a0001d, 0x84000542, 0x4803401d,
+       0x4a01d809, 0x001022d4, 0x1c01f000, 0x59a00206,
+       0x82000d80, 0x00004000, 0x04000006, 0x900001c0,
+       0x82000540, 0x00000011, 0x4803c011, 0x0401f005,
+       0x900001c0, 0x82000540, 0x00000010, 0x4803c011,
+       0x0401f845, 0x59e00017, 0x8c000508, 0x0402000c,
+       0x4203e000, 0x30000001, 0x4203e000, 0x40000000,
+       0x40ee5800, 0x0201f800, 0x001007f4, 0x59a0001d,
+       0x84000504, 0x4803401d, 0x1c01f000, 0x4a03c017,
+       0x00000000, 0x59a00206, 0x82000d80, 0x00004000,
+       0x040007f0, 0x4a03c017, 0x00000001, 0x0401f7ed,
+       0x4803c856, 0x4a034206, 0x00004001, 0x0401f7c0,
+       0x4803c856, 0x4a034206, 0x00004002, 0x0401f7bc,
+       0x4803c856, 0x4a034206, 0x00004003, 0x0401f7b8,
+       0x4803c856, 0x4a034206, 0x00004005, 0x0401f7b4,
+       0x4803c856, 0x4a034206, 0x00004006, 0x0401f7b0,
+       0x4803c856, 0x4a034206, 0x0000400b, 0x0401f7ac,
+       0x4803c856, 0x4a034206, 0x0000400c, 0x0401f7a8,
+       0x4803c856, 0x4a034206, 0x0000400c, 0x0401f7a4,
+       0x48efc857, 0x58eca80a, 0x8054a9c0, 0x02000800,
+       0x001005d8, 0x83a0a400, 0x00000006, 0x8254ac00,
+       0x00000006, 0x4200b000, 0x0000000d, 0x0201f000,
+       0x0010ab17, 0x59a00206, 0x4803c857, 0x59a00406,
+       0x4803c857, 0x59a00207, 0x4803c857, 0x59a00407,
+       0x4803c857, 0x59a00208, 0x4803c857, 0x59a00408,
+       0x4803c857, 0x59a00209, 0x4803c857, 0x83e0ac00,
+       0x00000020, 0x83a0a400, 0x00000006, 0x4200b000,
+       0x00000010, 0x50500000, 0x4400a800, 0x8054a800,
+       0x900001c0, 0x4400a800, 0x8054a800, 0x8050a000,
+       0x8058b040, 0x040207f8, 0x1c01f000, 0x59a00406,
+       0x800000c2, 0x59a00a07, 0x900409c0, 0x80040540,
+       0x84000540, 0x59a00c07, 0x8c040d00, 0x04000018,
+       0x59a80805, 0x8c040d0e, 0x040207ba, 0x42000800,
+       0x00000064, 0x80040840, 0x04000007, 0x4a030000,
+       0x00000001, 0x40000000, 0x59801000, 0x8c081500,
+       0x040007f9, 0x04000005, 0x48030004, 0x4a030000,
+       0x00000000, 0x0401f75b, 0x4a030000, 0x00000000,
+       0x4a034406, 0x00000004, 0x040007a2, 0x4803880e,
+       0x0401f754, 0x59a00406, 0x800000c2, 0x59a00c07,
+       0x8c040d00, 0x0400001a, 0x59a80805, 0x8c040d0e,
+       0x0402079c, 0x42000800, 0x00000064, 0x80040840,
+       0x04000007, 0x4a030000, 0x00000001, 0x40000000,
+       0x59801000, 0x8c081500, 0x040007f9, 0x04000007,
+       0x48030004, 0x59800805, 0x48074406, 0x4a030000,
+       0x00000000, 0x0401f73b, 0x4a030000, 0x00000000,
+       0x4a034406, 0x00000004, 0x04000782, 0x4803880e,
+       0x59c4080f, 0x48074406, 0x0401f732, 0x59a01c06,
+       0x59a00207, 0x900c19c0, 0x800c1d40, 0x580c0803,
+       0x80000580, 0x500c1000, 0x80080400, 0x800c1800,
+       0x80040840, 0x040207fc, 0x48034406, 0x900001c0,
+       0x48034207, 0x800001c0, 0x04000722, 0x0401f769,
+       0x4a034406, 0x00000004, 0x4a034207, 0x00000000,
+       0x4a034407, 0x00000010, 0x59a8000d, 0x48034208,
+       0x900001c0, 0x48034408, 0x4a034209, 0x00000002,
+       0x0401f714, 0x59a00407, 0x59a01207, 0x900811c0,
+       0x80081540, 0x59a00409, 0x59a01a09, 0x900c19c0,
+       0x800c1d40, 0x59a00a08, 0x59a00408, 0x900409c0,
+       0x80040d40, 0x59a0020a, 0x82002480, 0x00000010,
+       0x04001754, 0x59a02406, 0x900001c0, 0x80100540,
+       0x59a8280d, 0x80142480, 0x0400174e, 0x0201f000,
+       0x00103a25, 0x59a00407, 0x59a01207, 0x900811c0,
+       0x80081540, 0x59a00409, 0x59a01a09, 0x900c19c0,
+       0x800c1d40, 0x59a00a08, 0x59a00408, 0x900409c0,
+       0x80040d40, 0x59a0020a, 0x82002480, 0x00000010,
+       0x0400173c, 0x59a02406, 0x900001c0, 0x80100540,
+       0x59a8280d, 0x80142480, 0x04001736, 0x0201f000,
+       0x00103a28, 0x59a00a0a, 0x59a00406, 0x900409c0,
+       0x80040d40, 0x59a01407, 0x59a00207, 0x900811c0,
+       0x80081540, 0x44080800, 0x0401f6da, 0x59a00a0a,
+       0x59a00406, 0x900409c0, 0x80040d40, 0x50040000,
+       0x82000d00, 0x0000ffff, 0x48074207, 0x82000d00,
+       0xffff0000, 0x900409c0, 0x48074407, 0x0401f6cd,
+       0x59a00406, 0x8c000500, 0x04000020, 0x59a01207,
+       0x59a01c07, 0x59a02208, 0x480b5054, 0x480f5055,
+       0x48135056, 0x59c40801, 0x82040d00, 0x00018000,
+       0x82040580, 0x00000000, 0x04000009, 0x82040580,
+       0x00008000, 0x04000008, 0x82040580, 0x00010000,
+       0x04000007, 0x0201f800, 0x001005d8, 0x40080000,
+       0x0401f004, 0x400c0000, 0x0401f002, 0x40100000,
+       0x80000110, 0x42000800, 0x000000e0, 0x0201f800,
+       0x00101944, 0x0401f007, 0x59a81054, 0x59a81855,
+       0x59a82056, 0x480b4207, 0x480f4407, 0x48134208,
+       0x0401f6a4, 0x4d2c0000, 0x4d340000, 0x4d300000,
+       0x4d440000, 0x59a28c06, 0x0201f800, 0x00020245,
+       0x04000006, 0x5c028800, 0x5c026000, 0x5c026800,
+       0x5c025800, 0x0401f6e7, 0x59a04407, 0x59a00207,
+       0x900001c0, 0x80204540, 0x0401f81e, 0x04000009,
+       0x4a034208, 0x00000001, 0x4a034406, 0x0000ffff,
+       0x4a034207, 0x0000ffff, 0x497b4407, 0x0401f00b,
+       0x0401f822, 0x0400000e, 0x4a034208, 0x00000002,
+       0x59300402, 0x48034406, 0x59300202, 0x48034207,
+       0x59300206, 0x48034407, 0x5c028800, 0x5c026000,
+       0x5c026800, 0x5c025800, 0x0401f67a, 0x5c028800,
+       0x5c026000, 0x5c026800, 0x5c025800, 0x0401f6c1,
+       0x4937c856, 0x4823c856, 0x4d2c0000, 0x5934000f,
+       0x80025d40, 0x04000007, 0x592c0005, 0x80200580,
+       0x592c0000, 0x040207fb, 0x82000540, 0x00000001,
+       0x5c025800, 0x1c01f000, 0x4823c857, 0x4d2c0000,
+       0x4d300000, 0x42026000, 0x0010d1c0, 0x59300406,
+       0x82000d80, 0x00000003, 0x04000004, 0x82000d80,
+       0x00000006, 0x04020007, 0x59325808, 0x812e59c0,
+       0x04000004, 0x592c0005, 0x80200580, 0x0400000a,
+       0x83326400, 0x00000024, 0x41580000, 0x81300480,
+       0x040017ef, 0x80000580, 0x5c026000, 0x5c025800,
+       0x1c01f000, 0x82000540, 0x00000001, 0x5c026000,
+       0x5c025800, 0x1c01f000, 0x83a00580, 0x0010b4a4,
+       0x04020684, 0x59a80005, 0x8c00050e, 0x04020003,
+       0x4a030000, 0x00000000, 0x4a034206, 0x00004000,
+       0x4a03c011, 0x40000010, 0x0401fea7, 0x59e00017,
+       0x8c000508, 0x04000003, 0x4a03c017, 0x00000000,
+       0x4203e000, 0x30000001, 0x4203e000, 0x40000000,
+       0x0401f000, 0x800409c0, 0x04000004, 0x4a034406,
+       0x00000001, 0x0401f677, 0x836c0580, 0x00000003,
+       0x04020010, 0x59a80010, 0x497b4406, 0x0201f800,
+       0x0010513b, 0x0400000f, 0x82000d00, 0x00ffff00,
+       0x0402000c, 0x82000c00, 0x0010210e, 0x50040800,
+       0x80040910, 0x82041580, 0x00000080, 0x04020004,
+       0x4a034406, 0x00000007, 0x0401f662, 0x48074406,
+       0x82000d00, 0x0000ffff, 0x48074207, 0x80000120,
+       0x48034407, 0x59a80026, 0x82001500, 0x00000100,
+       0x480b4409, 0x8c000502, 0x0400001f, 0x8c000506,
+       0x04000009, 0x82000d00, 0x0000000a, 0x82040d80,
+       0x0000000a, 0x04020004, 0x4a034209, 0x00000001,
+       0x0401f022, 0x8c00050a, 0x04000009, 0x82000d00,
+       0x00000022, 0x82040d80, 0x00000022, 0x04020004,
+       0x4a034209, 0x00000003, 0x0401f018, 0x8c000508,
+       0x04000009, 0x82000d00, 0x00000012, 0x82040d80,
+       0x00000012, 0x04020004, 0x4a034209, 0x00000002,
+       0x0401f00e, 0x0201f800, 0x0010513b, 0x04020004,
+       0x4a034209, 0x00000004, 0x0401f5e6, 0x8c000506,
+       0x04000004, 0x4a034406, 0x00000005, 0x0401f62d,
+       0x4a034209, 0x00000000, 0x0401f5de, 0x59a80037,
+       0x48034407, 0x59a80038, 0x48034209, 0x0401f5d9,
+       0x42007800, 0x0010b8ec, 0x59a00406, 0x4803c857,
+       0x82000c80, 0x00000006, 0x04021622, 0x0c01f001,
+       0x001024f6, 0x001024f7, 0x00102505, 0x00102518,
+       0x00102539, 0x001024f6, 0x0401f61a, 0x836c0580,
+       0x00000000, 0x04000613, 0x59a00a07, 0x59a00407,
+       0x900001c0, 0x80040d40, 0x4807c857, 0x59a00a08,
+       0x59a00408, 0x900001c0, 0x80040d40, 0x4807c857,
+       0x0401f056, 0x836c0580, 0x00000000, 0x04000605,
+       0x59a00407, 0x59a01207, 0x900001c0, 0x80081540,
+       0x59a00408, 0x59a01a08, 0x900001c0, 0x800c1d40,
+       0x42000000, 0x0010c1bf, 0x480fc857, 0x480bc857,
+       0x42000800, 0x00001000, 0x0201f000, 0x00103a28,
+       0x59a00a07, 0x59a00407, 0x900001c0, 0x80041d40,
+       0x820c0c80, 0x0010ab4a, 0x040215f2, 0x820c0c80,
+       0x00100000, 0x040015ef, 0x480fc857, 0x823c7c00,
+       0x00000009, 0x503c0800, 0x800409c0, 0x04000006,
+       0x823c0580, 0x0000000d, 0x040005e6, 0x803c7800,
+       0x0401f7f9, 0x59e41001, 0x82080d00, 0xfffeffcf,
+       0x4807c801, 0x440c7800, 0x46001800, 0x0201f800,
+       0x800c1800, 0x46001800, 0x001005cb, 0x480bc801,
+       0x0401f022, 0x59a01a07, 0x59a00407, 0x900001c0,
+       0x800c1d40, 0x480c7801, 0x59a02208, 0x59a00408,
+       0x900001c0, 0x80102540, 0x48107802, 0x59a00209,
+       0x80000040, 0x040015cb, 0x48007806, 0x80000000,
+       0x48007805, 0x42000800, 0x00004000, 0x40001000,
+       0x0201f800, 0x00106681, 0x80000540, 0x04000003,
+       0x49787801, 0x0401f5bf, 0x40040000, 0x800c1c00,
+       0x040015bc, 0x480c7803, 0x48107804, 0x49787808,
+       0x59a00409, 0x48007807, 0x59e40001, 0x4803c857,
+       0x82000540, 0x00040000, 0x4803c801, 0x0401f561,
+       0x59a80006, 0x48034406, 0x59a80007, 0x48034207,
+       0x59a80008, 0x48034407, 0x0401f55a, 0x0201f800,
+       0x001005d8, 0x4803c856, 0x4a03c013, 0x03800300,
+       0x4a03c014, 0x03800380, 0x59a00c06, 0x82040580,
+       0x000000a0, 0x04000004, 0x82040580, 0x000000a2,
+       0x0402002b, 0x59a0140a, 0x82080480, 0x00000100,
+       0x04021027, 0x59a0020b, 0x8c000500, 0x0402002e,
+       0x59a00a0a, 0x800409c0, 0x04000021, 0x82040480,
+       0x00000041, 0x0402101e, 0x82040c00, 0x00000003,
+       0x82040d00, 0x000000fc, 0x80040904, 0x59a00407,
+       0x59a01207, 0x900811c0, 0x80081540, 0x59a00409,
+       0x59a01a09, 0x900c19c0, 0x800c1d40, 0x0201f800,
+       0x00103a00, 0x04020006, 0x4a034406, 0x00000002,
+       0x4a03c014, 0x03800000, 0x0401f576, 0x832e5c00,
+       0x00000004, 0x412c0000, 0x0201f800, 0x00103a25,
+       0x4a01d809, 0x001025a2, 0x1c01f000, 0x4a03c014,
+       0x03800000, 0x0401f56f, 0x4031d800, 0x58ef400b,
+       0x58ee580d, 0x58ec0002, 0x82000580, 0x00000200,
+       0x0400055c, 0x59a00c06, 0x59a0140a, 0x59a0020b,
+       0x8c000500, 0x04020031, 0x832e5c00, 0x00000004,
+       0x41783800, 0x59a04a0a, 0x401c0000, 0x812c0400,
+       0x50004000, 0x82201d00, 0x000000ff, 0x4c040000,
+       0x0401f8ac, 0x5c000800, 0x0400002d, 0x80244840,
+       0x04000028, 0x80081000, 0x82201d00, 0x0000ff00,
+       0x800c1910, 0x4c040000, 0x0401f8a2, 0x5c000800,
+       0x04000023, 0x80244840, 0x0400001e, 0x80081000,
+       0x82201d00, 0x00ff0000, 0x800c1920, 0x4c040000,
+       0x0401f898, 0x5c000800, 0x04000019, 0x80244840,
+       0x04000014, 0x80081000, 0x82201d00, 0xff000000,
+       0x800c1930, 0x4c040000, 0x0401f88e, 0x5c000800,
+       0x0400000f, 0x80244840, 0x0400000a, 0x80081000,
+       0x801c3800, 0x0401f7d5, 0x59a0020a, 0x82000500,
+       0x000000ff, 0x40001800, 0x0401f882, 0x04000004,
+       0x4a03c014, 0x03800000, 0x0401f4da, 0x4a03c014,
+       0x03800000, 0x0401f523, 0x4803c856, 0x4a03c013,
+       0x03800300, 0x4a03c014, 0x03800380, 0x59a00c06,
+       0x82040580, 0x000000a0, 0x04000004, 0x82040580,
+       0x000000a2, 0x0402006c, 0x59a0140a, 0x82080480,
+       0x00000100, 0x04021068, 0x59a0020b, 0x8c000500,
+       0x0402005c, 0x59a01a0a, 0x800c19c0, 0x04000062,
+       0x820c0480, 0x00000041, 0x0402105f, 0x0201f800,
+       0x00103a00, 0x04020006, 0x4a034406, 0x00000002,
+       0x4a03c014, 0x03800000, 0x0401f502, 0x832e5c00,
+       0x00000004, 0x41783800, 0x59a04a0a, 0x401c0000,
+       0x812c0400, 0x40004000, 0x4c040000, 0x4c080000,
+       0x0401f874, 0x5c001000, 0x5c000800, 0x04000047,
+       0x44144000, 0x80244840, 0x0400002b, 0x80081000,
+       0x4c040000, 0x4c080000, 0x0401f86a, 0x5c001000,
+       0x5c000800, 0x0400003d, 0x50200000, 0x801428d0,
+       0x80140540, 0x44004000, 0x80244840, 0x0400001e,
+       0x80081000, 0x4c040000, 0x4c080000, 0x0401f85d,
+       0x5c001000, 0x5c000800, 0x04000030, 0x50200000,
+       0x801428e0, 0x80140540, 0x44004000, 0x80244840,
+       0x04000011, 0x80081000, 0x4c040000, 0x4c080000,
+       0x0401f850, 0x5c001000, 0x5c000800, 0x04000023,
+       0x50200000, 0x801428f0, 0x80140540, 0x44004000,
+       0x80244840, 0x04000004, 0x80081000, 0x801c3800,
+       0x0401f7cb, 0x59a00a0a, 0x82040c00, 0x00000003,
+       0x82040d00, 0x000000fc, 0x80040904, 0x59a00407,
+       0x59a01207, 0x900811c0, 0x80081540, 0x59a00409,
+       0x59a01a09, 0x900c19c0, 0x800c1d40, 0x4a03c014,
+       0x03800000, 0x412c0000, 0x0201f000, 0x00103a28,
+       0x0401f830, 0x04000005, 0x48174406, 0x4a03c014,
+       0x03800000, 0x0401f463, 0x4a03c014, 0x03800000,
+       0x0401f4ac, 0x4a03c014, 0x03800000, 0x0401f4ad,
+       0x0401f836, 0x04000010, 0x0401f862, 0x0402000f,
+       0x40080800, 0x0401f85f, 0x0402000c, 0x400c0800,
+       0x0401f85c, 0x04020009, 0x0401f84b, 0x42000000,
+       0x00030d40, 0x80000040, 0x040207ff, 0x82000540,
+       0x00000001, 0x1c01f000, 0x0401f843, 0x80000580,
+       0x0401f7fd, 0x0401f821, 0x0400000a, 0x82040d40,
+       0x00000001, 0x0401f84b, 0x04020007, 0x0401f87e,
+       0x0401f898, 0x0401f838, 0x82000540, 0x00000001,
+       0x1c01f000, 0x0401f834, 0x80000580, 0x0401f7fd,
+       0x40041800, 0x0401f811, 0x0400000c, 0x0401f83d,
+       0x0402000b, 0x40080800, 0x0401f83a, 0x04020008,
+       0x400c0800, 0x0401ffe8, 0x04000004, 0x0401f826,
+       0x82000540, 0x00000001, 0x1c01f000, 0x0401f822,
+       0x80000580, 0x0401f7fd, 0x4c040000, 0x42000800,
+       0x00000064, 0x4a03c013, 0x03800300, 0x80040840,
+       0x04000016, 0x59e00013, 0x82000500, 0x00000300,
+       0x82000580, 0x00000300, 0x040207f7, 0x42000000,
+       0x00000064, 0x80000040, 0x040207ff, 0x4a03c013,
+       0x01000000, 0x42000000, 0x00000064, 0x80000040,
+       0x040207ff, 0x4a03c013, 0x02000000, 0x82000540,
+       0x00000001, 0x0401f002, 0x80000580, 0x5c000800,
+       0x1c01f000, 0x4a03c013, 0x01000000, 0x42000000,
+       0x00000064, 0x80000040, 0x040207ff, 0x4a03c013,
+       0x02000200, 0x42000000, 0x00000064, 0x80000040,
+       0x040207ff, 0x4a03c013, 0x01000100, 0x1c01f000,
+       0x42002000, 0x00000008, 0x82040500, 0x00000080,
+       0x800000c2, 0x82000540, 0x01000000, 0x4803c013,
+       0x42000000, 0x00000064, 0x80000040, 0x040207ff,
+       0x4a03c013, 0x02000200, 0x42000000, 0x00000064,
+       0x80000040, 0x040207ff, 0x4a03c013, 0x02000000,
+       0x800408c2, 0x80102040, 0x040207ec, 0x4a03c013,
+       0x01000100, 0x42000000, 0x00000064, 0x80000040,
+       0x040207ff, 0x4a03c013, 0x02000200, 0x42000000,
+       0x00000064, 0x80000040, 0x040207ff, 0x59e00013,
+       0x82000500, 0x00000100, 0x4a03c013, 0x02000000,
+       0x4c040000, 0x42000800, 0x00000064, 0x59e00013,
+       0x82000500, 0x00000100, 0x80040840, 0x04000003,
+       0x80000540, 0x040207fa, 0x80000540, 0x5c000800,
+       0x1c01f000, 0x4a03c013, 0x01000100, 0x42001000,
+       0x00000008, 0x80000d80, 0x42000000, 0x00000064,
+       0x80000040, 0x040207ff, 0x4a03c013, 0x02000200,
+       0x42000000, 0x00000064, 0x80000040, 0x040207ff,
+       0x59e00013, 0x82000500, 0x00000100, 0x80000110,
+       0x800408c2, 0x80040d40, 0x4a03c013, 0x02000000,
+       0x80081040, 0x040207ed, 0x40042800, 0x1c01f000,
+       0x4a03c013, 0x01000100, 0x42000000, 0x00000064,
+       0x80000040, 0x040207ff, 0x4a03c013, 0x02000200,
+       0x42000000, 0x00000064, 0x80000040, 0x040207ff,
+       0x4a03c013, 0x02000000, 0x1c01f000, 0x59a00407,
+       0x59a80837, 0x48035037, 0x48074407, 0x59a00a09,
+       0x82040480, 0x00000014, 0x04021003, 0x42000800,
+       0x000007d0, 0x59a80038, 0x48075038, 0x48034209,
+       0x0201f000, 0x001022c0, 0x836c0580, 0x00000000,
+       0x0400000e, 0x59a80006, 0x59a00c06, 0x80041580,
+       0x82081500, 0x00000040, 0x02000000, 0x001022c0,
+       0x80080580, 0x48035006, 0x0201f800, 0x00100699,
+       0x0201f000, 0x001022c0, 0x59a00406, 0x59a80806,
+       0x48035006, 0x80040d80, 0x8c040d0c, 0x02020800,
+       0x00100699, 0x59a00207, 0x48035007, 0x59a00407,
+       0x48035008, 0x0201f000, 0x001022c0, 0x800409c0,
+       0x04000005, 0x4a034406, 0x00000001, 0x0201f000,
+       0x0010230c, 0x0201f800, 0x0010513b, 0x04020005,
+       0x4a034406, 0x00000016, 0x0201f000, 0x0010230c,
+       0x836c0580, 0x00000003, 0x04000005, 0x4a034406,
+       0x00000007, 0x0201f000, 0x0010230c, 0x59a00c06,
+       0x82040500, 0xffffff00, 0x02020000, 0x00102310,
+       0x82041580, 0x000000ff, 0x04020007, 0x59a80010,
+       0x82000500, 0x000000ff, 0x82001540, 0x0000ff00,
+       0x0401f011, 0x82040400, 0x0010210e, 0x50000000,
+       0x80000110, 0x82000580, 0x00000080, 0x02000000,
+       0x00102310, 0x59a80010, 0x82000500, 0x000000ff,
+       0x80041580, 0x02000000, 0x00102310, 0x840409c0,
+       0x80041540, 0x0201f800, 0x0002075a, 0x04020005,
+       0x4a034406, 0x00000003, 0x0201f000, 0x0010230c,
+       0x48ee6021, 0x480a621c, 0x4a02641c, 0x0000bc09,
+       0x4a026406, 0x00000001, 0x0201f800, 0x00103a00,
+       0x04020007, 0x0201f800, 0x0002077d, 0x4a034406,
+       0x00000002, 0x0201f000, 0x0010230c, 0x497a5a04,
+       0x497a5805, 0x4a025c04, 0x00008000, 0x4a01d809,
+       0x001027f9, 0x492e6008, 0x42027000, 0x00000032,
+       0x0201f000, 0x000207a1, 0x800409c0, 0x04000005,
+       0x4a034406, 0x00000001, 0x0201f000, 0x0010230c,
+       0x0201f800, 0x0010513b, 0x04020005, 0x4a034406,
+       0x00000016, 0x0201f000, 0x0010230c, 0x836c0580,
+       0x00000003, 0x04000005, 0x4a034406, 0x00000007,
+       0x0201f000, 0x0010230c, 0x59a00c06, 0x82040500,
+       0xffffff00, 0x02020000, 0x00102310, 0x82041580,
+       0x000000ff, 0x04020007, 0x59a80010, 0x82000500,
+       0x000000ff, 0x82001540, 0x0000ff00, 0x0401f011,
+       0x82040400, 0x0010210e, 0x50000000, 0x80000110,
+       0x82000580, 0x00000080, 0x02000000, 0x00102310,
+       0x59a80010, 0x82000500, 0x000000ff, 0x80041580,
+       0x02000000, 0x00102310, 0x840409c0, 0x80041540,
+       0x0201f800, 0x0002075a, 0x04020005, 0x4a034406,
+       0x00000003, 0x0201f000, 0x0010230c, 0x48ee6021,
+       0x480a621c, 0x4a02641c, 0x0000bc05, 0x4a026406,
+       0x00000001, 0x0201f800, 0x00103a00, 0x04020007,
+       0x0201f800, 0x0002077d, 0x4a034406, 0x00000002,
+       0x0201f000, 0x0010230c, 0x497a5a04, 0x497a5805,
+       0x4a025c04, 0x00008000, 0x4a01d809, 0x001027f9,
+       0x492e6008, 0x42027000, 0x00000032, 0x0201f000,
+       0x000207a1, 0x592c0005, 0x82000580, 0x01000000,
+       0x02020000, 0x001022c0, 0x4a034406, 0x00000004,
+       0x0201f000, 0x0010230c, 0x497b4406, 0x497b4207,
+       0x0201f800, 0x00103b25, 0x04000008, 0x59a80066,
+       0x59a8086a, 0x80040480, 0x59a80867, 0x48074406,
+       0x80041480, 0x480b4207, 0x49674407, 0x59a8000e,
+       0x48034209, 0x495f4409, 0x59a80020, 0x4803420b,
+       0x0201f000, 0x001022c0, 0x800409c0, 0x04000005,
+       0x4a034406, 0x00000001, 0x0201f000, 0x0010230c,
+       0x59a00406, 0x8c000500, 0x0402000f, 0x59a80069,
+       0x81640480, 0x04001008, 0x59a8000b, 0x81500580,
+       0x04000009, 0x59a8006a, 0x59a81066, 0x80080580,
+       0x04000005, 0x4a034406, 0x00000018, 0x0201f000,
+       0x0010230c, 0x82000540, 0x00000001, 0x0201f800,
+       0x001015fe, 0x0201f800, 0x00103c80, 0x0201f000,
+       0x001022c0, 0x4803c856, 0x800409c0, 0x02020000,
+       0x00102314, 0x59a00406, 0x8c00051e, 0x04000008,
+       0x4803c856, 0x59a0020b, 0x82000480, 0x00000800,
+       0x04001015, 0x0201f000, 0x00102310, 0x4803c856,
+       0x59a0020b, 0x599c0a01, 0x80040480, 0x04021003,
+       0x0201f000, 0x00102310, 0x59a8000e, 0x81640580,
+       0x04000009, 0x4a034406, 0x00000018, 0x0201f000,
+       0x0010230c, 0x4a034406, 0x00000005, 0x0201f000,
+       0x0010230c, 0x59a80026, 0x8c00050a, 0x040007fa,
+       0x59a00406, 0x8c00051e, 0x04000036, 0x0201f800,
+       0x0002075a, 0x040007f4, 0x0201f800, 0x00103a00,
+       0x040007f1, 0x497a5a04, 0x59a00406, 0x4802620a,
+       0x59a00209, 0x4802640a, 0x59a00409, 0x4802620b,
+       0x59a0020d, 0x4802620c, 0x59a0040d, 0x4802640c,
+       0x59a0020e, 0x4802620d, 0x59a0040e, 0x4802640d,
+       0x59a00210, 0x4802620e, 0x59a00410, 0x4802640e,
+       0x59a0020b, 0x82000500, 0x0000fffc, 0x80000104,
+       0x4802640b, 0x0401f9d9, 0x040007d7, 0x48ee6021,
+       0x58ee580d, 0x5930020e, 0x59301c0e, 0x900c19c0,
+       0x800c1d40, 0x5930020c, 0x5930140c, 0x900811c0,
+       0x80081540, 0x592c0a05, 0x832c0400, 0x00000006,
+       0x0201f800, 0x00103a25, 0x4a01d809, 0x001029e5,
+       0x4a034000, 0x00000001, 0x49334001, 0x1c01f000,
+       0x0201f800, 0x00106c55, 0x0201f800, 0x00100ae0,
+       0x0401f86d, 0x497b5057, 0x4201d000, 0x00002710,
+       0x0201f800, 0x001060c6, 0x59c40880, 0x4c040000,
+       0x59c408a3, 0x4c040000, 0x497b4002, 0x0401f876,
+       0x0401f893, 0x4a03a005, 0x10000000, 0x0401f8b4,
+       0x0401f901, 0x04000048, 0x59c80001, 0x800001c0,
+       0x040007fc, 0x59c80018, 0x82000500, 0xf0000000,
+       0x59c00808, 0x82040d00, 0x0fffffff, 0x80040540,
+       0x48038008, 0x0201f800, 0x00100ec1, 0x59c00006,
+       0x4a038006, 0x10000000, 0x59c00009, 0x82000d00,
+       0x00e00000, 0x04020024, 0x4a03900d, 0x00000000,
+       0x59c80020, 0x82000500, 0xff000000, 0x82000580,
+       0x32000000, 0x0402001c, 0x4a03900d, 0x00000001,
+       0x59c80020, 0x82000500, 0xff000000, 0x82000580,
+       0xe1000000, 0x04020014, 0x4a03900d, 0x00000000,
+       0x59c80020, 0x82000500, 0x00ffffff, 0x4a03900d,
+       0x00000000, 0x59c80821, 0x82040d00, 0x00ffffff,
+       0x80040580, 0x04020008, 0x59a80010, 0x80040580,
+       0x04020005, 0x59c40005, 0x82000500, 0x000000f0,
+       0x04000006, 0x4803c856, 0x0401f8d7, 0x4a035057,
+       0x00000001, 0x0401f002, 0x0401f8e1, 0x42000000,
+       0x00000064, 0x80000040, 0x02000800, 0x001005d8,
+       0x59c00807, 0x82040d00, 0x0000000c, 0x040007fa,
+       0x0401f003, 0x4a035057, 0x00000001, 0x0401f8da,
+       0x0201f800, 0x00106f36, 0x0401f818, 0x4201d000,
+       0x000186a0, 0x0201f800, 0x001060c6, 0x5c000800,
+       0x480788a3, 0x5c000800, 0x48078880, 0x59a80057,
+       0x800001c0, 0x02000000, 0x001022c0, 0x0201f000,
+       0x00102318, 0x599c0201, 0x48035059, 0x41780800,
+       0x42001000, 0x00003b10, 0x0201f800, 0x001066a0,
+       0x480b505a, 0x1c01f000, 0x0201f800, 0x00106c4b,
+       0x59b800ea, 0x82000500, 0x00000007, 0x82000580,
+       0x00000003, 0x04020003, 0x4a0370e8, 0x00000001,
+       0x1c01f000, 0x42038000, 0x00007700, 0x4a038006,
+       0x30000000, 0x59c00007, 0x8c00050a, 0x040207fe,
+       0x59c00006, 0x59a00209, 0x59a00c09, 0x900409c0,
+       0x80040d40, 0x48078001, 0x59a0020e, 0x59a00c0e,
+       0x900409c0, 0x80040d40, 0x48078000, 0x59a0020b,
+       0x82000500, 0x0000fffc, 0x48038002, 0x48038003,
+       0x48038005, 0x497b9009, 0x59e00003, 0x82000540,
+       0x00008060, 0x4803c003, 0x1c01f000, 0x41780800,
+       0x8007a0ca, 0x83d3a400, 0x00007600, 0x42000800,
+       0x00000040, 0x0201f800, 0x00101345, 0x4a03a00a,
+       0x00000001, 0x4a03a005, 0x20000000, 0x59d00006,
+       0x4a03a005, 0x30000000, 0x59d00006, 0x8c00050a,
+       0x040207fe, 0x59d00005, 0x59a00210, 0x59a00c10,
+       0x900409c0, 0x80040d40, 0x4807a001, 0x59a0020d,
+       0x59a00c0d, 0x900409c0, 0x80040d40, 0x4807a000,
+       0x59a0020b, 0x82000500, 0x0000fffc, 0x4803a003,
+       0x4803a002, 0x4803a008, 0x1c01f000, 0x59a00002,
+       0x4803c857, 0x800001c0, 0x0402004a, 0x59a8005a,
+       0x48038880, 0x59c400a3, 0x82000540, 0x00002008,
+       0x8400053a, 0x480388a3, 0x59c40008, 0x8400054e,
+       0x82000500, 0xffffffe1, 0x48038808, 0x59c80040,
+       0x84000534, 0x48039040, 0x0401f902, 0x04020013,
+       0x59a80010, 0x800000d0, 0x82000540, 0x00000011,
+       0x48039120, 0x59a80010, 0x82000500, 0x00ffffff,
+       0x82000540, 0x32000000, 0x48039121, 0x4a039123,
+       0xe1290008, 0x59a80010, 0x82000500, 0x00ffffff,
+       0x48039122, 0x0401f016, 0x59a80010, 0x82000500,
+       0x000000ff, 0x900009c0, 0x840001c0, 0x80040540,
+       0x82000540, 0x00000000, 0x48039120, 0x59a80010,
+       0x82000500, 0x000000ff, 0x82000540, 0x01000000,
+       0x48039121, 0x4a039123, 0x08210008, 0x59a80010,
+       0x82000500, 0x000000ff, 0x48039122, 0x497b9124,
+       0x59a80c5b, 0x80040800, 0x4807545b, 0x900409c0,
+       0x82040540, 0x0000aaaa, 0x48039125, 0x497b9126,
+       0x497b9127, 0x0401f8cf, 0x04020004, 0x4a039100,
+       0x0000e980, 0x0401f003, 0x4a039100, 0x0000e9a0,
+       0x1c01f000, 0x82000540, 0x00000001, 0x0402500d,
+       0x4203e000, 0x80000000, 0x40e81000, 0x41780800,
+       0x42000000, 0x00000064, 0x0201f800, 0x001066a0,
+       0x59940024, 0x80080400, 0x48032824, 0x80000580,
+       0x1c01f000, 0x4d900000, 0x4dd00000, 0x4da40000,
+       0x4d140000, 0x417a3000, 0x0201f800, 0x001070d8,
+       0x0201f800, 0x00106dc3, 0x5c022800, 0x5c034800,
+       0x5c03a000, 0x5c032000, 0x1c01f000, 0x59c80007,
+       0x8c000500, 0x04000003, 0x4a03900d, 0x00000030,
+       0x1c01f000, 0x4a038805, 0x00020000, 0x42000800,
+       0x0000003c, 0x0201f800, 0x00101345, 0x4a038891,
+       0x0000ffff, 0x59c80035, 0x48039035, 0x4a03900d,
+       0x00000040, 0x42038000, 0x00007700, 0x0201f800,
+       0x00100ec1, 0x42038000, 0x00007720, 0x0201f800,
+       0x00100ec1, 0x4a03a005, 0x20000000, 0x4a03a005,
+       0x30000000, 0x59d00806, 0x8c040d0a, 0x040207fe,
+       0x1c01f000, 0x4d300000, 0x4031d800, 0x58ef400b,
+       0x58ee580d, 0x58ec0002, 0x82000580, 0x00000200,
+       0x5c026000, 0x02000000, 0x00102304, 0x4d300000,
+       0x59a26001, 0x59a00000, 0x4000b000, 0x80000000,
+       0x48034000, 0x592c0001, 0x80000540, 0x0400001e,
+       0x40025800, 0x8058b040, 0x040207fb, 0x58ec1007,
+       0x58ec1808, 0x592c0a05, 0x4d2c0000, 0x58ec000d,
+       0x40025800, 0x592c0204, 0x5c025800, 0x82000580,
+       0x00000103, 0x04000008, 0x832c0400, 0x00000006,
+       0x0201f800, 0x00103a25, 0x4a01d809, 0x001029e5,
+       0x0401f007, 0x832c0400, 0x00000006, 0x0201f800,
+       0x00103a28, 0x4a01d809, 0x001029e5, 0x5c026000,
+       0x1c01f000, 0x58ec000d, 0x40025800, 0x592c0204,
+       0x82000580, 0x00000103, 0x04020006, 0x0201f800,
+       0x0002077d, 0x5c026000, 0x0201f000, 0x001022c0,
+       0x58ec000d, 0x40025800, 0x592c0404, 0x8400055e,
+       0x48025c04, 0x42028800, 0x000007fd, 0x42003000,
+       0x00fffffd, 0x0201f800, 0x001045a6, 0x04000003,
+       0x80000580, 0x0401f004, 0x59a26001, 0x0201f800,
+       0x0010937d, 0x5c026000, 0x02000000, 0x0010230c,
+       0x4d300000, 0x4a01d809, 0x00102a38, 0x0401f7dc,
+       0x592c0005, 0x82000580, 0x01000000, 0x02000000,
+       0x00102318, 0x4d300000, 0x59a26001, 0x5930020b,
+       0x59301c0a, 0x900001c0, 0x800c1d40, 0x5930040d,
+       0x5930120d, 0x900001c0, 0x80081540, 0x592c0a05,
+       0x832c0400, 0x00000006, 0x0201f800, 0x00103a28,
+       0x4a01d809, 0x001029e5, 0x4a034000, 0x00000001,
+       0x5c026000, 0x1c01f000, 0x4933c857, 0x4c300000,
+       0x5930040b, 0x82000c80, 0x0000000e, 0x04001004,
+       0x4a025a05, 0x0000000e, 0x0401f003, 0x48025a05,
+       0x0401f00c, 0x800409c0, 0x0400000a, 0x4c040000,
+       0x0201f800, 0x00103a00, 0x5c000800, 0x04000003,
+       0x40040000, 0x0401f7f0, 0x80000580, 0x0401f003,
+       0x82000540, 0x00000001, 0x5c006000, 0x1c01f000,
+       0x59a00206, 0x82000580, 0x00000044, 0x1c01f000,
+       0x4807c857, 0x800409c0, 0x0400000c, 0x0201f800,
+       0x00101650, 0x04020009, 0x42000000, 0x00000002,
+       0x0201f800, 0x0010188c, 0x42000000, 0x00000002,
+       0x0201f800, 0x00101821, 0x59a00406, 0x82000500,
+       0x00000007, 0x0c01f001, 0x00102a8c, 0x00102aa1,
+       0x00102ab7, 0x00102a8a, 0x00102a8a, 0x00102a8a,
+       0x00102a8a, 0x00102a8a, 0x0201f000, 0x00102310,
+       0x42000800, 0x000000c0, 0x0201f800, 0x0010193f,
+       0x82040540, 0x00000002, 0x42000800, 0x000000c0,
+       0x0201f800, 0x00101944, 0x42000800, 0x00000000,
+       0x0201f800, 0x0010193f, 0x82040540, 0x00000008,
+       0x42000800, 0x00000000, 0x0201f800, 0x00101944,
+       0x0401f00b, 0x42000800, 0x000000c0, 0x0201f800,
+       0x0010193f, 0x82040540, 0x00000001, 0x42000800,
+       0x000000c0, 0x0201f800, 0x00101944, 0x59c80040,
+       0x4c000000, 0x59a80010, 0x4c000000, 0x59c400a3,
+       0x4c000000, 0x59c40008, 0x4c000000, 0x0401f911,
+       0x04000021, 0x0201f800, 0x001005d8, 0x59a80821,
+       0x800409c0, 0x02020000, 0x00102314, 0x0201f800,
+       0x0010513b, 0x04020005, 0x4a034406, 0x00000016,
+       0x0201f000, 0x0010230c, 0x836c0580, 0x00000003,
+       0x02020000, 0x00102314, 0x59c408a4, 0x82040d00,
+       0x0000000f, 0x82040580, 0x00000000, 0x02020000,
+       0x00102314, 0x59c80040, 0x4c000000, 0x59a80010,
+       0x4c000000, 0x59c400a3, 0x4c000000, 0x59c40008,
+       0x4c000000, 0x59c40080, 0x4c000000, 0x59a0020f,
+       0x59a0bc0f, 0x905cb9c0, 0x805cbd40, 0x41784800,
+       0x41785000, 0x41785800, 0x41789000, 0x41789800,
+       0x0401fe21, 0x0201f800, 0x00106c55, 0x0201f800,
+       0x00100ae0, 0x4178c000, 0x497b4002, 0x0401f95c,
+       0x0401f9aa, 0x59a0020c, 0x59a00c0c, 0x80040d40,
+       0x04000002, 0x0401f9fb, 0x0401f9fa, 0x0401fe68,
+       0x8060c1c0, 0x04020014, 0x0401fa98, 0x0401feb2,
+       0x0402000e, 0x0201f800, 0x001018d3, 0x04020008,
+       0x4a034406, 0x00000017, 0x0201f800, 0x0010230c,
+       0x4203e000, 0x50000000, 0x0401f000, 0x42005800,
+       0x0000aaaa, 0x0401f058, 0x59c80001, 0x800001c0,
+       0x040007ee, 0x59c80801, 0x800409c0, 0x04000006,
+       0x0401fa70, 0x40240000, 0x80280540, 0x802c0540,
+       0x0402004d, 0x59a00002, 0x82000580, 0xfeedbeef,
+       0x04000004, 0x42008800, 0x10000000, 0x0401f003,
+       0x42008800, 0x10000004, 0x0401fa19, 0x4a034002,
+       0xfeedbeef, 0x0401fa71, 0x0401fa97, 0x0401fea8,
+       0x59c40005, 0x8c000534, 0x04000004, 0x42005800,
+       0x0000bbbb, 0x0401f038, 0x0401fe83, 0x04020007,
+       0x42005800, 0x0000cccc, 0x485f420f, 0x905cb9c0,
+       0x485f440f, 0x0401f030, 0x59a0040c, 0x800001c0,
+       0x0400000e, 0x59a26000, 0x5930000d, 0x800001c0,
+       0x040207be, 0x59a26001, 0x5930080d, 0x800409c0,
+       0x040207ba, 0x804891c0, 0x040207b8, 0x804c99c0,
+       0x040207b6, 0x0401f87a, 0x805cb840, 0x04000005,
+       0x40240000, 0x80280540, 0x802c0540, 0x0402001a,
+       0x42000000, 0x00030d40, 0x80000040, 0x04020012,
+       0x59c00007, 0x82000500, 0x000501c0, 0x0402000b,
+       0x0201f800, 0x001018d3, 0x04020008, 0x4a034406,
+       0x00000017, 0x0201f800, 0x0010230c, 0x4203e000,
+       0x50000000, 0x0401f000, 0x42005800, 0x0000dddd,
+       0x0401f005, 0x59c00807, 0x82040d00, 0x0000000c,
+       0x040007ea, 0x0401fe5c, 0x59a0040c, 0x800001c0,
+       0x04000002, 0x0401f856, 0x0401fe6b, 0x40240000,
+       0x80280540, 0x802c0540, 0x04020003, 0x805cb9c0,
+       0x04020781, 0x0201f800, 0x00106f36, 0x0401fda3,
+       0x4201d000, 0x000186a0, 0x0201f800, 0x001060c6,
+       0x5c000800, 0x48078880, 0x5c000800, 0x48078808,
+       0x5c000800, 0x480788a3, 0x5c000800, 0x48075010,
+       0x5c000800, 0x48079040, 0x0201f800, 0x00100969,
+       0x59a00406, 0x82000500, 0x00000003, 0x82000580,
+       0x00000002, 0x0400002c, 0x42000800, 0x000000c0,
+       0x0201f800, 0x0010193f, 0x82040500, 0xfffffffc,
+       0x42000800, 0x000000c0, 0x0201f800, 0x00101944,
+       0x42000800, 0x00000000, 0x0201f800, 0x0010193f,
+       0x82040500, 0xfffffff7, 0x42000800, 0x00000000,
+       0x0201f800, 0x00101944, 0x42000800, 0x00000000,
+       0x0201f800, 0x0010193f, 0x82040500, 0xfffffffb,
+       0x42000800, 0x00000000, 0x0201f800, 0x00101944,
+       0x4a0388a7, 0x0000f7f7, 0x42006000, 0xbeffffff,
+       0x42006800, 0x80018000, 0x0201f800, 0x0010427d,
+       0x42006000, 0xfffeffff, 0x41786800, 0x0201f800,
+       0x0010427d, 0x402c0000, 0x80280540, 0x80240540,
+       0x02000000, 0x001022c0, 0x48274406, 0x482b4207,
+       0x482f4407, 0x0201f000, 0x0010231c, 0x59a26000,
+       0x813261c0, 0x0400000e, 0x59325808, 0x812e59c0,
+       0x0400000b, 0x0201f800, 0x0002077d, 0x0201f800,
+       0x001007fd, 0x59a26001, 0x59325808, 0x0201f800,
+       0x0002077d, 0x0201f800, 0x001007fd, 0x1c01f000,
+       0x42000800, 0x000000ef, 0x0201f800, 0x001015eb,
+       0x59c400a3, 0x8400055a, 0x8400053a, 0x480388a3,
+       0x0201f800, 0x0010163b, 0x0402000a, 0x42000000,
+       0x00000001, 0x0201f800, 0x0010188c, 0x42000000,
+       0x00000001, 0x0201f800, 0x00101821, 0x0401f013,
+       0x0201f800, 0x00101642, 0x04020008, 0x41780000,
+       0x0201f800, 0x0010188c, 0x41780000, 0x0201f800,
+       0x00101821, 0x0401f009, 0x42000000, 0x00000002,
+       0x0201f800, 0x0010188c, 0x42000000, 0x00000002,
+       0x0201f800, 0x00101821, 0x42000800, 0x00000000,
+       0x0201f800, 0x0010193f, 0x82040540, 0x00000004,
+       0x42000800, 0x00000000, 0x0201f800, 0x00101944,
+       0x4201d000, 0x00000014, 0x0201f800, 0x0010608e,
+       0x59c40008, 0x8400054e, 0x82000500, 0xffffffe1,
+       0x48038808, 0x4a0388a7, 0x0000f7f7, 0x42001000,
+       0x04000001, 0x0201f800, 0x0010193d, 0x42006000,
+       0xbe20bfff, 0x42006800, 0x80018000, 0x0201f800,
+       0x0010427d, 0x42006000, 0xfffeffff, 0x41786800,
+       0x0201f800, 0x0010427d, 0x4200b000, 0x00001388,
+       0x4201d000, 0x00000014, 0x4c580000, 0x0201f800,
+       0x0010608e, 0x0201f800, 0x001018d3, 0x5c00b000,
+       0x04000004, 0x8058b040, 0x040207f6, 0x0401f025,
+       0x59c40005, 0x8c000534, 0x04020007, 0x59c400a4,
+       0x82000500, 0x0000000f, 0x82000580, 0x00000008,
+       0x0402001c, 0x42006000, 0x00020000, 0x0201f800,
+       0x00104282, 0x4201d000, 0x00000064, 0x0201f800,
+       0x0010608e, 0x42006000, 0xfeffffff, 0x42006800,
+       0x02000000, 0x0201f800, 0x0010427d, 0x42006000,
+       0xfdffffff, 0x41786800, 0x0201f800, 0x0010427d,
+       0x4a038805, 0x04000001, 0x59c400a4, 0x82000500,
+       0x0000000f, 0x82000580, 0x00000000, 0x04000003,
+       0x82000540, 0x00000001, 0x1c01f000, 0x4803c856,
+       0x42038000, 0x00007700, 0x0201f800, 0x00100ec1,
+       0x59c00006, 0x59a0040c, 0x800001c0, 0x0400003f,
+       0x59a03c0c, 0x59a00209, 0x59a01c09, 0x900c19c0,
+       0x800c1d40, 0x59a0020e, 0x59a0240e, 0x901021c0,
+       0x80102540, 0x59a0020b, 0x82000500, 0x0000fffc,
+       0x59a0140b, 0x900811c0, 0x80081540, 0x480b8003,
+       0x0201f800, 0x0002075a, 0x02000800, 0x001005d8,
+       0x49334000, 0x0201f800, 0x001007e4, 0x4a025a04,
+       0x00000018, 0x4a025805, 0x00abcdef, 0x492e6008,
+       0x492e600b, 0x481e600d, 0x4a02600c, 0x00000004,
+       0x832c0400, 0x00000011, 0x4802600a, 0x42001000,
+       0x0000000c, 0x821c0d80, 0x00000001, 0x04000004,
+       0x801c3840, 0x0401f963, 0x0401f004, 0x41783800,
+       0x0401f960, 0x0401f011, 0x821c0c80, 0x00000005,
+       0x04001005, 0x40043800, 0x42001000, 0x0000003c,
+       0x0401f006, 0x80001580, 0x82081400, 0x0000000c,
+       0x801c3840, 0x040207fd, 0x832c0400, 0x00000005,
+       0x0401f950, 0x040207f1, 0x497b9009, 0x59e00003,
+       0x82000540, 0x00008060, 0x4803c003, 0x4a038009,
+       0x00e00000, 0x1c01f000, 0x4803c856, 0x41780800,
+       0x8007a0ca, 0x83d3a400, 0x00007600, 0x42000800,
+       0x00000040, 0x0201f800, 0x00101345, 0x4a03a00a,
+       0x00000001, 0x4a03a005, 0x20000000, 0x59d00006,
+       0x4a03a005, 0x30000000, 0x59d00006, 0x8c00050a,
+       0x040207fe, 0x59d00005, 0x59a0020c, 0x800001c0,
+       0x0400003f, 0x59a03a0c, 0x59a00210, 0x59a01c10,
+       0x900c19c0, 0x800c1d40, 0x59a0020d, 0x59a0240d,
+       0x901021c0, 0x80102540, 0x59a0120b, 0x82081500,
+       0x0000fffc, 0x59a0040b, 0x900001c0, 0x80081540,
+       0x480ba003, 0x0201f800, 0x0002075a, 0x02000800,
+       0x001005d8, 0x49334001, 0x0201f800, 0x001007e4,
+       0x4a025a04, 0x00000018, 0x4a025805, 0x00abcdef,
+       0x492e6008, 0x492e600b, 0x481e600d, 0x4a02600c,
+       0x00000004, 0x832c0400, 0x00000011, 0x4802600a,
+       0x42001000, 0x0000000c, 0x821c0d80, 0x00000001,
+       0x04000004, 0x801c3840, 0x0401f906, 0x0401f004,
+       0x41783800, 0x0401f903, 0x0401f011, 0x821c0c80,
+       0x00000005, 0x04001005, 0x40043800, 0x42001000,
+       0x0000003c, 0x0401f006, 0x80001580, 0x82081400,
+       0x0000000c, 0x801c3840, 0x040207fd, 0x832c0400,
+       0x00000005, 0x0401f8f3, 0x040207f1, 0x1c01f000,
+       0x4803c856, 0x59a0020c, 0x800001c0, 0x04000024,
+       0x824c0580, 0x00000002, 0x04000040, 0x59a26001,
+       0x5930380d, 0x801c39c0, 0x0400003c, 0x801c3840,
+       0x481e600d, 0x5932580b, 0x5930080a, 0x50042000,
+       0x58041801, 0x58041002, 0x82081500, 0xfffffffc,
+       0x5930000c, 0x80000000, 0x82000d80, 0x00000005,
+       0x04020009, 0x497a600c, 0x592e5801, 0x812e59c0,
+       0x0400001a, 0x492e600b, 0x832c0c00, 0x00000005,
+       0x0401f005, 0x4802600c, 0x5930080a, 0x82040c00,
+       0x00000003, 0x4806600a, 0x0401f010, 0x59a0120b,
+       0x82081500, 0x0000fffc, 0x59a0040b, 0x900001c0,
+       0x80081540, 0x480ba003, 0x59a0020d, 0x59a0240d,
+       0x901021c0, 0x80102540, 0x59a00210, 0x59a01c10,
+       0x900c19c0, 0x800c1d40, 0x4201d000, 0x00003a98,
+       0x0201f800, 0x001060c6, 0x480ba002, 0x59a80059,
+       0x4803a008, 0x4813a000, 0x480fa001, 0x4a03a005,
+       0x10000000, 0x02005800, 0x001005d8, 0x804c9800,
+       0x82000540, 0x00000001, 0x1c01f000, 0x4847c857,
+       0x59a0040c, 0x800001c0, 0x04000024, 0x82480580,
+       0x00000002, 0x04000042, 0x59a26000, 0x5930380d,
+       0x801c39c0, 0x0400003e, 0x801c3840, 0x481e600d,
+       0x5932580b, 0x5930080a, 0x50042000, 0x58041801,
+       0x58041002, 0x82081500, 0xfffffffc, 0x5930000c,
+       0x80000000, 0x82000d80, 0x00000005, 0x04020009,
+       0x497a600c, 0x592e5801, 0x812e59c0, 0x0400001d,
+       0x492e600b, 0x832c0c00, 0x00000005, 0x0401f005,
+       0x4802600c, 0x5930080a, 0x82040c00, 0x00000003,
+       0x4806600a, 0x0401f013, 0x82440580, 0x10000000,
+       0x0402001f, 0x59a0020e, 0x59a0240e, 0x901021c0,
+       0x80102540, 0x59a00209, 0x59a01c09, 0x900c19c0,
+       0x800c1d40, 0x59a0020b, 0x82000500, 0x0000fffc,
+       0x59a0140b, 0x900811c0, 0x80081540, 0x480b8003,
+       0x48138000, 0x480f8001, 0x480b8002, 0x59c80018,
+       0x82000500, 0xf0000000, 0x59c02008, 0x82102500,
+       0x0fffffff, 0x80100540, 0x48038008, 0x48478006,
+       0x80489000, 0x8260c540, 0x00000001, 0x1c01f000,
+       0x59c00009, 0x4803c857, 0x82000d00, 0x00e00000,
+       0x0400000d, 0x485f420f, 0x905cb9c0, 0x485f440f,
+       0x8c00052e, 0x04000002, 0x80285000, 0x8c00052c,
+       0x04000002, 0x80244800, 0x8c00052a, 0x04000002,
+       0x802c5800, 0x1c01f000, 0x59a0020c, 0x800001c0,
+       0x04000024, 0x59d00806, 0x4807c857, 0x8c040d3e,
+       0x04000020, 0x4a03a005, 0x20000000, 0x4a03a005,
+       0x30000000, 0x59d00806, 0x8c040d0a, 0x040207fe,
+       0x824c0480, 0x00000003, 0x02021800, 0x001005d8,
+       0x404c0000, 0x0c01f001, 0x00102da1, 0x00102da3,
+       0x00102da9, 0x0201f800, 0x001005d8, 0x80000040,
+       0x40009800, 0x0401ff43, 0x0400000a, 0x0401ff41,
+       0x0401f008, 0x80000040, 0x40009800, 0x59d00806,
+       0x4807c857, 0x8c040d3e, 0x040207e3, 0x0401ff39,
+       0x1c01f000, 0x59a0040c, 0x800001c0, 0x04000024,
+       0x59c00807, 0x4807c857, 0x8c040d3e, 0x04000020,
+       0x59c00807, 0x4a038006, 0x20000000, 0x82480480,
+       0x00000003, 0x02021800, 0x001005d8, 0x40480000,
+       0x0c01f001, 0x00102dc4, 0x00102dc6, 0x00102dce,
+       0x0201f800, 0x001005d8, 0x80000040, 0x40009000,
+       0x42008800, 0x10000004, 0x0401ff65, 0x0400000c,
+       0x0401ff63, 0x0401f00a, 0x80000040, 0x40009000,
+       0x59c00807, 0x4807c857, 0x8c040d3e, 0x040207e5,
+       0x42008800, 0x10000004, 0x0401ff59, 0x1c01f000,
+       0x492fc857, 0x4000a800, 0x4a03b805, 0x20000000,
+       0x59dc0006, 0x4a03b805, 0x30000000, 0x4813b800,
+       0x480fb801, 0x480bb802, 0x4857b803, 0x4a03b805,
+       0x30000002, 0x59dc0006, 0x4a03b805, 0x70000001,
+       0x59dc0006, 0x4a03b805, 0x10000000, 0x59dc0006,
+       0x8c00053e, 0x040007fe, 0x4a03b805, 0x20000000,
+       0x59dc0006, 0x59dc2000, 0x59dc1801, 0x801c39c0,
+       0x0400000a, 0x4d2c0000, 0x0201f800, 0x001007e4,
+       0x5c000800, 0x02000800, 0x001005d8, 0x4a025a04,
+       0x0000000a, 0x492c0801, 0x1c01f000, 0x42006000,
+       0x00102fb2, 0x0201f800, 0x00101345, 0x4a03902c,
+       0x00200000, 0x4200b000, 0x000001f4, 0x59c8002c,
+       0x8c00052c, 0x04000007, 0x8058b040, 0x040207fc,
+       0x42000000, 0x00004003, 0x41781000, 0x0401f196,
+       0x50301000, 0x41784800, 0x4a03902d, 0x00008000,
+       0x4200b000, 0x000001f4, 0x59c8002c, 0x8c000534,
+       0x04000007, 0x8058b040, 0x040207fc, 0x42000000,
+       0x00004003, 0x41781000, 0x0401f187, 0x0401f8f8,
+       0x80244800, 0x40240000, 0x82000580, 0x000003b1,
+       0x040207fb, 0x0401f988, 0x41784800, 0x0401f920,
+       0x80244800, 0x40240000, 0x82000580, 0x000003b1,
+       0x040207fb, 0x80306000, 0x82300580, 0x00102fb4,
+       0x040207e0, 0x59a80863, 0x800409c0, 0x04000007,
+       0x42000000, 0x00004004, 0x42001000, 0x00000002,
+       0x59a81862, 0x0401f16c, 0x42006000, 0x00102fb2,
+       0x4a035064, 0x00000004, 0x50301000, 0x41784800,
+       0x4a03902d, 0x00004000, 0x4200b000, 0x000001f4,
+       0x59c8002c, 0x8c000532, 0x04000007, 0x8058b040,
+       0x040207fc, 0x42000000, 0x00004003, 0x41781000,
+       0x0401f159, 0x0401f8ca, 0x80244800, 0x40240000,
+       0x82000580, 0x00000154, 0x040207fb, 0x0401f95a,
+       0x41784800, 0x0401f8f2, 0x80244800, 0x40240000,
+       0x82000580, 0x00000154, 0x040207fb, 0x80306000,
+       0x82300580, 0x00102fb4, 0x040207e0, 0x59a80863,
+       0x800409c0, 0x04000007, 0x42000000, 0x00004004,
+       0x42001000, 0x00000004, 0x59a81862, 0x0401f13e,
+       0x42006000, 0x00102fb2, 0x497b5064, 0x50301000,
+       0x41784800, 0x4a03902d, 0x00001000, 0x4200b000,
+       0x000001f4, 0x59c8002c, 0x8c00052e, 0x04000007,
+       0x8058b040, 0x040207fc, 0x42000000, 0x00004003,
+       0x41781000, 0x0401f12c, 0x0401f89d, 0x80244800,
+       0x40240000, 0x82000580, 0x00000088, 0x040207fb,
+       0x0401f92d, 0x41784800, 0x0401f8c5, 0x80244800,
+       0x40240000, 0x82000580, 0x00000088, 0x040207fb,
+       0x80306000, 0x82300580, 0x00102fb4, 0x040207e0,
+       0x59a80863, 0x800409c0, 0x04000007, 0x42000000,
+       0x00004004, 0x42001000, 0x00000001, 0x59a81862,
+       0x0401f111, 0x42006000, 0x00102fb2, 0x50301000,
+       0x41784800, 0x4a03902d, 0x00000800, 0x0401f87c,
+       0x80244800, 0x40240000, 0x82000580, 0x00000018,
+       0x040207fb, 0x0401f90c, 0x41784800, 0x0401f8a4,
+       0x80244800, 0x40240000, 0x82000580, 0x00000018,
+       0x040207fb, 0x80306000, 0x82300580, 0x00102fb4,
+       0x040207eb, 0x59a80863, 0x800409c0, 0x04000007,
+       0x42000000, 0x00004004, 0x42001000, 0x00000010,
+       0x59a81862, 0x0401f0f0, 0x42006000, 0x00102fb2,
+       0x50301000, 0x41784800, 0x4a03902d, 0x00000400,
+       0x0401f85b, 0x80244800, 0x40240000, 0x82000580,
+       0x00000088, 0x040207fb, 0x0401f8eb, 0x41784800,
+       0x0401f883, 0x80244800, 0x40240000, 0x82000580,
+       0x00000088, 0x040207fb, 0x80306000, 0x82300580,
+       0x00102fb4, 0x040207eb, 0x59a80863, 0x800409c0,
+       0x04000007, 0x42000000, 0x00004004, 0x42001000,
+       0x00000008, 0x59a81862, 0x0401f0cf, 0x42006000,
+       0x00102fb2, 0x50301000, 0x41784800, 0x4a03902d,
+       0x00002000, 0x4200b000, 0x000001f4, 0x59c8002c,
+       0x8c000530, 0x04000007, 0x8058b040, 0x040207fc,
+       0x42000000, 0x00004003, 0x41781000, 0x0401f0be,
+       0x59c8002c, 0x82000500, 0xffe0ffff, 0x82080d00,
+       0x001f0000, 0x80040540, 0x4803902c, 0x0401f828,
+       0x80244800, 0x40240000, 0x82000580, 0x00000110,
+       0x040207fb, 0x0401f8b8, 0x41784800, 0x0401f850,
+       0x59c80034, 0x82080d00, 0x001f0000, 0x82000500,
+       0x001f0000, 0x80040580, 0x04000006, 0x59a80063,
+       0x80000000, 0x48035063, 0x40240000, 0x48035062,
+       0x80244800, 0x40240000, 0x82000580, 0x00000110,
+       0x040207ef, 0x80306000, 0x82300580, 0x00102fb4,
+       0x040207cd, 0x59a80863, 0x800409c0, 0x04000006,
+       0x42000000, 0x00004004, 0x42001000, 0x00000020,
+       0x59a81862, 0x0201f000, 0x001022c0, 0x59c8002c,
+       0x82000500, 0xffff0000, 0x82080d00, 0x0000ffff,
+       0x80040540, 0x4803902c, 0x40080000, 0x48039028,
+       0x48039029, 0x59a80064, 0x82000580, 0x00000004,
+       0x04000004, 0x40080000, 0x4803902a, 0x4803902b,
+       0x59c8082d, 0x82040d00, 0xfffffc00, 0x40240000,
+       0x80040d40, 0x4807902d, 0x4200b000, 0x000001f4,
+       0x59c8002c, 0x82000500, 0x18000000, 0x04000007,
+       0x8058b040, 0x040207fb, 0x42000000, 0x00004003,
+       0x41781000, 0x0401f06c, 0x4a03902e, 0x00000001,
+       0x4200b000, 0x000001f4, 0x59c8002e, 0x8c000500,
+       0x04000006, 0x8058b040, 0x040207fc, 0x42000000,
+       0x00004003, 0x0401f060, 0x1c01f000, 0x41783800,
+       0x59c8082d, 0x82040d00, 0xfffffc00, 0x40240000,
+       0x80040d40, 0x4807902d, 0x4200b000, 0x000001f4,
+       0x59c8002c, 0x82000500, 0x18000000, 0x04000007,
+       0x8058b040, 0x040207fb, 0x42000000, 0x00004003,
+       0x41781000, 0x0401f04c, 0x59c80030, 0x59c80830,
+       0x80040580, 0x040207fd, 0x40041800, 0x59c80031,
+       0x59c80831, 0x80040580, 0x040207fd, 0x40042000,
+       0x59c80032, 0x59c80832, 0x80040580, 0x040207fd,
+       0x40042800, 0x59c80033, 0x59c80833, 0x80040580,
+       0x040207fd, 0x40043000, 0x400c0000, 0x80080580,
+       0x04000002, 0x801c3800, 0x40100000, 0x80080580,
+       0x04000002, 0x801c3800, 0x59a80064, 0x82000580,
+       0x00000004, 0x04000009, 0x40140000, 0x80080580,
+       0x04000002, 0x801c3800, 0x40180000, 0x80080580,
+       0x04000002, 0x801c3800, 0x59a80064, 0x82000580,
+       0x00000004, 0x0400000d, 0x59c80034, 0x59c80834,
+       0x80040580, 0x040207fd, 0x82040500, 0x0000ffff,
+       0x82080d00, 0x0000ffff, 0x80040580, 0x0400000e,
+       0x801c3800, 0x0401f00c, 0x59c80034, 0x59c80834,
+       0x80040580, 0x040207fd, 0x82040500, 0x000000ff,
+       0x82080d00, 0x000000ff, 0x80040580, 0x04000002,
+       0x801c3800, 0x801c39c0, 0x04000006, 0x59a80063,
+       0x801c0400, 0x48035063, 0x40240000, 0x48035062,
+       0x1c01f000, 0x48034206, 0x48074406, 0x480b4207,
+       0x480f4407, 0x48134208, 0x48174408, 0x0201f000,
+       0x001022c3, 0x42000000, 0x00600000, 0x80000040,
+       0x040207ff, 0x1c01f000, 0x5a5a5a5a, 0xa5a5a5a5,
+       0x59a00c0a, 0x800409c0, 0x02000000, 0x00102310,
+       0x82040480, 0x00000021, 0x02021000, 0x00102310,
+       0x82040480, 0x00000011, 0x04001003, 0x42000800,
+       0x00000010, 0x59a00208, 0x59a01407, 0x900811c0,
+       0x80081540, 0x59a00207, 0x59a01c06, 0x900c19c0,
+       0x800c1d40, 0x0201f800, 0x00103a00, 0x04000006,
+       0x0201f800, 0x00103a25, 0x4a01d809, 0x00102fd5,
+       0x1c01f000, 0x4a034406, 0x00000002, 0x0201f000,
+       0x0010230c, 0x4031d800, 0x58ef400b, 0x58ec0002,
+       0x82000580, 0x00000200, 0x02000000, 0x00102304,
+       0x59a00c0a, 0x82040480, 0x00000011, 0x04001003,
+       0x42000800, 0x00000010, 0x59a0040b, 0x59a0120b,
+       0x900811c0, 0x80081540, 0x59a00209, 0x59a01c08,
+       0x900c19c0, 0x800c1d40, 0x58ec0003, 0x0201f800,
+       0x00103a28, 0x4a01d809, 0x00102ff0, 0x1c01f000,
+       0x4031d800, 0x58ef400b, 0x58ec0002, 0x82000580,
+       0x00000200, 0x02000000, 0x00102304, 0x59a00c0a,
+       0x82040480, 0x00000011, 0x02001000, 0x001022c0,
+       0x82040c80, 0x00000010, 0x59a00208, 0x59a01407,
+       0x900811c0, 0x80081540, 0x59a00207, 0x59a01c06,
+       0x900c19c0, 0x800c1d40, 0x82081400, 0x00000040,
+       0x58ec0003, 0x0201f800, 0x00103a25, 0x4a01d809,
+       0x0010300e, 0x1c01f000, 0x4031d800, 0x58ef400b,
+       0x58ec0002, 0x82000580, 0x00000200, 0x02000000,
+       0x00102304, 0x59a0040a, 0x82000c80, 0x00000010,
+       0x59a0040b, 0x59a0120b, 0x900811c0, 0x80081540,
+       0x59a00209, 0x59a01c08, 0x900c19c0, 0x800c1d40,
+       0x82081400, 0x00000040, 0x58ec0003, 0x0201f800,
+       0x00103a28, 0x4a01d809, 0x001022b9, 0x1c01f000,
+       0x48efc857, 0x59a00207, 0x59a01407, 0x900001c0,
+       0x80081540, 0x59a00209, 0x59a01c09, 0x900001c0,
+       0x800c1d40, 0x59a00406, 0x48034000, 0x480b4001,
+       0x480f4002, 0x0201f800, 0x00103a00, 0x04020005,
+       0x4a034406, 0x00000002, 0x0201f000, 0x0010230c,
+       0x42000800, 0x00000010, 0x0201f800, 0x00103a25,
+       0x4a01d809, 0x00103043, 0x1c01f000, 0x4031d800,
+       0x58ef400b, 0x58ee580d, 0x58ec0002, 0x82000580,
+       0x00000200, 0x02000000, 0x00102304, 0x48efc857,
+       0x49a3c857, 0x492fc857, 0x592c0a04, 0x80040910,
+       0x04020005, 0x4a034406, 0x00000019, 0x0201f000,
+       0x0010230c, 0x4805d80c, 0x0401f00a, 0x4031d800,
+       0x58ef400b, 0x58ec0002, 0x82000580, 0x00000200,
+       0x02000000, 0x00102304, 0x48efc857, 0x49a3c857,
+       0x48efc857, 0x49a3c857, 0x58ec000c, 0x80000040,
+       0x04000012, 0x4801d80c, 0x0201f800, 0x00103a00,
+       0x04020005, 0x4a034406, 0x00000002, 0x0201f000,
+       0x0010230c, 0x42000800, 0x00000010, 0x58ec1007,
+       0x58ec1808, 0x0201f800, 0x00103a25, 0x4a01d809,
+       0x00103057, 0x1c01f000, 0x58ee580d, 0x48efc857,
+       0x49a3c857, 0x492fc857, 0x492f3006, 0x592c0404,
+       0x8400055e, 0x48025c04, 0x4a01d809, 0x00103081,
+       0x1c01f000, 0x58ee580d, 0x48efc857, 0x49a3c857,
+       0x492fc857, 0x592c0404, 0x8400051e, 0x48025c04,
+       0x59a00000, 0x59a01001, 0x59a01802, 0x80081400,
+       0x820c1c40, 0x00000000, 0x832c0400, 0x00000004,
+       0x42000800, 0x00000010, 0x0201f000, 0x00103a28,
+       0x800409c0, 0x04000005, 0x4a034406, 0x00000001,
+       0x0201f000, 0x0010230c, 0x836c0580, 0x00000003,
+       0x04000005, 0x4a034406, 0x00000007, 0x0201f000,
+       0x0010230c, 0x59a0320b, 0x82183500, 0x000000ff,
+       0x59a28c06, 0x0201f800, 0x00020245, 0x02020000,
+       0x00102310, 0x83440580, 0x000007fd, 0x04000008,
+       0x0201f800, 0x001049e7, 0x04000005, 0x4a034406,
+       0x00000009, 0x0201f000, 0x0010230c, 0x0201f800,
+       0x00103a00, 0x04020005, 0x4a034406, 0x00000002,
+       0x0201f000, 0x0010230c, 0x801831c0, 0x0400000a,
+       0x412c0800, 0x0201f800, 0x00103a00, 0x04020005,
+       0x4a034406, 0x00000002, 0x0201f000, 0x0010230c,
+       0x40065800, 0x4a025c04, 0x00008000, 0x497a5a04,
+       0x0201f800, 0x00109100, 0x04020005, 0x4a034406,
+       0x00000003, 0x0201f000, 0x0010230c, 0x4a01d809,
+       0x001030d2, 0x1c01f000, 0x592c0005, 0x82000580,
+       0x01000000, 0x04020005, 0x4a034406, 0x00000004,
+       0x0201f000, 0x0010230c, 0x592c0406, 0x82002d00,
+       0x0000ff00, 0x82000500, 0x000000ff, 0x80000904,
+       0x80040800, 0x82040480, 0x00000006, 0x04001003,
+       0x42000800, 0x00000005, 0x832ca400, 0x00000006,
+       0x4050a800, 0x4004b000, 0x0201f800, 0x0010ab28,
+       0x59a00407, 0x59a01207, 0x900811c0, 0x80081540,
+       0x59a00409, 0x59a01a09, 0x900c19c0, 0x800c1d40,
+       0x832c0400, 0x00000006, 0x4c140000, 0x0201f800,
+       0x00103a28, 0x5c002800, 0x801429c0, 0x04000003,
+       0x4a01d809, 0x001030ff, 0x1c01f000, 0x4031d800,
+       0x58ef400b, 0x58ee580d, 0x58ec0002, 0x82000580,
+       0x00000200, 0x02000000, 0x00102304, 0x812e59c0,
+       0x02000800, 0x001005d8, 0x592c0006, 0x82000500,
+       0xff000000, 0x80000904, 0x800409c0, 0x02000000,
+       0x00102304, 0x82040480, 0x0000000e, 0x04001003,
+       0x42000800, 0x0000000d, 0x592e5801, 0x812e59c0,
+       0x02000800, 0x001005d8, 0x832ca400, 0x00000005,
+       0x4050a800, 0x4004b000, 0x0201f800, 0x0010ab28,
+       0x58ec1007, 0x58ec1808, 0x832c0400, 0x00000005,
+       0x0201f000, 0x00103a28, 0x0201f800, 0x00103a00,
+       0x04020005, 0x4a034406, 0x00000002, 0x0201f000,
+       0x0010230c, 0x59a00c06, 0x82040500, 0x0000ff00,
+       0x840001c0, 0x82001480, 0x00000007, 0x02021000,
+       0x00102310, 0x0c01f001, 0x0010313d, 0x00103144,
+       0x0010314b, 0x0010314b, 0x0010314b, 0x0010314d,
+       0x00103152, 0x42000800, 0x0000000d, 0x42003800,
+       0x00103166, 0x4a034000, 0x0010b4eb, 0x0401f013,
+       0x42000800, 0x0000000d, 0x42003800, 0x00103166,
+       0x4a034000, 0x0010b4f8, 0x0401f00c, 0x0201f000,
+       0x00102310, 0x42000800, 0x00000008, 0x42003800,
+       0x00103179, 0x0401f005, 0x42000800, 0x00000004,
+       0x42003800, 0x001031c3, 0x59a00207, 0x59a01407,
+       0x900001c0, 0x80081540, 0x59a00209, 0x59a01c09,
+       0x900001c0, 0x800c1d40, 0x832c0400, 0x00000005,
+       0x4c1c0000, 0x0201f800, 0x00103a25, 0x5c003800,
+       0x481dd809, 0x1c01f000, 0x4031d800, 0x58ef400b,
+       0x58ee580d, 0x58ec0002, 0x82000580, 0x00000200,
+       0x02000000, 0x00102304, 0x4a03501f, 0x00000001,
+       0x4200b000, 0x0000000d, 0x59a0a800, 0x832ca400,
+       0x00000005, 0x0201f800, 0x0010ab17, 0x0201f000,
+       0x001022c0, 0x4031d800, 0x58ef400b, 0x58ee580d,
+       0x58ec0002, 0x82000580, 0x00000200, 0x02000000,
+       0x00102304, 0x832ca400, 0x00000005, 0x50500000,
+       0x82001500, 0x000c0016, 0x02020000, 0x00102310,
+       0x82500c00, 0x00000003, 0x50040000, 0x82001500,
+       0x00000001, 0x02020000, 0x00102310, 0x50500000,
+       0x82001500, 0x00000028, 0x0400001d, 0x82081580,
+       0x00000028, 0x02020000, 0x00102310, 0x80500800,
+       0x50040000, 0x82001500, 0x00000013, 0x82081580,
+       0x00000013, 0x02020000, 0x00102310, 0x80040800,
+       0x50040000, 0x82001500, 0x00010000, 0x82081580,
+       0x00010000, 0x02020000, 0x00102310, 0x836c0580,
+       0x00000000, 0x04000012, 0x599c0019, 0x8c00050e,
+       0x0402000f, 0x0201f000, 0x00102310, 0x80500800,
+       0x50040000, 0x82001500, 0x00000013, 0x02020000,
+       0x00102310, 0x80040800, 0x50040000, 0x82001500,
+       0x00010000, 0x02020000, 0x00102310, 0x4200b000,
+       0x00000008, 0x4200a800, 0x0010b4e3, 0x0201f800,
+       0x0010ab17, 0x0201f000, 0x001022c0, 0x4031d800,
+       0x58ef400b, 0x58ee580d, 0x58ec0002, 0x82000580,
+       0x00000200, 0x02000000, 0x00102304, 0x4200b000,
+       0x00000004, 0x4200a800, 0x0010b8fa, 0x832ca400,
+       0x00000005, 0x0201f800, 0x0010ab17, 0x59a80005,
+       0x84000550, 0x48035005, 0x0201f000, 0x001022c0,
+       0x0201f800, 0x00103a00, 0x04020005, 0x4a034406,
+       0x00000002, 0x0201f000, 0x0010230c, 0x59a00c06,
+       0x82040500, 0x0000ff00, 0x840001c0, 0x82001480,
+       0x00000006, 0x02021000, 0x00102310, 0x0c01f001,
+       0x001031ee, 0x001031f3, 0x001031f8, 0x001031f8,
+       0x001031f8, 0x001031fa, 0x42000800, 0x0000000d,
+       0x4200a000, 0x0010b4eb, 0x0401f00c, 0x42000800,
+       0x0000000d, 0x4200a000, 0x0010b4f8, 0x0401f007,
+       0x0201f000, 0x00102310, 0x42000800, 0x00000008,
+       0x4200a000, 0x0010b4e3, 0x4004b000, 0x832cac00,
+       0x00000005, 0x0201f800, 0x0010ab17, 0x59a00207,
+       0x59a01407, 0x900001c0, 0x80081540, 0x59a00209,
+       0x59a01c09, 0x900001c0, 0x800c1d40, 0x832c0400,
+       0x00000005, 0x0201f000, 0x00103a28, 0x836c0580,
+       0x00000000, 0x04020005, 0x4a034406, 0x00000007,
+       0x0201f000, 0x0010230c, 0x59a00406, 0x800001c0,
+       0x0400001a, 0x59a80005, 0x8c000514, 0x04000005,
+       0x42000000, 0x00000001, 0x40000800, 0x0401f003,
+       0x59a00207, 0x59a80853, 0x48035053, 0x0201f800,
+       0x0010163b, 0x04000022, 0x0201f800, 0x00101642,
+       0x0400001f, 0x0201f800, 0x00101649, 0x0400001c,
+       0x0201f800, 0x00101650, 0x04000019, 0x48075053,
+       0x0201f000, 0x00102310, 0x59c40801, 0x82040d00,
+       0x00018000, 0x82040580, 0x00000000, 0x04020004,
+       0x4a034406, 0x00000000, 0x0401f00d, 0x82040580,
+       0x00008000, 0x04020004, 0x4a034406, 0x00000001,
+       0x0401f007, 0x82040580, 0x00010000, 0x02020800,
+       0x001005d8, 0x4a034406, 0x00000003, 0x59a00406,
+       0x82000580, 0x00000002, 0x0402001f, 0x59c40006,
+       0x84000500, 0x48038806, 0x0201f800, 0x00106ede,
+       0x497b8880, 0x0201f800, 0x0010a9c0, 0x0201f800,
+       0x0010a9ce, 0x42000000, 0x0010b8ca, 0x0201f800,
+       0x0010aa47, 0x82000540, 0x00000001, 0x0201f800,
+       0x0010518c, 0x4a038808, 0x00000000, 0x4202d800,
+       0x00000004, 0x42001000, 0x00000001, 0x0201f800,
+       0x0010193d, 0x4a035049, 0x00000001, 0x0201f800,
+       0x001006d4, 0x0201f000, 0x001022c0, 0x800409c0,
+       0x04000005, 0x4a034406, 0x00000001, 0x0201f000,
+       0x0010230c, 0x836c0580, 0x00000003, 0x04000005,
+       0x4a034406, 0x00000007, 0x0201f000, 0x0010230c,
+       0x59a28c06, 0x59a0320b, 0x82183500, 0x000000ff,
+       0x0201f800, 0x00020245, 0x02020000, 0x00102310,
+       0x83440580, 0x000007fd, 0x04000008, 0x0201f800,
+       0x001049e7, 0x04000005, 0x42000800, 0x00000009,
+       0x0201f000, 0x0010230c, 0x0201f800, 0x00103a00,
+       0x04020005, 0x4a034406, 0x00000002, 0x0201f000,
+       0x0010230c, 0x497a5a04, 0x4a025c04, 0x00008000,
+       0x0201f800, 0x00109115, 0x04020005, 0x4a034406,
+       0x00000003, 0x0201f000, 0x0010230c, 0x4a01d809,
+       0x0010329e, 0x1c01f000, 0x592c0005, 0x82000d00,
+       0x0000ffff, 0x82000500, 0xffff0000, 0x82000580,
+       0x01000000, 0x04020005, 0x4a034406, 0x00000004,
+       0x0201f000, 0x0010230c, 0x80040904, 0x832ca400,
+       0x00000005, 0x4050a800, 0x4004b000, 0x0201f800,
+       0x0010ab28, 0x59a00207, 0x59a01407, 0x900001c0,
+       0x80081540, 0x59a00209, 0x59a01c09, 0x900001c0,
+       0x800c1d40, 0x832c0400, 0x00000005, 0x0201f000,
+       0x00103a28, 0x496fc857, 0x836c0580, 0x00000000,
+       0x04000005, 0x4a034406, 0x0000001a, 0x0201f000,
+       0x0010230c, 0x0201f800, 0x0010513b, 0x02020800,
+       0x00104142, 0x42000800, 0x00000020, 0x59a00407,
+       0x59a01207, 0x900811c0, 0x80081540, 0x59a00409,
+       0x59a01a09, 0x900c19c0, 0x800c1d40, 0x419c0000,
+       0x49a3c857, 0x0201f800, 0x00103a25, 0x4a01d809,
+       0x001032da, 0x1c01f000, 0x4833c857, 0x4031d800,
+       0x58ef400b, 0x58ec0002, 0x82000580, 0x00000200,
+       0x02000000, 0x00102304, 0x599c0200, 0x800001c0,
+       0x02000000, 0x00102310, 0x59a80005, 0x8c000512,
+       0x04000004, 0x599c0019, 0x8400050c, 0x48033819,
+       0x0201f800, 0x001097d7, 0x59a80005, 0x8c000514,
+       0x04000004, 0x599c0017, 0x84000508, 0x48033817,
+       0x0201f800, 0x00103b25, 0x04020004, 0x8c00050a,
+       0x02020000, 0x00102310, 0x4803c857, 0x8c000504,
+       0x04020004, 0x59c408a3, 0x84040d7a, 0x480788a3,
+       0x8c000502, 0x04020004, 0x59c408a3, 0x84040d08,
+       0x480788a3, 0x599c0c02, 0x8c000500, 0x04020004,
+       0x8c000516, 0x04000012, 0x0401f001, 0x82041480,
+       0x0000007f, 0x02021000, 0x00102310, 0x82041400,
+       0x0010210e, 0x50081000, 0x82081500, 0x000000ff,
+       0x8c000500, 0x04020006, 0x480b5010, 0x42000800,
+       0x00000003, 0x0201f800, 0x00106c78, 0x599c0019,
+       0x8c00050e, 0x0402000b, 0x59a80806, 0x8c040d14,
+       0x04000008, 0x42000800, 0x0010b4e3, 0x50040800,
+       0x82040d00, 0x00000028, 0x02020000, 0x00102310,
+       0x82000500, 0x00000030, 0x04000003, 0x80000108,
+       0x0401f003, 0x42000000, 0x00000002, 0x48039040,
+       0x42000800, 0x00000002, 0x82000400, 0x00103415,
+       0x50001000, 0x0201f800, 0x00106c78, 0x599c0201,
+       0x82000c80, 0x00000100, 0x02001000, 0x00102310,
+       0x82000c80, 0x00000841, 0x02021000, 0x00102310,
+       0x82000500, 0x00000007, 0x02020000, 0x00102310,
+       0x599c0401, 0x80000540, 0x02000000, 0x00102310,
+       0x599c0409, 0x599c0c07, 0x80040c80, 0x02021000,
+       0x00102310, 0x80000040, 0x02000000, 0x00102310,
+       0x599c0209, 0x599c0a07, 0x80040c80, 0x02021000,
+       0x00102310, 0x80000040, 0x02000000, 0x00102310,
+       0x0201f800, 0x001053cd, 0x0201f800, 0x00104cb6,
+       0x599c0201, 0x48035004, 0x0201f800, 0x001012ee,
+       0x599c020a, 0x800001c0, 0x04000003, 0x4803504d,
+       0x0401f003, 0x4a03504d, 0x000000c8, 0x0201f800,
+       0x00103b25, 0x04000004, 0x0201f800, 0x001060df,
+       0x417a5000, 0x836c0580, 0x00000000, 0x04020098,
+       0x599c0003, 0x599c0804, 0x9c0001c0, 0x9c0409c0,
+       0x48035002, 0x48075003, 0x599c1017, 0x8c08151c,
+       0x04000006, 0x599c0005, 0x599c0806, 0x9c0001c0,
+       0x9c0409c0, 0x0401f003, 0x82000500, 0xf0ffffff,
+       0x48035000, 0x48075001, 0x42001000, 0x0010b4eb,
+       0x48001000, 0x48041001, 0x42001000, 0x0010b4f8,
+       0x48001000, 0x48041001, 0x59a80005, 0x8c000514,
+       0x04020015, 0x599c1019, 0x82081500, 0x0000e000,
+       0x82080580, 0x00000000, 0x0402000c, 0x4a035053,
+       0x00000000, 0x42000000, 0x00000001, 0x0201f800,
+       0x0010188c, 0x42000000, 0x00000001, 0x0201f800,
+       0x00101821, 0x0401f02b, 0x82080580, 0x00002000,
+       0x0402000a, 0x4a035053, 0x00000001, 0x41780000,
+       0x0201f800, 0x0010188c, 0x41780000, 0x0201f800,
+       0x00101821, 0x0401f01f, 0x82080580, 0x00004000,
+       0x04020006, 0x4a035053, 0x00000002, 0x4a035049,
+       0x00000001, 0x0401f017, 0x82080580, 0x00006000,
+       0x02020000, 0x00102310, 0x59a80858, 0x82040d80,
+       0x01391077, 0x04020005, 0x59e00813, 0x8c040d00,
+       0x02020000, 0x00102310, 0x4a035053, 0x00000003,
+       0x42000000, 0x00000002, 0x0201f800, 0x0010188c,
+       0x42000000, 0x00000002, 0x0201f800, 0x00101821,
+       0x599c0019, 0x8c000520, 0x0400000d, 0x42000000,
+       0x00000004, 0x42000800, 0x00000040, 0x0201f800,
+       0x00101944, 0x42000000, 0x00000010, 0x42000800,
+       0x000000c0, 0x0201f800, 0x00101944, 0x4a035032,
+       0x0000aaaa, 0x599c1018, 0x82081500, 0x00000030,
+       0x59a8006c, 0x80000540, 0x0400000c, 0x82080580,
+       0x00000000, 0x02000000, 0x00102310, 0x599c1018,
+       0x82081500, 0xffffffcf, 0x82081540, 0x00000010,
+       0x480b3818, 0x0401f010, 0x82080d80, 0x00000000,
+       0x04000007, 0x82080d80, 0x00000010, 0x0400000a,
+       0x82080d80, 0x00000020, 0x04020002, 0x48075032,
+       0x0201f800, 0x00103aba, 0x04000008, 0x0201f800,
+       0x001015fe, 0x0201f800, 0x0010162a, 0x59a8002a,
+       0x80040540, 0x4803502a, 0x49f3c857, 0x42001000,
+       0x00105065, 0x0201f800, 0x00105f90, 0x42001000,
+       0x00105058, 0x0201f800, 0x00106084, 0x4a038805,
+       0xffffffff, 0x4a03c014, 0x00400040, 0x4a03c013,
+       0x00400000, 0x0201f800, 0x001048c7, 0x59a0001d,
+       0x84000540, 0x4803401d, 0x49f3c857, 0x0201f000,
+       0x001022c0, 0x00000018, 0x0000000c, 0x00000018,
+       0x00000020, 0x836c0580, 0x00000000, 0x04020005,
+       0x42000800, 0x00000007, 0x0201f000, 0x0010230c,
+       0x42000800, 0x00000020, 0x59a00407, 0x59a01207,
+       0x900811c0, 0x80081540, 0x59a00409, 0x59a01a09,
+       0x900c19c0, 0x800c1d40, 0x419c0000, 0x0201f000,
+       0x00103a28, 0x800409c0, 0x04000005, 0x4a034406,
+       0x00000001, 0x0201f000, 0x0010230c, 0x0201f800,
+       0x0010513b, 0x04020005, 0x4a034406, 0x00000016,
+       0x0201f000, 0x0010230c, 0x59a80013, 0x8c000500,
+       0x04000011, 0x4a034406, 0x00000000, 0x42000800,
+       0x00000020, 0x59a00407, 0x59a01207, 0x900811c0,
+       0x80081540, 0x59a00409, 0x59a01a09, 0x900c19c0,
+       0x800c1d40, 0x42000000, 0x0010be21, 0x0201f000,
+       0x00103a28, 0x4a034406, 0x00000001, 0x4200b000,
+       0x00000020, 0x4200a800, 0x0010be21, 0x4200a000,
+       0xffffffff, 0x4450a800, 0x8054a800, 0x8058b040,
+       0x040207fd, 0x4d440000, 0x4d340000, 0x42028800,
+       0xffffffff, 0x42002000, 0xffffffff, 0x42003000,
+       0x00000001, 0x42003800, 0x00000001, 0x42001800,
+       0x0010be21, 0x59a81010, 0x82081500, 0x000000ff,
+       0x40180000, 0x0c01f001, 0x0010346e, 0x00103471,
+       0x00103475, 0x00103479, 0x82102500, 0xffffff00,
+       0x0401f014, 0x82102500, 0xffff00ff, 0x840811c0,
+       0x0401f010, 0x82102500, 0xff00ffff, 0x900811c0,
+       0x0401f00c, 0x82102500, 0x00ffffff, 0x9c0801c0,
+       0x80102540, 0x44101800, 0x42003000, 0xffffffff,
+       0x42002000, 0xffffffff, 0x800c1800, 0x0401f003,
+       0x40080000, 0x80102540, 0x81468800, 0x83442c80,
+       0x0000007f, 0x04021014, 0x4c080000, 0x4c0c0000,
+       0x4c180000, 0x4c1c0000, 0x0201f800, 0x00020245,
+       0x5c003800, 0x5c003000, 0x5c001800, 0x5c001000,
+       0x040207f2, 0x0201f800, 0x001049f3, 0x040207ef,
+       0x80183000, 0x801c3800, 0x59341202, 0x40180000,
+       0x0c01f7ce, 0x82100580, 0xffffffff, 0x04000002,
+       0x44101800, 0x42001800, 0x0010be21, 0x500c0000,
+       0x82000500, 0xffffff00, 0x801c0540, 0x44001800,
+       0x5c026800, 0x5c028800, 0x42000800, 0x00000020,
+       0x59a00407, 0x59a01207, 0x900811c0, 0x80081540,
+       0x59a00409, 0x59a01a09, 0x900c19c0, 0x800c1d40,
+       0x42000000, 0x0010be21, 0x0201f000, 0x00103a28,
+       0x59a28c06, 0x59a0020b, 0x8c000500, 0x0400000e,
+       0x59a01208, 0x59a00408, 0x82000500, 0x000000ff,
+       0x900001c0, 0x80081540, 0x41784000, 0x0201f800,
+       0x00104919, 0x04000008, 0x48034406, 0x0201f000,
+       0x00102310, 0x0201f800, 0x00020245, 0x02020000,
+       0x00102310, 0x0201f800, 0x00103a00, 0x04020005,
+       0x4a034406, 0x00000002, 0x0201f000, 0x0010230c,
+       0x59a0020b, 0x8c000500, 0x04000005, 0x0201f800,
+       0x001049f3, 0x02020000, 0x00103ac4, 0x59a0020b,
+       0x8c000502, 0x04000019, 0x83440480, 0x000007f0,
+       0x04021016, 0x0201f800, 0x001049fc, 0x04020013,
+       0x497a5a04, 0x4a025c04, 0x00008000, 0x0201f800,
+       0x001090e6, 0x04020005, 0x4a034406, 0x00000003,
+       0x0201f000, 0x0010230c, 0x4a01d809, 0x001034f1,
+       0x1c01f000, 0x59a28c06, 0x0201f800, 0x00020245,
+       0x02020000, 0x00102310, 0x4200b000, 0x0000000a,
+       0x4134a000, 0x832e5c00, 0x00000002, 0x412ca800,
+       0x0201f800, 0x0010ab17, 0x832cac00, 0x00000006,
+       0x4054a000, 0x4200b000, 0x00000004, 0x0201f800,
+       0x0010ab28, 0x592c0802, 0x82040500, 0x00ff00ff,
+       0x900001c0, 0x82041500, 0xff00ff00, 0x80080540,
+       0x48025802, 0x592c0801, 0x82040500, 0x00ff00ff,
+       0x900001c0, 0x82041500, 0xff00ff00, 0x80080540,
+       0x48025801, 0x42000800, 0x0000000a, 0x59a00407,
+       0x59a01207, 0x900811c0, 0x80081540, 0x59a00409,
+       0x59a01a09, 0x900c19c0, 0x800c1d40, 0x412c0000,
+       0x0201f000, 0x00103a28, 0x496fc857, 0x496f4406,
+       0x0201f000, 0x001022c0, 0x59a28c06, 0x0201f800,
+       0x00020245, 0x02020000, 0x00102310, 0x836c0580,
+       0x00000003, 0x04000005, 0x4a034406, 0x00000007,
+       0x0201f000, 0x0010230c, 0x83340c00, 0x00000006,
+       0x59a0020b, 0x8c000500, 0x04000003, 0x83340c00,
+       0x00000008, 0x58040001, 0x48034409, 0x900001c0,
+       0x48034209, 0x50040000, 0x48034407, 0x900001c0,
+       0x48034207, 0x59340200, 0x48034406, 0x0201f000,
+       0x001022c0, 0x800409c0, 0x04000005, 0x4a034406,
+       0x00000001, 0x0201f000, 0x0010230c, 0x59a0220b,
+       0x8c102500, 0x0402002e, 0x8c102506, 0x04020006,
+       0x59a03208, 0x82180480, 0x00000003, 0x02021000,
+       0x00102310, 0x59a28c06, 0x0201f800, 0x00020245,
+       0x02020000, 0x00102310, 0x0201f800, 0x001049e7,
+       0x04000005, 0x4a034406, 0x00000009, 0x0201f000,
+       0x0010230c, 0x0201f800, 0x00103a00, 0x04020005,
+       0x4a034406, 0x00000002, 0x0201f000, 0x0010230c,
+       0x59a0220b, 0x8c102506, 0x04000004, 0x59343002,
+       0x82183500, 0x00ffffff, 0x497a5a04, 0x4a025c04,
+       0x00008000, 0x0201f800, 0x001090a8, 0x04020005,
+       0x4a034406, 0x00000003, 0x0201f000, 0x0010230c,
+       0x4a01d809, 0x001035d1, 0x1c01f000, 0x59a28c06,
+       0x0201f800, 0x00020245, 0x02020000, 0x00102310,
+       0x0201f800, 0x001049e7, 0x04000005, 0x4a034406,
+       0x00000009, 0x0201f000, 0x0010230c, 0x0201f800,
+       0x00103a00, 0x04020005, 0x4a034406, 0x00000002,
+       0x0201f000, 0x0010230c, 0x497a5a04, 0x4a025c04,
+       0x00008000, 0x0201f800, 0x00103a00, 0x04020005,
+       0x4a034406, 0x00000002, 0x0201f000, 0x0010230c,
+       0x592e5800, 0x0201f800, 0x001090bd, 0x04020005,
+       0x4a034406, 0x00000003, 0x0201f000, 0x0010230c,
+       0x4a01d809, 0x001035a3, 0x1c01f000, 0x592c2805,
+       0x82140d80, 0x01000000, 0x04020005, 0x4a034406,
+       0x00000004, 0x0201f000, 0x0010230c, 0x42000800,
+       0x00000008, 0x59a00207, 0x59a01407, 0x900001c0,
+       0x80081540, 0x59a00209, 0x59a01c09, 0x900001c0,
+       0x800c1d40, 0x832c0400, 0x00000005, 0x0201f800,
+       0x00103a28, 0x8c142d00, 0x04000003, 0x4a01d809,
+       0x001035be, 0x1c01f000, 0x4031d800, 0x58ef400b,
+       0x58ee580e, 0x58ec0002, 0x82000580, 0x00000200,
+       0x02000000, 0x00102304, 0x812e59c0, 0x02000800,
+       0x001005d8, 0x42000800, 0x00000008, 0x832c0400,
+       0x00000005, 0x58ec1007, 0x58ec1808, 0x0201f000,
+       0x00103a28, 0x592c0005, 0x82000580, 0x01000000,
+       0x04020005, 0x4a034406, 0x00000004, 0x0201f000,
+       0x0010230c, 0x59a00207, 0x59a01407, 0x900001c0,
+       0x80081540, 0x59a00209, 0x59a01c09, 0x900001c0,
+       0x800c1d40, 0x42000800, 0x00000006, 0x832c0400,
+       0x00000006, 0x0201f000, 0x00103a28, 0x59a00a0a,
+       0x800409c0, 0x02000000, 0x00102310, 0x82040480,
+       0x000000e7, 0x04001003, 0x42000800, 0x000000e6,
+       0x59a00207, 0x59a01407, 0x900001c0, 0x80081540,
+       0x59a00209, 0x59a01c09, 0x900001c0, 0x800c1d40,
+       0x83880400, 0x00000000, 0x0201f800, 0x00103a28,
+       0x4a01d809, 0x001035ff, 0x1c01f000, 0x4031d800,
+       0x58ef400b, 0x58ec0002, 0x82000580, 0x00000200,
+       0x02000000, 0x00102304, 0x58ef400b, 0x59a0020b,
+       0x8c000500, 0x04000008, 0x83880400, 0x00000000,
+       0x4803c840, 0x4a03c842, 0x00000006, 0x04011000,
+       0x497b8885, 0x4a034207, 0x000000e6, 0x0201f000,
+       0x001022c0, 0x800409c0, 0x04000005, 0x4a034406,
+       0x00000001, 0x0201f000, 0x0010230c, 0x0401fbe5,
+       0x04020005, 0x4a034406, 0x00000002, 0x0201f000,
+       0x0010230c, 0x497a5a04, 0x4a025c04, 0x00008000,
+       0x59a00406, 0x800001c0, 0x02000000, 0x00102310,
+       0x82001580, 0x000000ff, 0x04000005, 0x82001480,
+       0x00000004, 0x02021000, 0x00102310, 0x40001000,
+       0x0201f800, 0x00101fbf, 0x04020005, 0x4a034406,
+       0x00000003, 0x0201f000, 0x0010230c, 0x4a01d809,
+       0x0010363a, 0x1c01f000, 0x592c0005, 0x82000580,
+       0x01000000, 0x02020000, 0x001022c0, 0x4a034406,
+       0x00000004, 0x0201f000, 0x0010230c, 0x59a01406,
+       0x8c081508, 0x04020007, 0x800409c0, 0x04000005,
+       0x4a034406, 0x00000001, 0x0201f000, 0x0010230c,
+       0x59a01c07, 0x820c0480, 0x00001000, 0x02021000,
+       0x00102310, 0x497b2804, 0x497b2805, 0x497b281c,
+       0x497b281d, 0x497b281f, 0x497b2820, 0x497b2822,
+       0x497b2823, 0x80000580, 0x0201f800, 0x001015fe,
+       0x59a80805, 0x8c081500, 0x04000004, 0x82040d40,
+       0x00000011, 0x0401f004, 0x8c081506, 0x04000002,
+       0x84040d42, 0x84040d0a, 0x48075005, 0x4202d800,
+       0x00000001, 0x82081500, 0x000000e0, 0x8008010a,
+       0x0c020036, 0x0201f800, 0x0010513b, 0x04020009,
+       0x4a035033, 0x00000001, 0x0201f800, 0x001050a2,
+       0x0401f01f, 0x4a035033, 0x00000000, 0x0401f7fb,
+       0x497b5032, 0x0201f800, 0x00104142, 0x0201f800,
+       0x00106c55, 0x0201f800, 0x00106ede, 0x0201f800,
+       0x00106c4b, 0x59a00a07, 0x480788a7, 0x59c400a3,
+       0x82000500, 0xfeffffff, 0x82000540, 0x80018000,
+       0x40000800, 0x84040d20, 0x480388a3, 0x480788a3,
+       0x497b504e, 0x42000800, 0x0000002d, 0x42001000,
+       0x001041bc, 0x0201f800, 0x00105f69, 0x59a00407,
+       0x800000c2, 0x800008c4, 0x8005d400, 0x42000000,
+       0x0000ffff, 0x0201f800, 0x0010513b, 0x04000003,
+       0x59a00207, 0x80000110, 0x0201f800, 0x00103afc,
+       0x0201f000, 0x001022c0, 0x0010366d, 0x00103670,
+       0x00103678, 0x00102310, 0x00103675, 0x00102310,
+       0x00102310, 0x00102310, 0x836c0580, 0x00000003,
+       0x04000005, 0x4a034406, 0x00000007, 0x0201f000,
+       0x0010230c, 0x59a03c06, 0x59a00407, 0x59a04a07,
+       0x902449c0, 0x80244d40, 0x59a00409, 0x59a05209,
+       0x902851c0, 0x80285540, 0x0401fb46, 0x04020005,
+       0x4a034406, 0x00000002, 0x0201f000, 0x0010230c,
+       0x417a8800, 0x41783000, 0x497b4001, 0x497b4004,
+       0x832c4400, 0x00000005, 0x48234002, 0x8c1c3d04,
+       0x04020078, 0x0201f800, 0x00020245, 0x0402002a,
+       0x0201f800, 0x001049e7, 0x04000004, 0x0201f800,
+       0x001048e3, 0x04020024, 0x8c1c3d00, 0x04000008,
+       0x59340009, 0x44004000, 0x59340008, 0x80204000,
+       0x44004000, 0x80204000, 0x0401f007, 0x59340007,
+       0x44004000, 0x59340006, 0x80204000, 0x44004000,
+       0x80204000, 0x83440580, 0x000007fe, 0x0400000d,
+       0x83440580, 0x000007fc, 0x0400000a, 0x0201f800,
+       0x001049f3, 0x04000003, 0x85468d5e, 0x0401f005,
+       0x0201f800, 0x00104838, 0x04020002, 0x85468d5e,
+       0x45444000, 0x85468d1e, 0x80204000, 0x82183400,
+       0x00000003, 0x81468800, 0x83440480, 0x000007f0,
+       0x0400100e, 0x8c1c3d06, 0x04000010, 0x83440580,
+       0x000007f0, 0x04020004, 0x42028800, 0x000007fe,
+       0x0401f006, 0x83440580, 0x000007ff, 0x04020007,
+       0x42028800, 0x000007fc, 0x82180580, 0x0000000f,
+       0x0400000b, 0x0401f7c0, 0x801831c0, 0x04020006,
+       0x59a00801, 0x800408c4, 0x48074406, 0x0201f000,
+       0x001022c0, 0x4a034004, 0x00000001, 0x49474000,
+       0x59a00001, 0x80180400, 0x48034001, 0x481f4003,
+       0x4a01d801, 0x00000000, 0x4819d804, 0x59a00002,
+       0x4801d803, 0x4825d807, 0x4829d808, 0x4000a800,
+       0x4000a000, 0x4018b000, 0x0201f800, 0x0010ab17,
+       0x40ec1000, 0x0201f800, 0x00100858, 0x4a01d809,
+       0x0010372a, 0x1c01f000, 0x4031d800, 0x58ef400b,
+       0x58ec0002, 0x82000580, 0x00000200, 0x02000000,
+       0x00102304, 0x59a00004, 0x80000540, 0x04020008,
+       0x59a28800, 0x59a04002, 0x59a03803, 0x41783000,
+       0x58ec4807, 0x58ec5008, 0x0401f78f, 0x59a00801,
+       0x800408c4, 0x48074406, 0x0201f000, 0x001022c0,
+       0x0201f800, 0x00020245, 0x0402002f, 0x0201f800,
+       0x001049e7, 0x04000004, 0x0201f800, 0x001048e3,
+       0x04020029, 0x83440580, 0x000007fe, 0x04000011,
+       0x83440580, 0x000007fc, 0x0400000e, 0x0201f800,
+       0x001049f3, 0x04000005, 0x59340403, 0x8400055e,
+       0x48026c03, 0x0401f007, 0x0201f800, 0x00104838,
+       0x04020004, 0x59340403, 0x8400055e, 0x48026c03,
+       0x4134a000, 0x4020a800, 0x4200b000, 0x00000006,
+       0x0201f800, 0x0010ab17, 0x59340007, 0x4400a800,
+       0x59340006, 0x4800a801, 0x59340009, 0x4800a802,
+       0x59340008, 0x4800a803, 0x59340403, 0x8400051e,
+       0x48026c03, 0x82204400, 0x0000000a, 0x82183400,
+       0x0000000a, 0x81468800, 0x83440480, 0x000007f0,
+       0x0400100e, 0x8c1c3d06, 0x04000010, 0x83440580,
+       0x000007f0, 0x04020004, 0x42028800, 0x000007fe,
+       0x0401f006, 0x83440580, 0x000007ff, 0x04020007,
+       0x42028800, 0x000007fc, 0x82180580, 0x0000000a,
+       0x0400000b, 0x0401f7bb, 0x801831c0, 0x04020006,
+       0x59a00801, 0x800408c4, 0x48074406, 0x0201f000,
+       0x001022c0, 0x4a034004, 0x00000001, 0x49474000,
+       0x59a00001, 0x80180400, 0x48034001, 0x481f4003,
+       0x4a01d801, 0x00000000, 0x4819d804, 0x59a00002,
+       0x4801d803, 0x4825d807, 0x4829d808, 0x40ec1000,
+       0x0201f800, 0x00100858, 0x4a01d809, 0x001037a1,
+       0x1c01f000, 0x4031d800, 0x58ef400b, 0x58ec0002,
+       0x82000580, 0x00000200, 0x02000000, 0x00102304,
+       0x59a00004, 0x80000540, 0x04020008, 0x59a28800,
+       0x59a04002, 0x59a03803, 0x41783000, 0x58ec4807,
+       0x58ec5008, 0x0401f78f, 0x59a00801, 0x800408c4,
+       0x48074406, 0x0201f000, 0x001022c0, 0x42002800,
+       0x0000007e, 0x59a00c06, 0x59a01207, 0x59a01c07,
+       0x59a02209, 0x82040500, 0x0000ff00, 0x840001c0,
+       0x82003480, 0x00000020, 0x02001000, 0x00102310,
+       0x80140480, 0x02001000, 0x00102310, 0x82040500,
+       0x000000ff, 0x82003480, 0x00000020, 0x02001000,
+       0x00102310, 0x80140480, 0x02001000, 0x00102310,
+       0x82080500, 0x0000ff00, 0x840001c0, 0x82003480,
+       0x00000020, 0x02001000, 0x00102310, 0x80140480,
+       0x02001000, 0x00102310, 0x82080500, 0x000000ff,
+       0x82003480, 0x00000020, 0x02001000, 0x00102310,
+       0x80140480, 0x02001000, 0x00102310, 0x820c0500,
+       0x0000ff00, 0x840001c0, 0x82003480, 0x00000020,
+       0x02001000, 0x00102310, 0x80140480, 0x02001000,
+       0x00102310, 0x820c0500, 0x000000ff, 0x82003480,
+       0x00000020, 0x02001000, 0x00102310, 0x80140480,
+       0x02001000, 0x00102310, 0x82100500, 0x0000ff00,
+       0x840001c0, 0x82003480, 0x00000020, 0x02001000,
+       0x00102310, 0x80140480, 0x02001000, 0x00102310,
+       0x82100500, 0x000000ff, 0x82003480, 0x00000020,
+       0x02001000, 0x00102310, 0x80140480, 0x02001000,
+       0x00102310, 0x900401c0, 0x80080d40, 0x900c01c0,
+       0x80101d40, 0x83a83400, 0x0000003a, 0x44043000,
+       0x80183000, 0x440c3000, 0x0201f000, 0x001022c0,
+       0x0401f9ec, 0x04020005, 0x4a034406, 0x00000002,
+       0x0201f000, 0x0010230c, 0x42000800, 0x0000000c,
+       0x0401f853, 0x4a01d809, 0x00103820, 0x1c01f000,
+       0x4031d800, 0x58ee580d, 0x58ef400b, 0x58ec0002,
+       0x82000580, 0x00000200, 0x02000000, 0x00102304,
+       0x832ca400, 0x00000004, 0x4200b000, 0x0000000c,
+       0x40c8a800, 0x0201f800, 0x0010ab17, 0x58c80200,
+       0x80000540, 0x04000034, 0x58c80400, 0x82000500,
+       0xfffffffb, 0x04020030, 0x58c80401, 0x80000540,
+       0x0400002d, 0x82000480, 0x0000ff01, 0x0402102a,
+       0x58c80202, 0x82000480, 0x0000005c, 0x04001026,
+       0x0201f800, 0x001063a3, 0x58c80c08, 0x58c80204,
+       0x80040480, 0x04001020, 0x58c80204, 0x82000480,
+       0x00000005, 0x0402101c, 0x58c80205, 0x58c80c08,
+       0x80040902, 0x80040480, 0x04001017, 0x58c80c08,
+       0x0201f800, 0x001062f1, 0x0400001b, 0x0201f800,
+       0x001061b9, 0x04020012, 0x4979940b, 0x59c408a3,
+       0x82040d40, 0x00000002, 0x480788a3, 0x4a038830,
+       0x00000001, 0x4a038832, 0x01ffffff, 0x58c80202,
+       0x48030804, 0x0201f800, 0x0010619b, 0x0201f000,
+       0x001022c0, 0x0201f000, 0x00102310, 0x0201f800,
+       0x001063f5, 0x0201f800, 0x00106402, 0x0201f800,
+       0x001062e4, 0x0201f000, 0x0010230c, 0x4c000000,
+       0x59a01207, 0x59a00407, 0x900811c0, 0x80081540,
+       0x59a01a09, 0x59a00409, 0x900c19c0, 0x800c1d40,
+       0x5c000000, 0x0401f1ac, 0x59840000, 0x82000580,
+       0x00000000, 0x04000054, 0x59840002, 0x8c000504,
+       0x04000051, 0x84000546, 0x48030802, 0x0201f800,
+       0x001062e4, 0x59c408a3, 0x82040d00, 0xfffffffd,
+       0x480788a3, 0x4c5c0000, 0x4200b800, 0x0010ac00,
+       0x505e6800, 0x813669c0, 0x04000008, 0x5936600e,
+       0x813261c0, 0x04000005, 0x0201f800, 0x001062d5,
+       0x02000800, 0x001064ad, 0x805cb800, 0x825c0580,
+       0x0010b3f0, 0x040207f3, 0x59866003, 0x813261c0,
+       0x0400000b, 0x59300406, 0x82000580, 0x00000009,
+       0x02020800, 0x001005d8, 0x5930b800, 0x0201f800,
+       0x001062c1, 0x405e6000, 0x0401f7f5, 0x497b0803,
+       0x4200b800, 0x0010b51b, 0x505e6000, 0x813261c0,
+       0x04000011, 0x59300406, 0x82000580, 0x00000009,
+       0x0402000d, 0x59300203, 0x82000580, 0x00000004,
+       0x04020009, 0x59326809, 0x813669c0, 0x02020800,
+       0x001005d8, 0x0201f800, 0x00100e99, 0x0201f800,
+       0x001062c1, 0x4578b800, 0x805cb800, 0x825c0580,
+       0x0010b523, 0x040207e9, 0x42000800, 0x0010b519,
+       0x49780801, 0x49780800, 0x59a80069, 0x82000400,
+       0x00000007, 0x48035069, 0x0201f800, 0x001063f5,
+       0x0201f800, 0x00106402, 0x5c00b800, 0x0201f800,
+       0x001061b4, 0x0201f000, 0x001022c0, 0x836c0580,
+       0x00000003, 0x04000005, 0x4a034406, 0x00000007,
+       0x0201f000, 0x0010230c, 0x59a00407, 0x59a02207,
+       0x901021c0, 0x80102540, 0x59a00409, 0x59a02a09,
+       0x901429c0, 0x80142d40, 0x0401f91e, 0x04020005,
+       0x4a034406, 0x00000002, 0x0201f000, 0x0010230c,
+       0x417a8800, 0x41781800, 0x497b4001, 0x497b4003,
+       0x832c3400, 0x00000004, 0x481b4002, 0x41440000,
+       0x81ac0400, 0x50026800, 0x813669c0, 0x0400000b,
+       0x0201f800, 0x001049e7, 0x04020008, 0x59340002,
+       0x48003000, 0x49443001, 0x82183400, 0x00000002,
+       0x820c1c00, 0x00000002, 0x81468800, 0x83440480,
+       0x00000800, 0x04000005, 0x820c0480, 0x00000010,
+       0x0402100b, 0x0401f7ea, 0x800c19c0, 0x04020006,
+       0x59a00801, 0x80040902, 0x48074406, 0x0201f000,
+       0x001022c0, 0x4a034003, 0x00000001, 0x49474000,
+       0x59a00001, 0x800c0400, 0x48034001, 0x40ec1000,
+       0x4a001001, 0x00000000, 0x480c1004, 0x59a00002,
+       0x48001003, 0x48101007, 0x48141008, 0x0201f800,
+       0x00100858, 0x4a01d809, 0x00103920, 0x1c01f000,
+       0x4031d800, 0x58ef400b, 0x58ec0002, 0x82000580,
+       0x00000200, 0x02000000, 0x00102304, 0x59a00003,
+       0x80000540, 0x04020008, 0x59a28800, 0x59a03002,
+       0x41781800, 0x40ec1000, 0x58082007, 0x58082808,
+       0x0401f7bf, 0x59a00801, 0x80040902, 0x48074406,
+       0x0201f000, 0x001022c0, 0x800409c0, 0x04000005,
+       0x4a034406, 0x00000001, 0x0201f000, 0x0010230c,
+       0x59a80026, 0x8c00050a, 0x04020007, 0x8c000506,
+       0x04020005, 0x4a034406, 0x00000016, 0x0201f000,
+       0x0010230c, 0x0401f8bb, 0x04020005, 0x4a034406,
+       0x00000002, 0x0201f000, 0x0010230c, 0x59a00c06,
+       0x80040902, 0x59a00407, 0x59a01207, 0x900811c0,
+       0x80081540, 0x59a00409, 0x59a01a09, 0x900c19c0,
+       0x800c1d40, 0x832c0400, 0x00000005, 0x0401f8ce,
+       0x4a01d809, 0x0010395b, 0x1c01f000, 0x4031d800,
+       0x58ef400b, 0x58ee580d, 0x58ec0002, 0x82000580,
+       0x00000200, 0x02000000, 0x00102304, 0x592c0009,
+       0x0201f800, 0x00105c9a, 0x02000800, 0x001045a6,
+       0x02020000, 0x00102310, 0x49474001, 0x481a6802,
+       0x592c000a, 0x82001d80, 0x70000000, 0x04020007,
+       0x0401f890, 0x04020011, 0x4a034406, 0x00000002,
+       0x0201f000, 0x0010230c, 0x82001d80, 0x72000000,
+       0x02020000, 0x00102310, 0x0401f886, 0x04020885,
+       0x04020884, 0x04020005, 0x4a034406, 0x00000002,
+       0x0201f000, 0x0010230c, 0x58ee580d, 0x4a025c04,
+       0x00008000, 0x497a5a04, 0x592c3208, 0x80183102,
+       0x592c1801, 0x4a001805, 0x01000000, 0x0201f800,
+       0x001090d1, 0x04020005, 0x4a034406, 0x00000003,
+       0x0201f000, 0x0010230c, 0x4a01d809, 0x00103995,
+       0x1c01f000, 0x592c4000, 0x592c0005, 0x82000580,
+       0x01000000, 0x04020005, 0x4a034406, 0x00000004,
+       0x0201f000, 0x0010230c, 0x832c3c00, 0x00000005,
+       0x401ca000, 0x401ca800, 0x5820280a, 0x4200b000,
+       0x00000002, 0x82143580, 0x70000000, 0x04000003,
+       0x4200b000, 0x0000000f, 0x0201f800, 0x0010ab28,
+       0x401c0000, 0x58201006, 0x58201807, 0x58202205,
+       0x80102102, 0x82143580, 0x70000000, 0x04020008,
+       0x82103480, 0x00000002, 0x02001000, 0x00102310,
+       0x42000800, 0x00000002, 0x0401f06e, 0x82143580,
+       0x72000000, 0x02020000, 0x00102310, 0x82103480,
+       0x0000002a, 0x02001000, 0x00102310, 0x42000800,
+       0x0000000f, 0x0401f863, 0x4a01d809, 0x001039c9,
+       0x1c01f000, 0x4031d800, 0x58ef400b, 0x58ee580e,
+       0x58ec0002, 0x82000580, 0x00000200, 0x02000000,
+       0x00102304, 0x592e5800, 0x832c0c00, 0x00000005,
+       0x4004a000, 0x4004a800, 0x4200b000, 0x0000000f,
+       0x0201f800, 0x0010ab28, 0x40ec1000, 0x4a001001,
+       0x00000000, 0x4a001004, 0x0000000f, 0x48041003,
+       0x0201f800, 0x00100858, 0x4a01d809, 0x001039e5,
+       0x1c01f000, 0x4031d800, 0x58ef400b, 0x58ee580e,
+       0x58ec0002, 0x82000580, 0x00000200, 0x02000000,
+       0x00102304, 0x832c0c00, 0x00000005, 0x4004a000,
+       0x4004a800, 0x4200b000, 0x0000000c, 0x0201f800,
+       0x0010ab28, 0x40ec1000, 0x4a001001, 0x00000000,
+       0x4a001004, 0x0000000c, 0x48041003, 0x0201f800,
+       0x00100858, 0x4a01d809, 0x001022b9, 0x1c01f000,
+       0x0201f800, 0x001007e4, 0x04000010, 0x497a5800,
+       0x58ec000d, 0x80000540, 0x04020004, 0x492dd80d,
+       0x492dd80e, 0x0401f007, 0x58ec000e, 0x48025800,
+       0x82000400, 0x00000001, 0x452c0000, 0x492dd80e,
+       0x832c0400, 0x00000004, 0x492fc857, 0x4803c857,
+       0x1c01f000, 0x4d2c0000, 0x48efc857, 0x58ec400d,
+       0x4823c857, 0x802041c0, 0x04000007, 0x40225800,
+       0x592c4001, 0x497a5801, 0x0201f800, 0x001007f4,
+       0x0401f7f8, 0x4979d80d, 0x4979d80e, 0x5c025800,
+       0x1c01f000, 0x42003000, 0x00000001, 0x0401f003,
+       0x42003000, 0x00000000, 0x4803c857, 0x4807c857,
+       0x480bc857, 0x480fc857, 0x481bc857, 0x48efc857,
+       0x4819d801, 0x800409c0, 0x02000800, 0x001005d8,
+       0x4805d804, 0x4801d803, 0x4809d807, 0x480dd808,
+       0x40ec1000, 0x0201f800, 0x00100858, 0x4a01d809,
+       0x001022b9, 0x1c01f000, 0x80002d80, 0x480bc857,
+       0x480fc857, 0x4813c857, 0x4817c857, 0x4d2c0000,
+       0x4da00000, 0x42034000, 0x0010b4a4, 0x59a00017,
+       0x800001c0, 0x04020013, 0x04006012, 0x480bc020,
+       0x480fc021, 0x4813c022, 0x4817c023, 0x900811c0,
+       0x82081540, 0x00000012, 0x480bc011, 0x59e00017,
+       0x8c000508, 0x04020004, 0x4203e000, 0x30000001,
+       0x0401f053, 0x4a03c017, 0x00000002, 0x0401f7fb,
+       0x4c040000, 0x4c1c0000, 0x80000800, 0x48074017,
+       0x59a0381a, 0x481fc857, 0x801c39c0, 0x04020027,
+       0x82000480, 0x0000000a, 0x04021010, 0x59a00018,
+       0x80000000, 0x48034018, 0x59a00219, 0x82000400,
+       0x00000002, 0x82000c80, 0x00000013, 0x48034219,
+       0x04001003, 0x497b4219, 0x41780000, 0x59a03816,
+       0x801c3c00, 0x0401f030, 0x4803c856, 0x0201f800,
+       0x001007e4, 0x04000007, 0x492f401a, 0x492f401b,
+       0x412c3800, 0x497b421c, 0x497a5813, 0x0401f026,
+       0x59880051, 0x80000000, 0x48031051, 0x59a00017,
+       0x80000040, 0x48034017, 0x59a00219, 0x59a03816,
+       0x801c3c00, 0x0401f01c, 0x59a0021c, 0x82000400,
+       0x00000002, 0x82000c80, 0x00000012, 0x04021004,
+       0x4803421c, 0x801c3c00, 0x0401f013, 0x0201f800,
+       0x001007e4, 0x0402000b, 0x59880051, 0x80000000,
+       0x48031051, 0x59a00017, 0x80000040, 0x48034017,
+       0x4803c856, 0x59a0021c, 0x801c3c00, 0x0401f006,
+       0x492f401a, 0x492c3813, 0x412c3800, 0x497b421c,
+       0x497a5813, 0x48083c00, 0x480c3a00, 0x48103c01,
+       0x48143a01, 0x5c003800, 0x5c000800, 0x5c034000,
+       0x5c025800, 0x1c01f000, 0x480fc857, 0x4813c857,
+       0x481bc857, 0x42000000, 0x0010b813, 0x0201f800,
+       0x0010aa47, 0x801800d0, 0x40002800, 0x42001000,
+       0x00008014, 0x0401f786, 0x4c000000, 0x599c0017,
+       0x8c000512, 0x5c000000, 0x1c01f000, 0x4c000000,
+       0x599c0018, 0x8c00050e, 0x5c000000, 0x1c01f000,
+       0x59a80821, 0x800409c0, 0x04000005, 0x4a034406,
+       0x00000001, 0x0201f000, 0x0010230c, 0x836c0580,
+       0x00000003, 0x04000005, 0x4a034406, 0x00000007,
+       0x0201f000, 0x0010230c, 0x599c0017, 0x8c00050a,
+       0x04000005, 0x4a034406, 0x00000008, 0x0201f000,
+       0x0010230c, 0x59340405, 0x8c000508, 0x04020004,
+       0x8c00050a, 0x02020000, 0x001034db, 0x497a5a04,
+       0x497a5805, 0x4a025c04, 0x00008000, 0x0201f800,
+       0x00109176, 0x04020005, 0x4a034406, 0x00000003,
+       0x0201f000, 0x0010230c, 0x4a01d809, 0x00103aed,
+       0x1c01f000, 0x592c0005, 0x82000580, 0x01000000,
+       0x04020005, 0x4a034406, 0x00000004, 0x0201f000,
+       0x0010230c, 0x59a28c06, 0x0201f800, 0x00020245,
+       0x02020000, 0x00102310, 0x0201f000, 0x001034db,
+       0x82001580, 0x0000ffff, 0x04000009, 0x0201f800,
+       0x00105c9a, 0x02000800, 0x00020245, 0x0402000c,
+       0x0201f800, 0x00105fae, 0x0401f009, 0x42028800,
+       0x000007ef, 0x0201f800, 0x00020245, 0x02000800,
+       0x00105fae, 0x81468840, 0x040217fb, 0x1c01f000,
+       0x4803c856, 0x4c0c0000, 0x4d340000, 0x4d440000,
+       0x42028800, 0x000007fe, 0x0201f800, 0x00020245,
+       0x04020009, 0x5934180a, 0x820c1d00, 0x00000001,
+       0x820c1d80, 0x00000001, 0x42001000, 0x0000801b,
+       0x0401ff1e, 0x5c028800, 0x5c026800, 0x5c001800,
+       0x1c01f000, 0x599c0017, 0x8c000508, 0x1c01f000,
+       0x48efc857, 0x04011000, 0x48efc840, 0x4a03c842,
+       0x00000011, 0x40000000, 0x040117ff, 0x4a01d80f,
+       0xbeefbeef, 0x1c01f000, 0x497b4000, 0x497b4001,
+       0x497b4002, 0x497b4003, 0x497b4004, 0x1c01f000,
+       0x59c400a4, 0x4c580000, 0x4c500000, 0x4c540000,
+       0x82000500, 0x0000000f, 0x82000480, 0x00000007,
+       0x0400100a, 0x82006c80, 0x00000006, 0x02021800,
+       0x001005d8, 0x0c01f807, 0x5c00a800, 0x5c00a000,
+       0x5c00b000, 0x1c01f000, 0x0401f906, 0x0401f7fb,
+       0x00103b51, 0x00103b57, 0x00103b7c, 0x00103b9e,
+       0x00103c59, 0x59c40806, 0x8c040d00, 0x04020003,
+       0x84040d40, 0x48078806, 0x1c01f000, 0x59c40005,
+       0x8c000534, 0x02020000, 0x0010429e, 0x4a038805,
+       0xffffffff, 0x42006000, 0x00020000, 0x0201f800,
+       0x00104282, 0x59a80015, 0x82000500, 0xfffffffa,
+       0x84000542, 0x48035015, 0x497b5026, 0x42000800,
+       0x0010be21, 0x45780800, 0x497b5013, 0x42006000,
+       0xffefffff, 0x42006800, 0x40000000, 0x0201f800,
+       0x0010427d, 0x59c40006, 0x82000500, 0xffffff0f,
+       0x48038806, 0x42000800, 0x00000010, 0x42001000,
+       0x001041f3, 0x0201f800, 0x00105f83, 0x0401f001,
+       0x42006000, 0xffffffff, 0x42006800, 0x00800000,
+       0x0201f800, 0x0010427d, 0x4200b000, 0x000000c8,
+       0x59c400a4, 0x82000500, 0x0000000f, 0x82000580,
+       0x0000000a, 0x0400000f, 0x8058b040, 0x040207f9,
+       0x497b5014, 0x42006000, 0xbf7fffff, 0x42006800,
+       0x00018000, 0x0201f800, 0x0010427d, 0x42006000,
+       0xfffeffff, 0x41786800, 0x0201f000, 0x0010427d,
+       0x497b5014, 0x4a035012, 0x00000000, 0x80000580,
+       0x0201f000, 0x00104289, 0x4a038805, 0xffffffff,
+       0x59a80012, 0x82000c80, 0x00000004, 0x02021800,
+       0x001005d8, 0x0c01f001, 0x00103ba9, 0x00103bd6,
+       0x00103c4f, 0x4803c856, 0x59c400a3, 0x8400051e,
+       0x480388a3, 0x4a035012, 0x00000001, 0x59c40008,
+       0x8400054e, 0x48038808, 0x0201f800, 0x00104263,
+       0x42007800, 0x0010b54c, 0x4a007806, 0x11010000,
+       0x4200a000, 0x0010b402, 0x4200a800, 0x0010b553,
+       0x4200b000, 0x00000002, 0x0201f800, 0x0010ab17,
+       0x497b8802, 0x42000800, 0x00000003, 0x497b504a,
+       0x0201f800, 0x0010416e, 0x4a03504a, 0x00000001,
+       0x497b5016, 0x0201f800, 0x00104290, 0x42006000,
+       0xffffffff, 0x42006800, 0x00080000, 0x0201f800,
+       0x0010427d, 0x42006000, 0xfff7ffff, 0x41786800,
+       0x0201f000, 0x0010427d, 0x59a80016, 0x497b5016,
+       0x80002540, 0x04000066, 0x59c40004, 0x82000500,
+       0x00000003, 0x04020071, 0x59a80815, 0x8c040d02,
+       0x0400004b, 0x82100580, 0x0000000c, 0x0402004f,
+       0x82100400, 0x00000018, 0x8000b104, 0x41cc1000,
+       0x42001800, 0x0010b54c, 0x50080800, 0x500c0000,
+       0x80040580, 0x0402001a, 0x80081000, 0x800c1800,
+       0x8058b040, 0x040207f9, 0x0201f800, 0x00104290,
+       0x42006000, 0xffffffff, 0x42006800, 0x00500000,
+       0x0201f800, 0x0010427d, 0x4a035012, 0x00000002,
+       0x4a035014, 0x00000002, 0x42000800, 0x000007d0,
+       0x42001000, 0x00104148, 0x0201f800, 0x0010606e,
+       0x0201f800, 0x00104263, 0x0401f048, 0x59cc0806,
+       0x82040d80, 0x11010000, 0x04020028, 0x59cc0800,
+       0x82040500, 0x00ffffff, 0x0400001a, 0x82000580,
+       0x000000ef, 0x04020017, 0x59cc0801, 0x82040500,
+       0x00ffffff, 0x82000580, 0x000000ef, 0x04020011,
+       0x83cca400, 0x00000007, 0x4200a800, 0x0010b402,
+       0x4200b000, 0x00000002, 0x50500800, 0x50540000,
+       0x80040480, 0x04001007, 0x04020010, 0x8050a000,
+       0x8054a800, 0x8058b040, 0x040207f8, 0x0401f00b,
+       0x59a80015, 0x84000502, 0x48035015, 0x41cca000,
+       0x4200a800, 0x0010b54c, 0x4200b000, 0x00000009,
+       0x0201f800, 0x0010ab17, 0x0201f800, 0x00104290,
+       0x42006000, 0xffffffff, 0x42006800, 0x00080000,
+       0x0201f800, 0x0010427d, 0x42006000, 0xfff7ffff,
+       0x41786800, 0x0201f800, 0x0010427d, 0x42006000,
+       0xffffffff, 0x42006800, 0x00004000, 0x0201f800,
+       0x0010427d, 0x59c40004, 0x82000500, 0x00000003,
+       0x04020006, 0x497b5016, 0x42000800, 0x00000003,
+       0x0201f000, 0x0010416e, 0x1c01f000, 0x1c01f000,
+       0x59a80014, 0x82006d80, 0x0000000f, 0x04000005,
+       0x82000580, 0x0000001b, 0x02020800, 0x00104139,
+       0x1c01f000, 0x59a80015, 0x84000506, 0x48035015,
+       0x497b504a, 0x59a80014, 0x82000c80, 0x0000001e,
+       0x02021800, 0x001005d8, 0x0c01f001, 0x00103c97,
+       0x00103cac, 0x00103cd5, 0x00103cf0, 0x00103d14,
+       0x00103d45, 0x00103d68, 0x00103d9b, 0x00103dbe,
+       0x00103de4, 0x00103e21, 0x00103e48, 0x00103e5f,
+       0x00103e71, 0x00103e8a, 0x00103ea0, 0x00103ea5,
+       0x00103ecd, 0x00103ef0, 0x00103f16, 0x00103f39,
+       0x00103f6c, 0x00103fae, 0x00103fd8, 0x00103ff0,
+       0x00104030, 0x00104049, 0x0010405c, 0x0010405d,
+       0x4803c856, 0x4202d800, 0x00000007, 0x0201f800,
+       0x0010513b, 0x04000007, 0x42006000, 0xffffffd7,
+       0x41786800, 0x0201f800, 0x0010427d, 0x0401f00b,
+       0x59c40006, 0x82000500, 0xffffff0f, 0x48038806,
+       0x42001000, 0x000000f0, 0x0201f800, 0x0010193d,
+       0x0201f800, 0x00105098, 0x1c01f000, 0x4803c856,
+       0x42006000, 0xbf7fffff, 0x42006800, 0x00400000,
+       0x0201f800, 0x0010427d, 0x4a035014, 0x00000001,
+       0x42001000, 0x001041f3, 0x0201f800, 0x00105fa4,
+       0x0201f800, 0x001041f8, 0x42000800, 0x000007d0,
+       0x42001000, 0x00104148, 0x0201f000, 0x0010606e,
+       0x59a80016, 0x82000580, 0x00000014, 0x04020025,
+       0x4803c857, 0x42006000, 0xffbfffff, 0x41786800,
+       0x0201f800, 0x0010427d, 0x59c40004, 0x82000500,
+       0x00000003, 0x0402001b, 0x59cc1006, 0x82081580,
+       0x11020000, 0x04020016, 0x59cc1007, 0x8c08153e,
+       0x0400000b, 0x59a80015, 0x8c000504, 0x04020008,
+       0x42000000, 0x0010b83f, 0x0201f800, 0x0010aa47,
+       0x59a80015, 0x84000544, 0x48035015, 0x42001000,
+       0x00104148, 0x0201f800, 0x00105f90, 0x4a035014,
+       0x00000010, 0x0401f9d4, 0x0401f002, 0x497b5016,
+       0x1c01f000, 0x4803c856, 0x4a035014, 0x00000003,
+       0x42006000, 0xbf3fffff, 0x42006800, 0x00100000,
+       0x0201f800, 0x0010427d, 0x42001000, 0x001041f3,
+       0x0201f800, 0x00105fa4, 0x0201f800, 0x001041f8,
+       0x42001000, 0x00104148, 0x0201f800, 0x00105f90,
+       0x42007800, 0x0010b552, 0x46007800, 0x11020000,
+       0x42000800, 0x00000005, 0x0201f000, 0x0010416e,
+       0x59a80016, 0x80000540, 0x04000021, 0x4803c857,
+       0x42001000, 0x00104148, 0x0201f800, 0x00105f90,
+       0x59a80016, 0x82000580, 0x00000014, 0x04020016,
+       0x59cc1006, 0x82081580, 0x11020000, 0x04020012,
+       0x59cc1007, 0x8c08153e, 0x0400000b, 0x59a80015,
+       0x8c000504, 0x04020008, 0x42000000, 0x0010b83f,
+       0x0201f800, 0x0010aa47, 0x59a80015, 0x84000544,
+       0x48035015, 0x4a035014, 0x00000004, 0x0401f805,
+       0x0401f003, 0x0201f800, 0x00104139, 0x1c01f000,
+       0x4803c856, 0x4a035014, 0x00000005, 0x83cca400,
+       0x00000006, 0x4200a800, 0x0010b552, 0x4200b000,
+       0x00000005, 0x0201f800, 0x0010ab17, 0x42007800,
+       0x0010b552, 0x46007800, 0x11030000, 0x0201f800,
+       0x0010413e, 0x04020014, 0x59a80015, 0x8c000500,
+       0x04020011, 0x59a80810, 0x82040580, 0x00ffffff,
+       0x0400000d, 0x82040d00, 0x000000ff, 0x82040400,
+       0x0010210e, 0x50000800, 0x80040910, 0x42001000,
+       0x00000004, 0x0401fb9b, 0x0400000b, 0x0201f800,
+       0x0010420d, 0x4200b000, 0x00000004, 0x83cca400,
+       0x00000007, 0x4200a800, 0x0010b553, 0x0201f800,
+       0x0010ab17, 0x42000800, 0x00000005, 0x0201f000,
+       0x0010416e, 0x59a80016, 0x80000540, 0x04000020,
+       0x4803c857, 0x42001000, 0x00104148, 0x0201f800,
+       0x00105f90, 0x59a80016, 0x82000580, 0x00000014,
+       0x04020016, 0x59cc1006, 0x82081580, 0x11030000,
+       0x04020012, 0x59cc1007, 0x8c08153e, 0x0400000b,
+       0x59a80015, 0x8c000504, 0x04020008, 0x42000000,
+       0x0010b83f, 0x0201f800, 0x0010aa47, 0x59a80015,
+       0x84000544, 0x48035015, 0x4a035014, 0x00000006,
+       0x0401f804, 0x0401f002, 0x0401fbd3, 0x1c01f000,
+       0x4803c856, 0x4a035014, 0x00000007, 0x83cca400,
+       0x00000006, 0x4200a800, 0x0010b552, 0x4200b000,
+       0x00000005, 0x0201f800, 0x0010ab17, 0x42007800,
+       0x0010b552, 0x46007800, 0x11040000, 0x0401fbc7,
+       0x04020020, 0x59a80015, 0x8c000500, 0x0402001d,
+       0x599c0017, 0x8c000500, 0x0400001a, 0x599c1402,
+       0x82080480, 0x0000007f, 0x02021800, 0x001005d8,
+       0x4c080000, 0x82081400, 0x0010210e, 0x50081000,
+       0x82081500, 0x000000ff, 0x480b5010, 0x42000800,
+       0x00000003, 0x0201f800, 0x00106c78, 0x5c000800,
+       0x42001000, 0x00000004, 0x0401fb3e, 0x04000005,
+       0x0401fd2b, 0x04000003, 0x0201f800, 0x001015fe,
+       0x42000800, 0x00000005, 0x0401f3d4, 0x59a80016,
+       0x80000540, 0x04000020, 0x4803c857, 0x42001000,
+       0x00104148, 0x0201f800, 0x00105f90, 0x59a80016,
+       0x82000580, 0x00000014, 0x04020016, 0x59cc1006,
+       0x82081580, 0x11040000, 0x04020012, 0x59cc1007,
+       0x8c08153e, 0x0400000b, 0x59a80015, 0x8c000504,
+       0x04020008, 0x42000000, 0x0010b83f, 0x0201f800,
+       0x0010aa47, 0x59a80015, 0x84000544, 0x48035015,
+       0x4a035014, 0x00000008, 0x0401f804, 0x0401f002,
+       0x0401fb7d, 0x1c01f000, 0x4803c856, 0x4a035014,
+       0x00000009, 0x83cca400, 0x00000006, 0x4200a800,
+       0x0010b552, 0x4200b000, 0x00000005, 0x0201f800,
+       0x0010ab17, 0x42007800, 0x0010b552, 0x46007800,
+       0x11050100, 0x0401fb71, 0x0402000a, 0x59a80015,
+       0x8c000500, 0x04020007, 0x0401fa8c, 0x04020005,
+       0x82000540, 0x00000001, 0x0201f800, 0x001015fe,
+       0x42000800, 0x00000005, 0x0401fb94, 0x0401fb63,
+       0x04020ea4, 0x4d3c0000, 0x42027800, 0x00000001,
+       0x0201f800, 0x00109874, 0x5c027800, 0x1c01f000,
+       0x59a80016, 0x80000540, 0x0400003a, 0x4803c857,
+       0x42001000, 0x00104148, 0x0201f800, 0x00105f90,
+       0x59a80016, 0x82000580, 0x00000014, 0x04020030,
+       0x59cc1006, 0x82080500, 0x11050000, 0x82000580,
+       0x11050000, 0x0402002a, 0x8c081510, 0x04000014,
+       0x59cc1007, 0x8c08153e, 0x0400000b, 0x59a80015,
+       0x8c000504, 0x04020008, 0x42000000, 0x0010b83f,
+       0x0201f800, 0x0010aa47, 0x59a80015, 0x84000544,
+       0x48035015, 0x4a035013, 0x00000001, 0x4a035014,
+       0x0000000a, 0x0401f818, 0x0401f016, 0x80000540,
+       0x04020013, 0x59cc1007, 0x8c08153e, 0x0400000b,
+       0x59a80015, 0x8c000504, 0x04020008, 0x42000000,
+       0x0010b83f, 0x0201f800, 0x0010aa47, 0x59a80015,
+       0x84000544, 0x48035015, 0x497b5013, 0x4a035014,
+       0x0000000e, 0x0401f86d, 0x0401f002, 0x0401fb1a,
+       0x1c01f000, 0x4803c856, 0x4a035014, 0x0000000b,
+       0x42001000, 0x0010b553, 0x4008a800, 0x4200b000,
+       0x00000020, 0x4600a800, 0xffffffff, 0x8054a800,
+       0x8058b040, 0x040207fc, 0x42007800, 0x0010b552,
+       0x46007800, 0x11060000, 0x42001000, 0x0010b553,
+       0x0401fb0a, 0x04000005, 0x50080000, 0x46001000,
+       0x00ffffff, 0x0401f00c, 0x50080800, 0x82040d00,
+       0x0000ffff, 0x59a80010, 0x82000500, 0x000000ff,
+       0x82000540, 0x00000100, 0x800000e0, 0x80040d40,
+       0x44041000, 0x42000800, 0x00000021, 0x0401f327,
+       0x59a80016, 0x80000540, 0x04000014, 0x4803c857,
+       0x59a80016, 0x42001000, 0x00104148, 0x0201f800,
+       0x00105f90, 0x59a80016, 0x82000580, 0x00000084,
+       0x04020009, 0x59cc1006, 0x82081580, 0x11060000,
+       0x04020005, 0x4a035014, 0x0000000c, 0x0401f804,
+       0x0401f002, 0x0401fadc, 0x1c01f000, 0x4803c856,
+       0x4a035014, 0x0000000d, 0x83cca400, 0x00000006,
+       0x4200a800, 0x0010b552, 0x4200b000, 0x00000021,
+       0x0201f800, 0x0010ab17, 0x42007800, 0x0010b552,
+       0x46007800, 0x11070000, 0x42000800, 0x00000021,
+       0x0401f2fe, 0x59a80016, 0x80000540, 0x04000016,
+       0x4803c857, 0x59a80016, 0x42001000, 0x00104148,
+       0x0201f800, 0x00105f90, 0x82000580, 0x00000084,
+       0x0402000c, 0x59cc1006, 0x82081580, 0x11070000,
+       0x04020008, 0x4a035013, 0x00000001, 0x0401fa91,
+       0x4a035014, 0x0000000e, 0x0401f804, 0x0401f002,
+       0x0401fab1, 0x1c01f000, 0x4803c856, 0x82040d40,
+       0x00000001, 0x0401fbfc, 0x4a035014, 0x0000000f,
+       0x497b5016, 0x42006000, 0xffffffff, 0x42006800,
+       0x00300000, 0x0401fbe8, 0x42006000, 0xffdfffff,
+       0x41786800, 0x0401fbe4, 0x42000800, 0x000007d0,
+       0x42001000, 0x00104148, 0x0201f000, 0x00105f69,
+       0x4803c856, 0x59a80016, 0x80000540, 0x04020296,
+       0x1c01f000, 0x4803c856, 0x4a035014, 0x00000011,
+       0x83cca400, 0x00000006, 0x4200a800, 0x0010b552,
+       0x4200b000, 0x00000005, 0x0201f800, 0x0010ab17,
+       0x4200a800, 0x0010b552, 0x4600a800, 0x11020000,
+       0x0401fa8a, 0x04020015, 0x59a80010, 0x82000d00,
+       0xffff0000, 0x04000011, 0x82000500, 0x000000ff,
+       0x0400000e, 0x82000c00, 0x0010210e, 0x50040800,
+       0x80040910, 0x82040580, 0x0000007e, 0x04000007,
+       0x82040580, 0x00000080, 0x04000004, 0x42001000,
+       0x00000004, 0x0401fa07, 0x42000800, 0x00000005,
+       0x0401f2a2, 0x59a80016, 0x80000540, 0x04000020,
+       0x4803c857, 0x42001000, 0x00104148, 0x0201f800,
+       0x00105f90, 0x59a80016, 0x82000580, 0x00000014,
+       0x04020016, 0x59cc1006, 0x82081580, 0x11030000,
+       0x04020012, 0x59cc1007, 0x8c08153e, 0x0400000b,
+       0x59a80015, 0x8c000504, 0x04020008, 0x42000000,
+       0x0010b83f, 0x0201f800, 0x0010aa47, 0x59a80015,
+       0x84000544, 0x48035015, 0x4a035014, 0x00000012,
+       0x0401f804, 0x0401f002, 0x0401fa4b, 0x1c01f000,
+       0x4803c856, 0x4a035014, 0x00000013, 0x83cca400,
+       0x00000006, 0x4200a800, 0x0010b552, 0x4200b000,
+       0x00000005, 0x0201f800, 0x0010ab17, 0x4200a800,
+       0x0010b552, 0x4600a800, 0x11030000, 0x0401fa3f,
+       0x04020013, 0x59a80015, 0x8c000500, 0x04020010,
+       0x59a80810, 0x82040580, 0x00ffffff, 0x0400000c,
+       0x82040d00, 0x000000ff, 0x82040400, 0x0010210e,
+       0x50000800, 0x80040910, 0x42001000, 0x00000004,
+       0x0401f9c0, 0x04000002, 0x0401fafb, 0x42000800,
+       0x00000005, 0x0401f259, 0x59a80016, 0x80000540,
+       0x04000020, 0x4803c857, 0x42001000, 0x00104148,
+       0x0201f800, 0x00105f90, 0x59a80016, 0x82000580,
+       0x00000014, 0x04020016, 0x59cc1006, 0x82081580,
+       0x11040000, 0x04020012, 0x59cc1007, 0x8c08153e,
+       0x0400000b, 0x59a80015, 0x8c000504, 0x04020008,
+       0x42000000, 0x0010b83f, 0x0201f800, 0x0010aa47,
+       0x59a80015, 0x84000544, 0x48035015, 0x4a035014,
+       0x00000014, 0x0401f804, 0x0401f002, 0x0401fa02,
+       0x1c01f000, 0x4803c856, 0x4a035014, 0x00000015,
+       0x83cca400, 0x00000006, 0x4200a800, 0x0010b552,
+       0x4200b000, 0x00000005, 0x0201f800, 0x0010ab17,
+       0x4200a800, 0x0010b552, 0x4600a800, 0x11040000,
+       0x0401f9f6, 0x04020020, 0x59a80015, 0x8c000500,
+       0x0402001d, 0x599c0017, 0x8c000500, 0x0400001a,
+       0x599c1402, 0x82080480, 0x0000007f, 0x02021800,
+       0x001005d8, 0x4c080000, 0x82081400, 0x0010210e,
+       0x50081000, 0x82081500, 0x000000ff, 0x480b5010,
+       0x42000800, 0x00000003, 0x0201f800, 0x00106c78,
+       0x5c000800, 0x42001000, 0x00000004, 0x0401f96d,
+       0x04000005, 0x0201f800, 0x00103abf, 0x02020800,
+       0x001015fe, 0x42000800, 0x00000005, 0x0401f203,
+       0x59a80016, 0x80000540, 0x0400003f, 0x4803c857,
+       0x42001000, 0x00104148, 0x0201f800, 0x00105f90,
+       0x59a80016, 0x82000580, 0x00000014, 0x04020035,
+       0x59cc1006, 0x82080500, 0x11050000, 0x82000580,
+       0x11050000, 0x0402002f, 0x8c081510, 0x04000010,
+       0x0401fb09, 0x59cc1007, 0x8c08153e, 0x0400000b,
+       0x59a80015, 0x8c000504, 0x04020008, 0x42000000,
+       0x0010b83f, 0x0201f800, 0x0010aa47, 0x59a80015,
+       0x84000544, 0x48035015, 0x0401f013, 0x59cc1007,
+       0x8c08153e, 0x0400000b, 0x59a80015, 0x8c000504,
+       0x04020008, 0x42000000, 0x0010b83f, 0x0201f800,
+       0x0010aa47, 0x59a80015, 0x84000544, 0x48035015,
+       0x82000540, 0x00000001, 0x0401faeb, 0x497b5013,
+       0x0401f003, 0x4a035013, 0x00000001, 0x59cc1007,
+       0x8c08153c, 0x04000003, 0x4a035026, 0x00000008,
+       0x4a035014, 0x00000016, 0x0401f804, 0x0401f002,
+       0x0401f98d, 0x1c01f000, 0x4803c856, 0x83cca400,
+       0x00000006, 0x4200a800, 0x0010b552, 0x4200b000,
+       0x00000005, 0x0201f800, 0x0010ab17, 0x4a035014,
+       0x00000017, 0x59a80013, 0x8c000500, 0x04000006,
+       0x42001000, 0x0010b552, 0x46001000, 0x11050100,
+       0x0401f003, 0x4a035014, 0x0000001b, 0x0401f97b,
+       0x0402000a, 0x59a80015, 0x8c000500, 0x04020007,
+       0x0401f896, 0x04020005, 0x82000540, 0x00000001,
+       0x0201f800, 0x001015fe, 0x42000800, 0x00000005,
+       0x0401f99e, 0x4d3c0000, 0x42027800, 0x00000001,
+       0x0201f800, 0x00109874, 0x5c027800, 0x1c01f000,
+       0x59a80016, 0x80000540, 0x04000015, 0x4803c857,
+       0x42001000, 0x00104148, 0x0201f800, 0x00105f90,
+       0x59a80016, 0x82000580, 0x00000084, 0x0402000b,
+       0x59cc1006, 0x82081580, 0x11060000, 0x04020007,
+       0x80000580, 0x0401faa0, 0x4a035014, 0x00000018,
+       0x0401f804, 0x0401f002, 0x0401f94b, 0x1c01f000,
+       0x4803c856, 0x4a035014, 0x00000019, 0x83cca400,
+       0x00000006, 0x4200a800, 0x0010b552, 0x4200b000,
+       0x00000021, 0x0201f800, 0x0010ab17, 0x42003800,
+       0x0010b553, 0x0401f941, 0x04020018, 0x401c2800,
+       0x50141000, 0x80080130, 0x80000000, 0x40001800,
+       0x82081500, 0x00ffffff, 0x800000f0, 0x80080540,
+       0x44002800, 0x59a80810, 0x82040d00, 0x000000ff,
+       0x400c1000, 0x80081104, 0x82082400, 0x0010b553,
+       0x50101000, 0x820c0500, 0x00000003, 0x0c01f806,
+       0x80081540, 0x44082000, 0x42000800, 0x00000021,
+       0x0401f156, 0x0010401d, 0x00104022, 0x00104027,
+       0x0010402c, 0x800408f0, 0x40040000, 0x82081500,
+       0x00ffffff, 0x1c01f000, 0x800408e0, 0x40040000,
+       0x82081500, 0xff00ffff, 0x1c01f000, 0x800408d0,
+       0x40040000, 0x82081500, 0xffff00ff, 0x1c01f000,
+       0x40040000, 0x82081500, 0xffffff00, 0x1c01f000,
+       0x59a80016, 0x80000540, 0x04000016, 0x4803c857,
+       0x42001000, 0x00104148, 0x0201f800, 0x00105f90,
+       0x59a80016, 0x82000580, 0x00000084, 0x0402000c,
+       0x59cc1006, 0x82081580, 0x11070000, 0x04020008,
+       0x4a035013, 0x00000001, 0x0401f8d2, 0x4a035014,
+       0x0000001a, 0x0401f804, 0x0401f002, 0x0401f8f2,
+       0x1c01f000, 0x82000540, 0x00000001, 0x0401fa3e,
+       0x4a035014, 0x0000001b, 0x83cca400, 0x00000006,
+       0x4200a800, 0x0010b552, 0x59a82016, 0x40100000,
+       0x8000b104, 0x40580800, 0x5450a800, 0x8050a000,
+       0x8054a800, 0x8058b040, 0x040207fc, 0x0401f113,
+       0x1c01f000, 0x1c01f000, 0x4803c856, 0x42003000,
+       0x00000004, 0x42004000, 0x0010b553, 0x599c2817,
+       0x8c142d14, 0x0402001f, 0x42001000, 0x00000003,
+       0x40200000, 0x80080400, 0x50000800, 0x82042580,
+       0xffffffff, 0x04020005, 0x80081040, 0x80183040,
+       0x040207f8, 0x0401f05e, 0x800811c0, 0x04020006,
+       0x82042580, 0x3fffffff, 0x04000058, 0x82040d40,
+       0xc0000000, 0x4200b000, 0x00000020, 0x42001800,
+       0x00000001, 0x40042000, 0x80102102, 0x04021021,
+       0x800c18c2, 0x8058b040, 0x040207fc, 0x0401f04b,
+       0x41781000, 0x40200000, 0x80080400, 0x50000800,
+       0x82042580, 0xffffffff, 0x04020005, 0x80081000,
+       0x80183040, 0x040207f8, 0x0401f040, 0x800811c0,
+       0x04020003, 0x82040d40, 0xc0000000, 0x4200b000,
+       0x00000001, 0x42001800, 0x80000000, 0x40042000,
+       0x801020c2, 0x04021007, 0x800c1902, 0x8058b000,
+       0x82580480, 0x00000021, 0x040017fa, 0x0401f02f,
+       0x40200000, 0x80082400, 0x50100000, 0x800c0540,
+       0x44002000, 0x59a80015, 0x84000540, 0x48035015,
+       0x40580000, 0x42002800, 0x00000020, 0x80142c80,
+       0x40080000, 0x42003800, 0x00000003, 0x801c0480,
+       0x800000ca, 0x80142d40, 0x82144c00, 0x0010210e,
+       0x50242800, 0x82142d00, 0x000000ff, 0x48175010,
+       0x4c040000, 0x40140800, 0x0201f800, 0x001015eb,
+       0x5c000800, 0x40001800, 0x500c0000, 0x80100540,
+       0x44001800, 0x59a80015, 0x84000540, 0x48035015,
+       0x4200a800, 0x0010b553, 0x4020a000, 0x4200b000,
+       0x00000004, 0x0201f800, 0x0010ab17, 0x82000540,
+       0x00000001, 0x0401f002, 0x80000580, 0x1c01f000,
+       0x4807c857, 0x480bc857, 0x4008b000, 0x83cca400,
+       0x00000007, 0x4200a800, 0x0010b553, 0x40541000,
+       0x0201f800, 0x0010ab17, 0x40041800, 0x41782000,
+       0x42000000, 0x00000003, 0x820c1c80, 0x00000020,
+       0x04001004, 0x80102000, 0x80000040, 0x0401f7fb,
+       0x40041800, 0x801021c0, 0x04000005, 0x820c1c80,
+       0x00000020, 0x80102040, 0x040207fd, 0x42002000,
+       0x00000001, 0x800c19c0, 0x04000004, 0x801020c2,
+       0x800c1840, 0x040207fe, 0x80083c00, 0x83cc2c00,
+       0x00000007, 0x80142c00, 0x50140000, 0x80102d00,
+       0x04020012, 0x80100540, 0x44003800, 0x82042400,
+       0x0010210e, 0x50102800, 0x82142d00, 0x000000ff,
+       0x48175010, 0x4c040000, 0x40140800, 0x0201f800,
+       0x001015eb, 0x5c000800, 0x59a80015, 0x84000540,
+       0x48035015, 0x80000580, 0x1c01f000, 0x4807c856,
+       0x42001000, 0x00008017, 0x59a8184e, 0x0201f800,
+       0x0010aa4f, 0x0201f800, 0x00103a3e, 0x1c01f000,
+       0x4807c856, 0x4200b000, 0x00000020, 0x83cca400,
+       0x00000007, 0x4200a800, 0x0010be21, 0x0201f000,
+       0x0010ab28, 0x4807c856, 0x0201f800, 0x00106ede,
+       0x42000800, 0x000000f7, 0x0401f8de, 0x497b2804,
+       0x497b2805, 0x497b281c, 0x497b281d, 0x4202d800,
+       0x00000001, 0x42006000, 0xbf7fffff, 0x42006800,
+       0x00018000, 0x0401f950, 0x42006000, 0xfffeffff,
+       0x41786800, 0x0401f94c, 0x497b504e, 0x42000800,
+       0x0000002d, 0x42001000, 0x001041bc, 0x0201f000,
+       0x00105f69, 0x4807c856, 0x0401ffe3, 0x497b5014,
+       0x497b5016, 0x1c01f000, 0x4807c856, 0x59a80005,
+       0x8c000506, 0x1c01f000, 0x4807c856, 0x42006000,
+       0xffffffff, 0x42006800, 0x00000028, 0x0401f136,
+       0x4807c856, 0x0401ffc2, 0x0201f800, 0x00106c55,
+       0x4df00000, 0x0201f800, 0x00106e21, 0x5c03e000,
+       0x02000800, 0x00106c4b, 0x59c400a4, 0x82000500,
+       0x0000000f, 0x82000580, 0x00000002, 0x0402000a,
+       0x42006000, 0xffffffff, 0x42006800, 0x00200000,
+       0x0401f921, 0x42006000, 0xffdfffff, 0x41786800,
+       0x0401f91d, 0x497b5014, 0x42000800, 0x000000f7,
+       0x0401f89c, 0x59c400a3, 0x82000500, 0xbf20bfff,
+       0x82000540, 0x0001c000, 0x480388a3, 0x84000520,
+       0x480388a3, 0x1c01f000, 0x497b5016, 0x59b400f5,
+       0x8c000500, 0x04020004, 0x82000540, 0x00000001,
+       0x480368f5, 0x800400c4, 0x82000400, 0x00002000,
+       0x4803910a, 0x59b400f6, 0x82000500, 0x00000018,
+       0x040207fd, 0x4a0368f0, 0x0010b54b, 0x42000000,
+       0x0010b552, 0x480368f1, 0x82040400, 0x0000dc00,
+       0x480368f3, 0x59c400a4, 0x82000500, 0x0000000f,
+       0x82000580, 0x00000008, 0x04020017, 0x4c5c0000,
+       0x4c600000, 0x59c4b805, 0x8c5cbd3a, 0x04020005,
+       0x42000000, 0x0010b818, 0x0201f800, 0x0010aa47,
+       0x4a038805, 0x02000000, 0x0201f800, 0x001019fe,
+       0x4000c000, 0x0201f800, 0x00101963, 0x4202d800,
+       0x00000001, 0x497b5014, 0x5c00c000, 0x5c00b800,
+       0x1c01f000, 0x59c8010b, 0x8c000502, 0x040007e2,
+       0x59c408a4, 0x82040d00, 0x0000000f, 0x82040d80,
+       0x0000000b, 0x04020005, 0x59a80814, 0x82040d40,
+       0x00002000, 0x0401f004, 0x59a80812, 0x82040d40,
+       0x00001000, 0x4807504e, 0x59a8084a, 0x800409c0,
+       0x04020007, 0x42000800, 0x000007d0, 0x42001000,
+       0x00104148, 0x0201f800, 0x0010606e, 0x1c01f000,
+       0x4807c856, 0x0401ff4e, 0x0201f800, 0x00106c55,
+       0x4df00000, 0x0201f800, 0x00106e21, 0x5c03e000,
+       0x02000800, 0x00106c4b, 0x59c400a4, 0x82000500,
+       0x0000000f, 0x82000580, 0x00000002, 0x0402000a,
+       0x42006000, 0xffffffff, 0x42006800, 0x00200000,
+       0x0401f8ad, 0x42006000, 0xffdfffff, 0x41786800,
+       0x0401f8a9, 0x0201f800, 0x00105141, 0x04000014,
+       0x0201f800, 0x00105151, 0x04020011, 0x4a035032,
+       0x0000aaaa, 0x4c040000, 0x0201f800, 0x0010162a,
+       0x59a8002a, 0x82000500, 0xffff0000, 0x80040540,
+       0x4803502a, 0x5c000800, 0x4a035033, 0x00000000,
+       0x0201f800, 0x001050a2, 0x0401f008, 0x4a03504c,
+       0x00000005, 0x42000000, 0x00000001, 0x0201f800,
+       0x00101590, 0x0401ff2c, 0x1c01f000, 0x0401f805,
+       0x42006000, 0xbf7f7fff, 0x41786800, 0x0401f086,
+       0x0201f800, 0x00105151, 0x04020005, 0x59c40006,
+       0x82000540, 0x000000f0, 0x48038806, 0x1c01f000,
+       0x800408d0, 0x59a80015, 0x8c000506, 0x04000006,
+       0x59a80010, 0x82000500, 0x000000ff, 0x80040540,
+       0x0401f003, 0x82040540, 0x000000f7, 0x480388a7,
+       0x1c01f000, 0x4807c856, 0x42000000, 0x0010b83b,
+       0x0201f800, 0x0010aa47, 0x42003000, 0x00000005,
+       0x4d3c0000, 0x4c180000, 0x42003000, 0x0000000d,
+       0x42027800, 0x00000002, 0x0401f038, 0x4807c856,
+       0x42000000, 0x0010b86b, 0x0201f800, 0x0010aa47,
+       0x42003000, 0x00000000, 0x4d3c0000, 0x4c180000,
+       0x42003000, 0x0000000f, 0x42027800, 0x00000002,
+       0x0401f02a, 0x4807c856, 0x42000000, 0x0010b86a,
+       0x0201f800, 0x0010aa47, 0x42003000, 0x00000003,
+       0x4d3c0000, 0x4c180000, 0x42003000, 0x0000000e,
+       0x42027800, 0x00000202, 0x0401f01c, 0x4807c856,
+       0x42000000, 0x0010b869, 0x0201f800, 0x0010aa47,
+       0x42003000, 0x00000004, 0x4d3c0000, 0x4c180000,
+       0x42003000, 0x00000010, 0x42027800, 0x00000202,
+       0x0401f00e, 0x4807c856, 0x42000000, 0x0010b83e,
+       0x0201f800, 0x0010aa47, 0x42003000, 0x00000001,
+       0x4d3c0000, 0x4c180000, 0x42003000, 0x0000000c,
+       0x42027800, 0x00000202, 0x42001800, 0x0000ffff,
+       0x42002000, 0x00000007, 0x0201f800, 0x00103aae,
+       0x5c003000, 0x4d400000, 0x0201f800, 0x0010a95d,
+       0x42028000, 0x0000002a, 0x0201f800, 0x00101fe5,
+       0x5c028000, 0x5c027800, 0x1c01f000, 0x4807c856,
+       0x04011000, 0x4a03c840, 0x0010b54b, 0x4a03c842,
+       0x00000040, 0x40000000, 0x040117ff, 0x42007800,
+       0x0010b54b, 0x46007800, 0x00000011, 0x803c7800,
+       0x4a007800, 0x220000ef, 0x4a007801, 0x000000ef,
+       0x4a007802, 0x01380000, 0x4a007803, 0x00000000,
+       0x4a007804, 0xffffffff, 0x4a007805, 0x00000000,
+       0x1c01f000, 0x59c400a3, 0x80300500, 0x80340540,
+       0x480388a3, 0x1c01f000, 0x4833c857, 0x59c400a3,
+       0x80300540, 0x480388a3, 0x80300580, 0x480388a3,
+       0x1c01f000, 0x4803c856, 0x04000004, 0x4a03504b,
+       0x00000001, 0x0401f002, 0x497b504b, 0x1c01f000,
+       0x4803c856, 0x59c80002, 0x80000540, 0x0400000a,
+       0x80000040, 0x04000008, 0x4a039005, 0x00000140,
+       0x42000000, 0x00000006, 0x80000040, 0x040207ff,
+       0x0401f7f4, 0x1c01f000, 0x4c5c0000, 0x4c600000,
+       0x59c4b805, 0x485fc856, 0x8c5cbd3a, 0x04020005,
+       0x42000000, 0x0010b818, 0x0201f800, 0x0010aa47,
+       0x4a038805, 0x02000000, 0x0201f800, 0x001019fe,
+       0x4000c000, 0x0201f800, 0x00101963, 0x4a038805,
+       0x04000000, 0x5c00c000, 0x5c00b800, 0x1c01f000,
+       0x497a6a00, 0x4937c857, 0x4a026c00, 0x00000707,
+       0x497a6801, 0x497a6808, 0x497a6809, 0x497a6806,
+       0x497a6807, 0x497a6c0b, 0x497a680c, 0x0201f800,
+       0x00103b25, 0x04020006, 0x5934080f, 0x59340010,
+       0x80040540, 0x02020800, 0x001005d8, 0x4a026a04,
+       0x00000100, 0x497a6a03, 0x59340402, 0x82000500,
+       0x000000ff, 0x48026c02, 0x497a6c04, 0x497a6a05,
+       0x497a6c05, 0x497a6811, 0x4d2c0000, 0x5934000d,
+       0x49466c03, 0x80025d40, 0x04000004, 0x0201f800,
+       0x001007fd, 0x497a680d, 0x5c025800, 0x599c0401,
+       0x48026a0b, 0x599c0208, 0x48026c12, 0x497a680a,
+       0x0201f000, 0x00104c62, 0x42000000, 0x00000005,
+       0x80000d80, 0x0401f02d, 0x0201f800, 0x00104a09,
+       0x04020017, 0x59a80026, 0x8c00050a, 0x04020010,
+       0x59340212, 0x82000500, 0x0000ff00, 0x4803c857,
+       0x0400000b, 0x59340a00, 0x8c040d1e, 0x02000000,
+       0x000201c4, 0x42000000, 0x00000029, 0x42000800,
+       0x00001000, 0x492fc857, 0x0401f018, 0x492fc857,
+       0x42000000, 0x00000028, 0x0401f012, 0x59a80805,
+       0x8c040d02, 0x04020003, 0x8c040d00, 0x04000004,
+       0x42000000, 0x00000004, 0x0401f00a, 0x42000000,
+       0x00000029, 0x59340a00, 0x8c040d1e, 0x04000005,
+       0x492fc857, 0x42000800, 0x00001000, 0x0401f003,
+       0x492fc857, 0x80000d80, 0x4803c857, 0x80028540,
+       0x1c01f000, 0x4803c857, 0x59a80005, 0x8c000500,
+       0x040207ec, 0x0201f800, 0x001049e7, 0x040207e4,
+       0x59340200, 0x8c00050e, 0x040007e1, 0x0201f000,
+       0x000201c4, 0x0201f800, 0x001047eb, 0x040007bf,
+       0x0201f000, 0x000201c8, 0x592c0206, 0x492fc857,
+       0x82000d80, 0x000007ff, 0x04020006, 0x4a025c0a,
+       0x00000030, 0x42026800, 0x0010b524, 0x0401f021,
+       0x82000c80, 0x000007f0, 0x04021046, 0x81ac0400,
+       0x50000000, 0x80026d40, 0x04000038, 0x0201f800,
+       0x001048e3, 0x04020038, 0x592c040a, 0x8c00050a,
+       0x04020014, 0x592e6009, 0x83300480, 0x0010d1c0,
+       0x0400103b, 0x41580000, 0x81300480, 0x04021038,
+       0x59300c06, 0x82040580, 0x00000009, 0x04020037,
+       0x4a025a06, 0x00000000, 0x497a5800, 0x59300008,
+       0x80000540, 0x04020018, 0x492e6008, 0x0401f010,
+       0x0201f800, 0x0002075a, 0x04000019, 0x592c0206,
+       0x49366009, 0x492e6008, 0x4a026406, 0x00000009,
+       0x497a6015, 0x49325809, 0x82000d80, 0x000007ff,
+       0x04020003, 0x4a026015, 0x00008000, 0x42027000,
+       0x00000043, 0x0201f800, 0x000207a1, 0x80000580,
+       0x0401f020, 0x40000800, 0x58040000, 0x80000d40,
+       0x040207fd, 0x492c0800, 0x0401f01a, 0x42000000,
+       0x0000002c, 0x0401f016, 0x42000000, 0x00000028,
+       0x0401f013, 0x59a80805, 0x82040500, 0x00000003,
+       0x04000004, 0x42000000, 0x00000004, 0x0401f00c,
+       0x42000000, 0x00000029, 0x0401f009, 0x42000000,
+       0x00000008, 0x0401f006, 0x82040580, 0x00000007,
+       0x040207fb, 0x42000000, 0x00000005, 0x80000540,
+       0x1c01f000, 0x492fc857, 0x592e8c06, 0x83440d80,
+       0x000007fc, 0x04000004, 0x83440480, 0x000007f0,
+       0x04021014, 0x0201f800, 0x00020245, 0x04020011,
+       0x0201f800, 0x001049f3, 0x04020011, 0x0201f800,
+       0x0002075a, 0x0400001c, 0x49366009, 0x492e6008,
+       0x4a026406, 0x0000000a, 0x42027000, 0x00000040,
+       0x0201f800, 0x000207a1, 0x80000580, 0x0401f011,
+       0x42000000, 0x00000028, 0x0401f00d, 0x0201f800,
+       0x00104a09, 0x040007fb, 0x59a80805, 0x82040d00,
+       0x00000003, 0x04000004, 0x42000000, 0x00000004,
+       0x0401f003, 0x42000000, 0x00000029, 0x80000540,
+       0x1c01f000, 0x42000000, 0x0000002c, 0x0401f7fc,
+       0x492fc857, 0x592e8c06, 0x4947c857, 0x83440c80,
+       0x00000800, 0x42000000, 0x0000000a, 0x04021176,
+       0x592c4207, 0x4823c857, 0x82200500, 0x0000000f,
+       0x0c01f001, 0x001043d5, 0x0010445d, 0x001044a9,
+       0x001044b4, 0x001044bf, 0x001043d1, 0x001043d1,
+       0x001043d1, 0x001044cf, 0x00104513, 0x00104530,
+       0x001043d1, 0x001043d1, 0x001043d1, 0x001043d1,
+       0x001043d1, 0x4803c857, 0x42000000, 0x0000000c,
+       0x0401f15d, 0x592c1008, 0x82081500, 0x00ffffff,
+       0x59a80010, 0x80084d80, 0x42000000, 0x00000010,
+       0x04000155, 0x0201f800, 0x00104919, 0x04000036,
+       0x4803c857, 0x82004d80, 0x0000001d, 0x0402001a,
+       0x0201f800, 0x00105755, 0x59340405, 0x4c000000,
+       0x0201f800, 0x001049e7, 0x5c000000, 0x04000004,
+       0x8c20450a, 0x04000028, 0x80000580, 0x44002800,
+       0x59340008, 0x48002802, 0x59340009, 0x48002801,
+       0x59340006, 0x48002804, 0x59340007, 0x48002803,
+       0x4200b000, 0x00000005, 0x0201f800, 0x0010955f,
+       0x0401f166, 0x4803c857, 0x82004d80, 0x0000001a,
+       0x04020003, 0x40101000, 0x0401f136, 0x4803c857,
+       0x82004d80, 0x0000001b, 0x04020003, 0x40181000,
+       0x0401f130, 0x4803c857, 0x82004d80, 0x0000001c,
+       0x04000131, 0x82004d80, 0x00000019, 0x42000000,
+       0x0000000a, 0x04000120, 0x42000000, 0x0000000a,
+       0x04020137, 0x59a80005, 0x8c000514, 0x0400001b,
+       0x0201f800, 0x001049e7, 0x04000018, 0x59340212,
+       0x82000500, 0x0000ff00, 0x42001000, 0x00000010,
+       0x0402000c, 0x42001000, 0x00000008, 0x59a80026,
+       0x8c000506, 0x04020009, 0x59340002, 0x82000500,
+       0x00ff0000, 0x82000580, 0x00ff0000, 0x04000007,
+       0x0201f800, 0x00104c6d, 0x42000000, 0x0000001c,
+       0x40181000, 0x04020107, 0x0201f800, 0x0002075a,
+       0x04000111, 0x49366009, 0x492e6008, 0x4a026406,
+       0x00000001, 0x8c20450a, 0x04000004, 0x592c0404,
+       0x8400055c, 0x48025c04, 0x4c200000, 0x4d3c0000,
+       0x42027800, 0x00001000, 0x0201f800, 0x0010203c,
+       0x5c027800, 0x5c004000, 0x8c204512, 0x0400000b,
+       0x599c0018, 0x8c000518, 0x04000008, 0x592c0009,
+       0x82000500, 0x00000380, 0x5934080a, 0x80040d40,
+       0x84040d54, 0x4806680a, 0x417a7800, 0x0401f914,
+       0x42000800, 0x00000003, 0x0401f91b, 0x42027000,
+       0x00000002, 0x0201f800, 0x000207a1, 0x80000580,
+       0x0401f10a, 0x0201f800, 0x00020245, 0x040200ec,
+       0x0201f800, 0x001049ed, 0x04000008, 0x0201f800,
+       0x001049e7, 0x040200ec, 0x417a7800, 0x417a6000,
+       0x0201f800, 0x001020a1, 0x59a80005, 0x8c000514,
+       0x0400001b, 0x0201f800, 0x001049e7, 0x04000018,
+       0x59340212, 0x82000500, 0x0000ff00, 0x42001000,
+       0x00000010, 0x0402000c, 0x42001000, 0x00000008,
+       0x59a80026, 0x8c000506, 0x04020009, 0x59340002,
+       0x82000500, 0x00ff0000, 0x82000580, 0x00ff0000,
+       0x04000007, 0x0201f800, 0x00104c6d, 0x42000000,
+       0x0000001c, 0x40181000, 0x040200b2, 0x0201f800,
+       0x0002075a, 0x040000bc, 0x5934080a, 0x8c204512,
+       0x0400000c, 0x599c0018, 0x8c000518, 0x04000009,
+       0x592c0009, 0x82000500, 0x00000380, 0x82041500,
+       0xfffffc7f, 0x80080d40, 0x84040d54, 0x0401f002,
+       0x84040d14, 0x4806680a, 0x49366009, 0x492e6008,
+       0x4a026406, 0x00000001, 0x417a7800, 0x0401f8c8,
+       0x42000800, 0x00000005, 0x0401f8cf, 0x42027000,
+       0x00000003, 0x0201f800, 0x000207a1, 0x80000580,
+       0x0401f0be, 0x0201f800, 0x00020245, 0x040200a0,
+       0x0201f800, 0x001049fc, 0x040200a3, 0x0201f800,
+       0x00109517, 0x04000094, 0x80000580, 0x0401f0b3,
+       0x0201f800, 0x00020245, 0x04020095, 0x0201f800,
+       0x001049fc, 0x04020098, 0x0201f800, 0x001090e6,
+       0x04000089, 0x80000580, 0x0401f0a8, 0x0201f800,
+       0x00020245, 0x0402008a, 0x83444d80, 0x000007fe,
+       0x42000000, 0x0000000a, 0x0402006b, 0x0201f800,
+       0x001049e7, 0x04020088, 0x0201f800, 0x0010952f,
+       0x04000079, 0x80000580, 0x0401f098, 0x82200500,
+       0x00000070, 0x04020005, 0x8c20450e, 0x42000000,
+       0x0000000c, 0x0402005c, 0x8c20450a, 0x0400000d,
+       0x4d3c0000, 0x42027800, 0x00001000, 0x8c20450e,
+       0x04020002, 0x853e7d56, 0x82200500, 0x000000a0,
+       0x0201f800, 0x001049d3, 0x5c027800, 0x0401f07f,
+       0x0201f800, 0x00020245, 0x04020065, 0x8c204508,
+       0x04000010, 0x4d3c0000, 0x42027800, 0x00001000,
+       0x8c20450e, 0x04020002, 0x853e7d56, 0x82200500,
+       0x00000090, 0x0201f800, 0x001049bb, 0x5c027800,
+       0x42000000, 0x0000000a, 0x0402003b, 0x0401f06b,
+       0x836c0580, 0x00000003, 0x42000800, 0x00000007,
+       0x0402000f, 0x0201f800, 0x001049f3, 0x04000007,
+       0x4c000000, 0x0201f800, 0x00104a1f, 0x5c000000,
+       0x0400004d, 0x0401f05d, 0x0201f800, 0x001094c5,
+       0x04000007, 0x80000580, 0x0401f05c, 0x0201f800,
+       0x00104a1f, 0x04000051, 0x0401f054, 0x0201f800,
+       0x00104a1f, 0x04000034, 0x0401f050, 0x0201f800,
+       0x00020245, 0x04020036, 0x836c0580, 0x00000003,
+       0x04020040, 0x8c204508, 0x04000006, 0x417a7800,
+       0x417a6000, 0x0201f800, 0x001020a1, 0x0401f043,
+       0x0201f800, 0x001049ed, 0x04000008, 0x0201f800,
+       0x001049e7, 0x0402002c, 0x417a7800, 0x417a6000,
+       0x0201f800, 0x001020a1, 0x480bc856, 0x0201f800,
+       0x00109332, 0x04000018, 0x80000580, 0x0401f037,
+       0x0401f7e3, 0x480bc857, 0x42000800, 0x00000019,
+       0x40001000, 0x4200b000, 0x00000002, 0x0401f00a,
+       0x480bc857, 0x40000800, 0x4200b000, 0x00000002,
+       0x0401f005, 0x480bc857, 0x40000800, 0x4200b000,
+       0x00000001, 0x480bc857, 0x42028000, 0x00000031,
+       0x0401f020, 0x480bc857, 0x42000800, 0x00000003,
+       0x4200b000, 0x00000001, 0x0401f7f7, 0x480bc857,
+       0x42000800, 0x0000000a, 0x4200b000, 0x00000001,
+       0x0401f7f1, 0x480bc857, 0x42000800, 0x00000009,
+       0x40001000, 0x4200b000, 0x00000002, 0x0401f7ea,
+       0x480bc857, 0x42000800, 0x00000007, 0x4200b000,
+       0x00000001, 0x0401f7e4, 0x480bc857, 0x4200b000,
+       0x00000001, 0x0401f7e0, 0x80028580, 0x4178b000,
+       0x82000540, 0x00000001, 0x1c01f000, 0x4937c857,
+       0x59326809, 0x59341200, 0x813e79c0, 0x04000003,
+       0x84081540, 0x0401f002, 0x84081500, 0x480a6a00,
+       0x1c01f000, 0x59326809, 0x5c000000, 0x4c000000,
+       0x4803c857, 0x4937c857, 0x82040580, 0x00000006,
+       0x04020004, 0x42000000, 0x00000606, 0x0401f021,
+       0x82040580, 0x00000004, 0x04020004, 0x42000000,
+       0x00000404, 0x0401f01b, 0x82040580, 0x00000007,
+       0x42000000, 0x00000707, 0x04000016, 0x82040580,
+       0x00000003, 0x42000000, 0x00000703, 0x04000011,
+       0x82040580, 0x00000005, 0x42000000, 0x00000405,
+       0x0400000c, 0x82040580, 0x00000009, 0x42000000,
+       0x00000409, 0x04000007, 0x82040580, 0x0000000b,
+       0x42000000, 0x0000070b, 0x02020800, 0x001005d8,
+       0x4803c857, 0x48026c00, 0x82040d80, 0x00000006,
+       0x04020005, 0x59341404, 0x800811c0, 0x02000800,
+       0x001005d8, 0x1c01f000, 0x5c000000, 0x4c000000,
+       0x4803c857, 0x4947c857, 0x481bc857, 0x83440480,
+       0x00000800, 0x04021034, 0x83441400, 0x0010ac00,
+       0x50080000, 0x80026d40, 0x04020011, 0x4c180000,
+       0x4d2c0000, 0x0201f800, 0x001007d3, 0x412e6800,
+       0x5c025800, 0x5c003000, 0x04000027, 0x45341000,
+       0x497a680d, 0x497a6810, 0x497a680f, 0x497a680e,
+       0x4c180000, 0x0401fcf3, 0x5c003000, 0x59340a12,
+       0x4c040000, 0x0201f800, 0x0010513b, 0x5c000800,
+       0x04000009, 0x82180500, 0x00ffff00, 0x04000008,
+       0x59a81010, 0x82081500, 0x00ffff00, 0x80080580,
+       0x04000003, 0x80000580, 0x0401f004, 0x82180500,
+       0x000000ff, 0x800000d0, 0x80040d80, 0x04000003,
+       0x4803c857, 0x48026a12, 0x59340002, 0x80180580,
+       0x04000003, 0x481bc857, 0x481a6802, 0x80000580,
+       0x1c01f000, 0x4803c856, 0x82000540, 0x00000001,
+       0x0401f7fc, 0x4947c857, 0x83440480, 0x00000800,
+       0x04021011, 0x83441400, 0x0010ac00, 0x50080000,
+       0x80026d40, 0x0400000b, 0x0401fbf9, 0x0402000a,
+       0x59a80005, 0x8c000502, 0x04000004, 0x59340200,
+       0x8c00050e, 0x04000004, 0x82000540, 0x00000001,
+       0x1c01f000, 0x80000580, 0x0401f7fe, 0x5c000000,
+       0x4c000000, 0x4803c857, 0x4947c857, 0x4d2c0000,
+       0x4d300000, 0x83440480, 0x00000800, 0x04021024,
+       0x83441400, 0x0010ac00, 0x50080000, 0x80026d40,
+       0x0400001b, 0x45781000, 0x5934000d, 0x80025d40,
+       0x02020800, 0x001007fd, 0x59366011, 0x813261c0,
+       0x0400000e, 0x4c640000, 0x5930c800, 0x59325808,
+       0x0201f800, 0x00109037, 0x02020800, 0x001007fd,
+       0x0201f800, 0x0002077d, 0x82666540, 0x00000000,
+       0x040207f6, 0x5c00c800, 0x0201f800, 0x00104c62,
+       0x41365800, 0x0201f800, 0x001007f5, 0x80000580,
+       0x5c026000, 0x5c025800, 0x1c01f000, 0x82000540,
+       0x00000001, 0x0401f7fb, 0x4937c857, 0x4c580000,
+       0x59cc0001, 0x82000500, 0x00ffffff, 0x48026802,
+       0x497a6c01, 0x497a6a01, 0x59340200, 0x84000502,
+       0x48026a00, 0x0201f800, 0x0010513b, 0x04020017,
+       0x59340403, 0x82000580, 0x000007fe, 0x04000005,
+       0x59a80026, 0x8c00050a, 0x04020010, 0x0401f008,
+       0x59cc0408, 0x8c000518, 0x0400000c, 0x59cc0009,
+       0x48035035, 0x59cc000a, 0x48035036, 0x59cc0207,
+       0x80000540, 0x04020003, 0x42000000, 0x00000001,
+       0x48038893, 0x4803501e, 0x59cc0a09, 0x82040d00,
+       0x00000010, 0x59cc0408, 0x82000500, 0x00000020,
+       0x04000002, 0x84040d40, 0x5934000a, 0x82000500,
+       0xffffffee, 0x80040540, 0x4802680a, 0x83cca400,
+       0x0000000b, 0x8334ac00, 0x00000006, 0x4200b000,
+       0x00000002, 0x0201f800, 0x0010ab17, 0x83cca400,
+       0x0000000d, 0x8334ac00, 0x00000008, 0x4200b000,
+       0x00000002, 0x0201f800, 0x0010ab17, 0x59cc0a18,
+       0x82040480, 0x00000800, 0x0402100c, 0x82040480,
+       0x00000400, 0x04001004, 0x42000800, 0x00000400,
+       0x0401f006, 0x82040480, 0x00000200, 0x04001003,
+       0x42000800, 0x00000200, 0x48066a04, 0x59340403,
+       0x82000580, 0x000007fe, 0x04020003, 0x59cc0a08,
+       0x48066a04, 0x42000800, 0x00000004, 0x59cc1207,
+       0x800811c0, 0x04000005, 0x82080480, 0x00000004,
+       0x04021002, 0x40080800, 0x48066c04, 0x5c00b000,
+       0x1c01f000, 0x4937c857, 0x59a80026, 0x8c000508,
+       0x04000004, 0x84000556, 0x4803c857, 0x48035026,
+       0x59cc0207, 0x4803c857, 0x48026a05, 0x59cc020a,
+       0x4803c857, 0x48026c05, 0x59341200, 0x599c0818,
+       0x5934180a, 0x4807c857, 0x480bc857, 0x480fc857,
+       0x59cc2006, 0x82102500, 0xff000000, 0x82102580,
+       0x02000000, 0x04000007, 0x8c00050e, 0x04000009,
+       0x8c0c1d14, 0x04000003, 0x8c0c1d0e, 0x04000005,
+       0x8c040d18, 0x04000003, 0x8408154a, 0x0401f002,
+       0x8408150a, 0x8c000510, 0x04000009, 0x8c0c1d14,
+       0x04000003, 0x8c0c1d10, 0x04000005, 0x8c040d18,
+       0x04000003, 0x8408154e, 0x0401f002, 0x8408150e,
+       0x8c000512, 0x04000009, 0x8c0c1d14, 0x04000003,
+       0x8c0c1d12, 0x04000005, 0x8c040d18, 0x04000003,
+       0x8408155c, 0x0401f002, 0x8408151c, 0x480a6a00,
+       0x1c01f000, 0x4803c856, 0x4c5c0000, 0x4d2c0000,
+       0x4c580000, 0x5934000d, 0x80025d40, 0x04000029,
+       0x592c0003, 0x82000480, 0x00000008, 0x0400100b,
+       0x412cb800, 0x592c0001, 0x80025d40, 0x040207f9,
+       0x0201f800, 0x001007e4, 0x04000037, 0x492fc857,
+       0x492cb801, 0x0401f020, 0x832c0c00, 0x00000004,
+       0x4200b000, 0x00000008, 0x50040000, 0x82000580,
+       0xffffffff, 0x04020006, 0x80041000, 0x50080000,
+       0x82000580, 0xffffffff, 0x04000007, 0x82040c00,
+       0x00000002, 0x8058b040, 0x040207f4, 0x0201f800,
+       0x001005d8, 0x45480800, 0x454c1000, 0x592c1803,
+       0x800c1800, 0x480e5803, 0x480fc857, 0x0401f014,
+       0x0201f800, 0x001007e4, 0x04000017, 0x492fc857,
+       0x492e680d, 0x497a5802, 0x4a025803, 0x00000001,
+       0x494a5804, 0x494e5805, 0x832c0c00, 0x00000006,
+       0x4200b000, 0x0000000e, 0x46000800, 0xffffffff,
+       0x80040800, 0x8058b040, 0x040207fc, 0x82000540,
+       0x00000001, 0x5c00b000, 0x5c025800, 0x5c00b800,
+       0x1c01f000, 0x80000580, 0x0401f7fb, 0x4803c856,
+       0x4d3c0000, 0x4d2c0000, 0x5934000d, 0x80025d40,
+       0x0400001f, 0x592c0002, 0x80000540, 0x0402001f,
+       0x412e7800, 0x0401f8ce, 0x0402001c, 0x46000800,
+       0xffffffff, 0x46001000, 0xffffffff, 0x4813c857,
+       0x480fc857, 0x580c0003, 0x82000c80, 0x00000002,
+       0x04021014, 0x480fc857, 0x400c0000, 0x812c0580,
+       0x04020004, 0x580c0001, 0x4802680d, 0x0401f003,
+       0x580c0001, 0x48002001, 0x400e5800, 0x0201f800,
+       0x001007f4, 0x82000540, 0x00000001, 0x5c025800,
+       0x5c027800, 0x1c01f000, 0x80000580, 0x0401f7fc,
+       0x80000040, 0x48001803, 0x4803c857, 0x0401f7f6,
+       0x0201f800, 0x00020086, 0x59300007, 0x8400054e,
+       0x48026007, 0x592c1a04, 0x820c1d00, 0x000000ff,
+       0x820c0580, 0x00000048, 0x04000013, 0x0201f000,
+       0x0002028e, 0x8c000500, 0x02020800, 0x000200e5,
+       0x4a026203, 0x00000002, 0x592c1a04, 0x820c1d00,
+       0x000000ff, 0x820c0580, 0x00000018, 0x02000000,
+       0x0002028e, 0x820c0580, 0x00000048, 0x02020000,
+       0x0002028e, 0x42000800, 0x80000804, 0x0201f800,
+       0x00106721, 0x0201f000, 0x00020297, 0x4a025a06,
+       0x00000008, 0x0201f000, 0x000202da, 0x4a025a06,
+       0x00000029, 0x0201f000, 0x000202da, 0x4a025a06,
+       0x0000002a, 0x0201f000, 0x000202da, 0x4a025a06,
+       0x00000028, 0x0201f000, 0x000202da, 0x4943c857,
+       0x4d440000, 0x4d340000, 0x4d2c0000, 0x4c580000,
+       0x4200b000, 0x000007f0, 0x417a8800, 0x0201f800,
+       0x00020245, 0x0402000d, 0x8d3e7d14, 0x04000005,
+       0x59340212, 0x82000500, 0x0000ff00, 0x04000007,
+       0x8d3e7d06, 0x04000004, 0x59340200, 0x8c00050e,
+       0x04020002, 0x0401f813, 0x81468800, 0x8058b040,
+       0x040207ef, 0x83440480, 0x00000800, 0x04021008,
+       0x8d3e7d02, 0x04000006, 0x42028800, 0x000007f0,
+       0x4200b000, 0x00000010, 0x0401f7e5, 0x5c00b000,
+       0x5c025800, 0x5c026800, 0x5c028800, 0x1c01f000,
+       0x4d2c0000, 0x41783000, 0x5936580f, 0x812e59c0,
+       0x04000029, 0x592c0204, 0x82000500, 0x000000ff,
+       0x82000580, 0x00000012, 0x04000020, 0x8d3e7d00,
+       0x04000003, 0x0401f83c, 0x0402001c, 0x592c2000,
+       0x497a5800, 0x801831c0, 0x04020009, 0x59340010,
+       0x812c0580, 0x04020004, 0x497a680f, 0x497a6810,
+       0x0401f008, 0x4812680f, 0x0401f006, 0x48103000,
+       0x59340010, 0x812c0580, 0x04020002, 0x481a6810,
+       0x4a025a04, 0x00000103, 0x49425a06, 0x497a5c09,
+       0x0201f800, 0x001091c6, 0x0201f800, 0x000202da,
+       0x40125800, 0x0401f7da, 0x412c3000, 0x592e5800,
+       0x0401f7d7, 0x5c025800, 0x1c01f000, 0x4803c856,
+       0x41781800, 0x5934000f, 0x80025d40, 0x04000010,
+       0x592c0005, 0x80200580, 0x592c0000, 0x04000003,
+       0x412c1800, 0x0401f7f9, 0x497a5800, 0x800c19c0,
+       0x04000008, 0x48001800, 0x80000540, 0x04020004,
+       0x480e6810, 0x82000540, 0x00000001, 0x1c01f000,
+       0x4802680f, 0x80000540, 0x040207fd, 0x497a6810,
+       0x0401f7f9, 0x592c0008, 0x81480580, 0x04020003,
+       0x592c0009, 0x814c0580, 0x1c01f000, 0x4803c856,
+       0x4c580000, 0x413c1800, 0x400c2000, 0x593c0002,
+       0x80000540, 0x04020018, 0x4200b000, 0x00000008,
+       0x820c0c00, 0x00000004, 0x50040000, 0x81480580,
+       0x04020005, 0x80041000, 0x50080000, 0x814c0580,
+       0x0400000d, 0x82040c00, 0x00000002, 0x8058b040,
+       0x040207f6, 0x400c2000, 0x580c0001, 0x80001d40,
+       0x040207ee, 0x82000540, 0x00000001, 0x5c00b000,
+       0x1c01f000, 0x80000580, 0x0401f7fd, 0x4937c857,
+       0x4c580000, 0x4d2c0000, 0x5934000d, 0x80025d40,
+       0x04020016, 0x0201f800, 0x001007e4, 0x04000010,
+       0x492e680d, 0x4a025802, 0x00000001, 0x497a5803,
+       0x832c0c00, 0x00000004, 0x4200b000, 0x00000010,
+       0x46000800, 0xffffffff, 0x80040800, 0x8058b040,
+       0x040207fc, 0x82000540, 0x00000001, 0x5c025800,
+       0x5c00b000, 0x1c01f000, 0x4d2c0000, 0x592e5801,
+       0x0201f800, 0x001007fd, 0x5c025800, 0x0401f7ea,
+       0x4d2c0000, 0x5936580d, 0x812e59c0, 0x04000007,
+       0x4937c857, 0x497a680d, 0x0201f800, 0x001007fd,
+       0x82000540, 0x00000001, 0x5c025800, 0x1c01f000,
+       0x59340405, 0x4937c857, 0x4803c857, 0x8c000508,
+       0x1c01f000, 0x4803c856, 0x0201f800, 0x0010513b,
+       0x04000011, 0x59a80815, 0x8c040d04, 0x0402000e,
+       0x59a80826, 0x8c040d06, 0x0400000b, 0x83ac0400,
+       0x000007fe, 0x50000000, 0x80026d40, 0x04000006,
+       0x0401f9a7, 0x04020004, 0x59340200, 0x8400055a,
+       0x48026a00, 0x599c0017, 0x8c000508, 0x04000015,
+       0x4200b000, 0x000007f0, 0x417a8800, 0x0201f800,
+       0x00020245, 0x0402000c, 0x0401f999, 0x0402000a,
+       0x59a80010, 0x59340802, 0x80040580, 0x82000500,
+       0x00ffff00, 0x04020004, 0x59340200, 0x8400055a,
+       0x48026a00, 0x81468800, 0x8058b040, 0x040207f0,
+       0x0401f884, 0x04000003, 0x59a80836, 0x0401f006,
+       0x599c0017, 0x8c000508, 0x04000007, 0x42000800,
+       0x000007d0, 0x42001000, 0x00104876, 0x0201f800,
+       0x0010606e, 0x1c01f000, 0x4803c856, 0x4d340000,
+       0x4d440000, 0x4d3c0000, 0x4c580000, 0x42001000,
+       0x00104876, 0x0201f800, 0x00105f90, 0x59a80826,
+       0x8c040d06, 0x04000015, 0x0401f86a, 0x04000013,
+       0x83ae6c00, 0x000007fe, 0x51366800, 0x59340200,
+       0x8400051a, 0x48026a00, 0x599c0017, 0x8c000508,
+       0x04000007, 0x42000800, 0x000007d0, 0x42001000,
+       0x00104876, 0x0201f800, 0x0010606e, 0x0201f800,
+       0x00101e45, 0x0401f027, 0x4200b000, 0x000007f0,
+       0x80028d80, 0x0201f800, 0x00020245, 0x0402001e,
+       0x59340200, 0x8c00051a, 0x0400001b, 0x59368c03,
+       0x417a7800, 0x42028000, 0x00000029, 0x41783000,
+       0x0201f800, 0x0010a446, 0x59340200, 0x84000558,
+       0x8400051a, 0x48026a00, 0x4937c857, 0x4a026c00,
+       0x00000707, 0x42028000, 0x00000029, 0x0201f800,
+       0x00106ab4, 0x417a7800, 0x0201f800, 0x001067fd,
+       0x80000d80, 0x0201f800, 0x0010a2ff, 0x0201f800,
+       0x00106c4b, 0x81468800, 0x8058b040, 0x040207de,
+       0x5c00b000, 0x5c027800, 0x5c028800, 0x5c026800,
+       0x1c01f000, 0x4933c857, 0x59303809, 0x581c0200,
+       0x8400051a, 0x48003a00, 0x1c01f000, 0x4803c856,
+       0x42026800, 0x0010b524, 0x497a680e, 0x42028800,
+       0x000007ff, 0x0201f800, 0x001042b4, 0x4937c857,
+       0x4a026c00, 0x00000606, 0x4a026802, 0x00ffffff,
+       0x4a026a04, 0x00000200, 0x4a026c04, 0x00000002,
+       0x1c01f000, 0x59300009, 0x50000000, 0x4933c857,
+       0x4803c857, 0x8c00050e, 0x1c01f000, 0x59300009,
+       0x50000000, 0x8c00050a, 0x1c01f000, 0x4933c856,
+       0x0401f90f, 0x04000006, 0x59340400, 0x82000d00,
+       0x000000ff, 0x82041580, 0x00000005, 0x1c01f000,
+       0x4d340000, 0x83ac0400, 0x000007fe, 0x50000000,
+       0x80026d40, 0x04000003, 0x59340200, 0x8c00051a,
+       0x5c026800, 0x1c01f000, 0x4937c857, 0x493fc857,
+       0x59340403, 0x81ac0400, 0x50000000, 0x81340580,
+       0x02020800, 0x001005d8, 0x59341200, 0x813e79c0,
+       0x04000003, 0x8408155e, 0x0401f002, 0x8408151e,
+       0x480a6a00, 0x1c01f000, 0x4937c857, 0x0201f800,
+       0x0010210a, 0x04000006, 0x59a80835, 0x42001000,
+       0x00104910, 0x0201f800, 0x0010606e, 0x1c01f000,
+       0x4937c857, 0x42001000, 0x00104910, 0x0201f800,
+       0x00105f90, 0x59a81026, 0x84081512, 0x480b5026,
+       0x1c01f000, 0x4c380000, 0x4c340000, 0x4c240000,
+       0x4c600000, 0x4008c000, 0x83440480, 0x00000800,
+       0x04021045, 0x80002d80, 0x41442000, 0x83447400,
+       0x0010ac00, 0x4200b000, 0x000007f0, 0x83444c80,
+       0x000007f0, 0x04001003, 0x4200b000, 0x00000010,
+       0x50380000, 0x80000540, 0x0402001e, 0x41440000,
+       0x80100580, 0x04020043, 0x40102800, 0x82104c80,
+       0x000007f0, 0x04001015, 0x82104d80, 0x000007fc,
+       0x04020005, 0x82604d80, 0x00fffffc, 0x0402002a,
+       0x0401f00e, 0x82104d80, 0x000007fd, 0x04020005,
+       0x82604d80, 0x00fffffd, 0x04020023, 0x0401f007,
+       0x82104d80, 0x000007ff, 0x0402001f, 0x82604d80,
+       0x00ffffff, 0x0402001c, 0x84142d5e, 0x0401f029,
+       0x40006800, 0x58343002, 0x82183500, 0x00ffffff,
+       0x40180000, 0x80600580, 0x04020019, 0x40100000,
+       0x81440580, 0x0402000a, 0x40366800, 0x8c204508,
+       0x04000053, 0x0401ff8a, 0x04020051, 0x4947c857,
+       0x42000000, 0x0000001d, 0x0401f04e, 0x4947c857,
+       0x480bc857, 0x4823c857, 0x42000000, 0x0000001a,
+       0x0401f048, 0x4947c857, 0x4863c857, 0x4813c857,
+       0x42000000, 0x00000019, 0x0401f042, 0x40100000,
+       0x81440580, 0x04020007, 0x58343002, 0x4947c857,
+       0x481bc857, 0x42000000, 0x0000001b, 0x0401f039,
+       0x80102000, 0x80387000, 0x83444c80, 0x000007f0,
+       0x04001009, 0x82104d80, 0x00000800, 0x0402000c,
+       0x42002000, 0x000007f0, 0x42007000, 0x0010b3f0,
+       0x0401f007, 0x82104d80, 0x000007f0, 0x04020004,
+       0x41782000, 0x42007000, 0x0010ac00, 0x8058b040,
+       0x040207a4, 0x801429c0, 0x04020007, 0x0201f800,
+       0x001005d8, 0x4947c857, 0x42000000, 0x0000000a,
+       0x0401f01c, 0x4d2c0000, 0x4c180000, 0x40603000,
+       0x0401fc12, 0x4947c857, 0x4937c857, 0x5c003000,
+       0x5c025800, 0x040207f4, 0x497a6a12, 0x59a80026,
+       0x8c00050a, 0x0402000d, 0x82600500, 0x00ffff00,
+       0x04000006, 0x59a84810, 0x82244d00, 0x00ffff00,
+       0x80240580, 0x04020005, 0x82600500, 0x000000ff,
+       0x800000d0, 0x48026a12, 0x48626802, 0x80000580,
+       0x80000540, 0x5c00c000, 0x5c004800, 0x5c006800,
+       0x5c007000, 0x1c01f000, 0x5934000f, 0x5934140b,
+       0x80081040, 0x04001002, 0x480a6c0b, 0x80000540,
+       0x02020800, 0x00020253, 0x1c01f000, 0x4803c857,
+       0x4947c857, 0x4c300000, 0x82006500, 0x00000030,
+       0x04000006, 0x4c000000, 0x0201f800, 0x0010942a,
+       0x5c000000, 0x0402000b, 0x8c00050e, 0x04000006,
+       0x0201f800, 0x00020245, 0x04020006, 0x4937c857,
+       0x0401fc2f, 0x80000580, 0x5c006000, 0x1c01f000,
+       0x82000540, 0x00000001, 0x0401f7fc, 0x4803c857,
+       0x4c580000, 0x4d440000, 0x40001000, 0x80000d80,
+       0x4200b000, 0x000007f0, 0x4c040000, 0x40068800,
+       0x4c080000, 0x40080000, 0x0401ffdd, 0x5c001000,
+       0x5c000800, 0x80040800, 0x8058b040, 0x040207f7,
+       0x5c028800, 0x5c00b000, 0x1c01f000, 0x4c5c0000,
+       0x59340400, 0x8200bd80, 0x00000606, 0x5c00b800,
+       0x1c01f000, 0x4c5c0000, 0x59340400, 0x8200bd80,
+       0x00000404, 0x5c00b800, 0x1c01f000, 0x4c5c0000,
+       0x59340400, 0x8200bd80, 0x00000404, 0x04000003,
+       0x8200bd80, 0x00000606, 0x5c00b800, 0x1c01f000,
+       0x4c5c0000, 0x4c600000, 0x59340400, 0x8200bd00,
+       0x0000ff00, 0x825cc580, 0x00000400, 0x04000003,
+       0x825cc580, 0x00000600, 0x5c00c000, 0x5c00b800,
+       0x1c01f000, 0x4c5c0000, 0x59340400, 0x82000500,
+       0x000000ff, 0x8200bd80, 0x00000003, 0x04000003,
+       0x8200bd80, 0x00000005, 0x5c00b800, 0x1c01f000,
+       0x4c5c0000, 0x59340400, 0x82000500, 0x0000ff00,
+       0x8400b9c0, 0x805c0580, 0x4937c857, 0x4803c857,
+       0x48026c00, 0x5c00b800, 0x1c01f000, 0x4c040000,
+       0x4c080000, 0x592c0207, 0x8c00050c, 0x0400000f,
+       0x592e8c06, 0x82000500, 0x00000080, 0x84000548,
+       0x4d3c0000, 0x42027800, 0x00001000, 0x0401ff90,
+       0x5c027800, 0x82000540, 0x00000001, 0x5c001000,
+       0x5c000800, 0x1c01f000, 0x80000580, 0x0401f7fc,
+       0x592c040b, 0x82000500, 0x0000e000, 0x82000580,
+       0x00006000, 0x04000019, 0x836c0580, 0x00000003,
+       0x04000016, 0x836c0580, 0x00000002, 0x040200ff,
+       0x59a80026, 0x82000d00, 0x00000038, 0x04020005,
+       0x59a80832, 0x800409c0, 0x0400000c, 0x0401f0f7,
+       0x82000d00, 0x00000003, 0x82040d80, 0x00000003,
+       0x040200f2, 0x82000d00, 0x00000028, 0x04020003,
+       0x8c00050c, 0x040000ed, 0x592c100a, 0x82080500,
+       0xff000000, 0x040200ce, 0x59a80010, 0x80080580,
+       0x040000c8, 0x592c0c0b, 0x82040d00, 0x0000e000,
+       0x82040480, 0x00008000, 0x040210c8, 0x592e8c06,
+       0x83440480, 0x00000800, 0x04001007, 0x83440580,
+       0x0000ffff, 0x040200af, 0x800409c0, 0x040200f7,
+       0x0401f0ac, 0x800409c0, 0x040200f4, 0x41784000,
+       0x0401fead, 0x040200db, 0x42027000, 0x00000053,
+       0x592c2409, 0x82100500, 0xffffff00, 0x040200aa,
+       0x4813c857, 0x592c000c, 0x800001c0, 0x04000083,
+       0x82100580, 0x00000004, 0x040000a0, 0x82100580,
+       0x00000051, 0x0400009d, 0x82100580, 0x00000003,
+       0x04000016, 0x82100580, 0x00000020, 0x0400004b,
+       0x82100580, 0x00000024, 0x04000042, 0x82100580,
+       0x00000021, 0x04000042, 0x82100580, 0x00000050,
+       0x04000037, 0x82100580, 0x00000052, 0x04000031,
+       0x82100580, 0x00000005, 0x0402006b, 0x42027000,
+       0x00000001, 0x0401f01b, 0x42027000, 0x00000002,
+       0x59a80005, 0x8c000514, 0x04000016, 0x0401ff4c,
+       0x04000014, 0x59340212, 0x82000500, 0x0000ff00,
+       0x42001000, 0x00000010, 0x0402000c, 0x59a80026,
+       0x8c000506, 0x0402006f, 0x42001000, 0x00000008,
+       0x59340002, 0x82000500, 0x00ff0000, 0x82000580,
+       0x00ff0000, 0x04000003, 0x0401f9bf, 0x04020065,
+       0x0201f800, 0x0002075a, 0x0400007e, 0x4a026406,
+       0x00000010, 0x49366009, 0x42000800, 0x00000003,
+       0x83380580, 0x00000002, 0x04000003, 0x42000800,
+       0x0000000b, 0x0201f800, 0x00104571, 0x0401f044,
+       0x42027000, 0x00000000, 0x0401f003, 0x42027000,
+       0x00000004, 0x0401ff37, 0x04020071, 0x0401f036,
+       0x42027000, 0x00000033, 0x0401f006, 0x42027000,
+       0x00000005, 0x0401f003, 0x42027000, 0x00000003,
+       0x0401ff23, 0x04020066, 0x59a80005, 0x8c000514,
+       0x04000016, 0x0401ff12, 0x04000014, 0x59340212,
+       0x82000500, 0x0000ff00, 0x42001000, 0x00000010,
+       0x0402000c, 0x59a80026, 0x8c000506, 0x04020035,
+       0x42001000, 0x00000008, 0x59340002, 0x82000500,
+       0x00ff0000, 0x82000580, 0x00ff0000, 0x04000003,
+       0x0401f985, 0x0402002b, 0x0201f800, 0x0002075a,
+       0x04000044, 0x4a026406, 0x00000010, 0x49366009,
+       0x42000800, 0x00000005, 0x83380580, 0x00000003,
+       0x04000003, 0x42000800, 0x00000009, 0x0201f800,
+       0x00104571, 0x0401f00a, 0x82102580, 0x00000011,
+       0x0402002d, 0x0201f800, 0x0002075a, 0x04000031,
+       0x4a026406, 0x00000010, 0x49366009, 0x492e6008,
+       0x49325808, 0x813669c0, 0x04000007, 0x592c0c0b,
+       0x8c040d18, 0x04000004, 0x59340200, 0x84000514,
+       0x48026a00, 0x0201f800, 0x000207a1, 0x80000580,
+       0x1c01f000, 0x82000540, 0x00000001, 0x0401f7fd,
+       0x42001000, 0x0000000a, 0x0401f015, 0x42001000,
+       0x00000010, 0x0401f012, 0x42001000, 0x00000016,
+       0x0401f00f, 0x42001000, 0x00000017, 0x0401f00c,
+       0x42001000, 0x00000018, 0x0401f009, 0x42001000,
+       0x0000001b, 0x0401f006, 0x42001000, 0x0000001e,
+       0x0401f003, 0x42001000, 0x00000020, 0x42000800,
+       0x00000019, 0x42028000, 0x00000031, 0x0401f7e2,
+       0x42000800, 0x00000003, 0x0401f003, 0x42000800,
+       0x0000000a, 0x41781000, 0x0401f7f7, 0x42000800,
+       0x00000009, 0x59341400, 0x0401f7f3, 0x42028000,
+       0x00000008, 0x0401f005, 0x42000800, 0x00000007,
+       0x416c1000, 0x0401f7ec, 0x41780800, 0x41781000,
+       0x0401f7cd, 0x42028000, 0x00000000, 0x0401f7fb,
+       0x82004d80, 0x0000001d, 0x02000800, 0x001005d8,
+       0x82004d80, 0x0000001a, 0x04020004, 0x40101000,
+       0x40000800, 0x0401f7dc, 0x82004d80, 0x0000001b,
+       0x04020003, 0x40181000, 0x0401f7fa, 0x82004d80,
+       0x0000001c, 0x040007f7, 0x82004d80, 0x00000019,
+       0x040007b8, 0x0401f7d6, 0x592e6008, 0x0201f800,
+       0x0010941a, 0x040007b6, 0x59300c06, 0x82040580,
+       0x00000011, 0x040207d6, 0x83440580, 0x0000ffff,
+       0x04020005, 0x59326809, 0x813669c0, 0x0400000e,
+       0x0401f7cf, 0x592c100a, 0x82081500, 0x00ffffff,
+       0x41784000, 0x0401fda8, 0x040207d6, 0x59300009,
+       0x800001c0, 0x04000003, 0x81340580, 0x040207c4,
+       0x49366009, 0x592c0c0b, 0x82041500, 0x0000e000,
+       0x82080580, 0x00006000, 0x04000009, 0x59300a03,
+       0x82040580, 0x00000007, 0x040207b9, 0x492e6008,
+       0x42027000, 0x00000054, 0x0401f77f, 0x0201f800,
+       0x0010a8d4, 0x040007bc, 0x0401f7b1, 0x492fc857,
+       0x59a80021, 0x800001c0, 0x04020073, 0x592e6008,
+       0x4933c857, 0x0201f800, 0x0010941a, 0x04000041,
+       0x59301406, 0x82080580, 0x00000005, 0x0402005b,
+       0x59301203, 0x82080580, 0x00000007, 0x04020057,
+       0x592e8c06, 0x83440480, 0x00000800, 0x04021032,
+       0x41784000, 0x592c1009, 0x82081500, 0x00ffffff,
+       0x0401fd75, 0x0402005f, 0x59300009, 0x800001c0,
+       0x04000003, 0x81340580, 0x04020048, 0x4d300000,
+       0x592e6013, 0x4933c857, 0x83300580, 0xffffffff,
+       0x0400000d, 0x0201f800, 0x0010941a, 0x5c026000,
+       0x04000029, 0x591c1406, 0x82080580, 0x00000006,
+       0x04000046, 0x82080580, 0x00000011, 0x04000043,
+       0x0401f002, 0x5c026000, 0x59a80010, 0x592c100a,
+       0x82081500, 0x00ffffff, 0x80081580, 0x04020017,
+       0x592c1009, 0x82081500, 0x00ffffff, 0x80081580,
+       0x0400000f, 0x49366009, 0x492e6008, 0x42027000,
+       0x00000092, 0x0201f800, 0x000207a1, 0x80000580,
+       0x1c01f000, 0x42001000, 0x0000000a, 0x0401f00c,
+       0x42001000, 0x00000010, 0x0401f009, 0x42001000,
+       0x00000014, 0x0401f006, 0x42001000, 0x00000018,
+       0x0401f003, 0x42001000, 0x0000003c, 0x492fc857,
+       0x480bc857, 0x42000800, 0x00000019, 0x42028000,
+       0x00000031, 0x82000540, 0x00000001, 0x0401f7e9,
+       0x492fc857, 0x4803c857, 0x480bc857, 0x40000800,
+       0x0401f7f7, 0x492fc857, 0x42000800, 0x0000000a,
+       0x41781000, 0x0401f7f2, 0x4933c857, 0x59300406,
+       0x4803c857, 0x59300203, 0x4803c857, 0x59300009,
+       0x4803c857, 0x42028000, 0x00000008, 0x41780800,
+       0x41781000, 0x0401f7e8, 0x42000800, 0x0000001e,
+       0x0401f7f0, 0x42000800, 0x00000001, 0x0401f7ed,
+       0x82004d80, 0x0000001d, 0x02000800, 0x001005d8,
+       0x82004d80, 0x0000001a, 0x04020003, 0x40101000,
+       0x0401f7dc, 0x82004d80, 0x0000001b, 0x04020003,
+       0x40181000, 0x0401f7d7, 0x82004d80, 0x0000001c,
+       0x040007d4, 0x82004d80, 0x00000019, 0x040007d1,
+       0x0401f7d5, 0x59302009, 0x801021c0, 0x04000035,
+       0x58101400, 0x82081d00, 0x000000ff, 0x59300c03,
+       0x82040580, 0x00000008, 0x04000022, 0x82040580,
+       0x0000000a, 0x04000017, 0x82040580, 0x0000000c,
+       0x04000010, 0x82040580, 0x00000002, 0x04000019,
+       0x82040580, 0x00000001, 0x04000012, 0x82040580,
+       0x00000003, 0x0400000b, 0x82040580, 0x00000005,
+       0x04000004, 0x82040580, 0x00000033, 0x04020019,
+       0x820c0580, 0x00000009, 0x0400000d, 0x0401f015,
+       0x820c0580, 0x00000005, 0x04000009, 0x0401f011,
+       0x820c0580, 0x0000000b, 0x04000005, 0x0401f00d,
+       0x820c0580, 0x00000003, 0x0402000a, 0x82081d00,
+       0xffffff00, 0x840c01c0, 0x800c0540, 0x4813c857,
+       0x480bc857, 0x4807c857, 0x4803c857, 0x48002400,
+       0x1c01f000, 0x599c0017, 0x8c00050a, 0x04000003,
+       0x80000580, 0x1c01f000, 0x59a80026, 0x82000500,
+       0x00000028, 0x04000008, 0x42028800, 0x000007fd,
+       0x0201f800, 0x00020245, 0x04020003, 0x5934000a,
+       0x8c000504, 0x1c01f000, 0x4d300000, 0x5934000e,
+       0x80026540, 0x04000006, 0x0201f800, 0x001062d5,
+       0x02000800, 0x001064ad, 0x497a680e, 0x5c026000,
+       0x1c01f000, 0x4d440000, 0x4d340000, 0x80000580,
+       0x40001800, 0x40028800, 0x82080580, 0x00000008,
+       0x04020003, 0x42001800, 0x00000001, 0x0201f800,
+       0x00020245, 0x0402000a, 0x0401fd6d, 0x04020008,
+       0x800c19c0, 0x04000004, 0x59340405, 0x8c000508,
+       0x04000003, 0x80081040, 0x04000009, 0x81468800,
+       0x83440480, 0x00000800, 0x040017f1, 0x80000580,
+       0x5c026800, 0x5c028800, 0x1c01f000, 0x82000540,
+       0x00000001, 0x5c026800, 0x5c028800, 0x1c01f000,
+       0x4a033020, 0x00000000, 0x497b3026, 0x497b3027,
+       0x497b3028, 0x497b3029, 0x497b302b, 0x497b3021,
+       0x4a03b104, 0x60000001, 0x1c01f000, 0x4803c856,
+       0x599c0018, 0x497b3024, 0x497b3025, 0x82000500,
+       0x0000000f, 0x82000d80, 0x00000005, 0x04000006,
+       0x82000580, 0x00000006, 0x0400000d, 0x497b3022,
+       0x1c01f000, 0x4a033022, 0x00000005, 0x599c0216,
+       0x82000500, 0x0000ffff, 0x04020003, 0x42000000,
+       0x00000002, 0x48033023, 0x1c01f000, 0x4a033022,
+       0x00000006, 0x0401f7f6, 0x0401ffe5, 0x4a03c826,
+       0x00000004, 0x599c0209, 0x80000540, 0x0400001f,
+       0x599c0207, 0x80000540, 0x04000007, 0x800000cc,
+       0x599c080d, 0x80040400, 0x4803b100, 0x497bb102,
+       0x59d80101, 0x599c000d, 0x4803b100, 0x599c000e,
+       0x4803b101, 0x599c0207, 0x80000540, 0x04020002,
+       0x497bb102, 0x599c0a09, 0x82040540, 0x00400000,
+       0x59980822, 0x4803b103, 0x4a03b109, 0x00000004,
+       0x4a03b104, 0x10000001, 0x800409c0, 0x04020004,
+       0x4a033020, 0x00000001, 0x1c01f000, 0x4a033020,
+       0x00000002, 0x0401f7fd, 0x59980022, 0x4803c856,
+       0x80000540, 0x02000000, 0x000202de, 0x0401f017,
+       0x42034000, 0x0010b4a4, 0x59a1d81e, 0x80edd9c0,
+       0x02000800, 0x001005d8, 0x58ec0009, 0x48efc857,
+       0x49a3c857, 0x492fc857, 0x4803c857, 0x800001c0,
+       0x08020000, 0x0201f800, 0x001005d8, 0x5931d821,
+       0x58ef400b, 0x58ec0009, 0x800001c0, 0x08020000,
+       0x0201f800, 0x001005d8, 0x497a5800, 0x59980026,
+       0x80000540, 0x0402008c, 0x59d80105, 0x82000d00,
+       0x00018780, 0x040201da, 0x80000106, 0x82000500,
+       0x00000003, 0x0c01f001, 0x00104d0a, 0x00104d89,
+       0x00104d22, 0x00104d50, 0x592c0001, 0x492fc857,
+       0x492fb107, 0x80000d40, 0x04020007, 0x59940019,
+       0x80000540, 0x04022003, 0x59980023, 0x48032819,
+       0x1c01f000, 0x497a5801, 0x40065800, 0x592c0001,
+       0x496a5800, 0x815eb800, 0x412ed000, 0x80000d40,
+       0x040207f9, 0x59c80000, 0x82000540, 0x00001200,
+       0x48039000, 0x0401f7ee, 0x492fc857, 0x492fb107,
+       0x592c0001, 0x80000d40, 0x04020012, 0x59da5908,
+       0x835c0480, 0x00000020, 0x0400101c, 0x0402b01a,
+       0x492fb007, 0x0400e7fa, 0x59d80105, 0x82000500,
+       0x00018780, 0x040201aa, 0x59940019, 0x80000540,
+       0x04022003, 0x59980023, 0x48032819, 0x1c01f000,
+       0x497a5801, 0x40065800, 0x592c0001, 0x496a5800,
+       0x815eb800, 0x412ed000, 0x80000d40, 0x040207f9,
+       0x59c80000, 0x82000540, 0x00001200, 0x48039000,
+       0x0401f7e3, 0x0400f009, 0x496a5800, 0x412ed000,
+       0x815eb800, 0x59c80000, 0x82000540, 0x00001200,
+       0x48039000, 0x0401f7e0, 0x492fa807, 0x0401f7de,
+       0x492fc857, 0x59d81108, 0x45681000, 0x400ad000,
+       0x815eb800, 0x0400e7fc, 0x59c80000, 0x82000540,
+       0x00001200, 0x48039000, 0x0402d00c, 0x592c0001,
+       0x492fc857, 0x492fb107, 0x80000d40, 0x0402001d,
+       0x59940019, 0x80000540, 0x04022003, 0x59980023,
+       0x48032819, 0x1c01f000, 0x59d80105, 0x82000500,
+       0x00018780, 0x04020172, 0x42000000, 0x0010b855,
+       0x0201f800, 0x0010aa47, 0x59980026, 0x59980828,
+       0x80000000, 0x48033026, 0x492fc857, 0x800409c0,
+       0x492f3028, 0x04000003, 0x492c0800, 0x0401f002,
+       0x492f3029, 0x592c0001, 0x80000d40, 0x040007e5,
+       0x497a5801, 0x40065800, 0x592c0001, 0x496a5800,
+       0x815eb800, 0x412ed000, 0x80000d40, 0x040207f9,
+       0x59c80000, 0x82000540, 0x00001200, 0x48039000,
+       0x0401f7d8, 0x59980026, 0x59980828, 0x80000000,
+       0x48033026, 0x492fc857, 0x800409c0, 0x492f3028,
+       0x04000003, 0x492c0800, 0x0401f002, 0x492f3029,
+       0x592c0001, 0x80000d40, 0x04020027, 0x0402d00e,
+       0x59980029, 0x80025d40, 0x0400000f, 0x59980026,
+       0x80000040, 0x48033026, 0x04020002, 0x48033028,
+       0x592c0000, 0x48033029, 0x492fc857, 0x492fb107,
+       0x0400d7f4, 0x42000000, 0x0010b855, 0x0201f800,
+       0x0010aa47, 0x0402e00a, 0x59da5908, 0x496a5800,
+       0x412ed000, 0x815eb800, 0x0400e7fc, 0x59c80000,
+       0x82000540, 0x00001200, 0x48039000, 0x59d80105,
+       0x82000500, 0x00018780, 0x04020125, 0x59940019,
+       0x80000540, 0x04022003, 0x59980023, 0x48032819,
+       0x1c01f000, 0x497a5801, 0x40065800, 0x592c0001,
+       0x496a5800, 0x815eb800, 0x412ed000, 0x80000d40,
+       0x040207f9, 0x59c80000, 0x82000540, 0x00001200,
+       0x48039000, 0x0401f7ce, 0x592c0204, 0x4803c856,
+       0x04000008, 0x42034000, 0x0010b4a4, 0x59a1d81e,
+       0x80edd9c0, 0x02000800, 0x001005d8, 0x0401f003,
+       0x5931d821, 0x58ef400b, 0x58ec0009, 0x800001c0,
+       0x08020000, 0x0201f800, 0x001005d8, 0x497a5801,
+       0x40065800, 0x592c0001, 0x496a5800, 0x412ed000,
+       0x815eb800, 0x80000d40, 0x040207f9, 0x59c80000,
+       0x82000540, 0x00001200, 0x48039000, 0x1c01f000,
+       0x497a5801, 0x40065800, 0x592c0001, 0x496a5800,
+       0x412ed000, 0x815eb800, 0x80000d40, 0x040207f9,
+       0x59c80000, 0x82000540, 0x00001200, 0x48039000,
+       0x0200e000, 0x000202fb, 0x0201f000, 0x00020302,
+       0x5998002b, 0x84000540, 0x4803302b, 0x0201f000,
+       0x0002035e, 0x42000000, 0x0010b855, 0x0201f800,
+       0x0010aa47, 0x492fc857, 0x59980026, 0x59980828,
+       0x80000000, 0x48033026, 0x800409c0, 0x492f3028,
+       0x04000003, 0x492c0800, 0x0401f002, 0x492f3029,
+       0x592c0001, 0x80000d40, 0x04020002, 0x1c01f000,
+       0x497a5801, 0x40065800, 0x592c0001, 0x496a5800,
+       0x412ed000, 0x815eb800, 0x80000d40, 0x040207f9,
+       0x59c80000, 0x82000540, 0x00001200, 0x48039000,
+       0x1c01f000, 0x59980026, 0x59980828, 0x80000000,
+       0x48033026, 0x492fc857, 0x800409c0, 0x492f3028,
+       0x04000003, 0x492c0800, 0x0401f002, 0x492f3029,
+       0x592c0001, 0x80000d40, 0x04020039, 0x0402d00e,
+       0x59980029, 0x80025d40, 0x0400000f, 0x59980026,
+       0x80000040, 0x48033026, 0x04020002, 0x48033028,
+       0x592c0000, 0x48033029, 0x492fc857, 0x492fb107,
+       0x0400d7f4, 0x42000000, 0x0010b855, 0x0201f800,
+       0x0010aa47, 0x0402e01d, 0x59da5908, 0x496a5800,
+       0x412ed000, 0x815eb800, 0x0400e7fc, 0x59c80000,
+       0x82000540, 0x00001200, 0x48039000, 0x04006018,
+       0x59d8010a, 0x59d8090a, 0x80040d80, 0x040207fd,
+       0x900001c0, 0x82000540, 0x00000013, 0x4803c011,
+       0x5998002b, 0x84000500, 0x4803302b, 0x59e00017,
+       0x8c000508, 0x04000003, 0x4a03c017, 0x00000003,
+       0x4203e000, 0x30000001, 0x59d80105, 0x82000500,
+       0x00018780, 0x0402007e, 0x1c01f000, 0x5998002b,
+       0x84000540, 0x4803302b, 0x0401f7f8, 0x497a5801,
+       0x40065800, 0x592c0001, 0x496a5800, 0x412ed000,
+       0x815eb800, 0x80000d40, 0x040207f9, 0x59c80000,
+       0x82000540, 0x00001200, 0x48039000, 0x0401f7bc,
+       0x5c000000, 0x4c000000, 0x4803c857, 0x492fc857,
+       0x4943c857, 0x4807c857, 0x4a025a04, 0x00000103,
+       0x49425a06, 0x48065a08, 0x4a025c06, 0x0000ffff,
+       0x813261c0, 0x04000003, 0x59300402, 0x48025c06,
+       0x832c0400, 0x00000009, 0x04011000, 0x4803c840,
+       0x4a03c842, 0x0000000b, 0x04011000, 0x1c01f000,
+       0x4df00000, 0x4203e000, 0x50000000, 0x599cb817,
+       0x59940019, 0x80000540, 0x04002023, 0x0400000e,
+       0x59980022, 0x82000580, 0x00000005, 0x0400001e,
+       0x59a80069, 0x81640580, 0x0402001b, 0x8c5cbd08,
+       0x04000005, 0x59a8006a, 0x59a80866, 0x80040580,
+       0x04020015, 0x8c5cbd08, 0x04020030, 0x59d8090b,
+       0x59d8010a, 0x80040580, 0x0400000d, 0x0400600e,
+       0x4a03c011, 0x80400012, 0x4a03c020, 0x00008040,
+       0x59e00017, 0x8c000508, 0x04000003, 0x4a03c017,
+       0x00000002, 0x4203e000, 0x30000001, 0x4a032819,
+       0xffff0000, 0x04026835, 0x04006003, 0x8c5cbd08,
+       0x04020860, 0x59980029, 0x80025d40, 0x04000010,
+       0x59d80105, 0x82000500, 0x00018780, 0x04020020,
+       0x0402d00d, 0x59980026, 0x492fc857, 0x80000040,
+       0x48033026, 0x592c0000, 0x492fb107, 0x48033029,
+       0x04020003, 0x4803c856, 0x48033028, 0x5c03e000,
+       0x1c01f000, 0x42000000, 0x0010b855, 0x0201f800,
+       0x0010aa47, 0x0401f7fa, 0x59e0000f, 0x59e0080f,
+       0x80040580, 0x040207fd, 0x59e00010, 0x59e01010,
+       0x80081580, 0x040207fd, 0x40065000, 0x80041580,
+       0x040007c7, 0x040067dc, 0x0401f7ca, 0x4803c857,
+       0x485fc857, 0x8c00050e, 0x02020800, 0x001005d0,
+       0x4203e000, 0x50000000, 0x4200b800, 0x00008004,
+       0x0201f000, 0x001005dd, 0x5998002b, 0x8c000500,
+       0x04000013, 0x84000500, 0x4803302b, 0x59d8010a,
+       0x59d8090a, 0x80040580, 0x040207fd, 0x800408e0,
+       0x82040d40, 0x00000013, 0x4807c011, 0x59e00017,
+       0x8c000508, 0x04000003, 0x4a03c017, 0x00000003,
+       0x4203e000, 0x30000001, 0x1c01f000, 0x0402e014,
+       0x59da5908, 0x496a5800, 0x412ed000, 0x815eb800,
+       0x0400e7fc, 0x59c80000, 0x82000540, 0x00001200,
+       0x48039000, 0x59d8090b, 0x59980024, 0x48073024,
+       0x80040480, 0x04020004, 0x59940019, 0x80000540,
+       0x04022003, 0x59980823, 0x48072819, 0x59d80105,
+       0x82000500, 0x00018780, 0x040207c9, 0x1c01f000,
+       0x59981025, 0x59e00010, 0x59e00810, 0x80041d80,
+       0x040207fd, 0x80080580, 0x04000013, 0x48073025,
+       0x59e0000f, 0x59e0100f, 0x80081d80, 0x040207fd,
+       0x81280580, 0x04000008, 0x400a5000, 0x40080000,
+       0x80040580, 0x04000003, 0x59980823, 0x48072819,
+       0x1c01f000, 0x59940019, 0x80000540, 0x040227f8,
+       0x0401f7fc, 0x59e0000f, 0x59e0100f, 0x80081d80,
+       0x040207fd, 0x81280580, 0x040007f6, 0x400a5000,
+       0x59940019, 0x80000540, 0x040027ed, 0x0401f7f1,
+       0x59a80017, 0x82000c80, 0x0000000a, 0x02021800,
+       0x001005d8, 0x0c01f809, 0x4a038805, 0x000000f0,
+       0x59c400a3, 0x82000500, 0x02870000, 0x02020800,
+       0x001005d8, 0x1c01f000, 0x00104fc5, 0x00104f51,
+       0x00104f6c, 0x00104f95, 0x00104fb8, 0x00104ff2,
+       0x00105004, 0x00104f6c, 0x00104fd6, 0x00104f50,
+       0x1c01f000, 0x4a038808, 0x00000004, 0x0401f8f9,
+       0x0201f800, 0x001053ab, 0x59c40805, 0x8c040d0e,
+       0x04020013, 0x8c040d0a, 0x0402000b, 0x8c040d0c,
+       0x04020006, 0x8c040d08, 0x0400000d, 0x4a035017,
+       0x00000003, 0x0401f00a, 0x4a035017, 0x00000000,
+       0x0401f007, 0x42000000, 0x0010b844, 0x0201f800,
+       0x0010aa47, 0x4a035017, 0x00000002, 0x1c01f000,
+       0x4a038808, 0x00000002, 0x0401f8de, 0x59c40805,
+       0x8c040d08, 0x04020021, 0x8c040d0c, 0x0402001c,
+       0x8c040d0e, 0x04020017, 0x82040500, 0x000000f0,
+       0x0402001c, 0x0201f800, 0x001053ab, 0x4a038808,
+       0x00000080, 0x59c40002, 0x8400050c, 0x48038802,
+       0x0401f9d9, 0x4d3c0000, 0x42027800, 0x00000001,
+       0x0201f800, 0x00109874, 0x5c027800, 0x4a038808,
+       0x00000080, 0x4a035017, 0x00000009, 0x0401f009,
+       0x4a035017, 0x00000001, 0x0401f006, 0x4a035017,
+       0x00000000, 0x0401f003, 0x4a035017, 0x00000003,
+       0x1c01f000, 0x0401f8b7, 0x4a038808, 0x00000080,
+       0x59c40805, 0x8c040d0a, 0x0402001b, 0x8c040d0c,
+       0x04020016, 0x8c040d0e, 0x04020011, 0x82040500,
+       0x000000f0, 0x04020016, 0x59c40002, 0x8400050c,
+       0x48038802, 0x0401f9b4, 0x4d3c0000, 0x42027800,
+       0x00000001, 0x0201f800, 0x00109874, 0x5c027800,
+       0x4a035017, 0x00000009, 0x0401f009, 0x4a035017,
+       0x00000001, 0x0401f006, 0x4a035017, 0x00000000,
+       0x0401f003, 0x4a035017, 0x00000002, 0x1c01f000,
+       0x4a038808, 0x00000008, 0x59c40805, 0x8c040d0c,
+       0x04020006, 0x8c040d0e, 0x04000006, 0x4a035017,
+       0x00000001, 0x0401f003, 0x4a035017, 0x00000000,
+       0x1c01f000, 0x0401f8d3, 0x59c40805, 0x8c040d0c,
+       0x0402000d, 0x4c040000, 0x0401f882, 0x5c000800,
+       0x8c040d0a, 0x04020006, 0x8c040d0e, 0x04000006,
+       0x4a035017, 0x00000001, 0x0401f003, 0x4a035017,
+       0x00000002, 0x1c01f000, 0x4a038808, 0x00000008,
+       0x42001000, 0x00105058, 0x0201f800, 0x00106084,
+       0x59c40805, 0x8c040d0a, 0x0402000d, 0x8c040d08,
+       0x0402000b, 0x8c040d0c, 0x04020006, 0x8c040d0e,
+       0x0400000d, 0x4a035017, 0x00000001, 0x0401f00a,
+       0x4a035017, 0x00000000, 0x0401f007, 0x42000000,
+       0x0010b844, 0x0201f800, 0x0010aa47, 0x4a035017,
+       0x00000004, 0x1c01f000, 0x0401f8a6, 0x0401f859,
+       0x59c40805, 0x8c040d0a, 0x0402000b, 0x8c040d0c,
+       0x04020006, 0x8c040d0e, 0x04000009, 0x4a035017,
+       0x00000001, 0x0401f006, 0x4a035017, 0x00000000,
+       0x0401f003, 0x4a035017, 0x00000002, 0x1c01f000,
+       0x4a038808, 0x00000004, 0x0401f846, 0x59c40805,
+       0x8c040d0a, 0x04020010, 0x8c040d08, 0x0402000b,
+       0x8c040d0c, 0x04020006, 0x8c040d0e, 0x0400000c,
+       0x4a035017, 0x00000001, 0x0401f009, 0x4a035017,
+       0x00000000, 0x0401f006, 0x4a035017, 0x00000003,
+       0x0401f003, 0x4a035017, 0x00000002, 0x1c01f000,
+       0x0401f91f, 0x02020800, 0x001005d8, 0x59a80805,
+       0x8c040d0c, 0x04000015, 0x84040d0c, 0x48075005,
+       0x4a038805, 0x00000010, 0x0201f800, 0x00101937,
+       0x59c40005, 0x8c000508, 0x04000008, 0x4a038808,
+       0x00000008, 0x4a035033, 0x00000001, 0x4202d800,
+       0x00000001, 0x0401f01a, 0x59c40006, 0x84000548,
+       0x48038806, 0x0401f016, 0x59a80017, 0x82000580,
+       0x00000001, 0x0400000c, 0x59a80017, 0x82000580,
+       0x00000005, 0x0402000c, 0x42000000, 0x0010b844,
+       0x0201f800, 0x0010aa47, 0x4a035017, 0x00000008,
+       0x0401f007, 0x42000000, 0x0010b844, 0x0201f800,
+       0x0010aa47, 0x4a035017, 0x00000004, 0x1c01f000,
+       0x4803c856, 0x4c040000, 0x4c080000, 0x42000800,
+       0x00000064, 0x42001000, 0x00105058, 0x0201f800,
+       0x00106079, 0x5c001000, 0x5c000800, 0x1c01f000,
+       0x4803c856, 0x4c040000, 0x0201f800, 0x00106c55,
+       0x4df00000, 0x0201f800, 0x00106e21, 0x5c03e000,
+       0x02000800, 0x00106c4b, 0x0401ffba, 0x5c000800,
+       0x1c01f000, 0x4803c856, 0x4c040000, 0x4c080000,
+       0x0201f800, 0x00106c55, 0x4df00000, 0x0201f800,
+       0x00106e21, 0x5c03e000, 0x02000800, 0x00106c4b,
+       0x59c40006, 0x84000500, 0x48038806, 0x0201f800,
+       0x00106ede, 0x497b8880, 0x0201f800, 0x0010a9c0,
+       0x0201f800, 0x0010a9ce, 0x0201f800, 0x00101815,
+       0x4a03504c, 0x00000004, 0x4202d800, 0x00000004,
+       0x4a038805, 0x00000001, 0x42001000, 0x00105058,
+       0x0201f800, 0x00106084, 0x0201f800, 0x001006d4,
+       0x0401f8c1, 0x04000006, 0x42006000, 0xfeffffff,
+       0x41786800, 0x0201f800, 0x0010427d, 0x0201f800,
+       0x00100452, 0x42000000, 0x00000001, 0x0201f800,
+       0x00101590, 0x5c001000, 0x5c000800, 0x1c01f000,
+       0x59c40008, 0x8c000508, 0x04020007, 0x4a038808,
+       0x00000010, 0x4201d000, 0x00001388, 0x0201f800,
+       0x0010608e, 0x1c01f000, 0x4c040000, 0x59a80833,
+       0x82040580, 0x00000000, 0x0400000b, 0x82040580,
+       0x00000001, 0x0400000b, 0x82040580, 0x00000002,
+       0x0400000b, 0x82040580, 0x00000003, 0x0400000b,
+       0x0401f057, 0x4a035017, 0x00000000, 0x0401f009,
+       0x4a035017, 0x00000004, 0x0401f006, 0x4a035017,
+       0x00000001, 0x0401f003, 0x4a035017, 0x00000007,
+       0x497b8880, 0x4a038893, 0x00000001, 0x41780000,
+       0x0201f800, 0x00101606, 0x0201f800, 0x00106ede,
+       0x836c0d80, 0x00000004, 0x04000008, 0x59c40006,
+       0x82000500, 0xffffff0f, 0x82000540, 0x04000001,
+       0x48038806, 0x0401f007, 0x59c40006, 0x82000500,
+       0xffffff0f, 0x82000540, 0x04000000, 0x48038806,
+       0x0401f875, 0x04020005, 0x59c40806, 0x82040d00,
+       0xfbffff0f, 0x48078806, 0x4200b000, 0x00000005,
+       0x59c40005, 0x8c000534, 0x04020033, 0x42006000,
+       0xfc18ffff, 0x42006800, 0x01000000, 0x0201f800,
+       0x0010427d, 0x0201f800, 0x00101937, 0x59c408a4,
+       0x82040d00, 0x0000000f, 0x82040d80, 0x0000000c,
+       0x0400000a, 0x42006000, 0xfeffffff, 0x42006800,
+       0x02000000, 0x0201f800, 0x0010427d, 0x8058b040,
+       0x040207e8, 0x0401f8a1, 0x0401f853, 0x04000006,
+       0x42006000, 0xfeffffff, 0x41786800, 0x0201f800,
+       0x0010427d, 0x836c0d80, 0x00000004, 0x04000006,
+       0x59a8084d, 0x42001000, 0x00105065, 0x0201f800,
+       0x0010606e, 0x4a035033, 0x00000004, 0x0401fe31,
+       0x0401f841, 0x04020008, 0x59c408a4, 0x82040d00,
+       0x0000000f, 0x82040580, 0x0000000c, 0x02020800,
+       0x001005d8, 0x5c000800, 0x1c01f000, 0x4803c856,
+       0x4c000000, 0x0201f800, 0x0010609e, 0x4a035010,
+       0x00ffffff, 0x497b5032, 0x59a8002a, 0x82000500,
+       0xffff0000, 0x4803502a, 0x497b8880, 0x497b8893,
+       0x41780000, 0x0201f800, 0x00101606, 0x59c40001,
+       0x82000500, 0xfffffcff, 0x48038801, 0x42006000,
+       0xfc18ffff, 0x41786800, 0x0201f800, 0x0010427d,
+       0x4a038808, 0x00000000, 0x5c000000, 0x800001c0,
+       0x02020800, 0x0010411d, 0x4a038805, 0x040000f0,
+       0x59c40006, 0x82000500, 0xffffffcf, 0x82000540,
+       0x440000c1, 0x48038806, 0x1c01f000, 0x4c5c0000,
+       0x59a8b832, 0x825cbd80, 0x0000aaaa, 0x5c00b800,
+       0x1c01f000, 0x4c5c0000, 0x599cb818, 0x825cbd00,
+       0x00000030, 0x825cbd80, 0x00000000, 0x5c00b800,
+       0x1c01f000, 0x4c5c0000, 0x599cb818, 0x825cbd00,
+       0x00000030, 0x825cbd80, 0x00000010, 0x5c00b800,
+       0x1c01f000, 0x4c5c0000, 0x599cb818, 0x825cbd00,
+       0x00000030, 0x825cbd80, 0x00000020, 0x5c00b800,
+       0x1c01f000, 0x59a80005, 0x4803c857, 0x82000d00,
+       0x00000013, 0x04000025, 0x599c1017, 0x4d3c0000,
+       0x82000500, 0x00000011, 0x04000007, 0x42027800,
+       0x00000400, 0x0201f800, 0x00103b25, 0x0402000a,
+       0x0401f012, 0x42027800, 0x00000408, 0x0201f800,
+       0x00103b25, 0x0400000d, 0x42003000, 0x00000003,
+       0x0401f003, 0x42003000, 0x00000004, 0x42028000,
+       0x0000000e, 0x0201f800, 0x0010a449, 0x599c1017,
+       0x8c08150a, 0x04020007, 0x42028000, 0x00000004,
+       0x0201f800, 0x00101fe5, 0x80000580, 0x0401f80d,
+       0x5c027800, 0x0401f00a, 0x0201f800, 0x00103b25,
+       0x04000007, 0x42028000, 0x0000000f, 0x42003000,
+       0x00000001, 0x0201f800, 0x0010a449, 0x1c01f000,
+       0x59a80005, 0x04000004, 0x82000540, 0x00000010,
+       0x0401f003, 0x82000500, 0xffffffef, 0x48035005,
+       0x4803c857, 0x1c01f000, 0x4803c856, 0x4c580000,
+       0x42000000, 0x0010b8cb, 0x0201f800, 0x0010aa47,
+       0x42000800, 0x0010c0f1, 0x59c40003, 0x44000800,
+       0x59c40004, 0x48000801, 0x59c4000b, 0x48000802,
+       0x59c4008e, 0x48000803, 0x59c4008f, 0x48000804,
+       0x59c40090, 0x48000805, 0x59c40091, 0x48000806,
+       0x59c40092, 0x48000807, 0x59c40093, 0x48000808,
+       0x59c40099, 0x48000809, 0x59c4009e, 0x4800080a,
+       0x59c400aa, 0x4800080b, 0x59c400af, 0x4800080c,
+       0x59c400b2, 0x4800080d, 0x59c400b1, 0x4800080e,
+       0x82040c00, 0x0000000f, 0x41c41800, 0x4200b000,
+       0x00000030, 0x580c0050, 0x44000800, 0x80040800,
+       0x800c1800, 0x8058b040, 0x040207fb, 0x41c41800,
+       0x4200b000, 0x00000020, 0x580c0010, 0x44000800,
+       0x80040800, 0x800c1800, 0x8058b040, 0x040207fb,
+       0x497b8830, 0x4200b000, 0x00000040, 0x59c40031,
+       0x44000800, 0x80040800, 0x8058b040, 0x040207fc,
+       0x497b88ac, 0x4200b000, 0x00000010, 0x59c400ad,
+       0x44000800, 0x80040800, 0x8058b040, 0x040207fc,
+       0x59c41001, 0x4c080000, 0x8408150c, 0x480b8801,
+       0x4a0370e4, 0x00000300, 0x4a0370e5, 0xb0000000,
+       0x42000800, 0x00000800, 0x80040840, 0x02000800,
+       0x001005d8, 0x59b800e5, 0x8c000538, 0x040207fb,
+       0x4a0370e4, 0x00000200, 0x42006000, 0xffffffff,
+       0x42006800, 0x80000000, 0x0201f800, 0x0010427d,
+       0x4a038807, 0x00000001, 0x497b8807, 0x4a038808,
+       0x00000010, 0x42006000, 0xfcf8ffff, 0x42006800,
+       0x01000000, 0x0201f800, 0x0010427d, 0x5c001000,
+       0x480b8801, 0x42000800, 0x0010c0f1, 0x50040000,
+       0x48038803, 0x58040001, 0x48038804, 0x58040002,
+       0x4803880b, 0x58040003, 0x4803888e, 0x58040004,
+       0x4803888f, 0x58040005, 0x48038890, 0x58040006,
+       0x48038891, 0x58040007, 0x48038892, 0x58040008,
+       0x48038893, 0x58040009, 0x48038899, 0x5804000a,
+       0x4803889e, 0x5804000b, 0x480388aa, 0x5804000c,
+       0x480388af, 0x5804000d, 0x480388b2, 0x5804000e,
+       0x480388b1, 0x82040c00, 0x0000000f, 0x41c41800,
+       0x4200b000, 0x00000030, 0x50040000, 0x48001850,
+       0x80040800, 0x800c1800, 0x8058b040, 0x040207fb,
+       0x41c41800, 0x4200b000, 0x00000020, 0x50040000,
+       0x48001810, 0x80040800, 0x800c1800, 0x8058b040,
+       0x040207fb, 0x497b8830, 0x4200b000, 0x00000040,
+       0x50040000, 0x48038831, 0x80040800, 0x8058b040,
+       0x040207fc, 0x497b88ac, 0x4200b000, 0x00000010,
+       0x50040000, 0x480388ad, 0x80040800, 0x8058b040,
+       0x040207fc, 0x497b8880, 0x41780000, 0x0201f800,
+       0x00101606, 0x59c408a4, 0x82040d00, 0x0000000f,
+       0x82040580, 0x0000000c, 0x02020800, 0x001005d8,
+       0x4a038805, 0x04000000, 0x5c00b000, 0x1c01f000,
+       0x4803c856, 0x4c580000, 0x4ce80000, 0x42000000,
+       0x0010b845, 0x0201f800, 0x0010aa47, 0x59c41008,
+       0x4c080000, 0x82080500, 0xffffff7f, 0x48038808,
+       0x59c40004, 0x82000500, 0x00003e02, 0x04000005,
+       0x4201d000, 0x00000014, 0x0201f800, 0x0010608e,
+       0x59c40006, 0x82000500, 0xffffff0f, 0x48038806,
+       0x4a038805, 0x00000010, 0x4a038808, 0x00000004,
+       0x4200b000, 0x00000065, 0x59c40005, 0x8c000508,
+       0x04020012, 0x4201d000, 0x000003e8, 0x0201f800,
+       0x0010608e, 0x8058b040, 0x040207f8, 0x0201f800,
+       0x00106ede, 0x4a038808, 0x00000008, 0x4a035033,
+       0x00000001, 0x4202d800, 0x00000001, 0x82000540,
+       0x00000001, 0x0401f030, 0x0201f800, 0x00100ae0,
+       0x42000000, 0x0010b8a8, 0x0201f800, 0x0010aa47,
+       0x0201f800, 0x00100ef4, 0x497b8880, 0x59a8002a,
+       0x82000500, 0x0000ffff, 0x4c000000, 0x0201f800,
+       0x00101606, 0x5c000000, 0x48038880, 0x4a038808,
+       0x00000000, 0x4200b000, 0x00000065, 0x4a038805,
+       0x000000f0, 0x0201f800, 0x00101937, 0x42000800,
+       0x000000f0, 0x59c40005, 0x80040d00, 0x04000008,
+       0x4201d000, 0x000003e8, 0x0201f800, 0x0010608e,
+       0x8058b040, 0x040207f2, 0x0401f7d1, 0x59c40006,
+       0x82000540, 0x000000f0, 0x48038806, 0x59a8001e,
+       0x80000540, 0x04020002, 0x80000000, 0x48038893,
+       0x80000580, 0x5c001000, 0x4df00000, 0x0201f800,
+       0x0010195d, 0x5c03e000, 0x480b8808, 0x5c01d000,
+       0x5c00b000, 0x1c01f000, 0x4803c856, 0x4c580000,
+       0x4ce80000, 0x59c41008, 0x82080500, 0xffffff7f,
+       0x48038808, 0x4c080000, 0x59c40004, 0x82000500,
+       0x00003e02, 0x04000005, 0x4201d000, 0x00000014,
+       0x0201f800, 0x0010608e, 0x0201f800, 0x00100ae0,
+       0x42000000, 0x0010b8a9, 0x0201f800, 0x0010aa47,
+       0x0201f800, 0x00100ef4, 0x4a038808, 0x00000002,
+       0x80000580, 0x48038880, 0x48038893, 0x0201f800,
+       0x00101606, 0x4200b000, 0x00000384, 0x4a038805,
+       0x000000f0, 0x0201f800, 0x00101937, 0x42000800,
+       0x000000f0, 0x59c40005, 0x80040d00, 0x04000015,
+       0x82000500, 0x000000d0, 0x04020012, 0x4201d000,
+       0x00000067, 0x0201f800, 0x0010608e, 0x8058b040,
+       0x040207ef, 0x0201f800, 0x00106ede, 0x4a038808,
+       0x00000008, 0x4a035033, 0x00000001, 0x4202d800,
+       0x00000001, 0x82000540, 0x00000001, 0x0401f010,
+       0x497b8880, 0x59a8001e, 0x80000540, 0x04020002,
+       0x80000000, 0x48038893, 0x59a8002a, 0x82000500,
+       0x0000ffff, 0x4c000000, 0x0201f800, 0x00101606,
+       0x5c000000, 0x48038880, 0x80000580, 0x5c001000,
+       0x4df00000, 0x0201f800, 0x0010195d, 0x5c03e000,
+       0x480b8808, 0x5c01d000, 0x5c00b000, 0x1c01f000,
+       0x4803c856, 0x59c40004, 0x82000500, 0x00003e02,
+       0x0400000a, 0x0201f800, 0x00106ede, 0x4a038808,
+       0x00000008, 0x4a035033, 0x00000001, 0x4202d800,
+       0x00000001, 0x0401f052, 0x0201f800, 0x00100ae0,
+       0x42000000, 0x0010b8aa, 0x0201f800, 0x0010aa47,
+       0x0201f800, 0x00100ef4, 0x59c40006, 0x84000508,
+       0x48038806, 0x4a038805, 0x00000010, 0x59a80805,
+       0x84040d4c, 0x48075005, 0x42000800, 0x00000064,
+       0x42001000, 0x00105058, 0x0201f800, 0x0010606e,
+       0x4a038808, 0x00000000, 0x497b8880, 0x4a038805,
+       0x000000f0, 0x0201f800, 0x00101937, 0x42000800,
+       0x000000f0, 0x59c40005, 0x80040d00, 0x0400000e,
+       0x82000500, 0x000000e0, 0x0402000b, 0x4201d000,
+       0x000003e8, 0x0201f800, 0x0010608e, 0x0201f800,
+       0x00105f48, 0x59940004, 0x80000540, 0x040207ec,
+       0x0401f023, 0x4c080000, 0x42001000, 0x00105065,
+       0x0201f800, 0x00105f90, 0x42001000, 0x00105058,
+       0x0201f800, 0x00106084, 0x5c001000, 0x497b8880,
+       0x59a8001e, 0x80000540, 0x04020002, 0x80000000,
+       0x48038893, 0x59a8002a, 0x82000500, 0x0000ffff,
+       0x4c000000, 0x0201f800, 0x00101606, 0x5c000000,
+       0x48038880, 0x59a80805, 0x84040d0c, 0x48075005,
+       0x59c40006, 0x84000548, 0x48038806, 0x0201f800,
+       0x0010195d, 0x4a038808, 0x00000080, 0x1c01f000,
+       0x4803c856, 0x4d400000, 0x4d3c0000, 0x0201f800,
+       0x00106ede, 0x0201f800, 0x0010ab33, 0x04020025,
+       0x599c1017, 0x59a80805, 0x8c040d00, 0x0402000c,
+       0x8c08151a, 0x0400001f, 0x84040d42, 0x48075005,
+       0x42028000, 0x00000004, 0x42027800, 0x0000000c,
+       0x8c081508, 0x04020008, 0x0401f012, 0x42028000,
+       0x00000004, 0x42027800, 0x00000004, 0x8c081508,
+       0x0400000c, 0x4d400000, 0x42028000, 0x0000000e,
+       0x42028800, 0x0000ffff, 0x0201f800, 0x0010a446,
+       0x5c028000, 0x599c0817, 0x8c040d0a, 0x04020005,
+       0x4943c857, 0x493fc857, 0x0201f800, 0x00101fe5,
+       0x497b8880, 0x4202d800, 0x00000001, 0x0401fcfb,
+       0x5c027800, 0x5c028000, 0x1c01f000, 0x0201f800,
+       0x00100ae0, 0x42000000, 0x0010b8ab, 0x0201f800,
+       0x0010aa47, 0x0201f800, 0x00100ef4, 0x42000000,
+       0x00000001, 0x0201f800, 0x00101606, 0x4a038880,
+       0x00000001, 0x0201f000, 0x0010195d, 0x4202e000,
+       0x00000000, 0x4a033015, 0x00000001, 0x497b301d,
+       0x497b3006, 0x4a03b004, 0x60000001, 0x59d80005,
+       0x4a03b004, 0x90000001, 0x4a03a804, 0x60000001,
+       0x59d40005, 0x4a03a804, 0x90000001, 0x0201f000,
+       0x00105983, 0x4a03c825, 0x00000004, 0x4a03c827,
+       0x00000004, 0x599c0409, 0x80000d40, 0x04000020,
+       0x599c0407, 0x80000540, 0x04000007, 0x800000cc,
+       0x599c100b, 0x80080400, 0x4803b000, 0x497bb002,
+       0x59d80001, 0x599c000b, 0x4803b000, 0x599c000c,
+       0x4803b001, 0x599c0407, 0x80000540, 0x04020002,
+       0x497bb002, 0x599c0c09, 0x82040540, 0x00400000,
+       0x4803b003, 0x4a03b009, 0x00000004, 0x4a03b004,
+       0x10000001, 0x59e00803, 0x82040d00, 0xfffffeff,
+       0x82040d40, 0x00008000, 0x4807c003, 0x599c040a,
+       0x80000540, 0x04000020, 0x599c0408, 0x80000540,
+       0x04000007, 0x800000cc, 0x599c100f, 0x80080400,
+       0x4803a800, 0x497ba802, 0x59d40001, 0x599c000f,
+       0x4803a800, 0x599c0010, 0x4803a801, 0x599c0408,
+       0x80000540, 0x04020002, 0x497ba802, 0x599c0c0a,
+       0x82040540, 0x00400000, 0x4803a803, 0x4a03a809,
+       0x00000004, 0x4a03a804, 0x10000001, 0x59e00803,
+       0x82040d00, 0xfffffbff, 0x82040d40, 0x00008000,
+       0x4807c003, 0x800409c0, 0x04000007, 0x4202e000,
+       0x00000001, 0x0200b800, 0x00020551, 0x0200f000,
+       0x00020566, 0x1c01f000, 0x0201f800, 0x001005d8,
+       0x1c01f000, 0x4df00000, 0x4203e000, 0x50000000,
+       0x59981005, 0x800811c0, 0x0400001e, 0x58080005,
+       0x82000d00, 0x43018780, 0x02020000, 0x00105846,
+       0x8c000508, 0x04000015, 0x580a5808, 0x592c0204,
+       0x497a5800, 0x497a5801, 0x82000500, 0x000000ff,
+       0x82000c80, 0x0000004b, 0x0402100b, 0x0c01f80f,
+       0x5c03e000, 0x83700580, 0x00000003, 0x040007e6,
+       0x0200f800, 0x00020566, 0x0200b000, 0x00020551,
+       0x1c01f000, 0x0401f850, 0x5c03e000, 0x0401f7f9,
+       0x0401f8de, 0x0401f7fd, 0x00105491, 0x00105491,
+       0x00105491, 0x00105491, 0x001054a1, 0x00105491,
+       0x00105491, 0x00105491, 0x00105491, 0x00105491,
+       0x00105519, 0x00105491, 0x00105491, 0x001054a1,
+       0x001054a1, 0x00105491, 0x00105491, 0x00105491,
+       0x00105491, 0x00105491, 0x00105491, 0x00105491,
+       0x00105491, 0x00105491, 0x00105491, 0x00105491,
+       0x00105491, 0x00105491, 0x00105491, 0x00105491,
+       0x00105491, 0x00105491, 0x00105491, 0x00105491,
+       0x00105491, 0x00105491, 0x00105491, 0x00105491,
+       0x00105491, 0x00105491, 0x00105491, 0x00105491,
+       0x00105491, 0x00105491, 0x00105491, 0x00105491,
+       0x00105491, 0x00105491, 0x00105491, 0x00105491,
+       0x00105491, 0x00105491, 0x00105491, 0x00105491,
+       0x00105491, 0x00105491, 0x00105491, 0x00105491,
+       0x00105491, 0x00105491, 0x00105491, 0x00105491,
+       0x00105491, 0x00105491, 0x00105491, 0x00105491,
+       0x00105491, 0x00105491, 0x00105491, 0x00105491,
+       0x00105491, 0x00105491, 0x00105491, 0x00105491,
+       0x00105491, 0x492fc857, 0x42000000, 0x0010b85e,
+       0x0201f800, 0x0010aa47, 0x42000000, 0x00000400,
+       0x0401f019, 0x492fc857, 0x42000000, 0x0010b85d,
+       0x0201f800, 0x0010aa47, 0x42000000, 0x00001000,
+       0x0401f011, 0x492fc857, 0x42000000, 0x0010b85c,
+       0x0201f800, 0x0010aa47, 0x42000000, 0x00002000,
+       0x0401f009, 0x492fc857, 0x42000000, 0x0010b85f,
+       0x0201f800, 0x0010aa47, 0x42000000, 0x00000800,
+       0x0401f001, 0x4803c857, 0x4202e000, 0x00000001,
+       0x592c0c04, 0x82040d00, 0xffff80ff, 0x80040540,
+       0x48025c04, 0x0201f000, 0x000202da, 0x592c0204,
+       0x492fc857, 0x80000110, 0x040007db, 0x80000040,
+       0x04000025, 0x48033002, 0x492f3003, 0x492f3004,
+       0x4a033008, 0x001054e5, 0x4202e000, 0x00000003,
+       0x1c01f000, 0x592c0204, 0x492fc857, 0x80000110,
+       0x040007cd, 0x80000040, 0x04000033, 0x48033002,
+       0x492f3003, 0x492f3004, 0x4a033008, 0x00105501,
+       0x4202e000, 0x00000003, 0x1c01f000, 0x0201f800,
+       0x0010ab33, 0x02020000, 0x000204d9, 0x42028000,
+       0x00000028, 0x41780800, 0x417a6000, 0x0201f800,
+       0x00104e70, 0x0201f800, 0x001091c6, 0x0201f000,
+       0x000202da, 0x592c0a0a, 0x8c040d02, 0x04020016,
+       0x59a80021, 0x492fc857, 0x80000540, 0x0402000f,
+       0x592c0207, 0x80000540, 0x04000005, 0x0201f800,
+       0x00104326, 0x04020004, 0x1c01f000, 0x42000000,
+       0x00000000, 0x592c0a06, 0x48065c06, 0x48025a06,
+       0x0201f000, 0x000202da, 0x42000000, 0x00000028,
+       0x0401f7f9, 0x42000800, 0x00000009, 0x0201f000,
+       0x0010665b, 0x592c0208, 0x492fc857, 0x82000c80,
+       0x0000199a, 0x040217a4, 0x592c0408, 0x80000540,
+       0x040207a1, 0x59a80821, 0x800409c0, 0x04020009,
+       0x592c0207, 0x80000540, 0x0400079b, 0x497a5a06,
+       0x0201f800, 0x00104385, 0x04020004, 0x1c01f000,
+       0x42000000, 0x00000028, 0x48025a06, 0x0201f000,
+       0x000202da, 0x59980804, 0x59980002, 0x48065800,
+       0x492c0801, 0x492f3004, 0x80000040, 0x48033002,
+       0x04000002, 0x1c01f000, 0x599a5803, 0x59980008,
+       0x4202e000, 0x00000001, 0x0801f000, 0x592e8a06,
+       0x592c0406, 0x4803c856, 0x82000500, 0x000000ff,
+       0x4200b800, 0x00000001, 0x82000d80, 0x00000001,
+       0x04000015, 0x417a8800, 0x4200b800, 0x000007f0,
+       0x82000d80, 0x00000002, 0x0400000f, 0x80000540,
+       0x02020000, 0x000202da, 0x592e8a06, 0x0201f800,
+       0x00020245, 0x02020000, 0x000202da, 0x592e9008,
+       0x592e9809, 0x0201f800, 0x00104713, 0x0201f000,
+       0x000202da, 0x59a80805, 0x84040d00, 0x48075005,
+       0x0201f800, 0x00020245, 0x02000800, 0x0010482c,
+       0x81468800, 0x805cb840, 0x040207fa, 0x0201f000,
+       0x000202da, 0x592c0a08, 0x4807c857, 0x82040580,
+       0x0000000e, 0x04000045, 0x82040580, 0x00000046,
+       0x04000046, 0x82040580, 0x00000045, 0x04000020,
+       0x82040580, 0x00000029, 0x04000010, 0x82040580,
+       0x0000002a, 0x04000009, 0x82040580, 0x0000000f,
+       0x040001fc, 0x82040580, 0x0000002e, 0x040001f9,
+       0x4807c856, 0x0401f1f2, 0x59a80805, 0x84040d04,
+       0x48075005, 0x0401f1f3, 0x592e8a06, 0x0201f800,
+       0x00020245, 0x040201ef, 0x59340200, 0x84000518,
+       0x48026a00, 0x592e6009, 0x4933c857, 0x83300580,
+       0xffffffff, 0x0402002a, 0x0401f1e6, 0x592c1407,
+       0x480bc857, 0x0201f800, 0x00109410, 0x411e6000,
+       0x04020003, 0x4803c856, 0x0401f1d9, 0x592e3809,
+       0x591c1414, 0x84081516, 0x84081554, 0x480a3c14,
+       0x4a026403, 0x0000003a, 0x592c040b, 0x80000540,
+       0x04000007, 0x4a026403, 0x0000003b, 0x592c020c,
+       0x4802641a, 0x592c040c, 0x4802621a, 0x4a026203,
+       0x00000001, 0x42000800, 0x80000040, 0x0201f800,
+       0x00020721, 0x0401f1c7, 0x59a80068, 0x84000510,
+       0x48035068, 0x0401f1c3, 0x592c1207, 0x8c081500,
+       0x040201c0, 0x592e8a06, 0x592e6009, 0x0201f800,
+       0x0010941a, 0x04020003, 0x4803c856, 0x0401f1b4,
+       0x59300c06, 0x82040580, 0x00000004, 0x04000003,
+       0x4803c856, 0x0401f1ae, 0x59300a03, 0x82040580,
+       0x00000007, 0x04000003, 0x4803c856, 0x0401f1a8,
+       0x59300c03, 0x82040580, 0x00000001, 0x04000021,
+       0x82040580, 0x00000003, 0x04000016, 0x82040580,
+       0x00000006, 0x04000020, 0x82040580, 0x00000008,
+       0x04000015, 0x82040580, 0x0000000a, 0x0400000a,
+       0x82040580, 0x0000000c, 0x04000004, 0x82040580,
+       0x0000002e, 0x04020018, 0x42000800, 0x00000009,
+       0x0401f013, 0x42000800, 0x00000005, 0x0401f010,
+       0x417a7800, 0x0201f800, 0x0010203c, 0x4a026406,
+       0x00000001, 0x42000800, 0x00000003, 0x0401f008,
+       0x417a7800, 0x0201f800, 0x0010203c, 0x4a026406,
+       0x00000001, 0x42000800, 0x0000000b, 0x0201f800,
+       0x00104571, 0x4a026203, 0x00000001, 0x0201f800,
+       0x0010672b, 0x0401f17b, 0x40000800, 0x58040000,
+       0x80000540, 0x040207fd, 0x492c0800, 0x1c01f000,
+       0x492fc857, 0x59300c06, 0x82040580, 0x00000006,
+       0x04020094, 0x0201f800, 0x001049e7, 0x04020005,
+       0x59340200, 0x8c00051a, 0x02000000, 0x00020533,
+       0x59340200, 0x8c00050e, 0x0400008a, 0x59300203,
+       0x42027800, 0x00000001, 0x82000580, 0x00000007,
+       0x02020000, 0x00020533, 0x4a026203, 0x00000002,
+       0x0201f000, 0x00020533, 0x42028000, 0x00000002,
+       0x4a026206, 0x00000014, 0x4d2c0000, 0x0201f800,
+       0x0010a1d1, 0x5c025800, 0x59300c06, 0x4807c857,
+       0x82040580, 0x00000007, 0x04020063, 0x492fc857,
+       0x4a025a06, 0x00000001, 0x0201f000, 0x000202da,
+       0x592c240a, 0x492fc857, 0x4813c857, 0x8c10251c,
+       0x04020016, 0x8c10251a, 0x04000003, 0x8c10250a,
+       0x04000069, 0x59340a00, 0x8c040d0e, 0x04000003,
+       0x8c10251e, 0x04000064, 0x0201f800, 0x0002075a,
+       0x0400006b, 0x592c240a, 0x49366009, 0x49325809,
+       0x4a026406, 0x00000006, 0x4a026203, 0x00000007,
+       0x0201f000, 0x0002052f, 0x592c0a0c, 0x5934000f,
+       0x41784000, 0x80001540, 0x0400006d, 0x58080204,
+       0x82000500, 0x000000ff, 0x82000580, 0x00000012,
+       0x04020004, 0x5808020c, 0x80040580, 0x04000004,
+       0x58080000, 0x40084000, 0x0401f7f3, 0x58080000,
+       0x49781000, 0x802041c0, 0x04000006, 0x48004000,
+       0x80000540, 0x04020007, 0x48226810, 0x0401f005,
+       0x4802680f, 0x80000540, 0x04020002, 0x497a6810,
+       0x4d2c0000, 0x400a5800, 0x4a025a06, 0x00000002,
+       0x0201f800, 0x000202da, 0x5c025800, 0x0401f7bc,
+       0x592c040a, 0x8c00051c, 0x04000016, 0x592c0206,
+       0x82000580, 0x0000ffff, 0x04020012, 0x592e6009,
+       0x83300580, 0xffffffff, 0x040007b1, 0x83300480,
+       0x0010d1c0, 0x04001010, 0x59a8000b, 0x81300480,
+       0x0402100d, 0x59300008, 0x800001c0, 0x04020005,
+       0x59300203, 0x82000580, 0x00000007, 0x04000797,
+       0x492fc857, 0x4a025a06, 0x00000029, 0x0201f000,
+       0x000202da, 0x492fc857, 0x4a025a06, 0x00000008,
+       0x0201f000, 0x000202da, 0x492fc857, 0x4a025a06,
+       0x00000045, 0x0201f000, 0x000202da, 0x492fc857,
+       0x4a025a06, 0x0000002a, 0x0201f000, 0x000202da,
+       0x492fc857, 0x4a025a06, 0x00000028, 0x0201f000,
+       0x000202da, 0x492fc857, 0x4a025a06, 0x00000006,
+       0x0201f000, 0x000202da, 0x492fc857, 0x4a025a06,
+       0x0000000e, 0x0201f000, 0x000202da, 0x59340010,
+       0x492e6810, 0x492fc857, 0x80000d40, 0x04000003,
+       0x492c0800, 0x1c01f000, 0x5934040b, 0x492e680f,
+       0x492fc857, 0x4803c857, 0x80000540, 0x04020003,
+       0x4a026a03, 0x00000001, 0x1c01f000, 0x59a8000e,
+       0x81640480, 0x0402176e, 0x42026000, 0x0010d1c0,
+       0x59300009, 0x81340580, 0x04020004, 0x59300202,
+       0x80040580, 0x04000759, 0x83326400, 0x00000024,
+       0x41580000, 0x81300480, 0x040017f6, 0x0401f760,
+       0x492fc857, 0x592c0407, 0x82000c80, 0x0000199a,
+       0x040215f1, 0x592c0204, 0x80000112, 0x040205de,
+       0x592e8a06, 0x0201f800, 0x00020245, 0x04020059,
+       0x0201f800, 0x001049e7, 0x04020059, 0x592e780a,
+       0x493fc857, 0x8d3e7d3e, 0x04020007, 0x59a80021,
+       0x80000540, 0x0402004f, 0x0201f800, 0x00104838,
+       0x040005dd, 0x833c1d00, 0x0000001f, 0x040005da,
+       0x592c0207, 0x82000c80, 0x00001000, 0x040215d6,
+       0x800000c2, 0x800008c4, 0x8005d400, 0x592e9008,
+       0x592e9809, 0x5934080d, 0x800409c0, 0x0402002e,
+       0x833c1d00, 0x0000001f, 0x81780040, 0x80000000,
+       0x800c1902, 0x040217fe, 0x040205c7, 0x0c01f001,
+       0x001056e9, 0x001056ec, 0x001056f9, 0x001056fc,
+       0x001056ff, 0x0201f800, 0x0010903e, 0x0401f01a,
+       0x0201f800, 0x0010480b, 0x04000027, 0x80e9d1c0,
+       0x02020800, 0x00105fae, 0x42028000, 0x00000005,
+       0x417a9000, 0x417a9800, 0x0201f800, 0x0010904e,
+       0x0401f00d, 0x42027000, 0x0000004d, 0x0401f006,
+       0x42027000, 0x0000004e, 0x0401f003, 0x42027000,
+       0x00000052, 0x0201f800, 0x001046c9, 0x02020800,
+       0x0010907e, 0x04000010, 0x8d3e7d3e, 0x04020017,
+       0x1c01f000, 0x58040002, 0x80000540, 0x04020007,
+       0x4d3c0000, 0x40067800, 0x0201f800, 0x001047eb,
+       0x5c027800, 0x040207cb, 0x4a025a06, 0x00000030,
+       0x0401f00d, 0x4a025a06, 0x0000002c, 0x0401f00a,
+       0x4a025a06, 0x00000028, 0x0401f007, 0x4a025a06,
+       0x00000029, 0x0401f004, 0x497a5c09, 0x4a025a06,
+       0x00000000, 0x4a025a04, 0x00000103, 0x0201f000,
+       0x000202da, 0x492fc857, 0x592c0204, 0x80000110,
+       0x80000040, 0x04000002, 0x0401f56f, 0x592c0207,
+       0x82000500, 0x000003ff, 0x48025a07, 0x8c000506,
+       0x04000004, 0x82000500, 0x00000070, 0x04020004,
+       0x59a80821, 0x800409c0, 0x04020018, 0x4a025a06,
+       0x0000dead, 0x592c0408, 0x82000500, 0x0000f0ff,
+       0x48025c08, 0x0201f800, 0x001043b4, 0x04020002,
+       0x1c01f000, 0x49425a06, 0x8058b1c0, 0x04000009,
+       0x0201f800, 0x0010955f, 0x0401f80f, 0x44042800,
+       0x82580580, 0x00000002, 0x04020002, 0x48082801,
+       0x0201f000, 0x000202da, 0x42028000, 0x00000031,
+       0x42000800, 0x00000001, 0x4200b000, 0x00000001,
+       0x0401f7ed, 0x592c0408, 0x80000118, 0x832c2c00,
+       0x00000009, 0x80142c00, 0x1c01f000, 0x492fc857,
+       0x4a025a08, 0x00000006, 0x0201f000, 0x000202da,
+       0x492fc857, 0x4a025a08, 0x00000001, 0x0201f000,
+       0x000202da, 0x492fc857, 0x592c040a, 0x82000500,
+       0x00000003, 0x04000020, 0x0201f800, 0x0002075a,
+       0x04000021, 0x592c0204, 0x492e6008, 0x82000500,
+       0x000000ff, 0x82000580, 0x00000045, 0x0400000e,
+       0x592c000b, 0x0201f800, 0x00105c9a, 0x02000800,
+       0x00020245, 0x04020018, 0x42027000, 0x00000041,
+       0x49366009, 0x4a026406, 0x00000001, 0x0201f000,
+       0x000207a1, 0x59300015, 0x8400055e, 0x48026015,
+       0x42026800, 0x0010b524, 0x42027000, 0x00000040,
+       0x0401f7f4, 0x4a025a06, 0x00000101, 0x0201f000,
+       0x000202da, 0x4a025a06, 0x0000002c, 0x0201f000,
+       0x000202da, 0x4a025a06, 0x00000028, 0x0201f800,
+       0x000202da, 0x0201f000, 0x0002077d, 0x492fc857,
+       0x0201f800, 0x001062e1, 0x0400000b, 0x592c0204,
+       0x80000110, 0x80000040, 0x040204fb, 0x592c0c06,
+       0x800409c0, 0x04000009, 0x42000000, 0x00000102,
+       0x0401f003, 0x42000000, 0x00000104, 0x48025a06,
+       0x0201f000, 0x000202da, 0x592c0c07, 0x800409c0,
+       0x04000024, 0x82040480, 0x00000005, 0x04021021,
+       0x4c040000, 0x80040800, 0x0201f800, 0x00106306,
+       0x5c001000, 0x04020018, 0x832c0400, 0x00000008,
+       0x4000a000, 0x0201f800, 0x0010632f, 0x04020012,
+       0x592c1207, 0x82cc0580, 0x0010b50e, 0x04020009,
+       0x58c80c0b, 0x84040d00, 0x84040d02, 0x8c081500,
+       0x04000002, 0x84040d5e, 0x4805940b, 0x0401f001,
+       0x42000000, 0x00000000, 0x48025a06, 0x0201f000,
+       0x000202da, 0x42000000, 0x00000103, 0x0401f7fb,
+       0x42000000, 0x00000102, 0x0401f7f8, 0x492fc857,
+       0x592e7c06, 0x833c0500, 0xfffffffe, 0x04020043,
+       0x592c4007, 0x42026000, 0x0010d1c0, 0x41581800,
+       0x400c0000, 0x81300480, 0x04021023, 0x59300203,
+       0x82000580, 0x00000000, 0x04000007, 0x59300008,
+       0x80000d40, 0x04000004, 0x58040005, 0x80200580,
+       0x04000004, 0x83326400, 0x00000024, 0x0401f7f1,
+       0x58040204, 0x82000500, 0x000000ff, 0x82000d80,
+       0x00000053, 0x04000007, 0x82000d80, 0x00000048,
+       0x04000004, 0x82000580, 0x00000018, 0x04020023,
+       0x4d2c0000, 0x0201f800, 0x00108be3, 0x5c025800,
+       0x0400001e, 0x4a025a06, 0x00000000, 0x0201f000,
+       0x000202da, 0x592e8a06, 0x83440480, 0x000007f0,
+       0x04021016, 0x83440400, 0x0010ac00, 0x50000000,
+       0x80026d40, 0x04000011, 0x4d2c0000, 0x0201f800,
+       0x001047cb, 0x0400000c, 0x42028000, 0x00000005,
+       0x592c0a08, 0x0201f800, 0x00104e70, 0x0201f800,
+       0x001091cc, 0x0201f800, 0x000202da, 0x5c025800,
+       0x0401f7e5, 0x5c025800, 0x4a025a06, 0x00000031,
+       0x0201f000, 0x000202da, 0x492fc857, 0x4d2c0000,
+       0x0201f800, 0x001007e4, 0x04000016, 0x492fc857,
+       0x412f4000, 0x0201f800, 0x001007e4, 0x0400000e,
+       0x492fc857, 0x412dd800, 0x0201f800, 0x00103b28,
+       0x0201f800, 0x00103b32, 0x49a1d80b, 0x5c025800,
+       0x492dd80a, 0x0201f800, 0x00102214, 0x0201f000,
+       0x00102233, 0x41a25800, 0x0201f800, 0x001007f4,
+       0x5c025800, 0x4a025a06, 0x00004005, 0x4a025c06,
+       0x00000002, 0x0201f000, 0x000202da, 0x4807c857,
+       0x485fc857, 0x4200b800, 0x00000001, 0x5c000800,
+       0x4c5c0000, 0x0401f005, 0x4807c857, 0x485fc857,
+       0x5c000800, 0x4d780000, 0x4803c857, 0x492fc857,
+       0x8c00050e, 0x02020800, 0x001005d0, 0x4203e000,
+       0x50000000, 0x4200b800, 0x00008003, 0x0201f000,
+       0x001005dd, 0x592c0204, 0x80000110, 0x80000040,
+       0x04020441, 0x0201f800, 0x00104a34, 0x04020002,
+       0x1c01f000, 0x49425a06, 0x4806580d, 0x480a580e,
+       0x4943c857, 0x4807c857, 0x480bc857, 0x0201f000,
+       0x000202da, 0x592c0204, 0x80000110, 0x80000040,
+       0x04020431, 0x0201f800, 0x00104b8b, 0x04020002,
+       0x1c01f000, 0x49425a06, 0x48065811, 0x480a5812,
+       0x0201f000, 0x000202da, 0x592c0204, 0x80000110,
+       0x04000425, 0x80000040, 0x0402000c, 0x4202e000,
+       0x00000001, 0x592c020a, 0x8c000504, 0x02000000,
+       0x000204d0, 0x592c0207, 0x82000c80, 0x00001001,
+       0x04021429, 0x0401f009, 0x4202e000, 0x00000003,
+       0x48033002, 0x492f3003, 0x492f3004, 0x4a033008,
+       0x000204d0, 0x1c01f000, 0x4202e000, 0x00000002,
+       0x42000000, 0x0010beda, 0x50007000, 0x492c700b,
+       0x4978700e, 0x4978700c, 0x592c0011, 0x592c0812,
+       0x48007007, 0x48047008, 0x592c1013, 0x82080500,
+       0xffff0000, 0x04000003, 0x0201f800, 0x001005d8,
+       0x4978700d, 0x82080480, 0x00000180, 0x4803c857,
+       0x04001007, 0x4800700f, 0x4a007005, 0x00000180,
+       0x4a007004, 0x00000060, 0x0401f005, 0x4978700f,
+       0x48087005, 0x80081104, 0x48087004, 0x5838000a,
+       0x48007003, 0x40381000, 0x0201f000, 0x00100858,
+       0x0201f800, 0x001007d3, 0x04000003, 0x59980007,
+       0x0801f000, 0x1c01f000, 0x40307000, 0x5838000b,
+       0x80025d40, 0x0400001b, 0x58380002, 0x82000580,
+       0x00000100, 0x0400001d, 0x4c380000, 0x592c0204,
+       0x82000500, 0x000000ff, 0x82000580, 0x00000012,
+       0x0400000b, 0x592c0208, 0x8400054e, 0x48025a08,
+       0x4a025a06, 0x00000002, 0x4a025a04, 0x00000103,
+       0x0201f800, 0x000202c1, 0x0401f005, 0x4a025a06,
+       0x00000010, 0x0201f800, 0x000202da, 0x5c007000,
+       0x4202e000, 0x00000001, 0x4a007002, 0x00000100,
+       0x49787010, 0x1c01f000, 0x58380004, 0x82000480,
+       0x00000003, 0x04000087, 0x58380010, 0x8c000500,
+       0x04020019, 0x4200b000, 0x00000003, 0x832cac00,
+       0x00000011, 0x5838000a, 0x5838100d, 0x8008a400,
+       0x4c380000, 0x0201f800, 0x0010ab17, 0x5c007000,
+       0x5838000d, 0x82000400, 0x00000003, 0x4800700d,
+       0x4a007010, 0x00000001, 0x58380004, 0x82000480,
+       0x00000003, 0x48007004, 0x82000580, 0x00000003,
+       0x0400006c, 0x5838000e, 0x80001d40, 0x04020020,
+       0x4c380000, 0x0201f800, 0x001007d3, 0x5c007000,
+       0x04000010, 0x4a025a04, 0x0000010a, 0x42001800,
+       0x00000005, 0x480c700e, 0x5838000c, 0x80000540,
+       0x04020002, 0x5838000b, 0x40000800, 0x492c0801,
+       0x492c700c, 0x42000800, 0x0000000f, 0x0401f011,
+       0x4202e000, 0x00000008, 0x4a033007, 0x00105915,
+       0x1c01f000, 0x4202e000, 0x00000002, 0x42000000,
+       0x0010beda, 0x50007000, 0x0401f7e7, 0x583a580c,
+       0x400c0000, 0x42000800, 0x00000014, 0x80040c80,
+       0x58381004, 0x5838000f, 0x41783000, 0x80000540,
+       0x04020005, 0x84183540, 0x82081480, 0x00000003,
+       0x0400003c, 0x40080000, 0x80040480, 0x04001002,
+       0x40080800, 0x4004b000, 0x412c0000, 0x800c0400,
+       0x4000a800, 0x5838000a, 0x5838100d, 0x8008a400,
+       0x4c080000, 0x4c040000, 0x4c0c0000, 0x4c380000,
+       0x0201f800, 0x0010ab17, 0x5c007000, 0x5c001800,
+       0x5c000800, 0x40040000, 0x58381004, 0x80080480,
+       0x48007004, 0x82000580, 0x00000003, 0x04000002,
+       0x84183500, 0x5c000000, 0x80041400, 0x82080480,
+       0x00000060, 0x04020003, 0x84183542, 0x41781000,
+       0x400c0000, 0x80041c00, 0x820c0480, 0x00000014,
+       0x04020003, 0x84183544, 0x40001800, 0x40080800,
+       0x4804700d, 0x480c700e, 0x40180000, 0x0c01f001,
+       0x00105960, 0x00105964, 0x00105962, 0x00105960,
+       0x001058fc, 0x00105964, 0x00105962, 0x00105960,
+       0x0201f800, 0x001005d8, 0x5838100f, 0x0401f739,
+       0x5838080d, 0x82040400, 0x00000002, 0x5838100a,
+       0x80080400, 0x50001000, 0x800811c0, 0x0402000f,
+       0x4202e000, 0x00000001, 0x583a580b, 0x4978700b,
+       0x49787010, 0x592c0204, 0x82000500, 0x000000ff,
+       0x82000580, 0x00000012, 0x02000000, 0x00020507,
+       0x0201f000, 0x000204d0, 0x5838000a, 0x80040c00,
+       0x82381c00, 0x00000007, 0x54041800, 0x80040800,
+       0x800c1800, 0x54041800, 0x0401f71a, 0x0201f800,
+       0x001007d3, 0x02000800, 0x001005d8, 0x4a02580a,
+       0x0010be79, 0x42000800, 0x0010beda, 0x452c0800,
+       0x497a580b, 0x497a580c, 0x497a580d, 0x497a580e,
+       0x497a580f, 0x4a025809, 0x001058b6, 0x497a5810,
+       0x4a025802, 0x00000100, 0x4a025801, 0x00000001,
+       0x1c01f000, 0x59c80007, 0x8c000502, 0x04000070,
+       0x835c2c80, 0x00000005, 0x02001000, 0x00105f23,
+       0x59c82817, 0x497b9005, 0x82140500, 0x00e00000,
+       0x0402004f, 0x82140500, 0x000003ff, 0x82001c00,
+       0x00000006, 0x41cc2000, 0x42003000, 0x00006080,
+       0x820c0480, 0x00000040, 0x04001006, 0x42001000,
+       0x00000040, 0x820c1c80, 0x00000040, 0x0401f003,
+       0x400c1000, 0x41781800, 0x54182000, 0x80102000,
+       0x80183000, 0x80081040, 0x040207fc, 0x800c19c0,
+       0x04000005, 0x59c80005, 0x80000000, 0x48039005,
+       0x0401f7ea, 0x82140500, 0x01f60000, 0x04020029,
+       0x82140500, 0x0000f000, 0x0400000b, 0x82000c80,
+       0x00002000, 0x0402100f, 0x82140500, 0x0e000000,
+       0x80000132, 0x0c01f840, 0x4a039005, 0x00000140,
+       0x1c01f000, 0x59cc0400, 0x82000500, 0x0000ff00,
+       0x82000580, 0x00008100, 0x040007f4, 0x0401f01c,
+       0x4817c857, 0x82140500, 0x000003ff, 0x04020007,
+       0x59cc0400, 0x82000500, 0x0000ff00, 0x82000580,
+       0x00008100, 0x04020012, 0x42000000, 0x0010b8bd,
+       0x0201f800, 0x0010aa47, 0x0201f800, 0x00105dfa,
+       0x4803c856, 0x4a039005, 0x00000140, 0x0401f020,
+       0x4817c857, 0x82140500, 0x00f60000, 0x04020004,
+       0x0201f800, 0x00105e35, 0x040207d2, 0x0201f800,
+       0x0010513b, 0x04000010, 0x59c400a4, 0x4803c857,
+       0x82000500, 0x0000000f, 0x82000580, 0x0000000a,
+       0x04020009, 0x497b5016, 0x59c400a3, 0x82000540,
+       0x00080000, 0x480388a3, 0x82000500, 0xfff7ffff,
+       0x480388a3, 0x4817c856, 0x0201f800, 0x0010a978,
+       0x4a039005, 0x00000140, 0x0401f842, 0x4803c856,
+       0x1c01f000, 0x00105a1d, 0x00105cf4, 0x00105a15,
+       0x00105a15, 0x00105a15, 0x00105a15, 0x00105a15,
+       0x00105a15, 0x4803c857, 0x42000000, 0x0010b85a,
+       0x0201f800, 0x0010aa47, 0x4a039005, 0x00000140,
+       0x1c01f000, 0x4817c857, 0x59cc0400, 0x4803c857,
+       0x82000d00, 0x0000ff00, 0x82041500, 0x0000f000,
+       0x840409c0, 0x82140500, 0x000003ff, 0x800018c4,
+       0x8c142d14, 0x04000005, 0x59cc0002, 0x82000500,
+       0x00000003, 0x800c1c80, 0x480f5016, 0x82080580,
+       0x00002000, 0x04020011, 0x836c0580, 0x00000001,
+       0x0402000c, 0x59cc0006, 0x82000500, 0xff000000,
+       0x82000580, 0x11000000, 0x04020011, 0x0201f800,
+       0x00103b38, 0x0201f800, 0x00105f48, 0x0401f00c,
+       0x0401f81f, 0x0401f00a, 0x82080580, 0x00003000,
+       0x04020003, 0x0401fa06, 0x0401f005, 0x82080580,
+       0x00008000, 0x04020002, 0x0401fafc, 0x1c01f000,
+       0x4817c857, 0x42000000, 0x0010b859, 0x0201f800,
+       0x0010aa47, 0x836c0580, 0x00000003, 0x0402000b,
+       0x4c080000, 0x4c0c0000, 0x42001000, 0x00008048,
+       0x40141800, 0x80142120, 0x0201f800, 0x00103a3e,
+       0x5c001800, 0x5c001000, 0x1c01f000, 0x4807c857,
+       0x59cc0002, 0x82000500, 0xff000000, 0x82001580,
+       0x01000000, 0x04000004, 0x82001580, 0x23000000,
+       0x04020192, 0x82040580, 0x00000023, 0x0402003f,
+       0x0401fb6a, 0x0400018d, 0x59300c06, 0x82040580,
+       0x00000010, 0x04000013, 0x82040580, 0x00000011,
+       0x04000010, 0x82040580, 0x00000001, 0x0400000d,
+       0x82040580, 0x00000004, 0x0400000a, 0x82040580,
+       0x00000008, 0x04000007, 0x82040580, 0x0000000a,
+       0x04000004, 0x4933c857, 0x4807c857, 0x0401f177,
+       0x59300004, 0x82000500, 0x80010000, 0x04000004,
+       0x0201f800, 0x00106f60, 0x04020170, 0x59cc0a04,
+       0x48066202, 0x59cc0006, 0x82000500, 0xffff0000,
+       0x82000d80, 0x02000000, 0x04020005, 0x42027000,
+       0x00000015, 0x0201f000, 0x000207a1, 0x82000d80,
+       0x02140000, 0x040007fa, 0x82000d80, 0x02100000,
+       0x040007f7, 0x82000d80, 0x02100000, 0x040007f4,
+       0x82000d80, 0x01000000, 0x04020158, 0x59cc0006,
+       0x82000500, 0x0000ffff, 0x04020154, 0x42027000,
+       0x00000016, 0x0401f7ec, 0x82040580, 0x00000022,
+       0x0402014e, 0x59a80806, 0x8c040d14, 0x04000011,
+       0x0401f967, 0x0402000f, 0x0401f97d, 0x0400000d,
+       0x42027000, 0x0000004c, 0x59cc0001, 0x82000500,
+       0x00ffffff, 0x0201f800, 0x00105eec, 0x0400012a,
+       0x42028800, 0x0000ffff, 0x417a6800, 0x0401f126,
+       0x59cc0006, 0x82000500, 0xffff0000, 0x82000d80,
+       0x03000000, 0x04020021, 0x59a80026, 0x8c000508,
+       0x04000017, 0x8400054c, 0x48035026, 0x59cc0800,
+       0x82040d00, 0x00ffffff, 0x48075010, 0x497b8830,
+       0x84040d70, 0x48078832, 0x59c40802, 0x84040d4c,
+       0x48078802, 0x59cc0007, 0x82000500, 0x0000ffff,
+       0x48038893, 0x4803501e, 0x42000800, 0x00000003,
+       0x59a81010, 0x0201f800, 0x00106c78, 0x59cc0006,
+       0x82000500, 0x0000ffff, 0x04020118, 0x42027000,
+       0x00000017, 0x0401f0d9, 0x82000d80, 0x04000000,
+       0x04020011, 0x59cc0006, 0x82000500, 0x0000ffff,
+       0x0402010e, 0x0201f800, 0x0010513b, 0x04000004,
+       0x42027000, 0x0000001d, 0x0401f0cc, 0x59a80026,
+       0x84000548, 0x48035026, 0x42027000, 0x00000030,
+       0x0401f0c6, 0x82000d80, 0x05000000, 0x04020008,
+       0x59cc0006, 0x82000500, 0x0000ffff, 0x040200fb,
+       0x42027000, 0x00000018, 0x0401f0bc, 0x82000d80,
+       0x20100000, 0x04020004, 0x42027000, 0x00000019,
+       0x0401f0b6, 0x82000d80, 0x21100000, 0x04020004,
+       0x42027000, 0x0000001a, 0x0401f0b0, 0x82000d80,
+       0x52000000, 0x04020008, 0x59cc0006, 0x82000500,
+       0x0000ffff, 0x040200e5, 0x42027000, 0x0000001b,
+       0x0401f0a6, 0x82000d80, 0x50000000, 0x04020008,
+       0x59cc0006, 0x82000500, 0x0000ffff, 0x040200db,
+       0x42027000, 0x0000001c, 0x0401f09c, 0x82000d80,
+       0x13000000, 0x04020004, 0x42027000, 0x00000034,
+       0x0401f096, 0x82000d80, 0x12000000, 0x04020008,
+       0x59cc0006, 0x82000500, 0x0000ffff, 0x040200cb,
+       0x42027000, 0x00000024, 0x0401f08c, 0x82000d00,
+       0xff000000, 0x82040d80, 0x24000000, 0x04020004,
+       0x42027000, 0x0000002d, 0x0401f084, 0x82000d00,
+       0xff000000, 0x82040d80, 0x53000000, 0x04020004,
+       0x42027000, 0x0000002a, 0x0401f07c, 0x82000d80,
+       0x0f000000, 0x04020004, 0x42027000, 0x00000020,
+       0x0401f076, 0x82000d80, 0x61040000, 0x04020036,
+       0x83cc1400, 0x00000006, 0x80080800, 0x50080000,
+       0x82000500, 0x0000ffff, 0x82000480, 0x00000004,
+       0x4c580000, 0x8000b104, 0x8058b1c0, 0x04000026,
+       0x4c100000, 0x50041800, 0x820c1500, 0x03000000,
+       0x80081130, 0x42000000, 0x0010b817, 0x82082580,
+       0x00000000, 0x04020004, 0x42000000, 0x0010b814,
+       0x0401f00c, 0x82082580, 0x00000001, 0x04020004,
+       0x42000000, 0x0010b815, 0x0401f006, 0x82082580,
+       0x00000002, 0x04020003, 0x42000000, 0x0010b816,
+       0x0201f800, 0x0010aa47, 0x42001000, 0x00008015,
+       0x820c2500, 0x0000ffff, 0x800c1920, 0x0201f800,
+       0x00103a3e, 0x5c002000, 0x80040800, 0x8058b040,
+       0x040207da, 0x5c00b000, 0x42027000, 0x00000023,
+       0x0401f03e, 0x82000d80, 0x60000000, 0x04020004,
+       0x42027000, 0x0000003f, 0x0401f038, 0x82000d80,
+       0x54000000, 0x04020006, 0x0401fb12, 0x0402006f,
+       0x42027000, 0x00000046, 0x0401f030, 0x82000d80,
+       0x55000000, 0x04020009, 0x0401fb32, 0x04020004,
+       0x42027000, 0x00000041, 0x0401f028, 0x42027000,
+       0x00000042, 0x0401f025, 0x82000d80, 0x78000000,
+       0x04020004, 0x42027000, 0x00000045, 0x0401f01f,
+       0x82000d80, 0x10000000, 0x04020004, 0x42027000,
+       0x0000004e, 0x0401f019, 0x82000d80, 0x63000000,
+       0x04020004, 0x42027000, 0x0000004a, 0x0401f013,
+       0x82000d00, 0xff000000, 0x82040d80, 0x56000000,
+       0x04020004, 0x42027000, 0x0000004f, 0x0401f00b,
+       0x82000d00, 0xff000000, 0x82040d80, 0x57000000,
+       0x04020004, 0x42027000, 0x00000050, 0x0401f003,
+       0x42027000, 0x0000001d, 0x59cc3800, 0x821c3d00,
+       0x00ffffff, 0x821c0580, 0x00fffffe, 0x59cc0001,
+       0x04020005, 0x40003000, 0x42028800, 0x000007fe,
+       0x0401f003, 0x0401f8d1, 0x04020030, 0x0201f800,
+       0x001045a6, 0x0402002d, 0x83380580, 0x00000046,
+       0x04020004, 0x59a80010, 0x80180580, 0x04000027,
+       0x59340200, 0x8c000514, 0x0400000f, 0x83380580,
+       0x00000030, 0x0400000c, 0x83380580, 0x0000003f,
+       0x04000009, 0x83380580, 0x00000034, 0x04000006,
+       0x83380580, 0x00000024, 0x04000003, 0x42027000,
+       0x0000004c, 0x0201f800, 0x0002075a, 0x04000018,
+       0x49366009, 0x4a026406, 0x00000004, 0x59cc0c04,
+       0x48066202, 0x83380580, 0x0000004c, 0x04020009,
+       0x4a026406, 0x00000011, 0x813669c0, 0x04020005,
+       0x59cc0001, 0x82000500, 0x00ffffff, 0x4802601e,
+       0x0201f000, 0x000207a1, 0x59880052, 0x4803c857,
+       0x80000000, 0x48031052, 0x1c01f000, 0x42001000,
+       0x00008049, 0x59cc1806, 0x800c1930, 0x0201f800,
+       0x00103a3e, 0x0201f800, 0x00107942, 0x040007f3,
+       0x49366009, 0x4a026406, 0x00000004, 0x59cc0c04,
+       0x48066202, 0x4a026403, 0x00000009, 0x4a02641a,
+       0x00000009, 0x4a02621a, 0x00002900, 0x4a026203,
+       0x00000001, 0x0201f000, 0x0010672b, 0x59a80026,
+       0x4803c857, 0x8c000508, 0x04000010, 0x59cc0006,
+       0x82000500, 0xff000000, 0x82000d80, 0x03000000,
+       0x0400000c, 0x82000d80, 0x20000000, 0x04000009,
+       0x82000d80, 0x05000000, 0x04000006, 0x82000d80,
+       0x21000000, 0x04000003, 0x80000580, 0x1c01f000,
+       0x82000540, 0x00000001, 0x0401f7fd, 0x59cc2006,
+       0x82102500, 0xff000000, 0x9c1021c0, 0x0401f807,
+       0x820c1c00, 0x0010b4e3, 0x500c1800, 0x800c0500,
+       0x4803c857, 0x1c01f000, 0x40100800, 0x41781800,
+       0x82040480, 0x00000020, 0x04001004, 0x800c1800,
+       0x40000800, 0x0401f7fb, 0x82040500, 0x0000000f,
+       0x82000400, 0x0010ab38, 0x50000000, 0x8c040d08,
+       0x04000002, 0x900001c0, 0x1c01f000, 0x4803c856,
+       0x0401fac3, 0x0402000a, 0x0201f800, 0x0010210a,
+       0x04020007, 0x59cc0002, 0x82000500, 0xff000000,
+       0x82000d80, 0x08000000, 0x04000802, 0x1c01f000,
+       0x4803c856, 0x59cc0400, 0x82000d00, 0x0000ff00,
+       0x840409c0, 0x82040580, 0x00000033, 0x0402001f,
+       0x0401f976, 0x04000038, 0x59cc0a04, 0x48066202,
+       0x59cc0006, 0x4803c857, 0x82000500, 0xffff0000,
+       0x82000d80, 0x02000000, 0x04020009, 0x59cc0006,
+       0x82000500, 0x0000ffff, 0x0402002b, 0x42027000,
+       0x00000015, 0x0201f000, 0x000207a1, 0x82000d80,
+       0x01000000, 0x04020024, 0x59cc0006, 0x82000500,
+       0x0000ffff, 0x04020020, 0x42027000, 0x00000016,
+       0x0201f000, 0x000207a1, 0x82040580, 0x00000032,
+       0x04020019, 0x59cc0006, 0x82000500, 0xffff0000,
+       0x82000d80, 0x14000000, 0x04020013, 0x42027000,
+       0x00000038, 0x59cc0001, 0x0401f810, 0x0402000e,
+       0x0201f800, 0x001045a6, 0x0402000b, 0x0201f800,
+       0x0002075a, 0x04000008, 0x49366009, 0x4a026406,
+       0x00000004, 0x59cc0c04, 0x48066202, 0x0201f000,
+       0x000207a1, 0x1c01f000, 0x4803c857, 0x4c580000,
+       0x4c100000, 0x4c380000, 0x4c340000, 0x82003500,
+       0x00ffffff, 0x82181500, 0x00ff0000, 0x82081580,
+       0x00ff0000, 0x04020016, 0x82181480, 0x00fffffc,
+       0x04001013, 0x82181580, 0x00fffffd, 0x04020004,
+       0x42028800, 0x000007fd, 0x0401f040, 0x82181580,
+       0x00fffffe, 0x04020004, 0x42028800, 0x000007fe,
+       0x0401f03a, 0x82181580, 0x00fffffc, 0x04020004,
+       0x42028800, 0x000007fc, 0x0401f034, 0x41781000,
+       0x42002000, 0x00000000, 0x4200b000, 0x000007f0,
+       0x41ac7000, 0x50380000, 0x80006d40, 0x04020005,
+       0x800811c0, 0x0402001e, 0x8410155e, 0x0401f01c,
+       0x58340212, 0x82000500, 0x0000ff00, 0x04000011,
+       0x59a84010, 0x82204500, 0x00ffff00, 0x82180500,
+       0x00ffff00, 0x04000002, 0x80200580, 0x58340002,
+       0x0402000f, 0x82000500, 0x000000ff, 0x82184500,
+       0x000000ff, 0x80204580, 0x04020009, 0x0401f006,
+       0x58340002, 0x82000500, 0x00ffffff, 0x80184580,
+       0x04020003, 0x40128800, 0x0401f00c, 0x80102000,
+       0x80387000, 0x8058b040, 0x040207db, 0x800811c0,
+       0x04020005, 0x481bc857, 0x82000540, 0x00000001,
+       0x0401f003, 0x840a8d1e, 0x80000580, 0x5c006800,
+       0x5c007000, 0x5c002000, 0x5c00b000, 0x1c01f000,
+       0x59a80026, 0x8c00050e, 0x04000003, 0x8c000502,
+       0x04000006, 0x59cc0c00, 0x80040910, 0x82040500,
+       0x0000000f, 0x0c01f002, 0x1c01f000, 0x00105d0f,
+       0x00105d0f, 0x00105d0f, 0x00105de5, 0x00105d0f,
+       0x00105d11, 0x00105d29, 0x00105d2c, 0x00105d0f,
+       0x00105d0f, 0x00105d0f, 0x00105d0f, 0x00105d0f,
+       0x00105d0f, 0x00105d0f, 0x00105d0f, 0x4803c856,
+       0x1c01f000, 0x0401f8c5, 0x04000014, 0x82140500,
+       0x000003ff, 0x800000c4, 0x82000480, 0x00000008,
+       0x0400100e, 0x59cc0001, 0x59326809, 0x59340802,
+       0x80040580, 0x82000500, 0x00ffffff, 0x04020007,
+       0x59cc0a04, 0x48066202, 0x42027000, 0x00000046,
+       0x0201f000, 0x000207a1, 0x59cc0004, 0x4803c857,
+       0x1c01f000, 0x59cc0004, 0x4803c857, 0x1c01f000,
+       0x0401f8aa, 0x04000016, 0x82140500, 0x000003ff,
+       0x800000c4, 0x82000480, 0x0000000c, 0x04001010,
+       0x59cc0001, 0x82000500, 0x00ffffff, 0x59326809,
+       0x59340802, 0x82040d00, 0x00ffffff, 0x80040580,
+       0x04020007, 0x59cc0a04, 0x48066202, 0x42027000,
+       0x00000045, 0x0201f000, 0x000207a1, 0x59cc0004,
+       0x4803c857, 0x1c01f000, 0x4817c857, 0x0401f9c8,
+       0x04020011, 0x0201f800, 0x0010210a, 0x0402000e,
+       0x59cc0002, 0x82000500, 0xff000000, 0x82000580,
+       0x00000000, 0x04020008, 0x82040500, 0x0000000f,
+       0x82000c80, 0x00000006, 0x04021003, 0x4803c857,
+       0x0c01f002, 0x1c01f000, 0x00105d60, 0x00105d64,
+       0x00105d60, 0x00105d60, 0x00105db2, 0x00105dc3,
+       0x4803c857, 0x59cc0004, 0x4803c857, 0x1c01f000,
+       0x59cc0004, 0x4803c857, 0x59a80016, 0x800001c0,
+       0x040207f8, 0x59cc0802, 0x8c040d2e, 0x0402001d,
+       0x0201f800, 0x00107942, 0x02000800, 0x001005d8,
+       0x59cc0001, 0x4803c857, 0x0401ff28, 0x0402000d,
+       0x0201f800, 0x00020245, 0x0402000a, 0x4a026406,
+       0x00000005, 0x49366009, 0x59cc0c04, 0x48066202,
+       0x42027000, 0x00000088, 0x0201f000, 0x000207a1,
+       0x42028800, 0x0000ffff, 0x417a6800, 0x59cc0001,
+       0x82000500, 0x00ffffff, 0x4802601e, 0x0401f7f0,
+       0x59cc0001, 0x4803c857, 0x0401ff10, 0x040207d5,
+       0x0201f800, 0x001045a6, 0x040207d2, 0x59cc0005,
+       0x8c000500, 0x04020004, 0x59340200, 0x8c00050e,
+       0x040207cc, 0x0201f800, 0x001049f3, 0x0402000f,
+       0x0401f83e, 0x040007c7, 0x0201f800, 0x0002075a,
+       0x040007c4, 0x49366009, 0x4a026406, 0x00000002,
+       0x59cc0c04, 0x48066202, 0x42027000, 0x00000088,
+       0x0201f000, 0x000207a1, 0x0201f800, 0x0002075a,
+       0x040007b8, 0x49366009, 0x4a026406, 0x00000004,
+       0x59cc0c04, 0x48066202, 0x42027000, 0x00000001,
+       0x0201f000, 0x000207a1, 0x59cc0004, 0x4803c857,
+       0x59cc0802, 0x8c040d2e, 0x0400000b, 0x0401f81f,
+       0x04000009, 0x0401f960, 0x04020007, 0x59cc0a04,
+       0x48066202, 0x42027000, 0x00000089, 0x0201f000,
+       0x000207a1, 0x4933c857, 0x1c01f000, 0x59cc0004,
+       0x4803c857, 0x59cc0802, 0x8c040d2e, 0x0400000b,
+       0x0401f80e, 0x04000009, 0x0401f94f, 0x04020007,
+       0x59cc0a04, 0x48066202, 0x42027000, 0x0000008a,
+       0x0201f000, 0x000207a1, 0x4933c857, 0x1c01f000,
+       0x59cc0a04, 0x0401f002, 0x59cc0c04, 0x59a8000e,
+       0x59a81067, 0x80080400, 0x80040480, 0x04021008,
+       0x40040000, 0x800000c4, 0x800408ca, 0x80040c00,
+       0x82066400, 0x0010d1c0, 0x1c01f000, 0x80000580,
+       0x0401f7fe, 0x59cc0802, 0x8c040d2e, 0x04020010,
+       0x0401ffec, 0x0400000e, 0x59cc0001, 0x82000500,
+       0x00ffffff, 0x59326809, 0x59340802, 0x82040d00,
+       0x00ffffff, 0x80040580, 0x04020005, 0x42027000,
+       0x00000051, 0x0201f000, 0x000207a1, 0x59cc0004,
+       0x4803c857, 0x1c01f000, 0x4803c856, 0x42003000,
+       0x00000105, 0x0401f001, 0x4803c856, 0x4c3c0000,
+       0x41cc7800, 0x0401f803, 0x5c007800, 0x1c01f000,
+       0x4803c856, 0x4c580000, 0x583c0400, 0x82000500,
+       0x0000f000, 0x82000580, 0x0000c000, 0x04000024,
+       0x0201f800, 0x0002075a, 0x04000021, 0x4c180000,
+       0x583c0001, 0x0401fe89, 0x0402001f, 0x0201f800,
+       0x001045a6, 0x0402001c, 0x49366009, 0x0201f800,
+       0x001007e4, 0x04000018, 0x492e6017, 0x497a5800,
+       0x497a5a04, 0x48125c04, 0x832cac00, 0x00000005,
+       0x4200b000, 0x00000007, 0x403ca000, 0x0201f800,
+       0x0010ab17, 0x5c003000, 0x481a641a, 0x4a026403,
+       0x0000003e, 0x4a026406, 0x00000001, 0x4a026203,
+       0x00000001, 0x0201f800, 0x0010672b, 0x5c00b000,
+       0x1c01f000, 0x0201f800, 0x0002077d, 0x5c003000,
+       0x0401f7fb, 0x4803c856, 0x59cc0400, 0x82000d00,
+       0x0000ff00, 0x82040500, 0x0000f000, 0x840409c0,
+       0x82000580, 0x00002000, 0x04020049, 0x82040580,
+       0x00000022, 0x0402003a, 0x59c400a4, 0x82000500,
+       0x0000000f, 0x82000c80, 0x00000007, 0x04001004,
+       0x82000480, 0x0000000c, 0x0400103f, 0x59cc0006,
+       0x82000500, 0xffff0000, 0x82000d80, 0x04000000,
+       0x04000039, 0x82000d80, 0x60000000, 0x04000036,
+       0x82000d80, 0x54000000, 0x04000033, 0x82000d80,
+       0x03000000, 0x04020015, 0x59a80826, 0x8c040d02,
+       0x0402002d, 0x8c040d08, 0x0402002b, 0x0201f800,
+       0x001048ec, 0x0400002b, 0x59a8001d, 0x800000d0,
+       0x59a80810, 0x82040d00, 0x000000ff, 0x80040540,
+       0x59cc0800, 0x82040d00, 0x00ffffff, 0x80040580,
+       0x0402001b, 0x0401f01c, 0x59c40802, 0x8c040d0c,
+       0x04020017, 0x82000d80, 0x52000000, 0x040007ec,
+       0x82000d80, 0x05000000, 0x040007e9, 0x82000d80,
+       0x50000000, 0x040007e6, 0x0401f00d, 0x82040580,
+       0x00000023, 0x0402000a, 0x0401ff58, 0x04000008,
+       0x59300c03, 0x82040580, 0x00000002, 0x04000006,
+       0x82040580, 0x00000051, 0x04000003, 0x80000580,
+       0x0401f003, 0x82000540, 0x00000001, 0x1c01f000,
+       0x59cc0006, 0x82000500, 0xffff0000, 0x82000d80,
+       0x03000000, 0x04000004, 0x82000d80, 0x52000000,
+       0x040207f3, 0x59a80026, 0x82000500, 0x00000009,
+       0x82000580, 0x00000008, 0x040007ef, 0x0401f7ec,
+       0x4803c856, 0x4c5c0000, 0x4c580000, 0x59a80016,
+       0x82000580, 0x0000004c, 0x0402001f, 0x59ccb807,
+       0x9c5cb9c0, 0x825cbd00, 0x00000007, 0x8c5cbd00,
+       0x0400000a, 0x4200b000, 0x00000002, 0x83a81c00,
+       0x00000002, 0x83cc1400, 0x0000000d, 0x0201f800,
+       0x0010855a, 0x04020010, 0x8c5cbd02, 0x0400000a,
+       0x4200b000, 0x00000002, 0x83a81c00, 0x00000000,
+       0x83cc1400, 0x0000000f, 0x0201f800, 0x0010855a,
+       0x04020005, 0x8c5cbd04, 0x04000003, 0x82000540,
+       0x00000001, 0x5c00b000, 0x5c00b800, 0x1c01f000,
+       0x4803c856, 0x4c5c0000, 0x4c580000, 0x59a80016,
+       0x82000580, 0x0000004c, 0x0402001f, 0x59ccb807,
+       0x9c5cb9c0, 0x825cbd00, 0x00000007, 0x8c5cbd00,
+       0x0400000a, 0x4200b000, 0x00000002, 0x83a81c00,
+       0x00000002, 0x83cc1400, 0x00000009, 0x0201f800,
+       0x0010855a, 0x04020010, 0x8c5cbd02, 0x0400000a,
+       0x4200b000, 0x00000002, 0x83a81c00, 0x00000000,
+       0x83cc1400, 0x0000000b, 0x0201f800, 0x0010855a,
+       0x04020005, 0x8c5cbd04, 0x04000003, 0x82000540,
+       0x00000001, 0x5c00b000, 0x5c00b800, 0x1c01f000,
+       0x4803c857, 0x4c580000, 0x40003000, 0x42002000,
+       0x000007f0, 0x4200b000, 0x00000010, 0x83ac7400,
+       0x000007f0, 0x50380000, 0x80026d40, 0x04000006,
+       0x59340002, 0x82000500, 0x00ffffff, 0x80180580,
+       0x04000010, 0x80102000, 0x80387000, 0x8058b040,
+       0x040207f5, 0x82100480, 0x00000800, 0x42002000,
+       0x00000000, 0x4200b000, 0x000007f0, 0x41ac7000,
+       0x040217ed, 0x82000540, 0x00000001, 0x0401f002,
+       0x40128800, 0x5c00b000, 0x1c01f000, 0x59a80026,
+       0x8c00050e, 0x04000004, 0x8c000502, 0x04000003,
+       0x80000580, 0x1c01f000, 0x82000540, 0x00000001,
+       0x0401f7fd, 0x59300c06, 0x82040580, 0x00000002,
+       0x04000006, 0x82040580, 0x00000005, 0x04000003,
+       0x82000540, 0x00000001, 0x1c01f000, 0x59c80000,
+       0x84000558, 0x84000512, 0x48039000, 0x1c01f000,
+       0x4a03281a, 0x000003e8, 0x4a032802, 0x0010d1c0,
+       0x4a032800, 0x00000000, 0x4a032808, 0x00107049,
+       0x42000000, 0x00000005, 0x83947c00, 0x00000009,
+       0x49787801, 0x4a007802, 0x00106fff, 0x823c7c00,
+       0x00000003, 0x80000040, 0x040207fa, 0x4a032819,
+       0xffff0000, 0x4201d000, 0x00000064, 0x0401f96e,
+       0x4201d000, 0x000186a0, 0x0401f184, 0x00000000,
+       0x00000003, 0x00000006, 0x00000009, 0x0000000c,
+       0x4d300000, 0x4d2c0000, 0x4d340000, 0x4d400000,
+       0x4cfc0000, 0x4d380000, 0x4d3c0000, 0x4d440000,
+       0x4d4c0000, 0x4d480000, 0x4c5c0000, 0x4c600000,
+       0x4c640000, 0x4cc80000, 0x4ccc0000, 0x0201f800,
+       0x0002057b, 0x5c019800, 0x5c019000, 0x5c00c800,
+       0x5c00c000, 0x5c00b800, 0x5c029000, 0x5c029800,
+       0x5c028800, 0x5c027800, 0x5c027000, 0x5c01f800,
+       0x5c028000, 0x5c026800, 0x5c025800, 0x5c026000,
+       0x1c01f000, 0x59940004, 0x80000540, 0x0402000a,
+       0x59940025, 0x80040400, 0x02001800, 0x001005d8,
+       0x48032804, 0x480b2805, 0x4a032803, 0x0000000a,
+       0x80000580, 0x1c01f000, 0x5994001f, 0x80000540,
+       0x0402000a, 0x59940025, 0x80040400, 0x02001800,
+       0x001005d8, 0x4803281f, 0x480b2820, 0x4a03281e,
+       0x00000001, 0x80000580, 0x1c01f000, 0x59940022,
+       0x80000540, 0x0402000a, 0x59940025, 0x80040400,
+       0x02001800, 0x001005d8, 0x48032822, 0x480b2823,
+       0x4a032821, 0x0000000a, 0x80000580, 0x1c01f000,
+       0x4c000000, 0x59940005, 0x4803c857, 0x480bc857,
+       0x80080580, 0x04020003, 0x497b2804, 0x497b2805,
+       0x5c000000, 0x1c01f000, 0x4c000000, 0x59940020,
+       0x4803c857, 0x480bc857, 0x80080580, 0x04020003,
+       0x497b281f, 0x497b2820, 0x5c000000, 0x1c01f000,
+       0x4c000000, 0x59940023, 0x4803c857, 0x480bc857,
+       0x80080580, 0x04020003, 0x497b2822, 0x497b2823,
+       0x5c000000, 0x1c01f000, 0x4937c857, 0x48ebc857,
+       0x59340203, 0x80e80480, 0x04001002, 0x48ea6a03,
+       0x1c01f000, 0x5c03e000, 0x1c01f000, 0x4d440000,
+       0x42007800, 0x00000010, 0x59968801, 0x0201f800,
+       0x00020245, 0x04020012, 0x59341a03, 0x800c1840,
+       0x0400100f, 0x59940027, 0x800c0480, 0x04000003,
+       0x48026a03, 0x0402100a, 0x5934000f, 0x497a6a03,
+       0x80000540, 0x04000006, 0x4c3c0000, 0x5934140b,
+       0x0201f800, 0x00020253, 0x5c007800, 0x81468800,
+       0x83440480, 0x00000800, 0x04021007, 0x803c7840,
+       0x040207e7, 0x49472801, 0x5c028800, 0x5c03e000,
+       0x1c01f000, 0x4a032800, 0x00000002, 0x497b2801,
+       0x0401f7fa, 0x42007800, 0x00000010, 0x59966002,
+       0x59300205, 0x80000d40, 0x04000006, 0x59940027,
+       0x80040480, 0x48026205, 0x0400102d, 0x0400002c,
+       0x59300206, 0x80000d40, 0x04000014, 0x59b800e4,
+       0x8c000524, 0x04020011, 0x4a0370e4, 0x00030000,
+       0x40000000, 0x59b800e4, 0x8c000524, 0x04000004,
+       0x4a0370e4, 0x00020000, 0x0401f008, 0x59940027,
+       0x80040480, 0x48026206, 0x4a0370e4, 0x00020000,
+       0x0400101c, 0x0400001b, 0x83326400, 0x00000024,
+       0x49332802, 0x41540000, 0x81300480, 0x04021005,
+       0x803c7840, 0x040207db, 0x5c03e000, 0x1c01f000,
+       0x59940026, 0x48032827, 0x4a032802, 0x0010d1c0,
+       0x497b2826, 0x80000540, 0x0400000f, 0x4a032800,
+       0x00000001, 0x5c03e000, 0x1c01f000, 0x4c3c0000,
+       0x0201f800, 0x001091db, 0x5c007800, 0x0401f7d1,
+       0x4c3c0000, 0x0201f800, 0x00108d5d, 0x5c007800,
+       0x0401f7e2, 0x4a032800, 0x00000000, 0x5c03e000,
+       0x1c01f000, 0x59a8086b, 0x8c040d30, 0x04020029,
+       0x8c040d32, 0x0400000f, 0x59a80069, 0x81640480,
+       0x04001019, 0x59a8000b, 0x81500580, 0x04000005,
+       0x59a8006a, 0x59a81066, 0x80080580, 0x04020012,
+       0x900411c0, 0x82081500, 0x00007000, 0x0401f012,
+       0x82040500, 0x0000001f, 0x04000016, 0x80040840,
+       0x82040500, 0x0000001f, 0x04000003, 0x4807506b,
+       0x0401f010, 0x900401c0, 0x82000500, 0x0000001f,
+       0x80040d40, 0x900401c0, 0x80040580, 0x82001500,
+       0x00007000, 0x82040500, 0xffff8fff, 0x80080540,
+       0x4803506b, 0x80081114, 0x0201f800, 0x001006e2,
+       0x1c01f000, 0x4a032807, 0x000007d0, 0x4a032806,
+       0x0000000a, 0x1c01f000, 0x42000800, 0x000007d0,
+       0x83180480, 0x00000005, 0x02021800, 0x001005d8,
+       0x83947c00, 0x00000009, 0x83180400, 0x00105f43,
+       0x50000000, 0x803c7c00, 0x48047801, 0x4a007800,
+       0x0000000a, 0x1c01f000, 0x83180480, 0x00000005,
+       0x02021800, 0x001005d8, 0x83947c00, 0x00000009,
+       0x83180400, 0x00105f43, 0x50000000, 0x803c7c00,
+       0x49787801, 0x1c01f000, 0x4807c857, 0x480bc857,
+       0x59940025, 0x80040400, 0x02001800, 0x001005d8,
+       0x48032804, 0x480b2805, 0x4a032803, 0x0000000a,
+       0x1c01f000, 0x4807c857, 0x480bc857, 0x59940025,
+       0x80040400, 0x02001800, 0x001005d8, 0x4803281c,
+       0x480b281d, 0x4a03281b, 0x0000000a, 0x1c01f000,
+       0x4c000000, 0x5994001d, 0x4803c857, 0x480bc857,
+       0x80080580, 0x04020003, 0x4803281c, 0x4803281d,
+       0x5c000000, 0x1c01f000, 0x80e9d1c0, 0x0400000e,
+       0x0401f836, 0x04025000, 0x4203e000, 0x80000000,
+       0x40e81000, 0x41780800, 0x42000000, 0x00000064,
+       0x0201f800, 0x001066a0, 0x59940024, 0x80080400,
+       0x48032824, 0x1c01f000, 0x42001000, 0x00105065,
+       0x0401fef0, 0x42001000, 0x00105058, 0x0401ffe1,
+       0x42001000, 0x00104148, 0x0401feea, 0x42001000,
+       0x001041bc, 0x0401fee7, 0x42001000, 0x001041f3,
+       0x0401f6f8, 0x4203e000, 0x70000000, 0x4203e000,
+       0xb0300000, 0x41fc0000, 0x40ebf800, 0x80e80480,
+       0x04001011, 0x04000004, 0x82000480, 0x00000003,
+       0x0402100d, 0x42000000, 0x0000000f, 0x04004004,
+       0x80000040, 0x040207fe, 0x0401f007, 0x4203e000,
+       0x70000000, 0x42000000, 0x0010b87e, 0x0201f800,
+       0x0010aa47, 0x1c01f000, 0x4203e000, 0x80000000,
+       0x4203e000, 0xb0400000, 0x41fc0000, 0x40ebf800,
+       0x80e80480, 0x04001011, 0x04000004, 0x82000480,
+       0x00000003, 0x0402100d, 0x42000000, 0x0000000f,
+       0x04005004, 0x80000040, 0x040207fe, 0x0401f007,
+       0x4203e000, 0x80000000, 0x42000000, 0x0010b87f,
+       0x0201f800, 0x0010aa47, 0x1c01f000, 0x59a8000e,
+       0x82000480, 0x00000100, 0x599c0a02, 0x800409c0,
+       0x04020002, 0x80040800, 0x80041480, 0x04001002,
+       0x40000800, 0x48075067, 0x59a8100e, 0x40040000,
+       0x800acc80, 0x4967500e, 0x49675069, 0x59aaa80b,
+       0x41640800, 0x42001000, 0x00000024, 0x0201f800,
+       0x00106681, 0x8206a400, 0x0010d1c0, 0x49535065,
+       0x4152b000, 0x42006000, 0x0010be65, 0x4a006004,
+       0x0000012c, 0x4a006005, 0xda10da10, 0x4a006008,
+       0x00000011, 0x4a006009, 0x0010be65, 0x4a00600a,
+       0x001010b8, 0x599c0014, 0x48006011, 0x599c0015,
+       0x48006012, 0x42006000, 0x0010be41, 0x4a006203,
+       0x00000008, 0x4a006406, 0x00000006, 0x4a006002,
+       0xffff0000, 0x4a006008, 0x0010be65, 0x4a006014,
+       0x0010be65, 0x599c0014, 0x48006015, 0x599c0015,
+       0x48006016, 0x599c0413, 0x48006017, 0x49506018,
+       0x49546019, 0x59a80067, 0x4800601a, 0x4a00601b,
+       0x0010b465, 0x4a00601c, 0x0010b466, 0x4a00601d,
+       0x0010b46a, 0x42000000, 0xb0000000, 0x42000800,
+       0x0010be41, 0x0201f800, 0x00100b68, 0x1c01f000,
+       0x82000d00, 0x000000c0, 0x04000004, 0x82040d80,
+       0x000000c0, 0x04020055, 0x82000d00, 0x00002020,
+       0x59300414, 0x84000512, 0x82040d80, 0x00002020,
+       0x0400000b, 0x8c000514, 0x0402000f, 0x48026414,
+       0x813e79c0, 0x02020000, 0x000206d0, 0x42027000,
+       0x00000043, 0x0201f000, 0x000207a1, 0x59326809,
+       0x59340a00, 0x8c040d0a, 0x040007f3, 0x84000552,
+       0x0401f7f1, 0x84000514, 0x592c080d, 0x48066015,
+       0x0401f7ef, 0x59326809, 0x59340a00, 0x8c040d0a,
+       0x02000000, 0x000206e3, 0x59300c14, 0x84040d52,
+       0x48066414, 0x0201f000, 0x000206e3, 0x0201f800,
+       0x00020086, 0x813e79c0, 0x02020000, 0x000206d0,
+       0x0201f000, 0x000206f1, 0x8c00051e, 0x02000000,
+       0x000206fd, 0x82000d00, 0x00002020, 0x82040d80,
+       0x00002020, 0x04000014, 0x82000500, 0x000000c0,
+       0x82000d80, 0x00000080, 0x04000008, 0x813e79c0,
+       0x02020000, 0x000206d0, 0x42027000, 0x00000041,
+       0x0201f000, 0x000207a1, 0x813e79c0, 0x02020000,
+       0x000206d0, 0x42027000, 0x00000043, 0x0201f000,
+       0x000207a1, 0x59326809, 0x59340a00, 0x8c040d0a,
+       0x040007ea, 0x59300c14, 0x84040d52, 0x48066414,
+       0x0401f7e6, 0x492fc857, 0x42000800, 0x00000006,
+       0x0201f000, 0x000206f8, 0x492fc857, 0x42000800,
+       0x00000004, 0x0201f000, 0x000206f8, 0x4807c856,
+       0x59a80068, 0x800409c0, 0x04000003, 0x80080540,
+       0x0401f002, 0x80080500, 0x48035068, 0x1c01f000,
+       0x4a030800, 0x00000000, 0x4a030802, 0x00000001,
+       0x497b0803, 0x497b0804, 0x1c01f000, 0x59840002,
+       0x8c000500, 0x04000004, 0x84000500, 0x4a030800,
+       0x00000001, 0x84000544, 0x84000506, 0x48030802,
+       0x82000d00, 0x0fffffff, 0x42000000, 0x90000000,
+       0x0201f800, 0x00100b94, 0x59a80069, 0x82000480,
+       0x00000007, 0x48035069, 0x80000580, 0x42000800,
+       0x0010b519, 0x48000800, 0x48000801, 0x1c01f000,
+       0x59a80069, 0x82000480, 0x00000007, 0x48035069,
+       0x1c01f000, 0x83640480, 0x00000008, 0x0400101b,
+       0x58c80a03, 0x80000580, 0x82000400, 0x00000008,
+       0x80040840, 0x040207fd, 0x815c0480, 0x04001013,
+       0x4200b000, 0x00000007, 0x0201f800, 0x0002075a,
+       0x4a026203, 0x00000004, 0x4a026406, 0x00000009,
+       0x4a026203, 0x00000004, 0x4a026007, 0x00000101,
+       0x0401f809, 0x0401f880, 0x8058b040, 0x040207f3,
+       0x80000580, 0x1c01f000, 0x82000540, 0x00000001,
+       0x0401f7fd, 0x0201f800, 0x001007e4, 0x492e6008,
+       0x58c80a03, 0x4a025a04, 0x0000002c, 0x497a5800,
+       0x497a5801, 0x497a5c04, 0x497a5c06, 0x497a5805,
+       0x4a025a08, 0x00000005, 0x4a025a07, 0x00000002,
+       0x58c80201, 0x48025c04, 0x58c80202, 0x48025c07,
+       0x58c80204, 0x48025c08, 0x4a02580d, 0x0000ffff,
+       0x80040840, 0x0400000c, 0x412c2000, 0x0201f800,
+       0x001007e4, 0x4a025a04, 0x0000000a, 0x497a5c04,
+       0x48125800, 0x492c2001, 0x412c2000, 0x80040840,
+       0x040207f7, 0x1c01f000, 0x4d7c0000, 0x4202f800,
+       0x00000010, 0x4df00000, 0x4203e000, 0x50000000,
+       0x59847803, 0x803c79c0, 0x0400001e, 0x4c5c0000,
+       0x583cb808, 0x585c3408, 0x801831c0, 0x0400000b,
+       0x0401f84a, 0x04000016, 0x42001000, 0x0010b519,
+       0x0401f87f, 0x04000012, 0x0201f800, 0x001007d3,
+       0x0400000f, 0x492cb805, 0x585c0005, 0x80000540,
+       0x02000800, 0x001005d8, 0x0401f830, 0x585c5408,
+       0x0401f80b, 0x5c00b800, 0x5c03e000, 0x817ef840,
+       0x040207e1, 0x5c02f800, 0x1c01f000, 0x5c00b800,
+       0x5c03e000, 0x5c02f800, 0x1c01f000, 0x4803c856,
+       0x405c6000, 0x802851c0, 0x04000018, 0x585c0204,
+       0x82000d00, 0x0000000f, 0x82040c00, 0x001010bd,
+       0x50044000, 0x4cf00000, 0x4d000000, 0x4d040000,
+       0x4021e000, 0x40320800, 0x59860004, 0x4c280000,
+       0x0401f934, 0x5c005000, 0x40f04000, 0x41046000,
+       0x0201f800, 0x0010109b, 0x040207f6, 0x5c020800,
+       0x5c020000, 0x5c01e000, 0x58c80204, 0x4800bc08,
+       0x0201f800, 0x00020086, 0x4a026007, 0x00000101,
+       0x497a6009, 0x0401f055, 0x4803c856, 0x59840003,
+       0x80026540, 0x04000003, 0x59300000, 0x48030803,
+       0x1c01f000, 0x4803c856, 0x59840003, 0x48026000,
+       0x49330803, 0x1c01f000, 0x58cc0805, 0x40180000,
+       0x80040480, 0x0400100d, 0x82cc0580, 0x0010b50e,
+       0x02020800, 0x001005d8, 0x58c80205, 0x80040480,
+       0x0400101d, 0x82000540, 0x00000001, 0x1c01f000,
+       0x80003580, 0x0401f7fe, 0x82cc0580, 0x0010b50e,
+       0x02020800, 0x001005d8, 0x58c80400, 0x8c000504,
+       0x040007f8, 0x58c8040b, 0x8c00051e, 0x040007f5,
+       0x8c000500, 0x040207f3, 0x84000540, 0x4801940b,
+       0x42000000, 0x0010b839, 0x0201f800, 0x0010aa47,
+       0x42001000, 0x00008026, 0x0201f800, 0x00103a3e,
+       0x0401f7e8, 0x58c8040b, 0x8c00051e, 0x040007e2,
+       0x8c000502, 0x040207e0, 0x84000542, 0x4801940b,
+       0x42000000, 0x0010b838, 0x0201f800, 0x0010aa47,
+       0x42001000, 0x00008025, 0x42001800, 0x00000000,
+       0x0201f800, 0x00103a3e, 0x0401f7d3, 0x4803c856,
+       0x58080000, 0x42001800, 0x00000007, 0x58080801,
+       0x80040480, 0x04020004, 0x400c0000, 0x80000540,
+       0x0401f005, 0x04001003, 0x800c0480, 0x0401f002,
+       0x80000080, 0x1c01f000, 0x4803c856, 0x59300008,
+       0x80000d40, 0x02000800, 0x001005d8, 0x58040005,
+       0x80000540, 0x02000800, 0x001005d8, 0x59300007,
+       0x82000500, 0x00000101, 0x82000580, 0x00000101,
+       0x02020800, 0x001005d8, 0x42001000, 0x0010b519,
+       0x58080801, 0x82040400, 0x0010b51b, 0x497a6414,
+       0x4a026015, 0x0000ffff, 0x45300000, 0x80040800,
+       0x82040480, 0x00000008, 0x04001002, 0x80000d80,
+       0x48041001, 0x82040400, 0x0010b51b, 0x45780000,
+       0x1c01f000, 0x4933c857, 0x59300808, 0x800409c0,
+       0x02000800, 0x001005d8, 0x4d2c0000, 0x58065805,
+       0x812e59c0, 0x02020800, 0x001007f4, 0x49780805,
+       0x40065800, 0x0201f800, 0x001007fd, 0x5c025800,
+       0x4d300000, 0x0201f800, 0x0002077d, 0x5c026000,
+       0x1c01f000, 0x59300406, 0x82000580, 0x00000009,
+       0x04020006, 0x59300007, 0x8c000510, 0x04000003,
+       0x80000580, 0x1c01f000, 0x82000540, 0x00000001,
+       0x1c01f000, 0x59840802, 0x8c040d04, 0x1c01f000,
+       0x4803c856, 0x59840802, 0x84040d04, 0x84040d40,
+       0x4a030800, 0x00000000, 0x48070802, 0x82040d00,
+       0x0fffffff, 0x42000000, 0x90000000, 0x0201f000,
+       0x00100b94, 0x4807c857, 0x4805980a, 0x49799801,
+       0x49799803, 0x49799806, 0x49799807, 0x49799808,
+       0x49799805, 0x49799809, 0x0401f8c9, 0x0400000a,
+       0x0401f8eb, 0x04000008, 0x48359800, 0x48359802,
+       0x48359806, 0x4a019804, 0x00000001, 0x4a019807,
+       0x00000005, 0x1c01f000, 0x4807c857, 0x58cc1007,
+       0x40040000, 0x80080480, 0x04021020, 0x4c040000,
+       0x4c080000, 0x0401f8da, 0x5c001000, 0x5c000800,
+       0x0400001c, 0x58cc0006, 0x80006540, 0x0402000b,
+       0x48359800, 0x48359802, 0x48359806, 0x49799801,
+       0x49799803, 0x49786801, 0x49786800, 0x49799804,
+       0x49799807, 0x0401f005, 0x48306801, 0x48346000,
+       0x48359806, 0x49786800, 0x58cc0004, 0x58cc1007,
+       0x80000000, 0x82081400, 0x00000005, 0x48019804,
+       0x48099807, 0x0401f7df, 0x80000580, 0x1c01f000,
+       0x82000540, 0x00000001, 0x1c01f000, 0x480bc857,
+       0x4c500000, 0x4c540000, 0x4c580000, 0x40083000,
+       0x58cc0801, 0x82040480, 0x00000005, 0x02021800,
+       0x001005d8, 0x82040400, 0x00106418, 0x50000000,
+       0x58cca800, 0x8054ac00, 0x42001800, 0x00000005,
+       0x40040000, 0x800c0480, 0x80082480, 0x04021002,
+       0x40080000, 0x8000b0c2, 0x8058b400, 0x5450a800,
+       0x8050a000, 0x8054a800, 0x8058b040, 0x040207fc,
+       0x40001000, 0x58cc2805, 0x58cc0807, 0x58cc2001,
+       0x80142c00, 0x80040c80, 0x80102400, 0x48159805,
+       0x48059807, 0x48119801, 0x82100580, 0x00000005,
+       0x0400000c, 0x48119801, 0x40080000, 0x80181480,
+       0x40083000, 0x04000003, 0x040217d6, 0x80000580,
+       0x5c00b000, 0x5c00a800, 0x5c00a000, 0x1c01f000,
+       0x58cc0800, 0x800409c0, 0x02000800, 0x001005d8,
+       0x58040800, 0x48059800, 0x41782000, 0x0401f7ee,
+       0x0401f813, 0x50f00000, 0x81040400, 0x40001800,
+       0x585c0204, 0x4803c857, 0x82000580, 0x0000002c,
+       0x02020800, 0x001005d8, 0x58040202, 0x800000e0,
+       0x81000540, 0x48001802, 0x58040000, 0x48001800,
+       0x58040001, 0x48001801, 0x1c01f000, 0x4807c856,
+       0x58cc0005, 0x80000040, 0x02001800, 0x001005d8,
+       0x48019805, 0x58cc1003, 0x82080480, 0x00000005,
+       0x02021800, 0x001005d8, 0x82080400, 0x00106418,
+       0x50000000, 0x58cc0802, 0x80040c00, 0x80081000,
+       0x82080480, 0x00000005, 0x0402000f, 0x58cc2002,
+       0x58100000, 0x80006d40, 0x04000009, 0x4c340000,
+       0x0401f858, 0x5c006800, 0x49786801, 0x48359802,
+       0x58cc0004, 0x80000040, 0x48019804, 0x49799803,
+       0x0401f002, 0x48099803, 0x1c01f000, 0x4807c856,
+       0x41781800, 0x58c80201, 0x80000540, 0x04000002,
+       0x800c1800, 0x58c80c01, 0x80040c80, 0x0400100a,
+       0x04000009, 0x800c1800, 0x58c80202, 0x80041480,
+       0x04001005, 0x04000004, 0x800c1800, 0x40080800,
+       0x0401f7fb, 0x480d9204, 0x400c0000, 0x42002000,
+       0x00000001, 0x80000040, 0x04000007, 0x04001006,
+       0x80102000, 0x82000480, 0x00000005, 0x04000002,
+       0x040217fc, 0x48119203, 0x1c01f000, 0x4807c856,
+       0x4d2c0000, 0x58cc000a, 0x80000540, 0x02000800,
+       0x001005d8, 0x82002400, 0x00000005, 0x0201f800,
+       0x001007d3, 0x04000012, 0x492d9809, 0x497a5800,
+       0x497a5801, 0x0201f800, 0x001007d3, 0x0400000c,
+       0x58cc0009, 0x48025800, 0x497a5801, 0x492d9809,
+       0x82102480, 0x00000005, 0x040217f7, 0x82000540,
+       0x00000001, 0x5c025800, 0x1c01f000, 0x58cc0009,
+       0x80025d40, 0x040007fc, 0x592c2000, 0x0201f800,
+       0x001007f4, 0x40100000, 0x0401f7fa, 0x58cc0009,
+       0x48cfc857, 0x80006d40, 0x04000005, 0x50340000,
+       0x48019809, 0x49786800, 0x49786801, 0x1c01f000,
+       0x4813c857, 0x58cc0009, 0x48002000, 0x48119809,
+       0x1c01f000, 0x4807c856, 0x4d2c0000, 0x58cc0009,
+       0x80025d40, 0x04000007, 0x592c0000, 0x4c000000,
+       0x0201f800, 0x001007f4, 0x5c000000, 0x0401f7f9,
+       0x5c025800, 0x1c01f000, 0x4807c856, 0x4d2c0000,
+       0x58cc0002, 0x80025d40, 0x04000007, 0x592c0000,
+       0x4c000000, 0x0201f800, 0x001007f4, 0x5c000000,
+       0x0401f7f9, 0x49799800, 0x49799802, 0x49799801,
+       0x49799803, 0x49799806, 0x49799807, 0x49799808,
+       0x49799809, 0x4979980a, 0x5c025800, 0x1c01f000,
+       0x00000003, 0x00000006, 0x00000009, 0x0000000c,
+       0x0000000f, 0x00000012, 0x4803c856, 0x0401f857,
+       0x4a00c204, 0x0000003c, 0x59301009, 0x82080580,
+       0x0010b524, 0x04000013, 0x58080802, 0x82040d00,
+       0x00ffffff, 0x58080403, 0x4804c005, 0x4800c406,
+       0x4a00c207, 0x00000003, 0x59300811, 0x585c0404,
+       0x4978c206, 0x4804c407, 0x80000540, 0x0400000d,
+       0x58600206, 0x84000540, 0x4800c206, 0x0401f009,
+       0x585c080a, 0x82040d00, 0x00ffffff, 0x4804c005,
+       0x4a00c406, 0x000007ff, 0x4978c207, 0x0401f7ef,
+       0x82603c00, 0x00000008, 0x58605404, 0x40282000,
+       0x405c6000, 0x585c0a04, 0x82040d00, 0x0000000f,
+       0x82040c00, 0x001010bd, 0x50044000, 0x80004d80,
+       0x50200000, 0x80307400, 0x58380402, 0x8c244d00,
+       0x04020003, 0x48003a00, 0x0401f003, 0x48003c00,
+       0x801c3800, 0x80244800, 0x80102040, 0x04000006,
+       0x0201f800, 0x0010109b, 0x02000800, 0x001005d8,
+       0x0401f7f0, 0x1c01f000, 0x4803c856, 0x4d340000,
+       0x59300009, 0x80026d40, 0x02000800, 0x001005d8,
+       0x59340401, 0x80000540, 0x0400000e, 0x59840000,
+       0x80000540, 0x0400000b, 0x836c0580, 0x00000003,
+       0x04020008, 0x59341c03, 0x42002000, 0x00000004,
+       0x42003000, 0x00000004, 0x0201f800, 0x00103aae,
+       0x5c026800, 0x1c01f000, 0x4803c856, 0x80001580,
+       0x58c80c01, 0x59300011, 0x80040c80, 0x48066011,
+       0x58c80201, 0x80000540, 0x04000005, 0x80081000,
+       0x80040c80, 0x04001007, 0x04000006, 0x58c80202,
+       0x80081000, 0x80040c80, 0x04001002, 0x040207fd,
+       0x4808bc08, 0x4808c404, 0x1c01f000, 0x4803c856,
+       0x4a0370e5, 0x00020000, 0x59b800e5, 0x8c000524,
+       0x040207fc, 0x4a0370e5, 0x00030000, 0x40000000,
+       0x40000000, 0x59b800e5, 0x8c000524, 0x040207f5,
+       0x5934000e, 0x80006d40, 0x04000010, 0x81300580,
+       0x04020004, 0x58340000, 0x4802680e, 0x0401f00a,
+       0x40347800, 0x58340000, 0x80006d40, 0x02000800,
+       0x001005d8, 0x81300580, 0x040207fa, 0x58340000,
+       0x48007800, 0x497a6000, 0x4a0370e5, 0x00020000,
+       0x1c01f000, 0x4803c856, 0x4d300000, 0x4d2c0000,
+       0x42000800, 0x000003ff, 0x4a0370e5, 0x00020000,
+       0x59b800e5, 0x8c000524, 0x04000005, 0x80040840,
+       0x040207fa, 0x0201f800, 0x001005d8, 0x4a0370e5,
+       0x00030000, 0x40000000, 0x40000000, 0x59b800e5,
+       0x8c000524, 0x040207f1, 0x5934000e, 0x80026540,
+       0x0400000e, 0x4933c857, 0x59300000, 0x4802680e,
+       0x4a026203, 0x00000004, 0x497a6206, 0x497a6009,
+       0x4a026007, 0x00000101, 0x59325808, 0x497a5c08,
+       0x0401fd81, 0x0401f7f1, 0x4a0370e5, 0x00020000,
+       0x5c025800, 0x5c026000, 0x1c01f000, 0x4803c856,
+       0x4c000000, 0x0201f800, 0x00105c9a, 0x04020011,
+       0x0201f800, 0x001045a6, 0x02020800, 0x001005d8,
+       0x5c000000, 0x48026802, 0x0201f800, 0x0002075a,
+       0x04000009, 0x49366009, 0x4a026406, 0x00000001,
+       0x42027000, 0x00000001, 0x0201f000, 0x000207a1,
+       0x5c000000, 0x1c01f000, 0x59300203, 0x82000c80,
+       0x0000000e, 0x02021800, 0x001005d8, 0x4803c857,
+       0x0c01f001, 0x00106503, 0x00106503, 0x00106503,
+       0x00106505, 0x00106565, 0x00106503, 0x00106503,
+       0x001065b7, 0x001065b8, 0x00106503, 0x00106503,
+       0x00106503, 0x00106503, 0x00106503, 0x0201f800,
+       0x001005d8, 0x493bc857, 0x83380480, 0x00000050,
+       0x02021800, 0x001005d8, 0x83380480, 0x00000049,
+       0x02001800, 0x001005d8, 0x0c01f001, 0x00106518,
+       0x0010653a, 0x00106516, 0x00106516, 0x00106516,
+       0x00106516, 0x00106549, 0x0201f800, 0x001005d8,
+       0x4d2c0000, 0x59325808, 0x592c0206, 0x48025c06,
+       0x4a025a06, 0x00000000, 0x4c5c0000, 0x592cbc0a,
+       0x592c0000, 0x48026008, 0x0201f800, 0x00104cde,
+       0x59300008, 0x80000540, 0x04000008, 0x4a026203,
+       0x00000007, 0x42027000, 0x00000043, 0x5c00b800,
+       0x5c025800, 0x0401f08a, 0x8c5cbd08, 0x04020006,
+       0x4a026203, 0x00000007, 0x497a6206, 0x497a6008,
+       0x0401f003, 0x0201f800, 0x0002077d, 0x5c00b800,
+       0x5c025800, 0x1c01f000, 0x0201f800, 0x00106b8a,
+       0x4d2c0000, 0x59325808, 0x0201f800, 0x00109037,
+       0x04000006, 0x4d400000, 0x42028000, 0x00000001,
+       0x0401f8f8, 0x5c028000, 0x5c025800, 0x0201f000,
+       0x0002077d, 0x0201f800, 0x00106b8a, 0x4d3c0000,
+       0x417a7800, 0x0201f800, 0x0010203c, 0x5c027800,
+       0x42003000, 0x00000014, 0x0201f800, 0x0010a942,
+       0x42000000, 0x0010b864, 0x0201f800, 0x0010aa47,
+       0x4d2c0000, 0x59325808, 0x0201f800, 0x00109037,
+       0x04000006, 0x4d400000, 0x42028000, 0x00000029,
+       0x0401f8dc, 0x5c028000, 0x5c025800, 0x0201f000,
+       0x0002077d, 0x493bc857, 0x497a6206, 0x83380480,
+       0x00000054, 0x02021800, 0x001005d8, 0x83380480,
+       0x00000047, 0x02001800, 0x001005d8, 0x0c01f001,
+       0x001065b6, 0x0010657f, 0x0010657d, 0x0010657d,
+       0x0010657d, 0x0010657d, 0x0010657d, 0x0010657d,
+       0x0010657d, 0x0010657d, 0x0010657d, 0x0010657d,
+       0x00106583, 0x0201f800, 0x001005d8, 0x59300011,
+       0x82000500, 0xffff0000, 0x04020034, 0x59840802,
+       0x8c040d04, 0x04000025, 0x59300009, 0x80026d40,
+       0x0400001f, 0x4c5c0000, 0x4c600000, 0x497a6206,
+       0x5930b808, 0x585c0005, 0x8000c540, 0x02000800,
+       0x001005d8, 0x0401fe8d, 0x40625800, 0x0201f800,
+       0x00104cde, 0x4978b805, 0x0401fef5, 0x497a6009,
+       0x585c3408, 0x0401fcbd, 0x0400000e, 0x42001000,
+       0x0010b519, 0x0401fcf2, 0x0400000a, 0x0201f800,
+       0x001007e4, 0x04000007, 0x492cb805, 0x585c5408,
+       0x0401fc83, 0x5c00c000, 0x5c00b800, 0x1c01f000,
+       0x0401fca9, 0x0401f7fc, 0x8c040d06, 0x040207fc,
+       0x59300009, 0x80026d40, 0x04000006, 0x5934000e,
+       0x80000540, 0x02020800, 0x001005d8, 0x497a6009,
+       0x0401fd0d, 0x0401f7f2, 0x0401f06f, 0x4803c856,
+       0x4803c856, 0x83380580, 0x00000043, 0x02020800,
+       0x001005d8, 0x4a026203, 0x00000003, 0x493a6403,
+       0x59325808, 0x592c000f, 0x48026011, 0x497a6013,
+       0x592c0406, 0x800000c2, 0x800010c4, 0x80081400,
+       0x480a6206, 0x0201f800, 0x00100f4e, 0x42000800,
+       0x80000060, 0x0401f154, 0x42000000, 0x0010b875,
+       0x0201f800, 0x0010aa47, 0x59300203, 0x82000c80,
+       0x0000000e, 0x02021800, 0x001005d8, 0x4803c857,
+       0x82000d80, 0x00000003, 0x04000006, 0x82000d80,
+       0x00000004, 0x04000045, 0x0201f800, 0x001005d8,
+       0x0201f800, 0x00106c55, 0x59300004, 0x8c00053e,
+       0x04020007, 0x0201f800, 0x00106b6c, 0x02020800,
+       0x001005d8, 0x0201f000, 0x00106c4b, 0x0401f9c3,
+       0x0201f800, 0x00106c4b, 0x59325808, 0x42028000,
+       0x00000006, 0x0401f84b, 0x0201f000, 0x0002077d,
+       0x4803c856, 0x59300203, 0x82000c80, 0x0000000e,
+       0x02021800, 0x001005d8, 0x82000d80, 0x00000003,
+       0x04000006, 0x82000d80, 0x00000004, 0x04000023,
+       0x0201f800, 0x001005d8, 0x4803c856, 0x0201f800,
+       0x00106c55, 0x4df00000, 0x59300004, 0x8c00053e,
+       0x04020006, 0x0201f800, 0x00106f60, 0x02020800,
+       0x001005d8, 0x0401f010, 0x0201f800, 0x00108cd6,
+       0x04020004, 0x0201f800, 0x00106e62, 0x0402000a,
+       0x0401f99a, 0x02020800, 0x001005d8, 0x5c03e000,
+       0x02000800, 0x00106c4b, 0x82000540, 0x00000001,
+       0x1c01f000, 0x5c03e000, 0x02000800, 0x00106c4b,
+       0x80000580, 0x1c01f000, 0x4933c857, 0x0201f800,
+       0x00100e99, 0x4933c857, 0x4c5c0000, 0x4d340000,
+       0x497a6206, 0x5930b808, 0x59300009, 0x80026d40,
+       0x04020e5f, 0x42001000, 0x0010b519, 0x0401fc60,
+       0x04000009, 0x58c80204, 0x4800bc08, 0x41785000,
+       0x0201f800, 0x00106227, 0x5c026800, 0x5c00b800,
+       0x1c01f000, 0x4978bc08, 0x0401fc17, 0x0401f7fb,
+       0x4803c856, 0x0201f800, 0x00109037, 0x0400000f,
+       0x592c0000, 0x80000d40, 0x04000009, 0x497a5800,
+       0x49425a06, 0x4c040000, 0x0201f800, 0x000202da,
+       0x5c000800, 0x40065800, 0x0401f7f6, 0x49425a06,
+       0x0201f800, 0x000202da, 0x1c01f000, 0x4933c857,
+       0x59300c06, 0x82040580, 0x0000000e, 0x04000004,
+       0x82040580, 0x00000009, 0x04020004, 0x0401ffe5,
+       0x497a6008, 0x80000580, 0x1c01f000, 0x592e6009,
+       0x83300480, 0x0010d1c0, 0x04001016, 0x41580000,
+       0x81300480, 0x04021013, 0x40040000, 0x59300c06,
+       0x80040580, 0x04020012, 0x59300a03, 0x82040580,
+       0x00000007, 0x02020800, 0x001005d8, 0x59300008,
+       0x80000540, 0x02020800, 0x001005d8, 0x0201f800,
+       0x0002077d, 0x42000000, 0x00000000, 0x0401f009,
+       0x42000000, 0x00000008, 0x0401f006, 0x82040580,
+       0x00000007, 0x040207fb, 0x42000000, 0x00000005,
+       0x592c0a06, 0x48065c06, 0x48025a06, 0x0201f000,
+       0x000202da, 0x4c0c0000, 0x4c100000, 0x4c140000,
+       0x4c180000, 0x80001d80, 0x80002580, 0x42003000,
+       0x00000020, 0x82040500, 0x00000001, 0x04000003,
+       0x40080000, 0x800c1c00, 0x400c2800, 0x800c1902,
+       0x80102102, 0x82140500, 0x00000001, 0x04000003,
+       0x82102540, 0x80000000, 0x80040902, 0x80183040,
+       0x040207f1, 0x40100800, 0x400c0000, 0x5c003000,
+       0x5c002800, 0x5c002000, 0x5c001800, 0x1c01f000,
+       0x4c580000, 0x4200b000, 0x00000020, 0x80000540,
+       0x04000018, 0x80041c80, 0x04021016, 0x800810c2,
+       0x80040982, 0x04001006, 0x80041c80, 0x04021005,
+       0x8058b040, 0x040207fa, 0x0401f006, 0x80041c80,
+       0x400c0800, 0x80081000, 0x8058b040, 0x040207f4,
+       0x4c000000, 0x41f00000, 0x82000500, 0xf7ffffff,
+       0x4003e000, 0x5c000000, 0x5c00b000, 0x1c01f000,
+       0x4c000000, 0x41f00000, 0x82000540, 0x08000000,
+       0x0401f7f8, 0x4a0378e8, 0x00000000, 0x4a03c821,
+       0x00000010, 0x4a03c823, 0x00000004, 0x0401f82c,
+       0x4a0378e9, 0x00003a0d, 0x4a0378e8, 0x00000001,
+       0x42000000, 0x00001000, 0x50000000, 0x82000480,
+       0x24220001, 0x04000004, 0x59e00002, 0x84000548,
+       0x4803c002, 0x42000800, 0x00000005, 0x4203a000,
+       0x00007600, 0x42000000, 0x00001000, 0x50000000,
+       0x82000480, 0x24320001, 0x04021003, 0x4a03a005,
+       0xd0000001, 0x59d00006, 0x4a03a005, 0x90000001,
+       0x83d3a400, 0x00000020, 0x80040840, 0x040207fa,
+       0x59e00003, 0x82000500, 0xffffffe0, 0x82000540,
+       0x00008000, 0x4803c003, 0x59c40006, 0x82000500,
+       0xfffcffff, 0x48038806, 0x1c01f000, 0x4d900000,
+       0x4d180000, 0x4a0378e7, 0xaaaaaaaa, 0x4a0378e6,
+       0xaaaaaaaa, 0x4a0378e5, 0xaaaaaaaa, 0x4a0378e4,
+       0xaaaaaaaa, 0x42000800, 0x0000bf00, 0x4a00081a,
+       0x0010b7d4, 0x4a00081b, 0x001010bd, 0x4a00081c,
+       0x001010cd, 0x4a031800, 0x00000000, 0x4a031801,
+       0x0010b544, 0x4a031802, 0x0010b54b, 0x42000800,
+       0x0010b7d7, 0x417a3000, 0x811b20c8, 0x83932400,
+       0x0000bf32, 0x48072000, 0x4a032001, 0x00000000,
+       0x83180400, 0x001070ea, 0x50000000, 0x48032002,
+       0x82040c00, 0x00000003, 0x811a3000, 0x83180480,
+       0x00000005, 0x040017f1, 0x5c023000, 0x5c032000,
+       0x1c01f000, 0x48066004, 0x497a6000, 0x497a6001,
+       0x59bc00ea, 0x8c000516, 0x040207fe, 0x83300400,
+       0xa0000000, 0x480378e1, 0x1c01f000, 0x4933c857,
+       0x42000800, 0x80000040, 0x48066004, 0x497a6000,
+       0x59bc00ea, 0x8c000516, 0x040207fe, 0x83300400,
+       0x60000000, 0x480378e1, 0x1c01f000, 0x0201f800,
+       0x00106c55, 0x4df00000, 0x4d300000, 0x4d340000,
+       0x4d2c0000, 0x4d180000, 0x4c5c0000, 0x4c600000,
+       0x4d900000, 0x4dd00000, 0x4da40000, 0x4d140000,
+       0x42003000, 0x0000bf2e, 0x581a6001, 0x813261c0,
+       0x0400002c, 0x41302800, 0x4178c000, 0x59300000,
+       0x4c000000, 0x59326809, 0x5930b801, 0x59300406,
+       0x82000d80, 0x00000006, 0x04020003, 0x8d3e7d18,
+       0x04000010, 0x8d3e7d06, 0x04000007, 0x82000580,
+       0x00000003, 0x04020004, 0x59340200, 0x8c00050e,
+       0x04020008, 0x0401f92f, 0x4c0c0000, 0x4c140000,
+       0x0401fb5f, 0x5c002800, 0x5c001800, 0x0401f005,
+       0x41301800, 0x8060c1c0, 0x04020002, 0x400cc000,
+       0x805cb9c0, 0x04000003, 0x405e6000, 0x0401f7e3,
+       0x5c026000, 0x813261c0, 0x04000006, 0x8060c1c0,
+       0x04000002, 0x40602800, 0x4178c000, 0x0401f7d8,
+       0x417a3000, 0x0201f800, 0x001070d8, 0x59926004,
+       0x813261c0, 0x04000023, 0x59326809, 0x4130c000,
+       0x59300001, 0x8000bd40, 0x04000016, 0x40026000,
+       0x40602800, 0x5930b801, 0x59300406, 0x82000d80,
+       0x00000006, 0x0400000e, 0x8d3e7d06, 0x04000007,
+       0x82000580, 0x00000003, 0x04020004, 0x59340200,
+       0x8c00050e, 0x04020006, 0x0401f8dc, 0x4c140000,
+       0x0401fb2f, 0x5c002800, 0x0401f002, 0x41302800,
+       0x405e6000, 0x813261c0, 0x040207eb, 0x8060c1c0,
+       0x04000004, 0x40626000, 0x4178c000, 0x0401f7e7,
+       0x811a3000, 0x83180480, 0x00000005, 0x040017d6,
+       0x5c022800, 0x5c034800, 0x5c03a000, 0x5c032000,
+       0x5c00c000, 0x5c00b800, 0x5c023000, 0x5c025800,
+       0x5c026800, 0x5c026000, 0x5c03e000, 0x02000800,
+       0x00106c4b, 0x1c01f000, 0x4933c857, 0x0201f800,
+       0x00106c55, 0x4df00000, 0x4d340000, 0x4d180000,
+       0x4d900000, 0x42003000, 0x0000bf2e, 0x59326809,
+       0x58182001, 0x40102800, 0x801021c0, 0x04000016,
+       0x41300000, 0x80100580, 0x04000011, 0x58100009,
+       0x81340580, 0x0402000b, 0x40101800, 0x58102001,
+       0x41300000, 0x801021c0, 0x0400000b, 0x80100d80,
+       0x04000007, 0x40101800, 0x58102001, 0x0401f7fa,
+       0x40102800, 0x58102000, 0x0401f7ec, 0x0401f8bd,
+       0x0401f01a, 0x42032000, 0x0000bf32, 0x417a3000,
+       0x59902004, 0x40102800, 0x801021c0, 0x0400000b,
+       0x58100009, 0x81340580, 0x04020008, 0x41300000,
+       0x80100580, 0x0400000c, 0x40102800, 0x58102001,
+       0x801021c0, 0x040207fa, 0x811a3000, 0x83180480,
+       0x00000005, 0x0402100d, 0x83932400, 0x00000010,
+       0x0401f7ec, 0x0401f881, 0x5c032000, 0x5c023000,
+       0x5c026800, 0x5c03e000, 0x02000800, 0x00106c4b,
+       0x80000580, 0x1c01f000, 0x0401fb6f, 0x040007f7,
+       0x5c032000, 0x5c023000, 0x5c026800, 0x5c03e000,
+       0x02000800, 0x00106c4b, 0x82000540, 0x00000001,
+       0x1c01f000, 0x0201f800, 0x00106c55, 0x4df00000,
+       0x4d300000, 0x4d340000, 0x4d180000, 0x4d2c0000,
+       0x4c5c0000, 0x4c600000, 0x4d900000, 0x4dd00000,
+       0x4da40000, 0x4d140000, 0x42003000, 0x0000bf2e,
+       0x581a6001, 0x813261c0, 0x04000023, 0x41302800,
+       0x5930b800, 0x59326809, 0x59340403, 0x81440580,
+       0x04000006, 0x805cb9c0, 0x0400001b, 0x41302800,
+       0x405e6000, 0x0401f7f7, 0x5930b801, 0x8d3e7d00,
+       0x04000003, 0x0401fb67, 0x0402000e, 0x59300406,
+       0x82000580, 0x00000006, 0x04020003, 0x8d3e7d18,
+       0x04000008, 0x0401f867, 0x4c0c0000, 0x4c140000,
+       0x0401fa97, 0x5c002800, 0x5c001800, 0x0401f002,
+       0x41301800, 0x405e6000, 0x813261c0, 0x040207eb,
+       0x0401f02d, 0x417a3000, 0x0201f800, 0x001070d8,
+       0x59926004, 0x813261c0, 0x04000005, 0x59326809,
+       0x59340403, 0x81440580, 0x04000006, 0x811a3000,
+       0x83180480, 0x00000005, 0x040017f4, 0x0401f01e,
+       0x4130c000, 0x59300001, 0x8000bd40, 0x04000012,
+       0x40026000, 0x40602800, 0x5930b801, 0x8d3e7d00,
+       0x04000003, 0x0401fb3b, 0x0402000a, 0x59300406,
+       0x82000580, 0x00000006, 0x04000006, 0x0401f81b,
+       0x4c140000, 0x0401fa6e, 0x5c002800, 0x0401f002,
+       0x41302800, 0x405e6000, 0x813261c0, 0x040207ef,
+       0x8060c1c0, 0x04000004, 0x40626000, 0x4178c000,
+       0x0401f7eb, 0x5c022800, 0x5c034800, 0x5c03a000,
+       0x5c032000, 0x5c00c000, 0x5c00b800, 0x5c025800,
+       0x5c023000, 0x5c026800, 0x5c026000, 0x5c03e000,
+       0x04000be3, 0x1c01f000, 0x0401fbc8, 0x59900004,
+       0x81300580, 0x04020018, 0x4c140000, 0x0201f800,
+       0x00106dc3, 0x0401fbb8, 0x5c002800, 0x59300001,
+       0x800001c0, 0x04020003, 0x497a680c, 0x1c01f000,
+       0x42003000, 0x0000bf2e, 0x497a6001, 0x58180801,
+       0x800409c0, 0x04020004, 0x48003000, 0x48003001,
+       0x1c01f000, 0x58180800, 0x48000800, 0x48003000,
+       0x1c01f000, 0x59300001, 0x48002801, 0x800001c0,
+       0x04020002, 0x4816680c, 0x497a6001, 0x1c01f000,
+       0x0401fba6, 0x42003000, 0x0000bf2e, 0x58180001,
+       0x81300580, 0x0402001c, 0x59300801, 0x800409c0,
+       0x0400000e, 0x59300000, 0x800001c0, 0x04020005,
+       0x48043001, 0x48043000, 0x497a6001, 0x1c01f000,
+       0x59300000, 0x48000800, 0x48043001, 0x497a6000,
+       0x497a6001, 0x1c01f000, 0x59300800, 0x800409c0,
+       0x04020005, 0x49783001, 0x49783000, 0x497a680c,
+       0x1c01f000, 0x48043001, 0x497a6000, 0x497a680c,
+       0x1c01f000, 0x58180000, 0x81300580, 0x0402000c,
+       0x59300001, 0x800001c0, 0x04020005, 0x48143000,
+       0x49782800, 0x497a680c, 0x1c01f000, 0x48003000,
+       0x48002800, 0x497a6001, 0x1c01f000, 0x59300000,
+       0x800001c0, 0x04020008, 0x59300001, 0x48001801,
+       0x800001c0, 0x04020002, 0x480e680c, 0x497a6001,
+       0x1c01f000, 0x59300801, 0x800409c0, 0x04020006,
+       0x59300800, 0x48042800, 0x497a6000, 0x497a680c,
+       0x1c01f000, 0x59300000, 0x48000800, 0x48042800,
+       0x497a6000, 0x497a6001, 0x1c01f000, 0x0401fb82,
+       0x4df00000, 0x0401f839, 0x040208c4, 0x04020945,
+       0x04020a89, 0x04020005, 0x5c03e000, 0x04000b70,
+       0x80000580, 0x1c01f000, 0x5c03e000, 0x04000b6c,
+       0x82000540, 0x00000001, 0x1c01f000, 0x4d2c0000,
+       0x4d340000, 0x4d300000, 0x41783000, 0x598e6009,
+       0x813261c0, 0x04000021, 0x59300406, 0x82000580,
+       0x00000006, 0x04020004, 0x8d3e7d18, 0x0402000a,
+       0x0401f017, 0x82040580, 0x00000005, 0x04020006,
+       0x8d3e7d16, 0x04000004, 0x59300420, 0x8c000500,
+       0x0402000f, 0x0401fa4e, 0x59300000, 0x4c000000,
+       0x8d3e7d06, 0x04000004, 0x0201f800, 0x001092d7,
+       0x04000005, 0x0401f867, 0x4c180000, 0x0401f9bc,
+       0x5c003000, 0x5c026000, 0x0401f7e2, 0x41303000,
+       0x59326000, 0x0401f7df, 0x5c026000, 0x5c026800,
+       0x5c025800, 0x1c01f000, 0x4933c857, 0x4c5c0000,
+       0x813261c0, 0x02000800, 0x001005d8, 0x41300000,
+       0x598cb809, 0x41783000, 0x805cb9c0, 0x04000013,
+       0x805c0d80, 0x04000004, 0x405c3000, 0x5818b800,
+       0x0401f7fa, 0x0401f84b, 0x598c000d, 0x81300580,
+       0x02000800, 0x001070b9, 0x59300403, 0x82000580,
+       0x00000042, 0x04020002, 0x497a6007, 0x80000580,
+       0x5c00b800, 0x1c01f000, 0x82000540, 0x00000001,
+       0x5c00b800, 0x1c01f000, 0x0401fb27, 0x4df00000,
+       0x4d2c0000, 0x4d340000, 0x4d300000, 0x41783000,
+       0x598e6009, 0x813261c0, 0x0400002c, 0x59300c06,
+       0x82040580, 0x00000006, 0x04020004, 0x8d3e7d18,
+       0x0402000a, 0x0401f022, 0x82040580, 0x00000005,
+       0x04020006, 0x8d3e7d18, 0x04000004, 0x59300420,
+       0x8c000500, 0x0402001a, 0x59326809, 0x59340403,
+       0x81440580, 0x04020016, 0x8d3e7d00, 0x04000006,
+       0x82040580, 0x00000003, 0x04020011, 0x0401fa35,
+       0x0402000f, 0x0401f9f6, 0x59300000, 0x4c000000,
+       0x8d3e7d06, 0x04000004, 0x0201f800, 0x001092d7,
+       0x04000005, 0x0401f80f, 0x4c180000, 0x0401f964,
+       0x5c003000, 0x5c026000, 0x0401f7d7, 0x41303000,
+       0x59326000, 0x0401f7d4, 0x5c026000, 0x5c026800,
+       0x5c025800, 0x5c03e000, 0x04000ae5, 0x1c01f000,
+       0x59300800, 0x497a6000, 0x0401fac8, 0x801831c0,
+       0x04020009, 0x598c0008, 0x81300580, 0x04020004,
+       0x48031808, 0x48031809, 0x0401f008, 0x48071809,
+       0x0401f006, 0x48043000, 0x598c0008, 0x81300580,
+       0x04020002, 0x481b1808, 0x0401f2ca, 0x4d2c0000,
+       0x4d300000, 0x4d340000, 0x41783000, 0x598e600b,
+       0x813261c0, 0x04000013, 0x8d3e7d06, 0x04000005,
+       0x59326809, 0x59340200, 0x8c00050e, 0x0402000a,
+       0x0401f9bf, 0x59300000, 0x4c000000, 0x0401f853,
+       0x4c180000, 0x0401f932, 0x5c003000, 0x5c026000,
+       0x0401f7f0, 0x41303000, 0x59326000, 0x0401f7ed,
+       0x0201f800, 0x00104773, 0x5c026800, 0x5c026000,
+       0x5c025800, 0x1c01f000, 0x4933c857, 0x4c5c0000,
+       0x813261c0, 0x02000800, 0x001005d8, 0x41300000,
+       0x598cb80b, 0x41783000, 0x805cb9c0, 0x0400000f,
+       0x805c0d80, 0x04000004, 0x405c3000, 0x5818b800,
+       0x0401f7fa, 0x0401f835, 0x598c000d, 0x81300580,
+       0x02000800, 0x001070b9, 0x497a6007, 0x80000580,
+       0x5c00b800, 0x1c01f000, 0x82000540, 0x00000001,
+       0x5c00b800, 0x1c01f000, 0x0401fa9f, 0x4df00000,
+       0x4d340000, 0x4d300000, 0x4d2c0000, 0x0201f800,
+       0x00020245, 0x02020800, 0x001005d8, 0x41783000,
+       0x598e600b, 0x813261c0, 0x04000014, 0x59300009,
+       0x81340580, 0x0402000e, 0x8d3e7d00, 0x04000003,
+       0x0401f9bc, 0x0402000a, 0x0401f97d, 0x59300000,
+       0x4c000000, 0x0401f811, 0x4c180000, 0x0401f8f0,
+       0x5c003000, 0x5c026000, 0x0401f7ef, 0x41303000,
+       0x59326000, 0x0401f7ec, 0x0201f800, 0x0010479c,
+       0x5c025800, 0x5c026000, 0x5c026800, 0x5c03e000,
+       0x04000a6f, 0x1c01f000, 0x59300800, 0x497a6000,
+       0x0401fa52, 0x801831c0, 0x04020009, 0x598c000a,
+       0x81300580, 0x04020004, 0x4803180a, 0x4803180b,
+       0x0401f008, 0x4807180b, 0x0401f006, 0x48043000,
+       0x598c000a, 0x81300580, 0x04020002, 0x481b180a,
+       0x0401f254, 0x0401fa64, 0x4df00000, 0x4d300000,
+       0x598e6005, 0x813261c0, 0x04000020, 0x59300000,
+       0x4c000000, 0x59300c06, 0x82040580, 0x00000011,
+       0x04020007, 0x833c0500, 0x00001800, 0x04000015,
+       0x8d3e7d16, 0x04020013, 0x0401f009, 0x82040580,
+       0x00000004, 0x04020006, 0x8d3e7d16, 0x04000004,
+       0x59300420, 0x8c000500, 0x0402000a, 0x0201f800,
+       0x0010914e, 0x02000800, 0x0010801c, 0x0201f800,
+       0x00109326, 0x0201f800, 0x0002077d, 0x0401fa31,
+       0x5c026000, 0x0401f7e0, 0x497b1805, 0x497b1804,
+       0x5c026000, 0x5c03e000, 0x04000a31, 0x1c01f000,
+       0x4933c857, 0x4c5c0000, 0x4c600000, 0x813261c0,
+       0x02000800, 0x001005d8, 0x41300000, 0x598cb805,
+       0x405cc000, 0x805cb9c0, 0x04000025, 0x805c0d80,
+       0x04000004, 0x405cc000, 0x5860b800, 0x0401f7fa,
+       0x598c000d, 0x81300580, 0x02000800, 0x001070b9,
+       0x0401fa02, 0x598c0005, 0x805c0580, 0x04020009,
+       0x585c0000, 0x48031805, 0x4978b800, 0x598c0004,
+       0x805c0580, 0x0402000d, 0x497b1804, 0x0401f00b,
+       0x598c0004, 0x805c0580, 0x04020005, 0x48631804,
+       0x4978b800, 0x4978c000, 0x0401f004, 0x585c0000,
+       0x4800c000, 0x4978b800, 0x0401f9fe, 0x80000580,
+       0x5c00c000, 0x5c00b800, 0x1c01f000, 0x82000540,
+       0x00000001, 0x5c00c000, 0x5c00b800, 0x1c01f000,
+       0x4933c857, 0x0401fa04, 0x4df00000, 0x4d2c0000,
+       0x4d340000, 0x4d300000, 0x4c5c0000, 0x4178b800,
+       0x8d3e7d18, 0x0400000d, 0x8d3e7d16, 0x0402000b,
+       0x0201f800, 0x00109037, 0x04000008, 0x0201f800,
+       0x00109597, 0x04020005, 0x592c0207, 0x492fc857,
+       0x8200bd00, 0x0000000f, 0x41783000, 0x598e6005,
+       0x813261c0, 0x04000029, 0x59326809, 0x813669c0,
+       0x04000023, 0x59340403, 0x81440580, 0x04020020,
+       0x59300c06, 0x82040580, 0x00000011, 0x0400001a,
+       0x82040580, 0x00000004, 0x04020004, 0x59300420,
+       0x8c000500, 0x04020016, 0x0201f800, 0x00109037,
+       0x04000008, 0x0201f800, 0x00109597, 0x04020005,
+       0x59300403, 0x82000580, 0x00000043, 0x0400000c,
+       0x0401f8c3, 0x59300000, 0x4c000000, 0x0401f812,
+       0x4c180000, 0x0401f836, 0x5c003000, 0x5c026000,
+       0x0401f7dc, 0x805cb9c0, 0x040207ec, 0x41303000,
+       0x59326000, 0x0401f7d7, 0x5c00b800, 0x5c026000,
+       0x5c026800, 0x5c025800, 0x5c03e000, 0x040009b4,
+       0x1c01f000, 0x59300800, 0x497a6000, 0x0401f997,
+       0x801831c0, 0x04020009, 0x598c0004, 0x81300580,
+       0x04020004, 0x48031804, 0x48031805, 0x0401f008,
+       0x48071805, 0x0401f006, 0x48043000, 0x598c0004,
+       0x81300580, 0x04020002, 0x481b1804, 0x0401f199,
+       0x4943c857, 0x0401f9a8, 0x4df00000, 0x0401fe34,
+       0x0401fecb, 0x5c03e000, 0x04000999, 0x1c01f000,
+       0x4947c857, 0x0401f9a0, 0x4df00000, 0x4d3c0000,
+       0x853e7d00, 0x0401fe75, 0x0401fefc, 0x5c027800,
+       0x5c03e000, 0x0400098e, 0x1c01f000, 0x5c000000,
+       0x4c000000, 0x4803c857, 0x4d340000, 0x4d2c0000,
+       0x59326809, 0x59325808, 0x59300406, 0x82000c80,
+       0x00000012, 0x02021800, 0x001005d8, 0x4933c857,
+       0x4943c857, 0x493fc857, 0x4803c857, 0x0c01f804,
+       0x5c025800, 0x5c026800, 0x1c01f000, 0x00106ae5,
+       0x00106ae7, 0x00106af1, 0x00106b0b, 0x00106ae7,
+       0x00106afb, 0x00106b23, 0x00106ae5, 0x00106ae5,
+       0x00106b36, 0x00106b2d, 0x00106ae5, 0x00106ae5,
+       0x00106ae5, 0x00106ae5, 0x00106ae5, 0x00106b3c,
+       0x00106b3c, 0x0201f800, 0x001005d8, 0x0201f800,
+       0x00109134, 0x02000800, 0x00102074, 0x0201f800,
+       0x00109326, 0x0201f800, 0x0010801c, 0x0201f000,
+       0x00107911, 0x812e59c0, 0x02020800, 0x001005d8,
+       0x5930021d, 0x82000580, 0x00000003, 0x02000800,
+       0x0010912a, 0x0201f000, 0x00107911, 0x0201f800,
+       0x00109037, 0x02000000, 0x00107911, 0x592c1204,
+       0x82081500, 0x000000ff, 0x82080580, 0x00000055,
+       0x02020800, 0x001005d8, 0x49425a06, 0x0201f800,
+       0x000202da, 0x0201f000, 0x00107911, 0x59300004,
+       0x8400055c, 0x48026004, 0x59300007, 0x8c000500,
+       0x02020800, 0x00100e99, 0x0201f800, 0x00109037,
+       0x0400000d, 0x4a025a04, 0x00000103, 0x49425a06,
+       0x497a5c09, 0x0201f800, 0x001091c6, 0x0201f800,
+       0x0010a693, 0x0201f800, 0x000202da, 0x0201f800,
+       0x0010912a, 0x0201f000, 0x00107911, 0x59300007,
+       0x8c000500, 0x02020800, 0x00100e99, 0x0201f800,
+       0x00109037, 0x02020800, 0x0010a3ef, 0x0201f000,
+       0x00107911, 0x0201f800, 0x00109037, 0x04000005,
+       0x49425a06, 0x497a5c09, 0x0201f800, 0x000202da,
+       0x0201f000, 0x00107911, 0x0201f800, 0x00109037,
+       0x02020800, 0x0010664f, 0x0201f000, 0x00107911,
+       0x0201f800, 0x00109037, 0x04000004, 0x49425a06,
+       0x0201f800, 0x000202da, 0x59325817, 0x0201f800,
+       0x001007fd, 0x0201f000, 0x00107911, 0x598c000d,
+       0x81300580, 0x04000003, 0x497a6007, 0x1c01f000,
+       0x59c40004, 0x82000500, 0x0000000c, 0x04000005,
+       0x4a038804, 0x0000000c, 0x497b2807, 0x0401f00a,
+       0x0401facd, 0x59300403, 0x82000d80, 0x00000040,
+       0x04000004, 0x82000580, 0x00000042, 0x04020002,
+       0x497a6007, 0x0201f800, 0x001070b9, 0x80000580,
+       0x1c01f000, 0x59300804, 0x8c040d3e, 0x04020004,
+       0x82000540, 0x00000001, 0x0401f005, 0x4933c857,
+       0x84040d3e, 0x48066004, 0x80000580, 0x1c01f000,
+       0x59300804, 0x8c040d20, 0x04020004, 0x82000540,
+       0x00000001, 0x1c01f000, 0x4933c857, 0x4d380000,
+       0x59300804, 0x84040d20, 0x48066004, 0x42027000,
+       0x00000049, 0x59300203, 0x82000580, 0x00000003,
+       0x04000003, 0x42027000, 0x00000013, 0x0201f800,
+       0x000207a1, 0x80000580, 0x5c027000, 0x1c01f000,
+       0x59300017, 0x81480580, 0x04020003, 0x59300018,
+       0x814c0580, 0x1c01f000, 0x4d2c0000, 0x4d300000,
+       0x0401f8c9, 0x4df00000, 0x0201f800, 0x00106062,
+       0x59900001, 0x82000500, 0x00000003, 0x0c01f001,
+       0x00106bba, 0x00106b9a, 0x00106b98, 0x00106b98,
+       0x0201f800, 0x001005d8, 0x59926004, 0x0401f88e,
+       0x813261c0, 0x0400001d, 0x59300004, 0x8c000516,
+       0x04000004, 0x59325808, 0x497a5808, 0x497a5809,
+       0x0401f88e, 0x59300001, 0x800001c0, 0x0400000e,
+       0x497a6001, 0x42003000, 0x0000bf2e, 0x58180801,
+       0x800409c0, 0x04020004, 0x48003001, 0x48003000,
+       0x0401f00a, 0x58180800, 0x48000800, 0x48003000,
+       0x0401f006, 0x59300809, 0x800409c0, 0x02000800,
+       0x001005d8, 0x4978080c, 0x5c03e000, 0x04000890,
+       0x5c026000, 0x5c025800, 0x1c01f000, 0x4d300000,
+       0x497b2807, 0x0401f894, 0x4df00000, 0x598c0000,
+       0x82000500, 0x00000007, 0x4803c857, 0x0c01f001,
+       0x00106bef, 0x00106bd2, 0x00106bdb, 0x00106bdf,
+       0x00106bea, 0x00106bef, 0x00106bd0, 0x00106bd0,
+       0x0201f800, 0x001005d8, 0x598c000d, 0x80026540,
+       0x04000004, 0x0401f81e, 0x02020800, 0x001005d8,
+       0x0201f800, 0x001070b9, 0x0401f015, 0x0401f827,
+       0x0201f800, 0x001070b9, 0x0401f011, 0x598c000d,
+       0x80026540, 0x0400000e, 0x0401f838, 0x04000004,
+       0x0401f80f, 0x04000002, 0x0401f81c, 0x0201f800,
+       0x001070b9, 0x0401f006, 0x0401f830, 0x02020800,
+       0x001005d8, 0x0201f800, 0x001070b9, 0x5c03e000,
+       0x0400085b, 0x5c026000, 0x1c01f000, 0x598c0009,
+       0x81300580, 0x0402000c, 0x0401f84e, 0x0401f83b,
+       0x59300000, 0x800001c0, 0x04000004, 0x48031809,
+       0x497a6000, 0x0401f003, 0x497b1809, 0x497b1808,
+       0x80000580, 0x1c01f000, 0x4d2c0000, 0x59300406,
+       0x82000580, 0x00000003, 0x04020012, 0x598c000b,
+       0x81300580, 0x0402000f, 0x0401f83a, 0x59325808,
+       0x497a5808, 0x497a5809, 0x0401f824, 0x59300000,
+       0x800001c0, 0x04000004, 0x4803180b, 0x497a6000,
+       0x0401f003, 0x497b180a, 0x497b180b, 0x80000580,
+       0x5c025800, 0x1c01f000, 0x598c0005, 0x81300580,
+       0x0402000c, 0x0401f827, 0x0401f814, 0x59300000,
+       0x800001c0, 0x04000004, 0x48031805, 0x497a6000,
+       0x0401f003, 0x497b1805, 0x497b1804, 0x80000580,
+       0x1c01f000, 0x4a032001, 0x00000000, 0x497b2004,
+       0x497b2005, 0x59900006, 0x82000500, 0x0000ffff,
+       0x48032006, 0x1c01f000, 0x4c040000, 0x59300004,
+       0x82000500, 0x7ffeffff, 0x48026004, 0x59bc00e4,
+       0x8c000514, 0x04000009, 0x42000800, 0x0000bf00,
+       0x58040012, 0x81300580, 0x04020004, 0x49780812,
+       0x4a0378e4, 0x00000800, 0x5c000800, 0x1c01f000,
+       0x4803c856, 0x598c000c, 0x80000540, 0x04000003,
+       0x80000040, 0x4803180c, 0x1c01f000, 0x59bc00ea,
+       0x82000500, 0x00000007, 0x82000580, 0x00000003,
+       0x04020004, 0x4803c856, 0x4a0378e8, 0x00000001,
+       0x1c01f000, 0x59bc00ea, 0x82000500, 0x00000007,
+       0x82000580, 0x00000001, 0x04020011, 0x4803c856,
+       0x42000800, 0x00000000, 0x0401f80e, 0x42000800,
+       0x00001000, 0x59bc00ea, 0x82000500, 0x00000007,
+       0x82000580, 0x00000003, 0x04000005, 0x80040840,
+       0x040207f9, 0x0201f800, 0x001005d8, 0x1c01f000,
+       0x59bc00ea, 0x82000500, 0x00000007, 0x82000580,
+       0x00000001, 0x02020800, 0x001005d8, 0x59bc00ea,
+       0x8c000516, 0x040207fe, 0x480778e1, 0x1c01f000,
+       0x59bc00ea, 0x8c000516, 0x040207fe, 0x480778e1,
+       0x59bc00ea, 0x8c000516, 0x040207fe, 0x480b78e1,
+       0x1c01f000, 0x82000d00, 0x80000018, 0x02020800,
+       0x001005d0, 0x0201f800, 0x001005d8, 0x00106c97,
+       0x00106d3b, 0x00106d55, 0x00106c97, 0x00106c99,
+       0x00106cba, 0x00106cd9, 0x00106d0d, 0x00106c97,
+       0x00106d39, 0x00106c97, 0x00106c97, 0x00106c97,
+       0x00106c97, 0x00106c97, 0x00106c97, 0x0201f800,
+       0x001005d8, 0x4d300000, 0x4d900000, 0x4dd00000,
+       0x4da40000, 0x4d140000, 0x0201f800, 0x001070d8,
+       0x59bc00ea, 0x8c000510, 0x040007fe, 0x59be60e0,
+       0x59300004, 0x8c000520, 0x04000011, 0x82000500,
+       0xfffefeff, 0x48026004, 0x4a026203, 0x00000003,
+       0x0401ffa9, 0x0201f800, 0x00100fd0, 0x5c022800,
+       0x5c034800, 0x5c03a000, 0x5c032000, 0x5c026000,
+       0x4a0378e4, 0x00000008, 0x0401f795, 0x84000510,
+       0x48026004, 0x0401f7f6, 0x4d300000, 0x4d900000,
+       0x4dd00000, 0x4da40000, 0x4d140000, 0x0201f800,
+       0x001070d8, 0x59bc00ea, 0x8c000510, 0x040007fe,
+       0x59be60e0, 0x59300004, 0x8c000520, 0x0400000f,
+       0x82000500, 0xfffefeff, 0x48026004, 0x0401ff8a,
+       0x0201f800, 0x0010100e, 0x5c022800, 0x5c034800,
+       0x5c03a000, 0x5c032000, 0x5c026000, 0x4a0378e4,
+       0x00000008, 0x0401f776, 0x84000510, 0x48026004,
+       0x0401f7f6, 0x4d300000, 0x4d2c0000, 0x4d340000,
+       0x4da40000, 0x4cd00000, 0x59bc00ea, 0x8c000510,
+       0x040007fe, 0x59be60e0, 0x813261c0, 0x02000800,
+       0x001005d8, 0x59300004, 0x8c000520, 0x0400001d,
+       0x82000500, 0xfffefeff, 0x48026004, 0x59326809,
+       0x42034800, 0x0010b544, 0x04011000, 0x4a03c840,
+       0x0010b54b, 0x4a03c842, 0x00000012, 0x04011000,
+       0x4a03c840, 0x0010b55d, 0x4a03c842, 0x000000ff,
+       0x04011000, 0x4a03c840, 0x0010b65c, 0x4a03c842,
+       0x000000ff, 0x0401fbf2, 0x5c01a000, 0x5c034800,
+       0x5c026800, 0x5c025800, 0x5c026000, 0x1c01f000,
+       0x84000510, 0x48026004, 0x5c01a000, 0x5c034800,
+       0x5c026800, 0x5c025800, 0x5c026000, 0x1c01f000,
+       0x1c01f000, 0x4d300000, 0x4d2c0000, 0x4d340000,
+       0x4cd00000, 0x4d900000, 0x4dd00000, 0x4da40000,
+       0x4d140000, 0x0401fbc3, 0x59bc00ea, 0x8c000510,
+       0x040007fe, 0x59be60e0, 0x813261c0, 0x02000800,
+       0x001005d8, 0x59300004, 0x8c000520, 0x0400000f,
+       0x82000500, 0xfffefeff, 0x48026004, 0x0201f800,
+       0x0010783a, 0x5c022800, 0x5c034800, 0x5c03a000,
+       0x5c032000, 0x5c01a000, 0x5c026800, 0x5c025800,
+       0x5c026000, 0x1c01f000, 0x84000510, 0x48026004,
+       0x5c022800, 0x5c034800, 0x5c03a000, 0x5c032000,
+       0x5c01a000, 0x5c026800, 0x5c025800, 0x5c026000,
+       0x1c01f000, 0x0201f800, 0x001005d8, 0x4d300000,
+       0x4d380000, 0x42000000, 0x0010b8c4, 0x0201f800,
+       0x0010aa47, 0x0401ff14, 0x598e600d, 0x59c40004,
+       0x8c000506, 0x04000004, 0x0401f8db, 0x4a038804,
+       0x00000008, 0x813261c0, 0x04000006, 0x0401fb87,
+       0x42027000, 0x00000014, 0x0201f800, 0x000207a1,
+       0x4a0378e4, 0x00000002, 0x5c027000, 0x5c026000,
+       0x0401f6f7, 0x4d180000, 0x4d300000, 0x4d380000,
+       0x4d900000, 0x4dd00000, 0x4da40000, 0x4d140000,
+       0x0401fef9, 0x417a3000, 0x59c40804, 0x83180400,
+       0x0010709f, 0x50000000, 0x80040500, 0x0400001b,
+       0x42000000, 0x0010b8c5, 0x0201f800, 0x0010aa47,
+       0x0401fb70, 0x59926004, 0x0401f859, 0x83180400,
+       0x0010709f, 0x50000000, 0x48038804, 0x813261c0,
+       0x0400000a, 0x59300004, 0x8c00050c, 0x04020003,
+       0x4a026203, 0x00000003, 0x42027000, 0x0000004a,
+       0x0201f800, 0x000207a1, 0x59c40004, 0x82000500,
+       0x00f80000, 0x04000005, 0x811a3000, 0x83180480,
+       0x00000005, 0x040017dd, 0x4a0378e4, 0x00000008,
+       0x5c022800, 0x5c034800, 0x5c03a000, 0x5c032000,
+       0x5c027000, 0x5c026000, 0x5c023000, 0x0401f6c0,
+       0x4d2c0000, 0x4d340000, 0x59326809, 0x598c0800,
+       0x82040580, 0x00000004, 0x04020004, 0x838c1400,
+       0x00000005, 0x0401f00c, 0x82040580, 0x00000001,
+       0x04020004, 0x838c1400, 0x00000009, 0x0401f006,
+       0x82040580, 0x00000002, 0x04020022, 0x838c1400,
+       0x0000000b, 0x41306800, 0x58340000, 0x80007d40,
+       0x0400001c, 0x583c0009, 0x81340580, 0x04020006,
+       0x403c6800, 0x583c0000, 0x80007d40, 0x040207fa,
+       0x0401f014, 0x4933c857, 0x483fc857, 0x583c0000,
+       0x48006800, 0x49307800, 0x443c1000, 0x80000580,
+       0x4803180d, 0x4803180f, 0x598c0000, 0x82000580,
+       0x00000003, 0x04000003, 0x4a031800, 0x00000000,
+       0x80000580, 0x5c026800, 0x5c025800, 0x1c01f000,
+       0x82000540, 0x00000001, 0x0401f7fb, 0x491bc857,
+       0x59c80840, 0x82040540, 0x00000010, 0x48039040,
+       0x59c41008, 0x82080500, 0xffffff7f, 0x48038808,
+       0x4c040000, 0x4c080000, 0x0401fabb, 0x04020007,
+       0x0401fabf, 0x04000022, 0x48038804, 0x0201f800,
+       0x0010107a, 0x0401f042, 0x4a038803, 0x00000008,
+       0x59c40003, 0x82000500, 0x00000003, 0x040007fd,
+       0x8c000502, 0x04020007, 0x0401fab1, 0x04000014,
+       0x48038804, 0x0201f800, 0x0010107a, 0x0401f034,
+       0x59c80040, 0x8400056a, 0x48039040, 0x59c80040,
+       0x8c00052a, 0x040207fe, 0x59c40005, 0x82000500,
+       0xc0000000, 0x04000006, 0x59c400a3, 0x84000540,
+       0x480388a3, 0x4a038805, 0xc0000000, 0x0201f800,
+       0x0010101d, 0x4a03a005, 0x30000000, 0x59d00006,
+       0x4a03a005, 0x30000000, 0x59900006, 0x82000500,
+       0xffff0000, 0x48032006, 0x59d00005, 0x8c000504,
+       0x040207fe, 0x42000800, 0x00007600, 0x83180540,
+       0x60000000, 0x480008a1, 0x811800dc, 0x59c80840,
+       0x80040540, 0x48039040, 0x82000540, 0x00003000,
+       0x48039040, 0x59c80040, 0x82000500, 0x00003000,
+       0x040207fd, 0x0201f800, 0x00101068, 0x83180400,
+       0x0010709f, 0x50000000, 0x48038804, 0x80000580,
+       0x4df00000, 0x0201f800, 0x00106062, 0x5c03e000,
+       0x5c001000, 0x5c000800, 0x480b8808, 0x48079040,
+       0x1c01f000, 0x4803c856, 0x59c80840, 0x82040540,
+       0x00000010, 0x48039040, 0x59c41008, 0x82080500,
+       0xffffff7f, 0x48038808, 0x4c040000, 0x4c080000,
+       0x59c40004, 0x82000500, 0x00000003, 0x04020010,
+       0x59c40004, 0x82000500, 0x0000000c, 0x04000005,
+       0x4a038804, 0x0000000c, 0x8c000504, 0x0401f025,
+       0x59c80040, 0x8400056e, 0x48039040, 0x59c80040,
+       0x8c00052e, 0x040207fe, 0x0401f01e, 0x4a038803,
+       0x00000008, 0x59c40003, 0x82000500, 0x00000003,
+       0x040007fd, 0x8c000502, 0x04020006, 0x59c40004,
+       0x4a038804, 0x0000000c, 0x8c000504, 0x0401f011,
+       0x59c80040, 0x8400056a, 0x48039040, 0x59c80040,
+       0x8c00052a, 0x040207fe, 0x59c40005, 0x82000500,
+       0xc0000000, 0x04000007, 0x59c400a3, 0x84000540,
+       0x480388a3, 0x4a038805, 0xc0000000, 0x80000580,
+       0x497b2807, 0x5c001000, 0x5c000800, 0x480b8808,
+       0x48079040, 0x1c01f000, 0x4933c857, 0x4d900000,
+       0x4dd00000, 0x4da40000, 0x4d140000, 0x0401fdee,
+       0x4df00000, 0x0401fa6f, 0x59900004, 0x800001c0,
+       0x04000011, 0x81300580, 0x0402000f, 0x59300004,
+       0x84000520, 0x48026004, 0x0401ff51, 0x04020009,
+       0x5c03e000, 0x04000dd6, 0x80000580, 0x5c022800,
+       0x5c034800, 0x5c03a000, 0x5c032000, 0x1c01f000,
+       0x0401fd0e, 0x42027000, 0x00000049, 0x59300004,
+       0x84000520, 0x48026004, 0x8c00050c, 0x02020800,
+       0x000207a1, 0x5c03e000, 0x04000dc5, 0x82000540,
+       0x00000001, 0x5c022800, 0x5c034800, 0x5c03a000,
+       0x5c032000, 0x1c01f000, 0x4933c857, 0x0401fdc6,
+       0x4df00000, 0x598c000d, 0x80026540, 0x04000012,
+       0x59300004, 0x84000520, 0x48026004, 0x0401ff8a,
+       0x04000017, 0x0401fd26, 0x42027000, 0x00000013,
+       0x59300004, 0x8c00050c, 0x02020800, 0x000207a1,
+       0x5c03e000, 0x04000daa, 0x82000540, 0x00000001,
+       0x1c01f000, 0x836c1580, 0x00000001, 0x040007f9,
+       0x836c1580, 0x00000004, 0x040007f6, 0x42001000,
+       0x00104148, 0x0201f800, 0x00105f90, 0x5c03e000,
+       0x04000d9b, 0x80000580, 0x1c01f000, 0x4d300000,
+       0x4d180000, 0x4d3c0000, 0x0401fd9f, 0x4df00000,
+       0x4a0378e4, 0x0000000f, 0x0401f9ff, 0x417a3000,
+       0x59926004, 0x813261c0, 0x04000010, 0x417a7800,
+       0x0201f800, 0x001048d9, 0x0400000a, 0x59300c06,
+       0x82040580, 0x00000003, 0x04000004, 0x82040580,
+       0x00000006, 0x04020003, 0x42027800, 0x00000002,
+       0x0201f800, 0x00108be3, 0x811a3000, 0x83180480,
+       0x00000005, 0x040017eb, 0x42000800, 0x00000040,
+       0x0201f800, 0x00101345, 0x4a0378e4, 0x0000000a,
+       0x5c03e000, 0x04000d72, 0x5c027800, 0x5c023000,
+       0x5c026000, 0x1c01f000, 0x4803c856, 0x4d300000,
+       0x0401fd75, 0x4df00000, 0x59c80840, 0x82040540,
+       0x00000010, 0x48039040, 0x59c41008, 0x82080500,
+       0xffffff7f, 0x48038808, 0x4c040000, 0x4c080000,
+       0x42001000, 0x00000003, 0x0401f9c2, 0x598e600d,
+       0x813261c0, 0x04020f9d, 0x040009c7, 0x497b2807,
+       0x0401f80a, 0x5c001000, 0x5c000800, 0x480b8808,
+       0x84040d74, 0x48079040, 0x5c03e000, 0x04000d50,
+       0x5c026000, 0x1c01f000, 0x4d380000, 0x4d180000,
+       0x4d300000, 0x4d900000, 0x4dd00000, 0x4da40000,
+       0x4d140000, 0x59c41004, 0x480bc857, 0x82080500,
+       0x00003ff0, 0x04000025, 0x417a3000, 0x4c080000,
+       0x0201f800, 0x00106062, 0x5c001000, 0x82080500,
+       0x00000210, 0x04020004, 0x811a3000, 0x80081102,
+       0x0401f7f7, 0x0401f9c3, 0x59926004, 0x4933c857,
+       0x813261c0, 0x04020005, 0x59c400a3, 0x8c00051a,
+       0x02000800, 0x001005d8, 0x0401fea5, 0x04000009,
+       0x0401fc6a, 0x42027000, 0x00000049, 0x59300004,
+       0x8c00050c, 0x02020800, 0x000207a1, 0x0401f007,
+       0x42027000, 0x0000004a, 0x4a026203, 0x00000003,
+       0x0201f800, 0x000207a1, 0x5c022800, 0x5c034800,
+       0x5c03a000, 0x5c032000, 0x5c026000, 0x5c023000,
+       0x5c027000, 0x1c01f000, 0x4d300000, 0x4d180000,
+       0x4d900000, 0x0401fd1c, 0x42001000, 0x00000000,
+       0x598c0000, 0x82000580, 0x00000005, 0x04000971,
+       0x417a3000, 0x811b20c8, 0x83932400, 0x0000bf32,
+       0x59900001, 0x82000580, 0x00000001, 0x0402000d,
+       0x42000800, 0x000007d0, 0x59926004, 0x59300011,
+       0x82000500, 0xfff00000, 0x80000540, 0x04000003,
+       0x42000800, 0x00001b58, 0x0201f800, 0x00106054,
+       0x811a3000, 0x83180480, 0x00000005, 0x040017ea,
+       0x59c81040, 0x84081534, 0x480b9040, 0x0401fcf0,
+       0x5c032000, 0x5c023000, 0x5c026000, 0x1c01f000,
+       0x4933c857, 0x4d900000, 0x4dd00000, 0x4da40000,
+       0x4d140000, 0x4d380000, 0x0401fcef, 0x4df00000,
+       0x59300004, 0x8c00053e, 0x04020007, 0x8c000520,
+       0x04000025, 0x0201f800, 0x00106b6c, 0x04000022,
+       0x0401f02a, 0x598c000d, 0x81300580, 0x04000011,
+       0x0201f800, 0x00108cd6, 0x04020024, 0x0401f918,
+       0x04000022, 0x48038804, 0x0401f95e, 0x0201f800,
+       0x0010107a, 0x0401fc0d, 0x42027000, 0x00000049,
+       0x59300004, 0x8c00050c, 0x0402000d, 0x0401f00e,
+       0x59c40004, 0x8c000504, 0x04000014, 0x4a038804,
+       0x00000004, 0x0401fc36, 0x42027000, 0x00000013,
+       0x59300004, 0x8c00050c, 0x04000003, 0x0201f800,
+       0x000207a1, 0x5c03e000, 0x04000cb9, 0x5c027000,
+       0x5c022800, 0x5c034800, 0x5c03a000, 0x5c032000,
+       0x80000580, 0x1c01f000, 0x5c03e000, 0x04000cb0,
+       0x5c027000, 0x5c022800, 0x5c034800, 0x5c03a000,
+       0x5c032000, 0x82000540, 0x00000001, 0x1c01f000,
+       0x497b2807, 0x0401fcb0, 0x59c400af, 0x800001c0,
+       0x04020004, 0x0401fca2, 0x0201f000, 0x001014fb,
+       0x598c000f, 0x82001480, 0x00000002, 0x04021007,
+       0x80000000, 0x4803180f, 0x80000580, 0x0201f800,
+       0x0010604d, 0x0400000e, 0x0401fed8, 0x0402000c,
+       0x0401fdd4, 0x0400000a, 0x0201f800, 0x0010a9c7,
+       0x0401f916, 0x4d380000, 0x42027000, 0x00000014,
+       0x0201f800, 0x000207a1, 0x5c027000, 0x0401fc88,
+       0x0201f000, 0x001014fb, 0x4d900000, 0x4dd00000,
+       0x4da40000, 0x4d140000, 0x4d300000, 0x0201f800,
+       0x00106062, 0x0401fc88, 0x59c400af, 0x800001c0,
+       0x04000027, 0x0401f907, 0x59926004, 0x4933c857,
+       0x59300004, 0x8c000516, 0x0400000b, 0x0401fe8b,
+       0x0402001f, 0x0201f800, 0x00106b8a, 0x0401fc70,
+       0x42000800, 0x80000804, 0x0201f800, 0x00106721,
+       0x0401f017, 0x42001800, 0x00007530, 0x0401f8c1,
+       0x04020004, 0x0201f800, 0x00106052, 0x0401f010,
+       0x0401fe7a, 0x0402000e, 0x0201f800, 0x0010a9c7,
+       0x59300004, 0x8c00050c, 0x04020003, 0x4a026203,
+       0x00000003, 0x4d380000, 0x42027000, 0x0000004a,
+       0x0201f800, 0x000207a1, 0x5c027000, 0x0401fc54,
+       0x5c026000, 0x5c022800, 0x5c034800, 0x5c03a000,
+       0x5c032000, 0x0201f000, 0x001014fb, 0x4d900000,
+       0x4dd00000, 0x4da40000, 0x4d140000, 0x4d300000,
+       0x4d2c0000, 0x0401fc50, 0x0401f8d2, 0x59926004,
+       0x4933c857, 0x0401f880, 0x04000016, 0x0201f800,
+       0x00106062, 0x813261c0, 0x04000034, 0x59325808,
+       0x812e59c0, 0x02000800, 0x001005d8, 0x0201f800,
+       0x0010513b, 0x0402001d, 0x592c0208, 0x84000550,
+       0x48025a08, 0x0201f800, 0x00105258, 0x04020027,
+       0x592c0208, 0x84000510, 0x48025a08, 0x0401f023,
+       0x0201f800, 0x00106052, 0x0401f020, 0x0201f800,
+       0x0010a9c7, 0x0401fd9e, 0x592c0208, 0x84000550,
+       0x48025a08, 0x4d380000, 0x42027000, 0x0000004a,
+       0x4a026203, 0x00000003, 0x0201f800, 0x000207a1,
+       0x5c027000, 0x0401f011, 0x59900006, 0x82000500,
+       0xffff0000, 0x040207ee, 0x59c408af, 0x82040480,
+       0x000003e8, 0x040217ea, 0x59900006, 0x82000400,
+       0x00010000, 0x48032006, 0x0201f800, 0x00106052,
+       0x0201f800, 0x0010411d, 0x5c025800, 0x5c026000,
+       0x5c022800, 0x5c034800, 0x5c03a000, 0x5c032000,
+       0x0401f403, 0x4d300000, 0x4d2c0000, 0x0401fc0a,
+       0x598e600d, 0x4933c857, 0x59c41004, 0x8c081500,
+       0x04000007, 0x0201f800, 0x0010513b, 0x04020007,
+       0x0201f800, 0x00105258, 0x0402002f, 0x0201f800,
+       0x0010604d, 0x0401f02c, 0x598c000f, 0x80000540,
+       0x04020011, 0x59c408af, 0x82040480, 0x000003e8,
+       0x0402100d, 0x598c080f, 0x80040800, 0x4807180f,
+       0x0201f800, 0x0010604d, 0x42000000, 0x0010b852,
+       0x0201f800, 0x0010aa47, 0x0201f800, 0x0010411d,
+       0x0401f019, 0x0401fdb4, 0x813261c0, 0x04020003,
+       0x0401f849, 0x0401f014, 0x0201f800, 0x0010a9c7,
+       0x59300406, 0x82000580, 0x00000003, 0x04020007,
+       0x59325808, 0x812e59c0, 0x04000004, 0x592c0208,
+       0x84000550, 0x48025a08, 0x0401f854, 0x4d380000,
+       0x42027000, 0x00000014, 0x0201f800, 0x000207a1,
+       0x5c027000, 0x5c025800, 0x5c026000, 0x0201f000,
+       0x00106c4b, 0x59c40804, 0x83180400, 0x00107095,
+       0x50000000, 0x80040500, 0x1c01f000, 0x59c40804,
+       0x83180400, 0x0010709a, 0x50000000, 0x80040500,
+       0x1c01f000, 0x00000210, 0x00000420, 0x00000840,
+       0x00001080, 0x00002100, 0x00004000, 0x00008000,
+       0x00010000, 0x00020000, 0x00040000, 0x00080000,
+       0x00100000, 0x00200000, 0x00400000, 0x00800000,
+       0x59900806, 0x80040120, 0x800c0480, 0x04021004,
+       0x82000540, 0x00000001, 0x0401f005, 0x82040c00,
+       0x00010000, 0x48072006, 0x80000580, 0x1c01f000,
+       0x480bc857, 0x0201f800, 0x00106c55, 0x4df00000,
+       0x480b1800, 0x5c03e000, 0x02000800, 0x00106c4b,
+       0x1c01f000, 0x4803c856, 0x0201f800, 0x00106c55,
+       0x4df00000, 0x497b180d, 0x497b1803, 0x497b180e,
+       0x497b180f, 0x497b1810, 0x598c0000, 0x82000580,
+       0x00000003, 0x04000009, 0x836c0580, 0x00000002,
+       0x04020004, 0x4a031800, 0x00000005, 0x0401f003,
+       0x4a031800, 0x00000000, 0x5c03e000, 0x02000800,
+       0x00106c4b, 0x1c01f000, 0x59300004, 0x8c00050c,
+       0x04020003, 0x4a026203, 0x00000001, 0x1c01f000,
+       0x83180480, 0x00000005, 0x02021800, 0x001005d8,
+       0x491bc857, 0x811b20c8, 0x83932400, 0x0000bf32,
+       0x811ba0ca, 0x83d3a400, 0x00007600, 0x83180400,
+       0x001070ea, 0x50034800, 0x811a28c2, 0x83162c00,
+       0x00006100, 0x1c01f000, 0x0010b75b, 0x0010b772,
+       0x0010b789, 0x0010b7a0, 0x0010b7b7, 0x4933c857,
+       0x59300406, 0x82000c80, 0x00000012, 0x04021016,
+       0x4803c857, 0x04011000, 0x0c01f001, 0x00107109,
+       0x00107198, 0x001074d1, 0x00107556, 0x00107198,
+       0x001074d1, 0x00107556, 0x00107109, 0x00107198,
+       0x00107109, 0x00107109, 0x00107109, 0x00107109,
+       0x00107109, 0x00107109, 0x00107109, 0x0010710f,
+       0x0010710f, 0x0201f800, 0x00106c55, 0x0201f800,
+       0x00106bbf, 0x0201f000, 0x00106c4b, 0x42001000,
+       0x0010b7f6, 0x50081000, 0x4930100c, 0x58080002,
+       0x82000580, 0x00000100, 0x04020032, 0x59325808,
+       0x812e59c0, 0x02000800, 0x001005d8, 0x59326809,
+       0x813669c0, 0x04000019, 0x592c040b, 0x82000500,
+       0x0000e000, 0x04000003, 0x0401fba8, 0x0401f002,
+       0x0401fb98, 0x42001000, 0x0010b7f6, 0x50081000,
+       0x4930100b, 0x492c100a, 0x82d00400, 0x00000006,
+       0x48001003, 0x592c000d, 0x80000104, 0x48001004,
+       0x592c000e, 0x48001007, 0x592c000f, 0x48001008,
+       0x0201f000, 0x00100858, 0x42026800, 0x0010be0d,
+       0x592c080a, 0x48066802, 0x82040500, 0x00ffff00,
+       0x04000007, 0x497a6a12, 0x59a81010, 0x82081500,
+       0x00ffff00, 0x80080580, 0x040207dc, 0x82040d00,
+       0x000000ff, 0x800408d0, 0x48066a12, 0x0401f7d7,
+       0x1c01f000, 0x4d2c0000, 0x4d300000, 0x4c580000,
+       0x4c540000, 0x4c500000, 0x5832580a, 0x812e59c0,
+       0x02000800, 0x001005d8, 0x58300002, 0x4a006002,
+       0x00000100, 0x82000580, 0x00000100, 0x0402001c,
+       0x5830000b, 0x5832600c, 0x81300580, 0x04020010,
+       0x0401f828, 0x04020010, 0x592c080d, 0x80040904,
+       0x4004b000, 0x4200a000, 0x0010b54b, 0x4050a800,
+       0x0201f800, 0x0010ab28, 0x42001000, 0x0000dc00,
+       0x0201f800, 0x001078bc, 0x0401f003, 0x0401f819,
+       0x04000fa3, 0x5c00a000, 0x5c00a800, 0x5c00b000,
+       0x5c026000, 0x5c025800, 0x1c01f000, 0x5830000b,
+       0x5832600c, 0x81300580, 0x040207f5, 0x0401f80d,
+       0x040207f5, 0x0201f800, 0x001068d3, 0x02020800,
+       0x001005d8, 0x4a025a06, 0x00000002, 0x0201f800,
+       0x000202da, 0x0201f800, 0x00107911, 0x0401f7ea,
+       0x0201f800, 0x00106c55, 0x4df00000, 0x598c000d,
+       0x81300580, 0x04020009, 0x598c0005, 0x81300580,
+       0x04020006, 0x5c03e000, 0x02000800, 0x00106c4b,
+       0x80000580, 0x1c01f000, 0x5c03e000, 0x02000800,
+       0x00106c4b, 0x82000540, 0x00000001, 0x1c01f000,
+       0x59300403, 0x82000c80, 0x00000056, 0x02021800,
+       0x001005d8, 0x4803c857, 0x0c01f001, 0x00107302,
+       0x0010731d, 0x0010732e, 0x00107431, 0x001073f1,
+       0x001073f5, 0x00107406, 0x0010741a, 0x0010740f,
+       0x0010741a, 0x00107455, 0x0010741a, 0x00107497,
+       0x0010741a, 0x001074a5, 0x0010741a, 0x0010740f,
+       0x0010741a, 0x001074a9, 0x001071f5, 0x001071f5,
+       0x001071f5, 0x001071f5, 0x001071f5, 0x001071f5,
+       0x001071f5, 0x001071f5, 0x001071f5, 0x001071f5,
+       0x001071f5, 0x00107574, 0x00107593, 0x0010759d,
+       0x001071f5, 0x001075b3, 0x00107406, 0x001071f5,
+       0x00107406, 0x0010741a, 0x001071f5, 0x0010732e,
+       0x00107431, 0x001071f5, 0x00107603, 0x0010741a,
+       0x001071f5, 0x00107613, 0x0010741a, 0x001071f5,
+       0x0010740f, 0x001072f3, 0x001071f7, 0x001071f5,
+       0x0010762a, 0x0010765d, 0x001076d7, 0x001071f5,
+       0x001076e7, 0x00107404, 0x001076da, 0x001071f5,
+       0x001075bf, 0x00107700, 0x001071f5, 0x00107735,
+       0x00107788, 0x001071f5, 0x0010720c, 0x00107265,
+       0x00107272, 0x001071f5, 0x00107406, 0x001071f5,
+       0x001072b9, 0x001072c4, 0x001071f5, 0x001071f5,
+       0x00107220, 0x00107245, 0x001077c7, 0x00107808,
+       0x0010782e, 0x001071f5, 0x001071f5, 0x001071f5,
+       0x001077fc, 0x0201f800, 0x001005d8, 0x0401fac5,
+       0x59325808, 0x592c0009, 0x4801a006, 0x592c000a,
+       0x4801a007, 0x592c000b, 0x4801a008, 0x592c000c,
+       0x4801a009, 0x592c000d, 0x4801a00a, 0x4979a00b,
+       0x592c0809, 0x82040d00, 0x00000fff, 0x80040904,
+       0x42001000, 0x0000dc00, 0x0201f000, 0x001078bc,
+       0x4a026202, 0x0000ffff, 0x0401faae, 0x4d2c0000,
+       0x4a01a006, 0x05000000, 0x59325808, 0x592c0009,
+       0x4801a007, 0x592c000a, 0x4801a008, 0x592c000b,
+       0x4801a009, 0x42000800, 0x00000004, 0x42001000,
+       0x0000dc00, 0x5c025800, 0x0201f000, 0x001078bc,
+       0x4c580000, 0x4c500000, 0x4c540000, 0x4d2c0000,
+       0x0401fa98, 0x59325808, 0x5930040b, 0x800000c2,
+       0x4200a800, 0x0010b54b, 0x592cb205, 0x832ca400,
+       0x00000006, 0x0201f800, 0x0010ab17, 0x40580000,
+       0x8054ac00, 0x592c0001, 0x80000540, 0x04000003,
+       0x40025800, 0x0401f7f5, 0x4200a000, 0x0010b54b,
+       0x4050a800, 0x5930b40b, 0x0201f800, 0x0010ab28,
+       0x59300c0b, 0x42001000, 0x0000dc00, 0x5c025800,
+       0x5c00a800, 0x5c00b000, 0x5c00a000, 0x0201f000,
+       0x001078bc, 0x4c580000, 0x4c500000, 0x4c540000,
+       0x4d2c0000, 0x42034800, 0x0010b544, 0x0401fa7f,
+       0x59325808, 0x4a025805, 0x02000000, 0x592c0802,
+       0x82d0ac00, 0x00000006, 0x592cb011, 0x832ca400,
+       0x00000005, 0x0201f800, 0x0010ab17, 0x40580000,
+       0x8054ac00, 0x592e5801, 0x41780000, 0x812e5d40,
+       0x040207f6, 0x42001000, 0x0000dc00, 0x5c025800,
+       0x5c00a800, 0x5c00b000, 0x5c00a000, 0x0201f000,
+       0x001078bc, 0x0401fa57, 0x4a01a006, 0x78000000,
+       0x5930001c, 0x840001c0, 0x4801a407, 0x4979a207,
+       0x42000800, 0x00000002, 0x42001000, 0x0000dc00,
+       0x0201f000, 0x001078bc, 0x4c580000, 0x4c540000,
+       0x4c500000, 0x0401fa55, 0x4a01a006, 0x02000000,
+       0x59a80002, 0x4801a008, 0x59a80003, 0x4801a009,
+       0x59a80000, 0x4801a00a, 0x59a80001, 0x4801a00b,
+       0x5930001c, 0x82000d80, 0x0000e000, 0x04000016,
+       0x82000d80, 0x0000df00, 0x04000006, 0x4a01a407,
+       0x00000010, 0x42000800, 0x00000006, 0x0401f027,
+       0x4a03c840, 0x0010b4eb, 0x4a03c842, 0x0000000d,
+       0x42001800, 0x0010b4eb, 0x0201f800, 0x001007af,
+       0x42000000, 0x0000df00, 0x4200a000, 0x0010b4eb,
+       0x0401f00d, 0x4a03c840, 0x0010b4f8, 0x4a03c842,
+       0x0000000d, 0x42001800, 0x0010b4f8, 0x0201f800,
+       0x001007af, 0x42000000, 0x0000e000, 0x4200a000,
+       0x0010b4f8, 0x82000540, 0x00000010, 0x4801a407,
+       0x4a01a207, 0x00000034, 0x4200b000, 0x0000000d,
+       0x82d0ac00, 0x0000000c, 0x0201f800, 0x0010ab17,
+       0x42000800, 0x00000013, 0x42001000, 0x0000dc00,
+       0x5c00a000, 0x5c00a800, 0x5c00b000, 0x0201f000,
+       0x001078bc, 0x0401fa03, 0x4a01a006, 0x63000028,
+       0x5930001c, 0x4801a007, 0x42000800, 0x00000002,
+       0x42001000, 0x0000dc00, 0x0201f000, 0x001078bc,
+       0x0401fa06, 0x41780000, 0x41780800, 0x42002000,
+       0x00080000, 0x0c01f81b, 0x80000000, 0x80040800,
+       0x42001000, 0x0000000c, 0x59841802, 0x8c0c1d00,
+       0x04020008, 0x42002000, 0x00050000, 0x0c01f811,
+       0x80000000, 0x80040800, 0x82081400, 0x00000004,
+       0x82080540, 0x02000000, 0x4801a006, 0x800408e0,
+       0x5930001c, 0x80040540, 0x4801a007, 0x80080904,
+       0x42001000, 0x0000dc00, 0x0201f000, 0x001078bc,
+       0x001072e9, 0x001072eb, 0x001072ed, 0x001072ef,
+       0x001072f1, 0x4811a008, 0x1c01f000, 0x4811a009,
+       0x1c01f000, 0x4811a00a, 0x1c01f000, 0x4811a00b,
+       0x1c01f000, 0x4811a00c, 0x1c01f000, 0x4a026009,
+       0x0010be0d, 0x59a80010, 0x82000500, 0x000000ff,
+       0x800000d0, 0x42026800, 0x0010be0d, 0x48026a12,
+       0x0401fa3b, 0x41780800, 0x42001000, 0x00005c00,
+       0x0201f000, 0x001078bc, 0x0401f9ba, 0x4a01a006,
+       0x52000000, 0x4979a007, 0x599c0017, 0x8c000500,
+       0x04000005, 0x599c0402, 0x0201f800, 0x001015da,
+       0x4805a007, 0x59a80002, 0x4801a008, 0x59a80003,
+       0x4801a009, 0x59a80000, 0x4801a00a, 0x59a80001,
+       0x4801a00b, 0x59a80010, 0x4801a00c, 0x42000800,
+       0x00000007, 0x42001000, 0x0000dc00, 0x0201f000,
+       0x001078bc, 0x4a026202, 0x0000ffff, 0x0401f99d,
+       0x4a01a006, 0x05000000, 0x59a80010, 0x4801a007,
+       0x59a80002, 0x59a80803, 0x4801a008, 0x4805a009,
+       0x42000800, 0x00000004, 0x42001000, 0x0000dc00,
+       0x0201f000, 0x001078bc, 0x4a026202, 0x0000ffff,
+       0x0401f98c, 0x4d3c0000, 0x417a7800, 0x0201f800,
+       0x001048f6, 0x5c027800, 0x4a01a006, 0x03000000,
+       0x59340403, 0x82000580, 0x000007fe, 0x0402006e,
+       0x4a01a006, 0x04000000, 0x81a40800, 0x4a000800,
+       0x22fffffe, 0x5934000a, 0x84000500, 0x4802680a,
+       0x59c41002, 0x8408150c, 0x480b8802, 0x59a80026,
+       0x8c000508, 0x04000010, 0x59a8002a, 0x4801a007,
+       0x59a8002b, 0x82000500, 0xffff2000, 0x599c0818,
+       0x8c040d16, 0x04000002, 0x8400056a, 0x4801a008,
+       0x4a01a009, 0x00002710, 0x59a8002d, 0x4801a00a,
+       0x0401f039, 0x59a8002a, 0x4801a007, 0x0201f800,
+       0x0010513b, 0x04020009, 0x497b8880, 0x82000500,
+       0x0000ffff, 0x4c000000, 0x0201f800, 0x00101606,
+       0x5c000000, 0x48038880, 0x59a8002b, 0x0201f800,
+       0x0010513b, 0x04020004, 0x82000500, 0x37ffffff,
+       0x0401f003, 0x82000500, 0x3fffffff, 0x599c0818,
+       0x8c040d16, 0x04000002, 0x8400056a, 0x59a80805,
+       0x8c040d10, 0x04000019, 0x59300c03, 0x82041580,
+       0x00000051, 0x04000015, 0x82041580, 0x00000031,
+       0x04000012, 0x4c580000, 0x4c500000, 0x4c540000,
+       0x4200b000, 0x00000004, 0x4200a000, 0x0010b8fa,
+       0x82d0ac00, 0x0000001f, 0x4c000000, 0x0201f800,
+       0x0010ab17, 0x5c000000, 0x5c00a800, 0x5c00a000,
+       0x5c00b000, 0x8400057a, 0x4801a008, 0x4979a009,
+       0x4979a00a, 0x59a80002, 0x59a80803, 0x4801a00b,
+       0x4805a00c, 0x59a80000, 0x59a80801, 0x4801a00d,
+       0x4805a00e, 0x4979a00f, 0x4979a010, 0x4979a011,
+       0x4979a012, 0x4979a013, 0x4979a014, 0x4979a015,
+       0x4979a016, 0x59a8002e, 0x84000576, 0x4801a017,
+       0x59a8002f, 0x4801a018, 0x4979a019, 0x4979a01a,
+       0x0401f043, 0x59a80026, 0x8c000508, 0x0400000d,
+       0x59a8002a, 0x82000500, 0x0000ffff, 0x59c40880,
+       0x80040d80, 0x04000007, 0x497b8880, 0x4c000000,
+       0x0201f800, 0x00101606, 0x5c000000, 0x48038880,
+       0x59a8002a, 0x4801a007, 0x4c640000, 0x4d2c0000,
+       0x59a8c82b, 0x0201f800, 0x00109037, 0x0400000d,
+       0x0201f800, 0x00109597, 0x0402000a, 0x592c0207,
+       0x8c00050e, 0x04000007, 0x8264cd00, 0x0000ffff,
+       0x592c0009, 0x82000500, 0xffff0000, 0x8064cd40,
+       0x4865a008, 0x5c025800, 0x5c00c800, 0x59a8002c,
+       0x4801a009, 0x59a8002d, 0x4801a00a, 0x59a80002,
+       0x59a80803, 0x4801a00b, 0x4805a00c, 0x59a80000,
+       0x59a80801, 0x4801a00d, 0x4805a00e, 0x4979a00f,
+       0x4979a010, 0x4979a011, 0x4979a012, 0x4979a013,
+       0x4979a014, 0x4979a015, 0x4979a016, 0x59a8002e,
+       0x4801a017, 0x59a8002f, 0x4801a018, 0x59a80030,
+       0x4801a019, 0x59a80031, 0x4801a01a, 0x42000800,
+       0x0000001d, 0x42001000, 0x0000dc00, 0x0201f000,
+       0x001078bc, 0x0401f8cb, 0x4a01a006, 0x50000000,
+       0x0401f7b5, 0x0401f8c7, 0x4a01a406, 0x21000010,
+       0x4a01a206, 0x00000014, 0x4979a007, 0x4979a008,
+       0x4979a009, 0x4979a00a, 0x42000800, 0x00000005,
+       0x42001000, 0x0000dc00, 0x0201f000, 0x001078bc,
+       0x0401f8bf, 0x0401f002, 0x0401f8c4, 0x4a01a006,
+       0x02000000, 0x42000800, 0x00000001, 0x42001000,
+       0x0000dc00, 0x0201f000, 0x001078bc, 0x0401f8bb,
+       0x4a01a006, 0x02000000, 0x59300403, 0x82000580,
+       0x00000031, 0x04020794, 0x81a40800, 0x4a000801,
+       0x00fffffe, 0x0401f72b, 0x0401f8b0, 0x4a01a006,
+       0x01000000, 0x5930041a, 0x80000540, 0x04000003,
+       0x4801a407, 0x0401f003, 0x4a01a407, 0x00000003,
+       0x5930021a, 0x80000540, 0x04000003, 0x4801a207,
+       0x0401f003, 0x4a01a207, 0x00002a00, 0x42000800,
+       0x00000002, 0x42001000, 0x0000dc00, 0x0201f000,
+       0x001078bc, 0x4a026202, 0x0000ffff, 0x0401f889,
+       0x4a01a406, 0x00002010, 0x4a01a206, 0x00000014,
+       0x4a01a407, 0x00000800, 0x4a01a207, 0x00002000,
+       0x80000580, 0x599c0817, 0x8c040d0a, 0x04020003,
+       0x82000540, 0x00000020, 0x8c040d08, 0x04000003,
+       0x82000540, 0x00000010, 0x82000540, 0x00000002,
+       0x5934080a, 0x8c040d14, 0x04000005, 0x82040d00,
+       0x00000380, 0x80040540, 0x0401f006, 0x599c0818,
+       0x8c040d18, 0x04000003, 0x82000540, 0x00000380,
+       0x0401f03c, 0x0401f875, 0x4a01a406, 0x00000210,
+       0x4a01a206, 0x00000014, 0x4a01a407, 0x00000800,
+       0x5934000a, 0x8c000516, 0x04000014, 0x59340c05,
+       0x82040500, 0x00000030, 0x04000013, 0x59340a05,
+       0x82040500, 0x0000c000, 0x04020009, 0x8c040d1a,
+       0x04000004, 0x4a01a207, 0x00002100, 0x0401f00c,
+       0x4a01a207, 0x00000100, 0x0401f009, 0x4a01a207,
+       0x00000400, 0x0401f006, 0x4a01a207, 0x00000700,
+       0x0401f003, 0x4a01a207, 0x00000800, 0x80000580,
+       0x599c0817, 0x8c040d0a, 0x04020003, 0x82000540,
+       0x00000020, 0x8c040d08, 0x04000003, 0x82000540,
+       0x00000010, 0x82000540, 0x00000002, 0x59340a00,
+       0x8c040d0e, 0x0400000b, 0x84000550, 0x599c1017,
+       0x8c08150a, 0x04020004, 0x8c040d0a, 0x04000002,
+       0x8400054e, 0x8c040d1c, 0x04000002, 0x84000552,
+       0x4801a20a, 0x42000800, 0x00000005, 0x42001000,
+       0x0000dc00, 0x0201f000, 0x001078bc, 0x0401f833,
+       0x4a01a006, 0x02100014, 0x4a01a007, 0x01000000,
+       0x4979a008, 0x4979a009, 0x4979a00a, 0x42000800,
+       0x00000005, 0x42001000, 0x0000dc00, 0x0201f000,
+       0x001078bc, 0x0401f825, 0x4a01a006, 0x02000000,
+       0x0401f65d, 0x4933c857, 0x0401f820, 0x4a01a006,
+       0x01000000, 0x4a01a407, 0x0000000b, 0x42000800,
+       0x00000002, 0x42001000, 0x0000dc00, 0x0201f000,
+       0x001078bc, 0x42005000, 0x32000000, 0x42006000,
+       0x08290000, 0x41786800, 0x41787800, 0x0401f3df,
+       0x42005000, 0x22000000, 0x42006000, 0x01290000,
+       0x41786800, 0x41787800, 0x0401f3d8, 0x42005000,
+       0x33000000, 0x42006000, 0x08980000, 0x41786800,
+       0x41787800, 0x0401f3d1, 0x42005000, 0x23000000,
+       0x42006000, 0x01980000, 0x41786800, 0x41787800,
+       0x0401f3ca, 0x59300403, 0x82000c80, 0x00000085,
+       0x02001800, 0x001005d8, 0x82000c80, 0x00000093,
+       0x02021800, 0x001005d8, 0x82000480, 0x00000085,
+       0x0c01f001, 0x001074eb, 0x001074ed, 0x001074fb,
+       0x001074eb, 0x001074eb, 0x001074eb, 0x001074eb,
+       0x001074eb, 0x001074eb, 0x001074eb, 0x001074eb,
+       0x001074eb, 0x001074eb, 0x00107506, 0x0201f800,
+       0x001005d8, 0x4933c857, 0x0401f850, 0x59300402,
+       0x4801a407, 0x5930001c, 0x4801a207, 0x4979a408,
+       0x4a01a208, 0x0000ffff, 0x42000800, 0x00000003,
+       0x42001000, 0x0000dc00, 0x0401f3c2, 0x4933c857,
+       0x0401f84e, 0x4a01a406, 0x00000003, 0x4a01a206,
+       0x00000300, 0x42000800, 0x00000001, 0x42001000,
+       0x0000dc00, 0x0401f3b7, 0x4d2c0000, 0x59325808,
+       0x4933c857, 0x492fc857, 0x812e59c0, 0x02000800,
+       0x001005d8, 0x59340a12, 0x82040d00, 0x0000ff00,
+       0x592c000a, 0x82000500, 0x000000ff, 0x900001c0,
+       0x80040540, 0x82000540, 0x00000011, 0x44034800,
+       0x81a5a000, 0x42001000, 0x00000009, 0x42000800,
+       0x00000003, 0x592c0009, 0x82000500, 0xff000000,
+       0x82001d80, 0x84000000, 0x04000009, 0x82001d80,
+       0x85000000, 0x02020800, 0x001005d8, 0x42001000,
+       0x00000007, 0x42000800, 0x00000001, 0x832c1c00,
+       0x00000009, 0x500c0000, 0x4401a000, 0x800c1800,
+       0x80d1a000, 0x80081040, 0x040207fb, 0x42001000,
+       0x0000dc00, 0x5c025800, 0x0401f386, 0x42005000,
+       0x81000000, 0x42006000, 0x00090000, 0x41786800,
+       0x41787800, 0x0401f35d, 0x42005000, 0x84000000,
+       0x42006000, 0x00990000, 0x59300406, 0x82000580,
+       0x00000005, 0x04000002, 0x8430652e, 0x41786800,
+       0x41787800, 0x0401f351, 0x42005000, 0x85000000,
+       0x42006000, 0x00990000, 0x59300406, 0x82000580,
+       0x00000005, 0x04000002, 0x8430652e, 0x41786800,
+       0x41787800, 0x0401f345, 0x59300403, 0x82000c80,
+       0x00000053, 0x02021800, 0x001005d8, 0x82000480,
+       0x0000004b, 0x02001800, 0x001005d8, 0x59326809,
+       0x59368c03, 0x4803c857, 0x0c01f001, 0x001075da,
+       0x001075e2, 0x001075ea, 0x001075f2, 0x0010756b,
+       0x0010756b, 0x0010756b, 0x001075d2, 0x0201f800,
+       0x001005d8, 0x42005000, 0x06000000, 0x42006000,
+       0x08290000, 0x41786800, 0x41787800, 0x0401f327,
+       0x4933c857, 0x0401ff47, 0x4a01a006, 0x12000000,
+       0x59300406, 0x82000580, 0x00000004, 0x04020003,
+       0x59340002, 0x0401f002, 0x59a80010, 0x82000500,
+       0x00ffffff, 0x4801a007, 0x59300419, 0x4801a408,
+       0x59300219, 0x4801a208, 0x4979a009, 0x4979a00a,
+       0x4979a00b, 0x4979a00c, 0x4979a00d, 0x4979a00e,
+       0x4979a00f, 0x4979a010, 0x42000800, 0x0000000b,
+       0x42001000, 0x0000dc00, 0x0401f32a, 0x0401ff29,
+       0x4a01a006, 0x0f000000, 0x5930001c, 0x4801a007,
+       0x42000800, 0x00000002, 0x42001000, 0x0000dc00,
+       0x0401f320, 0x0401ff2d, 0x4a01a006, 0x02000000,
+       0x59c40085, 0x48031004, 0x59880000, 0x4801a007,
+       0x59880001, 0x4801a008, 0x59880002, 0x4801a009,
+       0x59880003, 0x4801a00a, 0x59880004, 0x4801a00b,
+       0x59880005, 0x4801a00c, 0x42000800, 0x00000007,
+       0x42001000, 0x0000dc00, 0x0401f30a, 0x4a026202,
+       0x0000ffff, 0x0401ff07, 0x4a01a006, 0x62000000,
+       0x5930001c, 0x4801a007, 0x42000800, 0x00000002,
+       0x42001000, 0x0000dc00, 0x0401f2fe, 0x0401fefd,
+       0x59300808, 0x4c500000, 0x4c540000, 0x4c580000,
+       0x8204a400, 0x0000000a, 0x5930b01c, 0x82d0ac00,
+       0x00000006, 0x0201f800, 0x0010ab17, 0x5930081c,
+       0x42001000, 0x0000dc00, 0x5c00b000, 0x5c00a800,
+       0x5c00a000, 0x0401f2eb, 0x0401ff9b, 0x59300017,
+       0x4801a006, 0x59300018, 0x4801a007, 0x4a01a008,
+       0x00001000, 0x0401f020, 0x0401ff93, 0x59300017,
+       0x4801a006, 0x59300018, 0x4801a007, 0x4a01a008,
+       0x00004000, 0x0401f018, 0x0401ff8b, 0x59300017,
+       0x4801a006, 0x59300018, 0x4801a007, 0x4a01a008,
+       0x00002000, 0x0401f010, 0x0401ff83, 0x59300017,
+       0x4801a006, 0x59300018, 0x4801a007, 0x4a01a008,
+       0x00000400, 0x0401f008, 0x0401ff7b, 0x59300017,
+       0x4801a006, 0x59300018, 0x4801a007, 0x4a01a008,
+       0x00000200, 0x4979a009, 0x4979a00a, 0x4979a00b,
+       0x4979a00c, 0x4979a00d, 0x42000800, 0x00000008,
+       0x42001000, 0x0000dc00, 0x0401f2ba, 0x0401fec7,
+       0x4a01a006, 0x02000014, 0x4979a407, 0x4979a207,
+       0x59a8003a, 0x4801a008, 0x59a8003b, 0x4801a009,
+       0x4a01a00a, 0x00047878, 0x42000800, 0x00000005,
+       0x42001000, 0x0000dc00, 0x0401f2aa, 0x0401feb7,
+       0x4a01a006, 0x02140018, 0x4a01a407, 0x00000800,
+       0x5930001c, 0x82000d00, 0xff000000, 0x900409c0,
+       0x4805a207, 0x82000500, 0x00ffffff, 0x4801a00a,
+       0x4979a408, 0x4979a208, 0x4979a409, 0x4979a209,
+       0x4979a00b, 0x42000800, 0x00000006, 0x42001000,
+       0x0000dc00, 0x0401f293, 0x4803c856, 0x4d380000,
+       0x4d1c0000, 0x42027000, 0x00000035, 0x0201f800,
+       0x001093ba, 0x0402001e, 0x0401fe8a, 0x4a01a006,
+       0x13000000, 0x5932381e, 0x591c0019, 0x4801a005,
+       0x591c0406, 0x82000580, 0x00000003, 0x04000007,
+       0x59300809, 0x58040002, 0x82000500, 0x00ffffff,
+       0x4801a007, 0x0401f003, 0x59a80010, 0x4801a007,
+       0x59300419, 0x4801a408, 0x59300219, 0x4801a208,
+       0x42000800, 0x00000003, 0x42001000, 0x0000dc00,
+       0x5c023800, 0x5c027000, 0x0401f26e, 0x0201f800,
+       0x00106c55, 0x598c000d, 0x81300580, 0x02020800,
+       0x001005d8, 0x0201f800, 0x00106bbf, 0x0201f800,
+       0x0002077d, 0x5c023800, 0x5c027000, 0x0201f000,
+       0x00106c4b, 0x4803c856, 0x4d2c0000, 0x4d1c0000,
+       0x5932381e, 0x811e39c0, 0x02000800, 0x001005d8,
+       0x591c0c06, 0x82040580, 0x00000006, 0x0400000d,
+       0x82040580, 0x00000003, 0x04000036, 0x4a026403,
+       0x00000037, 0x4a02641a, 0x00000003, 0x4a02621a,
+       0x00001700, 0x5c023800, 0x5c025800, 0x0401f064,
+       0x0401f84b, 0x42001000, 0x40000000, 0x591c0203,
+       0x591c0804, 0x8c040d3e, 0x04020023, 0x82000c80,
+       0x0000000e, 0x0c001003, 0x0201f800, 0x001005d8,
+       0x00107691, 0x0010769d, 0x00107693, 0x0010769d,
+       0x00107699, 0x00107691, 0x00107691, 0x0010769d,
+       0x0010769d, 0x00107691, 0x00107691, 0x00107691,
+       0x00107691, 0x00107691, 0x0010769d, 0x00107691,
+       0x0010769d, 0x0201f800, 0x001005d8, 0x591c0414,
+       0x4803c857, 0x8c000518, 0x04000003, 0x8c000512,
+       0x04000003, 0x80001580, 0x0401f003, 0x42001000,
+       0x20000000, 0x591c0015, 0x4801a00a, 0x0401f018,
+       0x0401f81f, 0x591e5808, 0x812e59c0, 0x02000800,
+       0x001005d8, 0x592c100f, 0x591c0011, 0x80080480,
+       0x4801a00a, 0x591c0203, 0x591c0804, 0x8c040d3e,
+       0x04020007, 0x82000d80, 0x00000002, 0x04000007,
+       0x82000d80, 0x00000004, 0x04000004, 0x42001000,
+       0x40000000, 0x0401f002, 0x80001580, 0x4809a00b,
+       0x42000800, 0x00000006, 0x42001000, 0x0000dc00,
+       0x5c023800, 0x5c025800, 0x0401f1fe, 0x4803c856,
+       0x0401fe0a, 0x4a01a006, 0x02000000, 0x59300c19,
+       0x4805a407, 0x59300a19, 0x4805a207, 0x59a81010,
+       0x59300809, 0x58041802, 0x820c1d00, 0x00ffffff,
+       0x5930081e, 0x58040406, 0x82000580, 0x00000003,
+       0x04020004, 0x4809a008, 0x480da009, 0x0401f003,
+       0x480da008, 0x4809a009, 0x1c01f000, 0x4803c856,
+       0x0401fdf2, 0x0401f003, 0x4803c856, 0x0401fde8,
+       0x4a01a006, 0x01000000, 0x5930041a, 0x4801a407,
+       0x5930021a, 0x4801a207, 0x42000800, 0x00000002,
+       0x42001000, 0x0000dc00, 0x0401f1d6, 0x4803c856,
+       0x4d1c0000, 0x0401fdcc, 0x4a01a006, 0x14000000,
+       0x5932381e, 0x591c0019, 0x4801a005, 0x59300419,
+       0x4801a407, 0x59300219, 0x4801a207, 0x59300015,
+       0x4801a008, 0x59300216, 0x82000500, 0x000000ff,
+       0x840001c0, 0x4801a409, 0x42000800, 0x00000004,
+       0x42001000, 0x0000dc00, 0x5c023800, 0x0401f1bd,
+       0x4803c856, 0x0401f80b, 0x5930041a, 0x900001c0,
+       0x4801a005, 0x0401f9ec, 0x41780800, 0x42001000,
+       0x00005c00, 0x0401f9b3, 0x0201f000, 0x0010604d,
+       0x4803c856, 0x59300817, 0x82041c00, 0x00000005,
+       0x46034800, 0x00000021, 0x58040404, 0x82000500,
+       0x0000f000, 0x82000580, 0x00003000, 0x04000003,
+       0x46034800, 0x00000041, 0x81a5a000, 0x580c0001,
+       0x82000d00, 0x00ffffff, 0x82040d40, 0xc2000000,
+       0x4805a000, 0x580c0800, 0x82041500, 0x00ffffff,
+       0x82000500, 0xff000000, 0x80080540, 0x4801a001,
+       0x580c0002, 0x82000580, 0x00c00000, 0x82000500,
+       0x00fd0300, 0x4801a002, 0x580c0003, 0x4801a003,
+       0x580c0404, 0x4801a404, 0x580c0204, 0x4801a204,
+       0x1c01f000, 0x4803c856, 0x59a80026, 0x82000500,
+       0x00000028, 0x04020009, 0x59a80026, 0x82000500,
+       0x00000028, 0x04000003, 0x497a6a12, 0x0401f003,
+       0x4a026a12, 0x0000ff00, 0x42005000, 0x22000000,
+       0x42006000, 0x01380000, 0x41786800, 0x41787800,
+       0x0401f952, 0x59301008, 0x4a01a006, 0x54000000,
+       0x59a80010, 0x82000500, 0x00ffffff, 0x58080c0a,
+       0x800408f0, 0x80040540, 0x4801a007, 0x5808000a,
+       0x82000500, 0xff000000, 0x4801a008, 0x59a80002,
+       0x4801a009, 0x59a80003, 0x4801a00a, 0x59a80000,
+       0x4801a00b, 0x59a80001, 0x4801a00c, 0x5808000c,
+       0x9c0001c0, 0x4801a00d, 0x5808000d, 0x9c0001c0,
+       0x4801a00e, 0x5808000e, 0x9c0001c0, 0x4801a00f,
+       0x5808000f, 0x9c0001c0, 0x4801a010, 0x58080010,
+       0x9c0001c0, 0x4801a011, 0x58080011, 0x9c0001c0,
+       0x4801a012, 0x58080012, 0x9c0001c0, 0x4801a013,
+       0x58080013, 0x9c0001c0, 0x4801a014, 0x58080010,
+       0x9c0001c0, 0x4801a015, 0x58080011, 0x9c0001c0,
+       0x4801a016, 0x58080012, 0x9c0001c0, 0x4801a017,
+       0x58080013, 0x9c0001c0, 0x4801a018, 0x42000800,
+       0x00000013, 0x42001000, 0x0000dc00, 0x0401f135,
+       0x4803c856, 0x42005000, 0x22000000, 0x42006000,
+       0x01290000, 0x41786800, 0x41787800, 0x0401f90b,
+       0x59301008, 0x4a01a006, 0x55000000, 0x5808000b,
+       0x82000500, 0x00ffffff, 0x58080c0a, 0x800408f0,
+       0x80040540, 0x4801a007, 0x5808080a, 0x82040d00,
+       0xff000000, 0x59a80010, 0x82000500, 0x00ffffff,
+       0x80040540, 0x4801a008, 0x5808000c, 0x9c0001c0,
+       0x4801a009, 0x5808000d, 0x9c0001c0, 0x4801a00a,
+       0x5808000e, 0x9c0001c0, 0x4801a00b, 0x5808000f,
+       0x9c0001c0, 0x4801a00c, 0x59a80002, 0x4801a00d,
+       0x59a80003, 0x4801a00e, 0x59a80000, 0x4801a00f,
+       0x59a80001, 0x4801a010, 0x58080010, 0x4801a011,
+       0x58080011, 0x4801a012, 0x58080012, 0x4801a013,
+       0x58080013, 0x4801a014, 0x4979a015, 0x4979a016,
+       0x4979a017, 0x4979a018, 0x42000800, 0x00000013,
+       0x42001000, 0x0000dc00, 0x0401f0f6, 0x0401fd03,
+       0x5930001c, 0x800001c0, 0x04000008, 0x4a01a006,
+       0x01000000, 0x4a01a407, 0x00000003, 0x42000800,
+       0x00000002, 0x0401f028, 0x4a01a006, 0x02000000,
+       0x41780800, 0x836c0580, 0x00000004, 0x04020003,
+       0x84040d42, 0x0401f00d, 0x0201f800, 0x0010513b,
+       0x04020003, 0x84040d4a, 0x0401f002, 0x84040d48,
+       0x59a80026, 0x8c000506, 0x04020003, 0x8c00050a,
+       0x04000002, 0x84040d46, 0x4805a207, 0x59c40085,
+       0x48031004, 0x4c580000, 0x4c500000, 0x4c540000,
+       0x4200b000, 0x00000006, 0x8388a400, 0x00000000,
+       0x82d0ac00, 0x00000008, 0x0201f800, 0x0010ab17,
+       0x5c00a800, 0x5c00a000, 0x5c00b000, 0x42000800,
+       0x00000008, 0x42001000, 0x0000dc00, 0x0401f0c1,
+       0x0401fcc0, 0x4a01a006, 0x56000000, 0x59340006,
+       0x4801a007, 0x59340007, 0x4801a008, 0x42000800,
+       0x00000003, 0x42001000, 0x0000dc00, 0x0401f0b5,
+       0x4803c856, 0x0401fcc1, 0x5930081c, 0x800409c0,
+       0x0400000e, 0x82040580, 0x0000ffff, 0x04000004,
+       0x82040480, 0x00000007, 0x04021008, 0x4a01a006,
+       0x01000000, 0x4a01a407, 0x00000003, 0x42000800,
+       0x00000002, 0x0401f012, 0x4a01a006, 0x0200001c,
+       0x4a01a007, 0x00000001, 0x42001000, 0x0010b4f0,
+       0x50080000, 0x9c0001c0, 0x4801a009, 0x59a80010,
+       0x4801a00a, 0x59a80002, 0x59a80803, 0x4801a00b,
+       0x4805a00c, 0x42000800, 0x00000007, 0x42001000,
+       0x0000dc00, 0x0401f08f, 0x4d2c0000, 0x0401fc8d,
+       0x59325808, 0x592c0008, 0x82000500, 0x00ffffff,
+       0x4801a001, 0x4a01a006, 0x51000000, 0x5c025800,
+       0x0201f000, 0x00107344, 0x4803c856, 0x59a80810,
+       0x82040d00, 0x000000ff, 0x59325808, 0x59326809,
+       0x59a83026, 0x8c18350a, 0x04020008, 0x8c00050e,
+       0x04020006, 0x80001d80, 0x59a82010, 0x82102500,
+       0x000000ff, 0x0401f001, 0x59300406, 0x4803c857,
+       0x82000d80, 0x00000009, 0x04000006, 0x82000d80,
+       0x0000000a, 0x0400002e, 0x0201f800, 0x001005d8,
+       0x59300015, 0x8c00051e, 0x04020020, 0x42005000,
+       0x04000000, 0x42006000, 0x05000000, 0x592c040a,
+       0x82000500, 0x00000030, 0x800000e0, 0x80306540,
+       0x5934000a, 0x8c000508, 0x04000002, 0x84306546,
+       0x41786800, 0x41787800, 0x0401f831, 0x59300c14,
+       0x80040000, 0x48026414, 0x40040000, 0x800000d0,
+       0x82000540, 0x00000020, 0x4801a403, 0x83180d40,
+       0x00000038, 0x42001000, 0x0000c920, 0x0401f860,
+       0x0201f000, 0x00106052, 0x59a80026, 0x82000500,
+       0x00000028, 0x04000003, 0x497a6a12, 0x0401f7dc,
+       0x4a026a12, 0x0000ff00, 0x0401f7d9, 0x42005000,
+       0x02000000, 0x42006000, 0x20290000, 0x41786800,
+       0x41787800, 0x0401f812, 0x83180d40, 0x00000038,
+       0x42001000, 0x0000c9a0, 0x0401f849, 0x42000800,
+       0x000007d0, 0x59300011, 0x82000500, 0xfff00000,
+       0x80000540, 0x04000003, 0x42000800, 0x00001b58,
+       0x41781000, 0x0201f000, 0x00106054, 0x4201a000,
+       0x00000000, 0x0401f003, 0x4201a000, 0x00000011,
+       0x59340a12, 0x82040d00, 0x0000ff00, 0x59a80010,
+       0x82000500, 0x000000ff, 0x900001c0, 0x80040540,
+       0x80d00540, 0x44034800, 0x81a5a000, 0x59340002,
+       0x82000500, 0x00ffffff, 0x80280540, 0x4801a000,
+       0x59a80010, 0x4801a001, 0x4831a002, 0x82340540,
+       0x00000000, 0x4801a003, 0x59300402, 0x4801a404,
+       0x59300a02, 0x4805a204, 0x8c30652e, 0x04000003,
+       0x4805a404, 0x4801a204, 0x483da005, 0x1c01f000,
+       0x4803c856, 0x4c040000, 0x0401f822, 0x5c000800,
+       0x40040000, 0x80081540, 0x800000c4, 0x82000540,
+       0x00002000, 0x4803910a, 0x59b400f6, 0x82000500,
+       0x00000018, 0x040207fd, 0x4a0368f0, 0x0010b544,
+       0x4a0368f1, 0x0010b54b, 0x480b68f3, 0x4a0378e4,
+       0x00008000, 0x0201f000, 0x0010604d, 0x4807c857,
+       0x480a2800, 0x4c040000, 0x0401f80a, 0x5c000800,
+       0x59b400f6, 0x8c00050a, 0x040207fe, 0x49a768f2,
+       0x480768f4, 0x4a0378e4, 0x00008000, 0x1c01f000,
+       0x4a0378e4, 0x0000c000, 0x59bc00e4, 0x8c000520,
+       0x0400000c, 0x4a0378e4, 0x00008000, 0x42007000,
+       0x000003e8, 0x59bc00e4, 0x8c000520, 0x040007f5,
+       0x80387040, 0x02000800, 0x001005d8, 0x0401f7fa,
+       0x1c01f000, 0x82000500, 0xffff0000, 0x82000580,
+       0x01050000, 0x0402000d, 0x599c0818, 0x8c040d10,
+       0x0400000a, 0x59a80807, 0x8c040d0a, 0x04000007,
+       0x42001000, 0x0000804f, 0x41781800, 0x41782000,
+       0x0201f800, 0x00103a3e, 0x1c01f000, 0x41781000,
+       0x42026000, 0x0010d1c0, 0x59a8180e, 0x480a6402,
+       0x4a026202, 0x0000ffff, 0x80081000, 0x800c1840,
+       0x04000004, 0x83326400, 0x00000024, 0x0401f7f8,
+       0x1c01f000, 0x4933c857, 0x59300203, 0x82000580,
+       0x00000000, 0x0400002c, 0x59300406, 0x4803c857,
+       0x82000d80, 0x00000004, 0x04000011, 0x82000d80,
+       0x00000001, 0x0400000e, 0x82000d80, 0x00000003,
+       0x04000006, 0x82000d80, 0x00000006, 0x04020011,
+       0x0201f800, 0x0010a5df, 0x5930001c, 0x800001c0,
+       0x02020800, 0x0010984e, 0x0401f00a, 0x5930081e,
+       0x4807c857, 0x800409c0, 0x04000006, 0x5804001c,
+       0x4803c857, 0x81300580, 0x04020002, 0x4978081c,
+       0x497a6008, 0x4a026004, 0x00004000, 0x59a80037,
+       0x82000c80, 0x00000051, 0x04001002, 0x80000102,
+       0x48026206, 0x497a6205, 0x497a6009, 0x4a026406,
+       0x00000007, 0x1c01f000, 0x8166c9c0, 0x0400001c,
+       0x41626000, 0x41580000, 0x59300a03, 0x82040d80,
+       0x00000000, 0x04000008, 0x83326400, 0x00000024,
+       0x81300c80, 0x040017f9, 0x42026000, 0x0010d1c0,
+       0x0401f7f6, 0x4933c857, 0x8166c840, 0x83300c00,
+       0x00000024, 0x80040480, 0x04021006, 0x4006c000,
+       0x4a026203, 0x00000008, 0x813261c0, 0x1c01f000,
+       0x4202c000, 0x0010d1c0, 0x0401f7fa, 0x42000000,
+       0x0010b854, 0x0201f800, 0x0010aa47, 0x4933c856,
+       0x417a6000, 0x0401f7f5, 0x4933c857, 0x83380580,
+       0x00000013, 0x0402000b, 0x59300004, 0x8c00053e,
+       0x04000007, 0x0201f800, 0x00106c55, 0x0201f800,
+       0x00106bbf, 0x0201f800, 0x00106c4b, 0x1c01f000,
+       0x4933c857, 0x59880052, 0x80000000, 0x48031052,
+       0x1c01f000, 0x4933c857, 0x59300203, 0x82003480,
+       0x0000000e, 0x02021800, 0x001005d8, 0x4d2c0000,
+       0x0c01f803, 0x5c025800, 0x1c01f000, 0x00107991,
+       0x00107efd, 0x0010804a, 0x00107991, 0x001080b0,
+       0x00107af5, 0x00107991, 0x00107991, 0x00107e93,
+       0x00107991, 0x00107991, 0x00107991, 0x00107991,
+       0x00107991, 0x0201f800, 0x001005d8, 0x4933c857,
+       0x59300203, 0x82003480, 0x0000000e, 0x02021800,
+       0x001005d8, 0x0c01f001, 0x001079a8, 0x00108a3d,
+       0x001079a8, 0x001079a8, 0x001079a8, 0x001079a8,
+       0x001079a8, 0x001079a8, 0x001089e5, 0x00108a58,
+       0x00108ac6, 0x00108a58, 0x00108ac6, 0x001079a8,
+       0x0201f800, 0x001005d8, 0x0201f800, 0x001005d8,
+       0x4933c857, 0x4d2c0000, 0x59325808, 0x59300203,
+       0x82003480, 0x0000000e, 0x02021800, 0x001005d8,
+       0x0c01f803, 0x5c025800, 0x1c01f000, 0x001079c5,
+       0x001079c5, 0x001079c5, 0x001079e1, 0x00107a2d,
+       0x001079c5, 0x001079c5, 0x001079c5, 0x001079c7,
+       0x001079c5, 0x001079c5, 0x001079c5, 0x001079c5,
+       0x001079c5, 0x0201f800, 0x001005d8, 0x4933c857,
+       0x83380580, 0x00000040, 0x02020800, 0x001005d8,
+       0x4a026007, 0x00082000, 0x4a026203, 0x00000003,
+       0x493a6403, 0x4a025c08, 0x00000001, 0x592c000d,
+       0x48026011, 0x497a6013, 0x592c0208, 0x800000c2,
+       0x800010c4, 0x80081400, 0x480a6206, 0x0201f800,
+       0x00100f4e, 0x42000800, 0x80000060, 0x0201f000,
+       0x00106721, 0x4933c857, 0x83380480, 0x00000050,
+       0x02021800, 0x001005d8, 0x83380480, 0x00000049,
+       0x02001800, 0x001005d8, 0x0c01f001, 0x001079f4,
+       0x001079ff, 0x001079f2, 0x001079f2, 0x001079f2,
+       0x001079f2, 0x00107a0a, 0x0201f800, 0x001005d8,
+       0x4a026203, 0x00000004, 0x4a025c08, 0x00000002,
+       0x592c0207, 0x48025c09, 0x592c0209, 0x48025a07,
+       0x592c000c, 0x4802580d, 0x1c01f000, 0x0201f800,
+       0x00106b8a, 0x0201f800, 0x00109037, 0x04000005,
+       0x4a025a06, 0x00000006, 0x0201f800, 0x000202da,
+       0x0201f000, 0x0002077d, 0x0201f800, 0x00106b8a,
+       0x4d3c0000, 0x417a7800, 0x0201f800, 0x0010203c,
+       0x5c027800, 0x42003000, 0x00000014, 0x41782800,
+       0x42002000, 0x00000002, 0x4d400000, 0x4d440000,
+       0x59368c03, 0x42028000, 0x00000029, 0x0201f800,
+       0x0010985e, 0x5c028800, 0x5c028000, 0x42000000,
+       0x0010b864, 0x0201f800, 0x0010aa47, 0x0201f800,
+       0x00109037, 0x02000000, 0x0002077d, 0x4a025a06,
+       0x00000029, 0x0201f800, 0x000202da, 0x0201f000,
+       0x0002077d, 0x4933c857, 0x83380580, 0x00000048,
+       0x04000005, 0x83380580, 0x00000053, 0x02020800,
+       0x001005d8, 0x592c0206, 0x82000580, 0x00000007,
+       0x04000009, 0x59300011, 0x80000540, 0x04000006,
+       0x592c080c, 0x80040480, 0x4802580c, 0x4a025a06,
+       0x00000015, 0x592c0206, 0x80000540, 0x04020003,
+       0x4a025a06, 0x00000000, 0x0201f800, 0x000202da,
+       0x0201f000, 0x0002077d, 0x4933c857, 0x4d2c0000,
+       0x4c500000, 0x4c540000, 0x4c580000, 0x0201f800,
+       0x001007e4, 0x02000800, 0x001005d8, 0x497a5a06,
+       0x59c80017, 0x82000500, 0x0000f000, 0x48025c07,
+       0x59a80816, 0x82040c00, 0x00000018, 0x48065a07,
+       0x412c7800, 0x4d2c0000, 0x41cca000, 0x42002800,
+       0x00000001, 0x42001000, 0x0000002c, 0x82040480,
+       0x0000002d, 0x04021006, 0x832cac00, 0x00000009,
+       0x0201f800, 0x00108b96, 0x0401f02e, 0x40043000,
+       0x42000800, 0x0000002c, 0x832cac00, 0x00000009,
+       0x0201f800, 0x00108b96, 0x82183480, 0x0000002c,
+       0x0201f800, 0x001007e4, 0x0400001a, 0x80142800,
+       0x4a025804, 0x00000110, 0x492c7801, 0x82180c80,
+       0x0000003d, 0x04021007, 0x40180800, 0x832cac00,
+       0x00000005, 0x0201f800, 0x00108b96, 0x0401f015,
+       0x82081400, 0x0000003c, 0x82183480, 0x0000003c,
+       0x42000800, 0x0000003c, 0x412c7800, 0x832cac00,
+       0x00000005, 0x0201f800, 0x00108b96, 0x0401f7e5,
+       0x5c025800, 0x592c0206, 0x8400055e, 0x48025a06,
+       0x592c0407, 0x80080540, 0x48025c07, 0x0401f002,
+       0x5c025800, 0x813669c0, 0x04000003, 0x59343403,
+       0x0401f003, 0x42003000, 0x0000ffff, 0x49325808,
+       0x481a5c06, 0x82100580, 0x00000054, 0x04020002,
+       0x491e5813, 0x841401c0, 0x80100540, 0x48025804,
+       0x592c0001, 0x497a5801, 0x4c000000, 0x0201f800,
+       0x000202da, 0x5c025800, 0x812e59c0, 0x040207f9,
+       0x5c00b000, 0x5c00a800, 0x5c00a000, 0x5c025800,
+       0x1c01f000, 0x4803c856, 0x4c5c0000, 0x4d2c0000,
+       0x4c500000, 0x4c540000, 0x4c580000, 0x412cb800,
+       0x592c040b, 0x8c000516, 0x04000003, 0x41cca000,
+       0x0401f003, 0x83cca400, 0x00000006, 0x4008b000,
+       0x41781000, 0x82580480, 0x00000012, 0x04001004,
+       0x4200b000, 0x00000012, 0x40001000, 0x4c080000,
+       0x4d2c0000, 0x0201f800, 0x001007e4, 0x04000023,
+       0x5c001800, 0x492c1801, 0x485a5800, 0x832cac00,
+       0x00000002, 0x0201f800, 0x0010ab28, 0x585c040b,
+       0x8c000500, 0x0400000e, 0x832c1400, 0x00000002,
+       0x8c000516, 0x04000003, 0x82081400, 0x00000006,
+       0x46001000, 0x00000001, 0x80081000, 0x46001000,
+       0x00000900, 0x84000500, 0x4800bc0b, 0x5c001000,
+       0x800811c0, 0x040207da, 0x82000540, 0x00000001,
+       0x5c00b000, 0x5c00a800, 0x5c00a000, 0x5c025800,
+       0x5c00b800, 0x1c01f000, 0x5c025800, 0x5c001000,
+       0x0401f7f8, 0x4933c857, 0x83380d80, 0x00000015,
+       0x04020003, 0x0201f000, 0x0002077d, 0x83380d80,
+       0x00000016, 0x02020800, 0x001005d8, 0x0201f000,
+       0x0002077d, 0x4933c857, 0x4d2c0000, 0x4c500000,
+       0x4c540000, 0x4c580000, 0x59325808, 0x83cca400,
+       0x00000006, 0x59cc1806, 0x820c0580, 0x01000000,
+       0x04020004, 0x4200b000, 0x00000002, 0x0401f00f,
+       0x4200b000, 0x00000008, 0x832cac00, 0x00000005,
+       0x0201f800, 0x0010ab17, 0x8c0c1d00, 0x0400000b,
+       0x4200b000, 0x00000008, 0x592e5801, 0x812e59c0,
+       0x02000800, 0x001005d8, 0x832cac00, 0x00000005,
+       0x0201f800, 0x0010ab17, 0x0401f816, 0x5c00b000,
+       0x5c00a800, 0x5c00a000, 0x5c025800, 0x1c01f000,
+       0x4933c857, 0x4c500000, 0x4c540000, 0x4c580000,
+       0x83cca400, 0x00000006, 0x5930a808, 0x8254ac00,
+       0x00000005, 0x4200b000, 0x00000007, 0x0201f800,
+       0x0010ab17, 0x5c00b000, 0x5c00a800, 0x5c00a000,
+       0x4933c857, 0x0201f800, 0x00109037, 0x02000000,
+       0x0002077d, 0x4d2c0000, 0x0201f800, 0x00109597,
+       0x0402000b, 0x41780800, 0x4d400000, 0x42028000,
+       0x00000000, 0x0201f800, 0x0010943b, 0x5c028000,
+       0x5c025800, 0x0201f000, 0x0002077d, 0x5931d821,
+       0x58ef400b, 0x58ee580d, 0x4a025a04, 0x00000103,
+       0x58ec0009, 0x0801f800, 0x5c025800, 0x0201f000,
+       0x0002077d, 0x4933c857, 0x59cc1806, 0x820c0580,
+       0x02000000, 0x04020014, 0x4a026802, 0x00fffffd,
+       0x5934000a, 0x84000504, 0x4802680a, 0x59300808,
+       0x800409c0, 0x02000000, 0x0002077d, 0x4a000a04,
+       0x00000103, 0x480c0805, 0x5931d821, 0x58ef400b,
+       0x58ee580d, 0x58ec0009, 0x0801f800, 0x0201f000,
+       0x0002077d, 0x42000000, 0x0010b86c, 0x0201f800,
+       0x0010aa47, 0x4c0c0000, 0x0401f804, 0x5c001800,
+       0x040207eb, 0x1c01f000, 0x4933c857, 0x4d2c0000,
+       0x59325808, 0x812e59c0, 0x04020009, 0x497a6206,
+       0x497a6205, 0x4d380000, 0x42027000, 0x00000022,
+       0x0401fb77, 0x5c027000, 0x80000580, 0x5c025800,
+       0x1c01f000, 0x4933c857, 0x4d2c0000, 0x4c500000,
+       0x4c540000, 0x4c580000, 0x59325808, 0x592e5801,
+       0x832cac00, 0x00000005, 0x83cca400, 0x00000006,
+       0x59c80817, 0x82040d00, 0x000003ff, 0x82041480,
+       0x0000000f, 0x0400101b, 0x4200b000, 0x0000000f,
+       0x0201f800, 0x0010ab17, 0x592e5801, 0x832cac00,
+       0x00000005, 0x82080c80, 0x0000000f, 0x0400100d,
+       0x4200b000, 0x0000000f, 0x0201f800, 0x0010ab17,
+       0x592e5801, 0x832cac00, 0x00000005, 0x82041480,
+       0x0000000f, 0x04001007, 0x42001000, 0x0000000f,
+       0x4008b000, 0x0201f800, 0x0010ab17, 0x0401f004,
+       0x4004b000, 0x0201f800, 0x0010ab17, 0x5931d821,
+       0x58ef400b, 0x58ee580d, 0x4a025a04, 0x00000103,
+       0x592e5801, 0x58ec0009, 0x0801f800, 0x0201f800,
+       0x0002077d, 0x5c00b000, 0x5c00a800, 0x5c00a000,
+       0x5c025800, 0x1c01f000, 0x4933c857, 0x4d2c0000,
+       0x4c500000, 0x4c540000, 0x4c580000, 0x59cc0006,
+       0x82000d80, 0x01000000, 0x0400002c, 0x59cc0007,
+       0x9000b1c0, 0x8258b500, 0x000000ff, 0x8058b104,
+       0x8258b400, 0x00000002, 0x82580c80, 0x00000007,
+       0x04001003, 0x4200b000, 0x00000006, 0x83cca400,
+       0x00000006, 0x59301008, 0x800811c0, 0x02000800,
+       0x001005d8, 0x8208ac00, 0x00000005, 0x0201f800,
+       0x0010ab17, 0x82000d00, 0xff000000, 0x800409c0,
+       0x04000019, 0x8200b500, 0x000000ff, 0x8058b104,
+       0x82580c80, 0x0000000e, 0x04001003, 0x4200b000,
+       0x0000000d, 0x58081001, 0x800811c0, 0x02000800,
+       0x001005d8, 0x8208ac00, 0x00000005, 0x0201f800,
+       0x0010ab17, 0x0401f008, 0x59301008, 0x800811c0,
+       0x02000800, 0x001005d8, 0x48001005, 0x59cc0007,
+       0x48001006, 0x0401ff3b, 0x5c00b000, 0x5c00a800,
+       0x5c00a000, 0x5c025800, 0x1c01f000, 0x4933c857,
+       0x42000800, 0x00000000, 0x59cc0006, 0x82000580,
+       0x02000000, 0x04000003, 0x42000800, 0x00000001,
+       0x4d2c0000, 0x59325808, 0x812e59c0, 0x02000800,
+       0x001005d8, 0x48065a06, 0x0201f800, 0x000202da,
+       0x5c025800, 0x0201f000, 0x0002077d, 0x4933c857,
+       0x4d2c0000, 0x4c500000, 0x4c540000, 0x4c580000,
+       0x4200b000, 0x00000002, 0x59cc0806, 0x82040580,
+       0x01000000, 0x04000004, 0x8204b500, 0x0000ffff,
+       0x8058b104, 0x83cca400, 0x00000006, 0x59300008,
+       0x8200ac00, 0x00000005, 0x0201f800, 0x0010ab17,
+       0x0401ff0c, 0x5c00b000, 0x5c00a800, 0x5c00a000,
+       0x5c025800, 0x1c01f000, 0x4933c857, 0x4803c857,
+       0x4807c857, 0x480bc857, 0x480fc857, 0x4813c857,
+       0x481bc857, 0x492fc857, 0x4d2c0000, 0x4c000000,
+       0x0201f800, 0x001007d3, 0x5c000000, 0x0400000f,
+       0x48025803, 0x5c000000, 0x4802580a, 0x4c000000,
+       0x481a5801, 0x48125809, 0x48065804, 0x480a5807,
+       0x480e5808, 0x412c1000, 0x0201f800, 0x00100858,
+       0x82000540, 0x00000001, 0x5c025800, 0x1c01f000,
+       0x4933c857, 0x4d1c0000, 0x59cc0001, 0x82000500,
+       0x00ffffff, 0x59341002, 0x82081500, 0x00ffffff,
+       0x80080580, 0x0402001f, 0x497a6205, 0x4d380000,
+       0x42027000, 0x00000035, 0x0201f800, 0x001093ba,
+       0x5c027000, 0x04020012, 0x591c001c, 0x800001c0,
+       0x0400000f, 0x497a381c, 0x591c0414, 0x8c000502,
+       0x02000800, 0x001005d8, 0x84000502, 0x48023c14,
+       0x591c1406, 0x82080580, 0x00000003, 0x04000006,
+       0x82080580, 0x00000006, 0x04000005, 0x0401fc9e,
+       0x0401f004, 0x0401f805, 0x0401f002, 0x0401f8c0,
+       0x5c023800, 0x1c01f000, 0x4d2c0000, 0x591e5808,
+       0x4933c857, 0x491fc857, 0x493bc857, 0x492fc857,
+       0x83380580, 0x00000015, 0x040000b3, 0x83380580,
+       0x00000016, 0x040200ae, 0x4d300000, 0x411e6000,
+       0x59cc0207, 0x4803c857, 0x82000d00, 0x0000ff00,
+       0x82040580, 0x00001700, 0x04000004, 0x82040580,
+       0x00000300, 0x0402005b, 0x591c0203, 0x4803c857,
+       0x82000580, 0x0000000d, 0x0400003f, 0x812e59c0,
+       0x0400009a, 0x591c0202, 0x4803c857, 0x82000580,
+       0x0000ffff, 0x0402007e, 0x592c020a, 0x4803c857,
+       0x82000500, 0x00000003, 0x82000580, 0x00000002,
+       0x04020007, 0x592c080f, 0x591c0011, 0x4803c857,
+       0x4807c857, 0x80040580, 0x04020071, 0x591c0414,
+       0x4803c857, 0x8c000500, 0x0402006d, 0x41780800,
+       0x591c1206, 0x42000000, 0x0000000a, 0x0201f800,
+       0x001066a0, 0x592c0406, 0x4803c857, 0x800001c0,
+       0x0400000c, 0x80080c80, 0x04001004, 0x02020800,
+       0x001005d8, 0x80001040, 0x480a5c06, 0x800811c0,
+       0x04020004, 0x0201f800, 0x00108d88, 0x0401f06b,
+       0x0201f800, 0x0010912a, 0x591c0817, 0x591c0018,
+       0x48065808, 0x48025809, 0x59300007, 0x8c000500,
+       0x02020800, 0x00100e99, 0x497a3808, 0x0201f800,
+       0x000201ba, 0x0402004a, 0x411e6000, 0x0401fc3e,
+       0x0401f05a, 0x0401fc6d, 0x04000013, 0x49366009,
+       0x4a026406, 0x00000003, 0x492e6008, 0x591c0817,
+       0x591c1018, 0x48066017, 0x480a6018, 0x4d380000,
+       0x591e7403, 0x4d300000, 0x411e6000, 0x0401fc2e,
+       0x5c026000, 0x0201f800, 0x000207a1, 0x5c027000,
+       0x0401f046, 0x59a80039, 0x48023a05, 0x0401f043,
+       0x59cc0407, 0x82000580, 0x0000000b, 0x04020025,
+       0x59340a00, 0x84040d0e, 0x48066a00, 0x592c0a04,
+       0x82040d00, 0x000000ff, 0x82040d80, 0x00000014,
+       0x04000003, 0x4a02621d, 0x00000003, 0x59300007,
+       0x8c000500, 0x02020800, 0x00100e99, 0x4d400000,
+       0x42028000, 0x00000003, 0x592c0a08, 0x0201f800,
+       0x00104e70, 0x0201f800, 0x000202da, 0x5c028000,
+       0x497a6008, 0x4a026403, 0x00000085, 0x4a026203,
+       0x00000009, 0x4a026406, 0x00000002, 0x42000800,
+       0x8000404b, 0x0201f800, 0x00020721, 0x0401f01b,
+       0x59cc0207, 0x82000580, 0x00002a00, 0x04020004,
+       0x59a80039, 0x48023a05, 0x0401f014, 0x812e59c0,
+       0x02000800, 0x001005d8, 0x4a025a04, 0x00000103,
+       0x591c0007, 0x8c000500, 0x02020800, 0x00100e99,
+       0x591c0402, 0x48025c06, 0x4a025a06, 0x00000003,
+       0x0201f800, 0x000202c1, 0x0201f800, 0x00107911,
+       0x0201f800, 0x001049b2, 0x5c026000, 0x0201f800,
+       0x0002077d, 0x0401f002, 0x5c026000, 0x5c025800,
+       0x1c01f000, 0x0401f819, 0x0401f7fd, 0x4933c857,
+       0x83380580, 0x00000015, 0x04020004, 0x59a80039,
+       0x48023a05, 0x0401f00d, 0x83380580, 0x00000016,
+       0x0402000d, 0x4d300000, 0x411e6000, 0x0201f800,
+       0x0010a5df, 0x0201f800, 0x000206fd, 0x0201f800,
+       0x0002077d, 0x5c026000, 0x497a381c, 0x0201f800,
+       0x0002077d, 0x1c01f000, 0x591c0414, 0x84000540,
+       0x48023c14, 0x59cc100b, 0x4933c857, 0x491fc857,
+       0x492fc857, 0x4803c857, 0x480bc857, 0x8c08153c,
+       0x04000006, 0x59a80039, 0x48023a05, 0x497a381c,
+       0x0201f000, 0x0002077d, 0x4d300000, 0x411e6000,
+       0x0201f800, 0x00108bd7, 0x5c026000, 0x591c0406,
+       0x82000580, 0x00000000, 0x02000000, 0x0002077d,
+       0x591c0403, 0x82000580, 0x00000050, 0x0402000d,
+       0x4d300000, 0x411e6000, 0x4a026203, 0x00000001,
+       0x42000800, 0x80000043, 0x0201f800, 0x00020721,
+       0x5c026000, 0x497a381c, 0x0201f000, 0x0002077d,
+       0x591c0203, 0x82000580, 0x0000000d, 0x04000014,
+       0x812e59c0, 0x02000800, 0x001005d8, 0x591c0203,
+       0x82000580, 0x00000004, 0x04020011, 0x592c020a,
+       0x8c000502, 0x0400000e, 0x4a023812, 0x0fffffff,
+       0x592c0208, 0x8400051e, 0x48025a08, 0x42000000,
+       0x00000001, 0x48023a14, 0x0401f021, 0x42000000,
+       0x00000007, 0x48023a14, 0x0401f01d, 0x592c020a,
+       0x4803c857, 0x8c000500, 0x0402000b, 0x8c000502,
+       0x040007f7, 0x591c0414, 0x8c00051c, 0x040207eb,
+       0x591c0011, 0x4803c857, 0x800001c0, 0x040007f0,
+       0x0401f7e6, 0x8c08153a, 0x040207ed, 0x59cc000a,
+       0x592c180f, 0x4803c857, 0x480fc857, 0x800c0580,
+       0x040007e7, 0x59cc000a, 0x4803c857, 0x48023816,
+       0x42000000, 0x00000005, 0x48023a14, 0x0201f000,
+       0x00109259, 0x4933c857, 0x4d1c0000, 0x59cc0001,
+       0x59341002, 0x80080580, 0x82000500, 0x00ffffff,
+       0x04020041, 0x59301419, 0x0201f800, 0x00109410,
+       0x02000800, 0x001005d8, 0x591c1406, 0x82080580,
+       0x00000007, 0x04000038, 0x82080580, 0x00000002,
+       0x04000035, 0x82080580, 0x00000000, 0x04000032,
+       0x591c0202, 0x82000d80, 0x0000ffff, 0x04000004,
+       0x59301a19, 0x800c0580, 0x0402002b, 0x83380580,
+       0x00000015, 0x04000026, 0x4d300000, 0x4d2c0000,
+       0x411e6000, 0x59325808, 0x0201f800, 0x00109037,
+       0x02000800, 0x001005d8, 0x592c0204, 0x82000500,
+       0x000000ff, 0x82000580, 0x00000014, 0x04000003,
+       0x4a02621d, 0x00000003, 0x42028000, 0x00000003,
+       0x592c0a08, 0x0201f800, 0x00104e70, 0x0201f800,
+       0x000202da, 0x5c025800, 0x497a6008, 0x4a026403,
+       0x00000085, 0x4a026203, 0x00000009, 0x4a026406,
+       0x00000002, 0x42000800, 0x8000404b, 0x0201f800,
+       0x00020721, 0x5c026000, 0x0401f003, 0x59a80039,
+       0x48023a05, 0x497a381c, 0x0201f800, 0x0002077d,
+       0x5c023800, 0x1c01f000, 0x4933c857, 0x4c580000,
+       0x4d2c0000, 0x59325808, 0x83383580, 0x00000015,
+       0x04000010, 0x59342200, 0x84102502, 0x48126a00,
+       0x0201f800, 0x00109037, 0x04000066, 0x0201f800,
+       0x00109597, 0x04020005, 0x4200b000, 0x00000002,
+       0x0201f800, 0x0010957d, 0x0401fa0a, 0x0401f079,
+       0x83cc1400, 0x00000008, 0x4200b000, 0x00000002,
+       0x83341c00, 0x00000006, 0x0201f800, 0x0010855a,
+       0x04020015, 0x83cc1400, 0x0000000a, 0x4200b000,
+       0x00000002, 0x83341c00, 0x00000008, 0x0201f800,
+       0x0010855a, 0x0402000c, 0x0201f800, 0x00102074,
+       0x59342200, 0x59cc1007, 0x800811c0, 0x04000003,
+       0x480a6801, 0x84102542, 0x8410251a, 0x48126a00,
+       0x0401f05f, 0x4d3c0000, 0x417a7800, 0x0201f800,
+       0x0010203c, 0x5c027800, 0x42000000, 0x0010b864,
+       0x0201f800, 0x0010aa47, 0x59340200, 0x84000558,
+       0x48026a00, 0x4d300000, 0x0201f800, 0x0002075a,
+       0x02000800, 0x001005d8, 0x49366009, 0x497a6008,
+       0x4a026406, 0x00000001, 0x4a026403, 0x00000001,
+       0x42003000, 0x00000003, 0x0201f800, 0x0010a942,
+       0x0201f800, 0x00103b25, 0x04000011, 0x41782800,
+       0x42003000, 0x00000001, 0x4d400000, 0x42028000,
+       0x00000029, 0x0201f800, 0x0010a43e, 0x5c028000,
+       0x4a026406, 0x00000004, 0x4a026203, 0x00000007,
+       0x4a026420, 0x00000001, 0x0401f009, 0x4a026203,
+       0x00000001, 0x42000800, 0x0000000b, 0x0201f800,
+       0x00104571, 0x0201f800, 0x0010672b, 0x5c026000,
+       0x0201f800, 0x00109037, 0x04000022, 0x0201f800,
+       0x00109597, 0x04020022, 0x0401f9ae, 0x0401f01d,
+       0x4d3c0000, 0x417a7800, 0x0201f800, 0x0010203c,
+       0x42000000, 0x0010b864, 0x0201f800, 0x0010aa47,
+       0x59340200, 0x84000558, 0x48026a00, 0x42003000,
+       0x00000003, 0x41782800, 0x42002000, 0x00000005,
+       0x4d400000, 0x4d440000, 0x59368c03, 0x42028000,
+       0x00000029, 0x0201f800, 0x0010985e, 0x5c028800,
+       0x5c028000, 0x5c027800, 0x0201f800, 0x00102074,
+       0x0201f800, 0x0002077d, 0x0401f002, 0x0401fca9,
+       0x5c025800, 0x5c00b000, 0x1c01f000, 0x4933c857,
+       0x41380000, 0x83383480, 0x00000056, 0x02021800,
+       0x001005d8, 0x0c01f001, 0x00107ef7, 0x00107ef2,
+       0x00107ef7, 0x00107ef7, 0x00107ef7, 0x00107ef7,
+       0x00107ef0, 0x00107ef0, 0x00107ef0, 0x00107ef0,
+       0x00107ef0, 0x00107ef0, 0x00107ef0, 0x00107ef0,
+       0x00107ef0, 0x00107ef0, 0x00107ef0, 0x00107ef0,
+       0x00107ef0, 0x00107ef0, 0x00107ef0, 0x00107ef0,
+       0x00107ef0, 0x00107ef0, 0x00107ef0, 0x00107ef0,
+       0x00107ef0, 0x00107ef0, 0x00107ef0, 0x00107ef0,
+       0x00107ef0, 0x00107ef7, 0x00107ef0, 0x00107ef7,
+       0x00107ef7, 0x00107ef0, 0x00107ef0, 0x00107ef0,
+       0x00107ef0, 0x00107ef0, 0x00107ef7, 0x00107ef0,
+       0x00107ef0, 0x00107ef0, 0x00107ef0, 0x00107ef0,
+       0x00107ef0, 0x00107ef0, 0x00107ef0, 0x00107ef0,
+       0x00107ef7, 0x00107ef7, 0x00107ef0, 0x00107ef0,
+       0x00107ef0, 0x00107ef0, 0x00107ef0, 0x00107ef0,
+       0x00107ef0, 0x00107ef0, 0x00107ef0, 0x00107ef7,
+       0x00107ef0, 0x00107ef0, 0x00107ef7, 0x00107ef7,
+       0x00107ef0, 0x00107ef7, 0x00107ef7, 0x00107ef0,
+       0x00107ef0, 0x00107ef0, 0x00107ef0, 0x00107ef7,
+       0x00107ef0, 0x00107ef0, 0x00107ef0, 0x00107ef7,
+       0x00107ef0, 0x00107ef0, 0x00107ef0, 0x00107ef7,
+       0x00107ef0, 0x00107ef0, 0x00107ef0, 0x00107ef7,
+       0x0201f800, 0x001005d8, 0x4a026203, 0x00000001,
+       0x493a6403, 0x0201f000, 0x0010672b, 0x4933c857,
+       0x4a026203, 0x00000001, 0x493a6403, 0x0201f000,
+       0x0010672b, 0x4933c857, 0x59300403, 0x82003480,
+       0x00000056, 0x02021800, 0x001005d8, 0x83383580,
+       0x00000013, 0x04000093, 0x83383580, 0x00000027,
+       0x0402004b, 0x0201f800, 0x00106bbf, 0x0201f800,
+       0x00109134, 0x0400000b, 0x0201f800, 0x0010914e,
+       0x04000041, 0x59300403, 0x82000d80, 0x00000022,
+       0x04020038, 0x0401fc61, 0x0400003a, 0x0401f03a,
+       0x0201f800, 0x00102074, 0x42000800, 0x00000007,
+       0x0201f800, 0x00104571, 0x0401f8fe, 0x4d440000,
+       0x59368c03, 0x83440580, 0x000007fe, 0x04020008,
+       0x59a81026, 0x84081540, 0x0201f800, 0x0010513b,
+       0x04020002, 0x8408154a, 0x480b5026, 0x42028000,
+       0x00000029, 0x4d3c0000, 0x417a7800, 0x0201f800,
+       0x0010203c, 0x5c027800, 0x836c0580, 0x00000003,
+       0x0400000c, 0x59326809, 0x59340008, 0x800001c0,
+       0x04020008, 0x59368c03, 0x4933c857, 0x4937c857,
+       0x4947c857, 0x0201f800, 0x001045fb, 0x0401f00c,
+       0x42000000, 0x0010b864, 0x0201f800, 0x0010aa47,
+       0x42003000, 0x00000015, 0x41782800, 0x42002000,
+       0x00000003, 0x0201f800, 0x0010985e, 0x5c028800,
+       0x0201f800, 0x00109326, 0x0201f000, 0x0002077d,
+       0x1c01f000, 0x0401f8cb, 0x0401f7fa, 0x83380580,
+       0x00000014, 0x0400000b, 0x0201f800, 0x00106f60,
+       0x02020000, 0x00107974, 0x59300203, 0x82000580,
+       0x00000002, 0x040000ed, 0x0201f800, 0x001005d8,
+       0x0201f800, 0x00106bbf, 0x4d3c0000, 0x417a7800,
+       0x0201f800, 0x0010203c, 0x5c027800, 0x42003000,
+       0x00000016, 0x41782800, 0x4d400000, 0x4d440000,
+       0x59368c03, 0x42002000, 0x00000009, 0x42028000,
+       0x00000029, 0x0201f800, 0x0010985e, 0x5c028800,
+       0x5c028000, 0x42000000, 0x0010b864, 0x0201f800,
+       0x0010aa47, 0x0201f800, 0x00109134, 0x0402000c,
+       0x0201f800, 0x00102074, 0x0401f89e, 0x59340c03,
+       0x82040580, 0x000007fe, 0x040207ca, 0x59a80826,
+       0x84040d40, 0x48075026, 0x0401f7c6, 0x0201f800,
+       0x0010914e, 0x04020003, 0x0401f892, 0x0401f7c1,
+       0x59300403, 0x82000d80, 0x00000032, 0x04020004,
+       0x0201f800, 0x0010230c, 0x0401f7ba, 0x59300403,
+       0x82000d80, 0x00000022, 0x04000886, 0x0401f7b5,
+       0x4803c857, 0x0c01f001, 0x00108016, 0x00108016,
+       0x00108016, 0x00108016, 0x00108016, 0x00108016,
+       0x00107ff0, 0x00107ff0, 0x00107ff0, 0x00107ff0,
+       0x00107ff0, 0x00107ff0, 0x00107ff0, 0x00107ff0,
+       0x00107ff0, 0x00107ff0, 0x00107ff0, 0x00107ff0,
+       0x00107ff0, 0x00107ff0, 0x00107ff0, 0x00107ff0,
+       0x00107ff0, 0x00107ff0, 0x00107ff0, 0x00107ff0,
+       0x00107ff0, 0x00107ff0, 0x00107ff0, 0x00107ff0,
+       0x00107ff9, 0x00108016, 0x00107ff0, 0x00108016,
+       0x00108016, 0x00107ff0, 0x00107ff0, 0x00107ff0,
+       0x00107ff0, 0x00107ff0, 0x00108016, 0x00108016,
+       0x00107ff0, 0x00107ff0, 0x00107ff0, 0x00107ff0,
+       0x00107ff0, 0x00107ff0, 0x00107ff0, 0x00107ff0,
+       0x00108007, 0x00108016, 0x00107ff0, 0x00108000,
+       0x00107ff0, 0x00107ff0, 0x00107ff0, 0x00108000,
+       0x00107ff0, 0x00107ff0, 0x00107ff0, 0x00108016,
+       0x00108003, 0x00107ff0, 0x00107ff2, 0x00108016,
+       0x00107ff0, 0x00108016, 0x00108016, 0x00107ff0,
+       0x00107ff0, 0x00107ff0, 0x00107ff0, 0x00108016,
+       0x00107ff0, 0x00107ff0, 0x00107ff0, 0x00108016,
+       0x00107ff0, 0x00107ff0, 0x00107ff0, 0x00108016,
+       0x00107ff0, 0x00107ff0, 0x00107ff0, 0x00108016,
+       0x0201f800, 0x001005d8, 0x4d2c0000, 0x59325808,
+       0x0201f800, 0x000202da, 0x5c025800, 0x0201f000,
+       0x0002077d, 0x4a026203, 0x00000005, 0x59a80039,
+       0x48026205, 0x59a80037, 0x48026206, 0x1c01f000,
+       0x5930081e, 0x49780a05, 0x0401f014, 0x0201f800,
+       0x00109326, 0x0201f000, 0x0002077d, 0x0201f800,
+       0x0010230c, 0x0201f800, 0x00106c55, 0x04000005,
+       0x0201f800, 0x00106bbf, 0x0201f000, 0x0002077d,
+       0x0201f800, 0x00106bbf, 0x0201f800, 0x0002077d,
+       0x0201f000, 0x00106c4b, 0x4933c857, 0x4a026203,
+       0x00000002, 0x59a80037, 0x48026206, 0x1c01f000,
+       0x4933c857, 0x0201f800, 0x00109037, 0x0400002a,
+       0x4d2c0000, 0x0201f800, 0x00109597, 0x0402000a,
+       0x4d400000, 0x42028000, 0x00000031, 0x42000800,
+       0x00000004, 0x0201f800, 0x0010943b, 0x5c028000,
+       0x0401f01c, 0x59300c06, 0x82040580, 0x00000010,
+       0x04000004, 0x82040580, 0x00000011, 0x0402000a,
+       0x4a025a06, 0x00000031, 0x4a02580d, 0x00000004,
+       0x4a02580e, 0x000000ff, 0x0201f800, 0x000202da,
+       0x0401f00c, 0x592c0404, 0x8c00051e, 0x04000009,
+       0x4a025a04, 0x00000103, 0x4a025805, 0x01000000,
+       0x5931d821, 0x58ef400b, 0x58ec0009, 0x0801f800,
+       0x5c025800, 0x1c01f000, 0x4933c857, 0x59340400,
+       0x82000500, 0x000000ff, 0x82003480, 0x0000000c,
+       0x02021800, 0x001005d8, 0x59303403, 0x82180d80,
+       0x0000004d, 0x02000000, 0x0010938b, 0x82180d80,
+       0x00000033, 0x02000000, 0x00109349, 0x82180d80,
+       0x00000028, 0x02000000, 0x0010918f, 0x82180d80,
+       0x00000029, 0x02000000, 0x001091a3, 0x82180d80,
+       0x0000001f, 0x02000000, 0x00107b28, 0x82180d80,
+       0x00000055, 0x02000000, 0x00107b01, 0x82180d80,
+       0x00000000, 0x04000591, 0x82180d80, 0x00000022,
+       0x02000000, 0x00107b55, 0x82180d80, 0x00000035,
+       0x02000000, 0x00107c50, 0x82180d80, 0x00000039,
+       0x04000539, 0x82180d80, 0x0000003d, 0x02000000,
+       0x00107b85, 0x82180d80, 0x00000044, 0x02000000,
+       0x00107bc2, 0x82180d80, 0x00000049, 0x02000000,
+       0x00107c17, 0x82180d80, 0x00000041, 0x02000000,
+       0x00107c03, 0x82180d80, 0x00000043, 0x02000000,
+       0x001094dc, 0x82180d80, 0x00000051, 0x02000000,
+       0x00109542, 0x82180d80, 0x00000004, 0x04020003,
+       0x42000000, 0x00000001, 0x83380d80, 0x00000015,
+       0x04000006, 0x83380d80, 0x00000016, 0x02020000,
+       0x00107974, 0x0401f20f, 0x4d2c0000, 0x4d3c0000,
+       0x0c01f804, 0x5c027800, 0x5c025800, 0x1c01f000,
+       0x001080b8, 0x001080bc, 0x001080b8, 0x00108131,
+       0x001080b8, 0x00108226, 0x001082bf, 0x001080b8,
+       0x001080b8, 0x00108288, 0x001080b8, 0x0010829a,
+       0x4933c857, 0x497a6007, 0x59300808, 0x58040000,
+       0x4a000a04, 0x00000103, 0x0201f000, 0x0002077d,
+       0x4933c857, 0x40000000, 0x40000000, 0x1c01f000,
+       0x4933c857, 0x59a80016, 0x82000580, 0x00000074,
+       0x0402005c, 0x0201f800, 0x0010a2c8, 0x04020016,
+       0x0401f85c, 0x0201f800, 0x00109037, 0x0400000c,
+       0x0201f800, 0x00109597, 0x04020009, 0x41780800,
+       0x4d400000, 0x42028000, 0x00000000, 0x0201f800,
+       0x0010943b, 0x5c028000, 0x0401f003, 0x0201f800,
+       0x00102074, 0x0201f800, 0x001048c1, 0x0201f000,
+       0x0002077d, 0x0201f800, 0x00109037, 0x04000007,
+       0x0201f800, 0x00109597, 0x04020004, 0x0401ff3d,
+       0x0201f000, 0x0002077d, 0x417a7800, 0x0201f800,
+       0x0010203c, 0x42000000, 0x0010b864, 0x0201f800,
+       0x0010aa47, 0x59340200, 0x84000558, 0x48026a00,
+       0x42003000, 0x00000003, 0x0201f800, 0x0010a942,
+       0x4d300000, 0x0201f800, 0x0002075a, 0x02000800,
+       0x001005d8, 0x49366009, 0x497a6008, 0x4a026406,
+       0x00000001, 0x4a026403, 0x00000001, 0x0201f800,
+       0x00103b25, 0x04000011, 0x4a026406, 0x00000004,
+       0x4a026203, 0x00000007, 0x4a026420, 0x00000001,
+       0x42003000, 0x00000001, 0x4d400000, 0x42028000,
+       0x00000029, 0x41782800, 0x0201f800, 0x0010a43e,
+       0x5c028000, 0x0401f009, 0x42000800, 0x0000000b,
+       0x0201f800, 0x00104571, 0x4a026203, 0x00000001,
+       0x0201f800, 0x0010672b, 0x5c026000, 0x0401ff05,
+       0x0201f800, 0x00102074, 0x0201f000, 0x0002077d,
+       0x0401ff00, 0x42000000, 0x00000001, 0x0401f0c7,
+       0x4933c857, 0x59340200, 0x8c000500, 0x0400000d,
+       0x4d3c0000, 0x417a7800, 0x0201f800, 0x00104567,
+       0x5c027800, 0x0201f800, 0x00103b25, 0x04000005,
+       0x42000800, 0x00000006, 0x0201f800, 0x00104571,
+       0x1c01f000, 0x4933c857, 0x59a80816, 0x82040580,
+       0x00000074, 0x0400000e, 0x4807c857, 0x82040580,
+       0x00000100, 0x040200a0, 0x59cc0408, 0x4803c857,
+       0x8c000500, 0x0400009c, 0x59341403, 0x82080580,
+       0x000007fe, 0x04000006, 0x0401f097, 0x59341403,
+       0x82080580, 0x000007fe, 0x04020003, 0x0401fa9c,
+       0x0401f04c, 0x0201f800, 0x0010462a, 0x59341403,
+       0x82080580, 0x000007fc, 0x0402001f, 0x4a026802,
+       0x00fffffc, 0x0201f800, 0x00109037, 0x04000012,
+       0x0201f800, 0x00109597, 0x0402000f, 0x0401f8a9,
+       0x41780800, 0x4d400000, 0x42028000, 0x00000000,
+       0x0201f800, 0x0010943b, 0x5c028000, 0x42000800,
+       0x00000004, 0x0201f800, 0x00104571, 0x0201f000,
+       0x0002077d, 0x42000800, 0x00000004, 0x0201f800,
+       0x00104571, 0x0201f800, 0x00102074, 0x0201f000,
+       0x0002077d, 0x59a80005, 0x8c000514, 0x04000011,
+       0x0201f800, 0x0010513b, 0x42001000, 0x00000010,
+       0x04020009, 0x59340002, 0x82000500, 0x00ff0000,
+       0x82000580, 0x00ff0000, 0x04000006, 0x42001000,
+       0x00000008, 0x0201f800, 0x00104c6d, 0x0402005a,
+       0x0201f800, 0x00109037, 0x0400005b, 0x0201f800,
+       0x00109597, 0x04020005, 0x592c0404, 0x8c00051c,
+       0x040207c9, 0x0401f877, 0x42000800, 0x00000005,
+       0x0201f800, 0x00104571, 0x4a026203, 0x00000001,
+       0x4a026403, 0x00000003, 0x0201f000, 0x0010672b,
+       0x59cc0408, 0x8c000518, 0x04000010, 0x0201f800,
+       0x001092e5, 0x0201f800, 0x0010513b, 0x04000004,
+       0x59cc0408, 0x8c000516, 0x040207b3, 0x59a80026,
+       0x8400054a, 0x48035026, 0x59a80010, 0x84000570,
+       0x48038832, 0x0401f7ac, 0x42001000, 0x000000ef,
+       0x480b5010, 0x497b8830, 0x84081570, 0x480b8832,
+       0x59c40802, 0x84040d4c, 0x48078802, 0x0201f800,
+       0x0010930f, 0x59a80026, 0x84000548, 0x48035026,
+       0x0201f800, 0x0010a3da, 0x0402079b, 0x59a80026,
+       0x8400054c, 0x48035026, 0x42000800, 0x00000006,
+       0x0201f800, 0x00104571, 0x417a7800, 0x0201f800,
+       0x00104567, 0x42000000, 0x000000e8, 0x0201f800,
+       0x00105c9a, 0x02000800, 0x001045a6, 0x02020800,
+       0x001005d8, 0x49366009, 0x59340200, 0x8400051a,
+       0x48026a00, 0x42000800, 0x00000003, 0x0201f800,
+       0x00104571, 0x4a026406, 0x00000001, 0x4a026203,
+       0x00000001, 0x4a026403, 0x00000002, 0x0201f000,
+       0x0010672b, 0x0401fe43, 0x42000000, 0x00000001,
+       0x0401f00a, 0x599c0017, 0x8c00050a, 0x040007ab,
+       0x42000800, 0x00000004, 0x0201f800, 0x00104571,
+       0x0201f000, 0x0002077d, 0x4933c857, 0x80003540,
+       0x04000005, 0x42000800, 0x00000007, 0x0201f800,
+       0x00104571, 0x801831c0, 0x0402000e, 0x59302008,
+       0x801021c0, 0x04000004, 0x58100404, 0x8c00051e,
+       0x04020008, 0x59341c03, 0x42002000, 0x00000004,
+       0x42003000, 0x00000012, 0x0201f800, 0x00103aae,
+       0x0201f800, 0x00102074, 0x0201f000, 0x0002077d,
+       0x4c5c0000, 0x4d2c0000, 0x59325808, 0x0201f800,
+       0x00105755, 0x5c025800, 0x59cc0008, 0x48002805,
+       0x59cc0009, 0x48002806, 0x49782807, 0x49782808,
+       0x49782809, 0x4978280a, 0x59cc0013, 0x8c00053e,
+       0x04000009, 0x59cc0414, 0x900001c0, 0x59ccbc15,
+       0x805c0540, 0x48002807, 0x59cc0416, 0x900001c0,
+       0x48002808, 0x59cc0017, 0x8c00053e, 0x04000009,
+       0x59cc0418, 0x900001c0, 0x59ccbc19, 0x805c0540,
+       0x48002809, 0x59cc041a, 0x900001c0, 0x4800280a,
+       0x5c00b800, 0x1c01f000, 0x4933c857, 0x59a80016,
+       0x82000580, 0x00000014, 0x04020048, 0x59a80005,
+       0x8c000514, 0x04000015, 0x0201f800, 0x0010513b,
+       0x42001000, 0x00000010, 0x04020009, 0x59340002,
+       0x82000500, 0x00ff0000, 0x82000580, 0x00ff0000,
+       0x0400000a, 0x42001000, 0x00000008, 0x0201f800,
+       0x00104c6d, 0x04000005, 0x59a80005, 0x84000556,
+       0x48035005, 0x0401f031, 0x836c0580, 0x00000003,
+       0x0402000b, 0x59300008, 0x80000540, 0x04020008,
+       0x59341c03, 0x42002000, 0x00000006, 0x42003000,
+       0x00000013, 0x0201f800, 0x00103aae, 0x0201f800,
+       0x0010468d, 0x0401fecf, 0x0401fa1d, 0x0402001f,
+       0x59340404, 0x80000540, 0x0400001c, 0x42000800,
+       0x00000006, 0x0201f800, 0x00104571, 0x0201f800,
+       0x00109037, 0x04000011, 0x0201f800, 0x00109597,
+       0x0402000a, 0x41780800, 0x4d400000, 0x42028000,
+       0x00000000, 0x0201f800, 0x0010943b, 0x5c028000,
+       0x0201f000, 0x0002077d, 0x4a025a04, 0x00000103,
+       0x4a025805, 0x02000000, 0x0201f800, 0x00102074,
+       0x0201f000, 0x0002077d, 0x0201f800, 0x00104c19,
+       0x0201f800, 0x00109037, 0x04000007, 0x0201f800,
+       0x00109597, 0x04020004, 0x0401fda2, 0x0201f000,
+       0x0002077d, 0x0401fd9f, 0x80000580, 0x59a80005,
+       0x8c000516, 0x04000005, 0x84000516, 0x48035005,
+       0x82000540, 0x00000001, 0x0401ff60, 0x1c01f000,
+       0x4933c857, 0x59a80016, 0x82000580, 0x00000014,
+       0x0402000b, 0x42000800, 0x0000000b, 0x0201f800,
+       0x00104571, 0x4a026203, 0x00000001, 0x4a026403,
+       0x00000001, 0x0201f000, 0x0010672b, 0x42000000,
+       0x00000001, 0x0401f74d, 0x4933c857, 0x40003000,
+       0x59a80016, 0x82000580, 0x00000004, 0x0402000a,
+       0x82183580, 0x0000000b, 0x04020005, 0x42000800,
+       0x00000007, 0x0201f800, 0x00104571, 0x0201f000,
+       0x0002077d, 0x42000000, 0x00000001, 0x0401f73b,
+       0x4803c857, 0x4d2c0000, 0x4d3c0000, 0x0c01f804,
+       0x5c027800, 0x5c025800, 0x1c01f000, 0x001080b8,
+       0x001082ce, 0x001080b8, 0x00108323, 0x001080b8,
+       0x00108391, 0x001082bf, 0x001080b8, 0x001080b8,
+       0x001083b1, 0x001080b8, 0x001083c1, 0x4933c857,
+       0x4d1c0000, 0x59301403, 0x82080580, 0x00000003,
+       0x04000008, 0x82081580, 0x0000001e, 0x04020003,
+       0x0201f800, 0x0002077d, 0x5c023800, 0x1c01f000,
+       0x0401ff5a, 0x0401f7fd, 0x4933c857, 0x0201f800,
+       0x00109037, 0x0400000b, 0x0201f800, 0x00109597,
+       0x04020008, 0x4200b000, 0x00000002, 0x0201f800,
+       0x0010957d, 0x0401fd43, 0x0201f000, 0x0002077d,
+       0x0401f8f5, 0x04020030, 0x417a7800, 0x0201f800,
+       0x00104567, 0x417a7800, 0x0201f800, 0x0010203c,
+       0x42000000, 0x0010b864, 0x0201f800, 0x0010aa47,
+       0x59340200, 0x84000558, 0x48026a00, 0x4a026403,
+       0x00000002, 0x42003000, 0x00000003, 0x0201f800,
+       0x0010a942, 0x0201f800, 0x00103b25, 0x04000011,
+       0x4d400000, 0x41782800, 0x42003000, 0x00000005,
+       0x42028000, 0x00000029, 0x0201f800, 0x0010a43e,
+       0x5c028000, 0x4a026203, 0x00000007, 0x4a026406,
+       0x00000004, 0x4a026420, 0x00000001, 0x1c01f000,
+       0x42000800, 0x00000003, 0x0201f800, 0x00104571,
+       0x4a026203, 0x00000001, 0x0201f800, 0x0010672b,
+       0x0401f7f7, 0x59cc0407, 0x82000580, 0x00000009,
+       0x0402000a, 0x59340412, 0x82000500, 0x000000ff,
+       0x0400000c, 0x80000040, 0x48026c12, 0x4a026206,
+       0x0000000a, 0x0401f7ea, 0x59cc0207, 0x82000500,
+       0x0000ff00, 0x82000580, 0x00001900, 0x040007c2,
+       0x0401fcfc, 0x80000580, 0x0401f6c4, 0x4933c857,
+       0x59a80032, 0x80000540, 0x04000015, 0x59340403,
+       0x82000580, 0x000007fe, 0x04020011, 0x59a80010,
+       0x80000000, 0x48035010, 0x417a7800, 0x0201f800,
+       0x00104567, 0x42000800, 0x00000003, 0x0201f800,
+       0x00104571, 0x4a026203, 0x00000001, 0x4a026403,
+       0x00000002, 0x0201f000, 0x0010672b, 0x0201f800,
+       0x00109037, 0x04000011, 0x0201f800, 0x00109597,
+       0x0402000e, 0x4c580000, 0x4200b000, 0x00000002,
+       0x0201f800, 0x0010957d, 0x5c00b000, 0x0401fcd5,
+       0x42000800, 0x00000007, 0x0201f800, 0x00104571,
+       0x0201f000, 0x0002077d, 0x0401fcce, 0x59cc3407,
+       0x82183500, 0x000000ff, 0x82180580, 0x00000005,
+       0x0400001c, 0x82180580, 0x0000000b, 0x04000016,
+       0x59cc0207, 0x82000500, 0x0000ff00, 0x04020004,
+       0x82180580, 0x00000009, 0x04000012, 0x82000580,
+       0x00001900, 0x0402000c, 0x82180580, 0x00000009,
+       0x0400000c, 0x42000800, 0x00000004, 0x0201f800,
+       0x00104571, 0x0201f800, 0x00102074, 0x0201f000,
+       0x0002077d, 0x42000000, 0x00000001, 0x0401f677,
+       0x0201f800, 0x00109037, 0x59325808, 0x04000008,
+       0x592c0204, 0x82000580, 0x00000139, 0x040007f6,
+       0x592c0404, 0x8c00051e, 0x040207f3, 0x59340403,
+       0x82000580, 0x000007fe, 0x04020007, 0x59a80026,
+       0x84000540, 0x48035026, 0x0201f800, 0x00104229,
+       0x0401f7e9, 0x417a7800, 0x0201f800, 0x0010203c,
+       0x42003000, 0x00000005, 0x0201f800, 0x0010a942,
+       0x42000000, 0x0010b864, 0x0201f800, 0x0010aa47,
+       0x0401f7dd, 0x4933c857, 0x0401f84d, 0x0402000b,
+       0x42000800, 0x00000005, 0x0201f800, 0x00104571,
+       0x4a026203, 0x00000001, 0x4a026403, 0x00000003,
+       0x0201f000, 0x0010672b, 0x42000800, 0x00000004,
+       0x0201f800, 0x00104571, 0x0201f800, 0x00109597,
+       0x0402000a, 0x4c580000, 0x4200b000, 0x00000002,
+       0x0201f800, 0x0010957d, 0x5c00b000, 0x0401fc71,
+       0x0201f000, 0x0002077d, 0x0401fc6e, 0x80000580,
+       0x0401f636, 0x4933c857, 0x0401f82d, 0x0402000b,
+       0x42000800, 0x00000009, 0x0201f800, 0x00104571,
+       0x4a026203, 0x00000001, 0x4a026403, 0x00000005,
+       0x0201f000, 0x0010672b, 0x42000000, 0x00000001,
+       0x0401f626, 0x4933c857, 0x0401f81d, 0x0402000b,
+       0x42000800, 0x0000000b, 0x0201f800, 0x00104571,
+       0x4a026203, 0x00000001, 0x4a026403, 0x00000001,
+       0x0201f000, 0x0010672b, 0x42000000, 0x00000001,
+       0x0401f616, 0x4933c857, 0x59cc0407, 0x82000580,
+       0x00000003, 0x04020009, 0x59cc0207, 0x82000500,
+       0x0000ff00, 0x82000d80, 0x00002a00, 0x04000003,
+       0x82000d80, 0x00001e00, 0x1c01f000, 0x4933c857,
+       0x82000540, 0x00000001, 0x1c01f000, 0x4933c857,
+       0x4d400000, 0x4c580000, 0x59a80026, 0x82000540,
+       0x00000003, 0x48035026, 0x0401f85c, 0x04000038,
+       0x4d340000, 0x4d440000, 0x59a80026, 0x84000552,
+       0x48035026, 0x0201f800, 0x00103b25, 0x0400000c,
+       0x42028000, 0x0000002a, 0x42028800, 0x0000ffff,
+       0x42003000, 0x00000002, 0x0201f800, 0x0010a446,
+       0x59a80805, 0x84040d44, 0x48075005, 0x42028000,
+       0x0000002a, 0x4d3c0000, 0x42027800, 0x00000204,
+       0x0201f800, 0x00101fe5, 0x5c027800, 0x42000000,
+       0x0010b864, 0x0201f800, 0x0010aa47, 0x0201f800,
+       0x00101e45, 0x4200b000, 0x00000010, 0x42028800,
+       0x000007f0, 0x4d2c0000, 0x83440580, 0x000007fe,
+       0x04000003, 0x0201f800, 0x001045fb, 0x81468800,
+       0x8058b040, 0x040207f9, 0x5c025800, 0x59cc0408,
+       0x8c00051e, 0x04000004, 0x59a80026, 0x84000512,
+       0x48035026, 0x5c028800, 0x5c026800, 0x0201f800,
+       0x0010462a, 0x4a026802, 0x00fffffe, 0x59a80826,
+       0x84040d50, 0x59cc0013, 0x8c00053e, 0x04000003,
+       0x8c000536, 0x04000004, 0x59cc0017, 0x8c000536,
+       0x04020002, 0x84040d10, 0x48075026, 0x59cc0800,
+       0x82040d00, 0x00ffffff, 0x48075010, 0x80040110,
+       0x4803501d, 0x48038881, 0x0201f800, 0x0010513b,
+       0x04000007, 0x59cc0009, 0x48035035, 0x59cc000a,
+       0x48035036, 0x0201f800, 0x001092e5, 0x5c00b000,
+       0x5c028000, 0x1c01f000, 0x4933c857, 0x4c580000,
+       0x59a80010, 0x82000500, 0x00ffff00, 0x04000022,
+       0x59cc1000, 0x82081500, 0x00ffff00, 0x80080580,
+       0x04000004, 0x42000000, 0x0010b83b, 0x0401f016,
+       0x83cc1400, 0x0000000b, 0x4200b000, 0x00000002,
+       0x83341c00, 0x00000006, 0x0401f900, 0x04000004,
+       0x42000000, 0x0010b83c, 0x0401f00b, 0x83cc1400,
+       0x0000000d, 0x4200b000, 0x00000002, 0x83341c00,
+       0x00000008, 0x0401f8f5, 0x04000007, 0x42000000,
+       0x0010b83d, 0x0201f800, 0x0010aa47, 0x82000540,
+       0x00000001, 0x5c00b000, 0x1c01f000, 0x4933c857,
+       0x59cc0206, 0x82000580, 0x00000014, 0x04020016,
+       0x59cc0407, 0x82000580, 0x00000800, 0x04020012,
+       0x59cc0207, 0x8c00051a, 0x0400000d, 0x82000500,
+       0x00000f00, 0x82000580, 0x00000100, 0x04020008,
+       0x59cc020a, 0x8c000508, 0x04020003, 0x8c00050a,
+       0x04000003, 0x80000580, 0x1c01f000, 0x82000540,
+       0x00000001, 0x1c01f000, 0x4933c857, 0x4943c857,
+       0x493fc857, 0x4c5c0000, 0x4d300000, 0x4d340000,
+       0x4d2c0000, 0x4d380000, 0x4130b800, 0x42026000,
+       0x0010d1c0, 0x59a8000e, 0x81640480, 0x040210bd,
+       0x8d3e7d12, 0x04000004, 0x405c0000, 0x81300580,
+       0x040000b3, 0x59300406, 0x82000c80, 0x00000012,
+       0x04021015, 0x59326809, 0x0c01f001, 0x0010854f,
+       0x001084bc, 0x001084d3, 0x001084de, 0x001084b7,
+       0x001084ce, 0x00108507, 0x0010854f, 0x001084b5,
+       0x0010851b, 0x0010852a, 0x001084b5, 0x001084b5,
+       0x001084b5, 0x001084b5, 0x0010854f, 0x00108540,
+       0x00108538, 0x0201f800, 0x001005d8, 0x8d3e7d18,
+       0x04000004, 0x59300420, 0x8c000500, 0x04020094,
+       0x59300403, 0x82000580, 0x00000043, 0x04000090,
+       0x0201f800, 0x00109134, 0x02000800, 0x00102074,
+       0x0201f800, 0x0010914e, 0x02000800, 0x0010801c,
+       0x8d3e7d06, 0x04000084, 0x0201f800, 0x001092d7,
+       0x04000083, 0x0401f080, 0x8d3e7d16, 0x04000004,
+       0x59300420, 0x8c000500, 0x0402007d, 0x59325808,
+       0x0201f800, 0x00109037, 0x04000077, 0x49425a06,
+       0x497a5c09, 0x0201f800, 0x000202da, 0x0201f800,
+       0x0010912a, 0x0401f070, 0x813669c0, 0x02000800,
+       0x001005d8, 0x8d3e7d06, 0x04000004, 0x59340200,
+       0x8c00050e, 0x0402006a, 0x59300004, 0x8400055c,
+       0x48026004, 0x59300203, 0x82000580, 0x00000004,
+       0x02000800, 0x00100e99, 0x59325808, 0x0201f800,
+       0x00109037, 0x0400005c, 0x4a025a04, 0x00000103,
+       0x59300402, 0x48025c06, 0x592c0408, 0x8c000512,
+       0x04000006, 0x4d2c0000, 0x592e5809, 0x0201f800,
+       0x001007fd, 0x5c025800, 0x49425a06, 0x497a5c09,
+       0x0201f800, 0x0010959c, 0x0201f800, 0x000202da,
+       0x0201f800, 0x0010912a, 0x0401f047, 0x8c000518,
+       0x04000047, 0x59300203, 0x82000580, 0x00000004,
+       0x02000800, 0x00100e99, 0x59325808, 0x0201f800,
+       0x00109037, 0x0400003c, 0x49425a06, 0x497a5c09,
+       0x0201f800, 0x0010a693, 0x0201f800, 0x0010959c,
+       0x0201f800, 0x000202da, 0x0401f033, 0x0201f800,
+       0x001062d5, 0x04000032, 0x59300203, 0x82000580,
+       0x00000004, 0x04020004, 0x0201f800, 0x00100e99,
+       0x0401f02b, 0x42027000, 0x00000047, 0x0201f800,
+       0x000207a1, 0x0401f026, 0x59300203, 0x82000580,
+       0x00000004, 0x02000800, 0x00100e99, 0x59325808,
+       0x0201f800, 0x00109037, 0x0400001b, 0x49425a06,
+       0x497a5c09, 0x0201f800, 0x000202da, 0x0401f016,
+       0x833c0500, 0x00001800, 0x04000015, 0x8d3e7d16,
+       0x04020013, 0x59325817, 0x0201f800, 0x001007fd,
+       0x59300203, 0x82000580, 0x00000004, 0x02000800,
+       0x00100e99, 0x59325808, 0x0201f800, 0x00109037,
+       0x04000005, 0x49425a06, 0x497a5c09, 0x0201f800,
+       0x000202da, 0x0201f800, 0x00107911, 0x83326400,
+       0x00000024, 0x41580000, 0x81300480, 0x04001742,
+       0x5c027000, 0x5c025800, 0x5c026800, 0x5c026000,
+       0x5c00b800, 0x1c01f000, 0x5c000000, 0x4c000000,
+       0x4803c857, 0x480bc857, 0x480fc857, 0x485bc857,
+       0x50080800, 0x500c0000, 0x80042580, 0x04020007,
+       0x80081000, 0x800c1800, 0x8058b040, 0x040207f9,
+       0x80000580, 0x1c01f000, 0x4803c857, 0x4807c857,
+       0x480bc857, 0x480fc857, 0x80040480, 0x04001006,
+       0x42000000, 0x00000001, 0x82040d40, 0x00000001,
+       0x1c01f000, 0x41780000, 0x0401f7fc, 0x83380480,
+       0x00000053, 0x02021800, 0x001005d8, 0x83380480,
+       0x0000004b, 0x02001800, 0x001005d8, 0x0c01f001,
+       0x0010858a, 0x0010858a, 0x0010858a, 0x0010858a,
+       0x00108588, 0x00108588, 0x00108588, 0x0010858a,
+       0x0201f800, 0x001005d8, 0x493bc857, 0x4a026203,
+       0x0000000d, 0x493a6403, 0x42000800, 0x80000000,
+       0x0201f000, 0x00020721, 0x83380580, 0x00000013,
+       0x04020008, 0x59300403, 0x82000580, 0x00000050,
+       0x02020800, 0x001005d8, 0x0201f000, 0x0002077d,
+       0x4933c857, 0x83380580, 0x00000027, 0x04020030,
+       0x4933c857, 0x0201f800, 0x00106bbf, 0x4d3c0000,
+       0x417a7800, 0x0201f800, 0x0010203c, 0x5c027800,
+       0x42000000, 0x0010b864, 0x0201f800, 0x0010aa47,
+       0x4d2c0000, 0x59325808, 0x0201f800, 0x00109037,
+       0x492fc857, 0x0400000d, 0x4a025a04, 0x00000103,
+       0x59300c02, 0x48065c06, 0x4a025a06, 0x00000029,
+       0x497a5c09, 0x592c0c08, 0x84040d50, 0x48065c08,
+       0x0201f800, 0x000202da, 0x5c025800, 0x42003000,
+       0x00000015, 0x41782800, 0x42002000, 0x00000003,
+       0x4d400000, 0x4d440000, 0x59368c03, 0x42028000,
+       0x00000029, 0x0201f800, 0x0010985e, 0x5c028800,
+       0x5c028000, 0x0201f000, 0x0002077d, 0x83380580,
+       0x00000014, 0x0402000c, 0x59300403, 0x82000c80,
+       0x00000053, 0x02021800, 0x001005d8, 0x82000480,
+       0x00000040, 0x02001800, 0x001005d8, 0x4803c857,
+       0x0c01f00e, 0x83380580, 0x00000053, 0x0400000a,
+       0x83380580, 0x00000048, 0x02020800, 0x001005d8,
+       0x59300403, 0x82000580, 0x00000050, 0x02020800,
+       0x001005d8, 0x1c01f000, 0x001085ff, 0x001085fd,
+       0x001085fd, 0x001085fd, 0x001085fd, 0x001085fd,
+       0x001085fd, 0x001085fd, 0x001085fd, 0x001085fd,
+       0x001085fd, 0x00108616, 0x00108616, 0x00108616,
+       0x00108616, 0x001085fd, 0x00108616, 0x001085fd,
+       0x00108616, 0x0201f800, 0x001005d8, 0x4933c857,
+       0x0201f800, 0x00106bbf, 0x0201f800, 0x00109037,
+       0x02000000, 0x0002077d, 0x4d2c0000, 0x59325808,
+       0x4a025a04, 0x00000103, 0x59300402, 0x48025c06,
+       0x4a025a06, 0x00000006, 0x497a5c09, 0x0201f800,
+       0x000202da, 0x5c025800, 0x0201f800, 0x0010912a,
+       0x0201f000, 0x0002077d, 0x4933c857, 0x0201f800,
+       0x00106bbf, 0x0201f000, 0x0002077d, 0x0201f800,
+       0x001005d8, 0x5930001c, 0x800001c0, 0x02020800,
+       0x0010984e, 0x59300004, 0x8c00053e, 0x04020029,
+       0x59325808, 0x592c0c08, 0x59cc2a08, 0x82141d00,
+       0x00000c00, 0x04000002, 0x59cc1809, 0x84040d58,
+       0x48065c08, 0x82143500, 0x00000fff, 0x04020027,
+       0x59340200, 0x8c00050e, 0x04020080, 0x0201f800,
+       0x0002082b, 0x04020006, 0x4a025a06, 0x00000000,
+       0x59300811, 0x800409c0, 0x0402094b, 0x4a025a04,
+       0x00000103, 0x48065807, 0x480e580a, 0x48165c09,
+       0x59300c02, 0x48065c06, 0x0201f800, 0x000202c1,
+       0x0201f800, 0x001049b2, 0x59cc0208, 0x8c000518,
+       0x02020000, 0x001091d1, 0x0201f000, 0x0002077d,
+       0x0201f800, 0x00106f60, 0x040007d6, 0x4d3c0000,
+       0x42027800, 0x00000002, 0x0201f800, 0x00108be3,
+       0x5c027800, 0x0401f7cf, 0x4817c857, 0x480fc857,
+       0x82180500, 0x000000ff, 0x0400000e, 0x592c0204,
+       0x82000500, 0x000000ff, 0x82000580, 0x00000048,
+       0x04020008, 0x592c0407, 0x800001c0, 0x04000005,
+       0x0201f800, 0x0010973f, 0x0201f000, 0x00109787,
+       0x82180d00, 0x00000c00, 0x04000004, 0x59340200,
+       0x8c00050e, 0x04020032, 0x4a025a06, 0x00000000,
+       0x41782000, 0x8c183510, 0x04000007, 0x59cc000c,
+       0x82000500, 0x000000ff, 0x04000002, 0x4803c857,
+       0x59cc200b, 0x4812580c, 0x41780000, 0x8c183512,
+       0x04000002, 0x59cc000a, 0x4802580b, 0x80100c00,
+       0x040007b8, 0x82041480, 0x0000001d, 0x04001006,
+       0x592c0404, 0x8c00051e, 0x0400000e, 0x42000800,
+       0x0000001c, 0x4c500000, 0x4c540000, 0x83cca400,
+       0x0000000c, 0x832cac00, 0x0000000d, 0x0201f800,
+       0x00108b9f, 0x5c00a800, 0x5c00a000, 0x0401f7a5,
+       0x59300011, 0x59301402, 0x480a5c06, 0x48025807,
+       0x480e580a, 0x48165c09, 0x0201f800, 0x00108b48,
+       0x0201f800, 0x00108b84, 0x0401f7a6, 0x592c020a,
+       0x8c000502, 0x040007cd, 0x592c0208, 0x8c00050e,
+       0x040207ca, 0x59300011, 0x800c0d80, 0x040007c7,
+       0x4803c857, 0x480fc857, 0x8c183514, 0x02000000,
+       0x0010920f, 0x80000540, 0x040007c0, 0x4807c856,
+       0x0201f000, 0x0010920f, 0x592c020a, 0x8c000502,
+       0x04000782, 0x59300011, 0x800001c0, 0x0400077f,
+       0x592c0208, 0x8c00050e, 0x0402077c, 0x0201f000,
+       0x0010920f, 0x59cc2006, 0x59cc2807, 0x0401f035,
+       0x0401f034, 0x1c01f000, 0x4933c857, 0x5930001c,
+       0x800001c0, 0x02020800, 0x0010984e, 0x59325808,
+       0x592c0c08, 0x41782800, 0x41781800, 0x84040d58,
+       0x48065c08, 0x41783000, 0x59340200, 0x8c00050e,
+       0x04020018, 0x0201f800, 0x0002082b, 0x04020007,
+       0x4a025a06, 0x00000000, 0x59300811, 0x4807c857,
+       0x800409c0, 0x040208ac, 0x4a025a04, 0x00000103,
+       0x48065807, 0x480e580a, 0x48165c09, 0x4933c857,
+       0x59300c02, 0x48065c06, 0x0201f800, 0x000202c1,
+       0x0201f800, 0x001049b2, 0x0201f000, 0x0002077d,
+       0x592c020a, 0x8c000502, 0x040007ea, 0x59300011,
+       0x4803c857, 0x800001c0, 0x040007e6, 0x592c0208,
+       0x8c00050e, 0x040207e3, 0x0201f000, 0x0010920f,
+       0x5930001c, 0x800001c0, 0x4c100000, 0x4c140000,
+       0x02020800, 0x0010984e, 0x5c002800, 0x5c002000,
+       0x4a026203, 0x00000002, 0x4a026403, 0x00000043,
+       0x59325808, 0x592c020a, 0x8c000502, 0x04020018,
+       0x40100000, 0x592c080f, 0x80040c80, 0x40140000,
+       0x80040480, 0x04001014, 0x48126013, 0x48166011,
+       0x59300004, 0x8c00053e, 0x04020008, 0x497a6205,
+       0x0201f800, 0x00100f93, 0x04020009, 0x59300804,
+       0x0201f000, 0x00106721, 0x0201f800, 0x00106f60,
+       0x040007f7, 0x0201f000, 0x00107974, 0x4933c857,
+       0x1c01f000, 0x4807c857, 0x40042800, 0x0401f7eb,
+       0x83380480, 0x00000058, 0x04021005, 0x83380480,
+       0x00000040, 0x04001002, 0x0c01f002, 0x1c01f000,
+       0x00108740, 0x00108740, 0x00108740, 0x00108740,
+       0x00108740, 0x00108740, 0x00108740, 0x00108740,
+       0x00108740, 0x00108740, 0x00108742, 0x00108740,
+       0x00108740, 0x00108740, 0x00108740, 0x0010874f,
+       0x00108740, 0x00108740, 0x00108740, 0x00108740,
+       0x0010877d, 0x00108740, 0x00108740, 0x00108740,
+       0x0201f800, 0x001005d8, 0x4933c857, 0x0201f800,
+       0x00106dc3, 0x4a026203, 0x00000002, 0x59a80039,
+       0x48026205, 0x59300011, 0x59300815, 0x80040c80,
+       0x48066015, 0x0201f000, 0x00106b8a, 0x4933c857,
+       0x0201f800, 0x00106b8a, 0x4d3c0000, 0x417a7800,
+       0x0201f800, 0x0010203c, 0x5c027800, 0x42000000,
+       0x0010b864, 0x0201f800, 0x0010aa47, 0x0201f800,
+       0x00109037, 0x04000010, 0x4d2c0000, 0x59325808,
+       0x4a025a04, 0x00000103, 0x59300402, 0x48025c06,
+       0x4a025a06, 0x00000029, 0x497a5c09, 0x592c0c08,
+       0x84040d50, 0x48065c08, 0x0201f800, 0x000202da,
+       0x5c025800, 0x42003000, 0x00000014, 0x41782800,
+       0x4d400000, 0x4d440000, 0x59368c03, 0x42002000,
+       0x00000002, 0x42028000, 0x00000029, 0x0201f800,
+       0x0010985e, 0x5c028800, 0x5c028000, 0x0201f000,
+       0x0002077d, 0x4933c857, 0x59300808, 0x49780c09,
+       0x4978080a, 0x58041408, 0x84081558, 0x48080c08,
+       0x1c01f000, 0x4807c857, 0x8c040d3e, 0x04020023,
+       0x497a5a06, 0x5930001f, 0x80000540, 0x04000017,
+       0x497a5a06, 0x4c040000, 0x4c080000, 0x4c0c0000,
+       0x4c100000, 0x4c140000, 0x58f41003, 0x40040000,
+       0x80081480, 0x5930001f, 0x4809e803, 0x0201f800,
+       0x00100d56, 0x5c002800, 0x5c002000, 0x5c001800,
+       0x5c001000, 0x5c000800, 0x592c0206, 0x80000540,
+       0x04020009, 0x0401f005, 0x592c0408, 0x8c00051c,
+       0x04000002, 0x592c0803, 0x4807c857, 0x4a025a06,
+       0x00000015, 0x1c01f000, 0x5930001f, 0x80000540,
+       0x04000009, 0x4a025a06, 0x00000011, 0x5930001f,
+       0x4c040000, 0x0201f800, 0x00100d56, 0x5c000800,
+       0x0401f7f5, 0x4807c856, 0x4a025a06, 0x00000007,
+       0x1c01f000, 0x83380480, 0x00000058, 0x04021007,
+       0x83380480, 0x00000040, 0x04001004, 0x4d2c0000,
+       0x0c01f803, 0x5c025800, 0x1c01f000, 0x001087db,
+       0x001087db, 0x001087db, 0x001087db, 0x001087db,
+       0x001087dd, 0x001087db, 0x001087db, 0x00108860,
+       0x001087db, 0x001087db, 0x001087db, 0x001087db,
+       0x001087db, 0x001087db, 0x001087db, 0x001087db,
+       0x001087db, 0x001087db, 0x00108910, 0x00108939,
+       0x00108918, 0x001087db, 0x00108945, 0x0201f800,
+       0x001005d8, 0x5930001c, 0x800001c0, 0x02020800,
+       0x0010984e, 0x59300007, 0x8c00050e, 0x0400007c,
+       0x8c000500, 0x0400006e, 0x8c00051c, 0x04000009,
+       0x84000500, 0x48026007, 0x59325808, 0x592c3c08,
+       0x841c3d58, 0x481e5c08, 0x0201f000, 0x000207dd,
+       0x59325808, 0x592c3c08, 0x841c3d58, 0x59300007,
+       0x8c00051c, 0x040207f3, 0x481e5c08, 0x42000000,
+       0x00000005, 0x40000000, 0x80000040, 0x040207fe,
+       0x59300007, 0x8c00051c, 0x040207ea, 0x59cc0a08,
+       0x592c0204, 0x82000500, 0x000000ff, 0x82000580,
+       0x00000048, 0x0402000c, 0x497a580b, 0x82040500,
+       0x000000ff, 0x04000008, 0x592c0407, 0x800001c0,
+       0x04000005, 0x0201f800, 0x0010973f, 0x0201f000,
+       0x00100e56, 0x48065c09, 0x41782000, 0x82040500,
+       0x00000c00, 0x04000002, 0x59cc2009, 0x82043500,
+       0x00000fff, 0x04020027, 0x481e5c08, 0x4a025a06,
+       0x00000000, 0x801831c0, 0x02000000, 0x00100e56,
+       0x41782000, 0x8c183510, 0x04000002, 0x59cc200b,
+       0x4812580c, 0x41780000, 0x8c183512, 0x04000002,
+       0x59cc000a, 0x4802580b, 0x80100c00, 0x02001800,
+       0x001005d8, 0x02000000, 0x00100e56, 0x82041480,
+       0x0000001d, 0x0402100c, 0x4c500000, 0x4c540000,
+       0x83cca400, 0x0000000c, 0x832cac00, 0x0000000d,
+       0x0401fb67, 0x5c00a800, 0x5c00a000, 0x0201f000,
+       0x00100e56, 0x0401fb0b, 0x0201f000, 0x00100e56,
+       0x412c7800, 0x0201f800, 0x001007e4, 0x02000800,
+       0x001005d8, 0x492c7809, 0x841c3d52, 0x481c7c08,
+       0x4a025a04, 0x00000103, 0x4812580a, 0x48065c09,
+       0x583c0404, 0x583c1005, 0x583c2208, 0x48025c04,
+       0x480a5805, 0x48125a08, 0x0401f7c8, 0x8c000524,
+       0x04000794, 0x59325808, 0x4c000000, 0x592c0408,
+       0x8c00051c, 0x5c000000, 0x04020003, 0x4a026011,
+       0xffffffff, 0x84000524, 0x0401f78a, 0x1c01f000,
+       0x59a80039, 0x48026205, 0x59325808, 0x4a026203,
+       0x00000002, 0x592c2408, 0x59300807, 0x4933c857,
+       0x4807c857, 0x592c0204, 0x82000500, 0x000000ff,
+       0x82000580, 0x00000048, 0x04020004, 0x8c102500,
+       0x02020000, 0x00109787, 0x4a025a06, 0x00000000,
+       0x8c040d1e, 0x04000027, 0x41780800, 0x497a5c09,
+       0x592c1c09, 0x59300011, 0x59341200, 0x497a6205,
+       0x8c08150e, 0x0402006e, 0x4807c857, 0x4806580a,
+       0x80000d40, 0x04020f04, 0x59300402, 0x48025c06,
+       0x48065807, 0x4a025a04, 0x00000103, 0x4c040000,
+       0x4c0c0000, 0x4c100000, 0x0201f800, 0x0010959c,
+       0x5c002000, 0x5c001800, 0x5c000800, 0x8c102512,
+       0x0402001a, 0x4c0c0000, 0x0201f800, 0x000202c1,
+       0x0201f800, 0x001049b2, 0x5c001800, 0x8c0c1d18,
+       0x02000000, 0x0002077d, 0x0201f000, 0x001091d1,
+       0x4813c857, 0x8c102518, 0x0400004b, 0x41780800,
+       0x592c1c09, 0x820c0580, 0x00001000, 0x040007d6,
+       0x8c102512, 0x040007d4, 0x592c7809, 0x583c080a,
+       0x583c1c09, 0x0401f7d0, 0x4807c857, 0x592c7809,
+       0x59300402, 0x592c1404, 0x8c08151e, 0x0402000d,
+       0x592c1206, 0x48007c06, 0x48047807, 0x48087a06,
+       0x84102512, 0x48107c08, 0x4c0c0000, 0x0201f800,
+       0x001007fd, 0x403e5800, 0x0401faca, 0x0401f7d9,
+       0x48025c06, 0x48065807, 0x583c080c, 0x583c000b,
+       0x80040c00, 0x82041480, 0x0000001d, 0x04001006,
+       0x583c1001, 0x480a5801, 0x49787801, 0x42000800,
+       0x0000001c, 0x82040c00, 0x00000014, 0x4c0c0000,
+       0x4c500000, 0x4c540000, 0x823ca400, 0x00000008,
+       0x832cac00, 0x00000008, 0x4c100000, 0x4c3c0000,
+       0x0401facb, 0x5c007800, 0x5c002000, 0x5c00a800,
+       0x5c00a000, 0x84102512, 0x48125c08, 0x403e5800,
+       0x0201f800, 0x001007fd, 0x42034000, 0x0010b4a4,
+       0x59a1d81e, 0x80edd9c0, 0x02000800, 0x001005d8,
+       0x48efc857, 0x58ec0009, 0x4803c857, 0x0801f800,
+       0x0401f7ac, 0x4933c857, 0x1c01f000, 0x59301414,
+       0x480bc857, 0x8c08151c, 0x0402000e, 0x80000540,
+       0x4803c857, 0x0400078d, 0x80042c80, 0x0402178b,
+       0x8c081514, 0x04020005, 0x592c080f, 0x4807c857,
+       0x80040480, 0x48026016, 0x8408155c, 0x480a6414,
+       0x59301007, 0x8408151e, 0x480a6007, 0x4a025c09,
+       0x00000001, 0x0201f800, 0x0010959c, 0x497a5c09,
+       0x8c102512, 0x04000006, 0x4d2c0000, 0x403e5800,
+       0x0201f800, 0x001007fd, 0x5c025800, 0x82102500,
+       0xffffedff, 0x48125c08, 0x0201f000, 0x0010920f,
+       0x59325808, 0x592c0408, 0x8c000518, 0x04000004,
+       0x412df800, 0x0201f000, 0x00100e6f, 0x1c01f000,
+       0x4933c857, 0x59325808, 0x497a5c09, 0x4a025a06,
+       0x00000000, 0x4a025a04, 0x00000103, 0x59300811,
+       0x4807c857, 0x800409c0, 0x0402000a, 0x48065807,
+       0x59300c02, 0x48065c06, 0x0201f800, 0x000202c1,
+       0x0201f800, 0x001049b2, 0x0201f000, 0x0002077d,
+       0x59340200, 0x8c00050e, 0x04020005, 0x59300811,
+       0x0401fe55, 0x48065807, 0x0401f7f2, 0x592c0208,
+       0x8c00050e, 0x040207fa, 0x4933c857, 0x0201f000,
+       0x0010920f, 0x4933c857, 0x59325808, 0x812e59c0,
+       0x02000800, 0x001005d8, 0x592c020a, 0x8c000502,
+       0x02000800, 0x001005d8, 0x4a026206, 0x00000002,
+       0x1c01f000, 0x5930001c, 0x800001c0, 0x02020800,
+       0x0010984e, 0x59300007, 0x4933c857, 0x4803c857,
+       0x8c00050e, 0x04000037, 0x8c000500, 0x04000029,
+       0x8c00051c, 0x0400000a, 0x84000500, 0x48026007,
+       0x59325808, 0x592c3c08, 0x481fc857, 0x841c3d58,
+       0x481e5c08, 0x0201f000, 0x000207dd, 0x59325808,
+       0x592c3c08, 0x841c3d58, 0x59300007, 0x8c00051c,
+       0x040207f2, 0x481e5c08, 0x42000000, 0x00000005,
+       0x40000000, 0x80000040, 0x040207fe, 0x59300007,
+       0x8c00051c, 0x040207e9, 0x592c0204, 0x82000500,
+       0x000000ff, 0x82000580, 0x00000048, 0x04020003,
+       0x497a580b, 0x0401f002, 0x497a5c09, 0x481e5c08,
+       0x4a025a06, 0x00000000, 0x0201f000, 0x00100e56,
+       0x8c000524, 0x040007d9, 0x59325808, 0x4c000000,
+       0x592c0408, 0x8c00051c, 0x5c000000, 0x04020003,
+       0x4a026011, 0xffffffff, 0x84000524, 0x0401f7cf,
+       0x1c01f000, 0x4933c857, 0x41780800, 0x83380480,
+       0x00000058, 0x0402100b, 0x83380480, 0x00000040,
+       0x04001008, 0x4d2c0000, 0x59325808, 0x812e59c0,
+       0x0c020806, 0x5c025800, 0x0201f000, 0x0002077d,
+       0x493bc857, 0x1c01f000, 0x001089ae, 0x001089ae,
+       0x001089ae, 0x001089ae, 0x001089ae, 0x001089b0,
+       0x001089ae, 0x001089ae, 0x001089ae, 0x001089ae,
+       0x001089ae, 0x001089ae, 0x001089ae, 0x001089ae,
+       0x001089ae, 0x001089ae, 0x001089ae, 0x001089ae,
+       0x001089ae, 0x001089ae, 0x001089b5, 0x001089ae,
+       0x001089ae, 0x001089ae, 0x0201f800, 0x001005d8,
+       0x59cc0a08, 0x497a5807, 0x4807c857, 0x82040d00,
+       0x00000fff, 0x59300402, 0x48025c06, 0x4a025a04,
+       0x00000103, 0x48065c09, 0x4a025a06, 0x00000000,
+       0x800409c0, 0x02000000, 0x000202c1, 0x59cc0009,
+       0x4802580a, 0x82042500, 0x00000100, 0x04000002,
+       0x59cc200b, 0x4812580c, 0x82040500, 0x00000200,
+       0x04000002, 0x59cc000a, 0x4802580b, 0x80100c00,
+       0x02001800, 0x001005d8, 0x02000000, 0x000202da,
+       0x82041480, 0x0000001d, 0x04001006, 0x592c0404,
+       0x8c00051e, 0x0400000e, 0x42000800, 0x0000001c,
+       0x4c500000, 0x4c540000, 0x83cca400, 0x0000000c,
+       0x832cac00, 0x0000000d, 0x0401f9c1, 0x5c00a800,
+       0x5c00a000, 0x0201f000, 0x000202da, 0x0401f965,
+       0x0401f1a0, 0x83380480, 0x00000093, 0x02021800,
+       0x001005d8, 0x83380480, 0x00000085, 0x02001800,
+       0x001005d8, 0x0c01f001, 0x001089fd, 0x001089fb,
+       0x001089fb, 0x00108a04, 0x001089fb, 0x001089fb,
+       0x001089fb, 0x001089fb, 0x001089fb, 0x001089fb,
+       0x001089fb, 0x001089fb, 0x001089fb, 0x0201f800,
+       0x001005d8, 0x4a026203, 0x00000001, 0x493a6403,
+       0x42000800, 0x80000040, 0x0201f000, 0x00020721,
+       0x4933c857, 0x59cc1204, 0x480a601c, 0x59cc1404,
+       0x0201f800, 0x00109410, 0x0400001b, 0x591c0203,
+       0x82000580, 0x00000000, 0x04000017, 0x591c0009,
+       0x81340580, 0x04020014, 0x4d300000, 0x4d1c0000,
+       0x411e6000, 0x0401f9c2, 0x5c023800, 0x5c026000,
+       0x0400000b, 0x59cc0005, 0x8c000500, 0x04020003,
+       0x0401f98c, 0x0401f003, 0x4a023a03, 0x00000002,
+       0x4a026403, 0x00000086, 0x0401f005, 0x0401f9a6,
+       0x040007f5, 0x4a026403, 0x00000087, 0x4a026203,
+       0x00000001, 0x42000800, 0x80000040, 0x0201f800,
+       0x00020721, 0x59340200, 0x8c00050e, 0x0400000d,
+       0x59cc1404, 0x0201f800, 0x00109410, 0x04000009,
+       0x591c0414, 0x8c00051a, 0x04000006, 0x4d300000,
+       0x411e6000, 0x0201f800, 0x0010921e, 0x5c026000,
+       0x1c01f000, 0x83380580, 0x00000013, 0x0402000a,
+       0x59300403, 0x82000d80, 0x00000086, 0x04000012,
+       0x82000d80, 0x00000087, 0x02020800, 0x001005d8,
+       0x0401f00d, 0x83380580, 0x00000027, 0x04000005,
+       0x83380580, 0x00000014, 0x02020800, 0x001005d8,
+       0x493bc857, 0x0201f800, 0x00106bbf, 0x0201f000,
+       0x00107911, 0x4933c857, 0x0201f000, 0x00107911,
+       0x83380580, 0x00000013, 0x04020005, 0x59300403,
+       0x82000480, 0x00000085, 0x0c01f04d, 0x83380580,
+       0x00000027, 0x04020041, 0x4933c857, 0x0201f800,
+       0x00106bbf, 0x4d3c0000, 0x417a7800, 0x0201f800,
+       0x0010203c, 0x5c027800, 0x42003000, 0x00000015,
+       0x41782800, 0x42002000, 0x00000003, 0x42028000,
+       0x00000029, 0x4d400000, 0x4d440000, 0x59368c03,
+       0x0201f800, 0x0010985e, 0x5c028800, 0x5c028000,
+       0x42000000, 0x0010b864, 0x0201f800, 0x0010aa47,
+       0x0201f800, 0x00109037, 0x0400000c, 0x4d2c0000,
+       0x59325808, 0x4a025a04, 0x00000103, 0x59300402,
+       0x48025c06, 0x497a5c09, 0x49425a06, 0x0201f800,
+       0x000202da, 0x5c025800, 0x0201f800, 0x0010912a,
+       0x0201f000, 0x0002077d, 0x83380580, 0x00000089,
+       0x04000005, 0x83380580, 0x0000008a, 0x02020000,
+       0x00107974, 0x0201f800, 0x00106f60, 0x02020000,
+       0x00107974, 0x59300a03, 0x82040580, 0x0000000a,
+       0x0400002a, 0x82040580, 0x0000000c, 0x04000027,
+       0x0201f800, 0x001005d8, 0x83380580, 0x00000014,
+       0x040207ea, 0x4933c857, 0x0201f800, 0x00106bbf,
+       0x42028000, 0x00000006, 0x0401f7d2, 0x00108aba,
+       0x00108ab8, 0x00108ab8, 0x00108ab8, 0x00108ab8,
+       0x00108ab8, 0x00108ac0, 0x00108ab8, 0x00108ab8,
+       0x00108ab8, 0x00108ab8, 0x00108ab8, 0x00108ab8,
+       0x0201f800, 0x001005d8, 0x4933c857, 0x59a80037,
+       0x48026206, 0x4a026203, 0x0000000a, 0x1c01f000,
+       0x4933c857, 0x59a80037, 0x48026206, 0x4a026203,
+       0x0000000c, 0x1c01f000, 0x83380580, 0x00000089,
+       0x04000008, 0x83380580, 0x0000008a, 0x04000032,
+       0x4933c857, 0x493bc857, 0x0201f000, 0x00107974,
+       0x4933c857, 0x59325808, 0x59300a1d, 0x82040580,
+       0x00000003, 0x04020004, 0x0201f800, 0x001049b2,
+       0x0401f00c, 0x5930021d, 0x82000580, 0x00000001,
+       0x04020008, 0x59300c16, 0x82040580, 0x00000039,
+       0x0400002c, 0x82040580, 0x00000035, 0x04000029,
+       0x4c340000, 0x41306800, 0x0201f800, 0x0002075a,
+       0x04000010, 0x4a026203, 0x00000001, 0x4a026403,
+       0x0000001e, 0x59cc0c07, 0x48066419, 0x59cc0a07,
+       0x48066219, 0x49366009, 0x4a026406, 0x00000001,
+       0x42000800, 0x80000040, 0x0201f800, 0x00020721,
+       0x40366000, 0x0201f800, 0x0002077d, 0x5c006800,
+       0x1c01f000, 0x4933c857, 0x5930021d, 0x82000580,
+       0x00000001, 0x04020040, 0x59300c16, 0x82040580,
+       0x00000035, 0x04000007, 0x82040580, 0x0000001e,
+       0x04000004, 0x82040580, 0x00000039, 0x04020036,
+       0x4933c857, 0x4c500000, 0x4d1c0000, 0x4130a000,
+       0x40067000, 0x0201f800, 0x001093ba, 0x04020029,
+       0x0201f800, 0x0002075a, 0x04000026, 0x491fc857,
+       0x4933c857, 0x83380580, 0x00000035, 0x04000004,
+       0x83380580, 0x00000039, 0x04020002, 0x4932381c,
+       0x493a6403, 0x4a026203, 0x00000001, 0x4a026406,
+       0x00000001, 0x58500809, 0x4807c857, 0x48066009,
+       0x58500c15, 0x4807c857, 0x48066415, 0x58500a15,
+       0x4807c857, 0x48066215, 0x58500a16, 0x4807c857,
+       0x48066216, 0x58500c19, 0x4807c857, 0x48066419,
+       0x58500a19, 0x4807c857, 0x48066219, 0x491e601e,
+       0x42000800, 0x80000040, 0x0201f800, 0x00020721,
+       0x40526000, 0x5c023800, 0x5c00a000, 0x0201f000,
+       0x0002077d, 0x5930021d, 0x82000580, 0x00000003,
+       0x02000800, 0x001049b2, 0x0201f000, 0x0002077d,
+       0x4803c856, 0x4c500000, 0x4c540000, 0x412c7800,
+       0x4c3c0000, 0x42002800, 0x00000001, 0x82040480,
+       0x00000101, 0x04001003, 0x42000800, 0x00000100,
+       0x40043000, 0x42000800, 0x0000001c, 0x83cca400,
+       0x0000000c, 0x832cac00, 0x0000000d, 0x0401f844,
+       0x82183480, 0x0000001c, 0x592e5801, 0x812e59c0,
+       0x02020800, 0x001007fd, 0x0201f800, 0x001007e4,
+       0x04000017, 0x80142800, 0x4a025a04, 0x00000110,
+       0x497a5c04, 0x492c7801, 0x82180c80, 0x0000003d,
+       0x04021006, 0x40180800, 0x832cac00, 0x00000005,
+       0x0401f82f, 0x0401f00a, 0x82183480, 0x0000003c,
+       0x42000800, 0x0000003c, 0x412c7800, 0x832cac00,
+       0x00000005, 0x0401f826, 0x0401f7e8, 0x5c007800,
+       0x841429c0, 0x82142d40, 0x00000003, 0x48147a04,
+       0x403e5800, 0x5c00a800, 0x5c00a000, 0x1c01f000,
+       0x492fc857, 0x812e59c0, 0x0400000f, 0x4d2c0000,
+       0x4c3c0000, 0x592c7801, 0x803c79c0, 0x04000006,
+       0x497a5801, 0x0201f800, 0x000202da, 0x403e5800,
+       0x0401f7f9, 0x5c007800, 0x0201f800, 0x000202da,
+       0x5c025800, 0x1c01f000, 0x4803c856, 0x4c580000,
+       0x82040c00, 0x00000003, 0x8004b104, 0x0201f800,
+       0x0010ab17, 0x5c00b000, 0x1c01f000, 0x4803c856,
+       0x4c580000, 0x82040c00, 0x00000003, 0x8004b104,
+       0x0201f800, 0x0010ab17, 0x5c00b000, 0x1c01f000,
+       0x591c0c06, 0x82040580, 0x00000003, 0x04000004,
+       0x82040580, 0x00000002, 0x0402001a, 0x4d300000,
+       0x4d2c0000, 0x411e6000, 0x59325808, 0x0201f800,
+       0x00109037, 0x0400000f, 0x4d400000, 0x42028000,
+       0x00000013, 0x592c0a08, 0x84040d54, 0x0201f800,
+       0x00104e70, 0x5c028000, 0x0201f800, 0x0010959c,
+       0x0201f800, 0x000202da, 0x0201f800, 0x0010912a,
+       0x0201f800, 0x00107911, 0x5c025800, 0x5c026000,
+       0x1c01f000, 0x59cc0005, 0x8c000500, 0x0402000b,
+       0x591c0406, 0x82000580, 0x00000002, 0x04020007,
+       0x591c0c03, 0x82040580, 0x00000085, 0x04000003,
+       0x82040580, 0x0000008b, 0x1c01f000, 0x4933c857,
+       0x4d3c0000, 0x42027800, 0x00000002, 0x59300406,
+       0x82000c80, 0x00000012, 0x02021800, 0x001005d8,
+       0x0c01f80a, 0x5c027800, 0x1c01f000, 0x4933c857,
+       0x59300406, 0x82000c80, 0x00000012, 0x02021800,
+       0x001005d8, 0x0c01f001, 0x00108c01, 0x00108bfe,
+       0x00108bfe, 0x00108c29, 0x00108bfc, 0x00108bfe,
+       0x00108c1a, 0x00108bfe, 0x00108bfc, 0x001065f4,
+       0x00108bfe, 0x00108bfe, 0x00108bfe, 0x00108bfc,
+       0x00108bfc, 0x00108bfc, 0x00108cf9, 0x00108bfe,
+       0x0201f800, 0x001005d8, 0x4803c856, 0x80000580,
+       0x1c01f000, 0x4803c856, 0x8d3e7d02, 0x04020016,
+       0x0201f800, 0x00109037, 0x0400000f, 0x59325808,
+       0x41780800, 0x4d400000, 0x42028000, 0x00000005,
+       0x0201f800, 0x00104e70, 0x5c028000, 0x0201f800,
+       0x0010959c, 0x0201f800, 0x001091cc, 0x0201f800,
+       0x000202da, 0x0201f800, 0x00107911, 0x82000540,
+       0x00000001, 0x1c01f000, 0x4933c857, 0x0201f800,
+       0x001048d9, 0x0402000c, 0x4d400000, 0x42028000,
+       0x00000010, 0x0201f800, 0x0010a1d1, 0x4a026406,
+       0x00000006, 0x4a026203, 0x00000007, 0x5c028000,
+       0x1c01f000, 0x4933c857, 0x0201f800, 0x00106c55,
+       0x4df00000, 0x0401f8b8, 0x82000c80, 0x0000000e,
+       0x02021800, 0x001005d8, 0x0c01f001, 0x00108c43,
+       0x00108cb0, 0x00108c5a, 0x00108cc3, 0x00108cab,
+       0x00108c41, 0x00108c43, 0x00108c43, 0x00108c47,
+       0x00108c43, 0x00108c43, 0x00108c43, 0x00108c43,
+       0x00108c5a, 0x0201f800, 0x001005d8, 0x5c03e000,
+       0x02000800, 0x00106c4b, 0x0401f7b8, 0x5c03e000,
+       0x02000800, 0x00106c4b, 0x59300406, 0x82000580,
+       0x00000003, 0x040207b4, 0x59300203, 0x82000580,
+       0x0000000d, 0x040007b0, 0x8d3e7d02, 0x040207ae,
+       0x4d340000, 0x59326809, 0x0201f800, 0x001049b2,
+       0x5c026800, 0x0401f7a8, 0x59300004, 0x8400055c,
+       0x48026004, 0x0201f800, 0x00106c4b, 0x59300406,
+       0x82000580, 0x00000006, 0x04000043, 0x8d3e7d02,
+       0x04020041, 0x497a621d, 0x59300203, 0x82000580,
+       0x0000000d, 0x04000003, 0x4a02621d, 0x00000003,
+       0x0401fbcb, 0x04000024, 0x4d2c0000, 0x4d400000,
+       0x59325808, 0x0201f800, 0x001091cc, 0x592c0408,
+       0x8c000512, 0x04000009, 0x4d2c0000, 0x84000512,
+       0x48025c08, 0x592c0809, 0x40065800, 0x0201f800,
+       0x001007fd, 0x5c025800, 0x4d400000, 0x42028000,
+       0x00000005, 0x592c0a08, 0x8c040d0e, 0x04000004,
+       0x42028000, 0x00000002, 0x0401f001, 0x0201f800,
+       0x00104e70, 0x5c028000, 0x0201f800, 0x0010959c,
+       0x0201f800, 0x000202da, 0x497a6008, 0x5c028000,
+       0x5c025800, 0x8d3e7d00, 0x04000009, 0x4d340000,
+       0x59326809, 0x0201f800, 0x001049b2, 0x5c026800,
+       0x0201f800, 0x00107911, 0x0401f00b, 0x4a026403,
+       0x00000085, 0x4a026203, 0x00000009, 0x4a026406,
+       0x00000002, 0x42000800, 0x8000404b, 0x0201f800,
+       0x00020721, 0x5c03e000, 0x02020800, 0x00106c55,
+       0x82000540, 0x00000001, 0x1c01f000, 0x0201f800,
+       0x00106c4b, 0x0201f800, 0x00100e99, 0x0401f7ab,
+       0x598c000d, 0x81300580, 0x04020004, 0x0201f800,
+       0x00106e8e, 0x0402001b, 0x0201f800, 0x001068d3,
+       0x04020006, 0x59300c03, 0x82040580, 0x00000040,
+       0x0400078b, 0x0401f79d, 0x0201f800, 0x00106b6c,
+       0x04000010, 0x0201f800, 0x001005d8, 0x0401f813,
+       0x04020004, 0x0201f800, 0x00106e62, 0x04020009,
+       0x0201f800, 0x001067ae, 0x040207f4, 0x59300c03,
+       0x82040580, 0x00000040, 0x04000779, 0x0401f78b,
+       0x59300203, 0x82000c80, 0x0000000e, 0x02021800,
+       0x001005d8, 0x0c01f75e, 0x417a3000, 0x42032000,
+       0x0000bf32, 0x59900004, 0x81300580, 0x04000009,
+       0x83932400, 0x00000010, 0x811a3000, 0x83180480,
+       0x00000005, 0x040017f8, 0x82000540, 0x00000001,
+       0x1c01f000, 0x59300004, 0x8c00053e, 0x04000010,
+       0x8c00050c, 0x0402000e, 0x8c000516, 0x04020006,
+       0x82000d00, 0x0000001f, 0x82040580, 0x00000005,
+       0x04020004, 0x42000000, 0x00000003, 0x0401f005,
+       0x42000000, 0x00000001, 0x0401f002, 0x59300203,
+       0x1c01f000, 0x4933c857, 0x0201f800, 0x00106c55,
+       0x4df00000, 0x59300203, 0x82000c80, 0x0000000e,
+       0x02021800, 0x001005d8, 0x0c01f001, 0x00108d13,
+       0x00108d30, 0x00108d17, 0x00108d11, 0x00108d11,
+       0x00108d11, 0x00108d11, 0x00108d11, 0x00108d11,
+       0x00108d11, 0x00108d11, 0x00108d11, 0x00108d11,
+       0x00108d11, 0x0201f800, 0x001005d8, 0x5c03e000,
+       0x02000800, 0x00106c4b, 0x0401f6e8, 0x5c03e000,
+       0x02000800, 0x00106c4b, 0x4d2c0000, 0x59325808,
+       0x59300403, 0x82000580, 0x00000052, 0x02000800,
+       0x00101231, 0x0401fb16, 0x02000800, 0x001005d8,
+       0x4a025a06, 0x00000005, 0x0201f800, 0x000202da,
+       0x0201f800, 0x00104c19, 0x0201f800, 0x00107911,
+       0x5c025800, 0x82000540, 0x00000001, 0x1c01f000,
+       0x598c000d, 0x81300580, 0x0402001a, 0x59300004,
+       0x8c000520, 0x04000004, 0x84000520, 0x48026004,
+       0x0401f01a, 0x42001000, 0x0010b7f6, 0x50081000,
+       0x58080002, 0x82000580, 0x00000100, 0x0400000a,
+       0x5808000c, 0x81300580, 0x02020800, 0x001005d8,
+       0x0201f800, 0x001068d3, 0x02020800, 0x001005d8,
+       0x0401f7cf, 0x0201f800, 0x00106e8e, 0x0402000c,
+       0x59300004, 0x8c000520, 0x04000004, 0x84000520,
+       0x48026004, 0x0401f7c6, 0x0201f800, 0x001068d3,
+       0x040007c3, 0x0201f800, 0x001005d8, 0x59300203,
+       0x82000c80, 0x0000000e, 0x02021800, 0x001005d8,
+       0x0c01f7a7, 0x59300406, 0x4933c857, 0x4803c857,
+       0x82000c80, 0x00000012, 0x02021800, 0x001005d8,
+       0x0c01f001, 0x00108d7c, 0x00108e41, 0x00108f79,
+       0x00108d88, 0x00107911, 0x00108d7c, 0x0010a1c0,
+       0x0002077d, 0x00108e41, 0x001065ce, 0x00108fda,
+       0x00108d77, 0x00108d77, 0x00108d77, 0x00108d77,
+       0x00108d77, 0x001096eb, 0x001096eb, 0x0201f800,
+       0x001005d8, 0x0401fbd5, 0x02000000, 0x0010801c,
+       0x1c01f000, 0x0201f800, 0x00106c55, 0x0201f800,
+       0x00106bbf, 0x0201f800, 0x00106c4b, 0x0201f000,
+       0x0002077d, 0x4a026206, 0x00000001, 0x1c01f000,
+       0x42000000, 0x0010b872, 0x0201f800, 0x0010aa47,
+       0x4d2c0000, 0x4d400000, 0x417a5800, 0x0401faa8,
+       0x04000007, 0x59325808, 0x592c0208, 0x8400054c,
+       0x48025a08, 0x42028000, 0x00000006, 0x0201f800,
+       0x00106c55, 0x0401ff4c, 0x4803c857, 0x82000c80,
+       0x0000000e, 0x02021800, 0x001005d8, 0x0c01f806,
+       0x0201f800, 0x00106c4b, 0x5c028000, 0x5c025800,
+       0x1c01f000, 0x00108e40, 0x00108db5, 0x00108dc3,
+       0x00108de5, 0x00108e11, 0x00108db3, 0x00108d7c,
+       0x00108d7c, 0x00108d7c, 0x00108db3, 0x00108db3,
+       0x00108db3, 0x00108db3, 0x00108dc3, 0x0201f800,
+       0x001005d8, 0x598c000d, 0x81300580, 0x04020004,
+       0x0201f800, 0x00106e8e, 0x04020038, 0x0201f800,
+       0x001068d3, 0x0400003b, 0x0201f800, 0x00106b6c,
+       0x04000032, 0x0201f800, 0x001005d8, 0x497a621d,
+       0x812e59c0, 0x02000800, 0x001005d8, 0x592c0204,
+       0x82000500, 0x000000ff, 0x82000580, 0x00000014,
+       0x04000003, 0x4a02621d, 0x00000003, 0x592c0a08,
+       0x0201f800, 0x00104e70, 0x0201f800, 0x0010959c,
+       0x0201f800, 0x000202da, 0x497a6008, 0x4a026403,
+       0x00000085, 0x4a026203, 0x00000009, 0x4a026406,
+       0x00000002, 0x4a026004, 0x8000404b, 0x0201f800,
+       0x00106c4b, 0x42000800, 0x8000404b, 0x0201f000,
+       0x00020721, 0x0401fef1, 0x04020004, 0x0201f800,
+       0x00106e62, 0x04020009, 0x0201f800, 0x001067ae,
+       0x040207d2, 0x59300c03, 0x82040580, 0x00000040,
+       0x04000008, 0x0401f7d2, 0x59300203, 0x82000c80,
+       0x0000000e, 0x02021800, 0x001005d8, 0x0c01f7ae,
+       0x0201f800, 0x00106c4b, 0x812e59c0, 0x04000013,
+       0x592c0a08, 0x0201f800, 0x00104e70, 0x0201f800,
+       0x0010959c, 0x0201f800, 0x000202da, 0x59300203,
+       0x82000580, 0x0000000d, 0x04000008, 0x0201f800,
+       0x00106c4b, 0x4d340000, 0x59326809, 0x0201f800,
+       0x001049b2, 0x5c026800, 0x0201f800, 0x00107911,
+       0x0401f030, 0x812e59c0, 0x02000800, 0x001005d8,
+       0x0201f800, 0x0010940a, 0x04020004, 0x0201f800,
+       0x00100e99, 0x0401f7aa, 0x0201f800, 0x00106c4b,
+       0x592c0208, 0x8400050c, 0x48025a08, 0x592c0406,
+       0x800000c2, 0x800008c4, 0x80040c00, 0x48066206,
+       0x42000000, 0x10000000, 0x41300800, 0x0201f800,
+       0x00100b94, 0x0400000d, 0x592c0208, 0x8c00051c,
+       0x04020006, 0x8400055c, 0x48025a08, 0x4a026206,
+       0x00000002, 0x0401f00f, 0x4d300000, 0x0201f800,
+       0x001012e5, 0x5c026000, 0x59300203, 0x82000580,
+       0x00000004, 0x04020007, 0x4d380000, 0x42027000,
+       0x00000048, 0x0201f800, 0x000207a1, 0x5c027000,
+       0x1c01f000, 0x42000000, 0x0010b86e, 0x0201f800,
+       0x0010aa47, 0x59300203, 0x82000c80, 0x0000000e,
+       0x02021800, 0x001005d8, 0x4803c857, 0x0c01f001,
+       0x00108e5a, 0x00108d85, 0x00108e5c, 0x00108e5a,
+       0x00108e5c, 0x00108e5c, 0x00108d7d, 0x00108e5a,
+       0x00108d79, 0x00108e5a, 0x00108e5a, 0x00108e5a,
+       0x00108e5a, 0x00108e5a, 0x0201f800, 0x001005d8,
+       0x4d340000, 0x4d2c0000, 0x59326809, 0x59340400,
+       0x82000500, 0x000000ff, 0x82000c80, 0x0000000c,
+       0x02021800, 0x001005d8, 0x59303403, 0x82180d80,
+       0x00000004, 0x04020004, 0x42000000, 0x00000001,
+       0x0401f006, 0x82180d80, 0x00000000, 0x04020003,
+       0x42000000, 0x00000001, 0x4803c857, 0x0c01f804,
+       0x5c025800, 0x5c026800, 0x1c01f000, 0x00108e83,
+       0x00108f22, 0x00108e85, 0x00108eba, 0x00108e85,
+       0x00108f3f, 0x00108e85, 0x00108e8f, 0x00108e83,
+       0x00108f3f, 0x00108e83, 0x00108e9e, 0x0201f800,
+       0x001005d8, 0x59300403, 0x82000d80, 0x00000016,
+       0x0400002e, 0x82000d80, 0x00000004, 0x0400002b,
+       0x82000d80, 0x00000002, 0x04000028, 0x0401fabf,
+       0x04000079, 0x59300403, 0x82000d80, 0x00000022,
+       0x040000ae, 0x82000d80, 0x00000039, 0x040000b3,
+       0x82000d80, 0x00000035, 0x040000b0, 0x82000d80,
+       0x0000001e, 0x0400001b, 0x0401f999, 0x04000007,
+       0x0201f800, 0x00109597, 0x04020004, 0x0201f800,
+       0x00104a14, 0x0401f011, 0x59300403, 0x82000d80,
+       0x00000001, 0x04020004, 0x0201f800, 0x001049e7,
+       0x0400000a, 0x4d3c0000, 0x417a7800, 0x0201f800,
+       0x0010203c, 0x5c027800, 0x42000000, 0x0010b864,
+       0x0201f800, 0x0010aa47, 0x0201f800, 0x0010801c,
+       0x0201f000, 0x00107911, 0x0401f97d, 0x04000004,
+       0x0201f800, 0x00109597, 0x040000a9, 0x59300c03,
+       0x82040580, 0x00000016, 0x04000056, 0x82040580,
+       0x00000002, 0x04020034, 0x59a80026, 0x8c000502,
+       0x04020013, 0x0201f800, 0x0010513b, 0x04020010,
+       0x0201f800, 0x00105151, 0x04020006, 0x42000000,
+       0x00000001, 0x0201f800, 0x00105113, 0x0401f094,
+       0x4a035033, 0x00000001, 0x4202d800, 0x00000001,
+       0x0201f800, 0x001050a2, 0x0401f08d, 0x59340403,
+       0x82000580, 0x000007fc, 0x04000008, 0x59a80026,
+       0x8c00050a, 0x04020084, 0x59340212, 0x82000500,
+       0x0000ff00, 0x04000082, 0x59340412, 0x82000500,
+       0x000000ff, 0x04000010, 0x80000040, 0x48026c12,
+       0x497a6008, 0x4a026406, 0x00000007, 0x4a026206,
+       0x00000398, 0x497a6205, 0x0201f800, 0x0002075a,
+       0x04000005, 0x49366009, 0x4a026406, 0x00000001,
+       0x0401f020, 0x59300403, 0x82000d80, 0x00000002,
+       0x0402000d, 0x59340403, 0x82000580, 0x000007fe,
+       0x04020009, 0x59a80026, 0x84000540, 0x48035026,
+       0x0201f800, 0x00104237, 0x0201f800, 0x0010801c,
+       0x0401f00c, 0x0201f800, 0x0010801c, 0x4d3c0000,
+       0x417a7800, 0x0201f800, 0x0010203c, 0x5c027800,
+       0x42000000, 0x0010b864, 0x0201f800, 0x0010aa47,
+       0x0201f800, 0x00102074, 0x0201f000, 0x00107911,
+       0x42000800, 0x00000003, 0x0201f800, 0x00104571,
+       0x4a026203, 0x00000001, 0x4a026403, 0x00000002,
+       0x0201f000, 0x0010672b, 0x0401f915, 0x04020793,
+       0x0201f800, 0x00102074, 0x4d3c0000, 0x417a7800,
+       0x0201f800, 0x0010203c, 0x5c027800, 0x42000000,
+       0x0010b864, 0x0201f800, 0x0010aa47, 0x42003000,
+       0x00000018, 0x41782800, 0x42002000, 0x00000000,
+       0x4d400000, 0x4d440000, 0x59368c03, 0x42028000,
+       0x00000029, 0x0201f800, 0x0010985e, 0x5c028800,
+       0x5c028000, 0x0201f000, 0x00107911, 0x0201f800,
+       0x00104a14, 0x0401f7c8, 0x42000000, 0x0010b86d,
+       0x0201f800, 0x0010aa47, 0x0201f800, 0x00107b76,
+       0x040207c1, 0x1c01f000, 0x4d380000, 0x59327403,
+       0x0201f800, 0x001093ba, 0x5c027000, 0x02020000,
+       0x0002077d, 0x836c0580, 0x00000003, 0x04000004,
+       0x4a026206, 0x00000002, 0x1c01f000, 0x59300403,
+       0x48026416, 0x4a02621d, 0x00000001, 0x4a026403,
+       0x00000085, 0x4a026203, 0x00000009, 0x4a026406,
+       0x00000002, 0x42000800, 0x8000004b, 0x0201f000,
+       0x00020721, 0x0201f800, 0x00102074, 0x0201f800,
+       0x0010801c, 0x4d3c0000, 0x417a7800, 0x0201f800,
+       0x0010203c, 0x5c027800, 0x42000000, 0x0010b864,
+       0x0201f800, 0x0010aa47, 0x497a6008, 0x4a026406,
+       0x00000007, 0x4a026206, 0x00000398, 0x497a6205,
+       0x1c01f000, 0x42000000, 0x0010b870, 0x0201f800,
+       0x0010aa47, 0x4d340000, 0x59326809, 0x59300203,
+       0x82000c80, 0x0000000e, 0x02021800, 0x001005d8,
+       0x4803c857, 0x0c01f803, 0x5c026800, 0x1c01f000,
+       0x00108f96, 0x00108d85, 0x00108f96, 0x00108f96,
+       0x00108f96, 0x00108f96, 0x00108f96, 0x00108f96,
+       0x00108f96, 0x00108d85, 0x00108f98, 0x00108d85,
+       0x00108fa0, 0x00108f96, 0x0201f800, 0x001005d8,
+       0x4a026403, 0x0000008b, 0x4a026203, 0x0000000b,
+       0x42000800, 0x8000404b, 0x0201f000, 0x00020721,
+       0x59300a1d, 0x4d3c0000, 0x417a7800, 0x0201f800,
+       0x0010203c, 0x5c027800, 0x42003000, 0x00000011,
+       0x0201f800, 0x0010a942, 0x42000000, 0x0010b864,
+       0x0201f800, 0x0010aa47, 0x41306800, 0x0201f800,
+       0x0002075a, 0x04000008, 0x49366009, 0x4d300000,
+       0x40366000, 0x0201f800, 0x00107911, 0x5c026000,
+       0x0401f002, 0x40366000, 0x497a6008, 0x4a026406,
+       0x00000001, 0x4a026403, 0x00000001, 0x0201f800,
+       0x00103b25, 0x04000011, 0x4a026406, 0x00000004,
+       0x4a026203, 0x00000007, 0x4a026420, 0x00000001,
+       0x42003000, 0x00000004, 0x4d400000, 0x42028000,
+       0x00000029, 0x41782800, 0x0201f800, 0x0010a43e,
+       0x5c028000, 0x1c01f000, 0x42000800, 0x0000000b,
+       0x0201f800, 0x00104571, 0x4a026203, 0x00000001,
+       0x0201f000, 0x0010672b, 0x42000000, 0x0010b876,
+       0x0201f800, 0x0010aa47, 0x59300203, 0x82000c80,
+       0x0000000e, 0x02021800, 0x001005d8, 0x4803c857,
+       0x0c01f001, 0x0010900b, 0x00108ff3, 0x00108ff7,
+       0x0010900c, 0x00108ff5, 0x00108ff3, 0x00108ff3,
+       0x00108ff3, 0x00108ff3, 0x00108ff3, 0x00108ff3,
+       0x00108ff3, 0x00108ff3, 0x00108ff3, 0x0201f800,
+       0x001005d8, 0x0201f800, 0x00100e99, 0x4d2c0000,
+       0x59325808, 0x4a025a06, 0x00000006, 0x0201f800,
+       0x000202da, 0x5c025800, 0x497a6008, 0x4a02621d,
+       0x0000000a, 0x4a026403, 0x00000085, 0x4a026203,
+       0x00000009, 0x4a026406, 0x00000002, 0x42000800,
+       0x8000404b, 0x0201f000, 0x00020721, 0x1c01f000,
+       0x0201f800, 0x00106c55, 0x4df00000, 0x0401fcc7,
+       0x04020004, 0x0201f800, 0x00106e62, 0x0402000c,
+       0x0201f800, 0x001067ae, 0x04020005, 0x5c03e000,
+       0x0201f800, 0x00106c4b, 0x0401f7dd, 0x0201f800,
+       0x00106b6c, 0x02020800, 0x001005d8, 0x5c03e000,
+       0x0201f800, 0x00106c4b, 0x59300203, 0x82000d80,
+       0x00000003, 0x02000800, 0x001005d8, 0x82000c80,
+       0x0000000e, 0x02021800, 0x001005d8, 0x0c01f7ba,
+       0x4803c856, 0x59a8000e, 0x59a80867, 0x80040400,
+       0x80080480, 0x04021004, 0x82000540, 0x00000001,
+       0x1c01f000, 0x80000580, 0x1c01f000, 0x4803c856,
+       0x4c080000, 0x59301008, 0x82081500, 0xfff00000,
+       0x5c001000, 0x1c01f000, 0x4803c856, 0x4d300000,
+       0x0201f800, 0x0002075a, 0x0400000a, 0x0401f82f,
+       0x4d380000, 0x42027000, 0x0000004b, 0x0201f800,
+       0x000207a1, 0x5c027000, 0x82000540, 0x00000001,
+       0x5c026000, 0x1c01f000, 0x4803c856, 0x4d300000,
+       0x0201f800, 0x00107942, 0x0400001b, 0x0401f81f,
+       0x4d300000, 0x0201f800, 0x00106c55, 0x4d3c0000,
+       0x417a7800, 0x0201f800, 0x00106ab4, 0x0201f800,
+       0x001067fd, 0x5c027800, 0x0201f800, 0x0010a2ff,
+       0x0201f800, 0x00106c4b, 0x5c026000, 0x8d3e7d3e,
+       0x0402000b, 0x4d380000, 0x42027000, 0x0000004c,
+       0x0201f800, 0x000207a1, 0x5c027000, 0x82000540,
+       0x00000001, 0x5c026000, 0x1c01f000, 0x0201f800,
+       0x0002077d, 0x0401f7fa, 0x592c0407, 0x494a6017,
+       0x494e6018, 0x49366009, 0x492e6008, 0x4a026406,
+       0x00000003, 0x800000c2, 0x800008c4, 0x80040400,
+       0x48026206, 0x1c01f000, 0x493bc857, 0x4d300000,
+       0x0201f800, 0x0002075a, 0x0400000d, 0x0401ffef,
+       0x4d400000, 0x42028000, 0x00000005, 0x0401f80d,
+       0x5c028000, 0x8d3e7d3e, 0x04020007, 0x0201f800,
+       0x000207a1, 0x82000540, 0x00000001, 0x5c026000,
+       0x1c01f000, 0x0201f800, 0x0002077d, 0x0401f7fa,
+       0x4803c856, 0x0201f800, 0x00106c55, 0x4d3c0000,
+       0x4d440000, 0x59368c03, 0x42027800, 0x00000001,
+       0x0201f800, 0x001069b6, 0x0201f800, 0x0010692e,
+       0x0201f800, 0x001067fd, 0x0201f800, 0x0010a2ff,
+       0x5c028800, 0x5c027800, 0x0201f000, 0x00106c4b,
+       0x4803c856, 0x4d300000, 0x0201f800, 0x0002075a,
+       0x0400000f, 0x481a601c, 0x48ee6021, 0x49366009,
+       0x4a026406, 0x00000001, 0x492e6008, 0x4d380000,
+       0x42027000, 0x0000001f, 0x0201f800, 0x000207a1,
+       0x5c027000, 0x82000540, 0x00000001, 0x5c026000,
+       0x1c01f000, 0x4803c856, 0x4d300000, 0x0201f800,
+       0x0002075a, 0x0400000e, 0x48ee6021, 0x49366009,
+       0x4a026406, 0x00000001, 0x492e6008, 0x4d380000,
+       0x42027000, 0x00000055, 0x0201f800, 0x000207a1,
+       0x5c027000, 0x82000540, 0x00000001, 0x5c026000,
+       0x1c01f000, 0x4803c856, 0x4d300000, 0x0201f800,
+       0x0002075a, 0x0400000f, 0x481a601c, 0x48ee6021,
+       0x49366009, 0x4a026406, 0x00000001, 0x492e6008,
+       0x4d380000, 0x42027000, 0x0000003d, 0x0201f800,
+       0x000207a1, 0x5c027000, 0x82000540, 0x00000001,
+       0x5c026000, 0x1c01f000, 0x4803c856, 0x4d300000,
+       0x0201f800, 0x00107942, 0x04000014, 0x49366009,
+       0x492fc857, 0x4933c857, 0x592c0404, 0x8c00051e,
+       0x04000003, 0x48efc857, 0x48ee6021, 0x4a026406,
+       0x00000001, 0x492e6008, 0x4d380000, 0x42027000,
+       0x00000000, 0x0201f800, 0x000207a1, 0x5c027000,
+       0x82000540, 0x00000001, 0x5c026000, 0x1c01f000,
+       0x4803c856, 0x4d300000, 0x0201f800, 0x0002075a,
+       0x0400000f, 0x48ee6021, 0x481a601c, 0x49366009,
+       0x4a026406, 0x00000001, 0x492e6008, 0x4d380000,
+       0x42027000, 0x00000044, 0x0201f800, 0x000207a1,
+       0x5c027000, 0x82000540, 0x00000001, 0x5c026000,
+       0x1c01f000, 0x4803c856, 0x4d300000, 0x0201f800,
+       0x0002075a, 0x0400000f, 0x481a601c, 0x48ee6021,
+       0x49366009, 0x4a026406, 0x00000001, 0x492e6008,
+       0x4d380000, 0x42027000, 0x00000049, 0x0201f800,
+       0x000207a1, 0x5c027000, 0x82000540, 0x00000001,
+       0x5c026000, 0x1c01f000, 0x59300009, 0x80001540,
+       0x02000800, 0x001005d8, 0x5808040b, 0x4803c856,
+       0x80000040, 0x04001002, 0x4800140b, 0x1c01f000,
+       0x4803c856, 0x59300403, 0x82000d80, 0x00000002,
+       0x04000015, 0x82000d80, 0x00000003, 0x04000012,
+       0x82000d80, 0x00000004, 0x0400000f, 0x82000d80,
+       0x00000008, 0x0400000c, 0x82000d80, 0x0000000a,
+       0x04000009, 0x599c0819, 0x8c040d0e, 0x04000004,
+       0x82000d80, 0x00000000, 0x04000003, 0x82000540,
+       0x00000001, 0x1c01f000, 0x4803c856, 0x4c000000,
+       0x4d2c0000, 0x59300406, 0x82000580, 0x00000004,
+       0x0400001d, 0x59300008, 0x80025d40, 0x800001c0,
+       0x04000019, 0x0201f800, 0x00109597, 0x04000014,
+       0x59300406, 0x82004580, 0x00000010, 0x04000010,
+       0x82004580, 0x00000011, 0x0400000d, 0x82004580,
+       0x00000003, 0x0400000c, 0x82004580, 0x00000002,
+       0x04000009, 0x82004580, 0x0000000a, 0x04000006,
+       0x592c0404, 0x8c00051e, 0x04000003, 0x80000580,
+       0x0401f003, 0x82000540, 0x00000001, 0x5c025800,
+       0x5c000000, 0x1c01f000, 0x4803c856, 0x4d300000,
+       0x0201f800, 0x00107942, 0x04000013, 0x49366009,
+       0x48ee6021, 0x4a026406, 0x00000001, 0x492e6008,
+       0x4d3c0000, 0x417a7800, 0x0201f800, 0x0010203c,
+       0x5c027800, 0x4d380000, 0x42027000, 0x00000028,
+       0x0201f800, 0x000207a1, 0x5c027000, 0x82000540,
+       0x00000001, 0x5c026000, 0x1c01f000, 0x4803c856,
+       0x83380580, 0x00000015, 0x0402000d, 0x59a80016,
+       0x82000580, 0x00000074, 0x04020009, 0x0201f800,
+       0x0010462a, 0x4a026203, 0x00000001, 0x4a026403,
+       0x00000029, 0x0201f000, 0x0010672b, 0x0201f800,
+       0x0010801c, 0x0201f000, 0x0002077d, 0x4803c856,
+       0x83380580, 0x00000016, 0x04020007, 0x42000800,
+       0x00000004, 0x0201f800, 0x00104571, 0x0201f000,
+       0x00107b38, 0x83380580, 0x00000015, 0x04020013,
+       0x59a80016, 0x82000580, 0x00000014, 0x0402000f,
+       0x0201f800, 0x0010468d, 0x0201f800, 0x0010846f,
+       0x0402000a, 0x59340404, 0x80000540, 0x04000007,
+       0x42000800, 0x00000006, 0x0201f800, 0x00104571,
+       0x0201f000, 0x00107b38, 0x0201f800, 0x0010801c,
+       0x0201f000, 0x0002077d, 0x4803c856, 0x592c0206,
+       0x82000580, 0x00000005, 0x04000002, 0x1c01f000,
+       0x4803c856, 0x592c0208, 0x8400054a, 0x48025a08,
+       0x1c01f000, 0x497a6205, 0x497a6008, 0x4a026203,
+       0x00000001, 0x4a026403, 0x00000050, 0x42000800,
+       0x80000043, 0x0201f000, 0x00020721, 0x4933c857,
+       0x4d340000, 0x59326809, 0x59340200, 0x8c00050e,
+       0x04000006, 0x59300406, 0x82000c80, 0x00000012,
+       0x04021004, 0x0c01f806, 0x5c026800, 0x1c01f000,
+       0x0201f800, 0x00108d7c, 0x0401f7fc, 0x00108d7c,
+       0x001091fd, 0x00109201, 0x00109204, 0x0010a49b,
+       0x0010a4b8, 0x0010a4bc, 0x00108d7c, 0x00108d7c,
+       0x00108d7c, 0x00108d7c, 0x00108d7c, 0x00108d7c,
+       0x00108d7c, 0x00108d7c, 0x00108d7c, 0x00108d7c,
+       0x00108d7c, 0x4803c856, 0x40000000, 0x40000000,
+       0x1c01f000, 0x40000000, 0x40000000, 0x1c01f000,
+       0x5930001c, 0x4803c857, 0x59300414, 0x4933c857,
+       0x4803c857, 0x8c000502, 0x04000005, 0x84000502,
+       0x84000540, 0x48026414, 0x1c01f000, 0x42000000,
+       0xd0000000, 0x41300800, 0x0201f800, 0x00100b94,
+       0x0401f80a, 0x04020008, 0x59a80037, 0x82000400,
+       0x0000000a, 0x48026205, 0x59300414, 0x84000542,
+       0x48026414, 0x1c01f000, 0x4933c857, 0x4d340000,
+       0x59326809, 0x59340200, 0x8c00050e, 0x02000800,
+       0x001005d8, 0x5930001c, 0x80000540, 0x0402002f,
+       0x59a80021, 0x80000540, 0x0402002a, 0x4d1c0000,
+       0x41323800, 0x0201f800, 0x0002075a, 0x04000023,
+       0x4932381c, 0x591c0414, 0x84000542, 0x48023c14,
+       0x49366009, 0x591c0406, 0x82000580, 0x00000003,
+       0x04000006, 0x591c0202, 0x48026419, 0x591c0402,
+       0x48026219, 0x0401f005, 0x591c0202, 0x48026219,
+       0x591c0402, 0x48026419, 0x491e601e, 0x4a026406,
+       0x00000001, 0x4a026403, 0x00000035, 0x4a026203,
+       0x00000001, 0x42000800, 0x80000040, 0x0201f800,
+       0x00020721, 0x411e6000, 0x5c023800, 0x80000580,
+       0x5c026800, 0x1c01f000, 0x411e6000, 0x5c023800,
+       0x59a80039, 0x48026205, 0x82000540, 0x00000001,
+       0x0401f7f8, 0x4933c857, 0x4d2c0000, 0x4932381c,
+       0x4a026202, 0x0000ffff, 0x591e5808, 0x591c0007,
+       0x8c00051e, 0x04000005, 0x8400051e, 0x48023807,
+       0x497a5c09, 0x0401f014, 0x592c0408, 0x8c000518,
+       0x04000011, 0x84000518, 0x48025c08, 0x4a025c09,
+       0x00000001, 0x0401fb2f, 0x497a5c09, 0x592c0408,
+       0x8c000512, 0x04000008, 0x4d2c0000, 0x84000512,
+       0x48025c08, 0x592e5809, 0x0201f800, 0x001007fd,
+       0x5c025800, 0x59a80039, 0x48026205, 0x591c0214,
+       0x48026216, 0x82000d80, 0x00000001, 0x04000008,
+       0x4a023a03, 0x00000002, 0x82000580, 0x00000005,
+       0x04000008, 0x497a6015, 0x0401f01e, 0x591c0007,
+       0x84000540, 0x48023807, 0x4a023a03, 0x00000004,
+       0x591c0414, 0x4803c857, 0x8400051c, 0x84000554,
+       0x48023c14, 0x592c000f, 0x40001000, 0x591c0816,
+       0x80040480, 0x040217f0, 0x591c0016, 0x82000500,
+       0xfffffffc, 0x48026015, 0x48023816, 0x591c0a14,
+       0x4807c857, 0x82040d80, 0x00000005, 0x04020005,
+       0x480bc857, 0x4803c857, 0x4a023812, 0xffffffff,
+       0x591c0402, 0x48026419, 0x591c0202, 0x48026219,
+       0x591e6809, 0x49366009, 0x4a026406, 0x00000001,
+       0x4a026403, 0x00000039, 0x4a026203, 0x00000001,
+       0x42000800, 0x80000040, 0x0201f800, 0x00020721,
+       0x5c025800, 0x1c01f000, 0x4933c857, 0x59300414,
+       0x8c000514, 0x04000015, 0x8c00051c, 0x04020012,
+       0x59300016, 0x80100480, 0x04001006, 0x04000005,
+       0x59300414, 0x84000514, 0x8400055c, 0x0401f009,
+       0x48126016, 0x48126012, 0x40100000, 0x592c180f,
+       0x800c0480, 0x48026011, 0x59300414, 0x84000514,
+       0x48026414, 0x1c01f000, 0x4933c857, 0x8c00051c,
+       0x04020006, 0x59300012, 0x48026016, 0x59300414,
+       0x8400055c, 0x48026414, 0x1c01f000, 0x59300c03,
+       0x4933c857, 0x4807c857, 0x82040480, 0x00000034,
+       0x04001006, 0x82040480, 0x0000003c, 0x04021003,
+       0x80000580, 0x1c01f000, 0x82000540, 0x00000001,
+       0x0401f7fd, 0x41780800, 0x59a81035, 0x42000000,
+       0x00000032, 0x0201f800, 0x001066a0, 0x800811c0,
+       0x04020003, 0x42001000, 0x00000014, 0x480b5037,
+       0x59a81036, 0x480b502d, 0x41780800, 0x42000000,
+       0x00000064, 0x0201f800, 0x001066a0, 0x800811c0,
+       0x04020003, 0x42001000, 0x00000014, 0x480b5038,
+       0x82081400, 0x0000000a, 0x480b5039, 0x42000800,
+       0x00000001, 0x0201f800, 0x00106c78, 0x42000000,
+       0x30000000, 0x40080800, 0x0201f800, 0x00100b68,
+       0x42000800, 0x00000003, 0x59a81010, 0x0201f800,
+       0x00106c78, 0x0201f000, 0x00104906, 0x4a035037,
+       0x00000028, 0x4a035038, 0x00000014, 0x4a03502d,
+       0x000007d0, 0x42001000, 0x0000001e, 0x480b5039,
+       0x42000800, 0x00000001, 0x0201f800, 0x00106c78,
+       0x42000000, 0x30000000, 0x40080800, 0x0201f800,
+       0x00100b68, 0x42000800, 0x00000003, 0x59a81010,
+       0x0201f000, 0x00106c78, 0x4933c857, 0x4d2c0000,
+       0x59300403, 0x82000580, 0x0000003e, 0x04020005,
+       0x59325817, 0x812e59c0, 0x02020800, 0x001007f4,
+       0x5c025800, 0x1c01f000, 0x4937c857, 0x4d300000,
+       0x0201f800, 0x0002075a, 0x04000011, 0x49366009,
+       0x4a026406, 0x00000001, 0x492e6008, 0x42000800,
+       0x00000009, 0x0201f800, 0x00104571, 0x4d380000,
+       0x42027000, 0x00000033, 0x0201f800, 0x000207a1,
+       0x5c027000, 0x82000540, 0x00000001, 0x5c026000,
+       0x1c01f000, 0x4933c857, 0x4d2c0000, 0x4c580000,
+       0x4d3c0000, 0x59325808, 0x83380580, 0x00000015,
+       0x04020022, 0x59a8b016, 0x82580c80, 0x00000019,
+       0x04001003, 0x4200b000, 0x00000018, 0x8058b104,
+       0x0401fa07, 0x80000580, 0x0401fa17, 0x832cac00,
+       0x00000009, 0x83cca400, 0x00000006, 0x0201f800,
+       0x0010ab17, 0x42027800, 0x00000001, 0x592c100a,
+       0x8c081518, 0x04020006, 0x59a80010, 0x592c100d,
+       0x80080580, 0x04020006, 0x417a7800, 0x59301009,
+       0x58081403, 0x0201f800, 0x001020a1, 0x0201f800,
+       0x00107b38, 0x0401f008, 0x4200b000, 0x00000002,
+       0x0401fa09, 0x0201f800, 0x0010801c, 0x0201f800,
+       0x0002077d, 0x5c027800, 0x5c00b000, 0x5c025800,
+       0x1c01f000, 0x4933c856, 0x49366009, 0x4a026406,
+       0x00000001, 0x492e6008, 0x4d380000, 0x42027000,
+       0x0000004d, 0x0201f800, 0x000207a1, 0x5c027000,
+       0x82000540, 0x00000001, 0x1c01f000, 0x4803c856,
+       0x4d2c0000, 0x83380580, 0x00000015, 0x04020027,
+       0x59a80816, 0x59325808, 0x5930040b, 0x800000c4,
+       0x80040580, 0x04020021, 0x4c500000, 0x4c540000,
+       0x4c580000, 0x83cca400, 0x00000006, 0x4050a800,
+       0x5930b40b, 0x0201f800, 0x0010ab28, 0x83cca400,
+       0x00000006, 0x592cb205, 0x832cac00, 0x00000006,
+       0x0201f800, 0x0010ab17, 0x592e5801, 0x812e59c0,
+       0x040207f9, 0x5931d821, 0x58ef400b, 0x58ee580d,
+       0x4a025a04, 0x00000103, 0x58ec0009, 0x0801f800,
+       0x59300402, 0x5c00b000, 0x5c00a800, 0x5c00a000,
+       0x5c025800, 0x1c01f000, 0x0201f800, 0x0010801c,
+       0x5c025800, 0x1c01f000, 0x4933c857, 0x83380580,
+       0x00000035, 0x04000005, 0x59301419, 0x0401f851,
+       0x04000027, 0x0401f006, 0x4d300000, 0x5932601e,
+       0x0401f856, 0x5c026000, 0x04000020, 0x591c0c06,
+       0x82040580, 0x00000003, 0x04000004, 0x82040580,
+       0x00000006, 0x0402001c, 0x591c0c02, 0x59300419,
+       0x80040580, 0x04000009, 0x59300219, 0x80040580,
+       0x04020015, 0x591c0a02, 0x59300419, 0x80040580,
+       0x04020011, 0x0401f009, 0x59300a19, 0x82040580,
+       0x0000ffff, 0x04000005, 0x591c0202, 0x59300a19,
+       0x80040580, 0x04020008, 0x591c0009, 0x59300809,
+       0x80040580, 0x1c01f000, 0x417a3800, 0x82000540,
+       0x00000001, 0x1c01f000, 0x4803c856, 0x59b800e4,
+       0x8c000538, 0x02020800, 0x001005d8, 0x42000800,
+       0x0000012c, 0x4a0370e4, 0x20000000, 0x59b800e4,
+       0x80040840, 0x02000800, 0x001005d8, 0x8c00053c,
+       0x040207f9, 0x4a0370e4, 0x30000000, 0x40000000,
+       0x40000000, 0x40000000, 0x59b800e4, 0x8c00053c,
+       0x040207f1, 0x1c01f000, 0x4803c856, 0x4a0370e4,
+       0x20000000, 0x40000000, 0x59b800e4, 0x8c000538,
+       0x040207fb, 0x1c01f000, 0x59300807, 0x8c040d1e,
+       0x592c0c08, 0x04020002, 0x8c040d18, 0x1c01f000,
+       0x0401fc1c, 0x04000008, 0x42000800, 0x00000024,
+       0x0201f800, 0x00106681, 0x82063c00, 0x0010d1c0,
+       0x491fc857, 0x1c01f000, 0x83300480, 0x0010d1c0,
+       0x0400100a, 0x59a8000b, 0x81300480, 0x04021007,
+       0x59301402, 0x0401ffef, 0x04000007, 0x411c0000,
+       0x81300580, 0x04000003, 0x81780500, 0x0401f002,
+       0x81300540, 0x1c01f000, 0x4947c857, 0x4d300000,
+       0x0201f800, 0x00020245, 0x0402000a, 0x42026000,
+       0x0010bde9, 0x49366009, 0x492e6008, 0x0201f800,
+       0x0010203c, 0x80000580, 0x5c026000, 0x1c01f000,
+       0x82000540, 0x00000001, 0x0401f7fc, 0x4933c857,
+       0x0201f800, 0x00109037, 0x02000800, 0x001005d8,
+       0x4d2c0000, 0x4d340000, 0x4d440000, 0x4c580000,
+       0x59325808, 0x59326809, 0x49425a06, 0x0201f800,
+       0x00105755, 0x592e8c06, 0x592c4207, 0x82200500,
+       0x0000000f, 0x0c01f806, 0x5c00b000, 0x5c028800,
+       0x5c026800, 0x5c025800, 0x1c01f000, 0x00109466,
+       0x00109488, 0x0010948f, 0x00109493, 0x0010949c,
+       0x00109463, 0x00109463, 0x00109463, 0x001094a0,
+       0x001094ac, 0x001094ac, 0x00109463, 0x00109463,
+       0x00109463, 0x00109463, 0x00109463, 0x4803c857,
+       0x0201f800, 0x001005d8, 0x814281c0, 0x04020012,
+       0x41785800, 0x592c0404, 0x8c00051c, 0x04020002,
+       0x59345c05, 0x442c2800, 0x59340008, 0x48002802,
+       0x59340009, 0x48002801, 0x59340006, 0x48002804,
+       0x59340007, 0x48002803, 0x4200b000, 0x0000000b,
+       0x0401f037, 0x592c0207, 0x8c00051e, 0x4200b000,
+       0x00000002, 0x04020032, 0x8204b540, 0x00000000,
+       0x0400002f, 0x44042800, 0x59326809, 0x59340400,
+       0x48002801, 0x4200b000, 0x00000002, 0x0401f028,
+       0x814281c0, 0x04020030, 0x59345c05, 0x442c2800,
+       0x4200b000, 0x00000001, 0x0401f021, 0x8340b540,
+       0x00000000, 0x0400001e, 0x0401f027, 0x814281c0,
+       0x04020025, 0x59340200, 0x44002800, 0x59340001,
+       0x48002801, 0x4200b000, 0x00000002, 0x0401f014,
+       0x8340b540, 0x00000000, 0x0402001b, 0x0401f010,
+       0x8340b540, 0x00000000, 0x0400000d, 0x0201f800,
+       0x00104a1f, 0x04000014, 0x8c20450e, 0x04000002,
+       0x497a6009, 0x4178b000, 0x497a5a06, 0x0401f004,
+       0x8340b540, 0x00000000, 0x0402000b, 0x592c0404,
+       0x8400051c, 0x48025c04, 0x592c0207, 0x8400051e,
+       0x48025a07, 0x0401f8aa, 0x497a6008, 0x0201f000,
+       0x000202da, 0x592c0207, 0x8c00051e, 0x4200b000,
+       0x00000002, 0x040207f2, 0x8204b540, 0x00000000,
+       0x040007ef, 0x44042800, 0x4200b000, 0x00000001,
+       0x0401f7eb, 0x4937c857, 0x4d300000, 0x0201f800,
+       0x0002075a, 0x04000011, 0x49366009, 0x4a026406,
+       0x00000001, 0x492e6008, 0x42000800, 0x0000000b,
+       0x0201f800, 0x00104571, 0x4d380000, 0x42027000,
+       0x00000043, 0x0201f800, 0x000207a1, 0x5c027000,
+       0x82000540, 0x00000001, 0x5c026000, 0x1c01f000,
+       0x4937c857, 0x4d2c0000, 0x59325808, 0x83380580,
+       0x00000015, 0x04020025, 0x59a80016, 0x82000580,
+       0x00000004, 0x04020021, 0x59a80010, 0x592c1009,
+       0x80080580, 0x04020010, 0x4d440000, 0x592e8c06,
+       0x592c0207, 0x4803c856, 0x82000500, 0x00000080,
+       0x84000548, 0x4d3c0000, 0x42027800, 0x00001000,
+       0x0201f800, 0x001049bb, 0x5c027800, 0x5c028800,
+       0x0401f004, 0x4803c856, 0x0201f800, 0x00104a1f,
+       0x0201f800, 0x00109037, 0x04000017, 0x4d400000,
+       0x42028000, 0x00000000, 0x41780800, 0x0401ff38,
+       0x5c028000, 0x0401f00e, 0x0201f800, 0x00104a1f,
+       0x040207f4, 0x0201f800, 0x00109037, 0x0400000a,
+       0x4c580000, 0x4200b000, 0x00000002, 0x0401f86e,
+       0x5c00b000, 0x0201f800, 0x0010801c, 0x0201f800,
+       0x0002077d, 0x5c025800, 0x1c01f000, 0x4937c857,
+       0x4d300000, 0x0201f800, 0x0002075a, 0x04000012,
+       0x49366009, 0x4a026406, 0x00000001, 0x4d3c0000,
+       0x4d380000, 0x417a7800, 0x0201f800, 0x00104567,
+       0x492e6008, 0x42027000, 0x00000004, 0x0201f800,
+       0x000207a1, 0x5c027000, 0x5c027800, 0x82000540,
+       0x00000001, 0x5c026000, 0x1c01f000, 0x4937c857,
+       0x4d300000, 0x0201f800, 0x00107942, 0x0400000d,
+       0x49366009, 0x4a026406, 0x00000001, 0x492e6008,
+       0x4d380000, 0x42027000, 0x00000051, 0x0201f800,
+       0x000207a1, 0x5c027000, 0x82000540, 0x00000001,
+       0x5c026000, 0x1c01f000, 0x4933c857, 0x4c580000,
+       0x59325808, 0x83383580, 0x00000015, 0x04020011,
+       0x592c0008, 0x82000500, 0x00ffffff, 0x0402000a,
+       0x0201f800, 0x00105755, 0x59cc0000, 0x82000500,
+       0x00ffffff, 0x44002800, 0x4200b000, 0x00000001,
+       0x0401f80b, 0x0201f800, 0x00107b38, 0x0401f006,
+       0x4200b000, 0x00000002, 0x0401f823, 0x0201f800,
+       0x0010801c, 0x5c00b000, 0x1c01f000, 0x492fc857,
+       0x4c580000, 0x4c000000, 0x8058b1c0, 0x0400000b,
+       0x82580500, 0xfffffff0, 0x02020800, 0x001005d8,
+       0x8058b0d0, 0x592c0408, 0x82000500, 0xfffff0ff,
+       0x80580540, 0x48025c08, 0x5c000000, 0x5c00b000,
+       0x1c01f000, 0x492fc857, 0x4c000000, 0x4c040000,
+       0x800000d8, 0x592c0c08, 0x82040d00, 0xffff0fff,
+       0x80040540, 0x48025c08, 0x5c000800, 0x5c000000,
+       0x1c01f000, 0x4933c857, 0x4d2c0000, 0x59325808,
+       0x592c0207, 0x8400055e, 0x48025a07, 0x4c500000,
+       0x4c540000, 0x4c580000, 0x0401ffd9, 0x0201f800,
+       0x00105755, 0x46002800, 0x00000018, 0x80142800,
+       0x8058b040, 0x83cca400, 0x00000007, 0x4014a800,
+       0x0201f800, 0x0010ab17, 0x5c00b000, 0x5c00a800,
+       0x5c00a000, 0x5c025800, 0x1c01f000, 0x59325808,
+       0x592c0204, 0x82000580, 0x00000152, 0x1c01f000,
+       0x5930001f, 0x80000540, 0x02020800, 0x00100d56,
+       0x1c01f000, 0x4d2c0000, 0x59325808, 0x59300203,
+       0x4933c857, 0x492fc857, 0x493bc857, 0x4803c857,
+       0x82003480, 0x0000000e, 0x02021800, 0x001005d8,
+       0x0c01f803, 0x5c025800, 0x1c01f000, 0x001095bd,
+       0x001095c8, 0x00109603, 0x001095bd, 0x001095bd,
+       0x001095bd, 0x001095bd, 0x001095bd, 0x001095bf,
+       0x001095bd, 0x001095bd, 0x001095bd, 0x001095bd,
+       0x001095bd, 0x0201f800, 0x001005d8, 0x83383480,
+       0x00000056, 0x02021800, 0x001005d8, 0x493a6403,
+       0x4a026203, 0x00000001, 0x0201f000, 0x0010672b,
+       0x83380580, 0x00000013, 0x0402000f, 0x592c000c,
+       0x800001c0, 0x04000006, 0x4a026203, 0x00000002,
+       0x59a80037, 0x48026206, 0x1c01f000, 0x4a025a06,
+       0x00000000, 0x0201f800, 0x000202da, 0x0201f000,
+       0x0002077d, 0x83380580, 0x00000027, 0x0400001a,
+       0x83380580, 0x00000014, 0x04000012, 0x83380580,
+       0x00000015, 0x04000005, 0x83380580, 0x00000016,
+       0x02020800, 0x001005d8, 0x0201f800, 0x00106f60,
+       0x02020000, 0x00107974, 0x59300203, 0x82000580,
+       0x00000002, 0x02020800, 0x001005d8, 0x0401f014,
+       0x0201f800, 0x00106bbf, 0x4a02580e, 0x00000011,
+       0x0401f005, 0x0201f800, 0x00106bbf, 0x4a02580e,
+       0x00000010, 0x4a025a06, 0x00000031, 0x4a02580d,
+       0x00000004, 0x0201f800, 0x000202da, 0x0201f800,
+       0x00104c19, 0x0201f000, 0x00107911, 0x59341400,
+       0x82081d00, 0x000000ff, 0x59300c03, 0x480bc857,
+       0x4807c857, 0x82040580, 0x00000053, 0x0400002e,
+       0x82040580, 0x00000002, 0x04000016, 0x82040580,
+       0x00000001, 0x04000017, 0x82040580, 0x00000003,
+       0x0400001c, 0x82040580, 0x00000005, 0x0400001d,
+       0x82040580, 0x00000033, 0x0400001a, 0x82040580,
+       0x00000000, 0x0400001b, 0x82040580, 0x00000004,
+       0x02020800, 0x001005d8, 0x0401f8a1, 0x0401f016,
+       0x820c0580, 0x00000003, 0x0400084c, 0x0401f012,
+       0x820c0580, 0x0000000b, 0x0402000f, 0x42000800,
+       0x00000007, 0x0201f800, 0x00104571, 0x0401f00a,
+       0x820c0580, 0x00000005, 0x04000864, 0x0401f006,
+       0x820c0580, 0x00000009, 0x04000889, 0x0401f002,
+       0x0401f893, 0x4a026403, 0x00000052, 0x59a81016,
+       0x592c040b, 0x8c000500, 0x04000003, 0x42001000,
+       0x00000008, 0x592c040b, 0x8c000516, 0x04000003,
+       0x82081400, 0x00000018, 0x592c000c, 0x497a580d,
+       0x497a580e, 0x80080c80, 0x04000009, 0x04001005,
+       0x4a025a06, 0x00000007, 0x40001000, 0x0401f006,
+       0x4a025a06, 0x00000015, 0x0401f003, 0x4a025a06,
+       0x00000000, 0x480a580c, 0x82081400, 0x00000003,
+       0x80081104, 0x0201f800, 0x00107ab5, 0x04000010,
+       0x592c1001, 0x480a600b, 0x58080800, 0x82080400,
+       0x00000002, 0x592c1011, 0x592c1812, 0x42003000,
+       0x00000000, 0x42002000, 0x00101200, 0x0201f800,
+       0x00107c32, 0x04000002, 0x1c01f000, 0x4a025a06,
+       0x0000002c, 0x497a580c, 0x0201f800, 0x000202da,
+       0x0201f000, 0x0002077d, 0x83380580, 0x00000015,
+       0x0402000a, 0x59a80005, 0x8c000514, 0x0402000b,
+       0x0201f800, 0x0010462a, 0x42000800, 0x00000004,
+       0x0201f000, 0x00104571, 0x42000800, 0x00000007,
+       0x0201f000, 0x00104571, 0x0201f800, 0x0010513b,
+       0x42001000, 0x00000010, 0x04020009, 0x59340002,
+       0x82000500, 0x00ff0000, 0x82000580, 0x00ff0000,
+       0x040007ec, 0x42001000, 0x00000008, 0x0201f800,
+       0x00104c6d, 0x040007e7, 0x592c040b, 0x84000540,
+       0x48025c0b, 0x0401f7e9, 0x83380580, 0x00000015,
+       0x0402000f, 0x59a80005, 0x8c000514, 0x04020010,
+       0x0201f800, 0x0010468d, 0x4d3c0000, 0x417a7800,
+       0x0201f800, 0x00104567, 0x5c027800, 0x42000800,
+       0x00000006, 0x0201f000, 0x00104571, 0x42000800,
+       0x00000004, 0x0201f000, 0x00104571, 0x0201f800,
+       0x0010513b, 0x42001000, 0x00000010, 0x04020009,
+       0x59340002, 0x82000500, 0x00ff0000, 0x82000580,
+       0x00ff0000, 0x040007e7, 0x42001000, 0x00000008,
+       0x0201f800, 0x00104c6d, 0x040007e2, 0x592c040b,
+       0x84000540, 0x48025c0b, 0x0401f7e9, 0x42000800,
+       0x00000004, 0x0201f000, 0x00104571, 0x83380580,
+       0x00000015, 0x04020005, 0x0201f800, 0x0010a2c8,
+       0x02000800, 0x001048c1, 0x1c01f000, 0x83380580,
+       0x00000015, 0x0402001d, 0x4c580000, 0x83cc1400,
+       0x00000008, 0x4200b000, 0x00000002, 0x83341c00,
+       0x00000006, 0x0201f800, 0x0010855a, 0x04020012,
+       0x83cc1400, 0x0000000a, 0x4200b000, 0x00000002,
+       0x83341c00, 0x00000008, 0x0201f800, 0x0010855a,
+       0x04020009, 0x59342200, 0x59cc1007, 0x800811c0,
+       0x04000003, 0x480a6801, 0x84102542, 0x8410251a,
+       0x48126a00, 0x5c00b000, 0x1c01f000, 0x42000000,
+       0x0010b87b, 0x0201f800, 0x0010aa47, 0x0201f800,
+       0x00106c55, 0x59300203, 0x4933c857, 0x4803c857,
+       0x82000c80, 0x0000000e, 0x02021800, 0x001005d8,
+       0x0c01f803, 0x0201f000, 0x00106c4b, 0x0010970b,
+       0x0010971a, 0x0010970c, 0x00109709, 0x00109709,
+       0x00109709, 0x00109709, 0x00109709, 0x00109709,
+       0x00109709, 0x00109709, 0x00109709, 0x00109709,
+       0x00109709, 0x0201f800, 0x001005d8, 0x1c01f000,
+       0x59300403, 0x82000580, 0x00000052, 0x02000000,
+       0x00108d85, 0x0201f800, 0x00104c19, 0x59325808,
+       0x4a025a06, 0x00000006, 0x0201f800, 0x000202da,
+       0x0201f000, 0x00107911, 0x59301804, 0x840c0520,
+       0x48026004, 0x598c000d, 0x81300580, 0x04020010,
+       0x8c0c1d20, 0x04020010, 0x42001000, 0x0010b7f6,
+       0x50081000, 0x58080002, 0x82000580, 0x00000100,
+       0x0400000e, 0x5808000c, 0x81300580, 0x02020800,
+       0x001005d8, 0x4978100c, 0x0401f003, 0x8c0c1d20,
+       0x040207dc, 0x0201f800, 0x001068d3, 0x040007d9,
+       0x0201f800, 0x001005d8, 0x0201f800, 0x00106e8e,
+       0x040007f9, 0x59300203, 0x82000c80, 0x0000000e,
+       0x02021800, 0x001005d8, 0x0c01f7bd, 0x4933c857,
+       0x4c500000, 0x4c540000, 0x4c580000, 0x592c0c07,
+       0x4806580a, 0x59cc0809, 0x48065807, 0x59cc0a08,
+       0x4806580b, 0x59c80817, 0x82040500, 0x000003ff,
+       0x800010c4, 0x8c040d14, 0x04000005, 0x59cc0002,
+       0x82000500, 0x00000003, 0x80081480, 0x82080480,
+       0x000000f1, 0x02021800, 0x001005d8, 0x480a621a,
+       0x412c0800, 0x0201f800, 0x001007d3, 0x02000800,
+       0x001005d8, 0x492c0809, 0x58040408, 0x84000552,
+       0x84000540, 0x48000c08, 0x82081400, 0x00000003,
+       0x80081104, 0x83cca400, 0x00000006, 0x832cac00,
+       0x00000004, 0x42000800, 0x00000010, 0x82080480,
+       0x00000010, 0x04021003, 0x40080800, 0x80000580,
+       0x4004b000, 0x4c000000, 0x0201f800, 0x0010ab28,
+       0x5c000000, 0x800001c0, 0x0400000d, 0x412c1000,
+       0x4c000000, 0x0201f800, 0x001007d3, 0x02000800,
+       0x001005d8, 0x492c1001, 0x832cac00, 0x00000004,
+       0x5c000000, 0x40001000, 0x0401f7e9, 0x5c00b000,
+       0x5c00a800, 0x5c00a000, 0x1c01f000, 0x4933c857,
+       0x4d2c0000, 0x4c380000, 0x59325808, 0x5930021a,
+       0x48025a08, 0x59301011, 0x800811c0, 0x04020008,
+       0x4a025a06, 0x00000000, 0x592c000b, 0x82000500,
+       0x00000c00, 0x0400000b, 0x0401f00b, 0x8c08153e,
+       0x04000006, 0x4a025a06, 0x00000007, 0x80081080,
+       0x80081000, 0x0401f003, 0x4a025a06, 0x00000015,
+       0x480a5807, 0x42000000, 0x0010bed9, 0x50007000,
+       0x5838000b, 0x80000540, 0x04020008, 0x4930700c,
+       0x4930700b, 0x58380002, 0x82000580, 0x00000000,
+       0x04020809, 0x0401f005, 0x82001400, 0x00000000,
+       0x45301000, 0x4930700b, 0x5c007000, 0x5c025800,
+       0x1c01f000, 0x4933c857, 0x592c0009, 0x40001000,
+       0x4800700a, 0x82080400, 0x00000004, 0x48007003,
+       0x592c000d, 0x592c100e, 0x48007007, 0x48087008,
+       0x592c000a, 0x592c1208, 0x80080c80, 0x04001002,
+       0x40001000, 0x82081400, 0x00000003, 0x80081104,
+       0x82080480, 0x00000010, 0x04021003, 0x80000580,
+       0x0401f003, 0x42001000, 0x00000010, 0x4800700d,
+       0x48087004, 0x800810c4, 0x48087005, 0x40381000,
+       0x0201f800, 0x00100858, 0x1c01f000, 0x4d2c0000,
+       0x0201f800, 0x001007d3, 0x02000800, 0x001005d8,
+       0x42000800, 0x0010bed9, 0x452c0800, 0x497a580b,
+       0x497a580c, 0x497a580d, 0x4a025809, 0x001097ea,
+       0x4a025802, 0x00000100, 0x4a025801, 0x00000000,
+       0x5c025800, 0x1c01f000, 0x4833c857, 0x4d300000,
+       0x4d2c0000, 0x4c5c0000, 0x4030b800, 0x585c000a,
+       0x80025d40, 0x04020004, 0x585c000c, 0x4c000000,
+       0x0401f044, 0x585c0002, 0x82000580, 0x00000100,
+       0x04020022, 0x592c0801, 0x4c040000, 0x0201f800,
+       0x001007f4, 0x5c000800, 0x800409c0, 0x0400001c,
+       0x4804b80a, 0x585c100d, 0x800811c0, 0x04020005,
+       0x40065800, 0x0201f800, 0x001007fd, 0x0401f014,
+       0x82080480, 0x00000010, 0x04021003, 0x80000580,
+       0x0401f003, 0x42001000, 0x00000010, 0x4800b80d,
+       0x4808b804, 0x800810c4, 0x4808b805, 0x82040400,
+       0x00000004, 0x4800b803, 0x405c1000, 0x0201f800,
+       0x00100858, 0x0401f025, 0x0401f828, 0x585c000c,
+       0x80026540, 0x59300000, 0x80000d40, 0x04020002,
+       0x4800b80b, 0x4800b80c, 0x497a6000, 0x4c000000,
+       0x4978b80a, 0x59325808, 0x4a025a04, 0x00000103,
+       0x59300402, 0x48025c06, 0x592c100b, 0x4c080000,
+       0x0201f800, 0x000202c1, 0x0201f800, 0x0010912a,
+       0x5c001000, 0x8c081518, 0x04000004, 0x0201f800,
+       0x001091d1, 0x0401f003, 0x0201f800, 0x0002077d,
+       0x405c7000, 0x5c000000, 0x80026540, 0x04000003,
+       0x59325808, 0x0401ff78, 0x5c00b800, 0x5c025800,
+       0x5c026000, 0x1c01f000, 0x483bc857, 0x5838000a,
+       0x40025800, 0x0201f800, 0x001007fd, 0x5838000c,
+       0x80026540, 0x59300008, 0x80025d40, 0x4a025a06,
+       0x00000002, 0x1c01f000, 0x4803c857, 0x4d1c0000,
+       0x497a601c, 0x41323800, 0x40026000, 0x4d3c0000,
+       0x42027800, 0x00000005, 0x0401f83c, 0x5c027800,
+       0x411e6000, 0x59300414, 0x84000502, 0x48026414,
+       0x5c023800, 0x1c01f000, 0x481bc857, 0x4933c857,
+       0x4c5c0000, 0x4c600000, 0x4010b800, 0x4014c000,
+       0x0201f800, 0x0010a942, 0x0201f800, 0x00103b25,
+       0x04000008, 0x40602800, 0x405c3000, 0x0201f800,
+       0x0010a446, 0x82000540, 0x00000001, 0x0401f002,
+       0x80000580, 0x5c00c000, 0x5c00b800, 0x1c01f000,
+       0x4803c856, 0x4d300000, 0x42026000, 0x0010d1c0,
+       0x59a8000e, 0x81640580, 0x04000016, 0x59300c06,
+       0x82040580, 0x00000001, 0x04000009, 0x82040580,
+       0x00000004, 0x04000006, 0x82040580, 0x00000010,
+       0x02000800, 0x00108cf9, 0x0401f005, 0x4807c857,
+       0x0201f800, 0x001092d7, 0x04020808, 0x83326400,
+       0x00000024, 0x41580000, 0x81300480, 0x040017e9,
+       0x5c026000, 0x1c01f000, 0x4933c857, 0x59300403,
+       0x4803c857, 0x0201f800, 0x00106c55, 0x4df00000,
+       0x59300406, 0x4803c857, 0x82000d80, 0x00000002,
+       0x04000018, 0x82000d80, 0x00000001, 0x04000009,
+       0x82000d80, 0x00000004, 0x04000006, 0x4933c856,
+       0x5c03e000, 0x02000800, 0x00106c4b, 0x0401f03c,
+       0x59300203, 0x82000d80, 0x00000001, 0x04000018,
+       0x82000d80, 0x00000002, 0x04000026, 0x82000d80,
+       0x00000005, 0x04000023, 0x0201f800, 0x001005d8,
+       0x59300203, 0x82000d80, 0x00000009, 0x0400000c,
+       0x82000d80, 0x0000000b, 0x04000009, 0x82000d80,
+       0x0000000a, 0x04000017, 0x82000d80, 0x0000000c,
+       0x04000014, 0x0201f800, 0x001005d8, 0x598c000d,
+       0x81300580, 0x04020004, 0x0201f800, 0x00106e8e,
+       0x0402000c, 0x59300004, 0x4803c857, 0x8c000520,
+       0x04000004, 0x84000520, 0x48026004, 0x0401f005,
+       0x0201f800, 0x001068d3, 0x02020800, 0x001005d8,
+       0x5c03e000, 0x02000800, 0x00106c4b, 0x59300406,
+       0x82000d80, 0x00000002, 0x04000009, 0x0201f800,
+       0x00104c19, 0x0201f800, 0x0010914e, 0x02000800,
+       0x0010801c, 0x8d3e7d00, 0x04000003, 0x0201f000,
+       0x00107911, 0x4a02621d, 0x00000001, 0x4a026403,
+       0x00000085, 0x4a026203, 0x00000009, 0x4a026406,
+       0x00000002, 0x42000800, 0x8000004b, 0x0201f000,
+       0x00020721, 0x4933c857, 0x59368c03, 0x4c180000,
+       0x59300203, 0x82003480, 0x0000000e, 0x02021800,
+       0x001005d8, 0x0c01f803, 0x5c003000, 0x1c01f000,
+       0x0010990a, 0x00109dcf, 0x00109edb, 0x0010990a,
+       0x0010990a, 0x0010990a, 0x0010990a, 0x0010990a,
+       0x0010992d, 0x0010990a, 0x0010990a, 0x0010990a,
+       0x0010990a, 0x0010990a, 0x0201f800, 0x001005d8,
+       0x4933c857, 0x42028800, 0x0000ffff, 0x813669c0,
+       0x04000002, 0x59368c03, 0x4c180000, 0x59300203,
+       0x82003480, 0x0000000e, 0x02021800, 0x001005d8,
+       0x0c01f803, 0x5c003000, 0x1c01f000, 0x00109929,
+       0x0010a180, 0x00109929, 0x00109929, 0x00109929,
+       0x00109929, 0x00109929, 0x0010a952, 0x0010a0ed,
+       0x0010a52c, 0x0010a562, 0x0010a52c, 0x0010a562,
+       0x00109929, 0x0201f800, 0x001005d8, 0x0201f800,
+       0x001005d8, 0x83383480, 0x00000051, 0x02021800,
+       0x001005d8, 0x41380000, 0x493bc857, 0x4d1c0000,
+       0x4d400000, 0x0c01f804, 0x5c028000, 0x5c023800,
+       0x1c01f000, 0x0010998a, 0x00109b69, 0x0010998a,
+       0x0010998a, 0x0010998a, 0x00109b74, 0x0010998a,
+       0x0010998a, 0x0010998a, 0x0010998a, 0x0010998a,
+       0x0010998a, 0x0010998a, 0x0010998a, 0x0010998a,
+       0x0010998a, 0x0010998a, 0x0010998a, 0x0010998a,
+       0x0010998a, 0x0010998a, 0x0010998a, 0x0010998a,
+       0x001099ac, 0x001099f5, 0x00109a0c, 0x00109a62,
+       0x00109ac6, 0x00109b04, 0x00109b34, 0x0010998a,
+       0x0010998a, 0x00109b7c, 0x0010998a, 0x0010998a,
+       0x00109b8a, 0x00109b93, 0x0010998a, 0x0010998a,
+       0x0010998a, 0x0010998a, 0x0010998a, 0x00109c15,
+       0x0010998a, 0x0010998a, 0x00109a9a, 0x0010998a,
+       0x0010998a, 0x00109bec, 0x0010998a, 0x0010998a,
+       0x0010998a, 0x00109c23, 0x0010998a, 0x0010998a,
+       0x0010998a, 0x00109c6c, 0x0010998a, 0x0010998a,
+       0x0010998a, 0x0010998a, 0x0010998a, 0x0010998a,
+       0x00109cb9, 0x0010998a, 0x00109ce5, 0x00109cf0,
+       0x0010998a, 0x0010998a, 0x0010998c, 0x00109cfb,
+       0x0010998a, 0x0010998a, 0x0010998a, 0x0010999b,
+       0x0010998a, 0x0010998a, 0x0010998a, 0x00109d02,
+       0x00109d0a, 0x00109d28, 0x0201f800, 0x001005d8,
+       0x4933c857, 0x0201f800, 0x0010a592, 0x040203a4,
+       0x0201f800, 0x0010210a, 0x040203a1, 0x59cc0407,
+       0x4802601c, 0x4a026403, 0x00000045, 0x4a026203,
+       0x00000001, 0x0201f000, 0x0010672b, 0x4933c857,
+       0x0201f800, 0x0010a592, 0x04020395, 0x0201f800,
+       0x0010210a, 0x04020392, 0x0401fbce, 0x040201a0,
+       0x59cc0007, 0x4802601c, 0x4a026403, 0x0000004a,
+       0x4a026203, 0x00000001, 0x0201f000, 0x0010672b,
+       0x4933c857, 0x0201f800, 0x0010210a, 0x04020009,
+       0x0201f800, 0x001048ec, 0x04020006, 0x82000500,
+       0x00000009, 0x82000580, 0x00000008, 0x04020008,
+       0x4a026403, 0x00000009, 0x4a02641a, 0x00000009,
+       0x4a02621a, 0x00000000, 0x0401f1b2, 0x0201f800,
+       0x001048c1, 0x0201f800, 0x00104a09, 0x04000021,
+       0x0201f800, 0x001049ed, 0x0400001e, 0x0201f800,
+       0x0010a252, 0x04020025, 0x42028000, 0x00000029,
+       0x4d3c0000, 0x417a7800, 0x0201f800, 0x0010203c,
+       0x5c027800, 0x0201f800, 0x0010462a, 0x836c0580,
+       0x00000002, 0x04020004, 0x59a8001b, 0x80000000,
+       0x4803501b, 0x4a026403, 0x00000008, 0x42003000,
+       0x00000003, 0x0201f800, 0x00103b25, 0x04000191,
+       0x4a026203, 0x00000007, 0x41782800, 0x0401f180,
+       0x0201f800, 0x0010a3da, 0x040207e1, 0x4a026403,
+       0x00000009, 0x4a02641a, 0x0000000e, 0x4a02621a,
+       0x00001900, 0x0401f183, 0x4a026403, 0x00000009,
+       0x4a02641a, 0x00000003, 0x4a02621a, 0x00000f00,
+       0x0401f17c, 0x4933c857, 0x0201f800, 0x0010210a,
+       0x0402033b, 0x0201f800, 0x001048ec, 0x04020338,
+       0x493a6403, 0x0201f800, 0x0010a22d, 0x04020006,
+       0x42003000, 0x00000005, 0x4a026403, 0x00000006,
+       0x0401f7d9, 0x4a026403, 0x00000007, 0x4a02641a,
+       0x00000009, 0x4a02621a, 0x00000000, 0x0401f165,
+       0x4933c857, 0x0201f800, 0x001048ec, 0x04020324,
+       0x0201f800, 0x0010a592, 0x02000800, 0x0010210a,
+       0x0402031f, 0x0201f800, 0x00104a09, 0x04020005,
+       0x42027800, 0x00000001, 0x0201f800, 0x00104567,
+       0x0201f800, 0x001049fc, 0x0402002b, 0x59cc0206,
+       0x82003500, 0x00000003, 0x0402002e, 0x82003480,
+       0x00000014, 0x0400102b, 0x5934300a, 0x84183516,
+       0x82000580, 0x00000014, 0x04020002, 0x84183556,
+       0x481a680a, 0x59cc0406, 0x82000500, 0x00000003,
+       0x04020020, 0x0201f800, 0x0010a29f, 0x04020028,
+       0x0201f800, 0x001049e7, 0x0402000c, 0x417a7800,
+       0x0201f800, 0x001020a1, 0x42003000, 0x00000006,
+       0x0201f800, 0x0010a93a, 0x42000000, 0x0010b865,
+       0x0201f800, 0x0010aa47, 0x0201f800, 0x0010468d,
+       0x4a026403, 0x0000000a, 0x42003000, 0x00000020,
+       0x0401f795, 0x4a026403, 0x0000000b, 0x4a02641a,
+       0x00000009, 0x4a02621a, 0x00001e00, 0x0401f121,
+       0x42000000, 0x0010b860, 0x0201f800, 0x0010aa47,
+       0x4a026403, 0x0000000b, 0x4a02641a, 0x00000007,
+       0x4a02621a, 0x00000000, 0x0401f116, 0x4a026403,
+       0x0000000b, 0x4a02641a, 0x00000003, 0x4a02621a,
+       0x00000000, 0x0401f10f, 0x4933c857, 0x0201f800,
+       0x001048ec, 0x040202ce, 0x0201f800, 0x0010a592,
+       0x040202cb, 0x0201f800, 0x0010210a, 0x040202c8,
+       0x59cc0206, 0x82003500, 0x00000003, 0x0402001d,
+       0x82003480, 0x00000014, 0x0400101a, 0x59cc0406,
+       0x82000500, 0x00000003, 0x04020016, 0x59340400,
+       0x82000580, 0x00000707, 0x04000019, 0x417a7800,
+       0x0201f800, 0x001020a1, 0x42003000, 0x0000000a,
+       0x0201f800, 0x0010a93a, 0x42000000, 0x0010b862,
+       0x0201f800, 0x0010aa47, 0x4a026403, 0x0000000c,
+       0x41782800, 0x42003000, 0x00000021, 0x0401f752,
+       0x4a026403, 0x0000000d, 0x4a02641a, 0x00000007,
+       0x4a02621a, 0x00000000, 0x0401f0de, 0x4a026403,
+       0x0000000d, 0x4a02641a, 0x00000009, 0x4a02621a,
+       0x00001e00, 0x0401f0d7, 0x4933c857, 0x0201f800,
+       0x001048ec, 0x04020296, 0x0201f800, 0x0010a592,
+       0x04020293, 0x0201f800, 0x0010210a, 0x04020290,
+       0x0401facc, 0x0402001a, 0x493a6403, 0x4c5c0000,
+       0x0401fad2, 0x0402000e, 0x4a026403, 0x0000002e,
+       0x405c2800, 0x42003000, 0x00000024, 0x0201f800,
+       0x00103b25, 0x0400000c, 0x4a026203, 0x00000007,
+       0x405c2800, 0x5c00b800, 0x0401f0ad, 0x4a026403,
+       0x0000000d, 0x4a02641a, 0x00000007, 0x4a02621a,
+       0x00000000, 0x5c00b800, 0x0401f0b2, 0x4a026403,
+       0x0000000d, 0x4a02641a, 0x00000009, 0x4a02621a,
+       0x00001e00, 0x0401f0ab, 0x4933c857, 0x0201f800,
+       0x001048ec, 0x040206ef, 0x59a80026, 0x82000500,
+       0x00000009, 0x82000580, 0x00000008, 0x040006e9,
+       0x0201f800, 0x001049fc, 0x0402002d, 0x0201f800,
+       0x0010a2a7, 0x04020007, 0x4a026403, 0x0000000e,
+       0x41782800, 0x42003000, 0x00000052, 0x0401f702,
+       0x4933c857, 0x42003000, 0x00000003, 0x0201f800,
+       0x0010a942, 0x4d3c0000, 0x417a7800, 0x0201f800,
+       0x0010203c, 0x5c027800, 0x42000000, 0x0010b864,
+       0x0201f800, 0x0010aa47, 0x59340200, 0x84000558,
+       0x48026a00, 0x42000800, 0x0000000b, 0x0201f800,
+       0x00104571, 0x0201f800, 0x00103b25, 0x04000076,
+       0x42003000, 0x00000007, 0x0401f062, 0x4933c857,
+       0x4a026403, 0x0000000f, 0x4a02641a, 0x00000003,
+       0x4a02621a, 0x00001e00, 0x0401f072, 0x59340400,
+       0x82000580, 0x00000703, 0x040007f5, 0x0401f040,
+       0x4933c857, 0x0201f800, 0x001048ec, 0x0402022c,
+       0x59a80026, 0x82000500, 0x00000009, 0x82000580,
+       0x00000008, 0x04000226, 0x0201f800, 0x001049f3,
+       0x0402002f, 0x0201f800, 0x0010a2c8, 0x02000800,
+       0x0010a252, 0x04020007, 0x4a026403, 0x00000010,
+       0x41782800, 0x42003000, 0x00000050, 0x0401f6c2,
+       0x4d3c0000, 0x417a7800, 0x0201f800, 0x0010203c,
+       0x5c027800, 0x42003000, 0x00000003, 0x0201f800,
+       0x0010a942, 0x42000000, 0x0010b864, 0x0201f800,
+       0x0010aa47, 0x59340200, 0x84000558, 0x48026a00,
+       0x0401f7c5, 0x4a026403, 0x00000011, 0x4a02641a,
+       0x00000003, 0x4a02621a, 0x00001e00, 0x0401f03d,
+       0x4933c857, 0x0201f800, 0x0010210a, 0x02000800,
+       0x0010a592, 0x040201fa, 0x0401fa36, 0x04020008,
+       0x4a026403, 0x00000012, 0x0401f032, 0x59340400,
+       0x82000580, 0x00000703, 0x040007eb, 0x4d3c0000,
+       0x417a7800, 0x42028000, 0x00000029, 0x0201f800,
+       0x0010203c, 0x5c027800, 0x42003000, 0x00000017,
+       0x0201f800, 0x0010a942, 0x42000000, 0x0010b864,
+       0x0201f800, 0x0010aa47, 0x0201f800, 0x00103b25,
+       0x04000015, 0x42003000, 0x00000006, 0x41782800,
+       0x42028000, 0x00000029, 0x4933c857, 0x4a026403,
+       0x00000001, 0x4a026203, 0x00000007, 0x0201f800,
+       0x0010a974, 0x0201f000, 0x0010a43e, 0x42028000,
+       0x00000046, 0x0201f800, 0x0010a974, 0x0201f000,
+       0x0010a43e, 0x4933c857, 0x4a026403, 0x00000001,
+       0x42000800, 0x0000000b, 0x0201f800, 0x00104571,
+       0x4a026203, 0x00000001, 0x0201f000, 0x0010672b,
+       0x4933c857, 0x42000800, 0x00000009, 0x0201f800,
+       0x00104571, 0x4a026403, 0x00000005, 0x0401f7f5,
+       0x0201f800, 0x0010a592, 0x040201b5, 0x0201f800,
+       0x0010210a, 0x040201b2, 0x0401f9ee, 0x040207c0,
+       0x4a026403, 0x00000020, 0x4a026203, 0x00000001,
+       0x0201f000, 0x0010672b, 0x0201f800, 0x0010210a,
+       0x040201a7, 0x4a026403, 0x00000023, 0x4a026203,
+       0x00000001, 0x0201f000, 0x0010672b, 0x0201f800,
+       0x0010a592, 0x02000800, 0x0010210a, 0x0402019c,
+       0x0401f9d8, 0x040207aa, 0x40300800, 0x59a81010,
+       0x59cc0007, 0x82000500, 0x00ffffff, 0x80080580,
+       0x04000019, 0x59cc1408, 0x0201f800, 0x0010902c,
+       0x0400002d, 0x59cc0c08, 0x4d300000, 0x0201f800,
+       0x00105dd7, 0x41323800, 0x5c026000, 0x04000026,
+       0x591c0202, 0x82000580, 0x0000ffff, 0x04000005,
+       0x59cc1208, 0x591c0202, 0x80080580, 0x0402001e,
+       0x591c0406, 0x82000580, 0x00000007, 0x0402001a,
+       0x0401f02c, 0x59cc1208, 0x82080580, 0x0000ffff,
+       0x0400000c, 0x0201f800, 0x00109410, 0x04000012,
+       0x59cc1408, 0x591c0202, 0x80080580, 0x0402000e,
+       0x591c0009, 0x81340580, 0x04000016, 0x0401f00a,
+       0x59cc1408, 0x417a7800, 0x0201f800, 0x0010a405,
+       0x04020010, 0x59cc1208, 0x82080580, 0x0000ffff,
+       0x04000019, 0x4a026403, 0x00000026, 0x4a02621a,
+       0x00001700, 0x59cc1204, 0x82081580, 0x0000ffff,
+       0x04020798, 0x4a026403, 0x00000025, 0x0401f795,
+       0x591c0406, 0x82000580, 0x00000007, 0x040207f2,
+       0x591c0403, 0x82000580, 0x00000024, 0x04020006,
+       0x4d300000, 0x411e6000, 0x0201f800, 0x0002077d,
+       0x5c026000, 0x4a026403, 0x00000025, 0x0401f785,
+       0x4933c857, 0x4d3c0000, 0x42027800, 0x00000001,
+       0x0201f800, 0x00104567, 0x5c027800, 0x4c580000,
+       0x4200b000, 0x00000002, 0x83a81c00, 0x00000002,
+       0x83cc1400, 0x0000000b, 0x0201f800, 0x0010855a,
+       0x5c00b000, 0x04000004, 0x4a026403, 0x00000031,
+       0x0401f770, 0x0201f800, 0x00107911, 0x0201f800,
+       0x0010513b, 0x0402000f, 0x0201f800, 0x00105149,
+       0x04020008, 0x4a035033, 0x00000001, 0x4202d800,
+       0x00000001, 0x0201f800, 0x001050a2, 0x0401f005,
+       0x42000000, 0x00000001, 0x0201f800, 0x00105113,
+       0x1c01f000, 0x0201f800, 0x0010210a, 0x0402011c,
+       0x0401f958, 0x0402072a, 0x493a6403, 0x0401f996,
+       0x04020004, 0x4a026403, 0x0000002b, 0x0401f751,
+       0x4a026403, 0x0000002c, 0x0401f74e, 0x4933c857,
+       0x0201f800, 0x0010210a, 0x0402010d, 0x0201f800,
+       0x001049e7, 0x04020740, 0x0201f800, 0x001048d9,
+       0x0400003c, 0x59cc0408, 0x48026419, 0x59cc0208,
+       0x48026219, 0x59cc0807, 0x59340002, 0x82000500,
+       0x00ffffff, 0x80040580, 0x04000012, 0x59a80010,
+       0x80040580, 0x04020021, 0x59cc1408, 0x0201f800,
+       0x00109410, 0x04000023, 0x0201f800, 0x0010a4ca,
+       0x04000020, 0x0201f800, 0x0010a921, 0x0400001d,
+       0x491e601e, 0x4a026403, 0x00000036, 0x0401f0e6,
+       0x59cc1208, 0x82080580, 0x0000ffff, 0x04000009,
+       0x0201f800, 0x00109410, 0x04000012, 0x591c0202,
+       0x59cc0c08, 0x80040580, 0x0402000e, 0x0401f7eb,
+       0x59cc1408, 0x41327800, 0x0201f800, 0x0010a405,
+       0x04000008, 0x0401f7e5, 0x4803c856, 0x4a02641a,
+       0x00000009, 0x4a02621a, 0x00001500, 0x0401f006,
+       0x4803c856, 0x4a02641a, 0x00000003, 0x4a02621a,
+       0x00001700, 0x4a026403, 0x00000037, 0x0401f0c6,
+       0x4803c856, 0x4a026403, 0x00000012, 0x0401f0c2,
+       0x4933c857, 0x0201f800, 0x0010210a, 0x040200c4,
+       0x0201f800, 0x001049e7, 0x040206f7, 0x0201f800,
+       0x001048d9, 0x0400003e, 0x59cc0407, 0x48026419,
+       0x59cc1207, 0x480a6219, 0x82080580, 0x0000ffff,
+       0x04000005, 0x0201f800, 0x00109410, 0x0400002c,
+       0x0401f006, 0x59cc1407, 0x41327800, 0x0201f800,
+       0x0010a405, 0x04000026, 0x59cc0c07, 0x591c0202,
+       0x80040580, 0x04020022, 0x4d300000, 0x411e6000,
+       0x0201f800, 0x00108bd7, 0x5c026000, 0x59cc0c09,
+       0x82040d00, 0x0000ff00, 0x840409c0, 0x0201f800,
+       0x0010a921, 0x04000016, 0x82040580, 0x00000001,
+       0x0400000a, 0x82040580, 0x00000005, 0x04000004,
+       0x82040580, 0x00000007, 0x04020007, 0x591c0008,
+       0x80000540, 0x04000004, 0x59cc2808, 0x0201f000,
+       0x0010a4de, 0x4803c856, 0x4a02641a, 0x00000009,
+       0x4a02621a, 0x00002a00, 0x0401f006, 0x4803c856,
+       0x4a02641a, 0x00000003, 0x4a02621a, 0x00000300,
+       0x4a026403, 0x0000003b, 0x0401f07b, 0x4803c856,
+       0x4a02641a, 0x0000000b, 0x4a02621a, 0x00000000,
+       0x0401f7f8, 0x4c080000, 0x0201f800, 0x001048ec,
+       0x04000026, 0x0201f800, 0x001048c1, 0x0201f800,
+       0x0010a601, 0x0402001e, 0x59a80026, 0x82000540,
+       0x00000003, 0x48035026, 0x59a8001d, 0x800000d0,
+       0x59a80810, 0x82040d00, 0x000000ff, 0x80041540,
+       0x480b5010, 0x42000800, 0x00000003, 0x0201f800,
+       0x00106c78, 0x497b5028, 0x0201f800, 0x00103b25,
+       0x04000003, 0x4a032804, 0x000007d0, 0x8c00050a,
+       0x0402000a, 0x0201f800, 0x0002077d, 0x0201f800,
+       0x00101e45, 0x5c001000, 0x1c01f000, 0x0201f800,
+       0x0010a623, 0x0401f7fc, 0x5c001000, 0x0201f000,
+       0x0002077d, 0x0201f800, 0x0010210a, 0x0402004c,
+       0x0201f800, 0x0010a628, 0x4a026403, 0x00000047,
+       0x4a026203, 0x00000001, 0x0201f000, 0x0010672b,
+       0x0201f800, 0x0010210a, 0x04020041, 0x0201f800,
+       0x0010a628, 0x4a026403, 0x00000047, 0x4a026203,
+       0x00000001, 0x0201f000, 0x0010672b, 0x0201f800,
+       0x0010210a, 0x04020036, 0x0201f800, 0x0010a628,
+       0x0201f000, 0x0002077d, 0x0401f834, 0x04000030,
+       0x4a026403, 0x0000004e, 0x4a026203, 0x00000001,
+       0x0201f000, 0x0010672b, 0x4a026403, 0x0000004f,
+       0x497a601c, 0x59cc0a06, 0x82040d00, 0x000000ff,
+       0x800409c0, 0x0400065f, 0x82040580, 0x00000001,
+       0x04020005, 0x59cc0808, 0x59a80005, 0x80040580,
+       0x04000658, 0x82040580, 0x00000002, 0x0402000a,
+       0x83cc1400, 0x0000000b, 0x4200b000, 0x00000002,
+       0x83341c00, 0x00000006, 0x0201f800, 0x0010855a,
+       0x0400064c, 0x4a02601c, 0x00000001, 0x0401f649,
+       0x4a026403, 0x00000050, 0x59cc0207, 0x4802601c,
+       0x0401f644, 0x4a026203, 0x00000001, 0x42000800,
+       0x80000040, 0x0201f000, 0x00020721, 0x4803c857,
+       0x0201f000, 0x0002077d, 0x4d2c0000, 0x4c500000,
+       0x4c580000, 0x4c540000, 0x59a80016, 0x82000c80,
+       0x00000829, 0x04021029, 0x0201f800, 0x001007d3,
+       0x04000026, 0x492e6008, 0x59a80016, 0x80000104,
+       0x48025802, 0x83cca400, 0x00000006, 0x82000c80,
+       0x0000000b, 0x04001013, 0x4a025811, 0x0000000b,
+       0x4200b000, 0x0000000b, 0x832c0400, 0x00000005,
+       0x4000a800, 0x0201f800, 0x0010ab17, 0x412c7000,
+       0x0201f800, 0x001007d3, 0x04000010, 0x492c7001,
+       0x40040000, 0x800409c0, 0x04000009, 0x0401f7ec,
+       0x48025811, 0x4000b000, 0x832c0400, 0x00000005,
+       0x4000a800, 0x0201f800, 0x0010ab17, 0x82000540,
+       0x00000001, 0x0401f006, 0x497b5016, 0x59325808,
+       0x0201f800, 0x001007fd, 0x80000580, 0x5c00a800,
+       0x5c00b000, 0x5c00a000, 0x5c025800, 0x1c01f000,
+       0x4d340000, 0x59326809, 0x59343400, 0x4933c857,
+       0x4937c857, 0x481bc857, 0x0201f800, 0x001049f3,
+       0x5c026800, 0x1c01f000, 0x4933c857, 0x4c5c0000,
+       0x4d3c0000, 0x0401f840, 0x0402002c, 0x59cc0207,
+       0x82000d00, 0x0000ff00, 0x900411c0, 0x59cc000a,
+       0x82000500, 0x00ffffff, 0x80081540, 0x480a601c,
+       0x8c040d18, 0x0400000e, 0x42003000, 0x00000008,
+       0x0201f800, 0x0010a932, 0x42000000, 0x0010b863,
+       0x0201f800, 0x0010aa47, 0x4200b800, 0x00000002,
+       0x42027800, 0x00000001, 0x0401f011, 0x4178b800,
+       0x8c040d1a, 0x04000011, 0x59cc000a, 0x0201f800,
+       0x00105c9a, 0x0402000d, 0x42003000, 0x00000009,
+       0x0201f800, 0x0010a93a, 0x42000000, 0x0010b863,
+       0x0201f800, 0x0010aa47, 0x417a7800, 0x0201f800,
+       0x001020a1, 0x0401f004, 0x82000540, 0x00000001,
+       0x0401f002, 0x80000580, 0x5c027800, 0x5c00b800,
+       0x1c01f000, 0x4933c857, 0x59cc0206, 0x82000480,
+       0x00000010, 0x04021006, 0x4a02621a, 0x00000000,
+       0x82000540, 0x00000001, 0x0401f002, 0x80000580,
+       0x1c01f000, 0x4933c857, 0x4a02621a, 0x00000000,
+       0x59cc0407, 0x82000500, 0x0000ff00, 0x82000580,
+       0x00000800, 0x04020009, 0x59cc0006, 0x82000500,
+       0x00ff0000, 0x82000d80, 0x00140000, 0x04000003,
+       0x82000d80, 0x00100000, 0x1c01f000, 0x4933c857,
+       0x59300403, 0x82003480, 0x00000051, 0x02021800,
+       0x001005d8, 0x83383580, 0x00000013, 0x04020003,
+       0x4803c857, 0x0c01f012, 0x83383580, 0x00000027,
+       0x04000005, 0x83383580, 0x00000014, 0x02020800,
+       0x001005d8, 0x0201f800, 0x001048c1, 0x42000800,
+       0x00000007, 0x0201f800, 0x00104571, 0x0201f800,
+       0x00106bbf, 0x0201f000, 0x00107911, 0x00109e3c,
+       0x00109e45, 0x00109e3c, 0x00109e3c, 0x00109e3c,
+       0x00109e45, 0x00109e50, 0x00109ecd, 0x00109e95,
+       0x00109ecd, 0x00109ead, 0x00109ecd, 0x00109ebe,
+       0x00109ecd, 0x00109ec6, 0x00109ecd, 0x00109ec6,
+       0x00109ecd, 0x00109ecd, 0x00109e3c, 0x00109e3c,
+       0x00109e3c, 0x00109e3c, 0x00109e3c, 0x00109e3c,
+       0x00109e3c, 0x00109e3c, 0x00109e3c, 0x00109e3c,
+       0x00109e3c, 0x00109e45, 0x00109e3c, 0x00109ecd,
+       0x00109e3c, 0x00109e3c, 0x00109ecd, 0x00109e3c,
+       0x00109eca, 0x00109ecd, 0x00109e3c, 0x00109e3c,
+       0x00109e3c, 0x00109e3c, 0x00109ecd, 0x00109ecd,
+       0x00109e3c, 0x00109ec3, 0x00109ecd, 0x00109e3c,
+       0x00109e4a, 0x00109e3c, 0x00109e3c, 0x00109e3c,
+       0x00109e3c, 0x00109ec9, 0x00109ecd, 0x00109e3c,
+       0x00109e3c, 0x00109ecd, 0x00109ecd, 0x00109e3c,
+       0x00109e3c, 0x00109e3c, 0x00109e3c, 0x00109e3c,
+       0x00109e3c, 0x00109e3c, 0x00109e3c, 0x00109e3c,
+       0x00109e3e, 0x00109e3c, 0x00109e3e, 0x00109e3c,
+       0x00109e3c, 0x00109e3e, 0x00109e3c, 0x00109e3c,
+       0x00109e3c, 0x00109e3e, 0x00109e3e, 0x00109e3e,
+       0x0201f800, 0x001005d8, 0x4d2c0000, 0x59325808,
+       0x0201f800, 0x001007fd, 0x5c025800, 0x0201f000,
+       0x0002077d, 0x59a80037, 0x48026206, 0x4a026203,
+       0x00000002, 0x1c01f000, 0x4d3c0000, 0x417a7800,
+       0x0201f800, 0x00104567, 0x5c027800, 0x0401f07e,
+       0x42000800, 0x00000007, 0x0201f800, 0x00104571,
+       0x59a80026, 0x8c000508, 0x04000012, 0x59326809,
+       0x4c580000, 0x4200b000, 0x00000002, 0x83a81c00,
+       0x00000002, 0x83341400, 0x00000006, 0x0201f800,
+       0x0010855a, 0x80000540, 0x5c00b000, 0x0402006a,
+       0x59340200, 0x8400051a, 0x48026a00, 0x0401f01b,
+       0x599c0017, 0x8c00050a, 0x04020063, 0x4d3c0000,
+       0x417a7800, 0x0201f800, 0x00104567, 0x5c027800,
+       0x42000800, 0x00000007, 0x0201f800, 0x00104571,
+       0x59340212, 0x82000500, 0x0000ff00, 0x04000056,
+       0x599c0019, 0x8c00050e, 0x04020053, 0x416c0000,
+       0x82000580, 0x00000002, 0x04020004, 0x59a8001b,
+       0x80000000, 0x4803501b, 0x42000800, 0x00000003,
+       0x0201f800, 0x00104571, 0x4a026406, 0x00000001,
+       0x4a026203, 0x00000001, 0x4a026403, 0x00000002,
+       0x0201f800, 0x0010672b, 0x4ce80000, 0x4201d000,
+       0x00000001, 0x0201f800, 0x00105fae, 0x5c01d000,
+       0x1c01f000, 0x0201f800, 0x001049f3, 0x04000036,
+       0x0201f800, 0x0010645e, 0x42000800, 0x00000004,
+       0x0201f800, 0x00104571, 0x0201f800, 0x0010a96a,
+       0x0402002d, 0x42000800, 0x00000005, 0x0201f800,
+       0x00104571, 0x4a026406, 0x00000001, 0x4a026203,
+       0x00000001, 0x4a026403, 0x00000003, 0x0201f000,
+       0x0010672b, 0x42000800, 0x00000006, 0x0401f820,
+       0x59303009, 0x599c0017, 0x8c00050a, 0x0402001a,
+       0x59a80026, 0x8c000508, 0x04000017, 0x0201f800,
+       0x001049e7, 0x04000014, 0x59a8001b, 0x80000000,
+       0x4803501b, 0x0401f7c5, 0x42000800, 0x00000004,
+       0x0201f800, 0x00104571, 0x0401f792, 0x42000800,
+       0x00000004, 0x0401f006, 0x0201f800, 0x001048c1,
+       0x0401f005, 0x0401f004, 0x0401f003, 0x0201f800,
+       0x00104571, 0x0201f000, 0x0002077d, 0x4933c857,
+       0x4807c857, 0x0201f800, 0x00104571, 0x4d3c0000,
+       0x417a7800, 0x0201f800, 0x00104567, 0x5c027800,
+       0x0201f800, 0x00102074, 0x1c01f000, 0x4933c857,
+       0x59340400, 0x80000110, 0x82003480, 0x0000000c,
+       0x02021800, 0x001005d8, 0x83383580, 0x00000015,
+       0x04020002, 0x0c01f006, 0x83383580, 0x00000016,
+       0x02020800, 0x001005d8, 0x0c01f00d, 0x001080b8,
+       0x001080b8, 0x001080b8, 0x001080b8, 0x001080b8,
+       0x001080b8, 0x00109f30, 0x00109f03, 0x001080b8,
+       0x001080b8, 0x001080b8, 0x001080b8, 0x001080b8,
+       0x001080b8, 0x001080b8, 0x001080b8, 0x001080b8,
+       0x001080b8, 0x00109f30, 0x00109f37, 0x001080b8,
+       0x001080b8, 0x001080b8, 0x001080b8, 0x4933c857,
+       0x599c0017, 0x8c00050a, 0x0402001b, 0x813669c0,
+       0x04000019, 0x59340212, 0x82000500, 0x0000ff00,
+       0x04000015, 0x599c0019, 0x8c00050e, 0x04020012,
+       0x4d3c0000, 0x417a7800, 0x0201f800, 0x00104567,
+       0x5c027800, 0x42000800, 0x00000003, 0x0201f800,
+       0x00104571, 0x4a026406, 0x00000001, 0x4a026203,
+       0x00000001, 0x4a026403, 0x00000002, 0x0201f000,
+       0x0010672b, 0x59cc0001, 0x0201f800, 0x00105c9a,
+       0x0402000b, 0x0201f800, 0x00020245, 0x02020000,
+       0x0002077d, 0x59345002, 0x0201f800, 0x001042b4,
+       0x482a6802, 0x0201f000, 0x0002077d, 0x1c01f000,
+       0x4933c857, 0x59303403, 0x82183580, 0x0000001e,
+       0x02000000, 0x0002077d, 0x1c01f000, 0x4933c857,
+       0x0201f800, 0x001083df, 0x02020000, 0x0002077d,
+       0x4a026203, 0x00000001, 0x4a026403, 0x00000001,
+       0x0201f000, 0x0010672b, 0x493bc857, 0x83380580,
+       0x00000051, 0x0402000b, 0x0201f800, 0x00106f60,
+       0x02020000, 0x00107974, 0x59300203, 0x82000580,
+       0x00000002, 0x0400006d, 0x0201f800, 0x001005d8,
+       0x83380580, 0x00000027, 0x04000014, 0x83380580,
+       0x00000048, 0x04000006, 0x83380580, 0x00000014,
+       0x0400000e, 0x02020800, 0x001005d8, 0x0201f800,
+       0x00106f60, 0x02020000, 0x00107974, 0x59300203,
+       0x82000580, 0x00000004, 0x02000000, 0x0002086e,
+       0x0201f800, 0x001005d8, 0x59300403, 0x82000c80,
+       0x00000044, 0x02021800, 0x001005d8, 0x82000480,
+       0x00000040, 0x02001800, 0x001005d8, 0x40027000,
+       0x4803c857, 0x0c01f001, 0x00109f76, 0x00109f78,
+       0x00109f78, 0x00109f93, 0x0201f800, 0x001005d8,
+       0x0201f800, 0x00106bbf, 0x59325808, 0x812e59c0,
+       0x04000016, 0x832c0500, 0x00ff0000, 0x04000013,
+       0x4a026203, 0x00000002, 0x59326809, 0x59340200,
+       0x8c00050e, 0x0402000d, 0x42028000, 0x00000004,
+       0x0201f800, 0x0010a3ef, 0x497a6008, 0x59300206,
+       0x80000540, 0x04020003, 0x59a80038, 0x48026206,
+       0x4a026203, 0x00000007, 0x1c01f000, 0x0201f800,
+       0x00106bbf, 0x0201f800, 0x00109037, 0x02000000,
+       0x00107911, 0x59325808, 0x0201f800, 0x001007f4,
+       0x0201f000, 0x00107911, 0x0201f800, 0x001005d8,
+       0x59325808, 0x592c040a, 0x8c000502, 0x04000007,
+       0x4a026203, 0x00000007, 0x42027000, 0x00000043,
+       0x0201f000, 0x000207a1, 0x4a026203, 0x00000004,
+       0x1c01f000, 0x0201f800, 0x0010a597, 0x02000000,
+       0x0002086c, 0x1c01f000, 0x4a026203, 0x00000001,
+       0x4a026403, 0x00000041, 0x42027800, 0x80002042,
+       0x0201f000, 0x00020721, 0x83380580, 0x00000051,
+       0x04000006, 0x83380580, 0x00000041, 0x02020800,
+       0x001005d8, 0x1c01f000, 0x0201f800, 0x000206fd,
+       0x0201f800, 0x0010a5df, 0x0201f000, 0x0002077d,
+       0x83380480, 0x00000050, 0x02021800, 0x001005d8,
+       0x83380480, 0x00000049, 0x02001800, 0x001005d8,
+       0x0c01f001, 0x00109fda, 0x00109ffb, 0x00109fd8,
+       0x00109fd8, 0x00109fd8, 0x00109fd8, 0x00109ffb,
+       0x0201f800, 0x001005d8, 0x59325808, 0x592c040a,
+       0x8c00051e, 0x0400000d, 0x82000d00, 0x000000c0,
+       0x82040d80, 0x00000080, 0x0400000d, 0x59300804,
+       0x8c040d18, 0x0402000a, 0x42027000, 0x00000041,
+       0x0201f000, 0x0002088d, 0x4a026203, 0x00000007,
+       0x497a6206, 0x0201f000, 0x000206fd, 0x59325808,
+       0x592c0c0a, 0x8c040d1a, 0x04020005, 0x0201f800,
+       0x000206fd, 0x0201f000, 0x0002077d, 0x0201f800,
+       0x0010a597, 0x040007fa, 0x1c01f000, 0x0201f800,
+       0x00106b8a, 0x59325808, 0x59326809, 0x59340200,
+       0x8c00050e, 0x0400000e, 0x592c040a, 0x82000500,
+       0x000000c0, 0x82000580, 0x00000080, 0x04000005,
+       0x592c000f, 0x59301815, 0x800c1c80, 0x480e6015,
+       0x4a026203, 0x00000002, 0x0401f00d, 0x42028000,
+       0x00000004, 0x0401fbde, 0x59300206, 0x80000540,
+       0x04020004, 0x59a80038, 0x800000c2, 0x48026206,
+       0x497a6008, 0x4a026203, 0x00000007, 0x1c01f000,
+       0x4a026203, 0x00000007, 0x497a6206, 0x0201f000,
+       0x000206fd, 0x4a026203, 0x00000007, 0x497a6206,
+       0x0201f000, 0x000206f8, 0x59300414, 0x8c00051c,
+       0x02020000, 0x0002087e, 0x59325808, 0x592c200f,
+       0x40080000, 0x80102480, 0x59300015, 0x80102400,
+       0x48126015, 0x0201f000, 0x0002087e, 0x8c040d0e,
+       0x0402000a, 0x4a026203, 0x00000006, 0x0401f823,
+       0x5930001f, 0x80000540, 0x02020800, 0x00100d7c,
+       0x0201f000, 0x000206f8, 0x4a026203, 0x00000002,
+       0x1c01f000, 0x42000800, 0x00000001, 0x0201f800,
+       0x00100d7c, 0x82040580, 0x00000001, 0x02000000,
+       0x00020885, 0x0401f7d8, 0x59300414, 0x8c00051c,
+       0x04000006, 0x0201f800, 0x00100b63, 0x02000000,
+       0x00020877, 0x1c01f000, 0x59300011, 0x80000540,
+       0x04020005, 0x0201f800, 0x00100b63, 0x02000000,
+       0x00020877, 0x1c01f000, 0x492fc857, 0x480bc857,
+       0x8c08153e, 0x04000006, 0x80081080, 0x80081000,
+       0x42000800, 0x00000009, 0x0401f003, 0x42000800,
+       0x00000015, 0x480a580b, 0x1c01f000, 0x83380580,
+       0x00000013, 0x04000005, 0x83380580, 0x00000014,
+       0x02020800, 0x001005d8, 0x59300414, 0x8c000516,
+       0x02000800, 0x001005d8, 0x1c01f000, 0x0201f800,
+       0x001005d8, 0x59300008, 0x80000540, 0x02020800,
+       0x001005d8, 0x1c01f000, 0x59300414, 0x8c000516,
+       0x02000800, 0x001005d8, 0x1c01f000, 0x4a026203,
+       0x00000004, 0x493a6403, 0x42000800, 0x80002001,
+       0x0201f000, 0x00020721, 0x4a026203, 0x00000003,
+       0x493a6403, 0x0201f800, 0x000200c9, 0x59325808,
+       0x592c040a, 0x8c00051e, 0x04000012, 0x82000500,
+       0x000000c0, 0x82000580, 0x00000080, 0x04000011,
+       0x59300414, 0x8c000512, 0x0402000a, 0x8c000510,
+       0x04020008, 0x592c040c, 0x80000540, 0x04020005,
+       0x82080d40, 0x80003065, 0x0201f000, 0x00106721,
+       0x82080d40, 0x80002065, 0x0201f000, 0x00106721,
+       0x82080d40, 0x80002042, 0x0201f000, 0x00106721,
+       0x4933c857, 0x493bc857, 0x83380480, 0x00000044,
+       0x02021800, 0x001005d8, 0x83380480, 0x00000041,
+       0x02001800, 0x001005d8, 0x0c01f001, 0x0010a0b6,
+       0x0010a0c6, 0x0010a0db, 0x59325808, 0x592c040a,
+       0x8c00051e, 0x0400001d, 0x82001d00, 0x000000c0,
+       0x820c1d80, 0x000000c0, 0x04000018, 0x4a026203,
+       0x00000001, 0x493a6403, 0x42000800, 0x80002042,
+       0x0201f000, 0x00020721, 0x59325808, 0x592c040a,
+       0x8c00051e, 0x0400000d, 0x82001d00, 0x000000c0,
+       0x820c1d80, 0x000000c0, 0x04000008, 0x4a026203,
+       0x00000001, 0x493a6403, 0x42000800, 0x80002001,
+       0x0201f000, 0x00020721, 0x497a6008, 0x497a6206,
+       0x42028000, 0x00000004, 0x0401f315, 0x59325808,
+       0x592c040a, 0x8c00051e, 0x040007f8, 0x82001d00,
+       0x000000c0, 0x820c1d80, 0x000000c0, 0x040007f3,
+       0x4a026203, 0x00000003, 0x493a6403, 0x0201f800,
+       0x000200c9, 0x82080d40, 0x80002065, 0x0201f000,
+       0x00106721, 0x4933c857, 0x493bc857, 0x83380580,
+       0x00000085, 0x04000006, 0x83380580, 0x00000088,
+       0x0400000a, 0x0201f800, 0x001005d8, 0x4a026203,
+       0x00000009, 0x493a6403, 0x42000800, 0x8000004b,
+       0x0201f000, 0x00020721, 0x4d1c0000, 0x813669c0,
+       0x04000004, 0x0201f800, 0x0010a592, 0x04020044,
+       0x59cc1404, 0x0401f846, 0x04000018, 0x591c0406,
+       0x82000500, 0x0000001f, 0x82002580, 0x00000006,
+       0x04000007, 0x82002580, 0x00000004, 0x0400002e,
+       0x82002580, 0x00000011, 0x0402000c, 0x497a3a05,
+       0x42002000, 0x00000054, 0x0201f800, 0x00107a4a,
+       0x4a026203, 0x00000007, 0x493a6403, 0x0201f800,
+       0x0010a974, 0x0401f02c, 0x0201f800, 0x00103b25,
+       0x04000004, 0x42023800, 0xffffffff, 0x0401f7f1,
+       0x813669c0, 0x04020009, 0x59cc0001, 0x0201f800,
+       0x00105c9a, 0x0402001e, 0x0201f800, 0x001045a6,
+       0x0402001b, 0x49366009, 0x4a026403, 0x00000087,
+       0x59cc1204, 0x82081580, 0x0000ffff, 0x04020003,
+       0x4a026403, 0x00000086, 0x4a026203, 0x00000001,
+       0x42000800, 0x80000040, 0x0201f800, 0x00020721,
+       0x0401f00d, 0x591c0203, 0x82000580, 0x00000007,
+       0x040207de, 0x4d300000, 0x411e6000, 0x0201f800,
+       0x00107911, 0x5c026000, 0x0401f7d8, 0x0201f800,
+       0x00107911, 0x5c023800, 0x1c01f000, 0x4933c857,
+       0x480bc857, 0x42002800, 0x0010d1c0, 0x41300000,
+       0x80140580, 0x04000017, 0x58140203, 0x82000580,
+       0x00000000, 0x04000013, 0x58140202, 0x80080580,
+       0x04020010, 0x58141c06, 0x820c0580, 0x00000005,
+       0x0400000c, 0x820c0580, 0x00000009, 0x0400001d,
+       0x59302009, 0x58140009, 0x800001c0, 0x0400000b,
+       0x801021c0, 0x04000003, 0x80100580, 0x04000010,
+       0x82142c00, 0x00000024, 0x41540000, 0x80140480,
+       0x0402100e, 0x0401f7e2, 0x5814001e, 0x801021c0,
+       0x04000005, 0x58102002, 0x82102500, 0x00ffffff,
+       0x0401f7f2, 0x5810201e, 0x0401f7f0, 0x40163800,
+       0x81300540, 0x0401f002, 0x80000580, 0x1c01f000,
+       0x58141807, 0x8c0c1d10, 0x040207ea, 0x0401f7e1,
+       0x4933c857, 0x493bc857, 0x83380580, 0x00000013,
+       0x0402000e, 0x59300403, 0x82000c80, 0x00000085,
+       0x02001800, 0x001005d8, 0x82000c80, 0x00000093,
+       0x02021800, 0x001005d8, 0x82000480, 0x00000085,
+       0x4803c857, 0x0c01f018, 0x83380580, 0x00000027,
+       0x04000005, 0x83380580, 0x00000014, 0x02020000,
+       0x00107974, 0x0201f800, 0x00106bbf, 0x59325808,
+       0x812e59c0, 0x02000000, 0x00107911, 0x4a025a06,
+       0x00000031, 0x4a025811, 0x00000004, 0x4a025812,
+       0x000000ff, 0x0201f800, 0x000202da, 0x0201f000,
+       0x00107911, 0x0010a1b7, 0x0010a1be, 0x0010a1be,
+       0x0010a1b7, 0x0010a1b7, 0x0010a1b7, 0x0010a1b7,
+       0x0010a1b7, 0x0010a1b7, 0x0010a1b7, 0x0010a1b7,
+       0x0010a1b7, 0x0010a1b7, 0x0010a1b9, 0x0201f800,
+       0x001005d8, 0x59325808, 0x4a025a06, 0x00000000,
+       0x0201f800, 0x000202da, 0x0201f000, 0x00107911,
+       0x4933c857, 0x42000000, 0x0010b873, 0x0201f800,
+       0x0010aa47, 0x0201f800, 0x0010a5df, 0x497a6205,
+       0x42028000, 0x0000000b, 0x0401f807, 0x4a026406,
+       0x00000006, 0x4a026203, 0x00000007, 0x497a6206,
+       0x1c01f000, 0x4933c857, 0x4943c857, 0x59300406,
+       0x82000580, 0x00000007, 0x04020002, 0x1c01f000,
+       0x0201f800, 0x00106c55, 0x4df00000, 0x0201f800,
+       0x00108ce5, 0x82000c80, 0x0000000e, 0x02021800,
+       0x001005d8, 0x0c01f001, 0x0010a205, 0x0010a209,
+       0x0010a1f0, 0x0010a217, 0x0010a22a, 0x0010a1f0,
+       0x0010a1f0, 0x0010a1f0, 0x0010a1f0, 0x0010a1f0,
+       0x0010a1f0, 0x0010a1f0, 0x0010a1f0, 0x0010a1f0,
+       0x4d400000, 0x5930001f, 0x80000540, 0x04000005,
+       0x41400800, 0x0201f800, 0x00100d7c, 0x40068000,
+       0x4d2c0000, 0x59325808, 0x0201f800, 0x00109037,
+       0x040209f3, 0x4c5c0000, 0x5930b809, 0x0201f800,
+       0x00107911, 0x485e6009, 0x5c00b800, 0x5c025800,
+       0x5c028000, 0x5c03e000, 0x02000000, 0x00106c4b,
+       0x1c01f000, 0x598c000d, 0x81300580, 0x04020004,
+       0x0201f800, 0x00106e8e, 0x04020016, 0x0201f800,
+       0x001068d3, 0x040007df, 0x0201f800, 0x00106b6c,
+       0x04000010, 0x0201f800, 0x001005d8, 0x0201f800,
+       0x00108cd6, 0x04020004, 0x0201f800, 0x00106e62,
+       0x04020008, 0x0201f800, 0x001067ae, 0x040007d1,
+       0x0201f800, 0x00106b6c, 0x02020800, 0x001005d8,
+       0x59300203, 0x82000c80, 0x0000000e, 0x02021800,
+       0x001005d8, 0x0c01f7b9, 0x0201f800, 0x00100e99,
+       0x0401f7c4, 0x4933c857, 0x4d440000, 0x4d340000,
+       0x59cc0007, 0x0201f800, 0x00105c9a, 0x02000800,
+       0x00020245, 0x0402001a, 0x59300009, 0x4c000000,
+       0x49366009, 0x42003000, 0x0000000b, 0x0201f800,
+       0x0010a942, 0x42000000, 0x0010b861, 0x0201f800,
+       0x0010aa47, 0x4d3c0000, 0x4d400000, 0x42028000,
+       0x00000029, 0x417a7800, 0x0201f800, 0x0010203c,
+       0x5c028000, 0x5c027800, 0x5c000000, 0x48026009,
+       0x59cc0007, 0x48026802, 0x80000580, 0x5c026800,
+       0x5c028800, 0x1c01f000, 0x4933c857, 0x4c040000,
+       0x59a80016, 0x82000580, 0x00000074, 0x04020040,
+       0x59cc0a08, 0x82040480, 0x00000100, 0x04001033,
+       0x59cc0c08, 0x82040500, 0x00008000, 0x04000035,
+       0x59a80032, 0x80000540, 0x04020009, 0x59301009,
+       0x58080212, 0x82000500, 0x0000ff00, 0x04000004,
+       0x82040500, 0x00000800, 0x0400002a, 0x59cc0c09,
+       0x80040840, 0x04001024, 0x59a80826, 0x8c040d06,
+       0x04000004, 0x59cc0c0f, 0x8c040d1e, 0x04020012,
+       0x59cc0a17, 0x800409c0, 0x04020012, 0x59cc0a18,
+       0x82040480, 0x00000100, 0x04001014, 0x59cc0c18,
+       0x800409c0, 0x0402000e, 0x59cc0c19, 0x80040840,
+       0x04001011, 0x59cc0c1a, 0x80040840, 0x04001011,
+       0x0401f018, 0x4a02621a, 0x00000100, 0x0401f012,
+       0x4a02621a, 0x00000300, 0x0401f00f, 0x4a02621a,
+       0x00000500, 0x0401f00c, 0x4a02621a, 0x00000700,
+       0x0401f009, 0x4a02621a, 0x00000900, 0x0401f006,
+       0x4a02621a, 0x00000f00, 0x0401f003, 0x4a02621a,
+       0x00002d00, 0x82000540, 0x00000001, 0x0401f002,
+       0x80000580, 0x5c000800, 0x1c01f000, 0x59cc0407,
+       0x4803c857, 0x82000580, 0x00000800, 0x04000003,
+       0x4a02621a, 0x00000000, 0x1c01f000, 0x4933c857,
+       0x4c040000, 0x4c080000, 0x4c0c0000, 0x4c580000,
+       0x59cc000c, 0x0201f800, 0x00105c9a, 0x02000800,
+       0x00020245, 0x04020012, 0x83cc1400, 0x00000008,
+       0x4200b000, 0x00000002, 0x83341c00, 0x00000006,
+       0x0201f800, 0x0010855a, 0x04020009, 0x83cc1400,
+       0x0000000a, 0x4200b000, 0x00000002, 0x83341c00,
+       0x00000008, 0x0201f800, 0x0010855a, 0x5c00b000,
+       0x5c001800, 0x5c001000, 0x5c000800, 0x1c01f000,
+       0x4933c857, 0x4c000000, 0x4c040000, 0x4c080000,
+       0x4c0c0000, 0x4c580000, 0x59cc0001, 0x0201f800,
+       0x00105c9a, 0x02000800, 0x00020245, 0x04020014,
+       0x83cc1400, 0x0000000b, 0x4200b000, 0x00000002,
+       0x83341c00, 0x00000006, 0x0201f800, 0x0010855a,
+       0x0402000c, 0x83cc1400, 0x0000000d, 0x4200b000,
+       0x00000002, 0x83341c00, 0x00000008, 0x0201f800,
+       0x0010855a, 0x04000014, 0x4933c856, 0x4933c856,
+       0x4933c857, 0x59340009, 0x4803c857, 0x5934000e,
+       0x4803c857, 0x59340008, 0x4803c857, 0x5934000d,
+       0x4803c857, 0x59340007, 0x4803c857, 0x5934000c,
+       0x4803c857, 0x59340006, 0x4803c857, 0x5934000b,
+       0x4803c857, 0x5c00b000, 0x5c001800, 0x5c001000,
+       0x5c000800, 0x5c000000, 0x1c01f000, 0x4933c857,
+       0x4947c857, 0x4943c857, 0x4c600000, 0x0201f800,
+       0x00106c55, 0x4df00000, 0x4d2c0000, 0x4d300000,
+       0x4d340000, 0x4130c000, 0x42026000, 0x0010d1c0,
+       0x59a8000e, 0x8060c1c0, 0x04000005, 0x82601580,
+       0x0010bde9, 0x04000002, 0x80000040, 0x81640480,
+       0x040210be, 0x40600000, 0x81300580, 0x040000b6,
+       0x0401f97a, 0x040200b4, 0x59326809, 0x59300406,
+       0x82000c80, 0x00000012, 0x02021800, 0x001005d8,
+       0x0c01f001, 0x0010a3cd, 0x0010a338, 0x0010a351,
+       0x0010a35c, 0x0010a335, 0x0010a34c, 0x0010a387,
+       0x0010a3cd, 0x0010a333, 0x0010a39a, 0x0010a3ae,
+       0x0010a333, 0x0010a333, 0x0010a333, 0x0010a333,
+       0x0010a3cd, 0x0010a3c4, 0x0010a3bc, 0x0201f800,
+       0x001005d8, 0x59300420, 0x8c000500, 0x04020096,
+       0x59300403, 0x82000580, 0x00000043, 0x04000092,
+       0x0201f800, 0x00109134, 0x04000007, 0x0201f800,
+       0x0010914e, 0x0402008a, 0x0201f800, 0x0010801c,
+       0x0401f087, 0x0201f800, 0x00102074, 0x0201f800,
+       0x0010914e, 0x02000800, 0x0010801c, 0x0401f080,
+       0x8d3e7d18, 0x04000004, 0x59300420, 0x8c000500,
+       0x0402007d, 0x59325808, 0x0201f800, 0x00109037,
+       0x04000077, 0x49425a06, 0x497a5c09, 0x0201f800,
+       0x000202da, 0x0201f800, 0x0010912a, 0x0401f070,
+       0x8d3e7d00, 0x04000007, 0x59300017, 0x81480580,
+       0x0402006d, 0x59300018, 0x814c0580, 0x0402006a,
+       0x59300203, 0x82000580, 0x00000004, 0x02000800,
+       0x00100e99, 0x59325808, 0x0201f800, 0x00109037,
+       0x0400005f, 0x4a025a04, 0x00000103, 0x59300004,
+       0x8400055c, 0x48026004, 0x592c0408, 0x8c000512,
+       0x04000007, 0x4d2c0000, 0x592c0009, 0x40025800,
+       0x0201f800, 0x001007fd, 0x5c025800, 0x49425a06,
+       0x497a5c09, 0x0401fb16, 0x0201f800, 0x0010959c,
+       0x0201f800, 0x001091c6, 0x0201f800, 0x000202da,
+       0x0201f800, 0x0010912a, 0x0401f045, 0x8d3e7d18,
+       0x04000045, 0x59300203, 0x82000580, 0x00000004,
+       0x02000800, 0x00100e99, 0x59325808, 0x0201f800,
+       0x00109037, 0x0400003a, 0x49425a06, 0x497a5c09,
+       0x0401faff, 0x0201f800, 0x0010959c, 0x0201f800,
+       0x000202da, 0x0401f032, 0x0201f800, 0x001062d5,
+       0x04000031, 0x59300203, 0x82000580, 0x00000004,
+       0x0400002d, 0x59300203, 0x82000580, 0x00000003,
+       0x04020029, 0x0201f800, 0x00106b8a, 0x59325808,
+       0x0201f800, 0x00109037, 0x04000021, 0x0201f800,
+       0x000202da, 0x0401f01e, 0x59300203, 0x82000580,
+       0x00000004, 0x02000800, 0x00100e99, 0x59325808,
+       0x0201f800, 0x00109037, 0x04000015, 0x49425a06,
+       0x497a5c09, 0x0201f800, 0x000202da, 0x0401f010,
+       0x833c0500, 0x00001800, 0x0400000f, 0x8d3e7d16,
+       0x0402000d, 0x59325817, 0x0201f800, 0x001007fd,
+       0x59325808, 0x0201f800, 0x00109037, 0x04000004,
+       0x49425a06, 0x0201f800, 0x000202da, 0x0201f800,
+       0x00107911, 0x83326400, 0x00000024, 0x41580000,
+       0x81300480, 0x0400173b, 0x5c026800, 0x5c026000,
+       0x5c025800, 0x5c03e000, 0x02000800, 0x00106c4b,
+       0x5c00c000, 0x1c01f000, 0x5c000000, 0x4c000000,
+       0x4803c857, 0x4d3c0000, 0x42027800, 0x00000001,
+       0x0201f800, 0x00104567, 0x5c027800, 0x4c580000,
+       0x4200b000, 0x00000002, 0x83a81c00, 0x00000002,
+       0x83cc1400, 0x0000000b, 0x0201f800, 0x0010855a,
+       0x5c00b000, 0x80000540, 0x1c01f000, 0x492fc857,
+       0x4943c857, 0x59a8000c, 0x812c0480, 0x04001011,
+       0x59a8000d, 0x812c0480, 0x0402100e, 0x592c0000,
+       0x80005d40, 0x04000008, 0x497a5800, 0x49425a06,
+       0x4c2c0000, 0x0201f800, 0x000202da, 0x5c025800,
+       0x0401f7f7, 0x49425a06, 0x0201f000, 0x000202da,
+       0x1c01f000, 0x493fc857, 0x4933c857, 0x480bc857,
+       0x0201f800, 0x00103b25, 0x0400002e, 0x41502800,
+       0x813e79c0, 0x04020006, 0x59a80066, 0x80000000,
+       0x59a8086a, 0x80040580, 0x04000026, 0x41300000,
+       0x80140580, 0x0400001a, 0x58140203, 0x82000580,
+       0x00000000, 0x04000016, 0x58140202, 0x80080580,
+       0x04020013, 0x58141c06, 0x820c0580, 0x00000005,
+       0x0400000f, 0x820c0580, 0x00000009, 0x04000017,
+       0x59300009, 0x58142009, 0x801021c0, 0x04020006,
+       0x5814201e, 0x59301809, 0x580c0002, 0x82000500,
+       0x00ffffff, 0x80100580, 0x04000007, 0x82142c00,
+       0x00000024, 0x41540000, 0x80140480, 0x04021005,
+       0x0401f7df, 0x40163800, 0x81300540, 0x0401f002,
+       0x80000580, 0x1c01f000, 0x58141807, 0x8c0c1d10,
+       0x040207f3, 0x0401f7e7, 0x42002000, 0x0000ffff,
+       0x59301009, 0x800811c0, 0x04000002, 0x58082403,
+       0x41301000, 0x0401f007, 0x41781000, 0x41442000,
+       0x0401f004, 0x41781000, 0x42002000, 0x0000ffff,
+       0x5c000000, 0x4c000000, 0x4803c857, 0x480bc857,
+       0x4813c857, 0x492fc857, 0x4943c857, 0x4d2c0000,
+       0x0201f800, 0x001007e4, 0x02000800, 0x001005d8,
+       0x4a025a04, 0x0000010d, 0x800811c0, 0x04000017,
+       0x83400580, 0x00000029, 0x04020010, 0x82180580,
+       0x00000002, 0x0400000a, 0x82180580, 0x00000003,
+       0x04000007, 0x82180580, 0x00000008, 0x04000004,
+       0x82180580, 0x00000009, 0x04020004, 0x4a025809,
+       0xffffffff, 0x0401f002, 0x480a5809, 0x58080202,
+       0x48025c13, 0x0401f005, 0x4a025809, 0xffffffff,
+       0x4a025c13, 0x0000ffff, 0x49425a08, 0x48125a06,
+       0x82100580, 0x0000ffff, 0x0400000e, 0x4d440000,
+       0x4d340000, 0x40128800, 0x0201f800, 0x00020245,
+       0x02020800, 0x001005d8, 0x59340002, 0x82000500,
+       0x00ffffff, 0x48025812, 0x5c026800, 0x5c028800,
+       0x497a5800, 0x497a5c04, 0x83400580, 0x00000046,
+       0x04020002, 0x48165a07, 0x481a5c08, 0x0401fbed,
+       0x5c025800, 0x1c01f000, 0x59300809, 0x800409c0,
+       0x04000004, 0x58040403, 0x81440580, 0x1c01f000,
+       0x82000540, 0x00000001, 0x0401f7fd, 0x4933c857,
+       0x4c040000, 0x59300403, 0x82000d80, 0x0000001e,
+       0x04020016, 0x800000d0, 0x59300a16, 0x82040d00,
+       0x000000ff, 0x80040540, 0x4803c857, 0x48026416,
+       0x4a026403, 0x00000085, 0x4a026203, 0x00000009,
+       0x4a026406, 0x00000005, 0x4a02621d, 0x00000004,
+       0x59a80038, 0x48026206, 0x42000800, 0x8000004b,
+       0x0201f800, 0x00020721, 0x5c000800, 0x1c01f000,
+       0x4933c857, 0x40000000, 0x40000000, 0x1c01f000,
+       0x59300414, 0x4933c857, 0x4803c857, 0x8c000518,
+       0x04000009, 0x8c000512, 0x02020000, 0x0010921e,
+       0x0401f91b, 0x0201f800, 0x000206fd, 0x0201f800,
+       0x0002077d, 0x1c01f000, 0x591c0406, 0x4803c857,
+       0x82000c80, 0x00000009, 0x0402100b, 0x0c01f001,
+       0x0010a4d9, 0x0010a4d9, 0x0010a4d9, 0x0010a4db,
+       0x0010a4d9, 0x0010a4db, 0x0010a4db, 0x0010a4d9,
+       0x0010a4db, 0x80000580, 0x1c01f000, 0x82000540,
+       0x00000001, 0x1c01f000, 0x591c0406, 0x82000500,
+       0x0000001f, 0x82000580, 0x00000006, 0x0400000e,
+       0x4803c857, 0x4a026403, 0x0000003b, 0x4a02641a,
+       0x00000009, 0x4a02621a, 0x00002a00, 0x4a026203,
+       0x00000001, 0x42000800, 0x80000040, 0x0201f000,
+       0x00020721, 0x4803c856, 0x4c040000, 0x4c140000,
+       0x4d300000, 0x411e6000, 0x0401f8e9, 0x497a6205,
+       0x59300414, 0x4803c857, 0x82000500, 0xffffadff,
+       0x48026414, 0x497a6405, 0x5c026000, 0x0201f800,
+       0x001007e4, 0x02000800, 0x001005d8, 0x5c002800,
+       0x5c000800, 0x4a025a04, 0x0000010d, 0x497a5800,
+       0x497a5c04, 0x4a025a08, 0x00000045, 0x491e5809,
+       0x59300402, 0x48025c07, 0x59300419, 0x48025c0b,
+       0x591c0414, 0x84000556, 0x48023c14, 0x591c1809,
+       0x580c0403, 0x48025a06, 0x4816580a, 0x48065a0b,
+       0x0401f99d, 0x4d400000, 0x42028000, 0x00000045,
+       0x591c0202, 0x4c000000, 0x4d300000, 0x411e6000,
+       0x0401fcb1, 0x5c026000, 0x5c000000, 0x48023a02,
+       0x5c028000, 0x4a023c06, 0x00000006, 0x4a023a03,
+       0x00000007, 0x497a3a06, 0x497a3a05, 0x1c01f000,
+       0x4933c857, 0x83380580, 0x00000013, 0x0402000b,
+       0x59300403, 0x4803c857, 0x82000d80, 0x00000085,
+       0x0400002b, 0x82000d80, 0x0000008b, 0x04000028,
+       0x0201f800, 0x001005d8, 0x83380580, 0x00000027,
+       0x0402000c, 0x0201f800, 0x00106bbf, 0x4d2c0000,
+       0x4d400000, 0x59325808, 0x42028000, 0x00000004,
+       0x0401feab, 0x5c028000, 0x5c025800, 0x1c01f000,
+       0x83380580, 0x00000014, 0x040007f3, 0x83380580,
+       0x00000089, 0x04000005, 0x83380580, 0x0000008a,
+       0x02020000, 0x00107974, 0x0201f800, 0x00106f60,
+       0x02020000, 0x00107974, 0x59300a03, 0x82040580,
+       0x0000000a, 0x04000009, 0x82040580, 0x0000000c,
+       0x04000006, 0x0201f800, 0x001005d8, 0x4a026203,
+       0x0000000a, 0x1c01f000, 0x83380480, 0x00000093,
+       0x0402100c, 0x83380480, 0x00000085, 0x04001009,
+       0x83380580, 0x00000089, 0x0400000a, 0x83380580,
+       0x0000008a, 0x04000022, 0x0201f800, 0x001005d8,
+       0x493bc857, 0x4933c857, 0x0201f000, 0x00107974,
+       0x4933c857, 0x4c340000, 0x41306800, 0x0201f800,
+       0x0002075a, 0x04000011, 0x4a026203, 0x00000001,
+       0x4a026403, 0x0000001e, 0x59cc0c07, 0x48066419,
+       0x59cc0a07, 0x48066219, 0x58340809, 0x48066009,
+       0x4a026406, 0x00000004, 0x42000800, 0x80000040,
+       0x0201f800, 0x00020721, 0x40366000, 0x0201f800,
+       0x0002077d, 0x5c006800, 0x1c01f000, 0x4933c857,
+       0x0201f000, 0x0002077d, 0x4933c857, 0x59300809,
+       0x58040200, 0x8c00051a, 0x1c01f000, 0x0201f800,
+       0x001048df, 0x0400001e, 0x4a026203, 0x00000002,
+       0x59300414, 0x84000558, 0x48026414, 0x8c000512,
+       0x04000004, 0x59a80039, 0x48026205, 0x0401f007,
+       0x59a80839, 0x59a80037, 0x80040400, 0x82000400,
+       0x0000000a, 0x48026205, 0x59300009, 0x82000c00,
+       0x00000011, 0x50040000, 0x80000540, 0x04000004,
+       0x82000c00, 0x00000000, 0x0401f7fb, 0x45300800,
+       0x497a6000, 0x82000540, 0x00000001, 0x1c01f000,
+       0x82100500, 0xfffffeef, 0x04020020, 0x4d2c0000,
+       0x4937c857, 0x59340811, 0x83341400, 0x00000011,
+       0x800409c0, 0x0400000e, 0x40040000, 0x81300580,
+       0x04000005, 0x58040800, 0x82041400, 0x00000000,
+       0x0401f7f8, 0x59300800, 0x497a6000, 0x44041000,
+       0x0201f800, 0x000206fd, 0x0401f002, 0x4933c857,
+       0x592c0000, 0x80000540, 0x02020800, 0x001005d8,
+       0x5c025800, 0x492e6008, 0x0201f800, 0x000206fd,
+       0x0201f000, 0x0002077d, 0x492fc857, 0x4a025a06,
+       0x00000006, 0x0201f000, 0x000202da, 0x4c340000,
+       0x59300009, 0x800001c0, 0x04000010, 0x82006c00,
+       0x00000011, 0x50340000, 0x80000540, 0x04000009,
+       0x81300580, 0x04000005, 0x50340000, 0x82006c00,
+       0x00000000, 0x0401f7f8, 0x59300000, 0x44006800,
+       0x5c006800, 0x1c01f000, 0x59300c06, 0x82040580,
+       0x00000005, 0x040007fb, 0x82040580, 0x00000011,
+       0x040007f8, 0x82040580, 0x00000006, 0x040007f5,
+       0x82040580, 0x00000001, 0x040007f2, 0x0201f800,
+       0x001005d8, 0x4933c857, 0x4c080000, 0x4c0c0000,
+       0x4c580000, 0x59a8101d, 0x59cc1807, 0x820c1d00,
+       0x00ffffff, 0x800c0110, 0x80083580, 0x04020014,
+       0x83cc1400, 0x00000008, 0x4200b000, 0x00000002,
+       0x59300009, 0x82001c00, 0x00000006, 0x0201f800,
+       0x0010855a, 0x0402000a, 0x83cc1400, 0x0000000a,
+       0x4200b000, 0x00000002, 0x59300009, 0x82001c00,
+       0x00000008, 0x0201f800, 0x0010855a, 0x5c00b000,
+       0x5c001800, 0x5c001000, 0x1c01f000, 0x4933c856,
+       0x0201f800, 0x0010421b, 0x0201f000, 0x00101e45,
+       0x493bc857, 0x4d2c0000, 0x0201f800, 0x001007e4,
+       0x02000800, 0x001005d8, 0x832cac00, 0x00000005,
+       0x4c580000, 0x4c540000, 0x4200b000, 0x00000006,
+       0x4578a800, 0x8054a800, 0x8058b040, 0x040207fd,
+       0x83380580, 0x00000046, 0x04020004, 0x4a025a04,
+       0x00000144, 0x0401f008, 0x4a025a04, 0x00000146,
+       0x83380580, 0x00000041, 0x04000003, 0x4a025a06,
+       0x00000001, 0x59cc0007, 0x82000500, 0xff000000,
+       0x80000110, 0x59cc1008, 0x82081500, 0xff000000,
+       0x80081540, 0x480a580a, 0x83380580, 0x00000046,
+       0x04020006, 0x59cc0007, 0x82000500, 0x00ffffff,
+       0x4802580b, 0x0401f005, 0x59cc0008, 0x82000500,
+       0x00ffffff, 0x4802580b, 0x83380580, 0x00000046,
+       0x04020004, 0x83cc1400, 0x00000009, 0x0401f003,
+       0x83cc1400, 0x0000000d, 0x50080000, 0x9c0001c0,
+       0x4802580c, 0x80081000, 0x50080000, 0x9c0001c0,
+       0x4802580d, 0x83380580, 0x00000046, 0x04020008,
+       0x59cc000b, 0x9c0001c0, 0x4802580e, 0x59cc000c,
+       0x9c0001c0, 0x4802580f, 0x0401f007, 0x59cc000f,
+       0x9c0001c0, 0x4802580e, 0x59cc0010, 0x9c0001c0,
+       0x4802580f, 0x83380580, 0x00000046, 0x04020004,
+       0x83cc1400, 0x00000011, 0x0401f003, 0x83cc1400,
+       0x00000015, 0x412c3000, 0x82183400, 0x00000010,
+       0x4200b000, 0x00000004, 0x50080000, 0x9c0001c0,
+       0x44003000, 0x80081000, 0x80183000, 0x8058b040,
+       0x040207fa, 0x5c00a800, 0x5c00b000, 0x0201f800,
+       0x000202da, 0x5c025800, 0x1c01f000, 0x4933c857,
+       0x492fc857, 0x59300809, 0x58040200, 0x8c00051e,
+       0x04000004, 0x592c0208, 0x84000558, 0x48025a08,
+       0x1c01f000, 0x59e0180f, 0x599c0413, 0x800c1000,
+       0x80080580, 0x04020002, 0x41781000, 0x59e00010,
+       0x59e00810, 0x80040d80, 0x040207fd, 0x80080580,
+       0x0400000b, 0x4c080000, 0x599c0814, 0x599c1015,
+       0x800c00cc, 0x80040c00, 0x82081440, 0x00000000,
+       0x5c001800, 0x82000540, 0x00000001, 0x4803c857,
+       0x1c01f000, 0x492fc857, 0x42007000, 0x0010b7f8,
+       0x58380807, 0x800409c0, 0x04020005, 0x492c7008,
+       0x492c7007, 0x0201f000, 0x00100875, 0x492c0800,
+       0x492c7007, 0x1c01f000, 0x59300203, 0x4933c857,
+       0x4937c857, 0x493bc857, 0x4803c857, 0x82003480,
+       0x0000000e, 0x02021800, 0x001005d8, 0x0c01f001,
+       0x0010a6da, 0x0010a82c, 0x0010a6da, 0x0010a6da,
+       0x0010a6da, 0x0010a6da, 0x0010a6da, 0x0010a791,
+       0x0010a6dc, 0x0010a6da, 0x0010a6da, 0x0010a6da,
+       0x0010a6da, 0x0010a6da, 0x0201f800, 0x001005d8,
+       0x83380580, 0x0000004c, 0x02020800, 0x001005d8,
+       0x0201f800, 0x001048ec, 0x04020020, 0x59a80826,
+       0x82040500, 0x00000009, 0x82000580, 0x00000008,
+       0x0400001a, 0x8c040d12, 0x0400003d, 0x59cc0806,
+       0x82040d00, 0xff000000, 0x82040580, 0x03000000,
+       0x0400001f, 0x82040580, 0x50000000, 0x04000005,
+       0x82040580, 0x52000000, 0x02020000, 0x0002077d,
+       0x813669c0, 0x04000006, 0x4d3c0000, 0x417a7800,
+       0x0201f800, 0x0010203c, 0x5c027800, 0x4a026403,
+       0x00000001, 0x0401f014, 0x59cc0806, 0x82040d00,
+       0xff000000, 0x82040580, 0x03000000, 0x04000008,
+       0x82040580, 0x50000000, 0x04000005, 0x82040580,
+       0x52000000, 0x02020000, 0x0002077d, 0x4a026403,
+       0x00000009, 0x4a02641a, 0x00000009, 0x4a02621a,
+       0x00000000, 0x813669c0, 0x0402000b, 0x59cc0001,
+       0x0201f800, 0x00105c9a, 0x02020000, 0x0002077d,
+       0x0201f800, 0x001045a6, 0x02020000, 0x0002077d,
+       0x49366009, 0x4a026406, 0x00000004, 0x4a026203,
+       0x00000001, 0x0201f000, 0x0010672b, 0x0201f800,
+       0x00103b25, 0x04000023, 0x59cc0806, 0x4807c857,
+       0x82040d00, 0xff000000, 0x82040580, 0x03000000,
+       0x04000033, 0x82040580, 0x20000000, 0x04000041,
+       0x82040580, 0x21000000, 0x04000052, 0x82040580,
+       0x24000000, 0x0400004f, 0x82040580, 0x50000000,
+       0x0400004c, 0x82040580, 0x52000000, 0x04000049,
+       0x82040580, 0x05000000, 0x0402000d, 0x59cc0806,
+       0x82040d00, 0xff000000, 0x9c0431c0, 0x42028000,
+       0x00000046, 0x42002800, 0x00000001, 0x0401fcf3,
+       0x0401f93c, 0x02000800, 0x001005d8, 0x42002000,
+       0x00000051, 0x0201f800, 0x00107a4a, 0x59cc0000,
+       0x82000500, 0x00ffffff, 0x82000580, 0x00ffffff,
+       0x04000005, 0x4a026203, 0x00000007, 0x493a6403,
+       0x1c01f000, 0x59325817, 0x812e59c0, 0x02020800,
+       0x001007fd, 0x0201f000, 0x0002077d, 0x813669c0,
+       0x040007df, 0x59340400, 0x82000500, 0x000000ff,
+       0x82000580, 0x00000003, 0x040207d9, 0x0401fc6f,
+       0x040207d7, 0x4a026403, 0x00000009, 0x4a02641a,
+       0x0000000e, 0x4a02621a, 0x00001900, 0x0401f7a2,
+       0x813669c0, 0x0400000c, 0x59340c00, 0x82040500,
+       0x000000ff, 0x82000580, 0x00000009, 0x04000794,
+       0x82040500, 0x0000ff00, 0x82000580, 0x00000700,
+       0x040207c3, 0x4a026403, 0x00000009, 0x4a02641a,
+       0x00000009, 0x4a02621a, 0x00001e00, 0x0401f78e,
+       0x813669c0, 0x040007f8, 0x59340c00, 0x82040500,
+       0x0000ff00, 0x82000580, 0x00000700, 0x040007f2,
+       0x0401f7b3, 0x4d2c0000, 0x4c580000, 0x4c500000,
+       0x4c540000, 0x41385000, 0x83380580, 0x00000054,
+       0x02020800, 0x001005d8, 0x59325808, 0x592c0c0b,
+       0x82040d00, 0x0000e000, 0x82040580, 0x00002000,
+       0x04020076, 0x59300817, 0x800409c0, 0x04000014,
+       0x58041404, 0x41cca800, 0x8204a400, 0x00000005,
+       0x82080480, 0x00000010, 0x04021004, 0x4008b000,
+       0x0401fb6b, 0x0401f00a, 0x40001000, 0x4200b000,
+       0x0000000f, 0x0401fb66, 0x58040801, 0x800409c0,
+       0x040207f2, 0x0201f800, 0x001005d8, 0x813669c0,
+       0x0400005e, 0x59344c00, 0x592c0c09, 0x4807c857,
+       0x4827c857, 0x82040d00, 0x000000ff, 0x82040580,
+       0x00000003, 0x0400002a, 0x82040580, 0x00000005,
+       0x04000032, 0x82040580, 0x00000020, 0x04000036,
+       0x82040580, 0x00000052, 0x04000042, 0x82040580,
+       0x00000050, 0x04000042, 0x82040580, 0x00000021,
+       0x04000004, 0x82040580, 0x00000024, 0x04020043,
+       0x82240500, 0x0000ff00, 0x82000580, 0x00000007,
+       0x04000008, 0x42000800, 0x00000009, 0x0201f800,
+       0x00104571, 0x42005000, 0x0000000c, 0x0401f037,
+       0x4a025a06, 0x00000031, 0x4a02580d, 0x00000009,
+       0x59340400, 0x4802580e, 0x0201f800, 0x000202da,
+       0x0201f800, 0x00107911, 0x0401f03d, 0x0201f800,
+       0x001042b4, 0x0201f800, 0x0010462a, 0x42000800,
+       0x00000003, 0x0201f800, 0x00104571, 0x42005000,
+       0x00000008, 0x0401f021, 0x59cc0007, 0x0201f800,
+       0x00105eec, 0x0402001d, 0x0201f800, 0x001042b4,
+       0x0401f01a, 0x82240500, 0x0000ff00, 0x82000580,
+       0x00000007, 0x040007df, 0x82240500, 0x000000ff,
+       0x82000580, 0x00000009, 0x040007da, 0x0201f800,
+       0x0010468d, 0x42005000, 0x0000000a, 0x0401f00b,
+       0x42005000, 0x0000000e, 0x0401f003, 0x42005000,
+       0x00000010, 0x82240500, 0x0000ff00, 0x82000580,
+       0x00000007, 0x040007cb, 0x482a6403, 0x4a026203,
+       0x00000001, 0x592c000d, 0x48026011, 0x497a6013,
+       0x59a80038, 0x48026206, 0x417a7800, 0x0201f800,
+       0x0010672b, 0x59325817, 0x812e59c0, 0x04000004,
+       0x0201f800, 0x001007fd, 0x497a6017, 0x5c00a800,
+       0x5c00a000, 0x5c00b000, 0x5c025800, 0x1c01f000,
+       0x4d2c0000, 0x59325808, 0x83380580, 0x00000013,
+       0x04020029, 0x59300c03, 0x82040580, 0x00000054,
+       0x0400001e, 0x82040580, 0x00000010, 0x04000018,
+       0x82040580, 0x0000000e, 0x04000015, 0x82040580,
+       0x00000008, 0x0400000d, 0x82040580, 0x0000000c,
+       0x0400000a, 0x82040580, 0x0000000a, 0x02020800,
+       0x001005d8, 0x42000800, 0x00000006, 0x0201f800,
+       0x00104571, 0x0401f009, 0x42000800, 0x00000004,
+       0x0201f800, 0x00104571, 0x0401f004, 0x59340200,
+       0x8400051a, 0x48026a00, 0x4a025a06, 0x00000000,
+       0x0201f800, 0x000202da, 0x0201f800, 0x0002077d,
+       0x0401f022, 0x83380580, 0x00000027, 0x0400000e,
+       0x83380580, 0x00000014, 0x02020800, 0x001005d8,
+       0x0201f800, 0x00106bbf, 0x42028000, 0x00000031,
+       0x42000800, 0x00000004, 0x42001000, 0x000000ff,
+       0x0401f009, 0x0201f800, 0x00106bbf, 0x42028000,
+       0x00000031, 0x42000800, 0x00000004, 0x42001000,
+       0x00000010, 0x49425a06, 0x4806580d, 0x480a580e,
+       0x0201f800, 0x000202da, 0x0201f800, 0x00104c19,
+       0x0201f800, 0x00107911, 0x5c025800, 0x1c01f000,
+       0x42007000, 0x0010b7f8, 0x58380807, 0x800409c0,
+       0x04020005, 0x492c7008, 0x492c7007, 0x0201f000,
+       0x00100875, 0x492c0800, 0x492c7007, 0x1c01f000,
+       0x4d2c0000, 0x4c580000, 0x4c500000, 0x4c540000,
+       0x4933c857, 0x4937c857, 0x59cc0806, 0x4807c857,
+       0x82040d00, 0xff000000, 0x82040580, 0x03000000,
+       0x0400000d, 0x82040580, 0x05000000, 0x0400000a,
+       0x82040580, 0x21000000, 0x04000030, 0x82040580,
+       0x24000000, 0x0400002d, 0x82040580, 0x20000000,
+       0x0402002f, 0x0201f800, 0x001007e4, 0x0400002c,
+       0x492fc857, 0x492e6017, 0x59a8b016, 0x8258b400,
+       0x0000001b, 0x8258b500, 0xfffffffc, 0x8058b104,
+       0x485a5c04, 0x412c7800, 0x41cca000, 0x82580480,
+       0x00000010, 0x04021005, 0x832cac00, 0x00000005,
+       0x0401fa63, 0x0401f015, 0x40580800, 0x4200b000,
+       0x0000000f, 0x832cac00, 0x00000005, 0x0401fa5c,
+       0x8204b480, 0x0000000f, 0x0201f800, 0x001007e4,
+       0x04000004, 0x492c7801, 0x412c7800, 0x0401f7ec,
+       0x59325817, 0x0201f800, 0x001007fd, 0x497a6017,
+       0x80000580, 0x0401f006, 0x59340200, 0x84000554,
+       0x48026a00, 0x82000540, 0x00000001, 0x5c00a800,
+       0x5c00a000, 0x5c00b000, 0x5c025800, 0x1c01f000,
+       0x4933c857, 0x492fc857, 0x4d2c0000, 0x59300a03,
+       0x82040580, 0x00000007, 0x04000036, 0x82040580,
+       0x00000001, 0x02020800, 0x001005d8, 0x0201f800,
+       0x00106c55, 0x4df00000, 0x598c000d, 0x81300580,
+       0x04020016, 0x59300004, 0x8c000520, 0x04000004,
+       0x84000520, 0x48026004, 0x0401f016, 0x42001000,
+       0x0010b7f6, 0x50081000, 0x58080002, 0x82000580,
+       0x00000100, 0x04000006, 0x5808000c, 0x81300580,
+       0x02020800, 0x001005d8, 0x0401f00a, 0x0201f800,
+       0x00106e8e, 0x04020020, 0x59300004, 0x8c000520,
+       0x04000004, 0x84000520, 0x48026004, 0x0401f003,
+       0x0201f800, 0x001068d3, 0x5c03e000, 0x02000800,
+       0x00106c4b, 0x0201f800, 0x00109037, 0x02000800,
+       0x001005d8, 0x59325808, 0x4a025a06, 0x00000005,
+       0x0201f800, 0x000202da, 0x0201f800, 0x00104c19,
+       0x59325817, 0x812e59c0, 0x02020800, 0x001007fd,
+       0x0201f800, 0x00107911, 0x80000580, 0x5c025800,
+       0x1c01f000, 0x5c03e000, 0x02000800, 0x00106c4b,
+       0x59300406, 0x82000580, 0x00000011, 0x040007b8,
+       0x0401f7f7, 0x4c040000, 0x59340200, 0x4803c857,
+       0x8c00051c, 0x04000009, 0x59cc0805, 0x591c0019,
+       0x4803c857, 0x80040580, 0x04000004, 0x80000580,
+       0x4803c856, 0x0401f003, 0x82000540, 0x00000001,
+       0x5c000800, 0x1c01f000, 0x4c000000, 0x4c0c0000,
+       0x4c100000, 0x42001800, 0x0000ffff, 0x42002000,
+       0x00000004, 0x0401f010, 0x4c000000, 0x4c0c0000,
+       0x4c100000, 0x59302009, 0x58101c03, 0x42002000,
+       0x00000004, 0x0401f008, 0x4c000000, 0x4c0c0000,
+       0x4c100000, 0x59302009, 0x58101c03, 0x42002000,
+       0x00000007, 0x480fc857, 0x4813c857, 0x481bc857,
+       0x0201f800, 0x00103aae, 0x5c002000, 0x5c001800,
+       0x5c000000, 0x1c01f000, 0x83380580, 0x00000092,
+       0x02020800, 0x001005d8, 0x42000800, 0x80000040,
+       0x4a026203, 0x00000001, 0x493a6403, 0x0201f000,
+       0x00020721, 0x4d400000, 0x0201f800, 0x00103b25,
+       0x04000008, 0x59a80005, 0x84000544, 0x48035005,
+       0x42028000, 0x0000002a, 0x0201f800, 0x0010a449,
+       0x5c028000, 0x1c01f000, 0x59a80026, 0x8c000508,
+       0x04000005, 0x599c0017, 0x8c00050a, 0x04020002,
+       0x1c01f000, 0x82000540, 0x00000001, 0x1c01f000,
+       0x59300420, 0x84000540, 0x48026420, 0x1c01f000,
+       0x4817c857, 0x4c000000, 0x4c040000, 0x8c142d2a,
+       0x04000004, 0x598800b8, 0x80000000, 0x480310b8,
+       0x8c142d2e, 0x04000004, 0x598800b9, 0x80000000,
+       0x480310b9, 0x8c142d2c, 0x04000013, 0x40140000,
+       0x82000500, 0x00070000, 0x82000d80, 0x00030000,
+       0x0400000d, 0x82000d80, 0x00040000, 0x0400000a,
+       0x82000d80, 0x00050000, 0x04000007, 0x59880005,
+       0x80000000, 0x48031005, 0x598800ba, 0x80000000,
+       0x480310ba, 0x5c000800, 0x5c000000, 0x1c01f000,
+       0x4817c857, 0x4c000000, 0x4c040000, 0x8c142d2a,
+       0x04000004, 0x598800bb, 0x80000000, 0x480310bb,
+       0x8c142d2e, 0x04000004, 0x598800bc, 0x80000000,
+       0x480310bc, 0x8c142d2c, 0x04000013, 0x40140000,
+       0x82000500, 0x00070000, 0x82000d80, 0x00030000,
+       0x0400000d, 0x82000d80, 0x00040000, 0x0400000a,
+       0x82000d80, 0x00050000, 0x04000007, 0x59880005,
+       0x80000000, 0x48031005, 0x598800bd, 0x80000000,
+       0x480310bd, 0x5c000800, 0x5c000000, 0x1c01f000,
+       0x4c000000, 0x59880001, 0x80000000, 0x4803c857,
+       0x48031001, 0x5c000000, 0x1c01f000, 0x4c000000,
+       0x59880000, 0x80000000, 0x4803c857, 0x48031000,
+       0x5c000000, 0x1c01f000, 0x4c000000, 0x59880002,
+       0x80000000, 0x4803c857, 0x48031002, 0x5c000000,
+       0x1c01f000, 0x4807c857, 0x4c000000, 0x8c040d2c,
+       0x04000004, 0x598800a6, 0x80000000, 0x480310a6,
+       0x8c040d2a, 0x04000004, 0x598800a7, 0x80000000,
+       0x480310a7, 0x8c040d28, 0x04000004, 0x598800a8,
+       0x80000000, 0x480310a8, 0x8c040d26, 0x04000004,
+       0x598800a9, 0x80000000, 0x480310a9, 0x8c040d24,
+       0x04000004, 0x598800aa, 0x80000000, 0x480310aa,
+       0x8c040d22, 0x04000004, 0x598800ab, 0x80000000,
+       0x480310ab, 0x8c040d20, 0x04000004, 0x598800ac,
+       0x80000000, 0x480310ac, 0x5c000000, 0x1c01f000,
+       0x4807c857, 0x4c000000, 0x598800ad, 0x80000000,
+       0x480310ad, 0x5c000000, 0x1c01f000, 0x4807c857,
+       0x4c000000, 0x8c040d1c, 0x04000004, 0x598800ae,
+       0x80000000, 0x480310ae, 0x8c040d1a, 0x04000004,
+       0x598800af, 0x80000000, 0x480310af, 0x5c000000,
+       0x1c01f000, 0x4807c857, 0x4c000000, 0x8c040d18,
+       0x04000004, 0x598800b0, 0x80000000, 0x480310b0,
+       0x8c040d16, 0x04000004, 0x598800b1, 0x80000000,
+       0x480310b1, 0x8c040d14, 0x04000004, 0x598800b2,
+       0x80000000, 0x480310b2, 0x5c000000, 0x1c01f000,
+       0x4807c857, 0x4c000000, 0x8c040d10, 0x04000004,
+       0x598800b3, 0x80000000, 0x480310b3, 0x8c040d0c,
+       0x04000004, 0x598800b4, 0x80000000, 0x480310b4,
+       0x5c000000, 0x1c01f000, 0x4807c857, 0x4c000000,
+       0x8c040d08, 0x04000004, 0x598800b5, 0x80000000,
+       0x480310b5, 0x8c040d04, 0x04000004, 0x598800b6,
+       0x80000000, 0x480310b6, 0x5c000000, 0x1c01f000,
+       0x4807c856, 0x4c000000, 0x5988007f, 0x80000000,
+       0x4803107f, 0x5c000000, 0x1c01f000, 0x4803c857,
+       0x4c040000, 0x50000800, 0x80040800, 0x4807c857,
+       0x44040000, 0x5c000800, 0x1c01f000, 0x480fc857,
+       0x4c000000, 0x820c0580, 0x00000000, 0x04020004,
+       0x42000000, 0x0010b819, 0x0401f014, 0x820c0580,
+       0x00001001, 0x04020004, 0x42000000, 0x0010b81a,
+       0x0401f00e, 0x820c0580, 0x00001002, 0x04020004,
+       0x42000000, 0x0010b81b, 0x0401f008, 0x820c0c80,
+       0x0000201c, 0x02021800, 0x001005d8, 0x820c0500,
+       0x0000001f, 0x0c01f804, 0x0401ffdd, 0x5c000000,
+       0x1c01f000, 0x0010aa89, 0x0010aa8c, 0x0010aa8f,
+       0x0010aa92, 0x0010aa95, 0x0010aa98, 0x0010aa9b,
+       0x0010aa9e, 0x0010aaa1, 0x0010aaa4, 0x0010aaa7,
+       0x0010aaaa, 0x0010aaad, 0x0010aab0, 0x0010aab3,
+       0x0010aab6, 0x0010aab9, 0x0010aabc, 0x0010aabf,
+       0x0010aac2, 0x0010aac5, 0x0010aac8, 0x0010aacb,
+       0x0010aace, 0x0010aad1, 0x0010aad4, 0x0010aad7,
+       0x0010aada, 0x42000000, 0x0010b81c, 0x1c01f000,
+       0x42000000, 0x0010b81d, 0x1c01f000, 0x42000000,
+       0x0010b81e, 0x1c01f000, 0x42000000, 0x0010b81f,
+       0x1c01f000, 0x42000000, 0x0010b820, 0x1c01f000,
+       0x42000000, 0x0010b821, 0x1c01f000, 0x42000000,
+       0x0010b822, 0x1c01f000, 0x42000000, 0x0010b823,
+       0x1c01f000, 0x42000000, 0x0010b824, 0x1c01f000,
+       0x42000000, 0x0010b825, 0x1c01f000, 0x42000000,
+       0x0010b826, 0x1c01f000, 0x42000000, 0x0010b827,
+       0x1c01f000, 0x42000000, 0x0010b828, 0x1c01f000,
+       0x42000000, 0x0010b829, 0x1c01f000, 0x42000000,
+       0x0010b82a, 0x1c01f000, 0x42000000, 0x0010b82b,
+       0x1c01f000, 0x42000000, 0x0010b82c, 0x1c01f000,
+       0x42000000, 0x0010b82d, 0x1c01f000, 0x42000000,
+       0x0010b82e, 0x1c01f000, 0x42000000, 0x0010b82f,
+       0x1c01f000, 0x42000000, 0x0010b830, 0x1c01f000,
+       0x42000000, 0x0010b831, 0x1c01f000, 0x42000000,
+       0x0010b832, 0x1c01f000, 0x42000000, 0x0010b833,
+       0x1c01f000, 0x42000000, 0x0010b834, 0x1c01f000,
+       0x42000000, 0x0010b835, 0x1c01f000, 0x42000000,
+       0x0010b836, 0x1c01f000, 0x42000000, 0x0010b837,
+       0x1c01f000, 0x480fc857, 0x4c000000, 0x820c0580,
+       0x00000001, 0x04020004, 0x42000000, 0x0010b80e,
+       0x0401f012, 0x820c0580, 0x00000002, 0x04020004,
+       0x42000000, 0x0010b80f, 0x0401f00c, 0x820c0580,
+       0x00000003, 0x04020004, 0x42000000, 0x0010b810,
+       0x0401f006, 0x820c0580, 0x00000004, 0x04020004,
+       0x42000000, 0x0010b811, 0x0401ff51, 0x5c000000,
+       0x1c01f000, 0x4c000000, 0x59a80026, 0x4803c857,
+       0x8c000502, 0x04000010, 0x8c000506, 0x04000004,
+       0x42000000, 0x0010b841, 0x0401f012, 0x8c00050a,
+       0x04000004, 0x42000000, 0x0010b840, 0x0401f00d,
+       0x8c000508, 0x04000004, 0x42000000, 0x0010b843,
+       0x0401f008, 0x0201f800, 0x0010513b, 0x04000006,
+       0x8c000506, 0x04020004, 0x42000000, 0x0010b842,
+       0x0401ff33, 0x5c000000, 0x1c01f000, 0x8058b1c0,
+       0x02000800, 0x001005d8, 0x5450a800, 0x8050a000,
+       0x8054a800, 0x8058b040, 0x040207fc, 0x1c01f000,
+       0x8058b1c0, 0x02000800, 0x001005d8, 0x4450a800,
+       0x8054a800, 0x8058b040, 0x040207fd, 0x1c01f000,
+       0x8058b1c0, 0x02000800, 0x001005d8, 0x50500000,
+       0x9c0001c0, 0x4400a800, 0x8050a000, 0x8054a800,
+       0x8058b040, 0x040207fa, 0x1c01f000, 0x4c000000,
+       0x59a80008, 0x8c00051c, 0x5c000000, 0x1c01f000,
+       0x00000001, 0x00000002, 0x00000004, 0x00000008,
+       0x00000010, 0x00000020, 0x00000040, 0x00000080,
+       0x00000100, 0x00000200, 0x00000400, 0x00000800,
+       0x00001000, 0x00002000, 0x00004000, 0x00008000,
+       0x00010000, 0xa5f2b3ac
+};
+
+#ifdef UNIQUE_FW_NAME
+uint32_t fw2400_length01 = 0x0000ab4a ;
+#else
+uint32_t risc_code_length01 = 0x0000ab4a ;
+#endif
+
+
+#ifdef UNIQUE_FW_NAME
+uint32_t fw2400_addr02 = 0x0010e000  ;
+#else
+uint32_t risc_code_addr02 = 0x0010e000 ;
+#endif
+
+#ifdef UNIQUE_FW_NAME
+uint32_t fw2400_code02[] = {
+#else
+uint32_t risc_code02[] = {
+#endif
+       0x00000000, 0x00000000, 0x0010e000, 0x000014ff,
+       0x00000000, 0x00000000, 0x00020000, 0x000008c0,
+       0x836c0580, 0x00000003, 0x02020000, 0x001002e3,
+       0x42000000, 0x0010b4bb, 0x50000000, 0x800001c0,
+       0x04020956, 0x0401f923, 0x0401fbe3, 0x0401fb5c,
+       0x0201f800, 0x00020718, 0x0201f800, 0x0002057b,
+       0x0401f7f0, 0x59b800ea, 0x82000d00, 0xf0000038,
+       0x02020000, 0x00100a7a, 0x8c000510, 0x02000000,
+       0x00100a79, 0x59ba60e0, 0x81300182, 0x0402104e,
+       0x04002030, 0x8532653e, 0x59300406, 0x82000580,
+       0x00000003, 0x04020028, 0x59300203, 0x82000580,
+       0x00000004, 0x04020024, 0x59325808, 0x59300402,
+       0x4a025a04, 0x00000103, 0x900001c0, 0x48025806,
+       0x497a5807, 0x497a5c09, 0x5930001f, 0x80000540,
+       0x02020800, 0x00100d56, 0x59300004, 0x8c00053e,
+       0x04020010, 0x0401fa88, 0x59326809, 0x0201f800,
+       0x0002077d, 0x5934000f, 0x5934140b, 0x80081040,
+       0x04001002, 0x480a6c0b, 0x80000540, 0x04020a10,
+       0x59b800ea, 0x8c000510, 0x040207d7, 0x1c01f000,
+       0x0201f800, 0x00106f60, 0x040007ef, 0x0201f000,
+       0x00100a65, 0x42027000, 0x00000055, 0x0401f027,
+       0x83326500, 0x3fffffff, 0x59300406, 0x82000580,
+       0x00000003, 0x04020015, 0x59325808, 0x59326809,
+       0x59301402, 0x4a025a04, 0x00000103, 0x900811c0,
+       0x480a5806, 0x497a5c09, 0x497a5807, 0x0401fa62,
+       0x0201f800, 0x0002077d, 0x5934000f, 0x5934140b,
+       0x80081040, 0x04001002, 0x480a6c0b, 0x80000540,
+       0x040209eb, 0x0401f7db, 0x42027000, 0x00000054,
+       0x0401f00a, 0x83300500, 0x60000000, 0x02000000,
+       0x00100a68, 0x81326580, 0x8000013a, 0x82000400,
+       0x00100a80, 0x50027000, 0x59300c06, 0x82040580,
+       0x00000002, 0x02000000, 0x00100a65, 0x59300004,
+       0x8c00053e, 0x04020004, 0x0201f800, 0x000207a1,
+       0x0401f7c4, 0x0201f800, 0x00106f60, 0x040007fb,
+       0x0201f000, 0x00100a65, 0x59325808, 0x412c7000,
+       0x58380a04, 0x82040500, 0x0000000f, 0x82000c00,
+       0x001010bd, 0x50044000, 0x0c01f001, 0x00100dd9,
+       0x00100dd9, 0x0002009f, 0x00100dd9, 0x00100dd9,
+       0x00100dd9, 0x00100dd9, 0x00100dd9, 0x000200af,
+       0x00100ded, 0x00100dd9, 0x00100dd9, 0x00100ddb,
+       0x00100dd9, 0x00100dd9, 0x00100dd9, 0x5838040a,
+       0x8c000500, 0x02000800, 0x001005d8, 0x50200000,
+       0x80387c00, 0x583c1002, 0x583c2800, 0x583c2001,
+       0x58380a07, 0x5838300f, 0x59303807, 0x58384c08,
+       0x5838000d, 0x48026012, 0x0401f010, 0x5838020a,
+       0x8c000502, 0x02000000, 0x00100dd9, 0x50200000,
+       0x80387c00, 0x583c2800, 0x583c2001, 0x583c1002,
+       0x592c0a07, 0x592c4c08, 0x592c300f, 0x59303807,
+       0x497a6012, 0x497a6013, 0x4816600e, 0x4812600f,
+       0x480a6010, 0x481a6011, 0x80040840, 0x4806600d,
+       0x02020000, 0x00100e1a, 0x841c3d40, 0x481e6007,
+       0x1c01f000, 0x41787800, 0x59325808, 0x592c0c0a,
+       0x8c040d02, 0x02000000, 0x00100f8c, 0x592c000d,
+       0x592c100f, 0x592c0a04, 0x480a6011, 0x48026012,
+       0x48026013, 0x412c3000, 0x82040500, 0x0000000f,
+       0x82000400, 0x001010bd, 0x50003800, 0x501c0000,
+       0x401c1000, 0x592c1a07, 0x4802600a, 0x481a600b,
+       0x480a600c, 0x480e600d, 0x843c7d4a, 0x403c1000,
+       0x1c01f000, 0x41787800, 0x497a6012, 0x592c0a04,
+       0x412c3000, 0x592c1a07, 0x82040500, 0x0000000f,
+       0x82000400, 0x001010bd, 0x50004000, 0x50200000,
+       0x40201000, 0x4802600a, 0x481a600b, 0x480a600c,
+       0x480e600d, 0x80000580, 0x483e6004, 0x1c01f000,
+       0x4c000000, 0x4df00000, 0x0201f800, 0x00020729,
+       0x0401f005, 0x4c000000, 0x4df00000, 0x0401ff16,
+       0x0401f001, 0x5c03e000, 0x5c000000, 0x1801f000,
+       0x4203e000, 0xb0100000, 0x41fc0000, 0x82000500,
+       0x00000011, 0x0c01f001, 0x0002012a, 0x00020697,
+       0x0002012a, 0x0002012a, 0x0002012a, 0x0002012a,
+       0x0002012a, 0x0002012a, 0x0002012a, 0x0002012a,
+       0x0002012a, 0x0002012a, 0x0002012a, 0x0002012a,
+       0x0002012a, 0x0002012a, 0x0010115a, 0x0002012c,
+       0x0002012a, 0x0002012a, 0x0002012a, 0x0002012a,
+       0x0002012a, 0x0002012a, 0x0002012a, 0x0002012a,
+       0x0002012a, 0x0002012a, 0x0002012a, 0x0002012a,
+       0x0002012a, 0x0002012a, 0x0201f800, 0x001005d8,
+       0x0201f800, 0x00020697, 0x0201f000, 0x0010115a,
+       0x42000000, 0x0010b4c1, 0x50000000, 0x8c000504,
+       0x04000014, 0x42000000, 0x0010b4c1, 0x50000000,
+       0x8c000502, 0x04020002, 0x1c01f000, 0x4df00000,
+       0x4203e000, 0x50000000, 0x42034000, 0x0010b4a4,
+       0x59a0001d, 0x59a1d81e, 0x84000502, 0x4803401d,
+       0x58ec0009, 0x0801f800, 0x5c03e000, 0x1c01f000,
+       0x04027002, 0x04026002, 0x1c01f000, 0x4df00000,
+       0x4203e000, 0x50000000, 0x0201f800, 0x001007e4,
+       0x04000010, 0x412dd800, 0x48efc857, 0x0201f800,
+       0x00103b28, 0x42034000, 0x0010b4a4, 0x49a1d80b,
+       0x48ef401e, 0x59a0001d, 0x84000544, 0x4803401d,
+       0x0201f800, 0x00102214, 0x0201f800, 0x00102233,
+       0x5c03e000, 0x1c01f000, 0x4da00000, 0x4df00000,
+       0x4203e000, 0x50000000, 0x04006051, 0x40001000,
+       0x42034000, 0x0010b4a4, 0x59a01818, 0x800c19c0,
+       0x04020008, 0x59a0381b, 0x801c39c0, 0x02000800,
+       0x001005d8, 0x59a0041c, 0x801c3c00, 0x0401f00c,
+       0x59a00419, 0x82000400, 0x00000002, 0x48034419,
+       0x82000c80, 0x00000013, 0x04001003, 0x497b4419,
+       0x41780000, 0x59a03816, 0x801c3c00, 0x80081040,
+       0x480b4017, 0x581c0200, 0x4803c021, 0x581c0401,
+       0x4803c022, 0x581c0201, 0x4803c023, 0x581c0400,
+       0x4803c020, 0x900001c0, 0x82000540, 0x00000012,
+       0x4803c011, 0x59e00017, 0x8c000508, 0x04000003,
+       0x4a03c017, 0x00000002, 0x4203e000, 0x30000001,
+       0x800c19c0, 0x04000007, 0x800c1840, 0x480f4018,
+       0x0402001f, 0x497b4419, 0x497b4219, 0x0401f01c,
+       0x800811c0, 0x0402000b, 0x4d2c0000, 0x59a2581b,
+       0x0201f800, 0x001007f4, 0x5c025800, 0x497b401b,
+       0x497b401a, 0x497b441c, 0x497b421c, 0x0401f010,
+       0x59a0041c, 0x82000400, 0x00000002, 0x82000c80,
+       0x00000012, 0x4803441c, 0x04001009, 0x4d2c0000,
+       0x59a2581b, 0x592c3813, 0x481f401b, 0x497b441c,
+       0x0201f800, 0x001007f4, 0x5c025800, 0x5c03e000,
+       0x5c034000, 0x1c01f000, 0x59a80005, 0x82000500,
+       0x00000003, 0x02020000, 0x00104315, 0x59340400,
+       0x82000580, 0x00000606, 0x02020000, 0x001042e6,
+       0x5934000d, 0x80027d40, 0x02020000, 0x00104321,
+       0x0401f803, 0x80000580, 0x1c01f000, 0x5934000f,
+       0x59341203, 0x80080540, 0x0402006f, 0x5934020b,
+       0x5934140b, 0x80080480, 0x0402106b, 0x0201f800,
+       0x0002075a, 0x04000064, 0x80081000, 0x592c0406,
+       0x480a6c0b, 0x49366009, 0x492e6008, 0x4a026406,
+       0x00000003, 0x4a026403, 0x00000040, 0x800000c2,
+       0x800018c4, 0x800c0400, 0x48026206, 0x592c0808,
+       0x592c1809, 0x592c020a, 0x48066017, 0x480e6018,
+       0x8c000502, 0x04000030, 0x4a026203, 0x00000004,
+       0x592c0207, 0x80000040, 0x04020020, 0x59a80005,
+       0x8c000514, 0x42000000, 0x00000055, 0x04020003,
+       0x42000000, 0x00000033, 0x80000040, 0x040207ff,
+       0x592c0204, 0x82000500, 0x000000ff, 0x82000580,
+       0x00000018, 0x04020011, 0x592c180f, 0x59300007,
+       0x82000540, 0x00000091, 0x480e6011, 0x48026007,
+       0x42000000, 0x80000004, 0x48026004, 0x59bc00ea,
+       0x8c000516, 0x040207fe, 0x83300400, 0x20000000,
+       0x480378e1, 0x1c01f000, 0x0401fe78, 0x59300007,
+       0x8400054e, 0x48026007, 0x592c1a04, 0x820c1d00,
+       0x000000ff, 0x820c0580, 0x00000048, 0x04000017,
+       0x0401f7ec, 0x8c000500, 0x04020ecb, 0x4a026203,
+       0x00000002, 0x59a80805, 0x82040500, 0x00000600,
+       0x04020012, 0x42000000, 0x00000030, 0x80000040,
+       0x040207ff, 0x592c1a04, 0x820c1d00, 0x000000ff,
+       0x820c0580, 0x00000018, 0x040007da, 0x820c0580,
+       0x00000048, 0x040207d7, 0x42000800, 0x80000804,
+       0x0201f000, 0x00106721, 0x8c040d12, 0x42000000,
+       0x00000010, 0x040207ee, 0x42000000, 0x00000051,
+       0x0401f7eb, 0x800811c0, 0x04020003, 0x4a026a03,
+       0x00000001, 0x59340010, 0x492e6810, 0x80000d40,
+       0x04020003, 0x492e680f, 0x1c01f000, 0x492c0800,
+       0x1c01f000, 0x83440c80, 0x00000800, 0x04021009,
+       0x83440400, 0x0010ac00, 0x50000000, 0x80000540,
+       0x04000004, 0x40026800, 0x80000580, 0x1c01f000,
+       0x82000540, 0x00000001, 0x1c01f000, 0x59340203,
+       0x80000540, 0x0402004b, 0x4d300000, 0x4d2c0000,
+       0x5934000f, 0x80025d40, 0x04000044, 0x0201f800,
+       0x0002075a, 0x0400003f, 0x592c0000, 0x4802680f,
+       0x80000540, 0x04020002, 0x48026810, 0x592c2a04,
+       0x80081000, 0x480a6c0b, 0x49366009, 0x492e6008,
+       0x82142d00, 0x000000ff, 0x82140580, 0x00000012,
+       0x04000035, 0x4a026406, 0x00000003, 0x4a026403,
+       0x00000040, 0x592c0406, 0x800000c2, 0x800018c4,
+       0x800c0400, 0x48026206, 0x592c0808, 0x592c1809,
+       0x592c020a, 0x48066017, 0x480e6018, 0x8c000502,
+       0x02000000, 0x0010474d, 0x4a026203, 0x00000004,
+       0x592c0207, 0x80000040, 0x02020000, 0x00104740,
+       0x82140580, 0x00000018, 0x02020000, 0x00104740,
+       0x592c180f, 0x59300007, 0x82000540, 0x00000091,
+       0x480e6011, 0x48026007, 0x42000000, 0x80000004,
+       0x48026004, 0x59bc00ea, 0x8c000516, 0x040207fe,
+       0x83300400, 0x20000000, 0x480378e1, 0x5934020b,
+       0x5934140b, 0x80080480, 0x040017be, 0x0401f003,
+       0x4a026a03, 0x00000001, 0x5c025800, 0x5c026000,
+       0x1c01f000, 0x497a5800, 0x49325809, 0x4a026406,
+       0x00000006, 0x4a026203, 0x00000007, 0x0401f802,
+       0x0401f7ef, 0x59a80021, 0x800001c0, 0x02020000,
+       0x0010476f, 0x59a80005, 0x8c000504, 0x02020000,
+       0x0010476b, 0x59340200, 0x8c000518, 0x02020000,
+       0x00104767, 0x592c0a0c, 0x48066202, 0x4a025a06,
+       0x00000000, 0x8c000508, 0x02020000, 0x00104763,
+       0x4d3c0000, 0x417a7800, 0x0401fbdf, 0x5c027800,
+       0x1c01f000, 0x592c0404, 0x8c00051e, 0x02020000,
+       0x00104ce4, 0x59980022, 0x80000540, 0x04000017,
+       0x592c0a06, 0x592c0409, 0x80040540, 0x04020013,
+       0x0201f000, 0x00104cfa, 0x592c0404, 0x8c00051e,
+       0x02020000, 0x00104cf3, 0x59980022, 0x80000540,
+       0x0400000a, 0x82040580, 0x00000001, 0x04020007,
+       0x0201f000, 0x00104cfa, 0x592c0404, 0x8c00051e,
+       0x02020000, 0x00104dca, 0x59980026, 0x497a5800,
+       0x80000540, 0x02020000, 0x00104e1d, 0x59d80105,
+       0x82000d00, 0x00018780, 0x02020000, 0x00104edb,
+       0x80000106, 0x82000500, 0x00000003, 0x0c01f001,
+       0x000202f0, 0x00104e1d, 0x000202f6, 0x00020341,
+       0x592c0001, 0x492fb107, 0x80000d40, 0x02020000,
+       0x00104ddb, 0x1c01f000, 0x592c0001, 0x492fb107,
+       0x80000d40, 0x02020000, 0x00104de8, 0x59da5908,
+       0x835c0480, 0x00000020, 0x0400102c, 0x0402b034,
+       0x492fb007, 0x0400e7fa, 0x59d80105, 0x82000500,
+       0x00018780, 0x02020000, 0x00104edb, 0x0400601f,
+       0x59d8010a, 0x59d8090a, 0x80040580, 0x040207fd,
+       0x800408e0, 0x599c1017, 0x8c081508, 0x04020028,
+       0x82040d40, 0x00000013, 0x5998002b, 0x4807c011,
+       0x84000500, 0x4803302b, 0x59e00017, 0x8c000508,
+       0x04020004, 0x4203e000, 0x30000001, 0x1c01f000,
+       0x4a03c017, 0x00000003, 0x82040500, 0x000000ff,
+       0x82000580, 0x0000001d, 0x040207f7, 0x4a03c017,
+       0x0000000d, 0x0401f7f4, 0x5998082b, 0x84040d40,
+       0x4807302b, 0x1c01f000, 0x496a5800, 0x412ed000,
+       0x815eb800, 0x59c80000, 0x82000540, 0x00001200,
+       0x48039000, 0x0400e7ca, 0x0401f7d0, 0x0402f7f7,
+       0x492fa807, 0x0400e7c6, 0x0401f7cc, 0x59e0000f,
+       0x59e0100f, 0x80081580, 0x040207fd, 0x81281580,
+       0x040007d4, 0x40025000, 0x82040d40, 0x0000001d,
+       0x0401f7d2, 0x59d80908, 0x45680800, 0x4006d000,
+       0x815eb800, 0x0400e7fc, 0x59c80000, 0x82000540,
+       0x00001200, 0x48039000, 0x02006000, 0x00104df8,
+       0x59d8010a, 0x59d8090a, 0x80040d80, 0x040207fd,
+       0x900001c0, 0x82000540, 0x00000013, 0x4803c011,
+       0x5998002b, 0x84000500, 0x4803302b, 0x59e00017,
+       0x8c000508, 0x04000003, 0x4a03c017, 0x00000003,
+       0x4203e000, 0x30000001, 0x59d80105, 0x82000500,
+       0x00018780, 0x02020000, 0x00104edb, 0x0202d000,
+       0x00104dfd, 0x592c0001, 0x492fb107, 0x80000d40,
+       0x02020000, 0x00104e10, 0x1c01f000, 0x59980020,
+       0x0c01f001, 0x00020370, 0x00020371, 0x00104e88,
+       0x1c01f000, 0x4df00000, 0x4203e000, 0x50000000,
+       0x0402681e, 0x04006004, 0x599c0017, 0x8c000508,
+       0x04020865, 0x59980029, 0x80025d40, 0x0400000a,
+       0x0402d00b, 0x59980026, 0x80000040, 0x48033026,
+       0x592c0000, 0x492fb107, 0x48033029, 0x04020002,
+       0x48033028, 0x5c03e000, 0x1c01f000, 0x59d80105,
+       0x82000500, 0x00018780, 0x02020000, 0x00104edb,
+       0x42000000, 0x0010b855, 0x0201f800, 0x0010aa47,
+       0x5c03e000, 0x1c01f000, 0x5998002b, 0x8c000500,
+       0x0402003b, 0x0400e007, 0x59d80105, 0x82000500,
+       0x00018780, 0x02020000, 0x00104edb, 0x1c01f000,
+       0x59da5908, 0x835c0c80, 0x00000020, 0x04001003,
+       0x0400b029, 0x0400f02b, 0x496a5800, 0x412ed000,
+       0x815eb800, 0x59c80000, 0x82000540, 0x00001200,
+       0x48039000, 0x0400e7f3, 0x59d8010a, 0x59d8090a,
+       0x80040580, 0x040207fd, 0x800408e0, 0x599c1017,
+       0x8c081508, 0x04020022, 0x82040d40, 0x00000013,
+       0x4807c011, 0x59e00017, 0x8c000508, 0x0400000a,
+       0x4a03c017, 0x00000003, 0x82040500, 0x000000ff,
+       0x82000580, 0x0000001d, 0x04020003, 0x4a03c017,
+       0x0000000d, 0x4203e000, 0x30000001, 0x59d80105,
+       0x82000500, 0x00018780, 0x02020000, 0x00104edb,
+       0x1c01f000, 0x492fb007, 0x0400e7d2, 0x0401f7df,
+       0x492fa807, 0x0400e7cf, 0x0401f7dc, 0x84000500,
+       0x4803302b, 0x0400e7cb, 0x0401f7d8, 0x59e0000f,
+       0x59e0100f, 0x80081580, 0x040207fd, 0x81281580,
+       0x040007da, 0x40025000, 0x82040d40, 0x0000001d,
+       0x0401f7d8, 0x59e0000f, 0x59e0100f, 0x80080d80,
+       0x040207fd, 0x81280580, 0x04020002, 0x1c01f000,
+       0x400a5000, 0x900811c0, 0x82081540, 0x0000001c,
+       0x480bc011, 0x59e00017, 0x8c000508, 0x04000003,
+       0x4a03c017, 0x0000000c, 0x4203e000, 0x30000001,
+       0x1c01f000, 0x41700000, 0x0c01f001, 0x00105420,
+       0x000203fc, 0x00105420, 0x00105421, 0x0010541e,
+       0x0010541e, 0x0010541e, 0x0010541e, 0x001058b0,
+       0x04010037, 0x59980006, 0x80000540, 0x0402003c,
+       0x0402c01c, 0x4202f800, 0x00000010, 0x4df00000,
+       0x4203e000, 0x50000000, 0x49db3005, 0x59da5808,
+       0x592c0204, 0x497a5800, 0x497a5801, 0x82000500,
+       0x000000ff, 0x82000c80, 0x00000079, 0x04021036,
+       0x0c01f839, 0x5c03e000, 0x817ef840, 0x04000009,
+       0x836c0580, 0x00000003, 0x04020006, 0x83700580,
+       0x00000001, 0x04020010, 0x0401001b, 0x0400c7e8,
+       0x0400f94a, 0x0400b134, 0x59d40005, 0x82000500,
+       0x43018780, 0x02020000, 0x0010583f, 0x59d80005,
+       0x82000500, 0x43018780, 0x02020000, 0x00105846,
+       0x1c01f000, 0x83700580, 0x00000003, 0x02000800,
+       0x00105421, 0x83700580, 0x00000001, 0x040207ed,
+       0x04010005, 0x0400c7d2, 0x0401f7ea, 0x4202f800,
+       0x00000010, 0x4df00000, 0x4203e000, 0x50000000,
+       0x49d73005, 0x59d65808, 0x0401f7ce, 0x4df00000,
+       0x4203e000, 0x50000000, 0x40025800, 0x592c0204,
+       0x497b3005, 0x497b3006, 0x4202f800, 0x00000010,
+       0x0401f7c7, 0x0201f800, 0x00105491, 0x5c03e000,
+       0x0401f7d4, 0x00105491, 0x00105491, 0x00105491,
+       0x00105491, 0x00105527, 0x00105491, 0x00105491,
+       0x00105491, 0x00105491, 0x00105491, 0x001054a1,
+       0x00105491, 0x00105491, 0x00105491, 0x00105551,
+       0x00105491, 0x00105491, 0x00105491, 0x000204ef,
+       0x00105491, 0x001056b4, 0x00105491, 0x00105491,
+       0x00105491, 0x000204c2, 0x00105491, 0x00105491,
+       0x00105491, 0x00105491, 0x00105491, 0x00105491,
+       0x00105491, 0x00105491, 0x00105491, 0x00105491,
+       0x00105491, 0x00105491, 0x00105491, 0x00105491,
+       0x00105491, 0x00105491, 0x001054c9, 0x00105491,
+       0x00105491, 0x00105491, 0x00105491, 0x00105491,
+       0x00105491, 0x00105491, 0x00105491, 0x00105491,
+       0x001057d3, 0x00105491, 0x00105491, 0x00105491,
+       0x00105491, 0x00105491, 0x0010581e, 0x00105491,
+       0x001054bb, 0x00105491, 0x00105797, 0x00105491,
+       0x00105491, 0x00105491, 0x00105491, 0x00105491,
+       0x00105491, 0x00105491, 0x00105765, 0x00105491,
+       0x00105765, 0x00105872, 0x00105491, 0x00105491,
+       0x00105491, 0x00105491, 0x00105491, 0x00105491,
+       0x00105491, 0x00105491, 0x00105491, 0x00105725,
+       0x00105855, 0x00105491, 0x00105865, 0x00105491,
+       0x00105491, 0x00105491, 0x00105491, 0x00105491,
+       0x00105491, 0x00105491, 0x00105491, 0x00105491,
+       0x00105491, 0x00105491, 0x00105491, 0x00105491,
+       0x00105491, 0x00105491, 0x00105491, 0x00105491,
+       0x00105491, 0x00105491, 0x00105491, 0x00105491,
+       0x00105491, 0x00105491, 0x00105491, 0x00105491,
+       0x00105491, 0x00105491, 0x00105491, 0x00105491,
+       0x00105491, 0x00105491, 0x00105491, 0x00105491,
+       0x00105491, 0x00105491, 0x592c0204, 0x80000110,
+       0x02000000, 0x00105499, 0x80000040, 0x04000009,
+       0x48033002, 0x492f3003, 0x492f3004, 0x4a033008,
+       0x000204d0, 0x4202e000, 0x00000003, 0x1c01f000,
+       0x592c0406, 0x82000c80, 0x0000199a, 0x02021000,
+       0x001054a9, 0x59a80021, 0x80000540, 0x02020000,
+       0x001054d7, 0x592e8a06, 0x83440c80, 0x000007f0,
+       0x02021000, 0x001054a9, 0x83440400, 0x0010ac00,
+       0x50000000, 0x80026d40, 0x02000000, 0x001054db,
+       0x59340002, 0x592c0810, 0x80040580, 0x82000500,
+       0x00ffffff, 0x02020000, 0x001054a9, 0x0401fccf,
+       0x02020000, 0x001054de, 0x1c01f000, 0x592c0204,
+       0x80000110, 0x02000000, 0x00105499, 0x80000040,
+       0x0402000b, 0x592c040a, 0x8c000504, 0x04000010,
+       0x592c0207, 0x82000c80, 0x00001001, 0x02021000,
+       0x001054a9, 0x0201f000, 0x0010588a, 0x48033002,
+       0x492f3003, 0x492f3004, 0x4a033008, 0x00020507,
+       0x4202e000, 0x00000003, 0x1c01f000, 0x592c0406,
+       0x82000c80, 0x0000199a, 0x02021000, 0x001054a9,
+       0x592e8a06, 0x417a7800, 0x0401fd37, 0x02020000,
+       0x00105658, 0x59340002, 0x592c0808, 0x80040580,
+       0x82000500, 0x00ffffff, 0x02020000, 0x001054a9,
+       0x497a5808, 0x592e6009, 0x83300580, 0xffffffff,
+       0x02000000, 0x00105618, 0x83300480, 0x0010d1c0,
+       0x02001000, 0x00105675, 0x59a8000b, 0x81300480,
+       0x02021000, 0x00105675, 0x592c240a, 0x49366009,
+       0x8c10251c, 0x02020000, 0x00105606, 0x59a80068,
+       0x8c000510, 0x02020000, 0x0010568e, 0x59a80821,
+       0x800409c0, 0x02020000, 0x001055ec, 0x59a80805,
+       0x8c040d04, 0x02020000, 0x0010567f, 0x59340200,
+       0x8c000518, 0x02020000, 0x00105670, 0x59300c06,
+       0x82040580, 0x00000006, 0x02020000, 0x00105610,
+       0x59300414, 0x8c000516, 0x02020000, 0x0010567a,
+       0x8c102508, 0x02020000, 0x0010a5b8, 0x59300808,
+       0x4a025a06, 0x00000000, 0x800409c0, 0x02020000,
+       0x001055e7, 0x592c0a0c, 0x48066202, 0x492e6008,
+       0x0401f14d, 0x4df00000, 0x4203e000, 0x50000000,
+       0x0402b00b, 0x835c0480, 0x00000020, 0x0400100d,
+       0x815eb840, 0x416a5800, 0x592ed000, 0x492fb007,
+       0x497a5800, 0x497a5801, 0x0400b7f7, 0x59d80005,
+       0x82000500, 0x43018780, 0x02020000, 0x00105846,
+       0x5c03e000, 0x1c01f000, 0x4df00000, 0x4203e000,
+       0x50000000, 0x0402f00b, 0x835c0480, 0x00000020,
+       0x0400100d, 0x815eb840, 0x416a5800, 0x592ed000,
+       0x492fa807, 0x497a5800, 0x497a5801, 0x0400f7f7,
+       0x59d40005, 0x82000500, 0x43018780, 0x02020000,
+       0x0010583f, 0x5c03e000, 0x1c01f000, 0x4df00000,
+       0x4203e000, 0x50000000, 0x59940024, 0x80000540,
+       0x04000112, 0x4c000000, 0x42000000, 0x00001000,
+       0x50000000, 0x82000480, 0x24320001, 0x04020015,
+       0x42000800, 0x00000064, 0x80040840, 0x04000007,
+       0x4a030000, 0x00000001, 0x40000000, 0x59800000,
+       0x8c000500, 0x040007f9, 0x04000008, 0x42000800,
+       0x00007a01, 0x50040000, 0x8c000510, 0x04000003,
+       0x84000510, 0x44000800, 0x4a030000, 0x00000000,
+       0x59e00002, 0x8c00051e, 0x0402001b, 0x42000000,
+       0x00001000, 0x50000000, 0x82000480, 0x24320002,
+       0x04020015, 0x42000800, 0x00000064, 0x80040840,
+       0x04000007, 0x4a030000, 0x00000001, 0x40000000,
+       0x59800000, 0x8c000500, 0x040007f9, 0x04000008,
+       0x42000800, 0x00007a17, 0x50040000, 0x8c00050e,
+       0x04020003, 0x8400054e, 0x44000800, 0x4a030000,
+       0x00000000, 0x5c000000, 0x5994781a, 0x48032825,
+       0x803c0480, 0x04001004, 0x04000003, 0x4803281a,
+       0x0401f022, 0x41787800, 0x803c7800, 0x82000400,
+       0x000003e8, 0x040027fd, 0x4803281a, 0x59a80024,
+       0x803c1400, 0x480b5024, 0x803c0040, 0x04000002,
+       0x483fc857, 0x59e40852, 0x59a80025, 0x80040580,
+       0x04000004, 0x480bc857, 0x59e40052, 0x48035025,
+       0x59940026, 0x803c0400, 0x48032826, 0x0201f800,
+       0x00106021, 0x59940000, 0x82000580, 0x00000000,
+       0x04020006, 0x59940026, 0x48032827, 0x497b2826,
+       0x4a032800, 0x00000001, 0x4c0c0000, 0x59940007,
+       0x80000d40, 0x0400001d, 0x59941006, 0x59940025,
+       0x80081c80, 0x04001004, 0x04000003, 0x480f2806,
+       0x0401f016, 0x80040840, 0x48072807, 0x82040580,
+       0x000003e8, 0x04020007, 0x4c040000, 0x4c0c0000,
+       0x59940008, 0x0801f800, 0x5c001800, 0x5c000800,
+       0x800409c0, 0x04020004, 0x59940008, 0x0801f800,
+       0x0401f006, 0x400c0000, 0x820c1c00, 0x0000000a,
+       0x040027ed, 0x480f2806, 0x5c001800, 0x4d180000,
+       0x59c40008, 0x8c000534, 0x04020025, 0x417a3000,
+       0x83947c00, 0x00000009, 0x583c0001, 0x80000d40,
+       0x04020008, 0x823c7c00, 0x00000003, 0x811a3000,
+       0x83180580, 0x00000005, 0x040207f8, 0x0401f018,
+       0x583c1000, 0x59940025, 0x80080480, 0x04001005,
+       0x04000004, 0x48007800, 0x80000040, 0x04021010,
+       0x80040840, 0x48047801, 0x04000008, 0x82000400,
+       0x0000000a, 0x48007800, 0x040027fa, 0x82040500,
+       0x0000007f, 0x0401f7e8, 0x583c0002, 0x4c3c0000,
+       0x0801f800, 0x5c007800, 0x0401f7e3, 0x5c023000,
+       0x59940019, 0x80001540, 0x04000008, 0x04002007,
+       0x59940025, 0x80080480, 0x497b2819, 0x04001003,
+       0x04000002, 0x48032819, 0x59940004, 0x80000d40,
+       0x0400002a, 0x4c040000, 0x5994001c, 0x80000d40,
+       0x04000013, 0x5994101b, 0x59940025, 0x80080480,
+       0x04001005, 0x04000004, 0x4803281b, 0x80000040,
+       0x0402100b, 0x80040840, 0x4807281c, 0x04020004,
+       0x5994001d, 0x0801f800, 0x0401f005, 0x82000400,
+       0x0000000a, 0x4803281b, 0x040027f7, 0x5c000800,
+       0x59941003, 0x59940025, 0x80080480, 0x04001005,
+       0x04000004, 0x48032803, 0x80000040, 0x0402100b,
+       0x80040840, 0x48072804, 0x04020004, 0x59940005,
+       0x0801f800, 0x0401f005, 0x82000400, 0x0000000a,
+       0x48032803, 0x040027f7, 0x5994001f, 0x80000d40,
+       0x04000013, 0x5994101e, 0x59940025, 0x80080480,
+       0x04001005, 0x04000004, 0x4803281e, 0x80000040,
+       0x0402100b, 0x80040840, 0x4807281f, 0x04020004,
+       0x59940020, 0x0801f800, 0x0401f005, 0x82000400,
+       0x00000001, 0x4803281e, 0x040027f7, 0x59940022,
+       0x80000d40, 0x04000013, 0x59941021, 0x59940025,
+       0x80080480, 0x04001005, 0x04000004, 0x48032821,
+       0x80000040, 0x0402100b, 0x80040840, 0x48072822,
+       0x04020004, 0x59940023, 0x0801f800, 0x0401f005,
+       0x82000400, 0x0000000a, 0x48032821, 0x040027f7,
+       0x59940824, 0x59940025, 0x80040480, 0x02001800,
+       0x001005d8, 0x48032824, 0x59940000, 0x0c01f001,
+       0x00105fb5, 0x00105fb7, 0x00105fdd, 0x59940024,
+       0x80000000, 0x48032824, 0x4203e000, 0x70000000,
+       0x1c01f000, 0x592c0406, 0x800000c2, 0x800008c4,
+       0x80040c00, 0x592c040a, 0x48066206, 0x82000d00,
+       0x00000003, 0x02000000, 0x0010615e, 0x8c000500,
+       0x04020029, 0x8c00051e, 0x02000000, 0x00106139,
+       0x82000d00, 0x000000c0, 0x02020000, 0x0010612f,
+       0x82000d00, 0x00002020, 0x02020000, 0x0010612c,
+       0x813e79c0, 0x02020000, 0x0010612c, 0x592c0c0c,
+       0x800409c0, 0x02020000, 0x0010612c, 0x59300a03,
+       0x82040d80, 0x00000007, 0x02020000, 0x0010612c,
+       0x4a026203, 0x00000003, 0x4a026403, 0x00000043,
+       0x0201f800, 0x000200c9, 0x82080d40, 0x80003465,
+       0x48066004, 0x497a6000, 0x59bc00ea, 0x8c000516,
+       0x040207fe, 0x83300400, 0xa0000000, 0x480378e1,
+       0x1c01f000, 0x8c000502, 0x02020000, 0x00106181,
+       0x8c00051e, 0x0400000e, 0x82000d00, 0x000000c0,
+       0x04000005, 0x82040d80, 0x000000c0, 0x02020000,
+       0x00106186, 0x82000d00, 0x00002020, 0x82040d80,
+       0x00002020, 0x02000000, 0x0010614d, 0x592c0207,
+       0x80000040, 0x02020000, 0x00106157, 0x592c180d,
+       0x800c19c0, 0x02020000, 0x00106157, 0x592c180f,
+       0x59300007, 0x82000540, 0x00000011, 0x480e6011,
+       0x48026007, 0x4a026203, 0x00000004, 0x4a026403,
+       0x00000042, 0x42000800, 0x80002001, 0x0401f02a,
+       0x5c000000, 0x4c000000, 0x4803c857, 0x4807c857,
+       0x0401f003, 0x42000800, 0x00000001, 0x59325808,
+       0x832c0500, 0x00ff0000, 0x0400000d, 0x592c0000,
+       0x48065a06, 0x48026008, 0x592c040a, 0x8c000510,
+       0x04020008, 0x0201f800, 0x000202ce, 0x417a7800,
+       0x59300008, 0x80025d40, 0x0402078f, 0x1c01f000,
+       0x456a5800, 0x412ed000, 0x815eb800, 0x59c80000,
+       0x82000540, 0x00001200, 0x48039000, 0x0401f7f4,
+       0x59840000, 0x80000540, 0x04020002, 0x1c01f000,
+       0x59840003, 0x80000540, 0x02020000, 0x001061fe,
+       0x1c01f000, 0x48066004, 0x59bc00ea, 0x8c000516,
+       0x040207fe, 0x83300400, 0x40000000, 0x480378e1,
+       0x1c01f000, 0x59bc00ea, 0x82001500, 0xb0000018,
+       0x02020000, 0x00106c81, 0x8c000510, 0x0400002a,
+       0x59bc10e0, 0x82080500, 0xfffff000, 0x0402000a,
+       0x80080108, 0x820a3500, 0x0000000f, 0x4803c857,
+       0x1201f000, 0x00106c87, 0x84000510, 0x48026004,
+       0x0401f016, 0x840a653e, 0x59300004, 0x8c000520,
+       0x040007fa, 0x82000500, 0xfffefeff, 0x48026004,
+       0x8c08153e, 0x04020005, 0x42027000, 0x00000013,
+       0x0401f859, 0x0401f009, 0x59300004, 0x8c000514,
+       0x04000003, 0x0401ffb0, 0x0401f02f, 0x42027000,
+       0x00000049, 0x0401f850, 0x59bc00ea, 0x82001500,
+       0xb0000018, 0x02020000, 0x00106c81, 0x8c000510,
+       0x040207d8, 0x1c01f000, 0x83640480, 0x00000010,
+       0x0400101a, 0x41626000, 0x41580000, 0x59300a03,
+       0x82040d80, 0x00000000, 0x04000008, 0x83326400,
+       0x00000024, 0x81300c80, 0x040017f9, 0x42026000,
+       0x0010d1c0, 0x0401f7f6, 0x8166c840, 0x83300c00,
+       0x00000024, 0x80040480, 0x04021005, 0x4006c000,
+       0x4a026203, 0x00000008, 0x1c01f000, 0x837ac540,
+       0x0010d1c0, 0x0401f7fb, 0x42000000, 0x0010b854,
+       0x0201f800, 0x0010aa47, 0x4967c857, 0x80026580,
+       0x1c01f000, 0x83300480, 0x0010d1c0, 0x02001800,
+       0x001005d8, 0x41580000, 0x81300480, 0x0402100c,
+       0x04011000, 0x457a6000, 0x4a026202, 0x0000ffff,
+       0x83300400, 0x00000003, 0x4803c840, 0x4a03c842,
+       0x00000021, 0x8166c800, 0x1c01f000, 0x41540000,
+       0x81300480, 0x02021800, 0x001005d8, 0x04011000,
+       0x457a6000, 0x4a026202, 0x0000ffff, 0x83300400,
+       0x00000003, 0x4803c840, 0x4a03c842, 0x00000021,
+       0x59a80066, 0x49335065, 0x80000000, 0x48035066,
+       0x1c01f000, 0x4d340000, 0x59326809, 0x59300406,
+       0x82000500, 0x0000001f, 0x0c01f803, 0x5c026800,
+       0x1c01f000, 0x00107966, 0x00107979, 0x00107993,
+       0x000207c9, 0x001098f1, 0x0010990c, 0x0002083e,
+       0x00107966, 0x00107979, 0x001064ee, 0x001079ac,
+       0x00107966, 0x00107966, 0x00107966, 0x00107966,
+       0x00107966, 0x001095a1, 0x0010a6c2, 0x00107966,
+       0x00107966, 0x00107966, 0x00107966, 0x00107966,
+       0x00107966, 0x00107966, 0x00107966, 0x00107966,
+       0x00107966, 0x00107966, 0x00107966, 0x00107966,
+       0x00107966, 0x59300203, 0x82000c80, 0x0000000e,
+       0x02021800, 0x001005d8, 0x0c01f001, 0x001079aa,
+       0x00108592, 0x000207dd, 0x00108720, 0x001087b9,
+       0x001079aa, 0x001079aa, 0x001079aa, 0x00108577,
+       0x001079aa, 0x001079aa, 0x001079aa, 0x001079aa,
+       0x00108985, 0x83380480, 0x00000058, 0x04021007,
+       0x83380480, 0x00000040, 0x04001004, 0x4d2c0000,
+       0x0c01f803, 0x5c025800, 0x1c01f000, 0x0010861b,
+       0x0010861b, 0x0010861b, 0x0010861b, 0x0010861b,
+       0x0010861d, 0x001086bd, 0x0010861b, 0x0010861b,
+       0x0010861b, 0x0010861b, 0x0010861b, 0x0010861b,
+       0x0010861b, 0x0010861b, 0x0010861b, 0x0010861b,
+       0x0010861b, 0x0010861b, 0x001086c1, 0x000207ff,
+       0x0010861b, 0x001086c0, 0x001086c2, 0x59325808,
+       0x59300811, 0x59301402, 0x59340200, 0x8c00050e,
+       0x0402001c, 0x0401f826, 0x04000005, 0x4a025a04,
+       0x00000103, 0x497a5c09, 0x0401f009, 0x4a025a04,
+       0x00000103, 0x4a025a06, 0x00000000, 0x497a5c09,
+       0x800409c0, 0x02020800, 0x00108785, 0x48065807,
+       0x480a5c06, 0x0201f800, 0x000202c1, 0x5934000f,
+       0x5934140b, 0x80081040, 0x04001002, 0x480a6c0b,
+       0x80000540, 0x02020800, 0x00020253, 0x0401f75e,
+       0x592c020a, 0x8c000502, 0x040007e9, 0x800409c0,
+       0x040007e7, 0x592c0208, 0x8c00050e, 0x040207e4,
+       0x4933c857, 0x0201f000, 0x0010920f, 0x592c020a,
+       0x8c000500, 0x04000010, 0x59300015, 0x592c380f,
+       0x801c3c80, 0x0400000c, 0x4a025a06, 0x00000015,
+       0x8c1c3d3e, 0x04000005, 0x4a025a06, 0x00000007,
+       0x801c3880, 0x801c3800, 0x481fc857, 0x821c0d40,
+       0x00000000, 0x1c01f000, 0x59300203, 0x82003480,
+       0x0000000e, 0x02021800, 0x001005d8, 0x0c01f001,
+       0x0010992b, 0x00020852, 0x00109fba, 0x00109fc8,
+       0x0002086e, 0x0010992b, 0x0010a0a8, 0x0002088d,
+       0x0010992b, 0x0010992b, 0x0010992b, 0x0010992b,
+       0x0010992b, 0x0010992b, 0x83380580, 0x00000013,
+       0x02020000, 0x00109f42, 0x59300403, 0x82027480,
+       0x00000044, 0x02021800, 0x001005d8, 0x82000480,
+       0x00000040, 0x02001800, 0x001005d8, 0x0c01f001,
+       0x00109f9e, 0x00020864, 0x00109fa0, 0x00109fb2,
+       0x59325808, 0x832c0500, 0x00ff0000, 0x04000005,
+       0x592c0c0a, 0x8c040d1a, 0x02020000, 0x00109fad,
+       0x0401fe91, 0x0401f710, 0x83380580, 0x00000048,
+       0x04000007, 0x83380580, 0x00000053, 0x02000000,
+       0x0010a04a, 0x0201f800, 0x001005d8, 0x5930001f,
+       0x59301011, 0x59300809, 0x58040a00, 0x8c040d0e,
+       0x02020000, 0x0010a026, 0x800811c0, 0x02020000,
+       0x0010a033, 0x5930001f, 0x80000540, 0x02020000,
+       0x0010a041, 0x59325808, 0x592c040a, 0x8c00051e,
+       0x02000000, 0x0010a01c, 0x42027000, 0x00000041,
+       0x0401f001, 0x83380480, 0x00000054, 0x02021800,
+       0x001005d8, 0x83380480, 0x00000040, 0x02001000,
+       0x0010a067, 0x0c01f001, 0x0010a073, 0x000208aa,
+       0x0010a07f, 0x0010a086, 0x0010a073, 0x0010a073,
+       0x0010a073, 0x0010a073, 0x0010a075, 0x0010a07a,
+       0x0010a07a, 0x0010a073, 0x0010a073, 0x0010a073,
+       0x0010a073, 0x0010a07a, 0x0010a073, 0x0010a07a,
+       0x0010a073, 0x0010a075, 0x4a026203, 0x00000001,
+       0x493a6403, 0x42000800, 0x80002042, 0x0401f672,
+       0x00000000, 0x00000000, 0x00000000, 0x00000000,
+       0x00000000, 0x00000000, 0x00000000, 0x00000000,
+       0x00000000, 0x00000000, 0x00000000, 0x00000000,
+       0x00000000, 0x00000000, 0x00000000, 0x14aa62b1,
+       0x00000000, 0x00000000, 0x00000000, 0x00000005,
+       0xfffffffb, 0x02800004, 0x00000000, 0x0000c000,
+       0x0000071d, 0x073fca5a, 0x0705a5a5, 0x01928009,
+       0x070ff0e1, 0x03800006, 0x04958010, 0x05308000,
+       0x05008000, 0x0600902f, 0x04a004dc, 0x0202f051,
+       0x042e4020, 0x018f021b, 0x033e5000, 0x03020000,
+       0x078d0018, 0x0493041a, 0x0092041c, 0x038a0305,
+       0x078b0303, 0x048e8010, 0x0678aae5, 0x06000001,
+       0x07818174, 0x040010e6, 0x0448e0e6, 0x04818010,
+       0x002fb008, 0x0448e0e6, 0x04818010, 0x060ff0e6,
+       0x00580401, 0x054880ff, 0x04818010, 0x022a5001,
+       0x030430d4, 0x06780043, 0x030e0000, 0x030450ff,
+       0x06780043, 0x03019000, 0x058185c6, 0x027c0045,
+       0x03020000, 0x06810037, 0x027c0045, 0x03040000,
+       0x068100c7, 0x027c0045, 0x03080000, 0x0781061e,
+       0x04908037, 0x029105c4, 0x010410a6, 0x0379ff41,
+       0x037fffff, 0x072d6000, 0x07601241, 0x050f80ff,
+       0x032fa009, 0x05600400, 0x050f80ff, 0x056c04ff,
+       0x068105dc, 0x073fa009, 0x06000001, 0x0279ff02,
+       0x0700ffff, 0x070ff0d1, 0x0179feff, 0x0700ffff,
+       0x045c0402, 0x048185dc, 0x060ff0d0, 0x0179feff,
+       0x0700ffff, 0x057dfeff, 0x0700ffff, 0x078105be,
+       0x05600e41, 0x050f80ff, 0x032fa069, 0x07480000,
+       0x068105d0, 0x06780043, 0x070000f0, 0x0781005f,
+       0x037c00ff, 0x06000010, 0x0781005f, 0x038005cc,
+       0x0379ff00, 0x070fffff, 0x06780043, 0x07f00000,
+       0x075a0000, 0x020ef001, 0x028605ce, 0x05484000,
+       0x02a1819e, 0x062d6001, 0x002fb001, 0x070ff069,
+       0x01868072, 0x060ff079, 0x055c0441, 0x06810010,
+       0x012fb000, 0x060560fb, 0x03800078, 0x060ff079,
+       0x02868198, 0x070ff069, 0x055c0441, 0x06810010,
+       0x060560fb, 0x0400d0d0, 0x062d6002, 0x0648300d,
+       0x06810086, 0x070ff0d1, 0x062d6001, 0x045c040b,
+       0x06810089, 0x05488000, 0x04818086, 0x072e500c,
+       0x00208001, 0x05a004e1, 0x02800010, 0x062d6001,
+       0x07f00000, 0x07f00000, 0x070ff0d1, 0x0179feff,
+       0x070000ff, 0x055c040c, 0x058180bb, 0x0007b001,
+       0x03079041, 0x0307a000, 0x06600a79, 0x050f80ff,
+       0x053fa80a, 0x06000010, 0x072d5003, 0x078d0096,
+       0x0307c003, 0x0007d004, 0x0107e005, 0x0307f006,
+       0x02080007, 0x00081008, 0x01082009, 0x0308300a,
+       0x0008400b, 0x0308500c, 0x068d00a1, 0x0678007a,
+       0x07f00000, 0x010880ff, 0x03386000, 0x03010000,
+       0x072e6300, 0x020ef07f, 0x02860010, 0x070ff07d,
+       0x0450047c, 0x050f80ff, 0x002fa819, 0x068d00ae,
+       0x02080001, 0x00081002, 0x0448807a, 0x068100b5,
+       0x0379ff03, 0x070000ff, 0x01082003, 0x068d00b6,
+       0x02386004, 0x03010000, 0x072e6c00, 0x02800010,
+       0x06780043, 0x070000f0, 0x078105d7, 0x050020ff,
+       0x027c0002, 0x06000010, 0x078100c3, 0x038005d7,
+       0x0700c0d1, 0x0379ff0c, 0x070000ff, 0x0380008e,
+       0x0204a051, 0x06780043, 0x070000f0, 0x037c00ff,
+       0x06000010, 0x0781816a, 0x072d6000, 0x019485c0,
+       0x050fb056, 0x044880e6, 0x04818010, 0x060ff0d0,
+       0x0179feff, 0x0700ffff, 0x057dfeff, 0x0700ffff,
+       0x078105be, 0x05a00212, 0x0349c0e4, 0x0781811d,
+       0x070ff093, 0x050010ff, 0x070ff093, 0x045c0401,
+       0x058180db, 0x02046092, 0x04002046, 0x04600202,
+       0x00540401, 0x048280e6, 0x04500425, 0x070060ff,
+       0x0730ffff, 0x0700000f, 0x0742000f, 0x05810190,
+       0x07a005a6, 0x0648a002, 0x048180e9, 0x00047089,
+       0x070ff047, 0x045c0443, 0x077800ff, 0x07f00000,
+       0x0781818e, 0x07780047, 0x0500e000, 0x048185ad,
+       0x070ff006, 0x01860117, 0x0179fe47, 0x0700000f,
+       0x010480ff, 0x056c7048, 0x06818102, 0x007a0d4a,
+       0x04003801, 0x0220f001, 0x0180010f, 0x07608e48,
+       0x034a60ff, 0x0700f0ff, 0x074b88ff, 0x037000ff,
+       0x07000600, 0x05500448, 0x074d00ff, 0x045a044a,
+       0x0304a0ff, 0x070ff00f, 0x01540406, 0x05820117,
+       0x04950120, 0x05a001bd, 0x02868123, 0x0134bfff,
+       0x070fffff, 0x0104102e, 0x050fd041, 0x00800126,
+       0x0595011d, 0x05a001bd, 0x0186011d, 0x0202f00e,
+       0x052e4030, 0x040fd02f, 0x070fc0ff, 0x05a00218,
+       0x02800010, 0x0400e02f, 0x042e4020, 0x0202f051,
+       0x0004100e, 0x0004b00e, 0x050fd041, 0x024a6c46,
+       0x04500423, 0x050070ff, 0x03620024, 0x050080ff,
+       0x04004046, 0x0700500f, 0x03206000, 0x05601048,
+       0x0700a0ff, 0x0700900a, 0x070ff005, 0x04500446,
+       0x00540425, 0x04820157, 0x05601622, 0x050f80ff,
+       0x063fa032, 0x06000002, 0x03203000, 0x01204000,
+       0x03205000, 0x0120b000, 0x0320c000, 0x07601441,
+       0x050f80ff, 0x043fa852, 0x06000001, 0x070ff056,
+       0x056c02ff, 0x050fb0ff, 0x070560ff, 0x03079041,
+       0x05600e41, 0x050f80ff, 0x073fa011, 0x0600003d,
+       0x06780043, 0x07f00000, 0x065a007a, 0x010880ff,
+       0x04a001b6, 0x058d0150, 0x0208a04a, 0x0108b04b,
+       0x02386001, 0x03010000, 0x072e6300, 0x028000a8,
+       0x0500d00a, 0x05500405, 0x014a68ff, 0x070090ff,
+       0x0154040a, 0x0700c0ff, 0x0600a023, 0x0500b024,
+       0x02206001, 0x05601622, 0x050f80ff, 0x063fa04a,
+       0x06000002, 0x05601022, 0x050f80ff, 0x043fa819,
+       0x06000001, 0x0600a00d, 0x0180013c, 0x06780043,
+       0x070000f0, 0x050010ff, 0x027c0001, 0x07000030,
+       0x078105b4, 0x027c0001, 0x06000020, 0x078105b4,
+       0x038005cc, 0x054880ff, 0x06810010, 0x070ff056,
+       0x050fb0ff, 0x044880e5, 0x0581017d, 0x044880e6,
+       0x04818010, 0x00800183, 0x056c02ff, 0x050fb0ff,
+       0x070560ff, 0x072e5300, 0x044880e6, 0x04818010,
+       0x072d5003, 0x06780043, 0x07f00000, 0x010880ff,
+       0x058d0187, 0x03386005, 0x03010000, 0x033e6000,
+       0x0700000c, 0x052e5200, 0x02800010, 0x0120918e,
+       0x018004e4, 0x01209190, 0x018004e4, 0x00209192,
+       0x018004e4, 0x03209000, 0x018004e4, 0x01209196,
+       0x018004e4, 0x00209198, 0x018004e4, 0x02493075,
+       0x06810510, 0x0120919a, 0x018004e4, 0x06601e01,
+       0x050f80ff, 0x063fa029, 0x06000008, 0x02015010,
+       0x02016051, 0x00017051, 0x00011051, 0x05601a41,
+       0x050f80ff, 0x053fa83a, 0x06000008, 0x05600e41,
+       0x050f80ff, 0x01464000, 0x032fa00a, 0x07006011,
+       0x05007012, 0x04008013, 0x07009014, 0x0600a015,
+       0x0400b016, 0x0700c017, 0x07c00000, 0x072d5003,
+       0x06601479, 0x050f80ff, 0x048d01b9, 0x063fa051,
+       0x0600003e, 0x07c00000, 0x06005051, 0x0400e02c,
+       0x0660060e, 0x050f80ff, 0x032fa009, 0x0379ff00,
+       0x070000ff, 0x076c0000, 0x058101dd, 0x0660480e,
+       0x0500e0ff, 0x034000ff, 0x01540427, 0x0582020a,
+       0x03400005, 0x070ff005, 0x055c0428, 0x0481020e,
+       0x01680e05, 0x056c0405, 0x068181bf, 0x040f8029,
+       0x053fa809, 0x07000024, 0x06600649, 0x050f80ff,
+       0x032fa009, 0x0379ff00, 0x070000ff, 0x076c0000,
+       0x068181bf, 0x0400e049, 0x0340002d, 0x050f802b,
+       0x053fa80a, 0x06000016, 0x0660480e, 0x0302c0ff,
+       0x034000ff, 0x01540427, 0x0582020c, 0x072d6000,
+       0x0460040e, 0x050f80ff, 0x0104e0d1, 0x0379ff4e,
+       0x0700ffff, 0x062d6002, 0x032fa009, 0x0004d0d0,
+       0x074b004d, 0x07780000, 0x07ffff00, 0x055a044d,
+       0x070000ff, 0x00201008, 0x04002051, 0x06003051,
+       0x05304000, 0x07000060, 0x03205009, 0x07006022,
+       0x0460040e, 0x050f80ff, 0x032fa03a, 0x06603c0e,
+       0x050f80ff, 0x073fa00a, 0x07000027, 0x050010d1,
+       0x0460320e, 0x050f80ff, 0x012fa80a, 0x060ff00e,
+       0x055c042e, 0x04810210, 0x07c00000, 0x0400e026,
+       0x008001cb, 0x0202c026, 0x008001e6, 0x0500e02e,
+       0x008001e6, 0x0400e051, 0x01800209, 0x0349c0e4,
+       0x04810215, 0x07c00000, 0x013e4000, 0x070c0000,
+       0x07c00000, 0x013e4000, 0x03080000, 0x07c00000,
+       0x009702f4, 0x022a5002, 0x0790821d, 0x00910291,
+       0x030400a6, 0x0678aae5, 0x06000001, 0x00a1860e,
+       0x06600c40, 0x050f80ff, 0x032fa021, 0x074b0000,
+       0x076c0600, 0x07818293, 0x05600403, 0x050f80ff,
+       0x073fa009, 0x06000002, 0x0279ff04, 0x0700ffff,
+       0x010440d7, 0x0179fe44, 0x0700ffff, 0x045c0404,
+       0x07818295, 0x0349f044, 0x0681829e, 0x02495001,
+       0x06818297, 0x060ff079, 0x045c0440, 0x0781823c,
+       0x0644f07a, 0x002fb008, 0x060ff079, 0x045c0440,
+       0x07818241, 0x0644f07a, 0x002fb008, 0x0648f001,
+       0x07818288, 0x04600e40, 0x050f80ff, 0x06480001,
+       0x04810257, 0x0448e001, 0x04810273, 0x02460001,
+       0x0644f001, 0x012fa80a, 0x04008040, 0x05a004ee,
+       0x0286828c, 0x05a004d8, 0x062da001, 0x013e4000,
+       0x06000080, 0x06930013, 0x02920013, 0x02800010,
+       0x0644f001, 0x012fa80a, 0x020ef002, 0x00860275,
+       0x04600840, 0x050f80ff, 0x053fa809, 0x06000002,
+       0x05780105, 0x00800440, 0x017c0105, 0x05000400,
+       0x06818275, 0x06601e02, 0x050f80ff, 0x053fa809,
+       0x06000002, 0x04602a40, 0x050f80ff, 0x070ff005,
+       0x053fa809, 0x06000002, 0x055c0405, 0x06818275,
+       0x04008040, 0x0045e008, 0x05a004d8, 0x00800251,
+       0x0644f001, 0x012fa80a, 0x050020d8, 0x04600440,
+       0x050f80ff, 0x073fa00a, 0x06000001, 0x06480001,
+       0x07818281, 0x05308000, 0x03040000, 0x06009040,
+       0x04a004dc, 0x00800251, 0x06a0060e, 0x054b0800,
+       0x056a0700, 0x06600c40, 0x050f80ff, 0x032fa00a,
+       0x00800251, 0x013e4000, 0x06000080, 0x01209288,
+       0x018004e4, 0x06009008, 0x05308000, 0x05004000,
+       0x04a004dc, 0x00800251, 0x02209002, 0x008002e5,
+       0x03209000, 0x008002e5, 0x02209004, 0x008002e5,
+       0x04a002fd, 0x062da001, 0x05308000, 0x05002000,
+       0x06009040, 0x04a004dc, 0x02800013, 0x013e4000,
+       0x06000080, 0x02495001, 0x078182db, 0x04600840,
+       0x050f80ff, 0x053fa809, 0x06000001, 0x0721f000,
+       0x0349f003, 0x058102aa, 0x0245f01f, 0x06000002,
+       0x018602db, 0x07601400, 0x050f80ff, 0x012fa809,
+       0x06480001, 0x058102db, 0x06602440, 0x050f80ff,
+       0x012fa809, 0x020ef001, 0x038682db, 0x019b02db,
+       0x050020d8, 0x062da001, 0x06303002, 0x05000430,
+       0x04600440, 0x050f80ff, 0x073fa012, 0x06000001,
+       0x028f82bf, 0x050040d8, 0x062da001, 0x07601e00,
+       0x050f80ff, 0x073fa009, 0x06000001, 0x060ff004,
+       0x00540402, 0x048202d9, 0x06005051, 0x06006051,
+       0x06602240, 0x050f80ff, 0x063fa01a, 0x06000002,
+       0x06600a40, 0x050f80ff, 0x073fa00a, 0x07000003,
+       0x060ff040, 0x045a041f, 0x010eb0ff, 0x06930013,
+       0x02920013, 0x02800010, 0x04004002, 0x018002c9,
+       0x04a002fd, 0x062da001, 0x05308000, 0x07005000,
+       0x06009040, 0x04a004dc, 0x050080d8, 0x05a004e1,
+       0x062da001, 0x02800013, 0x050fd009, 0x050fd041,
+       0x013e4000, 0x06000080, 0x05308000, 0x03013000,
+       0x04a004dc, 0x010440d7, 0x0349f044, 0x048102f2,
+       0x062da001, 0x008f02f2, 0x03e00000, 0x062da001,
+       0x02800013, 0x0249c0e5, 0x06810013, 0x062da001,
+       0x07f00000, 0x07f00000, 0x033e5000, 0x070c0000,
+       0x018f02f6, 0x03800011, 0x050020d8, 0x04600440,
+       0x050f80ff, 0x073fa00a, 0x06000001, 0x07c00000,
+       0x002fb001, 0x03800306, 0x012fb000, 0x03075087,
+       0x068d0307, 0x03386000, 0x03020000, 0x04482075,
+       0x06810352, 0x0648a0e6, 0x07810347, 0x0642007f,
+       0x06810345, 0x0340007e, 0x060ff038, 0x0154047e,
+       0x02d00334, 0x0560027d, 0x050f80ff, 0x032fa009,
+       0x030ef000, 0x02860504, 0x0107d000, 0x05600800,
+       0x050f80ff, 0x032fa009, 0x03681e00, 0x04500420,
+       0x050f80ff, 0x073fa009, 0x0700003f, 0x03800311,
+       0x070ff07d, 0x0450047c, 0x050f80ff, 0x002fa819,
+       0x078d0327, 0x02080001, 0x00081002, 0x0448807a,
+       0x0781032e, 0x0379ff03, 0x070000ff, 0x01082003,
+       0x068d032f, 0x02386004, 0x03010000, 0x072e6c00,
+       0x02800352, 0x0380033a, 0x0380033c, 0x0280033e,
+       0x02800340, 0x03800342, 0x03800344, 0x0727c005,
+       0x02800323, 0x0627c008, 0x02800323, 0x0627c00b,
+       0x02800323, 0x0627c00e, 0x02800323, 0x0727c011,
+       0x02800323, 0x03800314, 0x052e6800, 0x02800352,
+       0x044880e6, 0x07810533, 0x052e6200, 0x070ff088,
+       0x0179feff, 0x070fffff, 0x04818501, 0x060ff083,
+       0x0086836d, 0x033e6000, 0x07000003, 0x068d0352,
+       0x07286000, 0x07f00000, 0x078d0355, 0x038c0306,
+       0x0648c0e6, 0x05818372, 0x0448e0e6, 0x0781036a,
+       0x004920e6, 0x07810365, 0x07a0056f, 0x05001088,
+       0x00700101, 0x03100000, 0x00088001, 0x033e6000,
+       0x07000088, 0x03800560, 0x02386001, 0x07030000,
+       0x033e6000, 0x06000008, 0x028003f1, 0x02799075,
+       0x0500040f, 0x06810010, 0x06601479, 0x050080ff,
+       0x06309052, 0x0600003e, 0x02800376, 0x06602279,
+       0x050080ff, 0x05309812, 0x07000041, 0x0648007a,
+       0x0781037e, 0x04488075, 0x0581837e, 0x040f8008,
+       0x070fa009, 0x0049107a, 0x01a183f3, 0x00798075,
+       0x06000507, 0x05818521, 0x0448b075, 0x06810385,
+       0x02493075, 0x0681050e, 0x0249c0e6, 0x048183e0,
+       0x0648c0e6, 0x0581839a, 0x068d0389, 0x02386001,
+       0x07030000, 0x0049107a, 0x07810390, 0x020ef083,
+       0x0386039a, 0x06483075, 0x068103ef, 0x0678007a,
+       0x07000035, 0x03a184cf, 0x05308000, 0x07060000,
+       0x06009079, 0x04a004dc, 0x028003ef, 0x0448807a,
+       0x0681039e, 0x06483075, 0x058104f9, 0x0448d07a,
+       0x068103a2, 0x06483075, 0x058104f9, 0x068d03a2,
+       0x02386001, 0x07030000, 0x0444e07a, 0x0648307a,
+       0x048183c7, 0x0448707a, 0x068103ea, 0x0648f07a,
+       0x078103b2, 0x05a004cf, 0x04008079, 0x05a004ee,
+       0x008683c2, 0x05a004d8, 0x028003ef, 0x0560107b,
+       0x050f80ff, 0x032fa009, 0x0349c000, 0x058183c0,
+       0x04600e79, 0x050f80ff, 0x073fa00a, 0x0600003d,
+       0x06600a79, 0x050f80ff, 0x053fa80a, 0x06000010,
+       0x028003ef, 0x0046e07a, 0x028003ea, 0x06009008,
+       0x05308000, 0x05004000, 0x04a004dc, 0x028003ef,
+       0x0560167b, 0x050f80ff, 0x032fa011, 0x070ff000,
+       0x04500401, 0x030460ff, 0x060ff025, 0x00540446,
+       0x078203d1, 0x030460ff, 0x04092046, 0x05a00218,
+       0x06600679, 0x050f80ff, 0x00201007, 0x012fa80a,
+       0x0046047a, 0x034630ff, 0x050020ff, 0x06003051,
+       0x04600e79, 0x050f80ff, 0x073fa012, 0x06000001,
+       0x028003ef, 0x033e6a00, 0x0202000e, 0x02079051,
+       0x07000088, 0x078d03e4, 0x0744c000, 0x01088000,
+       0x03386006, 0x03010000, 0x02800010, 0x05a004cf,
+       0x05308000, 0x03020000, 0x06009079, 0x04a004dc,
+       0x033e6a00, 0x0302000a, 0x02079051, 0x02800010,
+       0x04603e79, 0x050f80ff, 0x032fa009, 0x070ff000,
+       0x0186040c, 0x057dfeff, 0x07ffffff, 0x0581040c,
+       0x050f8000, 0x012fa811, 0x0079fe02, 0x070000ff,
+       0x077d66ff, 0x060000dc, 0x0781840c, 0x060ff001,
+       0x0286840d, 0x064b0002, 0x06420002, 0x060ff002,
+       0x05500400, 0x050f80ff, 0x05004084, 0x073fa00a,
+       0x06000002, 0x07c00000, 0x04600201, 0x050f80ff,
+       0x073fa009, 0x06000001, 0x0079fe02, 0x070000ff,
+       0x077d72ff, 0x070000dd, 0x0781840c, 0x064b0002,
+       0x06420002, 0x06000001, 0x01800406, 0x0605004c,
+       0x0180041e, 0x0493041a, 0x04a004d5, 0x054bc450,
+       0x05810421, 0x01d00422, 0x01800421, 0x00800432,
+       0x00800434, 0x00800432, 0x008004a7, 0x0180043f,
+       0x00800434, 0x01800471, 0x00800432, 0x00800432,
+       0x008004ab, 0x00800432, 0x018004af, 0x008004c4,
+       0x01800488, 0x00800432, 0x00800432, 0x00209432,
+       0x018004e4, 0x0379ff50, 0x070fffff, 0x060ff079,
+       0x055c0450, 0x048104a4, 0x002fb008, 0x060ff079,
+       0x055c0450, 0x058104a3, 0x04a004c7, 0x0180049c,
+       0x0179fe50, 0x070fffff, 0x070050ff, 0x060ff079,
+       0x055c0405, 0x04810449, 0x002fb008, 0x060ff079,
+       0x055c0405, 0x078184a0, 0x070ff087, 0x017980ff,
+       0x06000507, 0x06818451, 0x02203040, 0x05002087,
+       0x0049d002, 0x0481046b, 0x04930458, 0x01257000,
+       0x073c3fff, 0x0700000f, 0x052e4003, 0x072e5030,
+       0x0304c050, 0x02400057, 0x06740057, 0x06000002,
+       0x06820016, 0x04002083, 0x07003084, 0x04004085,
+       0x06602279, 0x050f80ff, 0x063fa01a, 0x06000001,
+       0x05a004cf, 0x07a00578, 0x033e6a00, 0x0302000a,
+       0x062e5020, 0x003e4002, 0x07000a00, 0x028003f1,
+       0x07420003, 0x0781844e, 0x00798002, 0x06000507,
+       0x06818451, 0x0180045c, 0x05930478, 0x01257000,
+       0x073c3fff, 0x0700000f, 0x052e4003, 0x072e5030,
+       0x0304c050, 0x067800e6, 0x07000041, 0x0581047d,
+       0x07a00581, 0x04818016, 0x002fb008, 0x067800e6,
+       0x07000041, 0x04810483, 0x07a00581, 0x04818016,
+       0x062e5020, 0x003e4002, 0x07000a00, 0x03e00000,
+       0x02800010, 0x0379ff50, 0x070fffff, 0x060ff079,
+       0x055c0450, 0x0781848e, 0x0245507a, 0x002fb008,
+       0x060ff079, 0x055c0450, 0x07818493, 0x0245507a,
+       0x002fb008, 0x05600e50, 0x050f80ff, 0x012fa809,
+       0x02455001, 0x05600e50, 0x050f80ff, 0x012fa80a,
+       0x0080049d, 0x002fb008, 0x003e4002, 0x07000a00,
+       0x02800016, 0x079384a3, 0x062e5020, 0x042e4002,
+       0x002fb008, 0x013e4000, 0x05000e00, 0x02800016,
+       0x0179fe50, 0x070fffff, 0x010210ff, 0x02800016,
+       0x0179fe50, 0x070fffff, 0x050340ff, 0x0080049d,
+       0x0179fe50, 0x070fffff, 0x0102e0ff, 0x0760282e,
+       0x050f80ff, 0x05222000, 0x07223000, 0x05224000,
+       0x07225000, 0x07226000, 0x05227000, 0x05228000,
+       0x07229000, 0x0722a000, 0x0522b000, 0x063fa051,
+       0x07000011, 0x0202c026, 0x0522d000, 0x052e400c,
+       0x02800016, 0x030430d4, 0x062e5008, 0x00800176,
+       0x05600e50, 0x050f80ff, 0x032fa009, 0x03460000,
+       0x018004d2, 0x0246007a, 0x0045207a, 0x008004d0,
+       0x0246007a, 0x0600007a, 0x04600e79, 0x050f80ff,
+       0x032fa00a, 0x07c00000, 0x029284d5, 0x070500e1,
+       0x07c00000, 0x0245f008, 0x048404d9, 0x020e0008,
+       0x07c00000, 0x070ff009, 0x065a0008, 0x058404de,
+       0x020e0008, 0x07c00000, 0x058404e1, 0x020e0008,
+       0x07c00000, 0x05308000, 0x0500d000, 0x04a004dc,
+       0x04a004e9, 0x02800010, 0x052e4300, 0x072e500c,
+       0x073c3fff, 0x0700000f, 0x07c00000, 0x06602208,
+       0x050f80ff, 0x032fa011, 0x076a0000, 0x068184f7,
+       0x066a0001, 0x048104f7, 0x04002051, 0x07c00000,
+       0x00202001, 0x07c00000, 0x0648307a, 0x00a18608,
+       0x05a004cc, 0x05308000, 0x05001000, 0x06009079,
+       0x04a004dc, 0x03800560, 0x0249c0e6, 0x058104f9,
+       0x0280036d, 0x0648307a, 0x07818196, 0x05a004cf,
+       0x05308000, 0x03013000, 0x03209006, 0x04a004dc,
+       0x033e6000, 0x07030000, 0x02800345, 0x02490075,
+       0x0781051e, 0x04002089, 0x04780102, 0x07f00000,
+       0x05001088, 0x07a0056f, 0x04740101, 0x03100000,
+       0x060ff002, 0x045c0401, 0x0481851f, 0x00088001,
+       0x033e6000, 0x070000c0, 0x0380055c, 0x07f00000,
+       0x0220951f, 0x018004e4, 0x0648307a, 0x07810527,
+       0x06780075, 0x06000007, 0x0581852e, 0x06a00608,
+       0x06486075, 0x06818194, 0x02490075, 0x0781819a,
+       0x04487075, 0x05818536, 0x0280053d, 0x05308000,
+       0x03010000, 0x06009079, 0x04a004dc, 0x02800010,
+       0x0448e0e6, 0x04818352, 0x00800192, 0x05308000,
+       0x0500e000, 0x06009079, 0x04a004dc, 0x04008089,
+       0x05a004e1, 0x0380055c, 0x05a004cc, 0x05308000,
+       0x0700f000, 0x06009079, 0x07000088, 0x06a00545,
+       0x04a004dc, 0x02800010, 0x03386000, 0x07030000,
+       0x07f00000, 0x078d0548, 0x033e6a00, 0x0202000e,
+       0x02079051, 0x0448b075, 0x07810553, 0x02493075,
+       0x07810553, 0x05301005, 0x03010000, 0x03800555,
+       0x05301006, 0x03010000, 0x05002087, 0x06485002,
+       0x05818555, 0x0744c000, 0x01088000, 0x02086001,
+       0x07c00000, 0x05001088, 0x07a0056f, 0x0644c001,
+       0x00088001, 0x033e6a00, 0x0202000e, 0x004920e6,
+       0x05818565, 0x02079051, 0x078d0565, 0x060ff089,
+       0x034990ff, 0x0781056c, 0x03386005, 0x03010000,
+       0x02800010, 0x03386006, 0x03010000, 0x02800010,
+       0x078d056f, 0x03386000, 0x07030000, 0x07f00000,
+       0x068d0573, 0x070ff087, 0x074850ff, 0x05818574,
+       0x07c00000, 0x078d0578, 0x02386001, 0x07030000,
+       0x07f00000, 0x068d057c, 0x070ff087, 0x074850ff,
+       0x0581857d, 0x07c00000, 0x05002087, 0x0049d002,
+       0x05818590, 0x002fb008, 0x067800e6, 0x07000041,
+       0x002fb008, 0x05818590, 0x07a005a6, 0x0448e002,
+       0x07810593, 0x0648a002, 0x0481859d, 0x06486002,
+       0x06810597, 0x02400057, 0x056a02ff, 0x07c00000,
+       0x07a005a6, 0x06788102, 0x06000004, 0x05818590,
+       0x04002089, 0x070ff0d4, 0x045c0402, 0x077800ff,
+       0x07f00000, 0x05818590, 0x00202010, 0x038c0590,
+       0x07f00000, 0x06420002, 0x0481859e, 0x07a00578,
+       0x033e6a00, 0x0302000a, 0x07c00000, 0x07f00000,
+       0x060ff0a2, 0x050020ff, 0x060ff0a2, 0x045c0402,
+       0x048185a7, 0x07c00000, 0x05a00218, 0x03495047,
+       0x078105b2, 0x0320901d, 0x02800604, 0x0220901f,
+       0x02800604, 0x014980e4, 0x04818010, 0x013e4000,
+       0x07003000, 0x05600e35, 0x050f80ff, 0x07a006fc,
+       0x01208003, 0x05a004e1, 0x038005cc, 0x03209009,
+       0x02800604, 0x03209011, 0x02800604, 0x02209007,
+       0x02800604, 0x03209003, 0x02800604, 0x00498043,
+       0x058185be, 0x00497043, 0x048185c2, 0x02209001,
+       0x02800604, 0x0220900d, 0x02800604, 0x0320900f,
+       0x02800604, 0x03493000, 0x068105d5, 0x027c0045,
+       0x070a0000, 0x078105de, 0x0220900b, 0x02800604,
+       0x02209013, 0x05308000, 0x01012000, 0x04a004dc,
+       0x00800183, 0x03209005, 0x02800604, 0x072e500c,
+       0x00208002, 0x05a004e1, 0x02800010, 0x02209015,
+       0x02800604, 0x072d6000, 0x05308000, 0x05007000,
+       0x07f00000, 0x070090d1, 0x0379ff09, 0x0700ffff,
+       0x04a004dc, 0x03209017, 0x02800604, 0x033e5000,
+       0x06000080, 0x02209019, 0x02800604, 0x072d6000,
+       0x033e5000, 0x06000080, 0x07f00000, 0x060ff0d0,
+       0x0179feff, 0x0700ffff, 0x057dfeff, 0x0700ffff,
+       0x04818010, 0x02400058, 0x00642058, 0x06820010,
+       0x033e5000, 0x06000080, 0x04058051, 0x0320901b,
+       0x02800604, 0x05308000, 0x01012000, 0x04a004dc,
+       0x00800176, 0x05a00218, 0x05308000, 0x05008000,
+       0x06009079, 0x04a004dc, 0x07c00000, 0x034900e4,
+       0x05818618, 0x013e4000, 0x070000c0, 0x07f00000,
+       0x034900e4, 0x04818616, 0x07c00000, 0x013e4000,
+       0x06000080, 0x07f00000, 0x07f00000, 0x07f00000,
+       0x034900e4, 0x06810610, 0x03800618, 0x072d6000,
+       0x00498043, 0x06810632, 0x060ff0d0, 0x0179feff,
+       0x0700ffff, 0x057dfeff, 0x0700ffff, 0x058185e2,
+       0x050f8030, 0x032fa009, 0x0379ff00, 0x0700ffff,
+       0x070ff0d1, 0x0179feff, 0x0700ffff, 0x055c0400,
+       0x078105e2, 0x04004051, 0x0280067a, 0x06a006dc,
+       0x062d6001, 0x020ef004, 0x038605e4, 0x06600004,
+       0x050f80ff, 0x032fa009, 0x074b0000, 0x05002000,
+       0x0769ff00, 0x01640800, 0x078205e4, 0x01640e00,
+       0x058285e4, 0x070ff036, 0x045c0404, 0x0581864d,
+       0x072d6000, 0x050f8030, 0x032fa009, 0x0379ff00,
+       0x0700ffff, 0x070ff0d1, 0x0179feff, 0x0700ffff,
+       0x055c0400, 0x078105e2, 0x04482034, 0x078105ff,
+       0x06483034, 0x058185ff, 0x070ff0d4, 0x077800ff,
+       0x070000f0, 0x037c00ff, 0x06000010, 0x0681067a,
+       0x06a006d6, 0x024900e5, 0x0681065d, 0x033e5000,
+       0x06000080, 0x02800010, 0x04601c04, 0x050f80ff,
+       0x053fa809, 0x06000020, 0x030ef041, 0x038605ee,
+       0x062d6002, 0x05602a41, 0x050f80ff, 0x012fa809,
+       0x060ff0d0, 0x074b00ff, 0x045c0401, 0x05818678,
+       0x062d6001, 0x07602841, 0x050f80ff, 0x053fa809,
+       0x06000001, 0x070ff0d1, 0x054b80ff, 0x074b0003,
+       0x055c0403, 0x05818678, 0x033e5000, 0x06000080,
+       0x0080070e, 0x07600041, 0x0280065e, 0x06a006d6,
+       0x024900e5, 0x06810680, 0x033e5000, 0x06000080,
+       0x02800010, 0x06a006c2, 0x030ef041, 0x028605f2,
+       0x04058051, 0x072d6000, 0x05601041, 0x050f80ff,
+       0x012fa809, 0x0600a0d0, 0x0500b0d1, 0x062d6001,
+       0x07f00000, 0x07f00000, 0x0600c0d0, 0x0500d0d1,
+       0x062d6002, 0x0279ff0d, 0x07ff0000, 0x044d800d,
+       0x060ff0d0, 0x074b00ff, 0x065a000d, 0x06601201,
+       0x050f80ff, 0x073fa022, 0x07000005, 0x0079fe0d,
+       0x070000ff, 0x050020ff, 0x05602a41, 0x050f80ff,
+       0x073fa00a, 0x06000001, 0x020ef004, 0x028606bf,
+       0x04601c04, 0x050f80ff, 0x053fa809, 0x06000001,
+       0x050f80ff, 0x053fa80a, 0x06000020, 0x07602841,
+       0x050f80ff, 0x073fa009, 0x06000001, 0x0279ff02,
+       0x070000ff, 0x0678000d, 0x0700ff00, 0x065a0002,
+       0x07602841, 0x050f80ff, 0x073fa00a, 0x06000001,
+       0x07600041, 0x050f80ff, 0x053fa80a, 0x06000001,
+       0x07601241, 0x050f80ff, 0x073fa00a, 0x06000002,
+       0x033e5000, 0x06000080, 0x0080070e, 0x040f8032,
+       0x073fa011, 0x06000001, 0x060ff002, 0x055c0403,
+       0x058186ca, 0x00041051, 0x07c00000, 0x04600402,
+       0x04500432, 0x050f80ff, 0x053fa809, 0x06000020,
+       0x00400402, 0x01680eff, 0x070030ff, 0x040f8032,
+       0x053fa80a, 0x06000001, 0x07c00000, 0x024900e5,
+       0x068106d9, 0x07c00000, 0x033e5000, 0x070000c0,
+       0x07c00000, 0x05004036, 0x060000d0, 0x0179fe00,
+       0x0700ffff, 0x057dfeff, 0x0700ffff, 0x068106fb,
+       0x070000d1, 0x0379ff00, 0x0700ffff, 0x06005051,
+       0x060ff031, 0x05500405, 0x050f80ff, 0x073fa009,
+       0x06000002, 0x020ef004, 0x038606f5, 0x04600404,
+       0x050f80ff, 0x012fa809, 0x0079fe01, 0x0700ffff,
+       0x055c0400, 0x068106fb, 0x01400405, 0x070050ff,
+       0x057de0ff, 0x06000007, 0x058186e7, 0x04004051,
+       0x07c00000, 0x072d6000, 0x07f00000, 0x07f00000,
+       0x000110d0, 0x010120d1, 0x062d6001, 0x07f00000,
+       0x07f00000, 0x020130d0, 0x010140d1, 0x062d6002,
+       0x010170d4, 0x07f00000, 0x020150d0, 0x030160d1,
+       0x053fa83a, 0x06000008, 0x07c00000, 0x07600c41,
+       0x050f80ff, 0x073fa009, 0x06000001, 0x04780102,
+       0x07ffff00, 0x046a0702, 0x050f80ff, 0x073fa00a,
+       0x06000001, 0x05600e41, 0x050f80ff, 0x032fa069,
+       0x03800053, 0xba6b4e34, 0x02800004, 0x00000000,
+       0x00008000, 0x00000518, 0x040f801f, 0x012fa8c9,
+       0x040f801f, 0x073fa081, 0x06000010, 0x03200005,
+       0x07420000, 0x050fb000, 0x040f801f, 0x073fa011,
+       0x06000038, 0x040f801f, 0x053fa859, 0x0700003a,
+       0x050fe000, 0x0581800a, 0x0684003d, 0x04958019,
+       0x030e0011, 0x072e4200, 0x03800014, 0x0291001f,
+       0x050010c0, 0x04482001, 0x058180e8, 0x06483001,
+       0x0781814b, 0x02920029, 0x068b0029, 0x018a0150,
+       0x050010c0, 0x06780001, 0x050007c0, 0x06818223,
+       0x06780001, 0x0500f800, 0x07818263, 0x03910030,
+       0x040fe029, 0x03860030, 0x076c001d, 0x04810294,
+       0x076c0a1d, 0x048102b9, 0x0292003d, 0x040fe02f,
+       0x0286003d, 0x06000013, 0x050fb000, 0x066c0073,
+       0x068103c2, 0x0297003d, 0x014920e4, 0x0481803d,
+       0x03400000, 0x076c0a00, 0x04818034, 0x0796003f,
+       0x03b900b8, 0x05908014, 0x010170e1, 0x07780017,
+       0x03e00000, 0x06810092, 0x050010ff, 0x0179fe17,
+       0x031fffff, 0x070000ff, 0x05600800, 0x050f80ff,
+       0x073fa009, 0x06000001, 0x06780002, 0x02800040,
+       0x037c00ff, 0x03800000, 0x0681005e, 0x0249f002,
+       0x068100ab, 0x0448e002, 0x0681005e, 0x07600c00,
+       0x050f80ff, 0x073fa009, 0x06000001, 0x06780002,
+       0x07ffff00, 0x037c00ff, 0x05000200, 0x048180ab,
+       0x064bd401, 0x03d00060, 0x038000a9, 0x02800068,
+       0x03800072, 0x0280007c, 0x02800086, 0x03800090,
+       0x038000a9, 0x038000a9, 0x050fe027, 0x0186806c,
+       0x01028000, 0x0380006f, 0x07600027, 0x050f80ff,
+       0x032fa00a, 0x01027000, 0x02400029, 0x028000ab,
+       0x040fe025, 0x00868076, 0x03026000, 0x02800079,
+       0x06600025, 0x050f80ff, 0x032fa00a, 0x03025000,
+       0x02400029, 0x028000ab, 0x050fe021, 0x00868080,
+       0x01022000, 0x02800083, 0x07600021, 0x050f80ff,
+       0x032fa00a, 0x01021000, 0x02400029, 0x028000ab,
+       0x040fe023, 0x0086808a, 0x01024000, 0x0380008d,
+       0x06600023, 0x050f80ff, 0x032fa00a, 0x03023000,
+       0x02400029, 0x028000ab, 0x06a000c8, 0x028000ab,
+       0x01640817, 0x058280a9, 0x070ff017, 0x03d00096,
+       0x0280009e, 0x038000a0, 0x038000a3, 0x038000a6,
+       0x038000a9, 0x038000a9, 0x038000a9, 0x038000a9,
+       0x03e00000, 0x03800014, 0x059080a0, 0x030160e1,
+       0x028000ab, 0x059080a3, 0x030150e1, 0x028000ab,
+       0x059080a6, 0x010140e1, 0x028000ab, 0x060fc013,
+       0x06a00510, 0x03800014, 0x072e4800, 0x07000012,
+       0x038000bb, 0x0747f000, 0x05600800, 0x050f80ff,
+       0x012fa809, 0x0249f001, 0x078100bb, 0x01012000,
+       0x052e4c00, 0x07c00000, 0x070000eb, 0x0349f000,
+       0x058180af, 0x05600800, 0x050f80ff, 0x012fa809,
+       0x0448e001, 0x068100c1, 0x07c00000, 0x0079c101,
+       0x07ffffff, 0x027a4b01, 0x03800000, 0x05600800,
+       0x050f80ff, 0x012fa80a, 0x07600c00, 0x050f80ff,
+       0x012fa821, 0x06780001, 0x07ffff00, 0x037c00ff,
+       0x05000700, 0x078100dd, 0x06601804, 0x070030ff,
+       0x050f80ff, 0x012fa809, 0x05002000, 0x050f8003,
+       0x073fa00a, 0x06000001, 0x040fe001, 0x038600de,
+       0x04600201, 0x050f80ff, 0x032fa00a, 0x07c00000,
+       0x050fe02e, 0x008680e3, 0x0102e000, 0x0302f000,
+       0x038000e7, 0x0760002e, 0x050f80ff, 0x032fa00a,
+       0x0102e000, 0x07c00000, 0x022c0004, 0x056c041d,
+       0x078100fc, 0x056c021d, 0x04810113, 0x056c081d,
+       0x04810125, 0x076c061d, 0x0581013f, 0x0521d000,
+       0x0202c013, 0x0202a013, 0x02020013, 0x0460021a,
+       0x050f80ff, 0x053fa80a, 0x07000009, 0x03b600ac,
+       0x0484801f, 0x0280003d, 0x040fe02a, 0x028600f2,
+       0x06000013, 0x04001013, 0x0560102b, 0x050f80ff,
+       0x032fa012, 0x06420029, 0x0660002a, 0x050f80ff,
+       0x053fa809, 0x06000001, 0x050fe003, 0x00860110,
+       0x01028003, 0x0660002a, 0x050f80ff, 0x053fa80a,
+       0x07000009, 0x00800140, 0x00028013, 0x00027013,
+       0x00800140, 0x040fe02a, 0x028600f1, 0x06420029,
+       0x0660002a, 0x050f80ff, 0x053fa809, 0x06000001,
+       0x050fe003, 0x01860122, 0x03026003, 0x0660002a,
+       0x050f80ff, 0x053fa80a, 0x07000009, 0x00800140,
+       0x02026013, 0x02025013, 0x00800140, 0x040fe02a,
+       0x028600f1, 0x06420029, 0x0660002a, 0x050f80ff,
+       0x053fa809, 0x06000001, 0x050fe003, 0x00860134,
+       0x01022003, 0x0660002a, 0x050f80ff, 0x053fa80a,
+       0x07000009, 0x01800136, 0x00022013, 0x00021013,
+       0x0647f020, 0x007a0120, 0x04000101, 0x04a00285,
+       0x0400802a, 0x05a004f5, 0x009480f1, 0x0521d005,
+       0x028000f2, 0x038000fa, 0x0647f020, 0x06486020,
+       0x06818145, 0x04a00285, 0x028000f1, 0x007a0120,
+       0x04000101, 0x04a00285, 0x0400802a, 0x05a004f5,
+       0x028000f1, 0x040fd02a, 0x052e4003, 0x00208010,
+       0x05a004f5, 0x038000fa, 0x00018098, 0x07480018,
+       0x06818161, 0x05481018, 0x0781815f, 0x05482018,
+       0x0681815d, 0x07483018, 0x0681815b, 0x002fb004,
+       0x00800162, 0x012fb003, 0x00800162, 0x002fb002,
+       0x00800162, 0x002fb001, 0x00800162, 0x012fb000,
+       0x0179fe78, 0x070000ff, 0x030190ff, 0x00017086,
+       0x058b0166, 0x03385000, 0x03020000, 0x07780017,
+       0x00430407, 0x078181ee, 0x046c0419, 0x048101a2,
+       0x046c0219, 0x05810172, 0x07219000, 0x00800186,
+       0x07219000, 0x07483017, 0x0481018c, 0x05482017,
+       0x05810193, 0x0448b075, 0x06818186, 0x06601476,
+       0x050f80ff, 0x073fa022, 0x0600003e, 0x06000080,
+       0x05001081, 0x05002082, 0x06003083, 0x05004084,
+       0x04601c76, 0x050f80ff, 0x022fa02a, 0x07219000,
+       0x07780078, 0x07ffff00, 0x045a0419, 0x010780ff,
+       0x0484801f, 0x0280003d, 0x040fe07f, 0x0086019b,
+       0x05a001bb, 0x00920186, 0x040fe07f, 0x07a681bb,
+       0x00800186, 0x0560107b, 0x050f80ff, 0x032fa009,
+       0x0744f000, 0x0560107b, 0x050f80ff, 0x032fa00a,
+       0x00800179, 0x052e400c, 0x040080fb, 0x046aa108,
+       0x06009076, 0x04002075, 0x05a004fc, 0x00800186,
+       0x06219001, 0x05482017, 0x058101af, 0x058b01a5,
+       0x060ff086, 0x0349f0ff, 0x07818165, 0x07483017,
+       0x058101ac, 0x050fd0ff, 0x040fe07f, 0x07a681bb,
+       0x00800186, 0x05004084, 0x05a00205, 0x00920186,
+       0x070ff07d, 0x0450047c, 0x056004ff, 0x050f80ff,
+       0x032fa009, 0x070ff000, 0x00540479, 0x030790ff,
+       0x01800193, 0x060ff079, 0x0054047a, 0x058201e7,
+       0x058101e7, 0x070ff07d, 0x0450047c, 0x050f80ff,
+       0x002fa819, 0x058b01c3, 0x02080001, 0x00081002,
+       0x01082003, 0x048b01c7, 0x03385000, 0x03010000,
+       0x02400019, 0x070ff003, 0x04500479, 0x030790ff,
+       0x0340007e, 0x0642007f, 0x058101e7, 0x070ff07e,
+       0x050f80ff, 0x032fa009, 0x050fe000, 0x028681e6,
+       0x070ff07d, 0x056002ff, 0x050f80ff, 0x032fa009,
+       0x0107d000, 0x018601e8, 0x0560087d, 0x050f80ff,
+       0x032fa009, 0x0569fe00, 0x0550041b, 0x050f80ff,
+       0x032fa009, 0x0107e000, 0x070ff07e, 0x018001d2,
+       0x0307c000, 0x07c00000, 0x052e400c, 0x040080fb,
+       0x046aa108, 0x06009076, 0x04002075, 0x018004fc,
+       0x040fd076, 0x050fd017, 0x060ff086, 0x077800ff,
+       0x07000060, 0x037c00ff, 0x07000060, 0x078181f0,
+       0x07780078, 0x07ffff00, 0x045a0419, 0x010780ff,
+       0x06601476, 0x050f80ff, 0x073fa022, 0x0600003e,
+       0x052e400c, 0x040080fb, 0x066a8108, 0x06009076,
+       0x04002075, 0x05a004fc, 0x02800029, 0x0240007f,
+       0x0742007e, 0x050f807e, 0x032fa009, 0x050fe000,
+       0x0286821f, 0x070ff07d, 0x055c047b, 0x05810214,
+       0x0760007d, 0x050f80ff, 0x032fa009, 0x050fe000,
+       0x03868214, 0x070ff07b, 0x0107d0ff, 0x0560087d,
+       0x050f80ff, 0x032fa009, 0x03681e00, 0x0450041c,
+       0x0107e0ff, 0x050f80ff, 0x032fa009, 0x050fe000,
+       0x01860221, 0x0307c000, 0x07c00000, 0x040fd076,
+       0x02800510, 0x010180c0, 0x0548e018, 0x0781823c,
+       0x0748f018, 0x06818238, 0x03490018, 0x06818234,
+       0x01491018, 0x07818230, 0x073c0000, 0x06000040,
+       0x02200004, 0x0180023f, 0x073c0000, 0x06000020,
+       0x03200003, 0x0180023f, 0x073c0000, 0x06000010,
+       0x02200002, 0x0180023f, 0x073c0000, 0x06000008,
+       0x02200001, 0x0180023f, 0x073c0000, 0x06000004,
+       0x06000013, 0x050fb000, 0x040fe076, 0x00860258,
+       0x046c0273, 0x04810268, 0x066c0073, 0x04810249,
+       0x040fd076, 0x06a00510, 0x03800014, 0x040fd076,
+       0x0080024c, 0x00452075, 0x00077013, 0x0647f075,
+       0x06486075, 0x06818252, 0x05a0028b, 0x00800258,
+       0x007a0175, 0x04000101, 0x05a0028b, 0x04008076,
+       0x0245f008, 0x05a004f5, 0x07273000, 0x05600272,
+       0x050f80ff, 0x053fa80a, 0x07000009, 0x0379ff78,
+       0x070000ff, 0x02076013, 0x02075013, 0x0484801f,
+       0x0280003d, 0x070fc0ff, 0x052e400c, 0x00208020,
+       0x05a004f5, 0x00800261, 0x04600276, 0x050010ff,
+       0x040f8001, 0x032fa009, 0x040f8001, 0x053fa80a,
+       0x07000009, 0x070ff000, 0x0286827a, 0x06601276,
+       0x050f80ff, 0x073fa009, 0x0700000c, 0x07601818,
+       0x050f80ff, 0x053fa80a, 0x07000009, 0x0180027b,
+       0x07a000de, 0x0448b075, 0x0581024b, 0x06000013,
+       0x04001013, 0x0560107b, 0x050f80ff, 0x032fa012,
+       0x0046b075, 0x03b600ac, 0x0080024c, 0x06000020,
+       0x04001016, 0x0460082a, 0x050f80ff, 0x032fa012,
+       0x07c00000, 0x06000075, 0x040010a2, 0x044b0801,
+       0x060ff016, 0x065a0001, 0x04600876, 0x050f80ff,
+       0x032fa012, 0x07c00000, 0x050fe022, 0x0186029a,
+       0x0421d004, 0x0302a022, 0x04a002c1, 0x018002b1,
+       0x040fe026, 0x008602b3, 0x0421d001, 0x0202a026,
+       0x04a002c1, 0x0202c013, 0x00683e20, 0x070060ff,
+       0x056c0206, 0x048102f4, 0x056c0406, 0x0781030a,
+       0x076c0606, 0x06810379, 0x056c1606, 0x078182b1,
+       0x04488020, 0x07810387, 0x040fd02a, 0x0521d000,
+       0x0202a013, 0x02020013, 0x008002b3, 0x04a004ec,
+       0x008002bf, 0x050fe028, 0x008602bf, 0x0302a028,
+       0x0421d002, 0x04a002c1, 0x008002c8, 0x050fe022,
+       0x008602bf, 0x0421d004, 0x0302a022, 0x04a002c1,
+       0x04a004ec, 0x05848030, 0x0280003d, 0x0460082a,
+       0x050f80ff, 0x022fa031, 0x03020000, 0x0002b004,
+       0x01018005, 0x07c00000, 0x0400702a, 0x06a003ba,
+       0x007a0101, 0x07060000, 0x07303000, 0x07008290,
+       0x07600018, 0x050f80ff, 0x053fa809, 0x07000003,
+       0x0448e007, 0x068182d6, 0x06006013, 0x018002dd,
+       0x02400010, 0x048102d6, 0x06006010, 0x0460322a,
+       0x050f80ff, 0x073fa00a, 0x07000003, 0x050f801e,
+       0x032fa03a, 0x063aa020, 0x06000002, 0x013e4000,
+       0x07000030, 0x009802e3, 0x070ff0f6, 0x036830ff,
+       0x078182e4, 0x070f001e, 0x0560102b, 0x050f10ff,
+       0x063f3c08, 0x0600000d, 0x013e4000, 0x06000020,
+       0x040f801a, 0x0320000a, 0x022017d0, 0x032fa012,
+       0x0202c013, 0x008002bf, 0x04007013, 0x06a003ba,
+       0x007a0101, 0x07050000, 0x07303000, 0x07008890,
+       0x074d0005, 0x06006013, 0x050f801e, 0x032fa03a,
+       0x05601a2b, 0x050f80ff, 0x022fa019, 0x04001002,
+       0x04002013, 0x040f801f, 0x022fa01a, 0x073aa00c,
+       0x06000002, 0x07300c03, 0x0600000d, 0x028003a7,
+       0x04007013, 0x06a003ba, 0x007a0101, 0x03070000,
+       0x0660282a, 0x050f80ff, 0x073fa009, 0x06000004,
+       0x02499008, 0x07810317, 0x07303000, 0x07008890,
+       0x02800319, 0x07303000, 0x04008980, 0x05007003,
+       0x074d0005, 0x06006013, 0x050f801e, 0x032fa03a,
+       0x0760142b, 0x050f80ff, 0x032fa021, 0x064b0002,
+       0x02499008, 0x06810325, 0x0644c002, 0x054b0400,
+       0x050040ff, 0x06698104, 0x0581833a, 0x06000013,
+       0x04001013, 0x04780102, 0x06000010, 0x06003013,
+       0x04004013, 0x06005013, 0x06006013, 0x04007013,
+       0x00644015, 0x07820336, 0x04448002, 0x02205008,
+       0x040f801f, 0x032fa042, 0x04008015, 0x03800371,
+       0x046c8004, 0x05818348, 0x01208018, 0x06780002,
+       0x07000003, 0x0581834b, 0x06003001, 0x06000013,
+       0x04001013, 0x04004013, 0x06005013, 0x040f801f,
+       0x022fa032, 0x03800371, 0x040fd02a, 0x06a00510,
+       0x03800014, 0x04488002, 0x07810350, 0x070ff003,
+       0x04500408, 0x050080ff, 0x06489002, 0x06810357,
+       0x0379ff00, 0x070000ff, 0x070ff000, 0x04500408,
+       0x050080ff, 0x07005003, 0x05004000, 0x06003001,
+       0x06000013, 0x04001013, 0x040f801f, 0x022fa032,
+       0x05601c2b, 0x050f80ff, 0x022fa031, 0x06600c1f,
+       0x050f80ff, 0x022fa032, 0x02680608, 0x07810371,
+       0x016408ff, 0x057dfeff, 0x07ffffff, 0x034000ff,
+       0x045a0407, 0x070000ff, 0x0760061e, 0x050f80ff,
+       0x032fa00a, 0x06600908, 0x0669f908, 0x027a0008,
+       0x06000020, 0x070aa0ff, 0x014a20ff, 0x037a00ff,
+       0x060000dc, 0x070000ff, 0x028003a7, 0x04007013,
+       0x06a003ba, 0x007a0101, 0x07030000, 0x07303000,
+       0x07008190, 0x06006013, 0x050f801e, 0x032fa03a,
+       0x073aa000, 0x06000002, 0x07300c00, 0x07000005,
+       0x028003a7, 0x04007013, 0x06a003ba, 0x007a0101,
+       0x07810000, 0x07303000, 0x07000090, 0x06006013,
+       0x06600c2a, 0x050f80ff, 0x053fa809, 0x07000003,
+       0x04780107, 0x07ffff00, 0x007c0107, 0x07000500,
+       0x0581839a, 0x07303000, 0x05000890, 0x074d0005,
+       0x0660282a, 0x050f80ff, 0x053fa809, 0x07000003,
+       0x0049d007, 0x068103a1, 0x02206001, 0x050f801e,
+       0x032fa03a, 0x073aa000, 0x06000002, 0x07300c00,
+       0x07000005, 0x013e4000, 0x07000030, 0x039803a9,
+       0x070ff0f6, 0x036830ff, 0x058183aa, 0x070f001e,
+       0x040f101f, 0x070f3000, 0x013e4000, 0x06000020,
+       0x040f801a, 0x0320000a, 0x022017d0, 0x032fa012,
+       0x008002bf, 0x03200000, 0x06006076, 0x028003bc,
+       0x03200011, 0x0600602a, 0x05a00441, 0x05600406,
+       0x050f80ff, 0x053fa809, 0x06000002, 0x07c00000,
+       0x0207602f, 0x04600876, 0x050f80ff, 0x022fa031,
+       0x03075000, 0x0007b004, 0x01018005, 0x06600076,
+       0x050020ff, 0x050f80ff, 0x012fa809, 0x0202f001,
+       0x008683d0, 0x0002e013, 0x040f8002, 0x053fa80a,
+       0x07000009, 0x06273001, 0x0448b075, 0x048183da,
+       0x04602076, 0x050f80ff, 0x053fa811, 0x0700003c,
+       0x0179fe78, 0x070000ff, 0x030190ff, 0x018683e2,
+       0x07a003f6, 0x00078019, 0x039203f5, 0x0180043a,
+       0x040fd076, 0x040fd019, 0x04600276, 0x050020ff,
+       0x050f80ff, 0x032fa009, 0x040f8002, 0x053fa80a,
+       0x07000009, 0x050fe000, 0x008683f2, 0x07601818,
+       0x050f80ff, 0x053fa80a, 0x07000009, 0x038003f3,
+       0x07a000de, 0x07273000, 0x02076013, 0x0280003d,
+       0x078b03f6, 0x03385000, 0x07030000, 0x05600818,
+       0x050f80ff, 0x032fa009, 0x054b0400, 0x0308a0ff,
+       0x0179fe00, 0x070000ff, 0x010880ff, 0x0448b075,
+       0x04810410, 0x0760147b, 0x050f80ff, 0x002fa819,
+       0x064b0001, 0x02080002, 0x01081003, 0x00082001,
+       0x02083001, 0x02079001, 0x0207a001, 0x00084013,
+       0x0207f013, 0x00800432, 0x06485075, 0x05810428,
+       0x02465075, 0x06601476, 0x050f80ff, 0x073fa021,
+       0x0600003e, 0x070ff07d, 0x0450047c, 0x050f80ff,
+       0x002fa819, 0x058b041b, 0x02080001, 0x00081002,
+       0x01082003, 0x03079003, 0x0208307a, 0x0340007e,
+       0x0642007f, 0x0581042d, 0x070ff07e, 0x05a001d2,
+       0x0392842d, 0x01800439, 0x058b0428, 0x06601476,
+       0x050f80ff, 0x073fa041, 0x0600003e, 0x06602476,
+       0x050f80ff, 0x073fa009, 0x06000007, 0x0008400e,
+       0x048b0432, 0x03385000, 0x03010000, 0x06219001,
+       0x040fe07f, 0x01860439, 0x018001bb, 0x07c00000,
+       0x00683e75, 0x0581043f, 0x0448d075, 0x05810465,
+       0x01800493, 0x05a004f0, 0x038003f5, 0x0297844c,
+       0x07602418, 0x050f80ff, 0x012fa809, 0x06780001,
+       0x070000ff, 0x075a0000, 0x070ff014, 0x0569feff,
+       0x054b08ff, 0x075a0000, 0x05600418, 0x050f80ff,
+       0x012fa809, 0x040fe007, 0x03868453, 0x01204000,
+       0x00800461, 0x00700101, 0x03010000, 0x06780001,
+       0x07ff0000, 0x076c00ff, 0x0681845b, 0x00700101,
+       0x03010000, 0x05600418, 0x050f80ff, 0x012fa80a,
+       0x06780001, 0x07ff0000, 0x050040ff, 0x0279ff01,
+       0x0700ffff, 0x05002014, 0x07c00000, 0x04007076,
+       0x0448b075, 0x0481047f, 0x03200011, 0x06006076,
+       0x06a003bc, 0x007a0101, 0x07060000, 0x07303000,
+       0x07008290, 0x07600018, 0x050f80ff, 0x053fa809,
+       0x07000003, 0x0448e007, 0x07818477, 0x06006013,
+       0x0180048e, 0x02400010, 0x05810477, 0x06006010,
+       0x04603276, 0x050f80ff, 0x073fa00a, 0x07000003,
+       0x0180048e, 0x04602a76, 0x050f80ff, 0x032fa009,
+       0x060ff07a, 0x05500400, 0x070000ff, 0x04602a76,
+       0x050f80ff, 0x032fa00a, 0x07a003b7, 0x007a0101,
+       0x03010000, 0x06303008, 0x05008000, 0x0600600e,
+       0x050f8074, 0x032fa03a, 0x053079a0, 0x0700000c,
+       0x008004d3, 0x00683e75, 0x076c0aff, 0x058104b2,
+       0x04007013, 0x03200011, 0x06006076, 0x06a003bc,
+       0x007a0101, 0x03070000, 0x06602876, 0x050f80ff,
+       0x053fa809, 0x06000001, 0x03499003, 0x048104a7,
+       0x07303000, 0x07008890, 0x053079a0, 0x0700000c,
+       0x008004ab, 0x07303000, 0x04008980, 0x04307920,
+       0x0700000c, 0x074d0005, 0x06006013, 0x050f8074,
+       0x032fa03a, 0x04307920, 0x0700000c, 0x008004d3,
+       0x04602a76, 0x050f80ff, 0x032fa009, 0x060ff07a,
+       0x05500400, 0x070000ff, 0x04602a76, 0x050f80ff,
+       0x032fa00a, 0x04007076, 0x07a003b7, 0x007a0101,
+       0x03010000, 0x06303008, 0x07008800, 0x074d0005,
+       0x06600a76, 0x050f80ff, 0x073fa009, 0x07000003,
+       0x054b0406, 0x045a0404, 0x050040ff, 0x0600600e,
+       0x050f8074, 0x032fa03a, 0x0648c075, 0x058104d1,
+       0x06307d20, 0x0700000c, 0x008004d3, 0x04307920,
+       0x0700000c, 0x013e4000, 0x07000030, 0x009804d5,
+       0x070ff0f6, 0x074850ff, 0x068184d6, 0x050f2074,
+       0x060a0007, 0x040070fb, 0x046a7007, 0x050f40ff,
+       0x013e4000, 0x06000020, 0x0678007a, 0x07fff000,
+       0x068184e6, 0x0320000a, 0x022017d0, 0x008004e9,
+       0x0320000a, 0x06301b58, 0x06000001, 0x050f8072,
+       0x032fa012, 0x038003f5, 0x01208060, 0x0600902a,
+       0x04002020, 0x018004fc, 0x040080fb, 0x066ae108,
+       0x06009076, 0x04002075, 0x018004fc, 0x03201100,
+       0x078484fa, 0x06420001, 0x078184f6, 0x02800513,
+       0x020e0008, 0x07c00000, 0x050fd009, 0x040fd008,
+       0x03201100, 0x05848503, 0x06420001, 0x078184ff,
+       0x02800513, 0x007a0102, 0x04000101, 0x05600809,
+       0x050f80ff, 0x073fa00a, 0x06000001, 0x020e0008,
+       0x0684050d, 0x030e0009, 0x07c00000, 0x01011009,
+       0x052e4300, 0x07c00000, 0x052e400f, 0x01208090,
+       0x018004f5, 0x070fc0ff, 0x040f8013, 0x032fa009,
+       0x02800516, 0x15416ea9, 0xffef0b01
+};
+
+#ifdef UNIQUE_FW_NAME
+uint32_t fw2400_length02 = 0x000014ff ;
+#else
+uint32_t risc_code_length02 = 0x000014ff ;
+#endif
+
index 48e460eef05a8818bd5003323b9d242cde141a6e..2efca52dff50c45629b82c6a9d3c3a2ea137d497 100644 (file)
@@ -232,7 +232,7 @@ static ssize_t
 qla2x00_isp_name_show(struct class_device *cdev, char *buf)
 {
        scsi_qla_host_t *ha = to_qla_host(class_to_shost(cdev));
-       return snprintf(buf, PAGE_SIZE, "%s\n", ha->brd_info->isp_name);
+       return snprintf(buf, PAGE_SIZE, "ISP%04X\n", ha->pdev->device);
 }
 
 static ssize_t
index 7b3efd5312975547ac0e36c3ae971e4018649c36..79d8a914f9d0f4ddb213fd1bd9d5b63f68c39138 100644 (file)
@@ -22,6 +22,7 @@
 #include <linux/completion.h>
 #include <linux/interrupt.h>
 #include <linux/workqueue.h>
+#include <linux/firmware.h>
 #include <asm/semaphore.h>
 
 #include <scsi/scsi.h>
@@ -29,6 +30,7 @@
 #include <scsi/scsi_device.h>
 #include <scsi/scsi_cmnd.h>
 
+#if defined(CONFIG_SCSI_QLA2XXX_EMBEDDED_FIRMWARE)
 #if defined(CONFIG_SCSI_QLA21XX) || defined(CONFIG_SCSI_QLA21XX_MODULE)
 #define IS_QLA2100(ha) ((ha)->pdev->device == PCI_DEVICE_ID_QLOGIC_ISP2100)
 #else
 #define IS_QLA2522(ha) 0
 #endif
 
+#else  /* !defined(CONFIG_SCSI_QLA2XXX_EMBEDDED_FIRMWARE) */
+
+#define IS_QLA2100(ha) ((ha)->pdev->device == PCI_DEVICE_ID_QLOGIC_ISP2100)
+#define IS_QLA2200(ha) ((ha)->pdev->device == PCI_DEVICE_ID_QLOGIC_ISP2200)
+#define IS_QLA2300(ha) ((ha)->pdev->device == PCI_DEVICE_ID_QLOGIC_ISP2300)
+#define IS_QLA2312(ha) ((ha)->pdev->device == PCI_DEVICE_ID_QLOGIC_ISP2312)
+#define IS_QLA2322(ha) ((ha)->pdev->device == PCI_DEVICE_ID_QLOGIC_ISP2322)
+#define IS_QLA6312(ha) ((ha)->pdev->device == PCI_DEVICE_ID_QLOGIC_ISP6312)
+#define IS_QLA6322(ha) ((ha)->pdev->device == PCI_DEVICE_ID_QLOGIC_ISP6322)
+#define IS_QLA2422(ha) ((ha)->pdev->device == PCI_DEVICE_ID_QLOGIC_ISP2422)
+#define IS_QLA2432(ha) ((ha)->pdev->device == PCI_DEVICE_ID_QLOGIC_ISP2432)
+#define IS_QLA2512(ha) ((ha)->pdev->device == PCI_DEVICE_ID_QLOGIC_ISP2512)
+#define IS_QLA2522(ha) ((ha)->pdev->device == PCI_DEVICE_ID_QLOGIC_ISP2522)
+#endif
+
 #define IS_QLA23XX(ha) (IS_QLA2300(ha) || IS_QLA2312(ha) || IS_QLA2322(ha) || \
                         IS_QLA6312(ha) || IS_QLA6322(ha))
-
 #define IS_QLA24XX(ha) (IS_QLA2422(ha) || IS_QLA2432(ha))
 #define IS_QLA25XX(ha) (IS_QLA2512(ha) || IS_QLA2522(ha))
 
@@ -2124,6 +2140,12 @@ struct qla_board_info {
        struct scsi_host_template *sht;
 };
 
+struct fw_blob {
+       char *name;
+       uint32_t segs[4];
+       const struct firmware *fw;
+};
+
 /* Return data from MBC_GET_ID_LIST call. */
 struct gid_list_info {
        uint8_t al_pa;
index fedcb0d3fc72a3f08af716db0ee828030907a7f4..bec81adcf4fd7938f07417b39c26ce4c1d921c47 100644 (file)
@@ -33,8 +33,8 @@ extern int qla24xx_nvram_config(struct scsi_qla_host *);
 extern void qla2x00_update_fw_options(struct scsi_qla_host *);
 extern void qla24xx_update_fw_options(scsi_qla_host_t *);
 extern int qla2x00_load_risc(struct scsi_qla_host *, uint32_t *);
+extern int qla24xx_load_risc(scsi_qla_host_t *, uint32_t *);
 extern int qla24xx_load_risc_flash(scsi_qla_host_t *, uint32_t *);
-extern int qla24xx_load_risc_hotplug(scsi_qla_host_t *, uint32_t *);
 
 extern fc_port_t *qla2x00_alloc_fcport(scsi_qla_host_t *, gfp_t);
 
@@ -76,6 +76,8 @@ extern void qla2x00_blink_led(scsi_qla_host_t *);
 
 extern int qla2x00_down_timeout(struct semaphore *, unsigned long);
 
+extern struct fw_blob *qla2x00_request_firmware(scsi_qla_host_t *);
+
 /*
  * Global Function Prototypes in qla_iocb.c source file.
  */
index c46d2469b85f9e6e22c617fb71ece366de4a4552..7d973bd9022bb84773a11aa490ed39df1608133a 100644 (file)
@@ -8,7 +8,6 @@
 
 #include <linux/delay.h>
 #include <linux/vmalloc.h>
-#include <linux/firmware.h>
 #include <scsi/scsi_transport_fc.h>
 
 #include "qla_devtbl.h"
@@ -3484,17 +3483,16 @@ qla24xx_nvram_config(scsi_qla_host_t *ha)
        return (rval);
 }
 
+#if defined(CONFIG_SCSI_QLA2XXX_EMBEDDED_FIRMWARE)
+
 int
 qla2x00_load_risc(scsi_qla_host_t *ha, uint32_t *srisc_addr)
 {
-       int             rval;
-       uint16_t        cnt;
-       uint16_t        *risc_code;
-       unsigned long   risc_address;
-       unsigned long   risc_code_size;
-       int             num;
-       int             i;
-       uint16_t        *req_ring;
+       int     rval, num, i;
+       uint32_t cnt;
+       uint16_t *risc_code;
+       uint32_t risc_addr, risc_size;
+       uint16_t *req_ring;
        struct qla_fw_info *fw_iter;
 
        rval = QLA_SUCCESS;
@@ -3504,37 +3502,29 @@ qla2x00_load_risc(scsi_qla_host_t *ha, uint32_t *srisc_addr)
        *srisc_addr = *ha->brd_info->fw_info->fwstart;
        while (fw_iter->addressing != FW_INFO_ADDR_NOMORE) {
                risc_code = fw_iter->fwcode;
-               risc_code_size = *fw_iter->fwlen;
-
-               if (fw_iter->addressing == FW_INFO_ADDR_NORMAL) {
-                       risc_address = *fw_iter->fwstart;
-               } else {
-                       /* Extended address */
-                       risc_address = *fw_iter->lfwstart;
-               }
+               risc_size = *fw_iter->fwlen;
+               if (fw_iter->addressing == FW_INFO_ADDR_NORMAL)
+                       risc_addr = *fw_iter->fwstart;
+               else
+                       risc_addr = *fw_iter->lfwstart;
 
                num = 0;
                rval = 0;
-               while (risc_code_size > 0 && !rval) {
+               while (risc_size > 0 && !rval) {
                        cnt = (uint16_t)(ha->fw_transfer_size >> 1);
-                       if (cnt > risc_code_size)
-                               cnt = risc_code_size;
+                       if (cnt > risc_size)
+                               cnt = risc_size;
 
                        DEBUG7(printk("scsi(%ld): Loading risc segment@ "
                            "addr %p, number of bytes 0x%x, offset 0x%lx.\n",
-                           ha->host_no, risc_code, cnt, risc_address));
+                           ha->host_no, risc_code, cnt, risc_addr));
 
                        req_ring = (uint16_t *)ha->request_ring;
                        for (i = 0; i < cnt; i++)
                                req_ring[i] = cpu_to_le16(risc_code[i]);
 
-                       if (fw_iter->addressing == FW_INFO_ADDR_NORMAL) {
-                               rval = qla2x00_load_ram(ha, ha->request_dma,
-                                   risc_address, cnt);
-                       } else {
-                               rval = qla2x00_load_ram_ext(ha,
-                                   ha->request_dma, risc_address, cnt);
-                       }
+                       rval = qla2x00_load_ram(ha, ha->request_dma, risc_addr,
+                           cnt);
                        if (rval) {
                                DEBUG(printk("scsi(%ld): [ERROR] Failed to "
                                    "load segment %d of firmware\n",
@@ -3548,16 +3538,76 @@ qla2x00_load_risc(scsi_qla_host_t *ha, uint32_t *srisc_addr)
                        }
 
                        risc_code += cnt;
-                       risc_address += cnt;
-                       risc_code_size -= cnt;
+                       risc_addr += cnt;
+                       risc_size -= cnt;
                        num++;
                }
 
                /* Next firmware sequence */
                fw_iter++;
        }
+       return rval;
+}
 
-       return (rval);
+int
+qla24xx_load_risc(scsi_qla_host_t *ha, uint32_t *srisc_addr)
+{
+       int     rval, num, i;
+       uint32_t cnt;
+       uint32_t *risc_code;
+       uint32_t risc_addr, risc_size;
+       uint32_t *req_ring;
+       struct qla_fw_info *fw_iter;
+
+       rval = QLA_SUCCESS;
+
+       /* Load firmware sequences */
+       fw_iter = ha->brd_info->fw_info;
+       *srisc_addr = *((uint32_t *)fw_iter->lfwstart);
+       while (fw_iter->addressing != FW_INFO_ADDR_NOMORE) {
+               risc_code = (uint32_t *)fw_iter->fwcode;
+               risc_size = *((uint32_t *)fw_iter->fwlen);
+               risc_addr = *((uint32_t *)fw_iter->lfwstart);
+
+               num = 0;
+               rval = 0;
+               while (risc_size > 0 && !rval) {
+                       cnt = (uint32_t)(ha->fw_transfer_size >> 2);
+                       if (cnt > risc_size)
+                               cnt = risc_size;
+
+                       DEBUG7(printk("scsi(%ld): Loading risc segment@ "
+                           "addr %p, number of bytes 0x%x, offset 0x%lx.\n",
+                           ha->host_no, risc_code, cnt, risc_addr));
+
+                       req_ring = (uint32_t *)ha->request_ring;
+                       for (i = 0; i < cnt; i++)
+                               req_ring[i] = cpu_to_le32(risc_code[i]);
+
+                       rval = qla2x00_load_ram(ha, ha->request_dma, risc_addr,
+                           cnt);
+                       if (rval) {
+                               DEBUG(printk("scsi(%ld): [ERROR] Failed to "
+                                   "load segment %d of firmware\n",
+                                   ha->host_no, num));
+                               qla_printk(KERN_WARNING, ha,
+                                   "[ERROR] Failed to load segment %d of "
+                                   "firmware\n", num);
+
+                               qla2x00_dump_regs(ha);
+                               break;
+                       }
+
+                       risc_code += cnt;
+                       risc_addr += cnt;
+                       risc_size -= cnt;
+                       num++;
+               }
+
+               /* Next firmware sequence */
+               fw_iter++;
+       }
+       return rval;
 }
 
 int
@@ -3642,8 +3692,108 @@ qla24xx_load_risc_flash(scsi_qla_host_t *ha, uint32_t *srisc_addr)
        return rval;
 }
 
+#else  /* !defined(CONFIG_SCSI_QLA2XXX_EMBEDDED_FIRMWARE) */
+
 int
-qla24xx_load_risc_hotplug(scsi_qla_host_t *ha, uint32_t *srisc_addr)
+qla2x00_load_risc(scsi_qla_host_t *ha, uint32_t *srisc_addr)
+{
+       int     rval;
+       int     i, fragment;
+       uint16_t *wcode, *fwcode;
+       uint32_t risc_addr, risc_size, fwclen, wlen, *seg;
+       struct fw_blob *blob;
+
+       /* Load firmware blob. */
+       blob = qla2x00_request_firmware(ha);
+       if (!blob) {
+               qla_printk(KERN_ERR, ha, "Firmware image unavailable.\n");
+               return QLA_FUNCTION_FAILED;
+       }
+
+       rval = QLA_SUCCESS;
+
+       wcode = (uint16_t *)ha->request_ring;
+       *srisc_addr = 0;
+       fwcode = (uint16_t *)blob->fw->data;
+       fwclen = 0;
+
+       /* Validate firmware image by checking version. */
+       if (blob->fw->size < 8 * sizeof(uint16_t)) {
+               qla_printk(KERN_WARNING, ha,
+                   "Unable to verify integrity of firmware image (%Zd)!\n",
+                   blob->fw->size);
+               goto fail_fw_integrity;
+       }
+       for (i = 0; i < 4; i++)
+               wcode[i] = be16_to_cpu(fwcode[i + 4]);
+       if ((wcode[0] == 0xffff && wcode[1] == 0xffff && wcode[2] == 0xffff &&
+           wcode[3] == 0xffff) || (wcode[0] == 0 && wcode[1] == 0 &&
+               wcode[2] == 0 && wcode[3] == 0)) {
+               qla_printk(KERN_WARNING, ha,
+                   "Unable to verify integrity of firmware image!\n");
+               qla_printk(KERN_WARNING, ha,
+                   "Firmware data: %04x %04x %04x %04x!\n", wcode[0],
+                   wcode[1], wcode[2], wcode[3]);
+               goto fail_fw_integrity;
+       }
+
+       seg = blob->segs;
+       while (*seg && rval == QLA_SUCCESS) {
+               risc_addr = *seg;
+               *srisc_addr = *srisc_addr == 0 ? *seg : *srisc_addr;
+               risc_size = be16_to_cpu(fwcode[3]);
+
+               /* Validate firmware image size. */
+               fwclen += risc_size * sizeof(uint16_t);
+               if (blob->fw->size < fwclen) {
+                       qla_printk(KERN_WARNING, ha,
+                           "Unable to verify integrity of firmware image "
+                           "(%Zd)!\n", blob->fw->size);
+                       goto fail_fw_integrity;
+               }
+
+               fragment = 0;
+               while (risc_size > 0 && rval == QLA_SUCCESS) {
+                       wlen = (uint16_t)(ha->fw_transfer_size >> 1);
+                       if (wlen > risc_size)
+                               wlen = risc_size;
+
+                       DEBUG7(printk("scsi(%ld): Loading risc segment@ risc "
+                           "addr %x, number of words 0x%x.\n", ha->host_no,
+                           risc_addr, wlen));
+
+                       for (i = 0; i < wlen; i++)
+                               wcode[i] = swab16(fwcode[i]);
+
+                       rval = qla2x00_load_ram(ha, ha->request_dma, risc_addr,
+                           wlen);
+                       if (rval) {
+                               DEBUG(printk("scsi(%ld):[ERROR] Failed to load "
+                                   "segment %d of firmware\n", ha->host_no,
+                                   fragment));
+                               qla_printk(KERN_WARNING, ha,
+                                   "[ERROR] Failed to load segment %d of "
+                                   "firmware\n", fragment);
+                               break;
+                       }
+
+                       fwcode += wlen;
+                       risc_addr += wlen;
+                       risc_size -= wlen;
+                       fragment++;
+               }
+
+               /* Next segment. */
+               seg++;
+       }
+       return rval;
+
+fail_fw_integrity:
+       return QLA_FUNCTION_FAILED;
+}
+
+int
+qla24xx_load_risc(scsi_qla_host_t *ha, uint32_t *srisc_addr)
 {
        int     rval;
        int     segments, fragment;
@@ -3651,14 +3801,13 @@ qla24xx_load_risc_hotplug(scsi_qla_host_t *ha, uint32_t *srisc_addr)
        uint32_t risc_addr;
        uint32_t risc_size;
        uint32_t i;
-       const struct firmware *fw_entry;
+       struct fw_blob *blob;
        uint32_t *fwcode, fwclen;
 
-       if (request_firmware(&fw_entry, ha->brd_info->fw_fname,
-           &ha->pdev->dev)) {
-               qla_printk(KERN_ERR, ha,
-                   "Firmware image file not available: '%s'\n",
-                   ha->brd_info->fw_fname);
+       /* Load firmware blob. */
+       blob = qla2x00_request_firmware(ha);
+       if (!blob) {
+               qla_printk(KERN_ERR, ha, "Firmware image unavailable.\n");
                return QLA_FUNCTION_FAILED;
        }
 
@@ -3667,14 +3816,14 @@ qla24xx_load_risc_hotplug(scsi_qla_host_t *ha, uint32_t *srisc_addr)
        segments = FA_RISC_CODE_SEGMENTS;
        dcode = (uint32_t *)ha->request_ring;
        *srisc_addr = 0;
-       fwcode = (uint32_t *)fw_entry->data;
+       fwcode = (uint32_t *)blob->fw->data;
        fwclen = 0;
 
        /* Validate firmware image by checking version. */
-       if (fw_entry->size < 8 * sizeof(uint32_t)) {
+       if (blob->fw->size < 8 * sizeof(uint32_t)) {
                qla_printk(KERN_WARNING, ha,
-                   "Unable to verify integrity of flash firmware image "
-                   "(%Zd)!\n", fw_entry->size);
+                   "Unable to verify integrity of firmware image (%Zd)!\n",
+                   blob->fw->size);
                goto fail_fw_integrity;
        }
        for (i = 0; i < 4; i++)
@@ -3684,7 +3833,7 @@ qla24xx_load_risc_hotplug(scsi_qla_host_t *ha, uint32_t *srisc_addr)
            (dcode[0] == 0 && dcode[1] == 0 && dcode[2] == 0 &&
                dcode[3] == 0)) {
                qla_printk(KERN_WARNING, ha,
-                   "Unable to verify integrity of flash firmware image!\n");
+                   "Unable to verify integrity of firmware image!\n");
                qla_printk(KERN_WARNING, ha,
                    "Firmware data: %08x %08x %08x %08x!\n", dcode[0],
                    dcode[1], dcode[2], dcode[3]);
@@ -3698,10 +3847,11 @@ qla24xx_load_risc_hotplug(scsi_qla_host_t *ha, uint32_t *srisc_addr)
 
                /* Validate firmware image size. */
                fwclen += risc_size * sizeof(uint32_t);
-               if (fw_entry->size < fwclen) {
+               if (blob->fw->size < fwclen) {
                        qla_printk(KERN_WARNING, ha,
-                           "Unable to verify integrity of flash firmware "
-                           "image (%Zd)!\n", fw_entry->size);
+                           "Unable to verify integrity of firmware image "
+                           "(%Zd)!\n", blob->fw->size);
+
                        goto fail_fw_integrity;
                }
 
@@ -3739,13 +3889,9 @@ qla24xx_load_risc_hotplug(scsi_qla_host_t *ha, uint32_t *srisc_addr)
                /* Next segment. */
                segments--;
        }
-
-       release_firmware(fw_entry);
        return rval;
 
 fail_fw_integrity:
-
-       release_firmware(fw_entry);
        return QLA_FUNCTION_FAILED;
-
 }
+#endif
index c58c9d97b041e4e79121fb940d962d812ea62d40..24304300d7b57b1fa359cd73660636590702e1b4 100644 (file)
@@ -54,10 +54,12 @@ module_param(ql2xloginretrycount, int, S_IRUGO|S_IRUSR);
 MODULE_PARM_DESC(ql2xloginretrycount,
                "Specify an alternate value for the NVRAM login retry count.");
 
-int ql2xfwloadbin=1;
-module_param(ql2xfwloadbin, int, S_IRUGO|S_IRUSR);
-MODULE_PARM_DESC(ql2xfwloadbin,
-               "Load ISP2xxx firmware image via hotplug.");
+#if defined(CONFIG_SCSI_QLA2XXX_EMBEDDED_FIRMWARE)
+int ql2xfwloadflash;
+module_param(ql2xfwloadflash, int, S_IRUGO|S_IRUSR);
+MODULE_PARM_DESC(ql2xfwloadflash,
+               "Load ISP24xx firmware image from FLASH (onboard memory).");
+#endif
 
 static void qla2x00_free_device(scsi_qla_host_t *);
 
@@ -1261,12 +1263,16 @@ int qla2x00_probe_one(struct pci_dev *pdev, struct qla_board_info *brd_info)
        char pci_info[20];
        char fw_str[30];
        fc_port_t *fcport;
+       struct scsi_host_template *sht;
 
        if (pci_enable_device(pdev))
                goto probe_out;
 
-       host = scsi_host_alloc(brd_info->sht ? brd_info->sht:
-           &qla2x00_driver_template, sizeof(scsi_qla_host_t));
+       sht = &qla2x00_driver_template;
+       if (pdev->device == PCI_DEVICE_ID_QLOGIC_ISP2422 ||
+           pdev->device == PCI_DEVICE_ID_QLOGIC_ISP2432)
+               sht = &qla24xx_driver_template;
+       host = scsi_host_alloc(sht, sizeof(scsi_qla_host_t));
        if (host == NULL) {
                printk(KERN_WARNING
                    "qla2xxx: Couldn't allocate host from scsi layer!\n");
@@ -1291,8 +1297,8 @@ int qla2x00_probe_one(struct pci_dev *pdev, struct qla_board_info *brd_info)
                goto probe_failed;
 
        qla_printk(KERN_INFO, ha,
-           "Found an %s, irq %d, iobase 0x%p\n", ha->brd_info->isp_name,
-           pdev->irq, ha->iobase);
+           "Found an ISP%04X, irq %d, iobase 0x%p\n", pdev->device, pdev->irq,
+           ha->iobase);
 
        spin_lock_init(&ha->hardware_lock);
 
@@ -1368,9 +1374,11 @@ int qla2x00_probe_one(struct pci_dev *pdev, struct qla_board_info *brd_info)
                ha->isp_ops.reset_adapter = qla24xx_reset_adapter;
                ha->isp_ops.nvram_config = qla24xx_nvram_config;
                ha->isp_ops.update_fw_options = qla24xx_update_fw_options;
-               ha->isp_ops.load_risc = qla24xx_load_risc_flash;
-               if (ql2xfwloadbin)
-                       ha->isp_ops.load_risc = qla24xx_load_risc_hotplug;
+               ha->isp_ops.load_risc = qla24xx_load_risc;
+#if defined(CONFIG_SCSI_QLA2XXX_EMBEDDED_FIRMWARE)
+               if (ql2xfwloadflash)
+                       ha->isp_ops.load_risc = qla24xx_load_risc_flash;
+#endif
                ha->isp_ops.pci_info_str = qla24xx_pci_info_str;
                ha->isp_ops.fw_version_str = qla24xx_fw_version_str;
                ha->isp_ops.intr_handler = qla24xx_intr_handler;
@@ -1531,11 +1539,12 @@ int qla2x00_probe_one(struct pci_dev *pdev, struct qla_board_info *brd_info)
        qla_printk(KERN_INFO, ha, "\n"
            " QLogic Fibre Channel HBA Driver: %s\n"
            "  QLogic %s - %s\n"
-           "  %s: %s @ %s hdma%c, host#=%ld, fw=%s\n", qla2x00_version_str,
-           ha->model_number, ha->model_desc ? ha->model_desc: "",
-           ha->brd_info->isp_name, ha->isp_ops.pci_info_str(ha, pci_info),
-           pci_name(pdev), ha->flags.enable_64bit_addressing ? '+': '-',
-           ha->host_no, ha->isp_ops.fw_version_str(ha, fw_str));
+           "  ISP%04X: %s @ %s hdma%c, host#=%ld, fw=%s\n",
+           qla2x00_version_str, ha->model_number,
+           ha->model_desc ? ha->model_desc: "", pdev->device,
+           ha->isp_ops.pci_info_str(ha, pci_info), pci_name(pdev),
+           ha->flags.enable_64bit_addressing ? '+': '-', ha->host_no,
+           ha->isp_ops.fw_version_str(ha, fw_str));
 
        /* Go with fc_rport registration. */
        list_for_each_entry(fcport, &ha->fcports, list)
@@ -2483,45 +2492,115 @@ qla2x00_down_timeout(struct semaphore *sema, unsigned long timeout)
        return -ETIMEDOUT;
 }
 
-static struct qla_board_info qla_board_tbl[] = {
-       {
-               .drv_name       = "qla2400",
-               .isp_name       = "ISP2422",
-               .fw_fname       = "ql2400_fw.bin",
-               .sht            = &qla24xx_driver_template,
-       },
-       {
-               .drv_name       = "qla2400",
-               .isp_name       = "ISP2432",
-               .fw_fname       = "ql2400_fw.bin",
-               .sht            = &qla24xx_driver_template,
-       },
+#if defined(CONFIG_SCSI_QLA2XXX_EMBEDDED_FIRMWARE)
+
+#define qla2x00_release_firmware()     do { } while (0)
+#define qla2x00_pci_module_init()      (0)
+#define qla2x00_pci_module_exit()      do { } while (0)
+
+#else  /* !defined(CONFIG_SCSI_QLA2XXX_EMBEDDED_FIRMWARE) */
+
+/* Firmware interface routines. */
+
+#define FW_BLOBS       6
+#define FW_ISP21XX     0
+#define FW_ISP22XX     1
+#define FW_ISP2300     2
+#define FW_ISP2322     3
+#define FW_ISP63XX     4
+#define FW_ISP24XX     5
+
+static DECLARE_MUTEX(qla_fw_lock);
+
+static struct fw_blob qla_fw_blobs[FW_BLOBS] = {
+       { .name = "ql2100_fw.bin", .segs = { 0x1000, 0 }, },
+       { .name = "ql2200_fw.bin", .segs = { 0x1000, 0 }, },
+       { .name = "ql2300_fw.bin", .segs = { 0x800, 0 }, },
+       { .name = "ql2322_fw.bin", .segs = { 0x800, 0x1c000, 0x1e000, 0 }, },
+       { .name = "ql6312_fw.bin", .segs = { 0x800, 0 }, },
+       { .name = "ql2400_fw.bin", },
+};
+
+struct fw_blob *
+qla2x00_request_firmware(scsi_qla_host_t *ha)
+{
+       struct fw_blob *blob;
+
+       blob = NULL;
+       if (IS_QLA2100(ha)) {
+               blob = &qla_fw_blobs[FW_ISP21XX];
+       } else if (IS_QLA2200(ha)) {
+               blob = &qla_fw_blobs[FW_ISP22XX];
+       } else if (IS_QLA2300(ha) || IS_QLA2312(ha)) {
+               blob = &qla_fw_blobs[FW_ISP2300];
+       } else if (IS_QLA2322(ha)) {
+               blob = &qla_fw_blobs[FW_ISP2322];
+       } else if (IS_QLA6312(ha) || IS_QLA6322(ha)) {
+               blob = &qla_fw_blobs[FW_ISP63XX];
+       } else if (IS_QLA24XX(ha)) {
+               blob = &qla_fw_blobs[FW_ISP24XX];
+       }
+
+       down(&qla_fw_lock);
+       if (blob->fw)
+               goto out;
+
+       if (request_firmware(&blob->fw, blob->name, &ha->pdev->dev)) {
+               DEBUG2(printk("scsi(%ld): Failed to load firmware image "
+                   "(%s).\n", ha->host_no, blob->name));
+               blob->fw = NULL;
+               blob = NULL;
+               goto out;
+       }
+
+out:
+       up(&qla_fw_lock);
+       return blob;
+}
+
+static void
+qla2x00_release_firmware(void)
+{
+       int idx;
+
+       down(&qla_fw_lock);
+       for (idx = 0; idx < FW_BLOBS; idx++)
+               if (qla_fw_blobs[idx].fw)
+                       release_firmware(qla_fw_blobs[idx].fw);
+       up(&qla_fw_lock);
+}
+
+static struct qla_board_info qla_board_tbl = {
+       .drv_name       = "qla2xxx",
 };
 
 static struct pci_device_id qla2xxx_pci_tbl[] = {
-       {
-               .vendor         = PCI_VENDOR_ID_QLOGIC,
-               .device         = PCI_DEVICE_ID_QLOGIC_ISP2422,
-               .subvendor      = PCI_ANY_ID,
-               .subdevice      = PCI_ANY_ID,
-               .driver_data    = (unsigned long)&qla_board_tbl[0],
-       },
-       {
-               .vendor         = PCI_VENDOR_ID_QLOGIC,
-               .device         = PCI_DEVICE_ID_QLOGIC_ISP2432,
-               .subvendor      = PCI_ANY_ID,
-               .subdevice      = PCI_ANY_ID,
-               .driver_data    = (unsigned long)&qla_board_tbl[1],
-       },
-       {0, 0},
+       { PCI_VENDOR_ID_QLOGIC, PCI_DEVICE_ID_QLOGIC_ISP2100,
+               PCI_ANY_ID, PCI_ANY_ID, },
+       { PCI_VENDOR_ID_QLOGIC, PCI_DEVICE_ID_QLOGIC_ISP2200,
+               PCI_ANY_ID, PCI_ANY_ID, },
+       { PCI_VENDOR_ID_QLOGIC, PCI_DEVICE_ID_QLOGIC_ISP2300,
+               PCI_ANY_ID, PCI_ANY_ID, },
+       { PCI_VENDOR_ID_QLOGIC, PCI_DEVICE_ID_QLOGIC_ISP2312,
+               PCI_ANY_ID, PCI_ANY_ID, },
+       { PCI_VENDOR_ID_QLOGIC, PCI_DEVICE_ID_QLOGIC_ISP2322,
+               PCI_ANY_ID, PCI_ANY_ID, },
+       { PCI_VENDOR_ID_QLOGIC, PCI_DEVICE_ID_QLOGIC_ISP6312,
+               PCI_ANY_ID, PCI_ANY_ID, },
+       { PCI_VENDOR_ID_QLOGIC, PCI_DEVICE_ID_QLOGIC_ISP6322,
+               PCI_ANY_ID, PCI_ANY_ID, },
+       { PCI_VENDOR_ID_QLOGIC, PCI_DEVICE_ID_QLOGIC_ISP2422,
+               PCI_ANY_ID, PCI_ANY_ID, },
+       { PCI_VENDOR_ID_QLOGIC, PCI_DEVICE_ID_QLOGIC_ISP2432,
+               PCI_ANY_ID, PCI_ANY_ID, },
+       { 0 },
 };
 MODULE_DEVICE_TABLE(pci, qla2xxx_pci_tbl);
 
 static int __devinit
 qla2xxx_probe_one(struct pci_dev *pdev, const struct pci_device_id *id)
 {
-       return qla2x00_probe_one(pdev,
-           (struct qla_board_info *)id->driver_data);
+       return qla2x00_probe_one(pdev, &qla_board_tbl);
 }
 
 static void __devexit
@@ -2532,11 +2611,28 @@ qla2xxx_remove_one(struct pci_dev *pdev)
 
 static struct pci_driver qla2xxx_pci_driver = {
        .name           = "qla2xxx",
+       .driver         = {
+               .owner          = THIS_MODULE,
+       },
        .id_table       = qla2xxx_pci_tbl,
        .probe          = qla2xxx_probe_one,
        .remove         = __devexit_p(qla2xxx_remove_one),
 };
 
+static inline int
+qla2x00_pci_module_init(void)
+{
+       return pci_module_init(&qla2xxx_pci_driver);
+}
+
+static inline void
+qla2x00_pci_module_exit(void)
+{
+       pci_unregister_driver(&qla2xxx_pci_driver);
+}
+
+#endif
+
 /**
  * qla2x00_module_init - Module initialization.
  **/
@@ -2556,6 +2652,9 @@ qla2x00_module_init(void)
 
        /* Derive version string. */
        strcpy(qla2x00_version_str, QLA2XXX_VERSION);
+#if defined(CONFIG_SCSI_QLA2XXX_EMBEDDED_FIRMWARE)
+       strcat(qla2x00_version_str, "-fw");
+#endif
 #if DEBUG_QLA2100
        strcat(qla2x00_version_str, "-debug");
 #endif
@@ -2565,7 +2664,7 @@ qla2x00_module_init(void)
                return -ENODEV;
 
        printk(KERN_INFO "QLogic Fibre Channel HBA Driver\n");
-       ret = pci_module_init(&qla2xxx_pci_driver);
+       ret = qla2x00_pci_module_init();
        if (ret) {
                kmem_cache_destroy(srb_cachep);
                fc_release_transport(qla2xxx_transport_template);
@@ -2579,7 +2678,8 @@ qla2x00_module_init(void)
 static void __exit
 qla2x00_module_exit(void)
 {
-       pci_unregister_driver(&qla2xxx_pci_driver);
+       qla2x00_pci_module_exit();
+       qla2x00_release_firmware();
        kmem_cache_destroy(srb_cachep);
        fc_release_transport(qla2xxx_transport_template);
 }
index 5b1c12041a4fd054ffb00bed6bb9eefda1665930..5ec5f44602ac8ebd7d18aa1865523fc4873233df 100644 (file)
@@ -115,7 +115,7 @@ static DECLARE_TRANSPORT_CLASS(raid_class,
                               raid_remove,
                               NULL);
 
-static struct {
+static const struct {
        enum raid_state value;
        char            *name;
 } raid_states[] = {
index e69477d1889bd8e6ab67f862f99d9c3ccc8de7af..f01ec0a7c506f2a68ec8fc993ec643a58d47f1fa 100644 (file)
@@ -354,8 +354,9 @@ static int scsi_dev_info_list_add_str(char *dev_list)
  *     @model, if found, return the matching flags value, else return
  *     the host or global default settings.
  **/
-int scsi_get_device_flags(struct scsi_device *sdev, unsigned char *vendor,
-                         unsigned char *model)
+int scsi_get_device_flags(struct scsi_device *sdev,
+                         const unsigned char *vendor,
+                         const unsigned char *model)
 {
        struct scsi_dev_info_list *devinfo;
        unsigned int bflags;
index c0ae9e965f6f26f71d591456280fbb4dad11a912..a2333d2c7af0be4712651b2780b7cc10566dab3b 100644 (file)
@@ -1319,23 +1319,6 @@ int scsi_decide_disposition(struct scsi_cmnd *scmd)
        }
 }
 
-/**
- * scsi_eh_lock_done - done function for eh door lock request
- * @scmd:      SCSI command block for the door lock request
- *
- * Notes:
- *     We completed the asynchronous door lock request, and it has either
- *     locked the door or failed.  We must free the command structures
- *     associated with this request.
- **/
-static void scsi_eh_lock_done(struct scsi_cmnd *scmd)
-{
-       struct scsi_request *sreq = scmd->sc_request;
-
-       scsi_release_request(sreq);
-}
-
-
 /**
  * scsi_eh_lock_door - Prevent medium removal for the specified device
  * @sdev:      SCSI device to prevent medium removal
@@ -1358,29 +1341,17 @@ static void scsi_eh_lock_done(struct scsi_cmnd *scmd)
  **/
 static void scsi_eh_lock_door(struct scsi_device *sdev)
 {
-       struct scsi_request *sreq = scsi_allocate_request(sdev, GFP_KERNEL);
+       unsigned char cmnd[MAX_COMMAND_SIZE];
 
-       if (unlikely(!sreq)) {
-               printk(KERN_ERR "%s: request allocate failed,"
-                      "prevent media removal cmd not sent\n", __FUNCTION__);
-               return;
-       }
+       cmnd[0] = ALLOW_MEDIUM_REMOVAL;
+       cmnd[1] = 0;
+       cmnd[2] = 0;
+       cmnd[3] = 0;
+       cmnd[4] = SCSI_REMOVAL_PREVENT;
+       cmnd[5] = 0;
 
-       sreq->sr_cmnd[0] = ALLOW_MEDIUM_REMOVAL;
-       sreq->sr_cmnd[1] = 0;
-       sreq->sr_cmnd[2] = 0;
-       sreq->sr_cmnd[3] = 0;
-       sreq->sr_cmnd[4] = SCSI_REMOVAL_PREVENT;
-       sreq->sr_cmnd[5] = 0;
-       sreq->sr_data_direction = DMA_NONE;
-       sreq->sr_bufflen = 0;
-       sreq->sr_buffer = NULL;
-       sreq->sr_allowed = 5;
-       sreq->sr_done = scsi_eh_lock_done;
-       sreq->sr_timeout_per_command = 10 * HZ;
-       sreq->sr_cmd_len = COMMAND_SIZE(sreq->sr_cmnd[0]);
-
-       scsi_insert_special_req(sreq, 1);
+       scsi_execute_async(sdev, cmnd, DMA_NONE, NULL, 0, 0, 10 * HZ,
+                          5, NULL, NULL, GFP_KERNEL);
 }
 
 
index dc249cb970ea49589d5f351585695a560a437c0b..a7f3f0c84db75537a7cc06d6c7275cef01880874 100644 (file)
@@ -63,39 +63,6 @@ static struct scsi_host_sg_pool scsi_sg_pools[] = {
 };     
 #undef SP
 
-
-/*
- * Function:    scsi_insert_special_req()
- *
- * Purpose:     Insert pre-formed request into request queue.
- *
- * Arguments:   sreq   - request that is ready to be queued.
- *              at_head        - boolean.  True if we should insert at head
- *                        of queue, false if we should insert at tail.
- *
- * Lock status: Assumed that lock is not held upon entry.
- *
- * Returns:     Nothing
- *
- * Notes:       This function is called from character device and from
- *              ioctl types of functions where the caller knows exactly
- *              what SCSI command needs to be issued.   The idea is that
- *              we merely inject the command into the queue (at the head
- *              for now), and then call the queue request function to actually
- *              process it.
- */
-int scsi_insert_special_req(struct scsi_request *sreq, int at_head)
-{
-       /*
-        * Because users of this function are apt to reuse requests with no
-        * modification, we have to sanitise the request flags here
-        */
-       sreq->sr_request->flags &= ~REQ_DONTPREP;
-       blk_insert_request(sreq->sr_device->request_queue, sreq->sr_request,
-                          at_head, sreq);
-       return 0;
-}
-
 static void scsi_run_queue(struct request_queue *q);
 
 /*
@@ -249,8 +216,13 @@ void scsi_do_req(struct scsi_request *sreq, const void *cmnd,
 
        /*
         * head injection *required* here otherwise quiesce won't work
+        *
+        * Because users of this function are apt to reuse requests with no
+        * modification, we have to sanitise the request flags here
         */
-       scsi_insert_special_req(sreq, 1);
+       sreq->sr_request->flags &= ~REQ_DONTPREP;
+       blk_insert_request(sreq->sr_device->request_queue, sreq->sr_request,
+                          1, sreq);
 }
 EXPORT_SYMBOL(scsi_do_req);
 
@@ -287,6 +259,7 @@ int scsi_execute(struct scsi_device *sdev, const unsigned char *cmd,
        memcpy(req->cmd, cmd, req->cmd_len);
        req->sense = sense;
        req->sense_len = 0;
+       req->retries = retries;
        req->timeout = timeout;
        req->flags |= flags | REQ_BLOCK_PC | REQ_SPECIAL | REQ_QUIET;
 
@@ -327,6 +300,200 @@ int scsi_execute_req(struct scsi_device *sdev, const unsigned char *cmd,
 }
 EXPORT_SYMBOL(scsi_execute_req);
 
+struct scsi_io_context {
+       void *data;
+       void (*done)(void *data, char *sense, int result, int resid);
+       char sense[SCSI_SENSE_BUFFERSIZE];
+};
+
+static kmem_cache_t *scsi_io_context_cache;
+
+static void scsi_end_async(struct request *req)
+{
+       struct scsi_io_context *sioc = req->end_io_data;
+
+       if (sioc->done)
+               sioc->done(sioc->data, sioc->sense, req->errors, req->data_len);
+
+       kmem_cache_free(scsi_io_context_cache, sioc);
+       __blk_put_request(req->q, req);
+}
+
+static int scsi_merge_bio(struct request *rq, struct bio *bio)
+{
+       struct request_queue *q = rq->q;
+
+       bio->bi_flags &= ~(1 << BIO_SEG_VALID);
+       if (rq_data_dir(rq) == WRITE)
+               bio->bi_rw |= (1 << BIO_RW);
+       blk_queue_bounce(q, &bio);
+
+       if (!rq->bio)
+               blk_rq_bio_prep(q, rq, bio);
+       else if (!q->back_merge_fn(q, rq, bio))
+               return -EINVAL;
+       else {
+               rq->biotail->bi_next = bio;
+               rq->biotail = bio;
+               rq->hard_nr_sectors += bio_sectors(bio);
+               rq->nr_sectors = rq->hard_nr_sectors;
+       }
+
+       return 0;
+}
+
+static int scsi_bi_endio(struct bio *bio, unsigned int bytes_done, int error)
+{
+       if (bio->bi_size)
+               return 1;
+
+       bio_put(bio);
+       return 0;
+}
+
+/**
+ * scsi_req_map_sg - map a scatterlist into a request
+ * @rq:                request to fill
+ * @sg:                scatterlist
+ * @nsegs:     number of elements
+ * @bufflen:   len of buffer
+ * @gfp:       memory allocation flags
+ *
+ * scsi_req_map_sg maps a scatterlist into a request so that the
+ * request can be sent to the block layer. We do not trust the scatterlist
+ * sent to use, as some ULDs use that struct to only organize the pages.
+ */
+static int scsi_req_map_sg(struct request *rq, struct scatterlist *sgl,
+                          int nsegs, unsigned bufflen, gfp_t gfp)
+{
+       struct request_queue *q = rq->q;
+       int nr_pages = (bufflen + PAGE_SIZE - 1) >> PAGE_SHIFT;
+       unsigned int data_len = 0, len, bytes, off;
+       struct page *page;
+       struct bio *bio = NULL;
+       int i, err, nr_vecs = 0;
+
+       for (i = 0; i < nsegs; i++) {
+               page = sgl[i].page;
+               off = sgl[i].offset;
+               len = sgl[i].length;
+               data_len += len;
+
+               while (len > 0) {
+                       bytes = min_t(unsigned int, len, PAGE_SIZE - off);
+
+                       if (!bio) {
+                               nr_vecs = min_t(int, BIO_MAX_PAGES, nr_pages);
+                               nr_pages -= nr_vecs;
+
+                               bio = bio_alloc(gfp, nr_vecs);
+                               if (!bio) {
+                                       err = -ENOMEM;
+                                       goto free_bios;
+                               }
+                               bio->bi_end_io = scsi_bi_endio;
+                       }
+
+                       if (bio_add_pc_page(q, bio, page, bytes, off) !=
+                           bytes) {
+                               bio_put(bio);
+                               err = -EINVAL;
+                               goto free_bios;
+                       }
+
+                       if (bio->bi_vcnt >= nr_vecs) {
+                               err = scsi_merge_bio(rq, bio);
+                               if (err) {
+                                       bio_endio(bio, bio->bi_size, 0);
+                                       goto free_bios;
+                               }
+                               bio = NULL;
+                       }
+
+                       page++;
+                       len -= bytes;
+                       off = 0;
+               }
+       }
+
+       rq->buffer = rq->data = NULL;
+       rq->data_len = data_len;
+       return 0;
+
+free_bios:
+       while ((bio = rq->bio) != NULL) {
+               rq->bio = bio->bi_next;
+               /*
+                * call endio instead of bio_put incase it was bounced
+                */
+               bio_endio(bio, bio->bi_size, 0);
+       }
+
+       return err;
+}
+
+/**
+ * scsi_execute_async - insert request
+ * @sdev:      scsi device
+ * @cmd:       scsi command
+ * @data_direction: data direction
+ * @buffer:    data buffer (this can be a kernel buffer or scatterlist)
+ * @bufflen:   len of buffer
+ * @use_sg:    if buffer is a scatterlist this is the number of elements
+ * @timeout:   request timeout in seconds
+ * @retries:   number of times to retry request
+ * @flags:     or into request flags
+ **/
+int scsi_execute_async(struct scsi_device *sdev, const unsigned char *cmd,
+                      int data_direction, void *buffer, unsigned bufflen,
+                      int use_sg, int timeout, int retries, void *privdata,
+                      void (*done)(void *, char *, int, int), gfp_t gfp)
+{
+       struct request *req;
+       struct scsi_io_context *sioc;
+       int err = 0;
+       int write = (data_direction == DMA_TO_DEVICE);
+
+       sioc = kmem_cache_alloc(scsi_io_context_cache, gfp);
+       if (!sioc)
+               return DRIVER_ERROR << 24;
+       memset(sioc, 0, sizeof(*sioc));
+
+       req = blk_get_request(sdev->request_queue, write, gfp);
+       if (!req)
+               goto free_sense;
+       req->flags |= REQ_BLOCK_PC | REQ_QUIET;
+
+       if (use_sg)
+               err = scsi_req_map_sg(req, buffer, use_sg, bufflen, gfp);
+       else if (bufflen)
+               err = blk_rq_map_kern(req->q, req, buffer, bufflen, gfp);
+
+       if (err)
+               goto free_req;
+
+       req->cmd_len = COMMAND_SIZE(cmd[0]);
+       memcpy(req->cmd, cmd, req->cmd_len);
+       req->sense = sioc->sense;
+       req->sense_len = 0;
+       req->timeout = timeout;
+       req->retries = retries;
+       req->end_io_data = sioc;
+
+       sioc->data = privdata;
+       sioc->done = done;
+
+       blk_execute_rq_nowait(req->q, NULL, req, 1, scsi_end_async);
+       return 0;
+
+free_req:
+       blk_put_request(req);
+free_sense:
+       kfree(sioc);
+       return DRIVER_ERROR << 24;
+}
+EXPORT_SYMBOL_GPL(scsi_execute_async);
+
 /*
  * Function:    scsi_init_cmd_errh()
  *
@@ -884,7 +1051,8 @@ void scsi_io_completion(struct scsi_cmnd *cmd, unsigned int good_bytes,
                        * system where READ CAPACITY failed, we may have read
                        * past the end of the disk.
                        */
-                       if (cmd->device->use_10_for_rw &&
+                       if ((cmd->device->use_10_for_rw &&
+                           sshdr.asc == 0x20 && sshdr.ascq == 0x00) &&
                            (cmd->cmnd[0] == READ_10 ||
                             cmd->cmnd[0] == WRITE_10)) {
                                cmd->device->use_10_for_rw = 0;
@@ -1082,10 +1250,16 @@ static int scsi_issue_flush_fn(request_queue_t *q, struct gendisk *disk,
 static void scsi_generic_done(struct scsi_cmnd *cmd)
 {
        BUG_ON(!blk_pc_request(cmd->request));
-       scsi_io_completion(cmd, cmd->result == 0 ? cmd->bufflen : 0, 0);
+       /*
+        * This will complete the whole command with uptodate=1 so
+        * as far as the block layer is concerned the command completed
+        * successfully. Since this is a REQ_BLOCK_PC command the
+        * caller should check the request's errors value
+        */
+       scsi_io_completion(cmd, cmd->bufflen, 0);
 }
 
-void scsi_setup_blk_pc_cmnd(struct scsi_cmnd *cmd, int retries)
+void scsi_setup_blk_pc_cmnd(struct scsi_cmnd *cmd)
 {
        struct request *req = cmd->request;
 
@@ -1100,7 +1274,7 @@ void scsi_setup_blk_pc_cmnd(struct scsi_cmnd *cmd, int retries)
                cmd->sc_data_direction = DMA_FROM_DEVICE;
        
        cmd->transfersize = req->data_len;
-       cmd->allowed = retries;
+       cmd->allowed = req->retries;
        cmd->timeout_per_command = req->timeout;
 }
 EXPORT_SYMBOL_GPL(scsi_setup_blk_pc_cmnd);
@@ -1240,7 +1414,7 @@ static int scsi_prep_fn(struct request_queue *q, struct request *req)
                                goto kill;
                        }
                } else {
-                       scsi_setup_blk_pc_cmnd(cmd, 3);
+                       scsi_setup_blk_pc_cmnd(cmd);
                        cmd->done = scsi_generic_done;
                }
        }
@@ -1603,6 +1777,14 @@ int __init scsi_init_queue(void)
 {
        int i;
 
+       scsi_io_context_cache = kmem_cache_create("scsi_io_context",
+                                       sizeof(struct scsi_io_context),
+                                       0, 0, NULL, NULL);
+       if (!scsi_io_context_cache) {
+               printk(KERN_ERR "SCSI: can't init scsi io context cache\n");
+               return -ENOMEM;
+       }
+
        for (i = 0; i < SG_MEMPOOL_NR; i++) {
                struct scsi_host_sg_pool *sgp = scsi_sg_pools + i;
                int size = sgp->size * sizeof(struct scatterlist);
@@ -1630,6 +1812,8 @@ void scsi_exit_queue(void)
 {
        int i;
 
+       kmem_cache_destroy(scsi_io_context_cache);
+
        for (i = 0; i < SG_MEMPOOL_NR; i++) {
                struct scsi_host_sg_pool *sgp = scsi_sg_pools + i;
                mempool_destroy(sgp->pool);
index d632d9e1493cb1fe83b9e1171fd9e9a1fba875d3..f04e7e11f57a884ac08766e670aa82a81c8d5125 100644 (file)
@@ -40,7 +40,6 @@ extern void scsi_exit_hosts(void);
 extern int scsi_dispatch_cmd(struct scsi_cmnd *cmd);
 extern int scsi_setup_command_freelist(struct Scsi_Host *shost);
 extern void scsi_destroy_command_freelist(struct Scsi_Host *shost);
-extern int scsi_insert_special_req(struct scsi_request *sreq, int);
 extern void scsi_init_cmd_from_req(struct scsi_cmnd *cmd,
                struct scsi_request *sreq);
 extern void __scsi_release_request(struct scsi_request *sreq);
@@ -57,7 +56,8 @@ static inline void scsi_log_completion(struct scsi_cmnd *cmd, int disposition)
 
 /* scsi_devinfo.c */
 extern int scsi_get_device_flags(struct scsi_device *sdev,
-                                unsigned char *vendor, unsigned char *model);
+                                const unsigned char *vendor,
+                                const unsigned char *model);
 extern int __init scsi_init_devinfo(void);
 extern void scsi_exit_devinfo(void);
 
index 4e6709f448e198b6299204730c0771a03cf7a064..05ebb9cef961534abd81120d8cc8c3422fc5cead 100644 (file)
@@ -74,7 +74,7 @@
 #define SCSI_SCAN_TARGET_PRESENT       1
 #define SCSI_SCAN_LUN_PRESENT          2
 
-static char *scsi_null_device_strs = "nullnullnullnull";
+static const char *scsi_null_device_strs = "nullnullnullnull";
 
 #define MAX_SCSI_LUNS  512
 
index 46349293de088603099405b48884fe505f665188..15842b1f0f4a3499f20a06f6529fa5e38e4ca917 100644 (file)
@@ -21,7 +21,7 @@
 #include "scsi_priv.h"
 #include "scsi_logging.h"
 
-static struct {
+static const struct {
        enum scsi_device_state  value;
        char                    *name;
 } sdev_states[] = {
@@ -48,7 +48,7 @@ const char *scsi_device_state_name(enum scsi_device_state state)
        return name;
 }
 
-static struct {
+static const struct {
        enum scsi_host_state    value;
        char                    *name;
 } shost_states[] = {
index 2a1a99a2ef5633fbffe80cd214d160a18063c6fa..685b997306cfcd4ca8758621e6e815d9d17da01c 100644 (file)
@@ -112,7 +112,7 @@ fc_enum_name_search(port_state, fc_port_state, fc_port_state_names)
 
 
 /* Convert fc_tgtid_binding_type values to ascii string name */
-static struct {
+static const struct {
        enum fc_tgtid_binding_type      value;
        char                            *name;
        int                             matchlen;
@@ -150,7 +150,7 @@ get_fc_##title##_names(u32 table_key, char *buf)            \
 
 
 /* Convert FC_COS bit values to ascii string name */
-static struct {
+static const struct {
        u32                     value;
        char                    *name;
 } fc_cos_names[] = {
@@ -164,7 +164,7 @@ fc_bitfield_name_search(cos, fc_cos_names)
 
 
 /* Convert FC_PORTSPEED bit values to ascii string name */
-static struct {
+static const struct {
        u32                     value;
        char                    *name;
 } fc_port_speed_names[] = {
@@ -190,7 +190,7 @@ show_fc_fc4s (char *buf, u8 *fc4_list)
 
 
 /* Convert FC_RPORT_ROLE bit values to ascii string name */
-static struct {
+static const struct {
        u32                     value;
        char                    *name;
 } fc_remote_port_role_names[] = {
index 38a53b5f9e9a53e8cbc06a545f87070e4989a248..46da6fe10ad54d1d25dc1784071365d8fe288287 100644 (file)
@@ -18,6 +18,7 @@
  *  along with this program; if not, write to the Free Software
  *  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
  */
+#include <linux/config.h>
 #include <linux/ctype.h>
 #include <linux/init.h>
 #include <linux/module.h>
@@ -378,9 +379,7 @@ static CLASS_DEVICE_ATTR(revalidate, S_IWUSR, NULL, store_spi_revalidate);
 
 /* Translate the period into ns according to the current spec
  * for SDTR/PPR messages */
-static ssize_t
-show_spi_transport_period_helper(struct class_device *cdev, char *buf,
-                                int period)
+static int period_to_str(char *buf, int period)
 {
        int len, picosec;
 
@@ -398,6 +397,14 @@ show_spi_transport_period_helper(struct class_device *cdev, char *buf,
                len = sprint_frac(buf, picosec, 1000);
        }
 
+       return len;
+}
+
+static ssize_t
+show_spi_transport_period_helper(struct class_device *cdev, char *buf,
+                                int period)
+{
+       int len = period_to_str(buf, period);
        buf[len++] = '\n';
        buf[len] = '\0';
        return len;
@@ -1041,12 +1048,133 @@ void spi_display_xfer_agreement(struct scsi_target *starget)
                         tp->hold_mcs ? " HMCS" : "",
                         tmp, tp->offset);
        } else {
-               dev_info(&starget->dev, "%sasynchronous.\n",
+               dev_info(&starget->dev, "%sasynchronous\n",
                                tp->width ? "wide " : "");
        }
 }
 EXPORT_SYMBOL(spi_display_xfer_agreement);
 
+#ifdef CONFIG_SCSI_CONSTANTS
+static const char * const one_byte_msgs[] = {
+/* 0x00 */ "Command Complete", NULL, "Save Pointers",
+/* 0x03 */ "Restore Pointers", "Disconnect", "Initiator Error", 
+/* 0x06 */ "Abort", "Message Reject", "Nop", "Message Parity Error",
+/* 0x0a */ "Linked Command Complete", "Linked Command Complete w/flag",
+/* 0x0c */ "Bus device reset", "Abort Tag", "Clear Queue", 
+/* 0x0f */ "Initiate Recovery", "Release Recovery"
+};
+
+static const char * const two_byte_msgs[] = {
+/* 0x20 */ "Simple Queue Tag", "Head of Queue Tag", "Ordered Queue Tag",
+/* 0x23 */ "Ignore Wide Residue"
+};
+
+static const char * const extended_msgs[] = {
+/* 0x00 */ "Modify Data Pointer", "Synchronous Data Transfer Request",
+/* 0x02 */ "SCSI-I Extended Identify", "Wide Data Transfer Request",
+/* 0x04 */ "Parallel Protocol Request"
+};
+
+void print_nego(const unsigned char *msg, int per, int off, int width)
+{
+       if (per) {
+               char buf[20];
+               period_to_str(buf, msg[per]);
+               printk("period = %s ns ", buf);
+       }
+
+       if (off)
+               printk("offset = %d ", msg[off]);
+       if (width)
+               printk("width = %d ", 8 << msg[width]);
+}
+
+int spi_print_msg(const unsigned char *msg)
+{
+       int len = 0, i;
+       if (msg[0] == EXTENDED_MESSAGE) {
+               len = 3 + msg[1];
+               if (msg[2] < ARRAY_SIZE(extended_msgs))
+                       printk ("%s ", extended_msgs[msg[2]]); 
+               else 
+                       printk ("Extended Message, reserved code (0x%02x) ",
+                               (int) msg[2]);
+               switch (msg[2]) {
+               case EXTENDED_MODIFY_DATA_POINTER:
+                       printk("pointer = %d", (int) (msg[3] << 24) |
+                               (msg[4] << 16) | (msg[5] << 8) | msg[6]);
+                       break;
+               case EXTENDED_SDTR:
+                       print_nego(msg, 3, 4, 0);
+                       break;
+               case EXTENDED_WDTR:
+                       print_nego(msg, 0, 0, 3);
+                       break;
+               case EXTENDED_PPR:
+                       print_nego(msg, 3, 5, 6);
+                       break;
+               default:
+               for (i = 2; i < len; ++i) 
+                       printk("%02x ", msg[i]);
+               }
+       /* Identify */
+       } else if (msg[0] & 0x80) {
+               printk("Identify disconnect %sallowed %s %d ",
+                       (msg[0] & 0x40) ? "" : "not ",
+                       (msg[0] & 0x20) ? "target routine" : "lun",
+                       msg[0] & 0x7);
+               len = 1;
+       /* Normal One byte */
+       } else if (msg[0] < 0x1f) {
+               if (msg[0] < ARRAY_SIZE(one_byte_msgs))
+                       printk(one_byte_msgs[msg[0]]);
+               else
+                       printk("reserved (%02x) ", msg[0]);
+               len = 1;
+       /* Two byte */
+       } else if (msg[0] <= 0x2f) {
+               if ((msg[0] - 0x20) < ARRAY_SIZE(two_byte_msgs))
+                       printk("%s %02x ", two_byte_msgs[msg[0] - 0x20], 
+                               msg[1]);
+               else 
+                       printk("reserved two byte (%02x %02x) ", 
+                               msg[0], msg[1]);
+               len = 2;
+       } else 
+               printk("reserved");
+       return len;
+}
+EXPORT_SYMBOL(spi_print_msg);
+
+#else  /* ifndef CONFIG_SCSI_CONSTANTS */
+
+int spi_print_msg(const unsigned char *msg)
+{
+       int len = 0, i;
+
+       if (msg[0] == EXTENDED_MESSAGE) {
+               len = 3 + msg[1];
+               for (i = 0; i < len; ++i)
+                       printk("%02x ", msg[i]);
+       /* Identify */
+       } else if (msg[0] & 0x80) {
+               printk("%02x ", msg[0]);
+               len = 1;
+       /* Normal One byte */
+       } else if (msg[0] < 0x1f) {
+               printk("%02x ", msg[0]);
+               len = 1;
+       /* Two byte */
+       } else if (msg[0] <= 0x2f) {
+               printk("%02x %02x", msg[0], msg[1]);
+               len = 2;
+       } else 
+               printk("%02x ", msg[0]);
+       return len;
+}
+EXPORT_SYMBOL(spi_print_msg);
+#endif /* ! CONFIG_SCSI_CONSTANTS */
+
 #define SETUP_ATTRIBUTE(field)                                         \
        i->private_attrs[count] = class_device_attr_##field;            \
        if (!i->f->set_##field) {                                       \
index 03fcbab30033976abcd4d21f5a2bde5016510ecd..3d3ad7d1b779687046c741f799524a7f91b36aa1 100644 (file)
@@ -245,7 +245,7 @@ static int sd_init_command(struct scsi_cmnd * SCpnt)
         * SG_IO from block layer already setup, just copy cdb basically
         */
        if (blk_pc_request(rq)) {
-               scsi_setup_blk_pc_cmnd(SCpnt, SD_PASSTHROUGH_RETRIES);
+               scsi_setup_blk_pc_cmnd(SCpnt);
                if (rq->timeout)
                        timeout = rq->timeout;
 
@@ -1495,9 +1495,7 @@ static int sd_revalidate_disk(struct gendisk *disk)
         */
        if (sdkp->media_present) {
                sd_read_capacity(sdkp, disk->disk_name, buffer);
-               if (sdp->removable)
-                       sd_read_write_protect_flag(sdkp, disk->disk_name,
-                                                  buffer);
+               sd_read_write_protect_flag(sdkp, disk->disk_name, buffer);
                sd_read_cache_type(sdkp, disk->disk_name, buffer);
        }
                
index b55c2a8a547cdc852174b27d68d4c486b39b5a98..221e96e2620a66f3b9cb264e9c387c85f9ef7add 100644 (file)
@@ -104,8 +104,6 @@ static int sg_allow_dio = SG_ALLOW_DIO_DEF;
 static int sg_add(struct class_device *, struct class_interface *);
 static void sg_remove(struct class_device *, struct class_interface *);
 
-static Scsi_Request *dummy_cmdp;       /* only used for sizeof */
-
 static DEFINE_RWLOCK(sg_dev_arr_lock); /* Also used to lock
                                                           file descriptor list for device */
 
@@ -119,7 +117,7 @@ typedef struct sg_scatter_hold { /* holding area for scsi scatter gather info */
        unsigned short sglist_len; /* size of malloc'd scatter-gather list ++ */
        unsigned bufflen;       /* Size of (aggregate) data buffer */
        unsigned b_malloc_len;  /* actual len malloc'ed in buffer */
-       void *buffer;           /* Data buffer or scatter list (k_use_sg>0) */
+       struct scatterlist *buffer;/* scatter list */
        char dio_in_use;        /* 0->indirect IO (or mmap), 1->dio */
        unsigned char cmd_opcode; /* first byte of command */
 } Sg_scatter_hold;
@@ -128,12 +126,11 @@ struct sg_device;         /* forward declarations */
 struct sg_fd;
 
 typedef struct sg_request {    /* SG_MAX_QUEUE requests outstanding per file */
-       Scsi_Request *my_cmdp;  /* != 0  when request with lower levels */
        struct sg_request *nextrp;      /* NULL -> tail request (slist) */
        struct sg_fd *parentfp; /* NULL -> not in use */
        Sg_scatter_hold data;   /* hold buffer, perhaps scatter list */
        sg_io_hdr_t header;     /* scsi command+info, see <scsi/sg.h> */
-       unsigned char sense_b[sizeof (dummy_cmdp->sr_sense_buffer)];
+       unsigned char sense_b[SCSI_SENSE_BUFFERSIZE];
        char res_used;          /* 1 -> using reserve buffer, 0 -> not ... */
        char orphan;            /* 1 -> drop on sight, 0 -> normal */
        char sg_io_owned;       /* 1 -> packet belongs to SG_IO */
@@ -174,7 +171,8 @@ typedef struct sg_device { /* holds the state of each scsi generic device */
 } Sg_device;
 
 static int sg_fasync(int fd, struct file *filp, int mode);
-static void sg_cmd_done(Scsi_Cmnd * SCpnt);    /* tasklet or soft irq callback */
+/* tasklet or soft irq callback */
+static void sg_cmd_done(void *data, char *sense, int result, int resid);
 static int sg_start_req(Sg_request * srp);
 static void sg_finish_rem_req(Sg_request * srp);
 static int sg_build_indirect(Sg_scatter_hold * schp, Sg_fd * sfp, int buff_size);
@@ -195,8 +193,8 @@ static void sg_remove_scat(Sg_scatter_hold * schp);
 static void sg_build_reserve(Sg_fd * sfp, int req_size);
 static void sg_link_reserve(Sg_fd * sfp, Sg_request * srp, int size);
 static void sg_unlink_reserve(Sg_fd * sfp, Sg_request * srp);
-static char *sg_page_malloc(int rqSz, int lowDma, int *retSzp);
-static void sg_page_free(char *buff, int size);
+static struct page *sg_page_malloc(int rqSz, int lowDma, int *retSzp);
+static void sg_page_free(struct page *page, int size);
 static Sg_fd *sg_add_sfp(Sg_device * sdp, int dev);
 static int sg_remove_sfp(Sg_device * sdp, Sg_fd * sfp);
 static void __sg_remove_sfp(Sg_device * sdp, Sg_fd * sfp);
@@ -207,7 +205,6 @@ static int sg_res_in_use(Sg_fd * sfp);
 static int sg_allow_access(unsigned char opcode, char dev_type);
 static int sg_build_direct(Sg_request * srp, Sg_fd * sfp, int dxfer_len);
 static Sg_device *sg_get_dev(int dev);
-static inline unsigned char *sg_scatg2virt(const struct scatterlist *sclp);
 #ifdef CONFIG_SCSI_PROC_FS
 static int sg_last_dev(void);
 #endif
@@ -226,6 +223,7 @@ sg_open(struct inode *inode, struct file *filp)
 {
        int dev = iminor(inode);
        int flags = filp->f_flags;
+       struct request_queue *q;
        Sg_device *sdp;
        Sg_fd *sfp;
        int res;
@@ -287,7 +285,9 @@ sg_open(struct inode *inode, struct file *filp)
        }
        if (!sdp->headfp) {     /* no existing opens on this device */
                sdp->sgdebug = 0;
-               sdp->sg_tablesize = sdp->device->host->sg_tablesize;
+               q = sdp->device->request_queue;
+               sdp->sg_tablesize = min(q->max_hw_segments,
+                                       q->max_phys_segments);
        }
        if ((sfp = sg_add_sfp(sdp, dev)))
                filp->private_data = sfp;
@@ -340,6 +340,7 @@ sg_read(struct file *filp, char __user *buf, size_t count, loff_t * ppos)
                return -ENXIO;
        SCSI_LOG_TIMEOUT(3, printk("sg_read: %s, count=%d\n",
                                   sdp->disk->disk_name, (int) count));
+
        if (!access_ok(VERIFY_WRITE, buf, count))
                return -EFAULT;
        if (sfp->force_packid && (count >= SZ_SG_HEADER)) {
@@ -491,7 +492,7 @@ sg_new_read(Sg_fd * sfp, char __user *buf, size_t count, Sg_request * srp)
        if ((hp->mx_sb_len > 0) && hp->sbp) {
                if ((CHECK_CONDITION & hp->masked_status) ||
                    (DRIVER_SENSE & hp->driver_status)) {
-                       int sb_len = sizeof (dummy_cmdp->sr_sense_buffer);
+                       int sb_len = SCSI_SENSE_BUFFERSIZE;
                        sb_len = (hp->mx_sb_len > sb_len) ? sb_len : hp->mx_sb_len;
                        len = 8 + (int) srp->sense_b[7];        /* Additional sense length field */
                        len = (len > sb_len) ? sb_len : len;
@@ -525,7 +526,7 @@ sg_write(struct file *filp, const char __user *buf, size_t count, loff_t * ppos)
        Sg_request *srp;
        struct sg_header old_hdr;
        sg_io_hdr_t *hp;
-       unsigned char cmnd[sizeof (dummy_cmdp->sr_cmnd)];
+       unsigned char cmnd[MAX_COMMAND_SIZE];
 
        if ((!(sfp = (Sg_fd *) filp->private_data)) || (!(sdp = sfp->parentdp)))
                return -ENXIO;
@@ -624,7 +625,7 @@ sg_new_write(Sg_fd * sfp, const char __user *buf, size_t count,
        int k;
        Sg_request *srp;
        sg_io_hdr_t *hp;
-       unsigned char cmnd[sizeof (dummy_cmdp->sr_cmnd)];
+       unsigned char cmnd[MAX_COMMAND_SIZE];
        int timeout;
        unsigned long ul_timeout;
 
@@ -692,11 +693,9 @@ static int
 sg_common_write(Sg_fd * sfp, Sg_request * srp,
                unsigned char *cmnd, int timeout, int blocking)
 {
-       int k;
-       Scsi_Request *SRpnt;
+       int k, data_dir;
        Sg_device *sdp = sfp->parentdp;
        sg_io_hdr_t *hp = &srp->header;
-       request_queue_t *q;
 
        srp->data.cmd_opcode = cmnd[0]; /* hold opcode of command */
        hp->status = 0;
@@ -723,51 +722,36 @@ sg_common_write(Sg_fd * sfp, Sg_request * srp,
                sg_finish_rem_req(srp);
                return -ENODEV;
        }
-       SRpnt = scsi_allocate_request(sdp->device, GFP_ATOMIC);
-       if (SRpnt == NULL) {
-               SCSI_LOG_TIMEOUT(1, printk("sg_write: no mem\n"));
-               sg_finish_rem_req(srp);
-               return -ENOMEM;
-       }
 
-       srp->my_cmdp = SRpnt;
-       q = SRpnt->sr_device->request_queue;
-       SRpnt->sr_request->rq_disk = sdp->disk;
-       SRpnt->sr_sense_buffer[0] = 0;
-       SRpnt->sr_cmd_len = hp->cmd_len;
-       SRpnt->sr_use_sg = srp->data.k_use_sg;
-       SRpnt->sr_sglist_len = srp->data.sglist_len;
-       SRpnt->sr_bufflen = srp->data.bufflen;
-       SRpnt->sr_underflow = 0;
-       SRpnt->sr_buffer = srp->data.buffer;
        switch (hp->dxfer_direction) {
        case SG_DXFER_TO_FROM_DEV:
        case SG_DXFER_FROM_DEV:
-               SRpnt->sr_data_direction = DMA_FROM_DEVICE;
+               data_dir = DMA_FROM_DEVICE;
                break;
        case SG_DXFER_TO_DEV:
-               SRpnt->sr_data_direction = DMA_TO_DEVICE;
+               data_dir = DMA_TO_DEVICE;
                break;
        case SG_DXFER_UNKNOWN:
-               SRpnt->sr_data_direction = DMA_BIDIRECTIONAL;
+               data_dir = DMA_BIDIRECTIONAL;
                break;
        default:
-               SRpnt->sr_data_direction = DMA_NONE;
+               data_dir = DMA_NONE;
                break;
        }
-       SRpnt->upper_private_data = srp;
-       srp->data.k_use_sg = 0;
-       srp->data.sglist_len = 0;
-       srp->data.bufflen = 0;
-       srp->data.buffer = NULL;
        hp->duration = jiffies_to_msecs(jiffies);
 /* Now send everything of to mid-level. The next time we hear about this
    packet is when sg_cmd_done() is called (i.e. a callback). */
-       scsi_do_req(SRpnt, (void *) cmnd,
-                   (void *) SRpnt->sr_buffer, hp->dxfer_len,
-                   sg_cmd_done, timeout, SG_DEFAULT_RETRIES);
-       /* dxfer_len overwrites SRpnt->sr_bufflen, hence need for b_malloc_len */
-       return 0;
+       if (scsi_execute_async(sdp->device, cmnd, data_dir, srp->data.buffer,
+                               hp->dxfer_len, srp->data.k_use_sg, timeout,
+                               SG_DEFAULT_RETRIES, srp, sg_cmd_done,
+                               GFP_ATOMIC)) {
+               SCSI_LOG_TIMEOUT(1, printk("sg_write: scsi_execute_async failed\n"));
+               /*
+                * most likely out of mem, but could also be a bad map
+                */
+               return -ENOMEM;
+       } else
+               return 0;
 }
 
 static int
@@ -1156,45 +1140,22 @@ sg_fasync(int fd, struct file *filp, int mode)
        return (retval < 0) ? retval : 0;
 }
 
-static inline unsigned char *
-sg_scatg2virt(const struct scatterlist *sclp)
-{
-       return (sclp && sclp->page) ?
-           (unsigned char *) page_address(sclp->page) + sclp->offset : NULL;
-}
-
 /* When startFinish==1 increments page counts for pages other than the 
-   first of scatter gather elements obtained from __get_free_pages().
+   first of scatter gather elements obtained from alloc_pages().
    When startFinish==0 decrements ... */
 static void
 sg_rb_correct4mmap(Sg_scatter_hold * rsv_schp, int startFinish)
 {
-       void *page_ptr;
+       struct scatterlist *sg = rsv_schp->buffer;
        struct page *page;
        int k, m;
 
        SCSI_LOG_TIMEOUT(3, printk("sg_rb_correct4mmap: startFinish=%d, scatg=%d\n", 
                                   startFinish, rsv_schp->k_use_sg));
        /* N.B. correction _not_ applied to base page of each allocation */
-       if (rsv_schp->k_use_sg) {       /* reserve buffer is a scatter gather list */
-               struct scatterlist *sclp = rsv_schp->buffer;
-
-               for (k = 0; k < rsv_schp->k_use_sg; ++k, ++sclp) {
-                       for (m = PAGE_SIZE; m < sclp->length; m += PAGE_SIZE) {
-                               page_ptr = sg_scatg2virt(sclp) + m;
-                               page = virt_to_page(page_ptr);
-                               if (startFinish)
-                                       get_page(page);
-                               else {
-                                       if (page_count(page) > 0)
-                                               __put_page(page);
-                               }
-                       }
-               }
-       } else {                /* reserve buffer is just a single allocation */
-               for (m = PAGE_SIZE; m < rsv_schp->bufflen; m += PAGE_SIZE) {
-                       page_ptr = (unsigned char *) rsv_schp->buffer + m;
-                       page = virt_to_page(page_ptr);
+       for (k = 0; k < rsv_schp->k_use_sg; ++k, ++sg) {
+               for (m = PAGE_SIZE; m < sg->length; m += PAGE_SIZE) {
+                       page = sg->page;
                        if (startFinish)
                                get_page(page);
                        else {
@@ -1210,9 +1171,10 @@ sg_vma_nopage(struct vm_area_struct *vma, unsigned long addr, int *type)
 {
        Sg_fd *sfp;
        struct page *page = NOPAGE_SIGBUS;
-       void *page_ptr = NULL;
-       unsigned long offset;
+       unsigned long offset, len, sa;
        Sg_scatter_hold *rsv_schp;
+       struct scatterlist *sg;
+       int k;
 
        if ((NULL == vma) || (!(sfp = (Sg_fd *) vma->vm_private_data)))
                return page;
@@ -1222,30 +1184,21 @@ sg_vma_nopage(struct vm_area_struct *vma, unsigned long addr, int *type)
                return page;
        SCSI_LOG_TIMEOUT(3, printk("sg_vma_nopage: offset=%lu, scatg=%d\n",
                                   offset, rsv_schp->k_use_sg));
-       if (rsv_schp->k_use_sg) {       /* reserve buffer is a scatter gather list */
-               int k;
-               unsigned long sa = vma->vm_start;
-               unsigned long len;
-               struct scatterlist *sclp = rsv_schp->buffer;
-
-               for (k = 0; (k < rsv_schp->k_use_sg) && (sa < vma->vm_end);
-                    ++k, ++sclp) {
-                       len = vma->vm_end - sa;
-                       len = (len < sclp->length) ? len : sclp->length;
-                       if (offset < len) {
-                               page_ptr = sg_scatg2virt(sclp) + offset;
-                               page = virt_to_page(page_ptr);
-                               get_page(page); /* increment page count */
-                               break;
-                       }
-                       sa += len;
-                       offset -= len;
+       sg = rsv_schp->buffer;
+       sa = vma->vm_start;
+       for (k = 0; (k < rsv_schp->k_use_sg) && (sa < vma->vm_end);
+            ++k, ++sg) {
+               len = vma->vm_end - sa;
+               len = (len < sg->length) ? len : sg->length;
+               if (offset < len) {
+                       page = sg->page;
+                       get_page(page); /* increment page count */
+                       break;
                }
-       } else {                /* reserve buffer is just a single allocation */
-               page_ptr = (unsigned char *) rsv_schp->buffer + offset;
-               page = virt_to_page(page_ptr);
-               get_page(page); /* increment page count */
+               sa += len;
+               offset -= len;
        }
+
        if (type)
                *type = VM_FAULT_MINOR;
        return page;
@@ -1259,8 +1212,10 @@ static int
 sg_mmap(struct file *filp, struct vm_area_struct *vma)
 {
        Sg_fd *sfp;
-       unsigned long req_sz;
+       unsigned long req_sz, len, sa;
        Sg_scatter_hold *rsv_schp;
+       int k;
+       struct scatterlist *sg;
 
        if ((!filp) || (!vma) || (!(sfp = (Sg_fd *) filp->private_data)))
                return -ENXIO;
@@ -1273,24 +1228,15 @@ sg_mmap(struct file *filp, struct vm_area_struct *vma)
        if (req_sz > rsv_schp->bufflen)
                return -ENOMEM; /* cannot map more than reserved buffer */
 
-       if (rsv_schp->k_use_sg) { /* reserve buffer is a scatter gather list */
-               int k;
-               unsigned long sa = vma->vm_start;
-               unsigned long len;
-               struct scatterlist *sclp = rsv_schp->buffer;
-
-               for (k = 0; (k < rsv_schp->k_use_sg) && (sa < vma->vm_end);
-                    ++k, ++sclp) {
-                       if (0 != sclp->offset)
-                               return -EFAULT; /* non page aligned memory ?? */
-                       len = vma->vm_end - sa;
-                       len = (len < sclp->length) ? len : sclp->length;
-                       sa += len;
-               }
-       } else {        /* reserve buffer is just a single allocation */
-               if ((unsigned long) rsv_schp->buffer & (PAGE_SIZE - 1))
-                       return -EFAULT; /* non page aligned memory ?? */
+       sa = vma->vm_start;
+       sg = rsv_schp->buffer;
+       for (k = 0; (k < rsv_schp->k_use_sg) && (sa < vma->vm_end);
+            ++k, ++sg) {
+               len = vma->vm_end - sa;
+               len = (len < sg->length) ? len : sg->length;
+               sa += len;
        }
+
        if (0 == sfp->mmap_called) {
                sg_rb_correct4mmap(rsv_schp, 1);        /* do only once per fd lifetime */
                sfp->mmap_called = 1;
@@ -1304,21 +1250,16 @@ sg_mmap(struct file *filp, struct vm_area_struct *vma)
 /* This function is a "bottom half" handler that is called by the
  * mid level when a command is completed (or has failed). */
 static void
-sg_cmd_done(Scsi_Cmnd * SCpnt)
+sg_cmd_done(void *data, char *sense, int result, int resid)
 {
-       Scsi_Request *SRpnt = NULL;
+       Sg_request *srp = data;
        Sg_device *sdp = NULL;
        Sg_fd *sfp;
-       Sg_request *srp = NULL;
        unsigned long iflags;
        unsigned int ms;
 
-       if (SCpnt && (SRpnt = SCpnt->sc_request))
-               srp = (Sg_request *) SRpnt->upper_private_data;
        if (NULL == srp) {
                printk(KERN_ERR "sg_cmd_done: NULL request\n");
-               if (SRpnt)
-                       scsi_release_request(SRpnt);
                return;
        }
        sfp = srp->parentfp;
@@ -1326,49 +1267,34 @@ sg_cmd_done(Scsi_Cmnd * SCpnt)
                sdp = sfp->parentdp;
        if ((NULL == sdp) || sdp->detached) {
                printk(KERN_INFO "sg_cmd_done: device detached\n");
-               scsi_release_request(SRpnt);
                return;
        }
 
-       /* First transfer ownership of data buffers to sg_device object. */
-       srp->data.k_use_sg = SRpnt->sr_use_sg;
-       srp->data.sglist_len = SRpnt->sr_sglist_len;
-       srp->data.bufflen = SRpnt->sr_bufflen;
-       srp->data.buffer = SRpnt->sr_buffer;
-       /* now clear out request structure */
-       SRpnt->sr_use_sg = 0;
-       SRpnt->sr_sglist_len = 0;
-       SRpnt->sr_bufflen = 0;
-       SRpnt->sr_buffer = NULL;
-       SRpnt->sr_underflow = 0;
-       SRpnt->sr_request->rq_disk = NULL; /* "sg" _disowns_ request blk */
-
-       srp->my_cmdp = NULL;
 
        SCSI_LOG_TIMEOUT(4, printk("sg_cmd_done: %s, pack_id=%d, res=0x%x\n",
-               sdp->disk->disk_name, srp->header.pack_id, (int) SRpnt->sr_result));
-       srp->header.resid = SCpnt->resid;
+               sdp->disk->disk_name, srp->header.pack_id, result));
+       srp->header.resid = resid;
        ms = jiffies_to_msecs(jiffies);
        srp->header.duration = (ms > srp->header.duration) ?
                                (ms - srp->header.duration) : 0;
-       if (0 != SRpnt->sr_result) {
+       if (0 != result) {
                struct scsi_sense_hdr sshdr;
 
-               memcpy(srp->sense_b, SRpnt->sr_sense_buffer,
-                      sizeof (srp->sense_b));
-               srp->header.status = 0xff & SRpnt->sr_result;
-               srp->header.masked_status = status_byte(SRpnt->sr_result);
-               srp->header.msg_status = msg_byte(SRpnt->sr_result);
-               srp->header.host_status = host_byte(SRpnt->sr_result);
-               srp->header.driver_status = driver_byte(SRpnt->sr_result);
+               memcpy(srp->sense_b, sense, sizeof (srp->sense_b));
+               srp->header.status = 0xff & result;
+               srp->header.masked_status = status_byte(result);
+               srp->header.msg_status = msg_byte(result);
+               srp->header.host_status = host_byte(result);
+               srp->header.driver_status = driver_byte(result);
                if ((sdp->sgdebug > 0) &&
                    ((CHECK_CONDITION == srp->header.masked_status) ||
                     (COMMAND_TERMINATED == srp->header.masked_status)))
-                       scsi_print_req_sense("sg_cmd_done", SRpnt);
+                       __scsi_print_sense("sg_cmd_done", sense,
+                                          SCSI_SENSE_BUFFERSIZE);
 
                /* Following if statement is a patch supplied by Eric Youngdale */
-               if (driver_byte(SRpnt->sr_result) != 0
-                   && scsi_command_normalize_sense(SCpnt, &sshdr)
+               if (driver_byte(result) != 0
+                   && scsi_normalize_sense(sense, SCSI_SENSE_BUFFERSIZE, &sshdr)
                    && !scsi_sense_is_deferred(&sshdr)
                    && sshdr.sense_key == UNIT_ATTENTION
                    && sdp->device->removable) {
@@ -1379,8 +1305,6 @@ sg_cmd_done(Scsi_Cmnd * SCpnt)
        }
        /* Rely on write phase to clean out srp status values, so no "else" */
 
-       scsi_release_request(SRpnt);
-       SRpnt = NULL;
        if (sfp->closed) {      /* whoops this fd already released, cleanup */
                SCSI_LOG_TIMEOUT(1, printk("sg_cmd_done: already closed, freeing ...\n"));
                sg_finish_rem_req(srp);
@@ -1431,6 +1355,7 @@ static int sg_sysfs_valid = 0;
 
 static int sg_alloc(struct gendisk *disk, struct scsi_device *scsidp)
 {
+       struct request_queue *q = scsidp->request_queue;
        Sg_device *sdp;
        unsigned long iflags;
        void *old_sg_dev_arr = NULL;
@@ -1473,7 +1398,7 @@ static int sg_alloc(struct gendisk *disk, struct scsi_device *scsidp)
        sdp->disk = disk;
        sdp->device = scsidp;
        init_waitqueue_head(&sdp->o_excl_wait);
-       sdp->sg_tablesize = scsidp->host ? scsidp->host->sg_tablesize : 0;
+       sdp->sg_tablesize = min(q->max_hw_segments, q->max_phys_segments);
 
        sg_nr_dev++;
        sg_dev_arr[k] = sdp;
@@ -1753,36 +1678,35 @@ sg_finish_rem_req(Sg_request * srp)
 static int
 sg_build_sgat(Sg_scatter_hold * schp, const Sg_fd * sfp, int tablesize)
 {
-       int ret_sz;
-       int elem_sz = sizeof (struct scatterlist);
-       int sg_bufflen = tablesize * elem_sz;
-       int mx_sc_elems = tablesize;
+       int sg_bufflen = tablesize * sizeof(struct scatterlist);
+       unsigned int gfp_flags = GFP_ATOMIC | __GFP_NOWARN;
 
-       schp->buffer = sg_page_malloc(sg_bufflen, sfp->low_dma, &ret_sz);
+       /*
+        * TODO: test without low_dma, we should not need it since
+        * the block layer will bounce the buffer for us
+        *
+        * XXX(hch): we shouldn't need GFP_DMA for the actual S/G list.
+        */
+       if (sfp->low_dma)
+                gfp_flags |= GFP_DMA;
+       schp->buffer = kzalloc(sg_bufflen, gfp_flags);
        if (!schp->buffer)
                return -ENOMEM;
-       else if (ret_sz != sg_bufflen) {
-               sg_bufflen = ret_sz;
-               mx_sc_elems = sg_bufflen / elem_sz;
-       }
        schp->sglist_len = sg_bufflen;
-       memset(schp->buffer, 0, sg_bufflen);
-       return mx_sc_elems;     /* number of scat_gath elements allocated */
+       return tablesize;       /* number of scat_gath elements allocated */
 }
 
 #ifdef SG_ALLOW_DIO_CODE
 /* vvvvvvvv  following code borrowed from st driver's direct IO vvvvvvvvv */
-       /* hopefully this generic code will moved to a library */
+       /* TODO: hopefully we can use the generic block layer code */
 
 /* Pin down user pages and put them into a scatter gather list. Returns <= 0 if
    - mapping of all pages not successful
-   - any page is above max_pfn
    (i.e., either completely successful or fails)
 */
 static int 
 st_map_user_pages(struct scatterlist *sgl, const unsigned int max_pages, 
-                 unsigned long uaddr, size_t count, int rw,
-                 unsigned long max_pfn)
+                 unsigned long uaddr, size_t count, int rw)
 {
        unsigned long end = (uaddr + count + PAGE_SIZE - 1) >> PAGE_SHIFT;
        unsigned long start = uaddr >> PAGE_SHIFT;
@@ -1828,21 +1752,17 @@ st_map_user_pages(struct scatterlist *sgl, const unsigned int max_pages,
                  * probably wrong function for rw==WRITE
                  */
                flush_dcache_page(pages[i]);
-               if (page_to_pfn(pages[i]) > max_pfn)
-                       goto out_unlock;
                /* ?? Is locking needed? I don't think so */
                /* if (TestSetPageLocked(pages[i]))
                   goto out_unlock; */
         }
 
-       /* Populate the scatter/gather list */
-       sgl[0].page = pages[0]; 
+       sgl[0].page = pages[0];
        sgl[0].offset = uaddr & ~PAGE_MASK;
        if (nr_pages > 1) {
                sgl[0].length = PAGE_SIZE - sgl[0].offset;
                count -= sgl[0].length;
                for (i=1; i < nr_pages ; i++) {
-                       sgl[i].offset = 0;
                        sgl[i].page = pages[i]; 
                        sgl[i].length = count < PAGE_SIZE ? count : PAGE_SIZE;
                        count -= PAGE_SIZE;
@@ -1855,10 +1775,6 @@ st_map_user_pages(struct scatterlist *sgl, const unsigned int max_pages,
        kfree(pages);
        return nr_pages;
 
- out_unlock:
-       /* for (j=0; j < i; j++)
-          unlock_page(pages[j]); */
-       res = 0;
  out_unmap:
        if (res > 0) {
                for (j=0; j < res; j++)
@@ -1904,20 +1820,20 @@ sg_build_direct(Sg_request * srp, Sg_fd * sfp, int dxfer_len)
        sg_io_hdr_t *hp = &srp->header;
        Sg_scatter_hold *schp = &srp->data;
        int sg_tablesize = sfp->parentdp->sg_tablesize;
-       struct scatterlist *sgl;
        int mx_sc_elems, res;
        struct scsi_device *sdev = sfp->parentdp->device;
 
        if (((unsigned long)hp->dxferp &
                        queue_dma_alignment(sdev->request_queue)) != 0)
                return 1;
+
        mx_sc_elems = sg_build_sgat(schp, sfp, sg_tablesize);
         if (mx_sc_elems <= 0) {
                 return 1;
         }
-       sgl = (struct scatterlist *)schp->buffer;
-       res = st_map_user_pages(sgl, mx_sc_elems, (unsigned long)hp->dxferp, dxfer_len, 
-                               (SG_DXFER_TO_DEV == hp->dxfer_direction) ? 1 : 0, ULONG_MAX);
+       res = st_map_user_pages(schp->buffer, mx_sc_elems,
+                               (unsigned long)hp->dxferp, dxfer_len, 
+                               (SG_DXFER_TO_DEV == hp->dxfer_direction) ? 1 : 0);
        if (res <= 0)
                return 1;
        schp->k_use_sg = res;
@@ -1932,9 +1848,11 @@ sg_build_direct(Sg_request * srp, Sg_fd * sfp, int dxfer_len)
 static int
 sg_build_indirect(Sg_scatter_hold * schp, Sg_fd * sfp, int buff_size)
 {
-       int ret_sz;
+       struct scatterlist *sg;
+       int ret_sz = 0, k, rem_sz, num, mx_sc_elems;
+       int sg_tablesize = sfp->parentdp->sg_tablesize;
        int blk_size = buff_size;
-       unsigned char *p = NULL;
+       struct page *p = NULL;
 
        if ((blk_size < 0) || (!sfp))
                return -EFAULT;
@@ -1944,59 +1862,35 @@ sg_build_indirect(Sg_scatter_hold * schp, Sg_fd * sfp, int buff_size)
        blk_size = (blk_size + SG_SECTOR_MSK) & (~SG_SECTOR_MSK);
        SCSI_LOG_TIMEOUT(4, printk("sg_build_indirect: buff_size=%d, blk_size=%d\n",
                                   buff_size, blk_size));
-       if (blk_size <= SG_SCATTER_SZ) {
-               p = sg_page_malloc(blk_size, sfp->low_dma, &ret_sz);
-               if (!p)
-                       return -ENOMEM;
-               if (blk_size == ret_sz) {       /* got it on the first attempt */
-                       schp->k_use_sg = 0;
-                       schp->buffer = p;
-                       schp->bufflen = blk_size;
-                       schp->b_malloc_len = blk_size;
-                       return 0;
-               }
-       } else {
-               p = sg_page_malloc(SG_SCATTER_SZ, sfp->low_dma, &ret_sz);
+
+       /* N.B. ret_sz carried into this block ... */
+       mx_sc_elems = sg_build_sgat(schp, sfp, sg_tablesize);
+       if (mx_sc_elems < 0)
+               return mx_sc_elems;     /* most likely -ENOMEM */
+
+       for (k = 0, sg = schp->buffer, rem_sz = blk_size;
+            (rem_sz > 0) && (k < mx_sc_elems);
+            ++k, rem_sz -= ret_sz, ++sg) {
+               
+               num = (rem_sz > SG_SCATTER_SZ) ? SG_SCATTER_SZ : rem_sz;
+               p = sg_page_malloc(num, sfp->low_dma, &ret_sz);
                if (!p)
                        return -ENOMEM;
-       }
-/* Want some local declarations, so start new block ... */
-       {                       /* lets try and build a scatter gather list */
-               struct scatterlist *sclp;
-               int k, rem_sz, num;
-               int mx_sc_elems;
-               int sg_tablesize = sfp->parentdp->sg_tablesize;
-               int first = 1;
-
-               /* N.B. ret_sz carried into this block ... */
-               mx_sc_elems = sg_build_sgat(schp, sfp, sg_tablesize);
-               if (mx_sc_elems < 0)
-                       return mx_sc_elems;     /* most likely -ENOMEM */
-
-               for (k = 0, sclp = schp->buffer, rem_sz = blk_size;
-                    (rem_sz > 0) && (k < mx_sc_elems);
-                    ++k, rem_sz -= ret_sz, ++sclp) {
-                       if (first)
-                               first = 0;
-                       else {
-                               num =
-                                   (rem_sz >
-                                    SG_SCATTER_SZ) ? SG_SCATTER_SZ : rem_sz;
-                               p = sg_page_malloc(num, sfp->low_dma, &ret_sz);
-                               if (!p)
-                                       break;
-                       }
-                       sg_set_buf(sclp, p, ret_sz);
-
-                       SCSI_LOG_TIMEOUT(5, printk("sg_build_build: k=%d, a=0x%p, len=%d\n",
-                                         k, sg_scatg2virt(sclp), ret_sz));
-               }               /* end of for loop */
-               schp->k_use_sg = k;
-               SCSI_LOG_TIMEOUT(5, printk("sg_build_indirect: k_use_sg=%d, rem_sz=%d\n", k, rem_sz));
-               schp->bufflen = blk_size;
-               if (rem_sz > 0) /* must have failed */
-                       return -ENOMEM;
-       }
+
+               sg->page = p;
+               sg->length = ret_sz;
+
+               SCSI_LOG_TIMEOUT(5, printk("sg_build_build: k=%d, a=0x%p, len=%d\n",
+                                 k, p, ret_sz));
+       }               /* end of for loop */
+
+       schp->k_use_sg = k;
+       SCSI_LOG_TIMEOUT(5, printk("sg_build_indirect: k_use_sg=%d, rem_sz=%d\n", k, rem_sz));
+
+       schp->bufflen = blk_size;
+       if (rem_sz > 0) /* must have failed */
+               return -ENOMEM;
+
        return 0;
 }
 
@@ -2005,6 +1899,7 @@ sg_write_xfer(Sg_request * srp)
 {
        sg_io_hdr_t *hp = &srp->header;
        Sg_scatter_hold *schp = &srp->data;
+       struct scatterlist *sg = schp->buffer;
        int num_xfer = 0;
        int j, k, onum, usglen, ksglen, res;
        int iovec_count = (int) hp->iovec_count;
@@ -2033,63 +1928,45 @@ sg_write_xfer(Sg_request * srp)
        } else
                onum = 1;
 
-       if (0 == schp->k_use_sg) {      /* kernel has single buffer */
-               for (j = 0, p = schp->buffer; j < onum; ++j) {
-                       res = sg_u_iovec(hp, iovec_count, j, 1, &usglen, &up);
-                       if (res)
-                               return res;
-                       usglen = (num_xfer > usglen) ? usglen : num_xfer;
-                       if (__copy_from_user(p, up, usglen))
-                               return -EFAULT;
-                       p += usglen;
-                       num_xfer -= usglen;
-                       if (num_xfer <= 0)
-                               return 0;
-               }
-       } else {                /* kernel using scatter gather list */
-               struct scatterlist *sclp = (struct scatterlist *) schp->buffer;
-
-               ksglen = (int) sclp->length;
-               p = sg_scatg2virt(sclp);
-               for (j = 0, k = 0; j < onum; ++j) {
-                       res = sg_u_iovec(hp, iovec_count, j, 1, &usglen, &up);
-                       if (res)
-                               return res;
-
-                       for (; p; ++sclp, ksglen = (int) sclp->length,
-                                 p = sg_scatg2virt(sclp)) {
-                               if (usglen <= 0)
-                                       break;
-                               if (ksglen > usglen) {
-                                       if (usglen >= num_xfer) {
-                                               if (__copy_from_user
-                                                   (p, up, num_xfer))
-                                                       return -EFAULT;
-                                               return 0;
-                                       }
-                                       if (__copy_from_user(p, up, usglen))
-                                               return -EFAULT;
-                                       p += usglen;
-                                       ksglen -= usglen;
-                                       break;
-                               } else {
-                                       if (ksglen >= num_xfer) {
-                                               if (__copy_from_user
-                                                   (p, up, num_xfer))
-                                                       return -EFAULT;
-                                               return 0;
-                                       }
-                                       if (__copy_from_user(p, up, ksglen))
+       ksglen = sg->length;
+       p = page_address(sg->page);
+       for (j = 0, k = 0; j < onum; ++j) {
+               res = sg_u_iovec(hp, iovec_count, j, 1, &usglen, &up);
+               if (res)
+                       return res;
+
+               for (; p; ++sg, ksglen = sg->length,
+                    p = page_address(sg->page)) {
+                       if (usglen <= 0)
+                               break;
+                       if (ksglen > usglen) {
+                               if (usglen >= num_xfer) {
+                                       if (__copy_from_user(p, up, num_xfer))
                                                return -EFAULT;
-                                       up += ksglen;
-                                       usglen -= ksglen;
+                                       return 0;
                                }
-                               ++k;
-                               if (k >= schp->k_use_sg)
+                               if (__copy_from_user(p, up, usglen))
+                                       return -EFAULT;
+                               p += usglen;
+                               ksglen -= usglen;
+                               break;
+                       } else {
+                               if (ksglen >= num_xfer) {
+                                       if (__copy_from_user(p, up, num_xfer))
+                                               return -EFAULT;
                                        return 0;
+                               }
+                               if (__copy_from_user(p, up, ksglen))
+                                       return -EFAULT;
+                               up += ksglen;
+                               usglen -= ksglen;
                        }
+                       ++k;
+                       if (k >= schp->k_use_sg)
+                               return 0;
                }
        }
+
        return 0;
 }
 
@@ -2127,29 +2004,25 @@ sg_remove_scat(Sg_scatter_hold * schp)
 {
        SCSI_LOG_TIMEOUT(4, printk("sg_remove_scat: k_use_sg=%d\n", schp->k_use_sg));
        if (schp->buffer && (schp->sglist_len > 0)) {
-               struct scatterlist *sclp = (struct scatterlist *) schp->buffer;
+               struct scatterlist *sg = schp->buffer;
 
                if (schp->dio_in_use) {
 #ifdef SG_ALLOW_DIO_CODE
-                       st_unmap_user_pages(sclp, schp->k_use_sg, TRUE);
+                       st_unmap_user_pages(sg, schp->k_use_sg, TRUE);
 #endif
                } else {
                        int k;
 
-                       for (k = 0; (k < schp->k_use_sg) && sg_scatg2virt(sclp);
-                            ++k, ++sclp) {
+                       for (k = 0; (k < schp->k_use_sg) && sg->page;
+                            ++k, ++sg) {
                                SCSI_LOG_TIMEOUT(5, printk(
                                    "sg_remove_scat: k=%d, a=0x%p, len=%d\n",
-                                   k, sg_scatg2virt(sclp), sclp->length));
-                               sg_page_free(sg_scatg2virt(sclp), sclp->length);
-                               sclp->page = NULL;
-                               sclp->offset = 0;
-                               sclp->length = 0;
+                                   k, sg->page, sg->length));
+                               sg_page_free(sg->page, sg->length);
                        }
                }
-               sg_page_free(schp->buffer, schp->sglist_len);
-       } else if (schp->buffer)
-               sg_page_free(schp->buffer, schp->b_malloc_len);
+               kfree(schp->buffer);
+       }
        memset(schp, 0, sizeof (*schp));
 }
 
@@ -2158,6 +2031,7 @@ sg_read_xfer(Sg_request * srp)
 {
        sg_io_hdr_t *hp = &srp->header;
        Sg_scatter_hold *schp = &srp->data;
+       struct scatterlist *sg = schp->buffer;
        int num_xfer = 0;
        int j, k, onum, usglen, ksglen, res;
        int iovec_count = (int) hp->iovec_count;
@@ -2186,63 +2060,45 @@ sg_read_xfer(Sg_request * srp)
        } else
                onum = 1;
 
-       if (0 == schp->k_use_sg) {      /* kernel has single buffer */
-               for (j = 0, p = schp->buffer; j < onum; ++j) {
-                       res = sg_u_iovec(hp, iovec_count, j, 0, &usglen, &up);
-                       if (res)
-                               return res;
-                       usglen = (num_xfer > usglen) ? usglen : num_xfer;
-                       if (__copy_to_user(up, p, usglen))
-                               return -EFAULT;
-                       p += usglen;
-                       num_xfer -= usglen;
-                       if (num_xfer <= 0)
-                               return 0;
-               }
-       } else {                /* kernel using scatter gather list */
-               struct scatterlist *sclp = (struct scatterlist *) schp->buffer;
-
-               ksglen = (int) sclp->length;
-               p = sg_scatg2virt(sclp);
-               for (j = 0, k = 0; j < onum; ++j) {
-                       res = sg_u_iovec(hp, iovec_count, j, 0, &usglen, &up);
-                       if (res)
-                               return res;
-
-                       for (; p; ++sclp, ksglen = (int) sclp->length,
-                                 p = sg_scatg2virt(sclp)) {
-                               if (usglen <= 0)
-                                       break;
-                               if (ksglen > usglen) {
-                                       if (usglen >= num_xfer) {
-                                               if (__copy_to_user
-                                                   (up, p, num_xfer))
-                                                       return -EFAULT;
-                                               return 0;
-                                       }
-                                       if (__copy_to_user(up, p, usglen))
-                                               return -EFAULT;
-                                       p += usglen;
-                                       ksglen -= usglen;
-                                       break;
-                               } else {
-                                       if (ksglen >= num_xfer) {
-                                               if (__copy_to_user
-                                                   (up, p, num_xfer))
-                                                       return -EFAULT;
-                                               return 0;
-                                       }
-                                       if (__copy_to_user(up, p, ksglen))
+       p = page_address(sg->page);
+       ksglen = sg->length;
+       for (j = 0, k = 0; j < onum; ++j) {
+               res = sg_u_iovec(hp, iovec_count, j, 0, &usglen, &up);
+               if (res)
+                       return res;
+
+               for (; p; ++sg, ksglen = sg->length,
+                    p = page_address(sg->page)) {
+                       if (usglen <= 0)
+                               break;
+                       if (ksglen > usglen) {
+                               if (usglen >= num_xfer) {
+                                       if (__copy_to_user(up, p, num_xfer))
                                                return -EFAULT;
-                                       up += ksglen;
-                                       usglen -= ksglen;
+                                       return 0;
                                }
-                               ++k;
-                               if (k >= schp->k_use_sg)
+                               if (__copy_to_user(up, p, usglen))
+                                       return -EFAULT;
+                               p += usglen;
+                               ksglen -= usglen;
+                               break;
+                       } else {
+                               if (ksglen >= num_xfer) {
+                                       if (__copy_to_user(up, p, num_xfer))
+                                               return -EFAULT;
                                        return 0;
+                               }
+                               if (__copy_to_user(up, p, ksglen))
+                                       return -EFAULT;
+                               up += ksglen;
+                               usglen -= ksglen;
                        }
+                       ++k;
+                       if (k >= schp->k_use_sg)
+                               return 0;
                }
        }
+
        return 0;
 }
 
@@ -2250,37 +2106,32 @@ static int
 sg_read_oxfer(Sg_request * srp, char __user *outp, int num_read_xfer)
 {
        Sg_scatter_hold *schp = &srp->data;
+       struct scatterlist *sg = schp->buffer;
+       int k, num;
 
        SCSI_LOG_TIMEOUT(4, printk("sg_read_oxfer: num_read_xfer=%d\n",
                                   num_read_xfer));
        if ((!outp) || (num_read_xfer <= 0))
                return 0;
-       if (schp->k_use_sg > 0) {
-               int k, num;
-               struct scatterlist *sclp = (struct scatterlist *) schp->buffer;
-
-               for (k = 0; (k < schp->k_use_sg) && sg_scatg2virt(sclp);
-                    ++k, ++sclp) {
-                       num = (int) sclp->length;
-                       if (num > num_read_xfer) {
-                               if (__copy_to_user
-                                   (outp, sg_scatg2virt(sclp), num_read_xfer))
-                                       return -EFAULT;
+
+       for (k = 0; (k < schp->k_use_sg) && sg->page; ++k, ++sg) {
+               num = sg->length;
+               if (num > num_read_xfer) {
+                       if (__copy_to_user(outp, page_address(sg->page),
+                                          num_read_xfer))
+                               return -EFAULT;
+                       break;
+               } else {
+                       if (__copy_to_user(outp, page_address(sg->page),
+                                          num))
+                               return -EFAULT;
+                       num_read_xfer -= num;
+                       if (num_read_xfer <= 0)
                                break;
-                       } else {
-                               if (__copy_to_user
-                                   (outp, sg_scatg2virt(sclp), num))
-                                       return -EFAULT;
-                               num_read_xfer -= num;
-                               if (num_read_xfer <= 0)
-                                       break;
-                               outp += num;
-                       }
+                       outp += num;
                }
-       } else {
-               if (__copy_to_user(outp, schp->buffer, num_read_xfer))
-                       return -EFAULT;
        }
+
        return 0;
 }
 
@@ -2306,44 +2157,31 @@ sg_link_reserve(Sg_fd * sfp, Sg_request * srp, int size)
 {
        Sg_scatter_hold *req_schp = &srp->data;
        Sg_scatter_hold *rsv_schp = &sfp->reserve;
+       struct scatterlist *sg = rsv_schp->buffer;
+       int k, num, rem;
 
        srp->res_used = 1;
        SCSI_LOG_TIMEOUT(4, printk("sg_link_reserve: size=%d\n", size));
-       size = (size + 1) & (~1);       /* round to even for aha1542 */
-       if (rsv_schp->k_use_sg > 0) {
-               int k, num;
-               int rem = size;
-               struct scatterlist *sclp =
-                   (struct scatterlist *) rsv_schp->buffer;
-
-               for (k = 0; k < rsv_schp->k_use_sg; ++k, ++sclp) {
-                       num = (int) sclp->length;
-                       if (rem <= num) {
-                               if (0 == k) {
-                                       req_schp->k_use_sg = 0;
-                                       req_schp->buffer = sg_scatg2virt(sclp);
-                               } else {
-                                       sfp->save_scat_len = num;
-                                       sclp->length = (unsigned) rem;
-                                       req_schp->k_use_sg = k + 1;
-                                       req_schp->sglist_len =
-                                           rsv_schp->sglist_len;
-                                       req_schp->buffer = rsv_schp->buffer;
-                               }
-                               req_schp->bufflen = size;
-                               req_schp->b_malloc_len = rsv_schp->b_malloc_len;
-                               break;
-                       } else
-                               rem -= num;
-               }
-               if (k >= rsv_schp->k_use_sg)
-                       SCSI_LOG_TIMEOUT(1, printk("sg_link_reserve: BAD size\n"));
-       } else {
-               req_schp->k_use_sg = 0;
-               req_schp->bufflen = size;
-               req_schp->buffer = rsv_schp->buffer;
-               req_schp->b_malloc_len = rsv_schp->b_malloc_len;
+       rem = size = (size + 1) & (~1); /* round to even for aha1542 */
+
+       for (k = 0; k < rsv_schp->k_use_sg; ++k, ++sg) {
+               num = sg->length;
+               if (rem <= num) {
+                       sfp->save_scat_len = num;
+                       sg->length = rem;
+                       req_schp->k_use_sg = k + 1;
+                       req_schp->sglist_len = rsv_schp->sglist_len;
+                       req_schp->buffer = rsv_schp->buffer;
+
+                       req_schp->bufflen = size;
+                       req_schp->b_malloc_len = rsv_schp->b_malloc_len;
+                       break;
+               } else
+                       rem -= num;
        }
+
+       if (k >= rsv_schp->k_use_sg)
+               SCSI_LOG_TIMEOUT(1, printk("sg_link_reserve: BAD size\n"));
 }
 
 static void
@@ -2355,11 +2193,10 @@ sg_unlink_reserve(Sg_fd * sfp, Sg_request * srp)
        SCSI_LOG_TIMEOUT(4, printk("sg_unlink_reserve: req->k_use_sg=%d\n",
                                   (int) req_schp->k_use_sg));
        if ((rsv_schp->k_use_sg > 0) && (req_schp->k_use_sg > 0)) {
-               struct scatterlist *sclp =
-                   (struct scatterlist *) rsv_schp->buffer;
+               struct scatterlist *sg = rsv_schp->buffer;
 
                if (sfp->save_scat_len > 0)
-                       (sclp + (req_schp->k_use_sg - 1))->length =
+                       (sg + (req_schp->k_use_sg - 1))->length =
                            (unsigned) sfp->save_scat_len;
                else
                        SCSI_LOG_TIMEOUT(1, printk ("sg_unlink_reserve: BAD save_scat_len\n"));
@@ -2445,7 +2282,6 @@ sg_add_request(Sg_fd * sfp)
        if (resp) {
                resp->nextrp = NULL;
                resp->header.duration = jiffies_to_msecs(jiffies);
-               resp->my_cmdp = NULL;
        }
        write_unlock_irqrestore(&sfp->rq_list_lock, iflags);
        return resp;
@@ -2463,8 +2299,6 @@ sg_remove_request(Sg_fd * sfp, Sg_request * srp)
        if ((!sfp) || (!srp) || (!sfp->headrp))
                return res;
        write_lock_irqsave(&sfp->rq_list_lock, iflags);
-       if (srp->my_cmdp)
-               srp->my_cmdp->upper_private_data = NULL;
        prev_rp = sfp->headrp;
        if (srp == prev_rp) {
                sfp->headrp = prev_rp->nextrp;
@@ -2507,10 +2341,10 @@ sg_add_sfp(Sg_device * sdp, int dev)
        Sg_fd *sfp;
        unsigned long iflags;
 
-       sfp = (Sg_fd *) sg_page_malloc(sizeof (Sg_fd), 0, NULL);
+       sfp = kzalloc(sizeof(*sfp), GFP_ATOMIC | __GFP_NOWARN);
        if (!sfp)
                return NULL;
-       memset(sfp, 0, sizeof (Sg_fd));
+
        init_waitqueue_head(&sfp->read_wait);
        rwlock_init(&sfp->rq_list_lock);
 
@@ -2567,7 +2401,7 @@ __sg_remove_sfp(Sg_device * sdp, Sg_fd * sfp)
        }
        sfp->parentdp = NULL;
        SCSI_LOG_TIMEOUT(6, printk("__sg_remove_sfp:    sfp=0x%p\n", sfp));
-       sg_page_free((char *) sfp, sizeof (Sg_fd));
+       kfree(sfp);
 }
 
 /* Returns 0 in normal case, 1 when detached and sdp object removed */
@@ -2632,10 +2466,10 @@ sg_res_in_use(Sg_fd * sfp)
 }
 
 /* If retSzp==NULL want exact size or fail */
-static char *
+static struct page *
 sg_page_malloc(int rqSz, int lowDma, int *retSzp)
 {
-       char *resp = NULL;
+       struct page *resp = NULL;
        gfp_t page_mask;
        int order, a_size;
        int resSz = rqSz;
@@ -2650,11 +2484,11 @@ sg_page_malloc(int rqSz, int lowDma, int *retSzp)
 
        for (order = 0, a_size = PAGE_SIZE; a_size < rqSz;
             order++, a_size <<= 1) ;
-       resp = (char *) __get_free_pages(page_mask, order);
+       resp = alloc_pages(page_mask, order);
        while ((!resp) && order && retSzp) {
                --order;
                a_size >>= 1;   /* divide by 2, until PAGE_SIZE */
-               resp = (char *) __get_free_pages(page_mask, order);     /* try half */
+               resp =  alloc_pages(page_mask, order);  /* try half */
                resSz = a_size;
        }
        if (resp) {
@@ -2667,15 +2501,15 @@ sg_page_malloc(int rqSz, int lowDma, int *retSzp)
 }
 
 static void
-sg_page_free(char *buff, int size)
+sg_page_free(struct page *page, int size)
 {
        int order, a_size;
 
-       if (!buff)
+       if (!page)
                return;
        for (order = 0, a_size = PAGE_SIZE; a_size < size;
             order++, a_size <<= 1) ;
-       free_pages((unsigned long) buff, order);
+       __free_pages(page, order);
 }
 
 #ifndef MAINTENANCE_IN_CMD
@@ -3067,13 +2901,11 @@ static void sg_proc_debug_helper(struct seq_file *s, Sg_device * sdp)
                                        cp = "     ";
                        }
                        seq_printf(s, cp);
-                       blen = srp->my_cmdp ? 
-                               srp->my_cmdp->sr_bufflen : srp->data.bufflen;
-                       usg = srp->my_cmdp ? 
-                               srp->my_cmdp->sr_use_sg : srp->data.k_use_sg;
+                       blen = srp->data.bufflen;
+                       usg = srp->data.k_use_sg;
                        seq_printf(s, srp->done ? 
                                   ((1 == srp->done) ?  "rcv:" : "fin:")
-                                  : (srp->my_cmdp ? "act:" : "prior:"));
+                                  : "act:");
                        seq_printf(s, " id=%d blen=%d",
                                   srp->header.pack_id, blen);
                        if (srp->done)
index fb4012b5c1884b8117a0b2155dd634879352acd7..a4d9be7c6874b471db06fe4a02503db46eb246bb 100644 (file)
@@ -320,7 +320,7 @@ static int sr_init_command(struct scsi_cmnd * SCpnt)
         * these are already setup, just copy cdb basically
         */
        if (SCpnt->request->flags & REQ_BLOCK_PC) {
-               scsi_setup_blk_pc_cmnd(SCpnt, MAX_RETRIES);
+               scsi_setup_blk_pc_cmnd(SCpnt);
 
                if (SCpnt->timeout_per_command)
                        timeout = SCpnt->timeout_per_command;
@@ -716,7 +716,7 @@ static void get_capabilities(struct scsi_cd *cd)
        unsigned int the_result;
        int retries, rc, n;
 
-       static char *loadmech[] =
+       static const char *loadmech[] =
        {
                "caddy",
                "tray",
index 78274dc91f5c74c0320702735856d90b4390968c..9dde8df2f5c9feccf5d3ae98daad805b37bcecd3 100644 (file)
@@ -68,8 +68,8 @@ void sr_vendor_init(Scsi_CD *cd)
 #ifndef CONFIG_BLK_DEV_SR_VENDOR
        cd->vendor = VENDOR_SCSI3;
 #else
-       char *vendor = cd->device->vendor;
-       char *model = cd->device->model;
+       const char *vendor = cd->device->vendor;
+       const char *model = cd->device->model;
        
        /* default */
        cd->vendor = VENDOR_SCSI3;
index dd592f6a252962cb42f00f09ef5342651985f294..c4aade8f5345a34f949434df43f20fa847b139d1 100644 (file)
@@ -17,7 +17,7 @@
    Last modified: 18-JAN-1998 Richard Gooch <rgooch@atnf.csiro.au> Devfs support
  */
 
-static char *verstr = "20050830";
+static const char *verstr = "20050830";
 
 #include <linux/module.h>
 
@@ -50,7 +50,6 @@ static char *verstr = "20050830";
 #include <scsi/scsi_eh.h>
 #include <scsi/scsi_host.h>
 #include <scsi/scsi_ioctl.h>
-#include <scsi/scsi_request.h>
 #include <scsi/sg.h>
 
 
@@ -134,7 +133,7 @@ static struct st_dev_parm {
 #endif
 /* Bit reversed order to get same names for same minors with all
    mode counts */
-static char *st_formats[] = {
+static const char *st_formats[] = {
        "",  "r", "k", "s", "l", "t", "o", "u",
        "m", "v", "p", "x", "a", "y", "q", "z"}; 
 
@@ -188,8 +187,6 @@ static int from_buffer(struct st_buffer *, char __user *, int);
 static void move_buffer_data(struct st_buffer *, int);
 static void buf_to_sg(struct st_buffer *, unsigned int);
 
-static int st_map_user_pages(struct scatterlist *, const unsigned int, 
-                            unsigned long, size_t, int, unsigned long);
 static int sgl_map_user_pages(struct scatterlist *, const unsigned int, 
                              unsigned long, size_t, int);
 static int sgl_unmap_user_pages(struct scatterlist *, const unsigned int, int);
@@ -313,12 +310,13 @@ static inline char *tape_name(struct scsi_tape *tape)
 }
 
 
-static void st_analyze_sense(struct scsi_request *SRpnt, struct st_cmdstatus *s)
+static void st_analyze_sense(struct st_request *SRpnt, struct st_cmdstatus *s)
 {
        const u8 *ucp;
-       const u8 *sense = SRpnt->sr_sense_buffer;
+       const u8 *sense = SRpnt->sense;
 
-       s->have_sense = scsi_request_normalize_sense(SRpnt, &s->sense_hdr);
+       s->have_sense = scsi_normalize_sense(SRpnt->sense,
+                               SCSI_SENSE_BUFFERSIZE, &s->sense_hdr);
        s->flags = 0;
 
        if (s->have_sense) {
@@ -345,9 +343,9 @@ static void st_analyze_sense(struct scsi_request *SRpnt, struct st_cmdstatus *s)
 
 
 /* Convert the result to success code */
-static int st_chk_result(struct scsi_tape *STp, struct scsi_request * SRpnt)
+static int st_chk_result(struct scsi_tape *STp, struct st_request * SRpnt)
 {
-       int result = SRpnt->sr_result;
+       int result = SRpnt->result;
        u8 scode;
        DEB(const char *stp;)
        char *name = tape_name(STp);
@@ -366,13 +364,12 @@ static int st_chk_result(struct scsi_tape *STp, struct scsi_request * SRpnt)
 
         DEB(
         if (debugging) {
-                printk(ST_DEB_MSG "%s: Error: %x, cmd: %x %x %x %x %x %x Len: %d\n",
+                printk(ST_DEB_MSG "%s: Error: %x, cmd: %x %x %x %x %x %x\n",
                       name, result,
-                      SRpnt->sr_cmnd[0], SRpnt->sr_cmnd[1], SRpnt->sr_cmnd[2],
-                      SRpnt->sr_cmnd[3], SRpnt->sr_cmnd[4], SRpnt->sr_cmnd[5],
-                      SRpnt->sr_bufflen);
+                      SRpnt->cmd[0], SRpnt->cmd[1], SRpnt->cmd[2],
+                      SRpnt->cmd[3], SRpnt->cmd[4], SRpnt->cmd[5]);
                if (cmdstatp->have_sense)
-                       scsi_print_req_sense("st", SRpnt);
+                        __scsi_print_sense("st", SRpnt->sense, SCSI_SENSE_BUFFERSIZE);
        } ) /* end DEB */
        if (!debugging) { /* Abnormal conditions for tape */
                if (!cmdstatp->have_sense)
@@ -386,20 +383,21 @@ static int st_chk_result(struct scsi_tape *STp, struct scsi_request * SRpnt)
                         /* scode != UNIT_ATTENTION && */
                         scode != BLANK_CHECK &&
                         scode != VOLUME_OVERFLOW &&
-                        SRpnt->sr_cmnd[0] != MODE_SENSE &&
-                        SRpnt->sr_cmnd[0] != TEST_UNIT_READY) {
+                        SRpnt->cmd[0] != MODE_SENSE &&
+                        SRpnt->cmd[0] != TEST_UNIT_READY) {
                                printk(KERN_WARNING "%s: Error with sense data: ", name);
-                               scsi_print_req_sense("st", SRpnt);
+                               __scsi_print_sense("st", SRpnt->sense,
+                                                  SCSI_SENSE_BUFFERSIZE);
                }
        }
 
        if (cmdstatp->fixed_format &&
            STp->cln_mode >= EXTENDED_SENSE_START) {  /* Only fixed format sense */
                if (STp->cln_sense_value)
-                       STp->cleaning_req |= ((SRpnt->sr_sense_buffer[STp->cln_mode] &
+                       STp->cleaning_req |= ((SRpnt->sense[STp->cln_mode] &
                                               STp->cln_sense_mask) == STp->cln_sense_value);
                else
-                       STp->cleaning_req |= ((SRpnt->sr_sense_buffer[STp->cln_mode] &
+                       STp->cleaning_req |= ((SRpnt->sense[STp->cln_mode] &
                                               STp->cln_sense_mask) != 0);
        }
        if (cmdstatp->have_sense &&
@@ -411,8 +409,8 @@ static int st_chk_result(struct scsi_tape *STp, struct scsi_request * SRpnt)
        if (cmdstatp->have_sense &&
            scode == RECOVERED_ERROR
 #if ST_RECOVERED_WRITE_FATAL
-           && SRpnt->sr_cmnd[0] != WRITE_6
-           && SRpnt->sr_cmnd[0] != WRITE_FILEMARKS
+           && SRpnt->cmd[0] != WRITE_6
+           && SRpnt->cmd[0] != WRITE_FILEMARKS
 #endif
            ) {
                STp->recover_count++;
@@ -420,9 +418,9 @@ static int st_chk_result(struct scsi_tape *STp, struct scsi_request * SRpnt)
 
                 DEB(
                if (debugging) {
-                       if (SRpnt->sr_cmnd[0] == READ_6)
+                       if (SRpnt->cmd[0] == READ_6)
                                stp = "read";
-                       else if (SRpnt->sr_cmnd[0] == WRITE_6)
+                       else if (SRpnt->cmd[0] == WRITE_6)
                                stp = "write";
                        else
                                stp = "ioctl";
@@ -438,28 +436,37 @@ static int st_chk_result(struct scsi_tape *STp, struct scsi_request * SRpnt)
 
 
 /* Wakeup from interrupt */
-static void st_sleep_done(struct scsi_cmnd * SCpnt)
+static void st_sleep_done(void *data, char *sense, int result, int resid)
 {
-       struct scsi_tape *STp = container_of(SCpnt->request->rq_disk->private_data,
-                                            struct scsi_tape, driver);
+       struct st_request *SRpnt = data;
+       struct scsi_tape *STp = SRpnt->stp;
 
-       (STp->buffer)->cmdstat.midlevel_result = SCpnt->result;
-       SCpnt->request->rq_status = RQ_SCSI_DONE;
+       memcpy(SRpnt->sense, sense, SCSI_SENSE_BUFFERSIZE);
+       (STp->buffer)->cmdstat.midlevel_result = SRpnt->result = result;
        DEB( STp->write_pending = 0; )
 
-       if (SCpnt->request->waiting)
-               complete(SCpnt->request->waiting);
+       if (SRpnt->waiting)
+               complete(SRpnt->waiting);
+}
+
+static struct st_request *st_allocate_request(void)
+{
+       return kzalloc(sizeof(struct st_request), GFP_KERNEL);
+}
+
+static void st_release_request(struct st_request *streq)
+{
+       kfree(streq);
 }
 
 /* Do the scsi command. Waits until command performed if do_wait is true.
    Otherwise write_behind_check() is used to check that the command
    has finished. */
-static struct scsi_request *
-st_do_scsi(struct scsi_request * SRpnt, struct scsi_tape * STp, unsigned char *cmd,
+static struct st_request *
+st_do_scsi(struct st_request * SRpnt, struct scsi_tape * STp, unsigned char *cmd,
           int bytes, int direction, int timeout, int retries, int do_wait)
 {
        struct completion *waiting;
-       unsigned char *bp;
 
        /* if async, make sure there's no command outstanding */
        if (!do_wait && ((STp->buffer)->last_SRpnt)) {
@@ -473,7 +480,7 @@ st_do_scsi(struct scsi_request * SRpnt, struct scsi_tape * STp, unsigned char *c
        }
 
        if (SRpnt == NULL) {
-               SRpnt = scsi_allocate_request(STp->device, GFP_ATOMIC);
+               SRpnt = st_allocate_request();
                if (SRpnt == NULL) {
                        DEBC( printk(KERN_ERR "%s: Can't get SCSI request.\n",
                                     tape_name(STp)); );
@@ -483,6 +490,7 @@ st_do_scsi(struct scsi_request * SRpnt, struct scsi_tape * STp, unsigned char *c
                                (STp->buffer)->syscall_result = (-EBUSY);
                        return NULL;
                }
+               SRpnt->stp = STp;
        }
 
        /* If async IO, set last_SRpnt. This ptr tells write_behind_check
@@ -492,32 +500,28 @@ st_do_scsi(struct scsi_request * SRpnt, struct scsi_tape * STp, unsigned char *c
 
        waiting = &STp->wait;
        init_completion(waiting);
-       SRpnt->sr_use_sg = STp->buffer->do_dio || (bytes > (STp->buffer)->frp[0].length);
-       if (SRpnt->sr_use_sg) {
-               if (!STp->buffer->do_dio)
-                       buf_to_sg(STp->buffer, bytes);
-               SRpnt->sr_use_sg = (STp->buffer)->sg_segs;
-               bp = (char *) &((STp->buffer)->sg[0]);
-       } else
-               bp = (STp->buffer)->b_data;
-       SRpnt->sr_data_direction = direction;
-       SRpnt->sr_cmd_len = 0;
-       SRpnt->sr_request->waiting = waiting;
-       SRpnt->sr_request->rq_status = RQ_SCSI_BUSY;
-       SRpnt->sr_request->rq_disk = STp->disk;
-       SRpnt->sr_request->end_io = blk_end_sync_rq;
-       STp->buffer->cmdstat.have_sense = 0;
+       SRpnt->waiting = waiting;
 
-       scsi_do_req(SRpnt, (void *) cmd, bp, bytes,
-                   st_sleep_done, timeout, retries);
+       if (!STp->buffer->do_dio)
+               buf_to_sg(STp->buffer, bytes);
 
-       if (do_wait) {
+       memcpy(SRpnt->cmd, cmd, sizeof(SRpnt->cmd));
+       STp->buffer->cmdstat.have_sense = 0;
+       STp->buffer->syscall_result = 0;
+
+       if (scsi_execute_async(STp->device, cmd, direction,
+                       &((STp->buffer)->sg[0]), bytes, (STp->buffer)->sg_segs,
+                              timeout, retries, SRpnt, st_sleep_done, GFP_KERNEL)) {
+               /* could not allocate the buffer or request was too large */
+               (STp->buffer)->syscall_result = (-EBUSY);
+               (STp->buffer)->last_SRpnt = NULL;
+       }
+       else if (do_wait) {
                wait_for_completion(waiting);
-               SRpnt->sr_request->waiting = NULL;
-               if (SRpnt->sr_request->rq_status != RQ_SCSI_DONE)
-                       SRpnt->sr_result |= (DRIVER_ERROR << 24);
+               SRpnt->waiting = NULL;
                (STp->buffer)->syscall_result = st_chk_result(STp, SRpnt);
        }
+
        return SRpnt;
 }
 
@@ -532,7 +536,7 @@ static int write_behind_check(struct scsi_tape * STp)
        struct st_buffer *STbuffer;
        struct st_partstat *STps;
        struct st_cmdstatus *cmdstatp;
-       struct scsi_request *SRpnt;
+       struct st_request *SRpnt;
 
        STbuffer = STp->buffer;
        if (!STbuffer->writing)
@@ -548,12 +552,10 @@ static int write_behind_check(struct scsi_tape * STp)
        wait_for_completion(&(STp->wait));
        SRpnt = STbuffer->last_SRpnt;
        STbuffer->last_SRpnt = NULL;
-       SRpnt->sr_request->waiting = NULL;
-       if (SRpnt->sr_request->rq_status != RQ_SCSI_DONE)
-               SRpnt->sr_result |= (DRIVER_ERROR << 24);
+       SRpnt->waiting = NULL;
 
        (STp->buffer)->syscall_result = st_chk_result(STp, SRpnt);
-       scsi_release_request(SRpnt);
+       st_release_request(SRpnt);
 
        STbuffer->buffer_bytes -= STbuffer->writing;
        STps = &(STp->ps[STp->partition]);
@@ -593,7 +595,7 @@ static int write_behind_check(struct scsi_tape * STp)
    it messes up the block number). */
 static int cross_eof(struct scsi_tape * STp, int forward)
 {
-       struct scsi_request *SRpnt;
+       struct st_request *SRpnt;
        unsigned char cmd[MAX_COMMAND_SIZE];
 
        cmd[0] = SPACE;
@@ -613,7 +615,7 @@ static int cross_eof(struct scsi_tape * STp, int forward)
        if (!SRpnt)
                return (STp->buffer)->syscall_result;
 
-       scsi_release_request(SRpnt);
+       st_release_request(SRpnt);
        SRpnt = NULL;
 
        if ((STp->buffer)->cmdstat.midlevel_result != 0)
@@ -630,7 +632,7 @@ static int flush_write_buffer(struct scsi_tape * STp)
        int offset, transfer, blks;
        int result;
        unsigned char cmd[MAX_COMMAND_SIZE];
-       struct scsi_request *SRpnt;
+       struct st_request *SRpnt;
        struct st_partstat *STps;
 
        result = write_behind_check(STp);
@@ -688,7 +690,7 @@ static int flush_write_buffer(struct scsi_tape * STp)
                        STp->dirty = 0;
                        (STp->buffer)->buffer_bytes = 0;
                }
-               scsi_release_request(SRpnt);
+               st_release_request(SRpnt);
                SRpnt = NULL;
        }
        return result;
@@ -785,7 +787,7 @@ static int set_mode_densblk(struct scsi_tape * STp, struct st_modedef * STm)
 }
 
 
-/* Lock or unlock the drive door. Don't use when scsi_request allocated. */
+/* Lock or unlock the drive door. Don't use when st_request allocated. */
 static int do_door_lock(struct scsi_tape * STp, int do_lock)
 {
        int retval, cmd;
@@ -844,7 +846,7 @@ static int test_ready(struct scsi_tape *STp, int do_wait)
        int attentions, waits, max_wait, scode;
        int retval = CHKRES_READY, new_session = 0;
        unsigned char cmd[MAX_COMMAND_SIZE];
-       struct scsi_request *SRpnt = NULL;
+       struct st_request *SRpnt = NULL;
        struct st_cmdstatus *cmdstatp = &STp->buffer->cmdstat;
 
        max_wait = do_wait ? ST_BLOCK_SECONDS : 0;
@@ -903,7 +905,7 @@ static int test_ready(struct scsi_tape *STp, int do_wait)
        }
 
        if (SRpnt != NULL)
-               scsi_release_request(SRpnt);
+               st_release_request(SRpnt);
        return retval;
 }
 
@@ -918,7 +920,7 @@ static int check_tape(struct scsi_tape *STp, struct file *filp)
        int i, retval, new_session = 0, do_wait;
        unsigned char cmd[MAX_COMMAND_SIZE], saved_cleaning;
        unsigned short st_flags = filp->f_flags;
-       struct scsi_request *SRpnt = NULL;
+       struct st_request *SRpnt = NULL;
        struct st_modedef *STm;
        struct st_partstat *STps;
        char *name = tape_name(STp);
@@ -993,7 +995,7 @@ static int check_tape(struct scsi_tape *STp, struct file *filp)
                        goto err_out;
                }
 
-               if (!SRpnt->sr_result && !STp->buffer->cmdstat.have_sense) {
+               if (!SRpnt->result && !STp->buffer->cmdstat.have_sense) {
                        STp->max_block = ((STp->buffer)->b_data[1] << 16) |
                            ((STp->buffer)->b_data[2] << 8) | (STp->buffer)->b_data[3];
                        STp->min_block = ((STp->buffer)->b_data[4] << 8) |
@@ -1045,7 +1047,7 @@ static int check_tape(struct scsi_tape *STp, struct file *filp)
                }
                STp->drv_write_prot = ((STp->buffer)->b_data[2] & 0x80) != 0;
        }
-       scsi_release_request(SRpnt);
+       st_release_request(SRpnt);
        SRpnt = NULL;
         STp->inited = 1;
 
@@ -1196,7 +1198,7 @@ static int st_flush(struct file *filp)
 {
        int result = 0, result2;
        unsigned char cmd[MAX_COMMAND_SIZE];
-       struct scsi_request *SRpnt;
+       struct st_request *SRpnt;
        struct scsi_tape *STp = filp->private_data;
        struct st_modedef *STm = &(STp->modes[STp->current_mode]);
        struct st_partstat *STps = &(STp->ps[STp->partition]);
@@ -1249,7 +1251,7 @@ static int st_flush(struct file *filp)
                      cmdstatp->sense_hdr.sense_key == RECOVERED_ERROR) &&
                     (!cmdstatp->remainder_valid || cmdstatp->uremainder64 == 0))) {
                        /* Write successful at EOM */
-                       scsi_release_request(SRpnt);
+                       st_release_request(SRpnt);
                        SRpnt = NULL;
                        if (STps->drv_file >= 0)
                                STps->drv_file++;
@@ -1259,7 +1261,7 @@ static int st_flush(struct file *filp)
                        STps->eof = ST_FM;
                }
                else { /* Write error */
-                       scsi_release_request(SRpnt);
+                       st_release_request(SRpnt);
                        SRpnt = NULL;
                        printk(KERN_ERR "%s: Error on write filemark.\n", name);
                        if (result == 0)
@@ -1400,11 +1402,11 @@ static int setup_buffering(struct scsi_tape *STp, const char __user *buf,
                i = STp->try_dio && try_rdio;
        else
                i = STp->try_dio && try_wdio;
+
        if (i && ((unsigned long)buf & queue_dma_alignment(
                                        STp->device->request_queue)) == 0) {
-               i = st_map_user_pages(&(STbp->sg[0]), STbp->use_sg,
-                                     (unsigned long)buf, count, (is_read ? READ : WRITE),
-                                     STp->max_pfn);
+               i = sgl_map_user_pages(&(STbp->sg[0]), STbp->use_sg,
+                                     (unsigned long)buf, count, (is_read ? READ : WRITE));
                if (i > 0) {
                        STbp->do_dio = i;
                        STbp->buffer_bytes = 0;   /* can be used as transfer counter */
@@ -1449,14 +1451,15 @@ static int setup_buffering(struct scsi_tape *STp, const char __user *buf,
 
 
 /* Can be called more than once after each setup_buffer() */
-static void release_buffering(struct scsi_tape *STp)
+static void release_buffering(struct scsi_tape *STp, int is_read)
 {
        struct st_buffer *STbp;
 
        STbp = STp->buffer;
        if (STbp->do_dio) {
-               sgl_unmap_user_pages(&(STbp->sg[0]), STbp->do_dio, 0);
+               sgl_unmap_user_pages(&(STbp->sg[0]), STbp->do_dio, is_read);
                STbp->do_dio = 0;
+               STbp->sg_segs = 0;
        }
 }
 
@@ -1472,7 +1475,7 @@ st_write(struct file *filp, const char __user *buf, size_t count, loff_t * ppos)
        int async_write;
        unsigned char cmd[MAX_COMMAND_SIZE];
        const char __user *b_point;
-       struct scsi_request *SRpnt = NULL;
+       struct st_request *SRpnt = NULL;
        struct scsi_tape *STp = filp->private_data;
        struct st_modedef *STm;
        struct st_partstat *STps;
@@ -1624,7 +1627,7 @@ st_write(struct file *filp, const char __user *buf, size_t count, loff_t * ppos)
                        retval = STbp->syscall_result;
                        goto out;
                }
-               if (async_write) {
+               if (async_write && !STbp->syscall_result) {
                        STbp->writing = transfer;
                        STp->dirty = !(STbp->writing ==
                                       STbp->buffer_bytes);
@@ -1698,7 +1701,7 @@ st_write(struct file *filp, const char __user *buf, size_t count, loff_t * ppos)
                        } else {
                                count += do_count;
                                STps->drv_block = (-1);         /* Too cautious? */
-                               retval = (-EIO);
+                               retval = STbp->syscall_result;
                        }
 
                }
@@ -1728,8 +1731,8 @@ st_write(struct file *filp, const char __user *buf, size_t count, loff_t * ppos)
 
  out:
        if (SRpnt != NULL)
-               scsi_release_request(SRpnt);
-       release_buffering(STp);
+               st_release_request(SRpnt);
+       release_buffering(STp, 0);
        up(&STp->lock);
 
        return retval;
@@ -1742,11 +1745,11 @@ st_write(struct file *filp, const char __user *buf, size_t count, loff_t * ppos)
    Does release user buffer mapping if it is set.
 */
 static long read_tape(struct scsi_tape *STp, long count,
-                     struct scsi_request ** aSRpnt)
+                     struct st_request ** aSRpnt)
 {
        int transfer, blks, bytes;
        unsigned char cmd[MAX_COMMAND_SIZE];
-       struct scsi_request *SRpnt;
+       struct st_request *SRpnt;
        struct st_modedef *STm;
        struct st_partstat *STps;
        struct st_buffer *STbp;
@@ -1787,7 +1790,7 @@ static long read_tape(struct scsi_tape *STp, long count,
        SRpnt = *aSRpnt;
        SRpnt = st_do_scsi(SRpnt, STp, cmd, bytes, DMA_FROM_DEVICE,
                           STp->device->timeout, MAX_RETRIES, 1);
-       release_buffering(STp);
+       release_buffering(STp, 1);
        *aSRpnt = SRpnt;
        if (!SRpnt)
                return STbp->syscall_result;
@@ -1802,10 +1805,10 @@ static long read_tape(struct scsi_tape *STp, long count,
                retval = 1;
                DEBC(printk(ST_DEB_MSG "%s: Sense: %2x %2x %2x %2x %2x %2x %2x %2x\n",
                             name,
-                            SRpnt->sr_sense_buffer[0], SRpnt->sr_sense_buffer[1],
-                            SRpnt->sr_sense_buffer[2], SRpnt->sr_sense_buffer[3],
-                            SRpnt->sr_sense_buffer[4], SRpnt->sr_sense_buffer[5],
-                            SRpnt->sr_sense_buffer[6], SRpnt->sr_sense_buffer[7]));
+                            SRpnt->sense[0], SRpnt->sense[1],
+                            SRpnt->sense[2], SRpnt->sense[3],
+                            SRpnt->sense[4], SRpnt->sense[5],
+                            SRpnt->sense[6], SRpnt->sense[7]));
                if (cmdstatp->have_sense) {
 
                        if (cmdstatp->sense_hdr.sense_key == BLANK_CHECK)
@@ -1835,7 +1838,7 @@ static long read_tape(struct scsi_tape *STp, long count,
                                                }
                                                STbp->buffer_bytes = bytes - transfer;
                                        } else {
-                                               scsi_release_request(SRpnt);
+                                               st_release_request(SRpnt);
                                                SRpnt = *aSRpnt = NULL;
                                                if (transfer == blks) { /* We did not get anything, error */
                                                        printk(KERN_NOTICE "%s: Incorrect block size.\n", name);
@@ -1929,7 +1932,7 @@ st_read(struct file *filp, char __user *buf, size_t count, loff_t * ppos)
        ssize_t retval = 0;
        ssize_t i, transfer;
        int special, do_dio = 0;
-       struct scsi_request *SRpnt = NULL;
+       struct st_request *SRpnt = NULL;
        struct scsi_tape *STp = filp->private_data;
        struct st_modedef *STm;
        struct st_partstat *STps;
@@ -2054,11 +2057,11 @@ st_read(struct file *filp, char __user *buf, size_t count, loff_t * ppos)
 
  out:
        if (SRpnt != NULL) {
-               scsi_release_request(SRpnt);
+               st_release_request(SRpnt);
                SRpnt = NULL;
        }
        if (do_dio) {
-               release_buffering(STp);
+               release_buffering(STp, 1);
                STbp->buffer_bytes = 0;
        }
        up(&STp->lock);
@@ -2284,7 +2287,7 @@ static int st_set_options(struct scsi_tape *STp, long options)
 static int read_mode_page(struct scsi_tape *STp, int page, int omit_block_descs)
 {
        unsigned char cmd[MAX_COMMAND_SIZE];
-       struct scsi_request *SRpnt = NULL;
+       struct st_request *SRpnt = NULL;
 
        memset(cmd, 0, MAX_COMMAND_SIZE);
        cmd[0] = MODE_SENSE;
@@ -2298,7 +2301,7 @@ static int read_mode_page(struct scsi_tape *STp, int page, int omit_block_descs)
        if (SRpnt == NULL)
                return (STp->buffer)->syscall_result;
 
-       scsi_release_request(SRpnt);
+       st_release_request(SRpnt);
 
        return (STp->buffer)->syscall_result;
 }
@@ -2310,7 +2313,7 @@ static int write_mode_page(struct scsi_tape *STp, int page, int slow)
 {
        int pgo;
        unsigned char cmd[MAX_COMMAND_SIZE];
-       struct scsi_request *SRpnt = NULL;
+       struct st_request *SRpnt = NULL;
 
        memset(cmd, 0, MAX_COMMAND_SIZE);
        cmd[0] = MODE_SELECT;
@@ -2329,7 +2332,7 @@ static int write_mode_page(struct scsi_tape *STp, int page, int slow)
        if (SRpnt == NULL)
                return (STp->buffer)->syscall_result;
 
-       scsi_release_request(SRpnt);
+       st_release_request(SRpnt);
 
        return (STp->buffer)->syscall_result;
 }
@@ -2412,7 +2415,7 @@ static int do_load_unload(struct scsi_tape *STp, struct file *filp, int load_cod
        DEB( char *name = tape_name(STp); )
        unsigned char cmd[MAX_COMMAND_SIZE];
        struct st_partstat *STps;
-       struct scsi_request *SRpnt;
+       struct st_request *SRpnt;
 
        if (STp->ready != ST_READY && !load_code) {
                if (STp->ready == ST_NO_TAPE)
@@ -2455,7 +2458,7 @@ static int do_load_unload(struct scsi_tape *STp, struct file *filp, int load_cod
                return (STp->buffer)->syscall_result;
 
        retval = (STp->buffer)->syscall_result;
-       scsi_release_request(SRpnt);
+       st_release_request(SRpnt);
 
        if (!retval) {  /* SCSI command successful */
 
@@ -2503,7 +2506,7 @@ static int st_int_ioctl(struct scsi_tape *STp, unsigned int cmd_in, unsigned lon
        int ioctl_result;
        int chg_eof = 1;
        unsigned char cmd[MAX_COMMAND_SIZE];
-       struct scsi_request *SRpnt;
+       struct st_request *SRpnt;
        struct st_partstat *STps;
        int fileno, blkno, at_sm, undone;
        int datalen = 0, direction = DMA_NONE;
@@ -2757,7 +2760,7 @@ static int st_int_ioctl(struct scsi_tape *STp, unsigned int cmd_in, unsigned lon
        ioctl_result = (STp->buffer)->syscall_result;
 
        if (!ioctl_result) {    /* SCSI command successful */
-               scsi_release_request(SRpnt);
+               st_release_request(SRpnt);
                SRpnt = NULL;
                STps->drv_block = blkno;
                STps->drv_file = fileno;
@@ -2872,7 +2875,7 @@ static int st_int_ioctl(struct scsi_tape *STp, unsigned int cmd_in, unsigned lon
                                /* Try the other possible state of Page Format if not
                                   already tried */
                                STp->use_pf = !STp->use_pf | PF_TESTED;
-                               scsi_release_request(SRpnt);
+                               st_release_request(SRpnt);
                                SRpnt = NULL;
                                return st_int_ioctl(STp, cmd_in, arg);
                        }
@@ -2882,7 +2885,7 @@ static int st_int_ioctl(struct scsi_tape *STp, unsigned int cmd_in, unsigned lon
                if (cmdstatp->sense_hdr.sense_key == BLANK_CHECK)
                        STps->eof = ST_EOD;
 
-               scsi_release_request(SRpnt);
+               st_release_request(SRpnt);
                SRpnt = NULL;
        }
 
@@ -2898,7 +2901,7 @@ static int get_location(struct scsi_tape *STp, unsigned int *block, int *partiti
 {
        int result;
        unsigned char scmd[MAX_COMMAND_SIZE];
-       struct scsi_request *SRpnt;
+       struct st_request *SRpnt;
        DEB( char *name = tape_name(STp); )
 
        if (STp->ready != ST_READY)
@@ -2944,7 +2947,7 @@ static int get_location(struct scsi_tape *STp, unsigned int *block, int *partiti
                 DEBC(printk(ST_DEB_MSG "%s: Got tape pos. blk %d part %d.\n", name,
                             *block, *partition));
        }
-       scsi_release_request(SRpnt);
+       st_release_request(SRpnt);
        SRpnt = NULL;
 
        return result;
@@ -2961,7 +2964,7 @@ static int set_location(struct scsi_tape *STp, unsigned int block, int partition
        unsigned int blk;
        int timeout;
        unsigned char scmd[MAX_COMMAND_SIZE];
-       struct scsi_request *SRpnt;
+       struct st_request *SRpnt;
        DEB( char *name = tape_name(STp); )
 
        if (STp->ready != ST_READY)
@@ -3047,7 +3050,7 @@ static int set_location(struct scsi_tape *STp, unsigned int block, int partition
                result = 0;
        }
 
-       scsi_release_request(SRpnt);
+       st_release_request(SRpnt);
        SRpnt = NULL;
 
        return result;
@@ -3577,7 +3580,7 @@ static long st_compat_ioctl(struct file *file, unsigned int cmd, unsigned long a
 static struct st_buffer *
  new_tape_buffer(int from_initialization, int need_dma, int max_sg)
 {
-       int i, got = 0, segs = 0;
+       int i, got = 0;
        gfp_t priority;
        struct st_buffer *tb;
 
@@ -3594,10 +3597,8 @@ static struct st_buffer *
                return NULL;
        }
        memset(tb, 0, i);
-       tb->frp_segs = tb->orig_frp_segs = segs;
+       tb->frp_segs = tb->orig_frp_segs = 0;
        tb->use_sg = max_sg;
-       if (segs > 0)
-               tb->b_data = page_address(tb->sg[0].page);
        tb->frp = (struct st_buf_fragment *)(&(tb->sg[0]) + max_sg);
 
        tb->in_use = 1;
@@ -3628,7 +3629,7 @@ static int enlarge_buffer(struct st_buffer * STbuffer, int new_size, int need_dm
        priority = GFP_KERNEL | __GFP_NOWARN;
        if (need_dma)
                priority |= GFP_DMA;
-       for (b_size = PAGE_SIZE, order=0;
+       for (b_size = PAGE_SIZE, order=0; order <= 6 &&
             b_size < new_size - STbuffer->buffer_size;
             order++, b_size *= 2)
                ;  /* empty */
@@ -3670,6 +3671,7 @@ static void normalize_buffer(struct st_buffer * STbuffer)
        }
        STbuffer->frp_segs = STbuffer->orig_frp_segs;
        STbuffer->frp_sg_current = 0;
+       STbuffer->sg_segs = 0;
 }
 
 
@@ -3882,7 +3884,6 @@ static int st_probe(struct device *dev)
        struct st_buffer *buffer;
        int i, j, mode, dev_num, error;
        char *stp;
-       u64 bounce_limit;
 
        if (SDp->type != TYPE_TAPE)
                return -ENODEV;
@@ -3892,7 +3893,8 @@ static int st_probe(struct device *dev)
                return -ENODEV;
        }
 
-       i = SDp->host->sg_tablesize;
+       i = min(SDp->request_queue->max_hw_segments,
+               SDp->request_queue->max_phys_segments);
        if (st_max_sg_segs < i)
                i = st_max_sg_segs;
        buffer = new_tape_buffer(1, (SDp->host)->unchecked_isa_dma, i);
@@ -3994,11 +3996,6 @@ static int st_probe(struct device *dev)
        tpnt->long_timeout = ST_LONG_TIMEOUT;
        tpnt->try_dio = try_direct_io && !SDp->host->unchecked_isa_dma;
 
-       bounce_limit = scsi_calculate_bounce_limit(SDp->host) >> PAGE_SHIFT;
-       if (bounce_limit > ULONG_MAX)
-               bounce_limit = ULONG_MAX;
-       tpnt->max_pfn = bounce_limit;
-
        for (i = 0; i < ST_NBR_MODES; i++) {
                STm = &(tpnt->modes[i]);
                STm->defined = 0;
@@ -4077,9 +4074,9 @@ static int st_probe(struct device *dev)
 
        sdev_printk(KERN_WARNING, SDp,
                    "Attached scsi tape %s", tape_name(tpnt));
-       printk(KERN_WARNING "%s: try direct i/o: %s (alignment %d B), max page reachable by HBA %lu\n",
+       printk(KERN_WARNING "%s: try direct i/o: %s (alignment %d B)\n",
               tape_name(tpnt), tpnt->try_dio ? "yes" : "no",
-              queue_dma_alignment(SDp->request_queue) + 1, tpnt->max_pfn);
+              queue_dma_alignment(SDp->request_queue) + 1);
 
        return 0;
 
@@ -4185,7 +4182,11 @@ static void scsi_tape_release(struct kref *kref)
 
 static void st_intr(struct scsi_cmnd *SCpnt)
 {
-       scsi_io_completion(SCpnt, (SCpnt->result ? 0: SCpnt->bufflen), 1);
+       /*
+        * The caller should be checking the request's errors
+        * value.
+        */
+       scsi_io_completion(SCpnt, SCpnt->bufflen, 0);
 }
 
 /*
@@ -4197,7 +4198,7 @@ static int st_init_command(struct scsi_cmnd *SCpnt)
        if (!(SCpnt->request->flags & REQ_BLOCK_PC))
                return 0;
 
-       scsi_setup_blk_pc_cmnd(SCpnt, 0);
+       scsi_setup_blk_pc_cmnd(SCpnt);
        SCpnt->done = st_intr;
        return 1;
 }
@@ -4390,34 +4391,6 @@ static void do_create_class_files(struct scsi_tape *STp, int dev_num, int mode)
        return;
 }
 
-
-/* Pin down user pages and put them into a scatter gather list. Returns <= 0 if
-   - mapping of all pages not successful
-   - any page is above max_pfn
-   (i.e., either completely successful or fails)
-*/
-static int st_map_user_pages(struct scatterlist *sgl, const unsigned int max_pages, 
-                            unsigned long uaddr, size_t count, int rw,
-                            unsigned long max_pfn)
-{
-       int i, nr_pages;
-
-       nr_pages = sgl_map_user_pages(sgl, max_pages, uaddr, count, rw);
-       if (nr_pages <= 0)
-               return nr_pages;
-
-       for (i=0; i < nr_pages; i++) {
-               if (page_to_pfn(sgl[i].page) > max_pfn)
-                       goto out_unmap;
-       }
-       return nr_pages;
-
- out_unmap:
-       sgl_unmap_user_pages(sgl, nr_pages, 0);
-       return 0;
-}
-
-
 /* The following functions may be useful for a larger audience. */
 static int sgl_map_user_pages(struct scatterlist *sgl, const unsigned int max_pages, 
                              unsigned long uaddr, size_t count, int rw)
index 790acac160bcb33b8bfb2426b2e147f09814563e..411209048d74ba7ccadcf3da0bf0df3de81e48e6 100644 (file)
@@ -4,6 +4,7 @@
 
 #include <linux/completion.h>
 #include <linux/kref.h>
+#include <scsi/scsi_cmnd.h>
 
 /* Descriptor for analyzed sense data */
 struct st_cmdstatus {
@@ -17,6 +18,17 @@ struct st_cmdstatus {
        u8 deferred;
 };
 
+struct scsi_tape;
+
+/* scsi tape command */
+struct st_request {
+       unsigned char cmd[MAX_COMMAND_SIZE];
+       unsigned char sense[SCSI_SENSE_BUFFERSIZE];
+       int result;
+       struct scsi_tape *stp;
+       struct completion *waiting;
+};
+
 /* The tape buffer descriptor. */
 struct st_buffer {
        unsigned char in_use;
@@ -28,7 +40,7 @@ struct st_buffer {
        int read_pointer;
        int writing;
        int syscall_result;
-       struct scsi_request *last_SRpnt;
+       struct st_request *last_SRpnt;
        struct st_cmdstatus cmdstat;
        unsigned char *b_data;
        unsigned short use_sg;  /* zero or max number of s/g segments for this adapter */
index c041bfd56e12c4cc87ed3e906bbbdc7460528274..25cced91c8a63c0e3b85ad4e062e71be27f07eaa 100644 (file)
@@ -70,6 +70,7 @@
  *
  */
 #include <scsi/scsi_dbg.h>
+#include <scsi/scsi_transport_spi.h>
 
 /*
  * Further development / testing that should be done : 
@@ -2378,7 +2379,7 @@ static void NCR5380_information_transfer (struct Scsi_Host *instance)
  * 3..length+1 arguments
  *
  * Start the extended message buffer with the EXTENDED_MESSAGE
- * byte, since scsi_print_msg() wants the whole thing.  
+ * byte, since spi_print_msg() wants the whole thing.  
  */
                    extended_msg[0] = EXTENDED_MESSAGE;
                    /* Accept first byte by clearing ACK */
@@ -2431,7 +2432,7 @@ static void NCR5380_information_transfer (struct Scsi_Host *instance)
                default:
                    if (!tmp) {
                        printk(KERN_DEBUG "scsi%d: rejecting message ", HOSTNO);
-                       scsi_print_msg (extended_msg);
+                       spi_print_msg(extended_msg);
                        printk("\n");
                    } else if (tmp != EXTENDED_MESSAGE)
                        printk(KERN_DEBUG "scsi%d: rejecting unknown "
@@ -2566,7 +2567,7 @@ static void NCR5380_reselect (struct Scsi_Host *instance)
 
     if (!(msg[0] & 0x80)) {
        printk(KERN_DEBUG "scsi%d: expecting IDENTIFY message, got ", HOSTNO);
-       scsi_print_msg(msg);
+       spi_print_msg(msg);
        do_abort(instance);
        return;
     }
index 2d9437d7242bbd674ef646b62b76f315b3b116fa..3659dd7b9d760e9a0917a37e083ce3e84097e22d 100644 (file)
@@ -40,7 +40,7 @@
 #ifndef SYM_DEFS_H
 #define SYM_DEFS_H
 
-#define SYM_VERSION "2.2.1"
+#define SYM_VERSION "2.2.2"
 #define SYM_DRIVER_NAME        "sym-" SYM_VERSION
 
 /*
index fd36cf9858cbb0e2cf48816fcea6aa43b0b86dbb..9916a2a22558c992644505ff9b2ae193e0162c15 100644 (file)
  * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
  */
 
-#ifdef __FreeBSD__
-#include <dev/sym/sym_glue.h>
-#else
 #include "sym_glue.h"
-#endif
 
 /*
  *  Macros used for all firmwares.
 #define        SYM_FWA_SCR             sym_fw1a_scr
 #define        SYM_FWB_SCR             sym_fw1b_scr
 #define        SYM_FWZ_SCR             sym_fw1z_scr
-#ifdef __FreeBSD__
-#include <dev/sym/sym_fw1.h>
-#else
 #include "sym_fw1.h"
-#endif
 static struct sym_fwa_ofs sym_fw1a_ofs = {
        SYM_GEN_FW_A(struct SYM_FWA_SCR)
 };
 static struct sym_fwb_ofs sym_fw1b_ofs = {
        SYM_GEN_FW_B(struct SYM_FWB_SCR)
-#ifdef SYM_OPT_HANDLE_DIR_UNKNOWN
-       SYM_GEN_B(struct SYM_FWB_SCR, data_io)
-#endif
 };
 static struct sym_fwz_ofs sym_fw1z_ofs = {
        SYM_GEN_FW_Z(struct SYM_FWZ_SCR)
@@ -88,19 +77,12 @@ static struct sym_fwz_ofs sym_fw1z_ofs = {
 #define        SYM_FWA_SCR             sym_fw2a_scr
 #define        SYM_FWB_SCR             sym_fw2b_scr
 #define        SYM_FWZ_SCR             sym_fw2z_scr
-#ifdef __FreeBSD__
-#include <dev/sym/sym_fw2.h>
-#else
 #include "sym_fw2.h"
-#endif
 static struct sym_fwa_ofs sym_fw2a_ofs = {
        SYM_GEN_FW_A(struct SYM_FWA_SCR)
 };
 static struct sym_fwb_ofs sym_fw2b_ofs = {
        SYM_GEN_FW_B(struct SYM_FWB_SCR)
-#ifdef SYM_OPT_HANDLE_DIR_UNKNOWN
-       SYM_GEN_B(struct SYM_FWB_SCR, data_io)
-#endif
        SYM_GEN_B(struct SYM_FWB_SCR, start64)
        SYM_GEN_B(struct SYM_FWB_SCR, pm_handle)
 };
index 43f6810a4045191f17aa6ce4374ac696517b7de4..66ec35beab5baf1dbe9ca57653ef2856758bd1fa 100644 (file)
@@ -92,9 +92,6 @@ struct sym_fwa_ofs {
 };
 struct sym_fwb_ofs {
        SYM_GEN_FW_B(u_short)
-#ifdef SYM_OPT_HANDLE_DIR_UNKNOWN
-       SYM_GEN_B(u_short, data_io)
-#endif
        SYM_GEN_B(u_short, start64)
        SYM_GEN_B(u_short, pm_handle)
 };
@@ -111,9 +108,6 @@ struct sym_fwa_ba {
 };
 struct sym_fwb_ba {
        SYM_GEN_FW_B(u32)
-#ifdef SYM_OPT_HANDLE_DIR_UNKNOWN
-       SYM_GEN_B(u32, data_io)
-#endif
        SYM_GEN_B(u32, start64);
        SYM_GEN_B(u32, pm_handle);
 };
index cdd92d82f4b26b4810ac315ff26e4b3817cb88fb..7b39f4a35e9885eb2b0ad219659985524c749731 100644 (file)
@@ -197,12 +197,6 @@ struct SYM_FWB_SCR {
        u32 bad_status          [  7];
        u32 wsr_ma_helper       [  4];
 
-#ifdef SYM_OPT_HANDLE_DIR_UNKNOWN
-       /* Unknown direction handling */
-       u32 data_io             [  2];
-       u32 data_io_com         [  8];
-       u32 data_io_out         [  7];
-#endif
        /* Data area */
        u32 zero                [  1];
        u32 scratch             [  1];
@@ -1747,48 +1741,6 @@ static struct SYM_FWB_SCR SYM_FWB_SCR = {
        SCR_JUMP,
                PADDR_A (dispatch),
 
-#ifdef SYM_OPT_HANDLE_DIR_UNKNOWN
-}/*-------------------------< DATA_IO >--------------------------*/,{
-       /*
-        *  We jump here if the data direction was unknown at the 
-        *  time we had to queue the command to the scripts processor.
-        *  Pointers had been set as follow in this situation:
-        *    savep   -->   DATA_IO
-        *    lastp   -->   start pointer when DATA_IN
-        *    wlastp  -->   start pointer when DATA_OUT
-        *  This script sets savep and lastp according to the 
-        *  direction chosen by the target.
-        */
-       SCR_JUMP ^ IFTRUE (WHEN (SCR_DATA_OUT)),
-               PADDR_B (data_io_out),
-}/*-------------------------< DATA_IO_COM >----------------------*/,{
-       /*
-        *  Direction is DATA IN.
-        */
-       SCR_COPY  (4),
-               HADDR_1 (ccb_head.lastp),
-               HADDR_1 (ccb_head.savep),
-       /*
-        *  Jump to the SCRIPTS according to actual direction.
-        */
-       SCR_COPY  (4),
-               HADDR_1 (ccb_head.savep),
-               RADDR_1 (temp),
-       SCR_RETURN,
-               0,
-}/*-------------------------< DATA_IO_OUT >----------------------*/,{
-       /*
-        *  Direction is DATA OUT.
-        */
-       SCR_REG_REG (HF_REG, SCR_AND, (~HF_DATA_IN)),
-               0,
-       SCR_COPY  (4),
-               HADDR_1 (ccb_head.wlastp),
-               HADDR_1 (ccb_head.lastp),
-       SCR_JUMP,
-               PADDR_B(data_io_com),
-#endif /* SYM_OPT_HANDLE_DIR_UNKNOWN */
-
 }/*-------------------------< ZERO >-----------------------------*/,{
        SCR_DATA_ZERO,
 }/*-------------------------< SCRATCH >--------------------------*/,{
index 7ea7151f5d1ddfbe352093dbb0d98163bbf12df8..851f2706f220942c417041eaa1f1589b24d8d353 100644 (file)
@@ -191,13 +191,6 @@ struct SYM_FWB_SCR {
        u32 pm_wsr_handle       [ 38];
        u32 wsr_ma_helper       [  4];
 
-#ifdef SYM_OPT_HANDLE_DIR_UNKNOWN
-       /* Unknown direction handling */
-       u32 data_io             [  2];
-       u32 data_io_in          [  2];
-       u32 data_io_com         [  6];
-       u32 data_io_out         [  8];
-#endif
        /* Data area */
        u32 zero                [  1];
        u32 scratch             [  1];
@@ -1838,51 +1831,6 @@ static struct SYM_FWB_SCR SYM_FWB_SCR = {
        SCR_JUMP,
                PADDR_A (dispatch),
 
-#ifdef SYM_OPT_HANDLE_DIR_UNKNOWN
-}/*-------------------------< DATA_IO >--------------------------*/,{
-       /*
-        *  We jump here if the data direction was unknown at the 
-        *  time we had to queue the command to the scripts processor.
-        *  Pointers had been set as follow in this situation:
-        *    savep   -->   DATA_IO
-        *    lastp   -->   start pointer when DATA_IN
-        *    wlastp  -->   start pointer when DATA_OUT
-        *  This script sets savep and lastp according to the 
-        *  direction chosen by the target.
-        */
-       SCR_JUMP ^ IFTRUE (WHEN (SCR_DATA_OUT)),
-               PADDR_B (data_io_out),
-}/*-------------------------< DATA_IO_IN >-----------------------*/,{
-       /*
-        *  Direction is DATA IN.
-        */
-       SCR_LOAD_REL  (scratcha, 4),
-               offsetof (struct sym_ccb, phys.head.lastp),
-}/*-------------------------< DATA_IO_COM >----------------------*/,{
-       SCR_STORE_REL (scratcha, 4),
-               offsetof (struct sym_ccb, phys.head.savep),
-
-       /*
-        *  Jump to the SCRIPTS according to actual direction.
-        */
-       SCR_LOAD_REL  (temp, 4),
-               offsetof (struct sym_ccb, phys.head.savep),
-       SCR_RETURN,
-               0,
-}/*-------------------------< DATA_IO_OUT >----------------------*/,{
-       /*
-        *  Direction is DATA OUT.
-        */
-       SCR_REG_REG (HF_REG, SCR_AND, (~HF_DATA_IN)),
-               0,
-       SCR_LOAD_REL  (scratcha, 4),
-               offsetof (struct sym_ccb, phys.head.wlastp),
-       SCR_STORE_REL (scratcha, 4),
-               offsetof (struct sym_ccb, phys.head.lastp),
-       SCR_JUMP,
-               PADDR_B(data_io_com),
-#endif /* SYM_OPT_HANDLE_DIR_UNKNOWN */
-
 }/*-------------------------< ZERO >-----------------------------*/,{
        SCR_DATA_ZERO,
 }/*-------------------------< SCRATCH >--------------------------*/,{
index 7fc0b97173e1ec396e2a215391d031717b62502e..1fffd2b3c654d93da2ef9f49d1b4ac929dd3d5a0 100644 (file)
@@ -514,9 +514,10 @@ static inline int sym_setup_cdb(struct sym_hcb *np, struct scsi_cmnd *cmd, struc
  */
 int sym_setup_data_and_start(struct sym_hcb *np, struct scsi_cmnd *cmd, struct sym_ccb *cp)
 {
-       int dir;
        struct sym_tcb *tp = &np->target[cp->target];
        struct sym_lcb *lp = sym_lp(tp, cp->lun);
+       u32 lastp, goalp;
+       int dir;
 
        /*
         *  Build the CDB.
@@ -534,15 +535,47 @@ int sym_setup_data_and_start(struct sym_hcb *np, struct scsi_cmnd *cmd, struct s
                        sym_set_cam_status(cmd, DID_ERROR);
                        goto out_abort;
                }
+
+               /*
+                *  No segments means no data.
+                */
+               if (!cp->segments)
+                       dir = DMA_NONE;
        } else {
                cp->data_len = 0;
                cp->segments = 0;
        }
 
        /*
-        *  Set data pointers.
+        *  Set the data pointer.
         */
-       sym_setup_data_pointers(np, cp, dir);
+       switch (dir) {
+       case DMA_BIDIRECTIONAL:
+               printk("%s: got DMA_BIDIRECTIONAL command", sym_name(np));
+               sym_set_cam_status(cmd, DID_ERROR);
+               goto out_abort;
+       case DMA_TO_DEVICE:
+               goalp = SCRIPTA_BA(np, data_out2) + 8;
+               lastp = goalp - 8 - (cp->segments * (2*4));
+               break;
+       case DMA_FROM_DEVICE:
+               cp->host_flags |= HF_DATA_IN;
+               goalp = SCRIPTA_BA(np, data_in2) + 8;
+               lastp = goalp - 8 - (cp->segments * (2*4));
+               break;
+       case DMA_NONE:
+       default:
+               lastp = goalp = SCRIPTB_BA(np, no_data);
+               break;
+       }
+
+       /*
+        *  Set all pointers values needed by SCRIPTS.
+        */
+       cp->phys.head.lastp = cpu_to_scr(lastp);
+       cp->phys.head.savep = cpu_to_scr(lastp);
+       cp->startp          = cp->phys.head.savep;
+       cp->goalp           = cpu_to_scr(goalp);
 
        /*
         *  When `#ifed 1', the code below makes the driver 
@@ -563,10 +596,7 @@ int sym_setup_data_and_start(struct sym_hcb *np, struct scsi_cmnd *cmd, struct s
        /*
         *      activate this job.
         */
-       if (lp)
-               sym_start_next_ccbs(np, lp, 2);
-       else
-               sym_put_start_queue(np, cp);
+       sym_start_next_ccbs(np, lp, 2);
        return 0;
 
 out_abort:
@@ -981,15 +1011,14 @@ static int device_queue_depth(struct sym_hcb *np, int target, int lun)
 
 static int sym53c8xx_slave_alloc(struct scsi_device *sdev)
 {
-       struct sym_hcb *np;
-       struct sym_tcb *tp;
+       struct sym_hcb *np = sym_get_hcb(sdev->host);
+       struct sym_tcb *tp = &np->target[sdev->id];
+       struct sym_lcb *lp;
 
        if (sdev->id >= SYM_CONF_MAX_TARGET || sdev->lun >= SYM_CONF_MAX_LUN)
                return -ENXIO;
 
-       np = sym_get_hcb(sdev->host);
-       tp = &np->target[sdev->id];
-
+       tp->starget = sdev->sdev_target;
        /*
         * Fail the device init if the device is flagged NOSCAN at BOOT in
         * the NVRAM.  This may speed up boot and maintain coherency with
@@ -999,34 +1028,40 @@ static int sym53c8xx_slave_alloc(struct scsi_device *sdev)
         * lun devices behave badly when asked for a non zero LUN.
         */
 
-       if ((tp->usrflags & SYM_SCAN_BOOT_DISABLED) ||
-           ((tp->usrflags & SYM_SCAN_LUNS_DISABLED) && sdev->lun != 0)) {
+       if (tp->usrflags & SYM_SCAN_BOOT_DISABLED) {
                tp->usrflags &= ~SYM_SCAN_BOOT_DISABLED;
+               starget_printk(KERN_INFO, tp->starget,
+                               "Scan at boot disabled in NVRAM\n");
                return -ENXIO;
        }
 
-       tp->starget = sdev->sdev_target;
+       if (tp->usrflags & SYM_SCAN_LUNS_DISABLED) {
+               if (sdev->lun != 0)
+                       return -ENXIO;
+               starget_printk(KERN_INFO, tp->starget,
+                               "Multiple LUNs disabled in NVRAM\n");
+       }
+
+       lp = sym_alloc_lcb(np, sdev->id, sdev->lun);
+       if (!lp)
+               return -ENOMEM;
+
+       spi_min_period(tp->starget) = tp->usr_period;
+       spi_max_width(tp->starget) = tp->usr_width;
+
        return 0;
 }
 
 /*
  * Linux entry point for device queue sizing.
  */
-static int sym53c8xx_slave_configure(struct scsi_device *device)
+static int sym53c8xx_slave_configure(struct scsi_device *sdev)
 {
-       struct sym_hcb *np = sym_get_hcb(device->host);
-       struct sym_tcb *tp = &np->target[device->id];
-       struct sym_lcb *lp;
+       struct sym_hcb *np = sym_get_hcb(sdev->host);
+       struct sym_tcb *tp = &np->target[sdev->id];
+       struct sym_lcb *lp = sym_lp(tp, sdev->lun);
        int reqtags, depth_to_use;
 
-       /*
-        *  Allocate the LCB if not yet.
-        *  If it fail, we may well be in the sh*t. :)
-        */
-       lp = sym_alloc_lcb(np, device->id, device->lun);
-       if (!lp)
-               return -ENOMEM;
-
        /*
         *  Get user flags.
         */
@@ -1038,10 +1073,10 @@ static int sym53c8xx_slave_configure(struct scsi_device *device)
         *  Use at least 2.
         *  Donnot use more than our maximum.
         */
-       reqtags = device_queue_depth(np, device->id, device->lun);
+       reqtags = device_queue_depth(np, sdev->id, sdev->lun);
        if (reqtags > tp->usrtags)
                reqtags = tp->usrtags;
-       if (!device->tagged_supported)
+       if (!sdev->tagged_supported)
                reqtags = 0;
 #if 1 /* Avoid to locally queue commands for no good reasons */
        if (reqtags > SYM_CONF_MAX_TAG)
@@ -1050,19 +1085,30 @@ static int sym53c8xx_slave_configure(struct scsi_device *device)
 #else
        depth_to_use = (reqtags ? SYM_CONF_MAX_TAG : 2);
 #endif
-       scsi_adjust_queue_depth(device,
-                               (device->tagged_supported ?
+       scsi_adjust_queue_depth(sdev,
+                               (sdev->tagged_supported ?
                                 MSG_SIMPLE_TAG : 0),
                                depth_to_use);
        lp->s.scdev_depth = depth_to_use;
-       sym_tune_dev_queuing(tp, device->lun, reqtags);
+       sym_tune_dev_queuing(tp, sdev->lun, reqtags);
 
-       if (!spi_initial_dv(device->sdev_target))
-               spi_dv_device(device);
+       if (!spi_initial_dv(sdev->sdev_target))
+               spi_dv_device(sdev);
 
        return 0;
 }
 
+static void sym53c8xx_slave_destroy(struct scsi_device *sdev)
+{
+       struct sym_hcb *np = sym_get_hcb(sdev->host);
+       struct sym_lcb *lp = sym_lp(&np->target[sdev->id], sdev->lun);
+
+       if (lp->itlq_tbl)
+               sym_mfree_dma(lp->itlq_tbl, SYM_CONF_MAX_TASK * 4, "ITLQ_TBL");
+       kfree(lp->cb_tags);
+       sym_mfree_dma(lp, sizeof(*lp), "LCB");
+}
+
 /*
  *  Linux entry point for info() function
  */
@@ -1497,7 +1543,7 @@ static int sym_setup_bus_dma_mask(struct sym_hcb *np)
 {
 #if SYM_CONF_DMA_ADDRESSING_MODE > 0
 #if   SYM_CONF_DMA_ADDRESSING_MODE == 1
-#define        DMA_DAC_MASK    0x000000ffffffffffULL /* 40-bit */
+#define        DMA_DAC_MASK    DMA_40BIT_MASK
 #elif SYM_CONF_DMA_ADDRESSING_MODE == 2
 #define        DMA_DAC_MASK    DMA_64BIT_MASK
 #endif
@@ -1926,6 +1972,7 @@ static struct scsi_host_template sym2_template = {
        .queuecommand           = sym53c8xx_queue_command,
        .slave_alloc            = sym53c8xx_slave_alloc,
        .slave_configure        = sym53c8xx_slave_configure,
+       .slave_destroy          = sym53c8xx_slave_destroy,
        .eh_abort_handler       = sym53c8xx_eh_abort_handler,
        .eh_device_reset_handler = sym53c8xx_eh_device_reset_handler,
        .eh_bus_reset_handler   = sym53c8xx_eh_bus_reset_handler,
index d3d52f14d7c01d55b2c663ae8ec8d9672e2e3bdc..cc92d0c70cd710ed2ea42c94f54beb38d5d96aa9 100644 (file)
@@ -68,7 +68,6 @@
  */
 #define        SYM_CONF_TIMER_INTERVAL         ((HZ+1)/2)
 
-#define SYM_OPT_HANDLE_DIR_UNKNOWN
 #define SYM_OPT_HANDLE_DEVICE_QUEUEING
 #define SYM_OPT_LIMIT_COMMAND_REORDERING
 
@@ -268,6 +267,5 @@ void sym_xpt_async_bus_reset(struct sym_hcb *np);
 void sym_xpt_async_sent_bdr(struct sym_hcb *np, int target);
 int  sym_setup_data_and_start (struct sym_hcb *np, struct scsi_cmnd *csio, struct sym_ccb *cp);
 void sym_log_bus_error(struct sym_hcb *np);
-void sym_sniff_inquiry(struct sym_hcb *np, struct scsi_cmnd *cmd, int resid);
 
 #endif /* SYM_GLUE_H */
index 1564ca203a3e6b0d62217fd4a8c2529689215eeb..8260f040d39c8ea82ba2eeb84cb810de062b132a 100644 (file)
@@ -40,6 +40,7 @@
 
 #include <linux/slab.h>
 #include <asm/param.h>         /* for timeouts in units of HZ */
+#include <scsi/scsi_dbg.h>
 
 #include "sym_glue.h"
 #include "sym_nvram.h"
@@ -70,32 +71,12 @@ static void sym_printl_hex(u_char *p, int n)
        printf (".\n");
 }
 
-/*
- *  Print out the content of a SCSI message.
- */
-static int sym_show_msg (u_char * msg)
-{
-       u_char i;
-       printf ("%x",*msg);
-       if (*msg==M_EXTENDED) {
-               for (i=1;i<8;i++) {
-                       if (i-1>msg[1]) break;
-                       printf ("-%x",msg[i]);
-               }
-               return (i+1);
-       } else if ((*msg & 0xf0) == 0x20) {
-               printf ("-%x",msg[1]);
-               return (2);
-       }
-       return (1);
-}
-
 static void sym_print_msg(struct sym_ccb *cp, char *label, u_char *msg)
 {
        sym_print_addr(cp->cmd, "%s: ", label);
 
-       sym_show_msg(msg);
-       printf(".\n");
+       spi_print_msg(msg);
+       printf("\n");
 }
 
 static void sym_print_nego_msg(struct sym_hcb *np, int target, char *label, u_char *msg)
@@ -103,8 +84,8 @@ static void sym_print_nego_msg(struct sym_hcb *np, int target, char *label, u_ch
        struct sym_tcb *tp = &np->target[target];
        dev_info(&tp->starget->dev, "%s: ", label);
 
-       sym_show_msg(msg);
-       printf(".\n");
+       spi_print_msg(msg);
+       printf("\n");
 }
 
 /*
@@ -635,29 +616,6 @@ static __inline void sym_init_burst(struct sym_hcb *np, u_char bc)
        }
 }
 
-
-/*
- * Print out the list of targets that have some flag disabled by user.
- */
-static void sym_print_targets_flag(struct sym_hcb *np, int mask, char *msg)
-{
-       int cnt;
-       int i;
-
-       for (cnt = 0, i = 0 ; i < SYM_CONF_MAX_TARGET ; i++) {
-               if (i == np->myaddr)
-                       continue;
-               if (np->target[i].usrflags & mask) {
-                       if (!cnt++)
-                               printf("%s: %s disabled for targets",
-                                       sym_name(np), msg);
-                       printf(" %d", i);
-               }
-       }
-       if (cnt)
-               printf(".\n");
-}
-
 /*
  *  Save initial settings of some IO registers.
  *  Assumed to have been set by BIOS.
@@ -962,7 +920,7 @@ static int sym_prepare_setting(struct Scsi_Host *shost, struct sym_hcb *np, stru
                tp->usrflags |= (SYM_DISC_ENABLED | SYM_TAGS_ENABLED);
                tp->usrtags = SYM_SETUP_MAX_TAG;
 
-               sym_nvram_setup_target(np, i, nvram);
+               sym_nvram_setup_target(tp, i, nvram);
 
                if (!tp->usrtags)
                        tp->usrflags &= ~SYM_TAGS_ENABLED;
@@ -1005,13 +963,6 @@ static int sym_prepare_setting(struct Scsi_Host *shost, struct sym_hcb *np, stru
                        sym_name(np), np->rv_scntl3, np->rv_dmode, np->rv_dcntl,
                        np->rv_ctest3, np->rv_ctest4, np->rv_ctest5);
        }
-       /*
-        *  Let user be aware of targets that have some disable flags set.
-        */
-       sym_print_targets_flag(np, SYM_SCAN_BOOT_DISABLED, "SCAN AT BOOT");
-       if (sym_verbose)
-               sym_print_targets_flag(np, SYM_SCAN_LUNS_DISABLED,
-                                      "SCAN FOR LUNS");
 
        return 0;
 }
@@ -1523,7 +1474,7 @@ static int sym_prepare_nego(struct sym_hcb *np, struct sym_ccb *cp, u_char *msgp
 /*
  *  Insert a job into the start queue.
  */
-void sym_put_start_queue(struct sym_hcb *np, struct sym_ccb *cp)
+static void sym_put_start_queue(struct sym_hcb *np, struct sym_ccb *cp)
 {
        u_short qidx;
 
@@ -3654,7 +3605,7 @@ static int sym_evaluate_dp(struct sym_hcb *np, struct sym_ccb *cp, u32 scr, int
         *  If result is dp_sg = SYM_CONF_MAX_SG, then we are at the 
         *  end of the data.
         */
-       tmp = scr_to_cpu(sym_goalp(cp));
+       tmp = scr_to_cpu(cp->goalp);
        dp_sg = SYM_CONF_MAX_SG;
        if (dp_scr != tmp)
                dp_sg -= (tmp - 8 - (int)dp_scr) / (2*4);
@@ -3761,7 +3712,7 @@ static void sym_modify_dp(struct sym_hcb *np, struct sym_tcb *tp, struct sym_ccb
         *  And our alchemy:) allows to easily calculate the data 
         *  script address we want to return for the next data phase.
         */
-       dp_ret = cpu_to_scr(sym_goalp(cp));
+       dp_ret = cpu_to_scr(cp->goalp);
        dp_ret = dp_ret - 8 - (SYM_CONF_MAX_SG - dp_sg) * (2*4);
 
        /*
@@ -3857,7 +3808,7 @@ int sym_compute_residual(struct sym_hcb *np, struct sym_ccb *cp)
         *  If all data has been transferred,
         *  there is no residual.
         */
-       if (cp->phys.head.lastp == sym_goalp(cp))
+       if (cp->phys.head.lastp == cp->goalp)
                return resid;
 
        /*
@@ -4664,30 +4615,7 @@ struct sym_ccb *sym_get_ccb (struct sym_hcb *np, struct scsi_cmnd *cmd, u_char t
                goto out;
        cp = sym_que_entry(qp, struct sym_ccb, link_ccbq);
 
-#ifndef SYM_OPT_HANDLE_DEVICE_QUEUEING
-       /*
-        *  If the LCB is not yet available and the LUN
-        *  has been probed ok, try to allocate the LCB.
-        */
-       if (!lp && sym_is_bit(tp->lun_map, ln)) {
-               lp = sym_alloc_lcb(np, tn, ln);
-               if (!lp)
-                       goto out_free;
-       }
-#endif
-
-       /*
-        *  If the LCB is not available here, then the 
-        *  logical unit is not yet discovered. For those 
-        *  ones only accept 1 SCSI IO per logical unit, 
-        *  since we cannot allow disconnections.
-        */
-       if (!lp) {
-               if (!sym_is_bit(tp->busy0_map, ln))
-                       sym_set_bit(tp->busy0_map, ln);
-               else
-                       goto out_free;
-       } else {
+       {
                /*
                 *  If we have been asked for a tagged command.
                 */
@@ -4840,12 +4768,6 @@ void sym_free_ccb (struct sym_hcb *np, struct sym_ccb *cp)
                        lp->head.resel_sa =
                                cpu_to_scr(SCRIPTB_BA(np, resel_bad_lun));
        }
-       /*
-        *  Otherwise, we only accept 1 IO per LUN.
-        *  Clear the bit that keeps track of this IO.
-        */
-       else
-               sym_clr_bit(tp->busy0_map, cp->lun);
 
        /*
         *  We donnot queue more than 1 ccb per target 
@@ -4997,20 +4919,7 @@ static void sym_init_tcb (struct sym_hcb *np, u_char tn)
 struct sym_lcb *sym_alloc_lcb (struct sym_hcb *np, u_char tn, u_char ln)
 {
        struct sym_tcb *tp = &np->target[tn];
-       struct sym_lcb *lp = sym_lp(tp, ln);
-
-       /*
-        *  Already done, just return.
-        */
-       if (lp)
-               return lp;
-
-       /*
-        *  Donnot allow LUN control block 
-        *  allocation for not probed LUNs.
-        */
-       if (!sym_is_bit(tp->lun_map, ln))
-               return NULL;
+       struct sym_lcb *lp = NULL;
 
        /*
         *  Initialize the target control block if not yet.
@@ -5082,13 +4991,7 @@ struct sym_lcb *sym_alloc_lcb (struct sym_hcb *np, u_char tn, u_char ln)
        lp->started_max   = SYM_CONF_MAX_TASK;
        lp->started_limit = SYM_CONF_MAX_TASK;
 #endif
-       /*
-        *  If we are busy, count the IO.
-        */
-       if (sym_is_bit(tp->busy0_map, ln)) {
-               lp->busy_itl = 1;
-               sym_clr_bit(tp->busy0_map, ln);
-       }
+
 fail:
        return lp;
 }
@@ -5102,12 +5005,6 @@ static void sym_alloc_lcb_tags (struct sym_hcb *np, u_char tn, u_char ln)
        struct sym_lcb *lp = sym_lp(tp, ln);
        int i;
 
-       /*
-        *  If LCB not available, try to allocate it.
-        */
-       if (!lp && !(lp = sym_alloc_lcb(np, tn, ln)))
-               goto fail;
-
        /*
         *  Allocate the task table and and the tag allocation 
         *  circular buffer. We want both or none.
@@ -5481,8 +5378,7 @@ finish:
        /*
         *  Donnot start more than 1 command after an error.
         */
-       if (lp)
-               sym_start_next_ccbs(np, lp, 1);
+       sym_start_next_ccbs(np, lp, 1);
 #endif
 }
 
@@ -5520,18 +5416,12 @@ void sym_complete_ok (struct sym_hcb *np, struct sym_ccb *cp)
        tp = &np->target[cp->target];
        lp = sym_lp(tp, cp->lun);
 
-       /*
-        *  Assume device discovered on first success.
-        */
-       if (!lp)
-               sym_set_bit(tp->lun_map, cp->lun);
-
        /*
         *  If all data have been transferred, given than no
         *  extended error did occur, there is no residual.
         */
        resid = 0;
-       if (cp->phys.head.lastp != sym_goalp(cp))
+       if (cp->phys.head.lastp != cp->goalp)
                resid = sym_compute_residual(np, cp);
 
        /*
@@ -5551,15 +5441,6 @@ if (resid)
         */
        sym_set_cam_result_ok(cp, cmd, resid);
 
-#ifdef SYM_OPT_SNIFF_INQUIRY
-       /*
-        *  On standard INQUIRY response (EVPD and CmDt 
-        *  not set), sniff out device capabilities.
-        */
-       if (cp->cdb_buf[0] == INQUIRY && !(cp->cdb_buf[1] & 0x3))
-               sym_sniff_inquiry(np, cmd, resid);
-#endif
-
 #ifdef SYM_OPT_HANDLE_DEVICE_QUEUEING
        /*
         *  If max number of started ccbs had been reduced,
@@ -5587,7 +5468,7 @@ if (resid)
        /*
         *  Requeue a couple of awaiting scsi commands.
         */
-       if (lp && !sym_que_empty(&lp->waiting_ccbq))
+       if (!sym_que_empty(&lp->waiting_ccbq))
                sym_start_next_ccbs(np, lp, 2);
 #endif
        /*
@@ -5830,8 +5711,7 @@ void sym_hcb_free(struct sym_hcb *np)
        SYM_QUEHEAD *qp;
        struct sym_ccb *cp;
        struct sym_tcb *tp;
-       struct sym_lcb *lp;
-       int target, lun;
+       int target;
 
        if (np->scriptz0)
                sym_mfree_dma(np->scriptz0, np->scriptz_sz, "SCRIPTZ0");
@@ -5857,16 +5737,6 @@ void sym_hcb_free(struct sym_hcb *np)
 
        for (target = 0; target < SYM_CONF_MAX_TARGET ; target++) {
                tp = &np->target[target];
-               for (lun = 0 ; lun < SYM_CONF_MAX_LUN ; lun++) {
-                       lp = sym_lp(tp, lun);
-                       if (!lp)
-                               continue;
-                       if (lp->itlq_tbl)
-                               sym_mfree_dma(lp->itlq_tbl, SYM_CONF_MAX_TASK*4,
-                                      "ITLQ_TBL");
-                       kfree(lp->cb_tags);
-                       sym_mfree_dma(lp, sizeof(*lp), "LCB");
-               }
 #if SYM_CONF_MAX_LUN > 1
                kfree(tp->lunmp);
 #endif 
index 3a264a40821646c4db6cf9f965d7374944301afd..2456090bb2411734b908bcb7a63fc6700899774d 100644 (file)
  *  They may be defined in platform specific headers, if they 
  *  are useful.
  *
- *    SYM_OPT_HANDLE_DIR_UNKNOWN
- *        When this option is set, the SCRIPTS used by the driver 
- *        are able to handle SCSI transfers with direction not 
- *        supplied by user.
- *        (set for Linux-2.0.X)
- *
  *    SYM_OPT_HANDLE_DEVICE_QUEUEING
  *        When this option is set, the driver will use a queue per 
  *        device and handle QUEUE FULL status requeuing internally.
@@ -64,7 +58,6 @@
  *        (set for Linux)
  */
 #if 0
-#define SYM_OPT_HANDLE_DIR_UNKNOWN
 #define SYM_OPT_HANDLE_DEVICE_QUEUEING
 #define SYM_OPT_LIMIT_COMMAND_REORDERING
 #endif
@@ -416,19 +409,6 @@ struct sym_tcb {
        struct sym_lcb **lunmp;         /* Other LCBs [1..MAX_LUN]      */
 #endif
 
-       /*
-        *  Bitmap that tells about LUNs that succeeded at least 
-        *  1 IO and therefore assumed to be a real device.
-        *  Avoid useless allocation of the LCB structure.
-        */
-       u32     lun_map[(SYM_CONF_MAX_LUN+31)/32];
-
-       /*
-        *  Bitmap that tells about LUNs that haven't yet an LCB 
-        *  allocated (not discovered or LCB allocation failed).
-        */
-       u32     busy0_map[(SYM_CONF_MAX_LUN+31)/32];
-
 #ifdef SYM_HAVE_STCB
        /*
         *  O/S specific data structure.
@@ -454,8 +434,10 @@ struct sym_tcb {
         *  Other user settable limits and options.
         *  These limits are read from the NVRAM if present.
         */
-       u_char  usrflags;
-       u_short usrtags;
+       unsigned char   usrflags;
+       unsigned char   usr_period;
+       unsigned char   usr_width;
+       unsigned short  usrtags;
        struct scsi_target *starget;
 };
 
@@ -672,9 +654,6 @@ struct sym_ccbh {
         */
        u32     savep;          /* Jump address to saved data pointer   */
        u32     lastp;          /* SCRIPTS address at end of data       */
-#ifdef SYM_OPT_HANDLE_DIR_UNKNOWN
-       u32     wlastp;
-#endif
 
        /*
         *  Status fields.
@@ -804,9 +783,6 @@ struct sym_ccb {
        SYM_QUEHEAD link_ccbq;  /* Link to free/busy CCB queue  */
        u32     startp;         /* Initial data pointer         */
        u32     goalp;          /* Expected last data pointer   */
-#ifdef SYM_OPT_HANDLE_DIR_UNKNOWN
-       u32     wgoalp;
-#endif
        int     ext_sg;         /* Extreme data pointer, used   */
        int     ext_ofs;        /*  to calculate the residual.  */
 #ifdef SYM_OPT_HANDLE_DEVICE_QUEUEING
@@ -821,12 +797,6 @@ struct sym_ccb {
 
 #define CCB_BA(cp,lbl) cpu_to_scr(cp->ccb_ba + offsetof(struct sym_ccb, lbl))
 
-#ifdef SYM_OPT_HANDLE_DIR_UNKNOWN
-#define        sym_goalp(cp) ((cp->host_flags & HF_DATA_IN) ? cp->goalp : cp->wgoalp)
-#else
-#define        sym_goalp(cp) (cp->goalp)
-#endif
-
 typedef struct device *m_pool_ident_t;
 
 /*
@@ -1077,7 +1047,6 @@ char *sym_driver_name(void);
 void sym_print_xerr(struct scsi_cmnd *cmd, int x_status);
 int sym_reset_scsi_bus(struct sym_hcb *np, int enab_int);
 struct sym_chip *sym_lookup_chip_table(u_short device_id, u_char revision);
-void sym_put_start_queue(struct sym_hcb *np, struct sym_ccb *cp);
 #ifdef SYM_OPT_HANDLE_DEVICE_QUEUEING
 void sym_start_next_ccbs(struct sym_hcb *np, struct sym_lcb *lp, int maxn);
 #endif
@@ -1135,71 +1104,6 @@ bad:
 #error "Unsupported DMA addressing mode"
 #endif
 
-/*
- *  Set up data pointers used by SCRIPTS.
- *  Called from O/S specific code.
- */
-static inline void sym_setup_data_pointers(struct sym_hcb *np,
-               struct sym_ccb *cp, int dir)
-{
-       u32 lastp, goalp;
-
-       /*
-        *  No segments means no data.
-        */
-       if (!cp->segments)
-               dir = DMA_NONE;
-
-       /*
-        *  Set the data pointer.
-        */
-       switch(dir) {
-#ifdef SYM_OPT_HANDLE_DIR_UNKNOWN
-       case DMA_BIDIRECTIONAL:
-#endif
-       case DMA_TO_DEVICE:
-               goalp = SCRIPTA_BA(np, data_out2) + 8;
-               lastp = goalp - 8 - (cp->segments * (2*4));
-#ifdef SYM_OPT_HANDLE_DIR_UNKNOWN
-               cp->wgoalp = cpu_to_scr(goalp);
-               if (dir != DMA_BIDIRECTIONAL)
-                       break;
-               cp->phys.head.wlastp = cpu_to_scr(lastp);
-               /* fall through */
-#else
-               break;
-#endif
-       case DMA_FROM_DEVICE:
-               cp->host_flags |= HF_DATA_IN;
-               goalp = SCRIPTA_BA(np, data_in2) + 8;
-               lastp = goalp - 8 - (cp->segments * (2*4));
-               break;
-       case DMA_NONE:
-       default:
-#ifdef SYM_OPT_HANDLE_DIR_UNKNOWN
-               cp->host_flags |= HF_DATA_IN;
-#endif
-               lastp = goalp = SCRIPTB_BA(np, no_data);
-               break;
-       }
-
-       /*
-        *  Set all pointers values needed by SCRIPTS.
-        */
-       cp->phys.head.lastp = cpu_to_scr(lastp);
-       cp->phys.head.savep = cpu_to_scr(lastp);
-       cp->startp          = cp->phys.head.savep;
-       cp->goalp           = cpu_to_scr(goalp);
-
-#ifdef SYM_OPT_HANDLE_DIR_UNKNOWN
-       /*
-        *  If direction is unknown, start at data_io.
-        */
-       if (dir == DMA_BIDIRECTIONAL)
-               cp->phys.head.savep = cpu_to_scr(SCRIPTB_BA(np, data_io));
-#endif
-}
-
 /*
  *  MEMORY ALLOCATOR.
  */
index a34d403ccc6c4e170b143e8937c9f18bdd038a6f..92bf9b14a7a2bb98fdd0cc772d7496f86dc77637 100644 (file)
  * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
  */
 
-#ifdef __FreeBSD__
-#include <dev/sym/sym_glue.h>
-#else
 #include "sym_glue.h"
-#endif
 
 /*
  *  Simple power of two buddy-like generic allocator.
index 994b7566bcac8ba175646ced2a981c228d59fbf1..15d69298ab6ec9668e14bc83a091c15eb17e53f1 100644 (file)
@@ -92,29 +92,32 @@ void sym_nvram_setup_host(struct Scsi_Host *shost, struct sym_hcb *np, struct sy
  *  Get target set-up from Symbios format NVRAM.
  */
 static void
-sym_Symbios_setup_target(struct sym_hcb *np, int target, Symbios_nvram *nvram)
+sym_Symbios_setup_target(struct sym_tcb *tp, int target, Symbios_nvram *nvram)
 {
-       struct sym_tcb *tp = &np->target[target];
        Symbios_target *tn = &nvram->target[target];
 
-       tp->usrtags =
-               (tn->flags & SYMBIOS_QUEUE_TAGS_ENABLED)? SYM_SETUP_MAX_TAG : 0;
-
+       if (!(tn->flags & SYMBIOS_QUEUE_TAGS_ENABLED))
+               tp->usrtags = 0;
        if (!(tn->flags & SYMBIOS_DISCONNECT_ENABLE))
                tp->usrflags &= ~SYM_DISC_ENABLED;
        if (!(tn->flags & SYMBIOS_SCAN_AT_BOOT_TIME))
                tp->usrflags |= SYM_SCAN_BOOT_DISABLED;
        if (!(tn->flags & SYMBIOS_SCAN_LUNS))
                tp->usrflags |= SYM_SCAN_LUNS_DISABLED;
+       tp->usr_period = (tn->sync_period + 3) / 4;
+       tp->usr_width = (tn->bus_width == 0x8) ? 0 : 1;
 }
 
+static const unsigned char Tekram_sync[16] = {
+       25, 31, 37, 43, 50, 62, 75, 125, 12, 15, 18, 21, 6, 7, 9, 10
+};
+
 /*
  *  Get target set-up from Tekram format NVRAM.
  */
 static void
-sym_Tekram_setup_target(struct sym_hcb *np, int target, Tekram_nvram *nvram)
+sym_Tekram_setup_target(struct sym_tcb *tp, int target, Tekram_nvram *nvram)
 {
-       struct sym_tcb *tp = &np->target[target];
        struct Tekram_target *tn = &nvram->target[target];
 
        if (tn->flags & TEKRAM_TAGGED_COMMANDS) {
@@ -124,22 +127,22 @@ sym_Tekram_setup_target(struct sym_hcb *np, int target, Tekram_nvram *nvram)
        if (tn->flags & TEKRAM_DISCONNECT_ENABLE)
                tp->usrflags |= SYM_DISC_ENABLED;
  
-       /* If any device does not support parity, we will not use this option */
-       if (!(tn->flags & TEKRAM_PARITY_CHECK))
-               np->rv_scntl0  &= ~0x0a; /* SCSI parity checking disabled */
+       if (tn->flags & TEKRAM_SYNC_NEGO)
+               tp->usr_period = Tekram_sync[tn->sync_index & 0xf];
+       tp->usr_width = (tn->flags & TEKRAM_WIDE_NEGO) ? 1 : 0;
 }
 
 /*
  *  Get target setup from NVRAM.
  */
-void sym_nvram_setup_target(struct sym_hcb *np, int target, struct sym_nvram *nvp)
+void sym_nvram_setup_target(struct sym_tcb *tp, int target, struct sym_nvram *nvp)
 {
        switch (nvp->type) {
        case SYM_SYMBIOS_NVRAM:
-               sym_Symbios_setup_target(np, target, &nvp->data.Symbios);
+               sym_Symbios_setup_target(tp, target, &nvp->data.Symbios);
                break;
        case SYM_TEKRAM_NVRAM:
-               sym_Tekram_setup_target(np, target, &nvp->data.Tekram);
+               sym_Tekram_setup_target(tp, target, &nvp->data.Tekram);
                break;
        default:
                break;
index 1538bede52773ad2f1e6fb3662c8bd6012766d8a..bdfbbb083b69f5738231348771c4b0cf0bd6a9f2 100644 (file)
@@ -194,12 +194,12 @@ struct sym_nvram {
 
 #if SYM_CONF_NVRAM_SUPPORT
 void sym_nvram_setup_host(struct Scsi_Host *shost, struct sym_hcb *np, struct sym_nvram *nvram);
-void sym_nvram_setup_target (struct sym_hcb *np, int target, struct sym_nvram *nvp);
+void sym_nvram_setup_target (struct sym_tcb *tp, int target, struct sym_nvram *nvp);
 int sym_read_nvram (struct sym_device *np, struct sym_nvram *nvp);
 char *sym_nvram_type(struct sym_nvram *nvp);
 #else
 static inline void sym_nvram_setup_host(struct Scsi_Host *shost, struct sym_hcb *np, struct sym_nvram *nvram) { }
-static inline void sym_nvram_setup_target(struct sym_hcb *np, struct sym_nvram *nvram) { }
+static inline void sym_nvram_setup_target(struct sym_tcb *tp, struct sym_nvram *nvram) { }
 static inline int sym_read_nvram(struct sym_device *np, struct sym_nvram *nvp)
 {
        nvp->type = 0;
diff --git a/drivers/scsi/sym53c8xx_comm.h b/drivers/scsi/sym53c8xx_comm.h
deleted file mode 100644 (file)
index 20ae2b1..0000000
+++ /dev/null
@@ -1,792 +0,0 @@
-/******************************************************************************
-**  High Performance device driver for the Symbios 53C896 controller.
-**
-**  Copyright (C) 1998-2001  Gerard Roudier <groudier@free.fr>
-**
-**  This driver also supports all the Symbios 53C8XX controller family, 
-**  except 53C810 revisions < 16, 53C825 revisions < 16 and all 
-**  revisions of 53C815 controllers.
-**
-**  This driver is based on the Linux port of the FreeBSD ncr driver.
-** 
-**  Copyright (C) 1994  Wolfgang Stanglmeier
-**  
-**-----------------------------------------------------------------------------
-**  
-**  This program is free software; you can redistribute it and/or modify
-**  it under the terms of the GNU General Public License as published by
-**  the Free Software Foundation; either version 2 of the License, or
-**  (at your option) any later version.
-**
-**  This program is distributed in the hope that it will be useful,
-**  but WITHOUT ANY WARRANTY; without even the implied warranty of
-**  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-**  GNU General Public License for more details.
-**
-**  You should have received a copy of the GNU General Public License
-**  along with this program; if not, write to the Free Software
-**  Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
-**
-**-----------------------------------------------------------------------------
-**
-**  The Linux port of the FreeBSD ncr driver has been achieved in 
-**  november 1995 by:
-**
-**          Gerard Roudier              <groudier@free.fr>
-**
-**  Being given that this driver originates from the FreeBSD version, and
-**  in order to keep synergy on both, any suggested enhancements and corrections
-**  received on Linux are automatically a potential candidate for the FreeBSD 
-**  version.
-**
-**  The original driver has been written for 386bsd and FreeBSD by
-**          Wolfgang Stanglmeier        <wolf@cologne.de>
-**          Stefan Esser                <se@mi.Uni-Koeln.de>
-**
-**-----------------------------------------------------------------------------
-**
-**  Major contributions:
-**  --------------------
-**
-**  NVRAM detection and reading.
-**    Copyright (C) 1997 Richard Waltham <dormouse@farsrobt.demon.co.uk>
-**
-*******************************************************************************
-*/
-
-/*==========================================================
-**
-**     Debugging tags
-**
-**==========================================================
-*/
-
-#define DEBUG_ALLOC    (0x0001)
-#define DEBUG_PHASE    (0x0002)
-#define DEBUG_QUEUE    (0x0008)
-#define DEBUG_RESULT   (0x0010)
-#define DEBUG_POINTER  (0x0020)
-#define DEBUG_SCRIPT   (0x0040)
-#define DEBUG_TINY     (0x0080)
-#define DEBUG_TIMING   (0x0100)
-#define DEBUG_NEGO     (0x0200)
-#define DEBUG_TAGS     (0x0400)
-#define DEBUG_SCATTER  (0x0800)
-#define DEBUG_IC        (0x1000)
-
-/*
-**    Enable/Disable debug messages.
-**    Can be changed at runtime too.
-*/
-
-#ifdef SCSI_NCR_DEBUG_INFO_SUPPORT
-static int ncr_debug = SCSI_NCR_DEBUG_FLAGS;
-       #define DEBUG_FLAGS ncr_debug
-#else
-       #define DEBUG_FLAGS     SCSI_NCR_DEBUG_FLAGS
-#endif
-
-static inline struct list_head *ncr_list_pop(struct list_head *head)
-{
-       if (!list_empty(head)) {
-               struct list_head *elem = head->next;
-
-               list_del(elem);
-               return elem;
-       }
-
-       return NULL;
-}
-
-#ifdef __sparc__
-#include <asm/irq.h>
-#endif
-
-/*==========================================================
-**
-**     Simple power of two buddy-like allocator.
-**
-**     This simple code is not intended to be fast, but to 
-**     provide power of 2 aligned memory allocations.
-**     Since the SCRIPTS processor only supplies 8 bit 
-**     arithmetic, this allocator allows simple and fast 
-**     address calculations  from the SCRIPTS code.
-**     In addition, cache line alignment is guaranteed for 
-**     power of 2 cache line size.
-**     Enhanced in linux-2.3.44 to provide a memory pool 
-**     per pcidev to support dynamic dma mapping. (I would 
-**     have preferred a real bus astraction, btw).
-**
-**==========================================================
-*/
-
-#define MEMO_SHIFT     4       /* 16 bytes minimum memory chunk */
-#if PAGE_SIZE >= 8192
-#define MEMO_PAGE_ORDER        0       /* 1 PAGE  maximum */
-#else
-#define MEMO_PAGE_ORDER        1       /* 2 PAGES maximum */
-#endif
-#define MEMO_FREE_UNUSED       /* Free unused pages immediately */
-#define MEMO_WARN      1
-#define MEMO_GFP_FLAGS GFP_ATOMIC
-#define MEMO_CLUSTER_SHIFT     (PAGE_SHIFT+MEMO_PAGE_ORDER)
-#define MEMO_CLUSTER_SIZE      (1UL << MEMO_CLUSTER_SHIFT)
-#define MEMO_CLUSTER_MASK      (MEMO_CLUSTER_SIZE-1)
-
-typedef u_long m_addr_t;       /* Enough bits to bit-hack addresses */
-typedef struct device *m_bush_t;       /* Something that addresses DMAable */
-
-typedef struct m_link {                /* Link between free memory chunks */
-       struct m_link *next;
-} m_link_s;
-
-typedef struct m_vtob {                /* Virtual to Bus address translation */
-       struct m_vtob *next;
-       m_addr_t vaddr;
-       m_addr_t baddr;
-} m_vtob_s;
-#define VTOB_HASH_SHIFT                5
-#define VTOB_HASH_SIZE         (1UL << VTOB_HASH_SHIFT)
-#define VTOB_HASH_MASK         (VTOB_HASH_SIZE-1)
-#define VTOB_HASH_CODE(m)      \
-       ((((m_addr_t) (m)) >> MEMO_CLUSTER_SHIFT) & VTOB_HASH_MASK)
-
-typedef struct m_pool {                /* Memory pool of a given kind */
-       m_bush_t bush;
-       m_addr_t (*getp)(struct m_pool *);
-       void (*freep)(struct m_pool *, m_addr_t);
-       int nump;
-       m_vtob_s *(vtob[VTOB_HASH_SIZE]);
-       struct m_pool *next;
-       struct m_link h[PAGE_SHIFT-MEMO_SHIFT+MEMO_PAGE_ORDER+1];
-} m_pool_s;
-
-static void *___m_alloc(m_pool_s *mp, int size)
-{
-       int i = 0;
-       int s = (1 << MEMO_SHIFT);
-       int j;
-       m_addr_t a;
-       m_link_s *h = mp->h;
-
-       if (size > (PAGE_SIZE << MEMO_PAGE_ORDER))
-               return NULL;
-
-       while (size > s) {
-               s <<= 1;
-               ++i;
-       }
-
-       j = i;
-       while (!h[j].next) {
-               if (s == (PAGE_SIZE << MEMO_PAGE_ORDER)) {
-                       h[j].next = (m_link_s *)mp->getp(mp);
-                       if (h[j].next)
-                               h[j].next->next = NULL;
-                       break;
-               }
-               ++j;
-               s <<= 1;
-       }
-       a = (m_addr_t) h[j].next;
-       if (a) {
-               h[j].next = h[j].next->next;
-               while (j > i) {
-                       j -= 1;
-                       s >>= 1;
-                       h[j].next = (m_link_s *) (a+s);
-                       h[j].next->next = NULL;
-               }
-       }
-#ifdef DEBUG
-       printk("___m_alloc(%d) = %p\n", size, (void *) a);
-#endif
-       return (void *) a;
-}
-
-static void ___m_free(m_pool_s *mp, void *ptr, int size)
-{
-       int i = 0;
-       int s = (1 << MEMO_SHIFT);
-       m_link_s *q;
-       m_addr_t a, b;
-       m_link_s *h = mp->h;
-
-#ifdef DEBUG
-       printk("___m_free(%p, %d)\n", ptr, size);
-#endif
-
-       if (size > (PAGE_SIZE << MEMO_PAGE_ORDER))
-               return;
-
-       while (size > s) {
-               s <<= 1;
-               ++i;
-       }
-
-       a = (m_addr_t) ptr;
-
-       while (1) {
-#ifdef MEMO_FREE_UNUSED
-               if (s == (PAGE_SIZE << MEMO_PAGE_ORDER)) {
-                       mp->freep(mp, a);
-                       break;
-               }
-#endif
-               b = a ^ s;
-               q = &h[i];
-               while (q->next && q->next != (m_link_s *) b) {
-                       q = q->next;
-               }
-               if (!q->next) {
-                       ((m_link_s *) a)->next = h[i].next;
-                       h[i].next = (m_link_s *) a;
-                       break;
-               }
-               q->next = q->next->next;
-               a = a & b;
-               s <<= 1;
-               ++i;
-       }
-}
-
-static DEFINE_SPINLOCK(ncr53c8xx_lock);
-
-static void *__m_calloc2(m_pool_s *mp, int size, char *name, int uflags)
-{
-       void *p;
-
-       p = ___m_alloc(mp, size);
-
-       if (DEBUG_FLAGS & DEBUG_ALLOC)
-               printk ("new %-10s[%4d] @%p.\n", name, size, p);
-
-       if (p)
-               memset(p, 0, size);
-       else if (uflags & MEMO_WARN)
-               printk (NAME53C8XX ": failed to allocate %s[%d]\n", name, size);
-
-       return p;
-}
-
-#define __m_calloc(mp, s, n)   __m_calloc2(mp, s, n, MEMO_WARN)
-
-static void __m_free(m_pool_s *mp, void *ptr, int size, char *name)
-{
-       if (DEBUG_FLAGS & DEBUG_ALLOC)
-               printk ("freeing %-10s[%4d] @%p.\n", name, size, ptr);
-
-       ___m_free(mp, ptr, size);
-
-}
-
-/*
- * With pci bus iommu support, we use a default pool of unmapped memory 
- * for memory we donnot need to DMA from/to and one pool per pcidev for 
- * memory accessed by the PCI chip. `mp0' is the default not DMAable pool.
- */
-
-static m_addr_t ___mp0_getp(m_pool_s *mp)
-{
-       m_addr_t m = __get_free_pages(MEMO_GFP_FLAGS, MEMO_PAGE_ORDER);
-       if (m)
-               ++mp->nump;
-       return m;
-}
-
-static void ___mp0_freep(m_pool_s *mp, m_addr_t m)
-{
-       free_pages(m, MEMO_PAGE_ORDER);
-       --mp->nump;
-}
-
-static m_pool_s mp0 = {NULL, ___mp0_getp, ___mp0_freep};
-
-/*
- * DMAable pools.
- */
-
-/*
- * With pci bus iommu support, we maintain one pool per pcidev and a 
- * hashed reverse table for virtual to bus physical address translations.
- */
-static m_addr_t ___dma_getp(m_pool_s *mp)
-{
-       m_addr_t vp;
-       m_vtob_s *vbp;
-
-       vbp = __m_calloc(&mp0, sizeof(*vbp), "VTOB");
-       if (vbp) {
-               dma_addr_t daddr;
-               vp = (m_addr_t) dma_alloc_coherent(mp->bush,
-                                               PAGE_SIZE<<MEMO_PAGE_ORDER,
-                                               &daddr, GFP_ATOMIC);
-               if (vp) {
-                       int hc = VTOB_HASH_CODE(vp);
-                       vbp->vaddr = vp;
-                       vbp->baddr = daddr;
-                       vbp->next = mp->vtob[hc];
-                       mp->vtob[hc] = vbp;
-                       ++mp->nump;
-                       return vp;
-               }
-       }
-       if (vbp)
-               __m_free(&mp0, vbp, sizeof(*vbp), "VTOB");
-       return 0;
-}
-
-static void ___dma_freep(m_pool_s *mp, m_addr_t m)
-{
-       m_vtob_s **vbpp, *vbp;
-       int hc = VTOB_HASH_CODE(m);
-
-       vbpp = &mp->vtob[hc];
-       while (*vbpp && (*vbpp)->vaddr != m)
-               vbpp = &(*vbpp)->next;
-       if (*vbpp) {
-               vbp = *vbpp;
-               *vbpp = (*vbpp)->next;
-               dma_free_coherent(mp->bush, PAGE_SIZE<<MEMO_PAGE_ORDER,
-                                 (void *)vbp->vaddr, (dma_addr_t)vbp->baddr);
-               __m_free(&mp0, vbp, sizeof(*vbp), "VTOB");
-               --mp->nump;
-       }
-}
-
-static inline m_pool_s *___get_dma_pool(m_bush_t bush)
-{
-       m_pool_s *mp;
-       for (mp = mp0.next; mp && mp->bush != bush; mp = mp->next);
-       return mp;
-}
-
-static m_pool_s *___cre_dma_pool(m_bush_t bush)
-{
-       m_pool_s *mp;
-       mp = __m_calloc(&mp0, sizeof(*mp), "MPOOL");
-       if (mp) {
-               memset(mp, 0, sizeof(*mp));
-               mp->bush = bush;
-               mp->getp = ___dma_getp;
-               mp->freep = ___dma_freep;
-               mp->next = mp0.next;
-               mp0.next = mp;
-       }
-       return mp;
-}
-
-static void ___del_dma_pool(m_pool_s *p)
-{
-       struct m_pool **pp = &mp0.next;
-
-       while (*pp && *pp != p)
-               pp = &(*pp)->next;
-       if (*pp) {
-               *pp = (*pp)->next;
-               __m_free(&mp0, p, sizeof(*p), "MPOOL");
-       }
-}
-
-static void *__m_calloc_dma(m_bush_t bush, int size, char *name)
-{
-       u_long flags;
-       struct m_pool *mp;
-       void *m = NULL;
-
-       spin_lock_irqsave(&ncr53c8xx_lock, flags);
-       mp = ___get_dma_pool(bush);
-       if (!mp)
-               mp = ___cre_dma_pool(bush);
-       if (mp)
-               m = __m_calloc(mp, size, name);
-       if (mp && !mp->nump)
-               ___del_dma_pool(mp);
-       spin_unlock_irqrestore(&ncr53c8xx_lock, flags);
-
-       return m;
-}
-
-static void __m_free_dma(m_bush_t bush, void *m, int size, char *name)
-{
-       u_long flags;
-       struct m_pool *mp;
-
-       spin_lock_irqsave(&ncr53c8xx_lock, flags);
-       mp = ___get_dma_pool(bush);
-       if (mp)
-               __m_free(mp, m, size, name);
-       if (mp && !mp->nump)
-               ___del_dma_pool(mp);
-       spin_unlock_irqrestore(&ncr53c8xx_lock, flags);
-}
-
-static m_addr_t __vtobus(m_bush_t bush, void *m)
-{
-       u_long flags;
-       m_pool_s *mp;
-       int hc = VTOB_HASH_CODE(m);
-       m_vtob_s *vp = NULL;
-       m_addr_t a = ((m_addr_t) m) & ~MEMO_CLUSTER_MASK;
-
-       spin_lock_irqsave(&ncr53c8xx_lock, flags);
-       mp = ___get_dma_pool(bush);
-       if (mp) {
-               vp = mp->vtob[hc];
-               while (vp && (m_addr_t) vp->vaddr != a)
-                       vp = vp->next;
-       }
-       spin_unlock_irqrestore(&ncr53c8xx_lock, flags);
-       return vp ? vp->baddr + (((m_addr_t) m) - a) : 0;
-}
-
-#define _m_calloc_dma(np, s, n)                __m_calloc_dma(np->dev, s, n)
-#define _m_free_dma(np, p, s, n)       __m_free_dma(np->dev, p, s, n)
-#define m_calloc_dma(s, n)             _m_calloc_dma(np, s, n)
-#define m_free_dma(p, s, n)            _m_free_dma(np, p, s, n)
-#define _vtobus(np, p)                 __vtobus(np->dev, p)
-#define vtobus(p)                      _vtobus(np, p)
-
-/*
- *  Deal with DMA mapping/unmapping.
- */
-
-/* To keep track of the dma mapping (sg/single) that has been set */
-#define __data_mapped  SCp.phase
-#define __data_mapping SCp.have_data_in
-
-static void __unmap_scsi_data(struct device *dev, struct scsi_cmnd *cmd)
-{
-       switch(cmd->__data_mapped) {
-       case 2:
-               dma_unmap_sg(dev, cmd->buffer, cmd->use_sg,
-                               cmd->sc_data_direction);
-               break;
-       case 1:
-               dma_unmap_single(dev, cmd->__data_mapping,
-                                cmd->request_bufflen,
-                                cmd->sc_data_direction);
-               break;
-       }
-       cmd->__data_mapped = 0;
-}
-
-static u_long __map_scsi_single_data(struct device *dev, struct scsi_cmnd *cmd)
-{
-       dma_addr_t mapping;
-
-       if (cmd->request_bufflen == 0)
-               return 0;
-
-       mapping = dma_map_single(dev, cmd->request_buffer,
-                                cmd->request_bufflen,
-                                cmd->sc_data_direction);
-       cmd->__data_mapped = 1;
-       cmd->__data_mapping = mapping;
-
-       return mapping;
-}
-
-static int __map_scsi_sg_data(struct device *dev, struct scsi_cmnd *cmd)
-{
-       int use_sg;
-
-       if (cmd->use_sg == 0)
-               return 0;
-
-       use_sg = dma_map_sg(dev, cmd->buffer, cmd->use_sg,
-                       cmd->sc_data_direction);
-       cmd->__data_mapped = 2;
-       cmd->__data_mapping = use_sg;
-
-       return use_sg;
-}
-
-#define unmap_scsi_data(np, cmd)       __unmap_scsi_data(np->dev, cmd)
-#define map_scsi_single_data(np, cmd)  __map_scsi_single_data(np->dev, cmd)
-#define map_scsi_sg_data(np, cmd)      __map_scsi_sg_data(np->dev, cmd)
-
-/*==========================================================
-**
-**     Driver setup.
-**
-**     This structure is initialized from linux config 
-**     options. It can be overridden at boot-up by the boot 
-**     command line.
-**
-**==========================================================
-*/
-static struct ncr_driver_setup
-       driver_setup                    = SCSI_NCR_DRIVER_SETUP;
-
-#ifdef SCSI_NCR_BOOT_COMMAND_LINE_SUPPORT
-static struct ncr_driver_setup
-       driver_safe_setup __initdata    = SCSI_NCR_DRIVER_SAFE_SETUP;
-#endif
-
-#define initverbose (driver_setup.verbose)
-#define bootverbose (np->verbose)
-
-
-/*===================================================================
-**
-**     Driver setup from the boot command line
-**
-**===================================================================
-*/
-
-#ifdef MODULE
-#define        ARG_SEP ' '
-#else
-#define        ARG_SEP ','
-#endif
-
-#define OPT_TAGS               1
-#define OPT_MASTER_PARITY      2
-#define OPT_SCSI_PARITY                3
-#define OPT_DISCONNECTION      4
-#define OPT_SPECIAL_FEATURES   5
-#define OPT_UNUSED_1           6
-#define OPT_FORCE_SYNC_NEGO    7
-#define OPT_REVERSE_PROBE      8
-#define OPT_DEFAULT_SYNC       9
-#define OPT_VERBOSE            10
-#define OPT_DEBUG              11
-#define OPT_BURST_MAX          12
-#define OPT_LED_PIN            13
-#define OPT_MAX_WIDE           14
-#define OPT_SETTLE_DELAY       15
-#define OPT_DIFF_SUPPORT       16
-#define OPT_IRQM               17
-#define OPT_PCI_FIX_UP         18
-#define OPT_BUS_CHECK          19
-#define OPT_OPTIMIZE           20
-#define OPT_RECOVERY           21
-#define OPT_SAFE_SETUP         22
-#define OPT_USE_NVRAM          23
-#define OPT_EXCLUDE            24
-#define OPT_HOST_ID            25
-
-#ifdef SCSI_NCR_IARB_SUPPORT
-#define OPT_IARB               26
-#endif
-
-static char setup_token[] __initdata = 
-       "tags:"   "mpar:"
-       "spar:"   "disc:"
-       "specf:"  "ultra:"
-       "fsn:"    "revprob:"
-       "sync:"   "verb:"
-       "debug:"  "burst:"
-       "led:"    "wide:"
-       "settle:" "diff:"
-       "irqm:"   "pcifix:"
-       "buschk:" "optim:"
-       "recovery:"
-       "safe:"   "nvram:"
-       "excl:"   "hostid:"
-#ifdef SCSI_NCR_IARB_SUPPORT
-       "iarb:"
-#endif
-       ;       /* DONNOT REMOVE THIS ';' */
-
-#ifdef MODULE
-#define        ARG_SEP ' '
-#else
-#define        ARG_SEP ','
-#endif
-
-static int __init get_setup_token(char *p)
-{
-       char *cur = setup_token;
-       char *pc;
-       int i = 0;
-
-       while (cur != NULL && (pc = strchr(cur, ':')) != NULL) {
-               ++pc;
-               ++i;
-               if (!strncmp(p, cur, pc - cur))
-                       return i;
-               cur = pc;
-       }
-       return 0;
-}
-
-
-static int __init sym53c8xx__setup(char *str)
-{
-#ifdef SCSI_NCR_BOOT_COMMAND_LINE_SUPPORT
-       char *cur = str;
-       char *pc, *pv;
-       int i, val, c;
-       int xi = 0;
-
-       while (cur != NULL && (pc = strchr(cur, ':')) != NULL) {
-               char *pe;
-
-               val = 0;
-               pv = pc;
-               c = *++pv;
-
-               if      (c == 'n')
-                       val = 0;
-               else if (c == 'y')
-                       val = 1;
-               else
-                       val = (int) simple_strtoul(pv, &pe, 0);
-
-               switch (get_setup_token(cur)) {
-               case OPT_TAGS:
-                       driver_setup.default_tags = val;
-                       if (pe && *pe == '/') {
-                               i = 0;
-                               while (*pe && *pe != ARG_SEP && 
-                                       i < sizeof(driver_setup.tag_ctrl)-1) {
-                                       driver_setup.tag_ctrl[i++] = *pe++;
-                               }
-                               driver_setup.tag_ctrl[i] = '\0';
-                       }
-                       break;
-               case OPT_MASTER_PARITY:
-                       driver_setup.master_parity = val;
-                       break;
-               case OPT_SCSI_PARITY:
-                       driver_setup.scsi_parity = val;
-                       break;
-               case OPT_DISCONNECTION:
-                       driver_setup.disconnection = val;
-                       break;
-               case OPT_SPECIAL_FEATURES:
-                       driver_setup.special_features = val;
-                       break;
-               case OPT_FORCE_SYNC_NEGO:
-                       driver_setup.force_sync_nego = val;
-                       break;
-               case OPT_REVERSE_PROBE:
-                       driver_setup.reverse_probe = val;
-                       break;
-               case OPT_DEFAULT_SYNC:
-                       driver_setup.default_sync = val;
-                       break;
-               case OPT_VERBOSE:
-                       driver_setup.verbose = val;
-                       break;
-               case OPT_DEBUG:
-                       driver_setup.debug = val;
-                       break;
-               case OPT_BURST_MAX:
-                       driver_setup.burst_max = val;
-                       break;
-               case OPT_LED_PIN:
-                       driver_setup.led_pin = val;
-                       break;
-               case OPT_MAX_WIDE:
-                       driver_setup.max_wide = val? 1:0;
-                       break;
-               case OPT_SETTLE_DELAY:
-                       driver_setup.settle_delay = val;
-                       break;
-               case OPT_DIFF_SUPPORT:
-                       driver_setup.diff_support = val;
-                       break;
-               case OPT_IRQM:
-                       driver_setup.irqm = val;
-                       break;
-               case OPT_PCI_FIX_UP:
-                       driver_setup.pci_fix_up = val;
-                       break;
-               case OPT_BUS_CHECK:
-                       driver_setup.bus_check = val;
-                       break;
-               case OPT_OPTIMIZE:
-                       driver_setup.optimize = val;
-                       break;
-               case OPT_RECOVERY:
-                       driver_setup.recovery = val;
-                       break;
-               case OPT_USE_NVRAM:
-                       driver_setup.use_nvram = val;
-                       break;
-               case OPT_SAFE_SETUP:
-                       memcpy(&driver_setup, &driver_safe_setup,
-                               sizeof(driver_setup));
-                       break;
-               case OPT_EXCLUDE:
-                       if (xi < SCSI_NCR_MAX_EXCLUDES)
-                               driver_setup.excludes[xi++] = val;
-                       break;
-               case OPT_HOST_ID:
-                       driver_setup.host_id = val;
-                       break;
-#ifdef SCSI_NCR_IARB_SUPPORT
-               case OPT_IARB:
-                       driver_setup.iarb = val;
-                       break;
-#endif
-               default:
-                       printk("sym53c8xx_setup: unexpected boot option '%.*s' ignored\n", (int)(pc-cur+1), cur);
-                       break;
-               }
-
-               if ((cur = strchr(cur, ARG_SEP)) != NULL)
-                       ++cur;
-       }
-#endif /* SCSI_NCR_BOOT_COMMAND_LINE_SUPPORT */
-       return 1;
-}
-
-/*===================================================================
-**
-**     Get device queue depth from boot command line.
-**
-**===================================================================
-*/
-#define DEF_DEPTH      (driver_setup.default_tags)
-#define ALL_TARGETS    -2
-#define NO_TARGET      -1
-#define ALL_LUNS       -2
-#define NO_LUN         -1
-
-static int device_queue_depth(int unit, int target, int lun)
-{
-       int c, h, t, u, v;
-       char *p = driver_setup.tag_ctrl;
-       char *ep;
-
-       h = -1;
-       t = NO_TARGET;
-       u = NO_LUN;
-       while ((c = *p++) != 0) {
-               v = simple_strtoul(p, &ep, 0);
-               switch(c) {
-               case '/':
-                       ++h;
-                       t = ALL_TARGETS;
-                       u = ALL_LUNS;
-                       break;
-               case 't':
-                       if (t != target)
-                               t = (target == v) ? v : NO_TARGET;
-                       u = ALL_LUNS;
-                       break;
-               case 'u':
-                       if (u != lun)
-                               u = (lun == v) ? v : NO_LUN;
-                       break;
-               case 'q':
-                       if (h == unit &&
-                               (t == ALL_TARGETS || t == target) &&
-                               (u == ALL_LUNS    || u == lun))
-                               return v;
-                       break;
-               case '-':
-                       t = ALL_TARGETS;
-                       u = ALL_LUNS;
-                       break;
-               default:
-                       break;
-               }
-               p = ep;
-       }
-       return DEF_DEPTH;
-}
diff --git a/drivers/scsi/sym53c8xx_defs.h b/drivers/scsi/sym53c8xx_defs.h
deleted file mode 100644 (file)
index 139cd0e..0000000
+++ /dev/null
@@ -1,1320 +0,0 @@
-/******************************************************************************
-**  High Performance device driver for the Symbios 53C896 controller.
-**
-**  Copyright (C) 1998-2001  Gerard Roudier <groudier@free.fr>
-**
-**  This driver also supports all the Symbios 53C8XX controller family, 
-**  except 53C810 revisions < 16, 53C825 revisions < 16 and all 
-**  revisions of 53C815 controllers.
-**
-**  This driver is based on the Linux port of the FreeBSD ncr driver.
-** 
-**  Copyright (C) 1994  Wolfgang Stanglmeier
-**  
-**-----------------------------------------------------------------------------
-**  
-**  This program is free software; you can redistribute it and/or modify
-**  it under the terms of the GNU General Public License as published by
-**  the Free Software Foundation; either version 2 of the License, or
-**  (at your option) any later version.
-**
-**  This program is distributed in the hope that it will be useful,
-**  but WITHOUT ANY WARRANTY; without even the implied warranty of
-**  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-**  GNU General Public License for more details.
-**
-**  You should have received a copy of the GNU General Public License
-**  along with this program; if not, write to the Free Software
-**  Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
-**
-**-----------------------------------------------------------------------------
-**
-**  The Linux port of the FreeBSD ncr driver has been achieved in 
-**  november 1995 by:
-**
-**          Gerard Roudier              <groudier@free.fr>
-**
-**  Being given that this driver originates from the FreeBSD version, and
-**  in order to keep synergy on both, any suggested enhancements and corrections
-**  received on Linux are automatically a potential candidate for the FreeBSD 
-**  version.
-**
-**  The original driver has been written for 386bsd and FreeBSD by
-**          Wolfgang Stanglmeier        <wolf@cologne.de>
-**          Stefan Esser                <se@mi.Uni-Koeln.de>
-**
-**-----------------------------------------------------------------------------
-**
-**  Major contributions:
-**  --------------------
-**
-**  NVRAM detection and reading.
-**    Copyright (C) 1997 Richard Waltham <dormouse@farsrobt.demon.co.uk>
-**
-**  Added support for MIPS big endian systems.
-**    Carsten Langgaard, carstenl@mips.com
-**    Copyright (C) 2000 MIPS Technologies, Inc.  All rights reserved.
-**
-**  Added support for HP PARISC big endian systems.
-**    Copyright (C) 2000 MIPS Technologies, Inc.  All rights reserved.
-**
-*******************************************************************************
-*/
-
-#ifndef SYM53C8XX_DEFS_H
-#define SYM53C8XX_DEFS_H
-
-#include <linux/config.h>
-
-/*
-**     If you want a driver as small as possible, donnot define the 
-**     following options.
-*/
-#define SCSI_NCR_BOOT_COMMAND_LINE_SUPPORT
-#define SCSI_NCR_DEBUG_INFO_SUPPORT
-
-/*
-**     To disable integrity checking, do not define the 
-**     following option.
-*/
-#ifdef CONFIG_SCSI_NCR53C8XX_INTEGRITY_CHECK
-#      define SCSI_NCR_ENABLE_INTEGRITY_CHECK
-#endif
-
-/* ---------------------------------------------------------------------
-** Take into account kernel configured parameters.
-** Most of these options can be overridden at startup by a command line.
-** ---------------------------------------------------------------------
-*/
-
-/*
- * For Ultra2 and Ultra3 SCSI support option, use special features. 
- *
- * Value (default) means:
- *     bit 0 : all features enabled, except:
- *             bit 1 : PCI Write And Invalidate.
- *             bit 2 : Data Phase Mismatch handling from SCRIPTS.
- *
- * Use boot options ncr53c8xx=specf:1 if you want all chip features to be 
- * enabled by the driver.
- */
-#define        SCSI_NCR_SETUP_SPECIAL_FEATURES         (3)
-
-#define SCSI_NCR_MAX_SYNC                      (80)
-
-/*
- * Allow tags from 2 to 256, default 8
- */
-#ifdef CONFIG_SCSI_NCR53C8XX_MAX_TAGS
-#if    CONFIG_SCSI_NCR53C8XX_MAX_TAGS < 2
-#define SCSI_NCR_MAX_TAGS      (2)
-#elif  CONFIG_SCSI_NCR53C8XX_MAX_TAGS > 256
-#define SCSI_NCR_MAX_TAGS      (256)
-#else
-#define        SCSI_NCR_MAX_TAGS       CONFIG_SCSI_NCR53C8XX_MAX_TAGS
-#endif
-#else
-#define SCSI_NCR_MAX_TAGS      (8)
-#endif
-
-/*
- * Allow tagged command queuing support if configured with default number 
- * of tags set to max (see above).
- */
-#ifdef CONFIG_SCSI_NCR53C8XX_DEFAULT_TAGS
-#define        SCSI_NCR_SETUP_DEFAULT_TAGS     CONFIG_SCSI_NCR53C8XX_DEFAULT_TAGS
-#elif  defined CONFIG_SCSI_NCR53C8XX_TAGGED_QUEUE
-#define        SCSI_NCR_SETUP_DEFAULT_TAGS     SCSI_NCR_MAX_TAGS
-#else
-#define        SCSI_NCR_SETUP_DEFAULT_TAGS     (0)
-#endif
-
-/*
- * Immediate arbitration
- */
-#if defined(CONFIG_SCSI_NCR53C8XX_IARB)
-#define SCSI_NCR_IARB_SUPPORT
-#endif
-
-/*
- * Sync transfer frequency at startup.
- * Allow from 5Mhz to 80Mhz default 20 Mhz.
- */
-#ifndef        CONFIG_SCSI_NCR53C8XX_SYNC
-#define        CONFIG_SCSI_NCR53C8XX_SYNC      (20)
-#elif  CONFIG_SCSI_NCR53C8XX_SYNC > SCSI_NCR_MAX_SYNC
-#undef CONFIG_SCSI_NCR53C8XX_SYNC
-#define        CONFIG_SCSI_NCR53C8XX_SYNC      SCSI_NCR_MAX_SYNC
-#endif
-
-#if    CONFIG_SCSI_NCR53C8XX_SYNC == 0
-#define        SCSI_NCR_SETUP_DEFAULT_SYNC     (255)
-#elif  CONFIG_SCSI_NCR53C8XX_SYNC <= 5
-#define        SCSI_NCR_SETUP_DEFAULT_SYNC     (50)
-#elif  CONFIG_SCSI_NCR53C8XX_SYNC <= 20
-#define        SCSI_NCR_SETUP_DEFAULT_SYNC     (250/(CONFIG_SCSI_NCR53C8XX_SYNC))
-#elif  CONFIG_SCSI_NCR53C8XX_SYNC <= 33
-#define        SCSI_NCR_SETUP_DEFAULT_SYNC     (11)
-#elif  CONFIG_SCSI_NCR53C8XX_SYNC <= 40
-#define        SCSI_NCR_SETUP_DEFAULT_SYNC     (10)
-#else
-#define        SCSI_NCR_SETUP_DEFAULT_SYNC     (9)
-#endif
-
-/*
- * Disallow disconnections at boot-up
- */
-#ifdef CONFIG_SCSI_NCR53C8XX_NO_DISCONNECT
-#define SCSI_NCR_SETUP_DISCONNECTION   (0)
-#else
-#define SCSI_NCR_SETUP_DISCONNECTION   (1)
-#endif
-
-/*
- * Force synchronous negotiation for all targets
- */
-#ifdef CONFIG_SCSI_NCR53C8XX_FORCE_SYNC_NEGO
-#define SCSI_NCR_SETUP_FORCE_SYNC_NEGO (1)
-#else
-#define SCSI_NCR_SETUP_FORCE_SYNC_NEGO (0)
-#endif
-
-/*
- * Disable master parity checking (flawed hardwares need that)
- */
-#ifdef CONFIG_SCSI_NCR53C8XX_DISABLE_MPARITY_CHECK
-#define SCSI_NCR_SETUP_MASTER_PARITY   (0)
-#else
-#define SCSI_NCR_SETUP_MASTER_PARITY   (1)
-#endif
-
-/*
- * Disable scsi parity checking (flawed devices may need that)
- */
-#ifdef CONFIG_SCSI_NCR53C8XX_DISABLE_PARITY_CHECK
-#define SCSI_NCR_SETUP_SCSI_PARITY     (0)
-#else
-#define SCSI_NCR_SETUP_SCSI_PARITY     (1)
-#endif
-
-/*
- * Settle time after reset at boot-up
- */
-#define SCSI_NCR_SETUP_SETTLE_TIME     (2)
-
-/*
-**     Bridge quirks work-around option defaulted to 1.
-*/
-#ifndef        SCSI_NCR_PCIQ_WORK_AROUND_OPT
-#define        SCSI_NCR_PCIQ_WORK_AROUND_OPT   1
-#endif
-
-/*
-**     Work-around common bridge misbehaviour.
-**
-**     - Do not flush posted writes in the opposite 
-**       direction on read.
-**     - May reorder DMA writes to memory.
-**
-**     This option should not affect performances 
-**     significantly, so it is the default.
-*/
-#if    SCSI_NCR_PCIQ_WORK_AROUND_OPT == 1
-#define        SCSI_NCR_PCIQ_MAY_NOT_FLUSH_PW_UPSTREAM
-#define        SCSI_NCR_PCIQ_MAY_REORDER_WRITES
-#define        SCSI_NCR_PCIQ_MAY_MISS_COMPLETIONS
-
-/*
-**     Same as option 1, but also deal with 
-**     misconfigured interrupts.
-**
-**     - Edge triggerred instead of level sensitive.
-**     - No interrupt line connected.
-**     - IRQ number misconfigured.
-**     
-**     If no interrupt is delivered, the driver will 
-**     catch the interrupt conditions 10 times per 
-**     second. No need to say that this option is 
-**     not recommended.
-*/
-#elif  SCSI_NCR_PCIQ_WORK_AROUND_OPT == 2
-#define        SCSI_NCR_PCIQ_MAY_NOT_FLUSH_PW_UPSTREAM
-#define        SCSI_NCR_PCIQ_MAY_REORDER_WRITES
-#define        SCSI_NCR_PCIQ_MAY_MISS_COMPLETIONS
-#define        SCSI_NCR_PCIQ_BROKEN_INTR
-
-/*
-**     Some bridge designers decided to flush 
-**     everything prior to deliver the interrupt.
-**     This option tries to deal with such a 
-**     behaviour.
-*/
-#elif  SCSI_NCR_PCIQ_WORK_AROUND_OPT == 3
-#define        SCSI_NCR_PCIQ_SYNC_ON_INTR
-#endif
-
-/*
-**     Other parameters not configurable with "make config"
-**     Avoid to change these constants, unless you know what you are doing.
-*/
-
-#define SCSI_NCR_ALWAYS_SIMPLE_TAG
-#define SCSI_NCR_MAX_SCATTER   (127)
-#define SCSI_NCR_MAX_TARGET    (16)
-
-/*
-**   Compute some desirable value for CAN_QUEUE 
-**   and CMD_PER_LUN.
-**   The driver will use lower values if these 
-**   ones appear to be too large.
-*/
-#define SCSI_NCR_CAN_QUEUE     (8*SCSI_NCR_MAX_TAGS + 2*SCSI_NCR_MAX_TARGET)
-#define SCSI_NCR_CMD_PER_LUN   (SCSI_NCR_MAX_TAGS)
-
-#define SCSI_NCR_SG_TABLESIZE  (SCSI_NCR_MAX_SCATTER)
-#define SCSI_NCR_TIMER_INTERVAL        (HZ)
-
-#if 1 /* defined CONFIG_SCSI_MULTI_LUN */
-#define SCSI_NCR_MAX_LUN       (16)
-#else
-#define SCSI_NCR_MAX_LUN       (1)
-#endif
-
-/*
- *  IO functions definition for big/little endian CPU support.
- *  For now, the NCR is only supported in little endian addressing mode, 
- */
-
-#ifdef __BIG_ENDIAN
-
-#define        inw_l2b         inw
-#define        inl_l2b         inl
-#define        outw_b2l        outw
-#define        outl_b2l        outl
-
-#define        readb_raw       readb
-#define        writeb_raw      writeb
-
-#if defined(SCSI_NCR_BIG_ENDIAN)
-#define        readw_l2b       __raw_readw
-#define        readl_l2b       __raw_readl
-#define        writew_b2l      __raw_writew
-#define        writel_b2l      __raw_writel
-#define        readw_raw       __raw_readw
-#define        readl_raw       __raw_readl
-#define        writew_raw      __raw_writew
-#define        writel_raw      __raw_writel
-#else  /* Other big-endian */
-#define        readw_l2b       readw
-#define        readl_l2b       readl
-#define        writew_b2l      writew
-#define        writel_b2l      writel
-#define        readw_raw       readw
-#define        readl_raw       readl
-#define        writew_raw      writew
-#define        writel_raw      writel
-#endif
-
-#else  /* little endian */
-
-#define        inw_raw         inw
-#define        inl_raw         inl
-#define        outw_raw        outw
-#define        outl_raw        outl
-
-#define        readb_raw       readb
-#define        readw_raw       readw
-#define        readl_raw       readl
-#define        writeb_raw      writeb
-#define        writew_raw      writew
-#define        writel_raw      writel
-
-#endif
-
-#if !defined(__hppa__) && !defined(__mips__)
-#ifdef SCSI_NCR_BIG_ENDIAN
-#error "The NCR in BIG ENDIAN addressing mode is not (yet) supported"
-#endif
-#endif
-
-#define MEMORY_BARRIER()       mb()
-
-
-/*
- *  If the NCR uses big endian addressing mode over the 
- *  PCI, actual io register addresses for byte and word 
- *  accesses must be changed according to lane routing.
- *  Btw, ncr_offb() and ncr_offw() macros only apply to 
- *  constants and so donnot generate bloated code.
- */
-
-#if    defined(SCSI_NCR_BIG_ENDIAN)
-
-#define ncr_offb(o)    (((o)&~3)+((~((o)&3))&3))
-#define ncr_offw(o)    (((o)&~3)+((~((o)&3))&2))
-
-#else
-
-#define ncr_offb(o)    (o)
-#define ncr_offw(o)    (o)
-
-#endif
-
-/*
- *  If the CPU and the NCR use same endian-ness addressing,
- *  no byte reordering is needed for script patching.
- *  Macro cpu_to_scr() is to be used for script patching.
- *  Macro scr_to_cpu() is to be used for getting a DWORD 
- *  from the script.
- */
-
-#if    defined(__BIG_ENDIAN) && !defined(SCSI_NCR_BIG_ENDIAN)
-
-#define cpu_to_scr(dw) cpu_to_le32(dw)
-#define scr_to_cpu(dw) le32_to_cpu(dw)
-
-#elif  defined(__LITTLE_ENDIAN) && defined(SCSI_NCR_BIG_ENDIAN)
-
-#define cpu_to_scr(dw) cpu_to_be32(dw)
-#define scr_to_cpu(dw) be32_to_cpu(dw)
-
-#else
-
-#define cpu_to_scr(dw) (dw)
-#define scr_to_cpu(dw) (dw)
-
-#endif
-
-/*
- *  Access to the controller chip.
- *
- *  If the CPU and the NCR use same endian-ness addressing,
- *  no byte reordering is needed for accessing chip io 
- *  registers. Functions suffixed by '_raw' are assumed 
- *  to access the chip over the PCI without doing byte 
- *  reordering. Functions suffixed by '_l2b' are 
- *  assumed to perform little-endian to big-endian byte 
- *  reordering, those suffixed by '_b2l' blah, blah,
- *  blah, ...
- */
-
-/*
- *  MEMORY mapped IO input / output
- */
-
-#define INB_OFF(o)             readb_raw((char __iomem *)np->reg + ncr_offb(o))
-#define OUTB_OFF(o, val)       writeb_raw((val), (char __iomem *)np->reg + ncr_offb(o))
-
-#if    defined(__BIG_ENDIAN) && !defined(SCSI_NCR_BIG_ENDIAN)
-
-#define INW_OFF(o)             readw_l2b((char __iomem *)np->reg + ncr_offw(o))
-#define INL_OFF(o)             readl_l2b((char __iomem *)np->reg + (o))
-
-#define OUTW_OFF(o, val)       writew_b2l((val), (char __iomem *)np->reg + ncr_offw(o))
-#define OUTL_OFF(o, val)       writel_b2l((val), (char __iomem *)np->reg + (o))
-
-#elif  defined(__LITTLE_ENDIAN) && defined(SCSI_NCR_BIG_ENDIAN)
-
-#define INW_OFF(o)             readw_b2l((char __iomem *)np->reg + ncr_offw(o))
-#define INL_OFF(o)             readl_b2l((char __iomem *)np->reg + (o))
-
-#define OUTW_OFF(o, val)       writew_l2b((val), (char __iomem *)np->reg + ncr_offw(o))
-#define OUTL_OFF(o, val)       writel_l2b((val), (char __iomem *)np->reg + (o))
-
-#else
-
-#ifdef CONFIG_SCSI_NCR53C8XX_NO_WORD_TRANSFERS
-/* Only 8 or 32 bit transfers allowed */
-#define INW_OFF(o)             (readb((char __iomem *)np->reg + ncr_offw(o)) << 8 | readb((char __iomem *)np->reg + ncr_offw(o) + 1))
-#else
-#define INW_OFF(o)             readw_raw((char __iomem *)np->reg + ncr_offw(o))
-#endif
-#define INL_OFF(o)             readl_raw((char __iomem *)np->reg + (o))
-
-#ifdef CONFIG_SCSI_NCR53C8XX_NO_WORD_TRANSFERS
-/* Only 8 or 32 bit transfers allowed */
-#define OUTW_OFF(o, val)       do { writeb((char)((val) >> 8), (char __iomem *)np->reg + ncr_offw(o)); writeb((char)(val), (char __iomem *)np->reg + ncr_offw(o) + 1); } while (0)
-#else
-#define OUTW_OFF(o, val)       writew_raw((val), (char __iomem *)np->reg + ncr_offw(o))
-#endif
-#define OUTL_OFF(o, val)       writel_raw((val), (char __iomem *)np->reg + (o))
-
-#endif
-
-#define INB(r)         INB_OFF (offsetof(struct ncr_reg,r))
-#define INW(r)         INW_OFF (offsetof(struct ncr_reg,r))
-#define INL(r)         INL_OFF (offsetof(struct ncr_reg,r))
-
-#define OUTB(r, val)   OUTB_OFF (offsetof(struct ncr_reg,r), (val))
-#define OUTW(r, val)   OUTW_OFF (offsetof(struct ncr_reg,r), (val))
-#define OUTL(r, val)   OUTL_OFF (offsetof(struct ncr_reg,r), (val))
-
-/*
- *  Set bit field ON, OFF 
- */
-
-#define OUTONB(r, m)   OUTB(r, INB(r) | (m))
-#define OUTOFFB(r, m)  OUTB(r, INB(r) & ~(m))
-#define OUTONW(r, m)   OUTW(r, INW(r) | (m))
-#define OUTOFFW(r, m)  OUTW(r, INW(r) & ~(m))
-#define OUTONL(r, m)   OUTL(r, INL(r) | (m))
-#define OUTOFFL(r, m)  OUTL(r, INL(r) & ~(m))
-
-/*
- *  We normally want the chip to have a consistent view
- *  of driver internal data structures when we restart it.
- *  Thus these macros.
- */
-#define OUTL_DSP(v)                            \
-       do {                                    \
-               MEMORY_BARRIER();               \
-               OUTL (nc_dsp, (v));             \
-       } while (0)
-
-#define OUTONB_STD()                           \
-       do {                                    \
-               MEMORY_BARRIER();               \
-               OUTONB (nc_dcntl, (STD|NOCOM)); \
-       } while (0)
-
-
-/*
-**   NCR53C8XX devices features table.
-*/
-struct ncr_chip {
-       unsigned short  revision_id;
-       unsigned char   burst_max;      /* log-base-2 of max burst */
-       unsigned char   offset_max;
-       unsigned char   nr_divisor;
-       unsigned int    features;
-#define FE_LED0                (1<<0)
-#define FE_WIDE                (1<<1)    /* Wide data transfers */
-#define FE_ULTRA       (1<<2)    /* Ultra speed 20Mtrans/sec */
-#define FE_DBLR                (1<<4)    /* Clock doubler present */
-#define FE_QUAD                (1<<5)    /* Clock quadrupler present */
-#define FE_ERL         (1<<6)    /* Enable read line */
-#define FE_CLSE                (1<<7)    /* Cache line size enable */
-#define FE_WRIE                (1<<8)    /* Write & Invalidate enable */
-#define FE_ERMP                (1<<9)    /* Enable read multiple */
-#define FE_BOF         (1<<10)   /* Burst opcode fetch */
-#define FE_DFS         (1<<11)   /* DMA fifo size */
-#define FE_PFEN                (1<<12)   /* Prefetch enable */
-#define FE_LDSTR       (1<<13)   /* Load/Store supported */
-#define FE_RAM         (1<<14)   /* On chip RAM present */
-#define FE_VARCLK      (1<<15)   /* SCSI clock may vary */
-#define FE_RAM8K       (1<<16)   /* On chip RAM sized 8Kb */
-#define FE_64BIT       (1<<17)   /* Have a 64-bit PCI interface */
-#define FE_IO256       (1<<18)   /* Requires full 256 bytes in PCI space */
-#define FE_NOPM                (1<<19)   /* Scripts handles phase mismatch */
-#define FE_LEDC                (1<<20)   /* Hardware control of LED */
-#define FE_DIFF                (1<<21)   /* Support Differential SCSI */
-#define FE_66MHZ       (1<<23)   /* 66MHz PCI Support */
-#define FE_DAC         (1<<24)   /* Support DAC cycles (64 bit addressing) */
-#define FE_ISTAT1      (1<<25)   /* Have ISTAT1, MBOX0, MBOX1 registers */
-#define FE_DAC_IN_USE  (1<<26)   /* Platform does DAC cycles */
-#define FE_EHP         (1<<27)   /* 720: Even host parity */
-#define FE_MUX         (1<<28)   /* 720: Multiplexed bus */
-#define FE_EA          (1<<29)   /* 720: Enable Ack */
-
-#define FE_CACHE_SET   (FE_ERL|FE_CLSE|FE_WRIE|FE_ERMP)
-#define FE_SCSI_SET    (FE_WIDE|FE_ULTRA|FE_DBLR|FE_QUAD|F_CLK80)
-#define FE_SPECIAL_SET (FE_CACHE_SET|FE_BOF|FE_DFS|FE_LDSTR|FE_PFEN|FE_RAM)
-};
-
-
-/*
-**     Driver setup structure.
-**
-**     This structure is initialized from linux config options.
-**     It can be overridden at boot-up by the boot command line.
-*/
-#define SCSI_NCR_MAX_EXCLUDES 8
-struct ncr_driver_setup {
-       u8      master_parity;
-       u8      scsi_parity;
-       u8      disconnection;
-       u8      special_features;
-       u8      force_sync_nego;
-       u8      reverse_probe;
-       u8      pci_fix_up;
-       u8      use_nvram;
-       u8      verbose;
-       u8      default_tags;
-       u16     default_sync;
-       u16     debug;
-       u8      burst_max;
-       u8      led_pin;
-       u8      max_wide;
-       u8      settle_delay;
-       u8      diff_support;
-       u8      irqm;
-       u8      bus_check;
-       u8      optimize;
-       u8      recovery;
-       u8      host_id;
-       u16     iarb;
-       u32     excludes[SCSI_NCR_MAX_EXCLUDES];
-       char    tag_ctrl[100];
-};
-
-/*
-**     Initial setup.
-**     Can be overriden at startup by a command line.
-*/
-#define SCSI_NCR_DRIVER_SETUP                  \
-{                                              \
-       SCSI_NCR_SETUP_MASTER_PARITY,           \
-       SCSI_NCR_SETUP_SCSI_PARITY,             \
-       SCSI_NCR_SETUP_DISCONNECTION,           \
-       SCSI_NCR_SETUP_SPECIAL_FEATURES,        \
-       SCSI_NCR_SETUP_FORCE_SYNC_NEGO,         \
-       0,                                      \
-       0,                                      \
-       1,                                      \
-       0,                                      \
-       SCSI_NCR_SETUP_DEFAULT_TAGS,            \
-       SCSI_NCR_SETUP_DEFAULT_SYNC,            \
-       0x00,                                   \
-       7,                                      \
-       0,                                      \
-       1,                                      \
-       SCSI_NCR_SETUP_SETTLE_TIME,             \
-       0,                                      \
-       0,                                      \
-       1,                                      \
-       0,                                      \
-       0,                                      \
-       255,                                    \
-       0x00                                    \
-}
-
-/*
-**     Boot fail safe setup.
-**     Override initial setup from boot command line:
-**     ncr53c8xx=safe:y
-*/
-#define SCSI_NCR_DRIVER_SAFE_SETUP             \
-{                                              \
-       0,                                      \
-       1,                                      \
-       0,                                      \
-       0,                                      \
-       0,                                      \
-       0,                                      \
-       0,                                      \
-       1,                                      \
-       2,                                      \
-       0,                                      \
-       255,                                    \
-       0x00,                                   \
-       255,                                    \
-       0,                                      \
-       0,                                      \
-       10,                                     \
-       1,                                      \
-       1,                                      \
-       1,                                      \
-       0,                                      \
-       0,                                      \
-       255                                     \
-}
-
-/**************** ORIGINAL CONTENT of ncrreg.h from FreeBSD ******************/
-
-/*-----------------------------------------------------------------
-**
-**     The ncr 53c810 register structure.
-**
-**-----------------------------------------------------------------
-*/
-
-struct ncr_reg {
-/*00*/  u8     nc_scntl0;    /* full arb., ena parity, par->ATN  */
-
-/*01*/  u8     nc_scntl1;    /* no reset                         */
-        #define   ISCON   0x10  /* connected to scsi               */
-        #define   CRST    0x08  /* force reset                      */
-        #define   IARB    0x02  /* immediate arbitration            */
-
-/*02*/  u8     nc_scntl2;    /* no disconnect expected           */
-       #define   SDU     0x80  /* cmd: disconnect will raise error */
-       #define   CHM     0x40  /* sta: chained mode                */
-       #define   WSS     0x08  /* sta: wide scsi send           [W]*/
-       #define   WSR     0x01  /* sta: wide scsi received       [W]*/
-
-/*03*/  u8     nc_scntl3;    /* cnf system clock dependent       */
-       #define   EWS     0x08  /* cmd: enable wide scsi         [W]*/
-       #define   ULTRA   0x80  /* cmd: ULTRA enable                */
-                               /* bits 0-2, 7 rsvd for C1010       */
-
-/*04*/  u8     nc_scid;        /* cnf host adapter scsi address    */
-       #define   RRE     0x40  /* r/w:e enable response to resel.  */
-       #define   SRE     0x20  /* r/w:e enable response to select  */
-
-/*05*/  u8     nc_sxfer;       /* ### Sync speed and count         */
-                               /* bits 6-7 rsvd for C1010          */
-
-/*06*/  u8     nc_sdid;        /* ### Destination-ID               */
-
-/*07*/  u8     nc_gpreg;       /* ??? IO-Pins                      */
-
-/*08*/  u8     nc_sfbr;        /* ### First byte in phase          */
-
-/*09*/  u8     nc_socl;
-       #define   CREQ    0x80  /* r/w: SCSI-REQ                    */
-       #define   CACK    0x40  /* r/w: SCSI-ACK                    */
-       #define   CBSY    0x20  /* r/w: SCSI-BSY                    */
-       #define   CSEL    0x10  /* r/w: SCSI-SEL                    */
-       #define   CATN    0x08  /* r/w: SCSI-ATN                    */
-       #define   CMSG    0x04  /* r/w: SCSI-MSG                    */
-       #define   CC_D    0x02  /* r/w: SCSI-C_D                    */
-       #define   CI_O    0x01  /* r/w: SCSI-I_O                    */
-
-/*0a*/  u8     nc_ssid;
-
-/*0b*/  u8     nc_sbcl;
-
-/*0c*/  u8     nc_dstat;
-        #define   DFE     0x80  /* sta: dma fifo empty              */
-        #define   MDPE    0x40  /* int: master data parity error    */
-        #define   BF      0x20  /* int: script: bus fault           */
-        #define   ABRT    0x10  /* int: script: command aborted     */
-        #define   SSI     0x08  /* int: script: single step         */
-        #define   SIR     0x04  /* int: script: interrupt instruct. */
-        #define   IID     0x01  /* int: script: illegal instruct.   */
-
-/*0d*/  u8     nc_sstat0;
-        #define   ILF     0x80  /* sta: data in SIDL register lsb   */
-        #define   ORF     0x40  /* sta: data in SODR register lsb   */
-        #define   OLF     0x20  /* sta: data in SODL register lsb   */
-        #define   AIP     0x10  /* sta: arbitration in progress     */
-        #define   LOA     0x08  /* sta: arbitration lost            */
-        #define   WOA     0x04  /* sta: arbitration won             */
-        #define   IRST    0x02  /* sta: scsi reset signal           */
-        #define   SDP     0x01  /* sta: scsi parity signal          */
-
-/*0e*/  u8     nc_sstat1;
-       #define   FF3210  0xf0  /* sta: bytes in the scsi fifo      */
-
-/*0f*/  u8     nc_sstat2;
-        #define   ILF1    0x80  /* sta: data in SIDL register msb[W]*/
-        #define   ORF1    0x40  /* sta: data in SODR register msb[W]*/
-        #define   OLF1    0x20  /* sta: data in SODL register msb[W]*/
-        #define   DM      0x04  /* sta: DIFFSENS mismatch (895/6 only) */
-        #define   LDSC    0x02  /* sta: disconnect & reconnect      */
-
-/*10*/  u8     nc_dsa; /* --> Base page                    */
-/*11*/  u8     nc_dsa1;
-/*12*/  u8     nc_dsa2;
-/*13*/  u8     nc_dsa3;
-
-/*14*/  u8     nc_istat;       /* --> Main Command and status      */
-        #define   CABRT   0x80  /* cmd: abort current operation     */
-        #define   SRST    0x40  /* mod: reset chip                  */
-        #define   SIGP    0x20  /* r/w: message from host to ncr    */
-        #define   SEM     0x10  /* r/w: message between host + ncr  */
-        #define   CON     0x08  /* sta: connected to scsi           */
-        #define   INTF    0x04  /* sta: int on the fly (reset by wr)*/
-        #define   SIP     0x02  /* sta: scsi-interrupt              */
-        #define   DIP     0x01  /* sta: host/script interrupt       */
-
-/*15*/  u8     nc_istat1;      /* 896 and later cores only */
-        #define   FLSH    0x04  /* sta: chip is flushing            */
-        #define   SRUN    0x02  /* sta: scripts are running         */
-        #define   SIRQD   0x01  /* r/w: disable INT pin             */
-
-/*16*/  u8     nc_mbox0;       /* 896 and later cores only */
-/*17*/  u8     nc_mbox1;       /* 896 and later cores only */
-
-/*18*/ u8      nc_ctest0;
-       #define   EHP     0x04  /* 720 even host parity             */
-/*19*/  u8     nc_ctest1;
-
-/*1a*/  u8     nc_ctest2;
-       #define   CSIGP   0x40
-                               /* bits 0-2,7 rsvd for C1010        */
-
-/*1b*/  u8     nc_ctest3;
-       #define   FLF     0x08  /* cmd: flush dma fifo              */
-       #define   CLF     0x04  /* cmd: clear dma fifo              */
-       #define   FM      0x02  /* mod: fetch pin mode              */
-       #define   WRIE    0x01  /* mod: write and invalidate enable */
-                               /* bits 4-7 rsvd for C1010          */
-
-/*1c*/  u32    nc_temp;        /* ### Temporary stack              */
-
-/*20*/ u8      nc_dfifo;
-/*21*/  u8     nc_ctest4;
-       #define   MUX     0x80  /* 720 host bus multiplex mode      */
-       #define   BDIS    0x80  /* mod: burst disable               */
-       #define   MPEE    0x08  /* mod: master parity error enable  */
-
-/*22*/  u8     nc_ctest5;
-       #define   DFS     0x20  /* mod: dma fifo size               */
-                               /* bits 0-1, 3-7 rsvd for C1010          */
-/*23*/  u8     nc_ctest6;
-
-/*24*/  u32    nc_dbc; /* ### Byte count and command       */
-/*28*/  u32    nc_dnad;        /* ### Next command register        */
-/*2c*/  u32    nc_dsp; /* --> Script Pointer               */
-/*30*/  u32    nc_dsps;        /* --> Script pointer save/opcode#2 */
-
-/*34*/  u8     nc_scratcha;  /* Temporary register a            */
-/*35*/  u8     nc_scratcha1;
-/*36*/  u8     nc_scratcha2;
-/*37*/  u8     nc_scratcha3;
-
-/*38*/  u8     nc_dmode;
-       #define   BL_2    0x80  /* mod: burst length shift value +2 */
-       #define   BL_1    0x40  /* mod: burst length shift value +1 */
-       #define   ERL     0x08  /* mod: enable read line            */
-       #define   ERMP    0x04  /* mod: enable read multiple        */
-       #define   BOF     0x02  /* mod: burst op code fetch         */
-
-/*39*/  u8     nc_dien;
-/*3a*/  u8     nc_sbr;
-
-/*3b*/  u8     nc_dcntl;       /* --> Script execution control     */
-       #define   CLSE    0x80  /* mod: cache line size enable      */
-       #define   PFF     0x40  /* cmd: pre-fetch flush             */
-       #define   PFEN    0x20  /* mod: pre-fetch enable            */
-       #define   EA      0x20  /* mod: 720 enable-ack              */
-       #define   SSM     0x10  /* mod: single step mode            */
-       #define   IRQM    0x08  /* mod: irq mode (1 = totem pole !) */
-       #define   STD     0x04  /* cmd: start dma mode              */
-       #define   IRQD    0x02  /* mod: irq disable                 */
-       #define   NOCOM   0x01  /* cmd: protect sfbr while reselect */
-                               /* bits 0-1 rsvd for C1010          */
-
-/*3c*/  u32    nc_adder;
-
-/*40*/  u16    nc_sien;        /* -->: interrupt enable            */
-/*42*/  u16    nc_sist;        /* <--: interrupt status            */
-        #define   SBMC    0x1000/* sta: SCSI Bus Mode Change (895/6 only) */
-        #define   STO     0x0400/* sta: timeout (select)            */
-        #define   GEN     0x0200/* sta: timeout (general)           */
-        #define   HTH     0x0100/* sta: timeout (handshake)         */
-        #define   MA      0x80  /* sta: phase mismatch              */
-        #define   CMP     0x40  /* sta: arbitration complete        */
-        #define   SEL     0x20  /* sta: selected by another device  */
-        #define   RSL     0x10  /* sta: reselected by another device*/
-        #define   SGE     0x08  /* sta: gross error (over/underflow)*/
-        #define   UDC     0x04  /* sta: unexpected disconnect       */
-        #define   RST     0x02  /* sta: scsi bus reset detected     */
-        #define   PAR     0x01  /* sta: scsi parity error           */
-
-/*44*/  u8     nc_slpar;
-/*45*/  u8     nc_swide;
-/*46*/  u8     nc_macntl;
-/*47*/  u8     nc_gpcntl;
-/*48*/  u8     nc_stime0;    /* cmd: timeout for select&handshake*/
-/*49*/  u8     nc_stime1;    /* cmd: timeout user defined        */
-/*4a*/  u16   nc_respid;    /* sta: Reselect-IDs                */
-
-/*4c*/  u8     nc_stest0;
-
-/*4d*/  u8     nc_stest1;
-       #define   SCLK    0x80  /* Use the PCI clock as SCSI clock      */
-       #define   DBLEN   0x08  /* clock doubler running                */
-       #define   DBLSEL  0x04  /* clock doubler selected               */
-  
-
-/*4e*/  u8     nc_stest2;
-       #define   ROF     0x40  /* reset scsi offset (after gross error!) */
-       #define   DIF     0x20  /* 720 SCSI differential mode             */
-       #define   EXT     0x02  /* extended filtering                     */
-
-/*4f*/  u8     nc_stest3;
-       #define   TE     0x80   /* c: tolerAnt enable */
-       #define   HSC    0x20   /* c: Halt SCSI Clock */
-       #define   CSF    0x02   /* c: clear scsi fifo */
-
-/*50*/  u16   nc_sidl; /* Lowlevel: latched from scsi data */
-/*52*/  u8     nc_stest4;
-       #define   SMODE  0xc0   /* SCSI bus mode      (895/6 only) */
-       #define    SMODE_HVD 0x40       /* High Voltage Differential       */
-       #define    SMODE_SE  0x80       /* Single Ended                    */
-       #define    SMODE_LVD 0xc0       /* Low Voltage Differential        */
-       #define   LCKFRQ 0x20   /* Frequency Lock (895/6 only)     */
-                               /* bits 0-5 rsvd for C1010          */
-
-/*53*/  u8     nc_53_;
-/*54*/  u16    nc_sodl;        /* Lowlevel: data out to scsi data  */
-/*56*/ u8      nc_ccntl0;      /* Chip Control 0 (896)             */
-       #define   ENPMJ  0x80   /* Enable Phase Mismatch Jump       */
-       #define   PMJCTL 0x40   /* Phase Mismatch Jump Control      */
-       #define   ENNDJ  0x20   /* Enable Non Data PM Jump          */
-       #define   DISFC  0x10   /* Disable Auto FIFO Clear          */
-       #define   DILS   0x02   /* Disable Internal Load/Store      */
-       #define   DPR    0x01   /* Disable Pipe Req                 */
-
-/*57*/ u8      nc_ccntl1;      /* Chip Control 1 (896)             */
-       #define   ZMOD   0x80   /* High Impedance Mode              */
-       #define   DIC    0x10   /* Disable Internal Cycles          */
-       #define   DDAC   0x08   /* Disable Dual Address Cycle       */
-       #define   XTIMOD 0x04   /* 64-bit Table Ind. Indexing Mode  */
-       #define   EXTIBMV 0x02  /* Enable 64-bit Table Ind. BMOV    */
-       #define   EXDBMV 0x01   /* Enable 64-bit Direct BMOV        */
-
-/*58*/  u16    nc_sbdl;        /* Lowlevel: data from scsi data    */
-/*5a*/  u16    nc_5a_;
-
-/*5c*/  u8     nc_scr0;        /* Working register B               */
-/*5d*/  u8     nc_scr1;        /*                                  */
-/*5e*/  u8     nc_scr2;        /*                                  */
-/*5f*/  u8     nc_scr3;        /*                                  */
-
-/*60*/  u8     nc_scrx[64];    /* Working register C-R             */
-/*a0*/ u32     nc_mmrs;        /* Memory Move Read Selector        */
-/*a4*/ u32     nc_mmws;        /* Memory Move Write Selector       */
-/*a8*/ u32     nc_sfs;         /* Script Fetch Selector            */
-/*ac*/ u32     nc_drs;         /* DSA Relative Selector            */
-/*b0*/ u32     nc_sbms;        /* Static Block Move Selector       */
-/*b4*/ u32     nc_dbms;        /* Dynamic Block Move Selector      */
-/*b8*/ u32     nc_dnad64;      /* DMA Next Address 64              */
-/*bc*/ u16     nc_scntl4;      /* C1010 only                       */
-       #define   U3EN   0x80   /* Enable Ultra 3                   */
-       #define   AIPEN  0x40   /* Allow check upper byte lanes     */
-       #define   XCLKH_DT 0x08 /* Extra clock of data hold on DT
-                                       transfer edge               */
-       #define   XCLKH_ST 0x04 /* Extra clock of data hold on ST
-                                       transfer edge               */
-
-/*be*/  u8     nc_aipcntl0;    /* Epat Control 1 C1010 only        */
-/*bf*/  u8     nc_aipcntl1;    /* AIP Control C1010_66 Only        */
-
-/*c0*/ u32     nc_pmjad1;      /* Phase Mismatch Jump Address 1    */
-/*c4*/ u32     nc_pmjad2;      /* Phase Mismatch Jump Address 2    */
-/*c8*/ u8      nc_rbc;         /* Remaining Byte Count             */
-/*c9*/ u8      nc_rbc1;        /*                                  */
-/*ca*/ u8      nc_rbc2;        /*                                  */
-/*cb*/ u8      nc_rbc3;        /*                                  */
-
-/*cc*/ u8      nc_ua;          /* Updated Address                  */
-/*cd*/ u8      nc_ua1;         /*                                  */
-/*ce*/ u8      nc_ua2;         /*                                  */
-/*cf*/ u8      nc_ua3;         /*                                  */
-/*d0*/ u32     nc_esa;         /* Entry Storage Address            */
-/*d4*/ u8      nc_ia;          /* Instruction Address              */
-/*d5*/ u8      nc_ia1;
-/*d6*/ u8      nc_ia2;
-/*d7*/ u8      nc_ia3;
-/*d8*/ u32     nc_sbc;         /* SCSI Byte Count (3 bytes only)   */
-/*dc*/ u32     nc_csbc;        /* Cumulative SCSI Byte Count       */
-
-                               /* Following for C1010 only         */
-/*e0*/  u16    nc_crcpad;      /* CRC Value                        */
-/*e2*/  u8     nc_crccntl0;    /* CRC control register             */
-       #define   SNDCRC  0x10  /* Send CRC Request                 */
-/*e3*/  u8     nc_crccntl1;    /* CRC control register             */
-/*e4*/  u32    nc_crcdata;     /* CRC data register                */ 
-/*e8*/  u32    nc_e8_;         /* rsvd                             */
-/*ec*/  u32    nc_ec_;         /* rsvd                             */
-/*f0*/  u16    nc_dfbc;        /* DMA FIFO byte count              */ 
-
-};
-
-/*-----------------------------------------------------------
-**
-**     Utility macros for the script.
-**
-**-----------------------------------------------------------
-*/
-
-#define REGJ(p,r) (offsetof(struct ncr_reg, p ## r))
-#define REG(r) REGJ (nc_, r)
-
-typedef u32 ncrcmd;
-
-/*-----------------------------------------------------------
-**
-**     SCSI phases
-**
-**     DT phases illegal for ncr driver.
-**
-**-----------------------------------------------------------
-*/
-
-#define        SCR_DATA_OUT    0x00000000
-#define        SCR_DATA_IN     0x01000000
-#define        SCR_COMMAND     0x02000000
-#define        SCR_STATUS      0x03000000
-#define SCR_DT_DATA_OUT        0x04000000
-#define SCR_DT_DATA_IN 0x05000000
-#define SCR_MSG_OUT    0x06000000
-#define SCR_MSG_IN      0x07000000
-
-#define SCR_ILG_OUT    0x04000000
-#define SCR_ILG_IN     0x05000000
-
-/*-----------------------------------------------------------
-**
-**     Data transfer via SCSI.
-**
-**-----------------------------------------------------------
-**
-**     MOVE_ABS (LEN)
-**     <<start address>>
-**
-**     MOVE_IND (LEN)
-**     <<dnad_offset>>
-**
-**     MOVE_TBL
-**     <<dnad_offset>>
-**
-**-----------------------------------------------------------
-*/
-
-#define OPC_MOVE          0x08000000
-
-#define SCR_MOVE_ABS(l) ((0x00000000 | OPC_MOVE) | (l))
-#define SCR_MOVE_IND(l) ((0x20000000 | OPC_MOVE) | (l))
-#define SCR_MOVE_TBL     (0x10000000 | OPC_MOVE)
-
-#define SCR_CHMOV_ABS(l) ((0x00000000) | (l))
-#define SCR_CHMOV_IND(l) ((0x20000000) | (l))
-#define SCR_CHMOV_TBL     (0x10000000)
-
-struct scr_tblmove {
-        u32  size;
-        u32  addr;
-};
-
-/*-----------------------------------------------------------
-**
-**     Selection
-**
-**-----------------------------------------------------------
-**
-**     SEL_ABS | SCR_ID (0..15)    [ | REL_JMP]
-**     <<alternate_address>>
-**
-**     SEL_TBL | << dnad_offset>>  [ | REL_JMP]
-**     <<alternate_address>>
-**
-**-----------------------------------------------------------
-*/
-
-#define        SCR_SEL_ABS     0x40000000
-#define        SCR_SEL_ABS_ATN 0x41000000
-#define        SCR_SEL_TBL     0x42000000
-#define        SCR_SEL_TBL_ATN 0x43000000
-
-
-#ifdef SCSI_NCR_BIG_ENDIAN
-struct scr_tblsel {
-        u8     sel_scntl3;
-        u8     sel_id;
-        u8     sel_sxfer;
-        u8     sel_scntl4;     
-};
-#else
-struct scr_tblsel {
-        u8     sel_scntl4;     
-        u8     sel_sxfer;
-        u8     sel_id;
-        u8     sel_scntl3;
-};
-#endif
-
-#define SCR_JMP_REL     0x04000000
-#define SCR_ID(id)     (((u32)(id)) << 16)
-
-/*-----------------------------------------------------------
-**
-**     Waiting for Disconnect or Reselect
-**
-**-----------------------------------------------------------
-**
-**     WAIT_DISC
-**     dummy: <<alternate_address>>
-**
-**     WAIT_RESEL
-**     <<alternate_address>>
-**
-**-----------------------------------------------------------
-*/
-
-#define        SCR_WAIT_DISC   0x48000000
-#define SCR_WAIT_RESEL  0x50000000
-
-/*-----------------------------------------------------------
-**
-**     Bit Set / Reset
-**
-**-----------------------------------------------------------
-**
-**     SET (flags {|.. })
-**
-**     CLR (flags {|.. })
-**
-**-----------------------------------------------------------
-*/
-
-#define SCR_SET(f)     (0x58000000 | (f))
-#define SCR_CLR(f)     (0x60000000 | (f))
-
-#define        SCR_CARRY       0x00000400
-#define        SCR_TRG         0x00000200
-#define        SCR_ACK         0x00000040
-#define        SCR_ATN         0x00000008
-
-
-
-
-/*-----------------------------------------------------------
-**
-**     Memory to memory move
-**
-**-----------------------------------------------------------
-**
-**     COPY (bytecount)
-**     << source_address >>
-**     << destination_address >>
-**
-**     SCR_COPY   sets the NO FLUSH option by default.
-**     SCR_COPY_F does not set this option.
-**
-**     For chips which do not support this option,
-**     ncr_copy_and_bind() will remove this bit.
-**-----------------------------------------------------------
-*/
-
-#define SCR_NO_FLUSH 0x01000000
-
-#define SCR_COPY(n) (0xc0000000 | SCR_NO_FLUSH | (n))
-#define SCR_COPY_F(n) (0xc0000000 | (n))
-
-/*-----------------------------------------------------------
-**
-**     Register move and binary operations
-**
-**-----------------------------------------------------------
-**
-**     SFBR_REG (reg, op, data)        reg  = SFBR op data
-**     << 0 >>
-**
-**     REG_SFBR (reg, op, data)        SFBR = reg op data
-**     << 0 >>
-**
-**     REG_REG  (reg, op, data)        reg  = reg op data
-**     << 0 >>
-**
-**-----------------------------------------------------------
-**     On 810A, 860, 825A, 875, 895 and 896 chips the content 
-**     of SFBR register can be used as data (SCR_SFBR_DATA).
-**     The 896 has additionnal IO registers starting at 
-**     offset 0x80. Bit 7 of register offset is stored in 
-**     bit 7 of the SCRIPTS instruction first DWORD.
-**-----------------------------------------------------------
-*/
-
-#define SCR_REG_OFS(ofs) ((((ofs) & 0x7f) << 16ul) + ((ofs) & 0x80)) 
-
-#define SCR_SFBR_REG(reg,op,data) \
-        (0x68000000 | (SCR_REG_OFS(REG(reg))) | (op) | (((data)&0xff)<<8ul))
-
-#define SCR_REG_SFBR(reg,op,data) \
-        (0x70000000 | (SCR_REG_OFS(REG(reg))) | (op) | (((data)&0xff)<<8ul))
-
-#define SCR_REG_REG(reg,op,data) \
-        (0x78000000 | (SCR_REG_OFS(REG(reg))) | (op) | (((data)&0xff)<<8ul))
-
-
-#define      SCR_LOAD   0x00000000
-#define      SCR_SHL    0x01000000
-#define      SCR_OR     0x02000000
-#define      SCR_XOR    0x03000000
-#define      SCR_AND    0x04000000
-#define      SCR_SHR    0x05000000
-#define      SCR_ADD    0x06000000
-#define      SCR_ADDC   0x07000000
-
-#define      SCR_SFBR_DATA   (0x00800000>>8ul) /* Use SFBR as data */
-
-/*-----------------------------------------------------------
-**
-**     FROM_REG (reg)            SFBR = reg
-**     << 0 >>
-**
-**     TO_REG   (reg)            reg  = SFBR
-**     << 0 >>
-**
-**     LOAD_REG (reg, data)      reg  = <data>
-**     << 0 >>
-**
-**     LOAD_SFBR(data)           SFBR = <data>
-**     << 0 >>
-**
-**-----------------------------------------------------------
-*/
-
-#define        SCR_FROM_REG(reg) \
-       SCR_REG_SFBR(reg,SCR_OR,0)
-
-#define        SCR_TO_REG(reg) \
-       SCR_SFBR_REG(reg,SCR_OR,0)
-
-#define        SCR_LOAD_REG(reg,data) \
-       SCR_REG_REG(reg,SCR_LOAD,data)
-
-#define SCR_LOAD_SFBR(data) \
-        (SCR_REG_SFBR (gpreg, SCR_LOAD, data))
-
-/*-----------------------------------------------------------
-**
-**     LOAD  from memory   to register.
-**     STORE from register to memory.
-**
-**     Only supported by 810A, 860, 825A, 875, 895 and 896.
-**
-**-----------------------------------------------------------
-**
-**     LOAD_ABS (LEN)
-**     <<start address>>
-**
-**     LOAD_REL (LEN)        (DSA relative)
-**     <<dsa_offset>>
-**
-**-----------------------------------------------------------
-*/
-
-#define SCR_REG_OFS2(ofs) (((ofs) & 0xff) << 16ul)
-#define SCR_NO_FLUSH2  0x02000000
-#define SCR_DSA_REL2   0x10000000
-
-#define SCR_LOAD_R(reg, how, n) \
-        (0xe1000000 | how | (SCR_REG_OFS2(REG(reg))) | (n))
-
-#define SCR_STORE_R(reg, how, n) \
-        (0xe0000000 | how | (SCR_REG_OFS2(REG(reg))) | (n))
-
-#define SCR_LOAD_ABS(reg, n)   SCR_LOAD_R(reg, SCR_NO_FLUSH2, n)
-#define SCR_LOAD_REL(reg, n)   SCR_LOAD_R(reg, SCR_NO_FLUSH2|SCR_DSA_REL2, n)
-#define SCR_LOAD_ABS_F(reg, n) SCR_LOAD_R(reg, 0, n)
-#define SCR_LOAD_REL_F(reg, n) SCR_LOAD_R(reg, SCR_DSA_REL2, n)
-
-#define SCR_STORE_ABS(reg, n)  SCR_STORE_R(reg, SCR_NO_FLUSH2, n)
-#define SCR_STORE_REL(reg, n)  SCR_STORE_R(reg, SCR_NO_FLUSH2|SCR_DSA_REL2,n)
-#define SCR_STORE_ABS_F(reg, n)        SCR_STORE_R(reg, 0, n)
-#define SCR_STORE_REL_F(reg, n)        SCR_STORE_R(reg, SCR_DSA_REL2, n)
-
-
-/*-----------------------------------------------------------
-**
-**     Waiting for Disconnect or Reselect
-**
-**-----------------------------------------------------------
-**
-**     JUMP            [ | IFTRUE/IFFALSE ( ... ) ]
-**     <<address>>
-**
-**     JUMPR           [ | IFTRUE/IFFALSE ( ... ) ]
-**     <<distance>>
-**
-**     CALL            [ | IFTRUE/IFFALSE ( ... ) ]
-**     <<address>>
-**
-**     CALLR           [ | IFTRUE/IFFALSE ( ... ) ]
-**     <<distance>>
-**
-**     RETURN          [ | IFTRUE/IFFALSE ( ... ) ]
-**     <<dummy>>
-**
-**     INT             [ | IFTRUE/IFFALSE ( ... ) ]
-**     <<ident>>
-**
-**     INT_FLY         [ | IFTRUE/IFFALSE ( ... ) ]
-**     <<ident>>
-**
-**     Conditions:
-**          WHEN (phase)
-**          IF   (phase)
-**          CARRYSET
-**          DATA (data, mask)
-**
-**-----------------------------------------------------------
-*/
-
-#define SCR_NO_OP       0x80000000
-#define SCR_JUMP        0x80080000
-#define SCR_JUMP64      0x80480000
-#define SCR_JUMPR       0x80880000
-#define SCR_CALL        0x88080000
-#define SCR_CALLR       0x88880000
-#define SCR_RETURN      0x90080000
-#define SCR_INT         0x98080000
-#define SCR_INT_FLY     0x98180000
-
-#define IFFALSE(arg)   (0x00080000 | (arg))
-#define IFTRUE(arg)    (0x00000000 | (arg))
-
-#define WHEN(phase)    (0x00030000 | (phase))
-#define IF(phase)      (0x00020000 | (phase))
-
-#define DATA(D)        (0x00040000 | ((D) & 0xff))
-#define MASK(D,M)      (0x00040000 | (((M ^ 0xff) & 0xff) << 8ul)|((D) & 0xff))
-
-#define CARRYSET       (0x00200000)
-
-/*-----------------------------------------------------------
-**
-**     SCSI  constants.
-**
-**-----------------------------------------------------------
-*/
-
-/*
-**     Messages
-*/
-
-#define        M_COMPLETE      COMMAND_COMPLETE
-#define        M_EXTENDED      EXTENDED_MESSAGE
-#define        M_SAVE_DP       SAVE_POINTERS
-#define        M_RESTORE_DP    RESTORE_POINTERS
-#define        M_DISCONNECT    DISCONNECT
-#define        M_ID_ERROR      INITIATOR_ERROR
-#define        M_ABORT         ABORT_TASK_SET
-#define        M_REJECT        MESSAGE_REJECT
-#define        M_NOOP          NOP
-#define        M_PARITY        MSG_PARITY_ERROR
-#define        M_LCOMPLETE     LINKED_CMD_COMPLETE
-#define        M_FCOMPLETE     LINKED_FLG_CMD_COMPLETE
-#define        M_RESET         TARGET_RESET
-#define        M_ABORT_TAG     ABORT_TASK
-#define        M_CLEAR_QUEUE   CLEAR_TASK_SET
-#define        M_INIT_REC      INITIATE_RECOVERY
-#define        M_REL_REC       RELEASE_RECOVERY
-#define        M_TERMINATE     (0x11)
-#define        M_SIMPLE_TAG    SIMPLE_QUEUE_TAG
-#define        M_HEAD_TAG      HEAD_OF_QUEUE_TAG
-#define        M_ORDERED_TAG   ORDERED_QUEUE_TAG
-#define        M_IGN_RESIDUE   IGNORE_WIDE_RESIDUE
-#define        M_IDENTIFY      (0x80)
-
-#define        M_X_MODIFY_DP   EXTENDED_MODIFY_DATA_POINTER
-#define        M_X_SYNC_REQ    EXTENDED_SDTR
-#define        M_X_WIDE_REQ    EXTENDED_WDTR
-#define        M_X_PPR_REQ     EXTENDED_PPR
-
-/*
-**     Status
-*/
-
-#define        S_GOOD          (0x00)
-#define        S_CHECK_COND    (0x02)
-#define        S_COND_MET      (0x04)
-#define        S_BUSY          (0x08)
-#define        S_INT           (0x10)
-#define        S_INT_COND_MET  (0x14)
-#define        S_CONFLICT      (0x18)
-#define        S_TERMINATED    (0x20)
-#define        S_QUEUE_FULL    (0x28)
-#define        S_ILLEGAL       (0xff)
-#define        S_SENSE         (0x80)
-
-/*
- * End of ncrreg from FreeBSD
- */
-
-#endif /* defined SYM53C8XX_DEFS_H */
index 460554b07ff91501739ae7b2f21ea14392ea5e51..38d3e8023a0795273595b46ef8647ebaee9952e6 100644 (file)
--- a/fs/bio.c
+++ b/fs/bio.c
@@ -313,7 +313,8 @@ int bio_get_nr_vecs(struct block_device *bdev)
 }
 
 static int __bio_add_page(request_queue_t *q, struct bio *bio, struct page
-                         *page, unsigned int len, unsigned int offset)
+                         *page, unsigned int len, unsigned int offset,
+                         unsigned short max_sectors)
 {
        int retried_segments = 0;
        struct bio_vec *bvec;
@@ -327,7 +328,7 @@ static int __bio_add_page(request_queue_t *q, struct bio *bio, struct page
        if (bio->bi_vcnt >= bio->bi_max_vecs)
                return 0;
 
-       if (((bio->bi_size + len) >> 9) > q->max_sectors)
+       if (((bio->bi_size + len) >> 9) > max_sectors)
                return 0;
 
        /*
@@ -385,6 +386,25 @@ static int __bio_add_page(request_queue_t *q, struct bio *bio, struct page
        return len;
 }
 
+/**
+ *     bio_add_pc_page -       attempt to add page to bio
+ *     @bio: destination bio
+ *     @page: page to add
+ *     @len: vec entry length
+ *     @offset: vec entry offset
+ *
+ *     Attempt to add a page to the bio_vec maplist. This can fail for a
+ *     number of reasons, such as the bio being full or target block
+ *     device limitations. The target block device must allow bio's
+ *      smaller than PAGE_SIZE, so it is always possible to add a single
+ *      page to an empty bio. This should only be used by REQ_PC bios.
+ */
+int bio_add_pc_page(request_queue_t *q, struct bio *bio, struct page *page,
+                   unsigned int len, unsigned int offset)
+{
+       return __bio_add_page(q, bio, page, len, offset, q->max_hw_sectors);
+}
+
 /**
  *     bio_add_page    -       attempt to add page to bio
  *     @bio: destination bio
@@ -401,8 +421,8 @@ static int __bio_add_page(request_queue_t *q, struct bio *bio, struct page
 int bio_add_page(struct bio *bio, struct page *page, unsigned int len,
                 unsigned int offset)
 {
-       return __bio_add_page(bdev_get_queue(bio->bi_bdev), bio, page,
-                             len, offset);
+       struct request_queue *q = bdev_get_queue(bio->bi_bdev);
+       return __bio_add_page(q, bio, page, len, offset, q->max_sectors);
 }
 
 struct bio_map_data {
@@ -514,7 +534,7 @@ struct bio *bio_copy_user(request_queue_t *q, unsigned long uaddr,
                        break;
                }
 
-               if (__bio_add_page(q, bio, page, bytes, 0) < bytes) {
+               if (bio_add_pc_page(q, bio, page, bytes, 0) < bytes) {
                        ret = -EINVAL;
                        break;
                }
@@ -628,7 +648,8 @@ static struct bio *__bio_map_user_iov(request_queue_t *q,
                        /*
                         * sorry...
                         */
-                       if (__bio_add_page(q, bio, pages[j], bytes, offset) < bytes)
+                       if (bio_add_pc_page(q, bio, pages[j], bytes, offset) <
+                                           bytes)
                                break;
 
                        len -= bytes;
@@ -801,8 +822,8 @@ static struct bio *__bio_map_kern(request_queue_t *q, void *data,
                if (bytes > len)
                        bytes = len;
 
-               if (__bio_add_page(q, bio, virt_to_page(data), bytes,
-                                  offset) < bytes)
+               if (bio_add_pc_page(q, bio, virt_to_page(data), bytes,
+                                   offset) < bytes)
                        break;
 
                data += bytes;
@@ -1228,6 +1249,7 @@ EXPORT_SYMBOL(bio_clone);
 EXPORT_SYMBOL(bio_phys_segments);
 EXPORT_SYMBOL(bio_hw_segments);
 EXPORT_SYMBOL(bio_add_page);
+EXPORT_SYMBOL(bio_add_pc_page);
 EXPORT_SYMBOL(bio_get_nr_vecs);
 EXPORT_SYMBOL(bio_map_user);
 EXPORT_SYMBOL(bio_unmap_user);
index 685fd3720df5b2105c86d3be588eb9cf0061b360..b60ffe32cd21b34acfeee792d8d5ff3f66f94bd7 100644 (file)
@@ -292,6 +292,8 @@ extern struct bio *bio_clone(struct bio *, gfp_t);
 extern void bio_init(struct bio *);
 
 extern int bio_add_page(struct bio *, struct page *, unsigned int,unsigned int);
+extern int bio_add_pc_page(struct request_queue *, struct bio *, struct page *,
+                          unsigned int, unsigned int);
 extern int bio_get_nr_vecs(struct block_device *);
 extern struct bio *bio_map_user(struct request_queue *, struct block_device *,
                                unsigned long, unsigned int, int);
index a33a31e71bbc6cb02acf3409c926137c8664b882..a18500d196e12aa1c0c0c3ba8bdd8d4df6ca2036 100644 (file)
@@ -184,6 +184,7 @@ struct request {
        void *sense;
 
        unsigned int timeout;
+       int retries;
 
        /*
         * For Power Management requests
@@ -558,6 +559,7 @@ extern void blk_unregister_queue(struct gendisk *disk);
 extern void register_disk(struct gendisk *dev);
 extern void generic_make_request(struct bio *bio);
 extern void blk_put_request(struct request *);
+extern void __blk_put_request(request_queue_t *, struct request *);
 extern void blk_end_sync_rq(struct request *rq);
 extern void blk_attempt_remerge(request_queue_t *, struct request *);
 extern struct request *blk_get_request(request_queue_t *, int, gfp_t);
@@ -579,6 +581,10 @@ extern int blk_rq_map_kern(request_queue_t *, struct request *, void *, unsigned
 extern int blk_rq_map_user_iov(request_queue_t *, struct request *, struct sg_iovec *, int);
 extern int blk_execute_rq(request_queue_t *, struct gendisk *,
                          struct request *, int);
+extern void blk_execute_rq_nowait(request_queue_t *, struct gendisk *,
+                                 struct request *, int,
+                                 void (*done)(struct request *));
+
 static inline request_queue_t *bdev_get_queue(struct block_device *bdev)
 {
        return bdev->bd_disk->queue;
@@ -696,7 +702,8 @@ extern int blkdev_issue_flush(struct block_device *, sector_t *);
 
 #define MAX_PHYS_SEGMENTS 128
 #define MAX_HW_SEGMENTS 128
-#define MAX_SECTORS 255
+#define SAFE_MAX_SECTORS 255
+#define BLK_DEF_MAX_SECTORS 1024
 
 #define MAX_SEGMENT_SIZE       65536
 
index 4db67b3b05ccd0423142612abddcb46945074e03..a17e171384ef77828a38a20ca3cc0ef451e0fb26 100644 (file)
@@ -15,6 +15,7 @@
 #define PCI_CLASS_STORAGE_FLOPPY       0x0102
 #define PCI_CLASS_STORAGE_IPI          0x0103
 #define PCI_CLASS_STORAGE_RAID         0x0104
+#define PCI_CLASS_STORAGE_SAS          0x0107
 #define PCI_CLASS_STORAGE_OTHER                0x0180
 
 #define PCI_BASE_CLASS_NETWORK         0x02
index 20da282d4abbb78041fd5f1bacc868dcc1a021a2..41cfc29be8993562e3d265d5a38d02e3d9b576f1 100644 (file)
@@ -151,6 +151,6 @@ extern struct scsi_cmnd *scsi_get_command(struct scsi_device *, gfp_t);
 extern void scsi_put_command(struct scsi_cmnd *);
 extern void scsi_io_completion(struct scsi_cmnd *, unsigned int, unsigned int);
 extern void scsi_finish_command(struct scsi_cmnd *cmd);
-extern void scsi_setup_blk_pc_cmnd(struct scsi_cmnd *cmd, int retries);
+extern void scsi_setup_blk_pc_cmnd(struct scsi_cmnd *cmd);
 
 #endif /* _SCSI_SCSI_CMND_H */
index b090a11d7e1c87ee20eb7458f3e0bb3ed3651cce..4d69dee66d4d0327ce174e49000fe983abdbbb0d 100644 (file)
@@ -16,7 +16,6 @@ extern void __scsi_print_sense(const char *name,
 extern void scsi_print_driverbyte(int);
 extern void scsi_print_hostbyte(int);
 extern void scsi_print_status(unsigned char);
-extern int scsi_print_msg(const unsigned char *);
 extern const char *scsi_sense_key_string(unsigned char);
 extern const char *scsi_extd_sense_format(unsigned char, unsigned char);
 
index 85cfd88461c8d79337400f5a28ecd0aec63014da..e94ca4d360358bb535224bca0766af0f706cef61 100644 (file)
@@ -79,9 +79,9 @@ struct scsi_device {
        char inq_periph_qual;   /* PQ from INQUIRY data */      
        unsigned char inquiry_len;      /* valid bytes in 'inquiry' */
        unsigned char * inquiry;        /* INQUIRY response data */
-       char * vendor;          /* [back_compat] point into 'inquiry' ... */
-       char * model;           /* ... after scan; point to static string */
-       char * rev;             /* ... "nullnullnullnull" before scan */
+       const char * vendor;            /* [back_compat] point into 'inquiry' ... */
+       const char * model;             /* ... after scan; point to static string */
+       const char * rev;               /* ... "nullnullnullnull" before scan */
        unsigned char current_tag;      /* current tag */
        struct scsi_target      *sdev_target;   /* used only for single_lun */
 
@@ -274,6 +274,12 @@ extern int scsi_execute(struct scsi_device *sdev, const unsigned char *cmd,
 extern int scsi_execute_req(struct scsi_device *sdev, const unsigned char *cmd,
                            int data_direction, void *buffer, unsigned bufflen,
                            struct scsi_sense_hdr *, int timeout, int retries);
+extern int scsi_execute_async(struct scsi_device *sdev,
+                             const unsigned char *cmd, int data_direction,
+                             void *buffer, unsigned bufflen, int use_sg,
+                             int timeout, int retries, void *privdata,
+                             void (*done)(void *, char *, int, int),
+                             gfp_t gfp);
 
 static inline unsigned int sdev_channel(struct scsi_device *sdev)
 {
index 6bdc4afb248380d7180f7d9a68bf869cd09fd4c1..54a89611e9c5abc04f89013112c9ff9202dece6f 100644 (file)
@@ -24,6 +24,9 @@
 #include <linux/transport_class.h>
 
 struct scsi_transport_template;
+struct scsi_target;
+struct scsi_device;
+struct Scsi_Host;
 
 struct spi_transport_attrs {
        int period;             /* value in the PPR/SDTR command */
@@ -143,5 +146,6 @@ void spi_release_transport(struct scsi_transport_template *);
 void spi_schedule_dv_device(struct scsi_device *);
 void spi_dv_device(struct scsi_device *);
 void spi_display_xfer_agreement(struct scsi_target *);
+int spi_print_msg(const unsigned char *);
 
 #endif /* SCSI_TRANSPORT_SPI_H */