Browse Source

Merge git://git.kernel.org/pub/scm/linux/kernel/git/jejb/scsi-misc-2.6

Linus Torvalds 19 years ago
parent
commit
f61ea1b0c8
95 changed files with 17310 additions and 4397 deletions
  1. 35 0
      Documentation/scsi/ChangeLog.megaraid
  2. 28 9
      Documentation/scsi/scsi_mid_low_api.txt
  3. 31 9
      block/ll_rw_blk.c
  4. 1 1
      block/scsi_ioctl.c
  5. 1 1
      drivers/md/dm-table.c
  6. 7 7
      drivers/message/fusion/mptbase.c
  7. 15 19
      drivers/message/fusion/mptbase.h
  8. 2 2
      drivers/message/fusion/mptctl.c
  9. 15 9
      drivers/message/fusion/mptfc.c
  10. 33 22
      drivers/message/fusion/mptsas.c
  11. 357 437
      drivers/message/fusion/mptscsih.c
  12. 2 0
      drivers/message/fusion/mptscsih.h
  13. 15 9
      drivers/message/fusion/mptspi.c
  14. 3 3
      drivers/scsi/53c700.c
  15. 13 9
      drivers/scsi/53c700.h
  16. 4 3
      drivers/scsi/53c7xx.c
  17. 13 0
      drivers/scsi/Kconfig
  18. 4 3
      drivers/scsi/NCR5380.c
  19. 4 3
      drivers/scsi/aha152x.c
  20. 9 2
      drivers/scsi/aic7xxx/aic79xx_osm.c
  21. 13 5
      drivers/scsi/aic7xxx/aic7xxx_osm.c
  22. 1 0
      drivers/scsi/arm/Kconfig
  23. 4 3
      drivers/scsi/arm/acornscsi.c
  24. 4 3
      drivers/scsi/atari_NCR5380.c
  25. 2 2
      drivers/scsi/ch.c
  26. 5 113
      drivers/scsi/constants.c
  27. 16 1
      drivers/scsi/ipr.c
  28. 3 2
      drivers/scsi/ipr.h
  29. 72 49
      drivers/scsi/iscsi_tcp.c
  30. 2 1
      drivers/scsi/iscsi_tcp.h
  31. 13 1
      drivers/scsi/lpfc/lpfc.h
  32. 90 2
      drivers/scsi/lpfc/lpfc_attr.c
  33. 3 0
      drivers/scsi/lpfc/lpfc_crtn.h
  34. 2 0
      drivers/scsi/lpfc/lpfc_disc.h
  35. 4 0
      drivers/scsi/lpfc/lpfc_els.c
  36. 10 8
      drivers/scsi/lpfc/lpfc_hbadisc.c
  37. 29 11
      drivers/scsi/lpfc/lpfc_hw.h
  38. 127 56
      drivers/scsi/lpfc/lpfc_init.c
  39. 45 24
      drivers/scsi/lpfc/lpfc_nportdisc.c
  40. 207 88
      drivers/scsi/lpfc/lpfc_scsi.c
  41. 196 21
      drivers/scsi/lpfc/lpfc_sli.c
  42. 1 1
      drivers/scsi/lpfc/lpfc_version.h
  43. 9 18
      drivers/scsi/megaraid.c
  44. 0 2
      drivers/scsi/megaraid/Kconfig.megaraid
  45. 9 73
      drivers/scsi/megaraid/megaraid_mbox.c
  46. 2 2
      drivers/scsi/megaraid/megaraid_mbox.h
  47. 735 14
      drivers/scsi/ncr53c8xx.c
  48. 1262 1
      drivers/scsi/ncr53c8xx.h
  49. 42 27
      drivers/scsi/qla2xxx/Kconfig
  50. 4 1
      drivers/scsi/qla2xxx/Makefile
  51. 111 0
      drivers/scsi/qla2xxx/ql2400.c
  52. 12376 0
      drivers/scsi/qla2xxx/ql2400_fw.c
  53. 1 1
      drivers/scsi/qla2xxx/qla_attr.c
  54. 23 1
      drivers/scsi/qla2xxx/qla_def.h
  55. 3 1
      drivers/scsi/qla2xxx/qla_gbl.h
  56. 197 51
      drivers/scsi/qla2xxx/qla_init.c
  57. 148 48
      drivers/scsi/qla2xxx/qla_os.c
  58. 1 1
      drivers/scsi/raid_class.c
  59. 3 2
      drivers/scsi/scsi_devinfo.c
  60. 9 38
      drivers/scsi/scsi_error.c
  61. 223 39
      drivers/scsi/scsi_lib.c
  62. 2 2
      drivers/scsi/scsi_priv.h
  63. 1 1
      drivers/scsi/scsi_scan.c
  64. 2 2
      drivers/scsi/scsi_sysfs.c
  65. 4 4
      drivers/scsi/scsi_transport_fc.c
  66. 132 4
      drivers/scsi/scsi_transport_spi.c
  67. 2 4
      drivers/scsi/sd.c
  68. 244 406
      drivers/scsi/sg.c
  69. 2 2
      drivers/scsi/sr.c
  70. 2 2
      drivers/scsi/sr_vendor.c
  71. 126 153
      drivers/scsi/st.c
  72. 13 1
      drivers/scsi/st.h
  73. 4 3
      drivers/scsi/sun3_NCR5380.c
  74. 1 1
      drivers/scsi/sym53c8xx_2/sym_defs.h
  75. 0 18
      drivers/scsi/sym53c8xx_2/sym_fw.c
  76. 0 6
      drivers/scsi/sym53c8xx_2/sym_fw.h
  77. 0 48
      drivers/scsi/sym53c8xx_2/sym_fw1.h
  78. 0 52
      drivers/scsi/sym53c8xx_2/sym_fw2.h
  79. 82 35
      drivers/scsi/sym53c8xx_2/sym_glue.c
  80. 0 2
      drivers/scsi/sym53c8xx_2/sym_glue.h
  81. 17 147
      drivers/scsi/sym53c8xx_2/sym_hipd.c
  82. 4 100
      drivers/scsi/sym53c8xx_2/sym_hipd.h
  83. 0 4
      drivers/scsi/sym53c8xx_2/sym_malloc.c
  84. 16 13
      drivers/scsi/sym53c8xx_2/sym_nvram.c
  85. 2 2
      drivers/scsi/sym53c8xx_2/sym_nvram.h
  86. 0 792
      drivers/scsi/sym53c8xx_comm.h
  87. 0 1320
      drivers/scsi/sym53c8xx_defs.h
  88. 30 8
      fs/bio.c
  89. 2 0
      include/linux/bio.h
  90. 8 1
      include/linux/blkdev.h
  91. 1 0
      include/linux/pci_ids.h
  92. 1 1
      include/scsi/scsi_cmnd.h
  93. 0 1
      include/scsi/scsi_dbg.h
  94. 9 3
      include/scsi/scsi_device.h
  95. 4 0
      include/scsi/scsi_transport_spi.h

+ 35 - 0
Documentation/scsi/ChangeLog.megaraid

@@ -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>
 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)
 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)
 Older Version	: 2.20.4.5 (scsi module), 2.20.2.5 (cmm module)

+ 28 - 9
Documentation/scsi/scsi_mid_low_api.txt

@@ -150,7 +150,8 @@ scsi devices of which only the first 2 respond:
 LLD                   mid level                    LLD
 LLD                   mid level                    LLD
 ===-------------------=========--------------------===------
 ===-------------------=========--------------------===------
 scsi_host_alloc()  -->
 scsi_host_alloc()  -->
-scsi_add_host()  --------+
+scsi_add_host()  ---->
+scsi_scan_host()  -------+
                          |
                          |
                     slave_alloc()
                     slave_alloc()
                     slave_configure() -->  scsi_adjust_queue_depth()
                     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
 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
 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.
 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:
 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:
 Summary:
    scsi_activate_tcq - turn on tag command queueing
    scsi_activate_tcq - turn on tag command queueing
    scsi_add_device - creates new scsi device (lu) instance
    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_adjust_queue_depth - change the queue depth on a SCSI device
    scsi_assign_lock - replace default host_lock with given lock
    scsi_assign_lock - replace default host_lock with given lock
    scsi_bios_ptable - return copy of block device's partition table
    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_device - detach and remove a SCSI device
    scsi_remove_host - detach and remove all SCSI devices owned by host
    scsi_remove_host - detach and remove all SCSI devices owned by host
    scsi_report_bus_reset - report scsi _bus_ reset observed
    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_track_queue_full - track successive QUEUE_FULL events 
    scsi_unblock_requests - allow further commands to be queued to given host
    scsi_unblock_requests - allow further commands to be queued to given host
    scsi_unregister - [calls scsi_host_put()]
    scsi_unregister - [calls scsi_host_put()]
@@ -425,10 +427,10 @@ void scsi_activate_tcq(struct scsi_device *sdev, int depth)
  *      Might block: yes
  *      Might block: yes
  *
  *
  *      Notes: This call is usually performed internally during a scsi
  *      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
  *      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.
  *      into the LLD.
  *
  *
  *      Defined in: drivers/scsi/scsi_scan.c
  *      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
  * @shost:   pointer to scsi host instance
  * @dev:     pointer to struct device of type scsi class
  * @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
  *      Might block: no
  *
  *
  *      Notes: Only required in "hotplug initialization model" after a
  *      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
  *      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.
  *      area for the LLD's exclusive use.
  *      Both associated refcounting objects have their refcount set to 1.
  *      Both associated refcounting objects have their refcount set to 1.
  *      Full registration (in sysfs) and a bus scan are performed later when
  *      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 .
  *      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)
 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
  * scsi_track_queue_full - track successive QUEUE_FULL events on given
  *                      device to determine if and when there is a need
  *                      device to determine if and when there is a need

+ 31 - 9
block/ll_rw_blk.c

@@ -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.ra_pages = (VM_MAX_READAHEAD * 1024) / PAGE_CACHE_SIZE;
 	q->backing_dev_info.state = 0;
 	q->backing_dev_info.state = 0;
 	q->backing_dev_info.capabilities = BDI_CAP_MAP_COPY;
 	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_hardsect_size(q, 512);
 	blk_queue_dma_alignment(q, 511);
 	blk_queue_dma_alignment(q, 511);
 	blk_queue_congestion_threshold(q);
 	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);
 		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);
 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)
 void blk_queue_stack_limits(request_queue_t *t, request_queue_t *b)
 {
 {
 	/* zero is "infinity" */
 	/* 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_phys_segments = min(t->max_phys_segments,b->max_phys_segments);
 	t->max_hw_segments = min(t->max_hw_segments,b->max_hw_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, 
 static int ll_back_merge_fn(request_queue_t *q, struct request *req, 
 			    struct bio *bio)
 			    struct bio *bio)
 {
 {
+	unsigned short max_sectors;
 	int len;
 	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;
 		req->flags |= REQ_NOMERGE;
 		if (req == q->last_merge)
 		if (req == q->last_merge)
 			q->last_merge = NULL;
 			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, 
 static int ll_front_merge_fn(request_queue_t *q, struct request *req, 
 			     struct bio *bio)
 			     struct bio *bio)
 {
 {
+	unsigned short max_sectors;
 	int len;
 	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;
 		req->flags |= REQ_NOMERGE;
 		if (req == q->last_merge)
 		if (req == q->last_merge)
 			q->last_merge = NULL;
 			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;
 	struct bio *bio;
 	int reading;
 	int reading;
 
 
-	if (len > (q->max_sectors << 9))
+	if (len > (q->max_hw_sectors << 9))
 		return -EINVAL;
 		return -EINVAL;
 	if (!len || !ubuf)
 	if (!len || !ubuf)
 		return -EINVAL;
 		return -EINVAL;
@@ -2259,7 +2277,7 @@ int blk_rq_map_kern(request_queue_t *q, struct request *rq, void *kbuf,
 {
 {
 	struct bio *bio;
 	struct bio *bio;
 
 
-	if (len > (q->max_sectors << 9))
+	if (len > (q->max_hw_sectors << 9))
 		return -EINVAL;
 		return -EINVAL;
 	if (!len || !kbuf)
 	if (!len || !kbuf)
 		return -EINVAL;
 		return -EINVAL;
@@ -2306,6 +2324,8 @@ void blk_execute_rq_nowait(request_queue_t *q, struct gendisk *bd_disk,
 	generic_unplug_device(q);
 	generic_unplug_device(q);
 }
 }
 
 
+EXPORT_SYMBOL_GPL(blk_execute_rq_nowait);
+
 /**
 /**
  * blk_execute_rq - insert a request into queue for execution
  * blk_execute_rq - insert a request into queue for execution
  * @q:		queue to insert the request in
  * @q:		queue to insert the request in
@@ -2444,7 +2464,7 @@ void disk_round_stats(struct gendisk *disk)
 /*
 /*
  * queue lock must be held
  * 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;
 	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)
 void blk_put_request(struct request *req)
 {
 {
 	unsigned long flags;
 	unsigned long flags;

+ 1 - 1
block/scsi_ioctl.c

@@ -233,7 +233,7 @@ static int sg_io(struct file *file, request_queue_t *q,
 	if (verify_command(file, cmd))
 	if (verify_command(file, cmd))
 		return -EPERM;
 		return -EPERM;
 
 
-	if (hdr->dxfer_len > (q->max_sectors << 9))
+	if (hdr->dxfer_len > (q->max_hw_sectors << 9))
 		return -EIO;
 		return -EIO;
 
 
 	if (hdr->dxfer_len)
 	if (hdr->dxfer_len)

+ 1 - 1
drivers/md/dm-table.c

@@ -638,7 +638,7 @@ int dm_split_args(int *argc, char ***argvp, char *input)
 static void check_for_valid_limits(struct io_restrictions *rs)
 static void check_for_valid_limits(struct io_restrictions *rs)
 {
 {
 	if (!rs->max_sectors)
 	if (!rs->max_sectors)
-		rs->max_sectors = MAX_SECTORS;
+		rs->max_sectors = SAFE_MAX_SECTORS;
 	if (!rs->max_phys_segments)
 	if (!rs->max_phys_segments)
 		rs->max_phys_segments = MAX_PHYS_SEGMENTS;
 		rs->max_phys_segments = MAX_PHYS_SEGMENTS;
 	if (!rs->max_hw_segments)
 	if (!rs->max_hw_segments)

+ 7 - 7
drivers/message/fusion/mptbase.c

@@ -313,13 +313,13 @@ mpt_reply(MPT_ADAPTER *ioc, u32 pa)
 		u32	 log_info = le32_to_cpu(mr->u.reply.IOCLogInfo);
 		u32	 log_info = le32_to_cpu(mr->u.reply.IOCLogInfo);
 		if (ioc->bus_type == FC)
 		if (ioc->bus_type == FC)
 			mpt_fc_log_info(ioc, log_info);
 			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);
 			mpt_sp_log_info(ioc, log_info);
 		else if (ioc->bus_type == SAS)
 		else if (ioc->bus_type == SAS)
 			mpt_sas_log_info(ioc, log_info);
 			mpt_sas_log_info(ioc, log_info);
 	}
 	}
 	if (ioc_stat & MPI_IOCSTATUS_MASK) {
 	if (ioc_stat & MPI_IOCSTATUS_MASK) {
-		if (ioc->bus_type == SCSI &&
+		if (ioc->bus_type == SPI &&
 		    cb_idx != mpt_stm_index &&
 		    cb_idx != mpt_stm_index &&
 		    cb_idx != mpt_lan_index)
 		    cb_idx != mpt_lan_index)
 			mpt_sp_ioc_info(ioc, (u32)ioc_stat, mf);
 			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) {
 	else if (pdev->device == MPI_MANUFACTPAGE_DEVID_53C1030) {
 		ioc->prod_name = "LSI53C1030";
 		ioc->prod_name = "LSI53C1030";
-		ioc->bus_type = SCSI;
+		ioc->bus_type = SPI;
 		/* 1030 Chip Fix. Disable Split transactions
 		/* 1030 Chip Fix. Disable Split transactions
 		 * for PCIX. Set MOST bits to zero if Rev < C0( = 8).
 		 * 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) {
 	else if (pdev->device == MPI_MANUFACTPAGE_DEVID_1030_53C1035) {
 		ioc->prod_name = "LSI53C1035";
 		ioc->prod_name = "LSI53C1035";
-		ioc->bus_type = SCSI;
+		ioc->bus_type = SPI;
 	}
 	}
 	else if (pdev->device == MPI_MANUFACTPAGE_DEVID_SAS1064) {
 	else if (pdev->device == MPI_MANUFACTPAGE_DEVID_SAS1064) {
 		ioc->prod_name = "LSISAS1064";
 		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,
 	/* Clear the internal flash bad bit - autoincrementing register,
 	 * so must do two writes.
 	 * so must do two writes.
 	 */
 	 */
-	if (ioc->bus_type == SCSI) {
+	if (ioc->bus_type == SPI) {
 		/*
 		/*
 		 * 1030 and 1035 H/W errata, workaround to access
 		 * 1030 and 1035 H/W errata, workaround to access
 		 * the ClearFlashBadSignatureBit
 		 * the ClearFlashBadSignatureBit
@@ -3152,7 +3152,7 @@ KickStart(MPT_ADAPTER *ioc, int force, int sleepFlag)
 	int cnt,cntdn;
 	int cnt,cntdn;
 
 
 	dinitprintk((KERN_WARNING MYNAM ": KickStarting %s!\n", ioc->name));
 	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
 		/* Always issue a Msg Unit Reset first. This will clear some
 		 * SCSI bus hang conditions.
 		 * 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",
 	dinitprintk((KERN_INFO MYNAM ": %s Now numSGE=%d num_sge=%d num_chain=%d\n",
 		ioc->name, numSGE, num_sge, num_chain));
 		ioc->name, numSGE, num_sge, num_chain));
 
 
-	if (ioc->bus_type == SCSI)
+	if (ioc->bus_type == SPI)
 		num_chain *= MPT_SCSI_CAN_QUEUE;
 		num_chain *= MPT_SCSI_CAN_QUEUE;
 	else
 	else
 		num_chain *= MPT_FC_CAN_QUEUE;
 		num_chain *= MPT_FC_CAN_QUEUE;

+ 15 - 19
drivers/message/fusion/mptbase.h

@@ -76,8 +76,8 @@
 #define COPYRIGHT	"Copyright (c) 1999-2005 " MODULEAUTHOR
 #define COPYRIGHT	"Copyright (c) 1999-2005 " MODULEAUTHOR
 #endif
 #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 WHAT_MAGIC_STRING		"@" "(" "#" ")"
 
 
 #define show_mptmod_ver(s,ver)  \
 #define show_mptmod_ver(s,ver)  \
@@ -321,7 +321,7 @@ typedef struct _SYSIF_REGS
  *	Dynamic Multi-Pathing specific stuff...
  *	Dynamic Multi-Pathing specific stuff...
  */
  */
 
 
-/* VirtDevice negoFlags field */
+/* VirtTarget negoFlags field */
 #define MPT_TARGET_NO_NEGO_WIDE		0x01
 #define MPT_TARGET_NO_NEGO_WIDE		0x01
 #define MPT_TARGET_NO_NEGO_SYNC		0x02
 #define MPT_TARGET_NO_NEGO_SYNC		0x02
 #define MPT_TARGET_NO_NEGO_QAS		0x04
 #define MPT_TARGET_NO_NEGO_QAS		0x04
@@ -330,8 +330,7 @@ typedef struct _SYSIF_REGS
 /*
 /*
  *	VirtDevice - FC LUN device or SCSI target device
  *	VirtDevice - FC LUN device or SCSI target device
  */
  */
-typedef struct _VirtDevice {
-	struct scsi_device	*device;
+typedef struct _VirtTarget {
 	u8			 tflags;
 	u8			 tflags;
 	u8			 ioc_id;
 	u8			 ioc_id;
 	u8			 target_id;
 	u8			 target_id;
@@ -342,21 +341,18 @@ typedef struct _VirtDevice {
 	u8			 negoFlags;	/* bit field, see above */
 	u8			 negoFlags;	/* bit field, see above */
 	u8			 raidVolume;	/* set, if RAID Volume */
 	u8			 raidVolume;	/* set, if RAID Volume */
 	u8			 type;		/* byte 0 of Inquiry data */
 	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			 num_luns;
 	u32			 luns[8];		/* Max LUNs is 256 */
 	u32			 luns[8];		/* Max LUNs is 256 */
-	u8			 pad[4];
 	u8			 inq_data[8];
 	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;
 } VirtDevice;
 
 
 /*
 /*
@@ -903,7 +899,7 @@ typedef struct _MPT_LOCAL_REPLY {
 
 
 typedef enum {
 typedef enum {
 	FC,
 	FC,
-	SCSI,
+	SPI,
 	SAS
 	SAS
 } BUS_TYPE;
 } BUS_TYPE;
 
 
@@ -912,7 +908,7 @@ typedef struct _MPT_SCSI_HOST {
 	int			  port;
 	int			  port;
 	u32			  pad0;
 	u32			  pad0;
 	struct scsi_cmnd	**ScsiLookup;
 	struct scsi_cmnd	**ScsiLookup;
-	VirtDevice		**Targets;
+	VirtTarget		**Targets;
 	MPT_LOCAL_REPLY		 *pLocal;		/* used for internal commands */
 	MPT_LOCAL_REPLY		 *pLocal;		/* used for internal commands */
 	struct timer_list	  timer;
 	struct timer_list	  timer;
 		/* Pool of memory for holding SCpnts before doing
 		/* Pool of memory for holding SCpnts before doing

+ 2 - 2
drivers/message/fusion/mptctl.c

@@ -1245,7 +1245,7 @@ mptctl_gettargetinfo (unsigned long arg)
 	MPT_ADAPTER		*ioc;
 	MPT_ADAPTER		*ioc;
 	struct Scsi_Host	*sh;
 	struct Scsi_Host	*sh;
 	MPT_SCSI_HOST		*hd;
 	MPT_SCSI_HOST		*hd;
-	VirtDevice		*vdev;
+	VirtTarget		*vdev;
 	char			*pmem;
 	char			*pmem;
 	int			*pdata;
 	int			*pdata;
 	IOCPage2_t		*pIoc2;
 	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:
 	case MPI_FUNCTION_SCSI_IO_REQUEST:
 		if (ioc->sh) {
 		if (ioc->sh) {
 			SCSIIORequest_t *pScsiReq = (SCSIIORequest_t *) mf;
 			SCSIIORequest_t *pScsiReq = (SCSIIORequest_t *) mf;
-			VirtDevice	*pTarget = NULL;
+			VirtTarget	*pTarget = NULL;
 			MPT_SCSI_HOST	*hd = NULL;
 			MPT_SCSI_HOST	*hd = NULL;
 			int qtag = MPI_SCSIIO_CONTROL_UNTAGGED;
 			int qtag = MPI_SCSIIO_CONTROL_UNTAGGED;
 			int scsidir = 0;
 			int scsidir = 0;

+ 15 - 9
drivers/message/fusion/mptfc.c

@@ -84,13 +84,16 @@ static int	mptfcTaskCtx = -1;
 static int	mptfcInternalCtx = -1; /* Used only for internal commands */
 static int	mptfcInternalCtx = -1; /* Used only for internal commands */
 
 
 static struct scsi_host_template mptfc_driver_template = {
 static struct scsi_host_template mptfc_driver_template = {
+	.module				= THIS_MODULE,
 	.proc_name			= "mptfc",
 	.proc_name			= "mptfc",
 	.proc_info			= mptscsih_proc_info,
 	.proc_info			= mptscsih_proc_info,
 	.name				= "MPT FC Host",
 	.name				= "MPT FC Host",
 	.info				= mptscsih_info,
 	.info				= mptscsih_info,
 	.queuecommand			= mptscsih_qcmd,
 	.queuecommand			= mptscsih_qcmd,
+	.target_alloc			= mptscsih_target_alloc,
 	.slave_alloc			= mptscsih_slave_alloc,
 	.slave_alloc			= mptscsih_slave_alloc,
 	.slave_configure		= mptscsih_slave_configure,
 	.slave_configure		= mptscsih_slave_configure,
+	.target_destroy			= mptscsih_target_destroy,
 	.slave_destroy			= mptscsih_slave_destroy,
 	.slave_destroy			= mptscsih_slave_destroy,
 	.change_queue_depth 		= mptscsih_change_queue_depth,
 	.change_queue_depth 		= mptscsih_change_queue_depth,
 	.eh_abort_handler		= mptscsih_abort,
 	.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
 		printk(MYIOC_s_WARN_FMT
 		  "Skipping because it's not operational!\n",
 		  "Skipping because it's not operational!\n",
 		  ioc->name);
 		  ioc->name);
-		return -ENODEV;
+		error = -ENODEV;
+		goto out_mptfc_probe;
 	}
 	}
 
 
 	if (!ioc->active) {
 	if (!ioc->active) {
 		printk(MYIOC_s_WARN_FMT "Skipping because it's disabled!\n",
 		printk(MYIOC_s_WARN_FMT "Skipping because it's disabled!\n",
 		  ioc->name);
 		  ioc->name);
-		return -ENODEV;
+		error = -ENODEV;
+		goto out_mptfc_probe;
 	}
 	}
 
 
 	/*  Sanity check - ensure at least 1 port is INITIATOR capable
 	/*  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
 		printk(MYIOC_s_WARN_FMT
 			"Unable to register controller with SCSI subsystem\n",
 			"Unable to register controller with SCSI subsystem\n",
 			ioc->name);
 			ioc->name);
-                return -1;
+		error = -1;
+		goto out_mptfc_probe;
         }
         }
 
 
 	spin_lock_irqsave(&ioc->FreeQlock, flags);
 	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);
 	mem = kmalloc(sz, GFP_ATOMIC);
 	if (mem == NULL) {
 	if (mem == NULL) {
 		error = -ENOMEM;
 		error = -ENOMEM;
-		goto mptfc_probe_failed;
+		goto out_mptfc_probe;
 	}
 	}
 
 
 	memset(mem, 0, sz);
 	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);
 	mem = kmalloc(sz, GFP_ATOMIC);
 	if (mem == NULL) {
 	if (mem == NULL) {
 		error = -ENOMEM;
 		error = -ENOMEM;
-		goto mptfc_probe_failed;
+		goto out_mptfc_probe;
 	}
 	}
 
 
 	memset(mem, 0, sz);
 	memset(mem, 0, sz);
-	hd->Targets = (VirtDevice **) mem;
+	hd->Targets = (VirtTarget **) mem;
 
 
 	dprintk((KERN_INFO
 	dprintk((KERN_INFO
-	  "  Targets @ %p, sz=%d\n", hd->Targets, sz));
+	  "  vdev @ %p, sz=%d\n", hd->Targets, sz));
 
 
 	/* Clear the TM flags
 	/* Clear the TM flags
 	 */
 	 */
@@ -330,13 +336,13 @@ mptfc_probe(struct pci_dev *pdev, const struct pci_device_id *id)
 	if(error) {
 	if(error) {
 		dprintk((KERN_ERR MYNAM
 		dprintk((KERN_ERR MYNAM
 		  "scsi_add_host failed\n"));
 		  "scsi_add_host failed\n"));
-		goto mptfc_probe_failed;
+		goto out_mptfc_probe;
 	}
 	}
 
 
 	scsi_scan_host(sh);
 	scsi_scan_host(sh);
 	return 0;
 	return 0;
 
 
-mptfc_probe_failed:
+out_mptfc_probe:
 
 
 	mptscsih_remove(pdev);
 	mptscsih_remove(pdev);
 	return error;
 	return error;

+ 33 - 22
drivers/message/fusion/mptsas.c

@@ -228,31 +228,35 @@ static void mptsas_print_expander_pg1(SasExpanderPage1_t *pg1)
  * implement ->target_alloc.
  * implement ->target_alloc.
  */
  */
 static int
 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;
 	MPT_SCSI_HOST		*hd = (MPT_SCSI_HOST *)host->hostdata;
 	struct sas_rphy		*rphy;
 	struct sas_rphy		*rphy;
 	struct mptsas_portinfo	*p;
 	struct mptsas_portinfo	*p;
+	VirtTarget		*vtarget;
 	VirtDevice		*vdev;
 	VirtDevice		*vdev;
-	uint			target = device->id;
+	struct scsi_target 	*starget;
 	int i;
 	int i;
 
 
-	if ((vdev = hd->Targets[target]) != NULL)
-		goto out;
-
 	vdev = kmalloc(sizeof(VirtDevice), GFP_KERNEL);
 	vdev = kmalloc(sizeof(VirtDevice), GFP_KERNEL);
 	if (!vdev) {
 	if (!vdev) {
 		printk(MYIOC_s_ERR_FMT "slave_alloc kmalloc(%zd) FAILED!\n",
 		printk(MYIOC_s_ERR_FMT "slave_alloc kmalloc(%zd) FAILED!\n",
 				hd->ioc->name, sizeof(VirtDevice));
 				hd->ioc->name, sizeof(VirtDevice));
 		return -ENOMEM;
 		return -ENOMEM;
 	}
 	}
-
 	memset(vdev, 0, sizeof(VirtDevice));
 	memset(vdev, 0, sizeof(VirtDevice));
-	vdev->tflags = MPT_TARGET_FLAGS_Q_YES|MPT_TARGET_FLAGS_VALID_INQUIRY;
 	vdev->ioc_id = hd->ioc->id;
 	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) {
 	list_for_each_entry(p, &hd->ioc->sas_topology, list) {
 		for (i = 0; i < p->num_phys; i++) {
 		for (i = 0; i < p->num_phys; i++) {
 			if (p->phy_info[i].attached.sas_address ==
 			if (p->phy_info[i].attached.sas_address ==
@@ -260,7 +264,7 @@ mptsas_slave_alloc(struct scsi_device *device)
 				vdev->target_id =
 				vdev->target_id =
 					p->phy_info[i].attached.target;
 					p->phy_info[i].attached.target;
 				vdev->bus_id = p->phy_info[i].attached.bus;
 				vdev->bus_id = p->phy_info[i].attached.bus;
-				hd->Targets[device->id] = vdev;
+				vdev->lun = sdev->lun;
 				goto out;
 				goto out;
 			}
 			}
 		}
 		}
@@ -271,19 +275,24 @@ mptsas_slave_alloc(struct scsi_device *device)
 	return -ENODEV;
 	return -ENODEV;
 
 
  out:
  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;
 	return 0;
 }
 }
 
 
 static struct scsi_host_template mptsas_driver_template = {
 static struct scsi_host_template mptsas_driver_template = {
+	.module				= THIS_MODULE,
 	.proc_name			= "mptsas",
 	.proc_name			= "mptsas",
 	.proc_info			= mptscsih_proc_info,
 	.proc_info			= mptscsih_proc_info,
 	.name				= "MPT SPI Host",
 	.name				= "MPT SPI Host",
 	.info				= mptscsih_info,
 	.info				= mptscsih_info,
 	.queuecommand			= mptscsih_qcmd,
 	.queuecommand			= mptscsih_qcmd,
+	.target_alloc			= mptscsih_target_alloc,
 	.slave_alloc			= mptsas_slave_alloc,
 	.slave_alloc			= mptsas_slave_alloc,
 	.slave_configure		= mptscsih_slave_configure,
 	.slave_configure		= mptscsih_slave_configure,
+	.target_destroy			= mptscsih_target_destroy,
 	.slave_destroy			= mptscsih_slave_destroy,
 	.slave_destroy			= mptscsih_slave_destroy,
 	.change_queue_depth 		= mptscsih_change_queue_depth,
 	.change_queue_depth 		= mptscsih_change_queue_depth,
 	.eh_abort_handler		= mptscsih_abort,
 	.eh_abort_handler		= mptscsih_abort,
@@ -986,7 +995,6 @@ mptsas_probe_hba_phys(MPT_ADAPTER *ioc, int *index)
 		goto out_free_port_info;
 		goto out_free_port_info;
 
 
 	list_add_tail(&port_info->list, &ioc->sas_topology);
 	list_add_tail(&port_info->list, &ioc->sas_topology);
-
 	for (i = 0; i < port_info->num_phys; i++) {
 	for (i = 0; i < port_info->num_phys; i++) {
 		mptsas_sas_phy_pg0(ioc, &port_info->phy_info[i],
 		mptsas_sas_phy_pg0(ioc, &port_info->phy_info[i],
 			(MPI_SAS_PHY_PGAD_FORM_PHY_NUMBER <<
 			(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
 		printk(MYIOC_s_WARN_FMT
 		  "Skipping because it's not operational!\n",
 		  "Skipping because it's not operational!\n",
 		  ioc->name);
 		  ioc->name);
-		return -ENODEV;
+		error = -ENODEV;
+		goto out_mptsas_probe;
 	}
 	}
 
 
 	if (!ioc->active) {
 	if (!ioc->active) {
 		printk(MYIOC_s_WARN_FMT "Skipping because it's disabled!\n",
 		printk(MYIOC_s_WARN_FMT "Skipping because it's disabled!\n",
 		  ioc->name);
 		  ioc->name);
-		return -ENODEV;
+		error = -ENODEV;
+		goto out_mptsas_probe;
 	}
 	}
 
 
 	/*  Sanity check - ensure at least 1 port is INITIATOR capable
 	/*  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
 		printk(MYIOC_s_WARN_FMT
 			"Unable to register controller with SCSI subsystem\n",
 			"Unable to register controller with SCSI subsystem\n",
 			ioc->name);
 			ioc->name);
-                return -1;
+		error = -1;
+		goto out_mptsas_probe;
         }
         }
 
 
 	spin_lock_irqsave(&ioc->FreeQlock, flags);
 	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);
 	mem = kmalloc(sz, GFP_ATOMIC);
 	if (mem == NULL) {
 	if (mem == NULL) {
 		error = -ENOMEM;
 		error = -ENOMEM;
-		goto mptsas_probe_failed;
+		goto out_mptsas_probe;
 	}
 	}
 
 
 	memset(mem, 0, sz);
 	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);
 	mem = kmalloc(sz, GFP_ATOMIC);
 	if (mem == NULL) {
 	if (mem == NULL) {
 		error = -ENOMEM;
 		error = -ENOMEM;
-		goto mptsas_probe_failed;
+		goto out_mptsas_probe;
 	}
 	}
 
 
 	memset(mem, 0, sz);
 	memset(mem, 0, sz);
-	hd->Targets = (VirtDevice **) mem;
+	hd->Targets = (VirtTarget **) mem;
 
 
 	dprintk((KERN_INFO
 	dprintk((KERN_INFO
-	  "  Targets @ %p, sz=%d\n", hd->Targets, sz));
+	  "  vtarget @ %p, sz=%d\n", hd->Targets, sz));
 
 
 	/* Clear the TM flags
 	/* Clear the TM flags
 	 */
 	 */
@@ -1308,14 +1319,14 @@ mptsas_probe(struct pci_dev *pdev, const struct pci_device_id *id)
 	if (error) {
 	if (error) {
 		dprintk((KERN_ERR MYNAM
 		dprintk((KERN_ERR MYNAM
 		  "scsi_add_host failed\n"));
 		  "scsi_add_host failed\n"));
-		goto mptsas_probe_failed;
+		goto out_mptsas_probe;
 	}
 	}
 
 
 	mptsas_scan_sas_topology(ioc);
 	mptsas_scan_sas_topology(ioc);
 
 
 	return 0;
 	return 0;
 
 
-mptsas_probe_failed:
+out_mptsas_probe:
 
 
 	mptscsih_remove(pdev);
 	mptscsih_remove(pdev);
 	return error;
 	return error;

File diff suppressed because it is too large
+ 357 - 437
drivers/message/fusion/mptscsih.c


+ 2 - 0
drivers/message/fusion/mptscsih.h

@@ -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 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 const char * mptscsih_info(struct Scsi_Host *SChost);
 extern int mptscsih_qcmd(struct scsi_cmnd *SCpnt, void (*done)(struct scsi_cmnd *));
 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 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 void mptscsih_slave_destroy(struct scsi_device *device);
 extern int mptscsih_slave_configure(struct scsi_device *device);
 extern int mptscsih_slave_configure(struct scsi_device *device);
 extern int mptscsih_abort(struct scsi_cmnd * SCpnt);
 extern int mptscsih_abort(struct scsi_cmnd * SCpnt);

+ 15 - 9
drivers/message/fusion/mptspi.c

@@ -103,13 +103,16 @@ static int	mptspiTaskCtx = -1;
 static int	mptspiInternalCtx = -1; /* Used only for internal commands */
 static int	mptspiInternalCtx = -1; /* Used only for internal commands */
 
 
 static struct scsi_host_template mptspi_driver_template = {
 static struct scsi_host_template mptspi_driver_template = {
+	.module				= THIS_MODULE,
 	.proc_name			= "mptspi",
 	.proc_name			= "mptspi",
 	.proc_info			= mptscsih_proc_info,
 	.proc_info			= mptscsih_proc_info,
 	.name				= "MPT SPI Host",
 	.name				= "MPT SPI Host",
 	.info				= mptscsih_info,
 	.info				= mptscsih_info,
 	.queuecommand			= mptscsih_qcmd,
 	.queuecommand			= mptscsih_qcmd,
+	.target_alloc			= mptscsih_target_alloc,
 	.slave_alloc			= mptscsih_slave_alloc,
 	.slave_alloc			= mptscsih_slave_alloc,
 	.slave_configure		= mptscsih_slave_configure,
 	.slave_configure		= mptscsih_slave_configure,
+	.target_destroy			= mptscsih_target_destroy,
 	.slave_destroy			= mptscsih_slave_destroy,
 	.slave_destroy			= mptscsih_slave_destroy,
 	.change_queue_depth 		= mptscsih_change_queue_depth,
 	.change_queue_depth 		= mptscsih_change_queue_depth,
 	.eh_abort_handler		= mptscsih_abort,
 	.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
 		printk(MYIOC_s_WARN_FMT
 		  "Skipping because it's not operational!\n",
 		  "Skipping because it's not operational!\n",
 		  ioc->name);
 		  ioc->name);
-		return -ENODEV;
+		error = -ENODEV;
+		goto out_mptspi_probe;
 	}
 	}
 
 
 	if (!ioc->active) {
 	if (!ioc->active) {
 		printk(MYIOC_s_WARN_FMT "Skipping because it's disabled!\n",
 		printk(MYIOC_s_WARN_FMT "Skipping because it's disabled!\n",
 		  ioc->name);
 		  ioc->name);
-		return -ENODEV;
+		error = -ENODEV;
+		goto out_mptspi_probe;
 	}
 	}
 
 
 	/*  Sanity check - ensure at least 1 port is INITIATOR capable
 	/*  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
 		printk(MYIOC_s_WARN_FMT
 			"Unable to register controller with SCSI subsystem\n",
 			"Unable to register controller with SCSI subsystem\n",
 			ioc->name);
 			ioc->name);
-                return -1;
+		error = -1;
+		goto out_mptspi_probe;
         }
         }
 
 
 	spin_lock_irqsave(&ioc->FreeQlock, flags);
 	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);
 	mem = kmalloc(sz, GFP_ATOMIC);
 	if (mem == NULL) {
 	if (mem == NULL) {
 		error = -ENOMEM;
 		error = -ENOMEM;
-		goto mptspi_probe_failed;
+		goto out_mptspi_probe;
 	}
 	}
 
 
 	memset(mem, 0, sz);
 	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);
 	mem = kmalloc(sz, GFP_ATOMIC);
 	if (mem == NULL) {
 	if (mem == NULL) {
 		error = -ENOMEM;
 		error = -ENOMEM;
-		goto mptspi_probe_failed;
+		goto out_mptspi_probe;
 	}
 	}
 
 
 	memset(mem, 0, sz);
 	memset(mem, 0, sz);
-	hd->Targets = (VirtDevice **) mem;
+	hd->Targets = (VirtTarget **) mem;
 
 
 	dprintk((KERN_INFO
 	dprintk((KERN_INFO
-	  "  Targets @ %p, sz=%d\n", hd->Targets, sz));
+	  "  vdev @ %p, sz=%d\n", hd->Targets, sz));
 
 
 	/* Clear the TM flags
 	/* Clear the TM flags
 	 */
 	 */
@@ -385,13 +391,13 @@ mptspi_probe(struct pci_dev *pdev, const struct pci_device_id *id)
 	if(error) {
 	if(error) {
 		dprintk((KERN_ERR MYNAM
 		dprintk((KERN_ERR MYNAM
 		  "scsi_add_host failed\n"));
 		  "scsi_add_host failed\n"));
-		goto mptspi_probe_failed;
+		goto out_mptspi_probe;
 	}
 	}
 
 
 	scsi_scan_host(sh);
 	scsi_scan_host(sh);
 	return 0;
 	return 0;
 
 
-mptspi_probe_failed:
+out_mptspi_probe:
 
 
 	mptscsih_remove(pdev);
 	mptscsih_remove(pdev);
 	return error;
 	return error;

+ 3 - 3
drivers/scsi/53c700.c

@@ -857,7 +857,7 @@ process_extended_message(struct Scsi_Host *host,
 		printk(KERN_INFO "scsi%d (%d:%d): Unexpected message %s: ",
 		printk(KERN_INFO "scsi%d (%d:%d): Unexpected message %s: ",
 		       host->host_no, pun, lun,
 		       host->host_no, pun, lun,
 		       NCR_700_phase[(dsps & 0xf00) >> 8]);
 		       NCR_700_phase[(dsps & 0xf00) >> 8]);
-		scsi_print_msg(hostdata->msgin);
+		spi_print_msg(hostdata->msgin);
 		printk("\n");
 		printk("\n");
 		/* just reject it */
 		/* just reject it */
 		hostdata->msgout[0] = A_REJECT_MSG;
 		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
 #ifdef NCR_700_DEBUG
 	printk("scsi%d (%d:%d): message %s: ", host->host_no, pun, lun,
 	printk("scsi%d (%d:%d): message %s: ", host->host_no, pun, lun,
 	       NCR_700_phase[(dsps & 0xf00) >> 8]);
 	       NCR_700_phase[(dsps & 0xf00) >> 8]);
-	scsi_print_msg(hostdata->msgin);
+	spi_print_msg(hostdata->msgin);
 	printk("\n");
 	printk("\n");
 #endif
 #endif
 
 
@@ -939,7 +939,7 @@ process_message(struct Scsi_Host *host,	struct NCR_700_Host_Parameters *hostdata
 		       host->host_no, pun, lun,
 		       host->host_no, pun, lun,
 		       NCR_700_phase[(dsps & 0xf00) >> 8]);
 		       NCR_700_phase[(dsps & 0xf00) >> 8]);
 
 
-		scsi_print_msg(hostdata->msgin);
+		spi_print_msg(hostdata->msgin);
 		printk("\n");
 		printk("\n");
 		/* just reject it */
 		/* just reject it */
 		hostdata->msgout[0] = A_REJECT_MSG;
 		hostdata->msgout[0] = A_REJECT_MSG;

+ 13 - 9
drivers/scsi/53c700.h

@@ -238,21 +238,23 @@ struct NCR_700_Host_Parameters {
 #ifdef CONFIG_53C700_LE_ON_BE
 #ifdef CONFIG_53C700_LE_ON_BE
 #define bE	(hostdata->force_le_on_be ? 0 : 3)
 #define bE	(hostdata->force_le_on_be ? 0 : 3)
 #define	bSWAP	(hostdata->force_le_on_be)
 #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)
 #elif defined(__BIG_ENDIAN)
 #define bE	3
 #define bE	3
 #define bSWAP	0
 #define bSWAP	0
-#define bS_to_io(x)	(x)
 #elif defined(__LITTLE_ENDIAN)
 #elif defined(__LITTLE_ENDIAN)
 #define bE	0
 #define bE	0
 #define bSWAP	0
 #define bSWAP	0
-#define bS_to_io(x)	(x)
 #else
 #else
 #error "__BIG_ENDIAN or __LITTLE_ENDIAN must be defined, did you include byteorder.h?"
 #error "__BIG_ENDIAN or __LITTLE_ENDIAN must be defined, did you include byteorder.h?"
 #endif
 #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_cpu(x)	(bSWAP ? le32_to_cpu(x) : (x))
 #define bS_to_host(x)	(bSWAP ? cpu_to_le32(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
 	const struct NCR_700_Host_Parameters *hostdata
 		= (struct NCR_700_Host_Parameters *)host->hostdata[0];
 		= (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
 #if 1
 	/* sanity check the register */
 	/* sanity check the register */
 	if((reg & 0x3) != 0)
 	if((reg & 0x3) != 0)
 		BUG();
 		BUG();
 #endif
 #endif
 
 
-	return bS_to_io(value);
+	return value;
 }
 }
 
 
 static inline void
 static inline void
@@ -497,7 +500,8 @@ NCR_700_writel(__u32 value, struct Scsi_Host *host, __u32 reg)
 		BUG();
 		BUG();
 #endif
 #endif
 
 
-	iowrite32(bS_to_io(value), hostdata->base + reg);
+	bEBus ? iowrite32be(value, hostdata->base + reg): 
+		iowrite32(value, hostdata->base + reg);
 }
 }
 
 
 #endif
 #endif

+ 4 - 3
drivers/scsi/53c7xx.c

@@ -282,6 +282,7 @@
 #include "scsi.h"
 #include "scsi.h"
 #include <scsi/scsi_dbg.h>
 #include <scsi/scsi_dbg.h>
 #include <scsi/scsi_host.h>
 #include <scsi/scsi_host.h>
+#include <scsi/scsi_transport_spi.h>
 #include "53c7xx.h"
 #include "53c7xx.h"
 #include <linux/stat.h>
 #include <linux/stat.h>
 #include <linux/stddef.h>
 #include <linux/stddef.h>
@@ -1724,7 +1725,7 @@ NCR53c7xx_run_tests (struct Scsi_Host *host) {
 		printk ("scsi%d : status ", host->host_no);
 		printk ("scsi%d : status ", host->host_no);
 		scsi_print_status (status);
 		scsi_print_status (status);
 		printk ("\nscsi%d : message ", host->host_no);
 		printk ("\nscsi%d : message ", host->host_no);
-		scsi_print_msg (&msg);
+		spi_print_msg(&msg);
 		printk ("\n");
 		printk ("\n");
 	    } else if (hostdata->test_completed == 3) {
 	    } else if (hostdata->test_completed == 3) {
 		printk("scsi%d : test 2 no connection with target %d\n",
 		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);
 	    printk ("scsi%d : received message", host->host_no);
 	    if (c) 
 	    if (c) 
 	    	printk (" from target %d lun %d ", c->device->id, c->device->lun);
 	    	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");
 	    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);
 	    i > 0 && !check_address ((unsigned long) ptr, 1);
 	    ptr += len, i -= len) {
 	    ptr += len, i -= len) {
 	    printk("               ");
 	    printk("               ");
-	    len = scsi_print_msg (ptr);
+	    len = spi_print_msg(ptr);
 	    printk("\n");
 	    printk("\n");
 	    if (!len)
 	    if (!len)
 		break;
 		break;

+ 13 - 0
drivers/scsi/Kconfig

@@ -336,6 +336,7 @@ config SCSI_ACARD
 config SCSI_AHA152X
 config SCSI_AHA152X
 	tristate "Adaptec AHA152X/2825 support"
 	tristate "Adaptec AHA152X/2825 support"
 	depends on ISA && SCSI && !64BIT
 	depends on ISA && SCSI && !64BIT
+	select SCSI_SPI_ATTRS
 	---help---
 	---help---
 	  This is a driver for the AHA-1510, AHA-1520, AHA-1522, and AHA-2825
 	  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.
 	  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
 config SCSI_DMX3191D
 	tristate "DMX3191D SCSI support"
 	tristate "DMX3191D SCSI support"
 	depends on PCI && SCSI
 	depends on PCI && SCSI
+	select SCSI_SPI_ATTRS
 	help
 	help
 	  This is support for Domex DMX3191D SCSI Host Adapters.
 	  This is support for Domex DMX3191D SCSI Host Adapters.
 
 
@@ -632,6 +634,7 @@ config SCSI_DMX3191D
 config SCSI_DTC3280
 config SCSI_DTC3280
 	tristate "DTC3180/3280 SCSI support"
 	tristate "DTC3180/3280 SCSI support"
 	depends on ISA && SCSI
 	depends on ISA && SCSI
+	select SCSI_SPI_ATTRS
 	help
 	help
 	  This is support for DTC 3180/3280 SCSI Host Adapters.  Please read
 	  This is support for DTC 3180/3280 SCSI Host Adapters.  Please read
 	  the SCSI-HOWTO, available from
 	  the SCSI-HOWTO, available from
@@ -752,6 +755,7 @@ config SCSI_GDTH
 config SCSI_GENERIC_NCR5380
 config SCSI_GENERIC_NCR5380
 	tristate "Generic NCR5380/53c400 SCSI PIO support"
 	tristate "Generic NCR5380/53c400 SCSI PIO support"
 	depends on ISA && SCSI
 	depends on ISA && SCSI
+	select SCSI_SPI_ATTRS
 	---help---
 	---help---
 	  This is a driver for the old NCR 53c80 series of SCSI controllers
 	  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
 	  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
 config SCSI_GENERIC_NCR5380_MMIO
 	tristate "Generic NCR5380/53c400 SCSI MMIO support"
 	tristate "Generic NCR5380/53c400 SCSI MMIO support"
 	depends on ISA && SCSI
 	depends on ISA && SCSI
+	select SCSI_SPI_ATTRS
 	---help---
 	---help---
 	  This is a driver for the old NCR 53c80 series of SCSI controllers
 	  This is a driver for the old NCR 53c80 series of SCSI controllers
 	  on boards using memory mapped I/O. 
 	  on boards using memory mapped I/O. 
@@ -1254,6 +1259,7 @@ config SCSI_MCA_53C9X
 config SCSI_PAS16
 config SCSI_PAS16
 	tristate "PAS16 SCSI support"
 	tristate "PAS16 SCSI support"
 	depends on ISA && SCSI
 	depends on ISA && SCSI
+	select SCSI_SPI_ATTRS
 	---help---
 	---help---
 	  This is support for a SCSI host adapter.  It is explained in section
 	  This is support for a SCSI host adapter.  It is explained in section
 	  3.10 of the SCSI-HOWTO, available from
 	  3.10 of the SCSI-HOWTO, available from
@@ -1423,6 +1429,7 @@ config SCSI_DC390T
 config SCSI_T128
 config SCSI_T128
 	tristate "Trantor T128/T128F/T228 SCSI support"
 	tristate "Trantor T128/T128F/T228 SCSI support"
 	depends on ISA && SCSI
 	depends on ISA && SCSI
+	select SCSI_SPI_ATTRS
 	---help---
 	---help---
 	  This is support for a SCSI host adapter. It is explained in section
 	  This is support for a SCSI host adapter. It is explained in section
 	  3.11 of the SCSI-HOWTO, available from
 	  3.11 of the SCSI-HOWTO, available from
@@ -1681,6 +1688,7 @@ config OKTAGON_SCSI
 config ATARI_SCSI
 config ATARI_SCSI
 	tristate "Atari native SCSI support"
 	tristate "Atari native SCSI support"
 	depends on ATARI && SCSI && BROKEN
 	depends on ATARI && SCSI && BROKEN
+	select SCSI_SPI_ATTRS
 	---help---
 	---help---
 	  If you have an Atari with built-in NCR5380 SCSI controller (TT,
 	  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
 	  Falcon, ...) say Y to get it supported. Of course also, if you have
@@ -1722,6 +1730,7 @@ config TT_DMA_EMUL
 config MAC_SCSI
 config MAC_SCSI
 	bool "Macintosh NCR5380 SCSI"
 	bool "Macintosh NCR5380 SCSI"
 	depends on MAC && SCSI=y
 	depends on MAC && SCSI=y
+	select SCSI_SPI_ATTRS
 	help
 	help
 	  This is the NCR 5380 SCSI controller included on most of the 68030
 	  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
 	  based Macintoshes.  If you have one of these say Y and read the
@@ -1743,6 +1752,7 @@ config SCSI_MAC_ESP
 config MVME147_SCSI
 config MVME147_SCSI
 	bool "WD33C93 SCSI driver for MVME147"
 	bool "WD33C93 SCSI driver for MVME147"
 	depends on MVME147 && SCSI=y
 	depends on MVME147 && SCSI=y
+	select SCSI_SPI_ATTRS
 	help
 	help
 	  Support for the on-board SCSI controller on the Motorola MVME147
 	  Support for the on-board SCSI controller on the Motorola MVME147
 	  single-board computer.
 	  single-board computer.
@@ -1750,6 +1760,7 @@ config MVME147_SCSI
 config MVME16x_SCSI
 config MVME16x_SCSI
 	bool "NCR53C710 SCSI driver for MVME16x"
 	bool "NCR53C710 SCSI driver for MVME16x"
 	depends on MVME16x && SCSI && BROKEN
 	depends on MVME16x && SCSI && BROKEN
+	select SCSI_SPI_ATTRS
 	help
 	help
 	  The Motorola MVME162, 166, 167, 172 and 177 boards use the NCR53C710
 	  The Motorola MVME162, 166, 167, 172 and 177 boards use the NCR53C710
 	  SCSI controller chip.  Almost everyone using one of these boards
 	  SCSI controller chip.  Almost everyone using one of these boards
@@ -1758,6 +1769,7 @@ config MVME16x_SCSI
 config BVME6000_SCSI
 config BVME6000_SCSI
 	bool "NCR53C710 SCSI driver for BVME6000"
 	bool "NCR53C710 SCSI driver for BVME6000"
 	depends on BVME6000 && SCSI && BROKEN
 	depends on BVME6000 && SCSI && BROKEN
+	select SCSI_SPI_ATTRS
 	help
 	help
 	  The BVME4000 and BVME6000 boards from BVM Ltd use the NCR53C710
 	  The BVME4000 and BVME6000 boards from BVM Ltd use the NCR53C710
 	  SCSI controller chip.  Almost everyone using one of these boards
 	  SCSI controller chip.  Almost everyone using one of these boards
@@ -1774,6 +1786,7 @@ config SCSI_NCR53C7xx_FAST
 config SUN3_SCSI
 config SUN3_SCSI
 	tristate "Sun3 NCR5380 SCSI"
 	tristate "Sun3 NCR5380 SCSI"
 	depends on SUN3 && SCSI && BROKEN
 	depends on SUN3 && SCSI && BROKEN
+	select SCSI_SPI_ATTRS
 	help
 	help
 	  This option will enable support for the OBIO (onboard io) NCR5380
 	  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
 	  SCSI controller found in the Sun 3/50 and 3/60, as well as for

+ 4 - 3
drivers/scsi/NCR5380.c

@@ -87,6 +87,7 @@
  *      the high level code.
  *      the high level code.
  */
  */
 #include <scsi/scsi_dbg.h>
 #include <scsi/scsi_dbg.h>
+#include <scsi/scsi_transport_spi.h>
 
 
 #ifndef NDEBUG
 #ifndef NDEBUG
 #define NDEBUG 0
 #define NDEBUG 0
@@ -2377,7 +2378,7 @@ static void NCR5380_information_transfer(struct Scsi_Host *instance) {
  * 3..length+1  arguments
  * 3..length+1  arguments
  *
  *
  * Start the extended message buffer with the EXTENDED_MESSAGE
  * 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;
 					extended_msg[0] = EXTENDED_MESSAGE;
 					/* Accept first byte by clearing ACK */
 					/* Accept first byte by clearing ACK */
@@ -2424,7 +2425,7 @@ static void NCR5380_information_transfer(struct Scsi_Host *instance) {
 				default:
 				default:
 					if (!tmp) {
 					if (!tmp) {
 						printk("scsi%d: rejecting message ", instance->host_no);
 						printk("scsi%d: rejecting message ", instance->host_no);
-						scsi_print_msg(extended_msg);
+						spi_print_msg(extended_msg);
 						printk("\n");
 						printk("\n");
 					} else if (tmp != EXTENDED_MESSAGE)
 					} else if (tmp != EXTENDED_MESSAGE)
 						scmd_printk(KERN_INFO, cmd,
 						scmd_printk(KERN_INFO, cmd,
@@ -2560,7 +2561,7 @@ static void NCR5380_reselect(struct Scsi_Host *instance) {
 
 
 	if (!(msg[0] & 0x80)) {
 	if (!(msg[0] & 0x80)) {
 		printk(KERN_ERR "scsi%d : expecting IDENTIFY message, got ", instance->host_no);
 		printk(KERN_ERR "scsi%d : expecting IDENTIFY message, got ", instance->host_no);
-		scsi_print_msg(msg);
+		spi_print_msg(msg);
 		abort = 1;
 		abort = 1;
 	} else {
 	} else {
 		/* Accept message by clearing ACK */
 		/* Accept message by clearing ACK */

+ 4 - 3
drivers/scsi/aha152x.c

@@ -259,6 +259,7 @@
 #include "scsi.h"
 #include "scsi.h"
 #include <scsi/scsi_dbg.h>
 #include <scsi/scsi_dbg.h>
 #include <scsi/scsi_host.h>
 #include <scsi/scsi_host.h>
+#include <scsi/scsi_transport_spi.h>
 #include "aha152x.h"
 #include "aha152x.h"
 
 
 
 
@@ -1845,7 +1846,7 @@ static void msgi_run(struct Scsi_Host *shpnt)
 #if defined(AHA152X_DEBUG)
 #if defined(AHA152X_DEBUG)
 		if (HOSTDATA(shpnt)->debug & debug_msgi) {
 		if (HOSTDATA(shpnt)->debug & debug_msgi) {
 			printk(INFO_LEAD "inbound message %02x ", CMDINFO(CURRENT_SC), MSGI(0));
 			printk(INFO_LEAD "inbound message %02x ", CMDINFO(CURRENT_SC), MSGI(0));
-			scsi_print_msg(&MSGI(0));
+			spi_print_msg(&MSGI(0));
 			printk("\n");
 			printk("\n");
 		}
 		}
 #endif
 #endif
@@ -1933,7 +1934,7 @@ static void msgi_run(struct Scsi_Host *shpnt)
 						break;
 						break;
 
 
 					printk(INFO_LEAD, CMDINFO(CURRENT_SC));
 					printk(INFO_LEAD, CMDINFO(CURRENT_SC));
-					scsi_print_msg(&MSGI(0));
+					spi_print_msg(&MSGI(0));
 					printk("\n");
 					printk("\n");
 
 
 					ticks = (MSGI(3) * 4 + 49) / 50;
 					ticks = (MSGI(3) * 4 + 49) / 50;
@@ -2031,7 +2032,7 @@ static void msgo_init(struct Scsi_Host *shpnt)
 		int i;
 		int i;
 
 
 		printk(DEBUG_LEAD "messages( ", CMDINFO(CURRENT_SC));
 		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");
 		printk(")\n");
 	}
 	}

+ 9 - 2
drivers/scsi/aic7xxx/aic79xx_osm.c

@@ -1064,6 +1064,7 @@ ahd_linux_register_host(struct ahd_softc *ahd, struct scsi_host_template *templa
 	struct	Scsi_Host *host;
 	struct	Scsi_Host *host;
 	char	*new_name;
 	char	*new_name;
 	u_long	s;
 	u_long	s;
+	int	retval;
 
 
 	template->name = ahd->description;
 	template->name = ahd->description;
 	host = scsi_host_alloc(template, sizeof(struct ahd_softc *));
 	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;
 	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);
 	scsi_scan_host(host);
-	return (0);
+	return 0;
 }
 }
 
 
 uint64_t
 uint64_t

+ 13 - 5
drivers/scsi/aic7xxx/aic7xxx_osm.c

@@ -1061,10 +1061,11 @@ uint32_t aic7xxx_verbose;
 int
 int
 ahc_linux_register_host(struct ahc_softc *ahc, struct scsi_host_template *template)
 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;
 	char	*new_name;
-	u_long	 s;
+	u_long	s;
+	int	retval;
 
 
 	template->name = ahc->description;
 	template->name = ahc->description;
 	host = scsi_host_alloc(template, sizeof(struct ahc_softc *));
 	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;
 	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);
 	scsi_scan_host(host);
-	return (0);
+	return 0;
 }
 }
 
 
 /*
 /*

+ 1 - 0
drivers/scsi/arm/Kconfig

@@ -4,6 +4,7 @@
 config SCSI_ACORNSCSI_3
 config SCSI_ACORNSCSI_3
 	tristate "Acorn SCSI card (aka30) support"
 	tristate "Acorn SCSI card (aka30) support"
 	depends on ARCH_ACORN && SCSI && BROKEN
 	depends on ARCH_ACORN && SCSI && BROKEN
+	select SCSI_SPI_ATTRS
 	help
 	help
 	  This enables support for the Acorn SCSI card (aka30). If you have an
 	  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.
 	  Acorn system with one of these, say Y. If unsure, say N.

+ 4 - 3
drivers/scsi/arm/acornscsi.c

@@ -152,6 +152,7 @@
 #include "../scsi.h"
 #include "../scsi.h"
 #include <scsi/scsi_dbg.h>
 #include <scsi/scsi_dbg.h>
 #include <scsi/scsi_host.h>
 #include <scsi/scsi_host.h>
+#include <scsi/scsi_transport_spi.h>
 #include "acornscsi.h"
 #include "acornscsi.h"
 #include "msgqueue.h"
 #include "msgqueue.h"
 #include "scsi.h"
 #include "scsi.h"
@@ -1370,7 +1371,7 @@ void acornscsi_sendmessage(AS_Host *host)
 
 
 	host->scsi.last_message = msg->msg[0];
 	host->scsi.last_message = msg->msg[0];
 #if (DEBUG & DEBUG_MESSAGES)
 #if (DEBUG & DEBUG_MESSAGES)
-	scsi_print_msg(msg->msg);
+	spi_print_msg(msg->msg);
 #endif
 #endif
 	break;
 	break;
 
 
@@ -1392,7 +1393,7 @@ void acornscsi_sendmessage(AS_Host *host)
 	while ((msg = msgqueue_getmsg(&host->scsi.msgs, msgnr++)) != NULL) {
 	while ((msg = msgqueue_getmsg(&host->scsi.msgs, msgnr++)) != NULL) {
 	    unsigned int i;
 	    unsigned int i;
 #if (DEBUG & DEBUG_MESSAGES)
 #if (DEBUG & DEBUG_MESSAGES)
-	    scsi_print_msg(msg);
+	    spi_print_msg(msg);
 #endif
 #endif
 	    i = 0;
 	    i = 0;
 	    if (acornscsi_write_pio(host, msg->msg, &i, msg->length, 1000000))
 	    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)
 #if (DEBUG & DEBUG_MESSAGES)
     printk("scsi%d.%c: message in: ",
     printk("scsi%d.%c: message in: ",
 	    host->host->host_no, acornscsi_target(host));
 	    host->host->host_no, acornscsi_target(host));
-    scsi_print_msg(message);
+    spi_print_msg(message);
     printk("\n");
     printk("\n");
 #endif
 #endif
 
 

+ 4 - 3
drivers/scsi/atari_NCR5380.c

@@ -74,6 +74,7 @@
  *     the high level code.
  *     the high level code.
  */
  */
 #include <scsi/scsi_dbg.h>
 #include <scsi/scsi_dbg.h>
+#include <scsi/scsi_transport_spi.h>
 
 
 #if (NDEBUG & NDEBUG_LISTS)
 #if (NDEBUG & NDEBUG_LISTS)
 #define LIST(x,y) \
 #define LIST(x,y) \
@@ -2355,7 +2356,7 @@ static void NCR5380_information_transfer (struct Scsi_Host *instance)
  * 3..length+1	arguments
  * 3..length+1	arguments
  *
  *
  * Start the extended message buffer with the EXTENDED_MESSAGE
  * 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;
 		    extended_msg[0] = EXTENDED_MESSAGE;
 		    /* Accept first byte by clearing ACK */
 		    /* Accept first byte by clearing ACK */
@@ -2408,7 +2409,7 @@ static void NCR5380_information_transfer (struct Scsi_Host *instance)
 		default:
 		default:
 		    if (!tmp) {
 		    if (!tmp) {
 			printk(KERN_DEBUG "scsi%d: rejecting message ", HOSTNO);
 			printk(KERN_DEBUG "scsi%d: rejecting message ", HOSTNO);
-			scsi_print_msg (extended_msg);
+			spi_print_msg(extended_msg);
 			printk("\n");
 			printk("\n");
 		    } else if (tmp != EXTENDED_MESSAGE)
 		    } else if (tmp != EXTENDED_MESSAGE)
 			printk(KERN_DEBUG "scsi%d: rejecting unknown "
 			printk(KERN_DEBUG "scsi%d: rejecting unknown "
@@ -2541,7 +2542,7 @@ static void NCR5380_reselect (struct Scsi_Host *instance)
 
 
     if (!(msg[0] & 0x80)) {
     if (!(msg[0] & 0x80)) {
 	printk(KERN_DEBUG "scsi%d: expecting IDENTIFY message, got ", HOSTNO);
 	printk(KERN_DEBUG "scsi%d: expecting IDENTIFY message, got ", HOSTNO);
-	scsi_print_msg(msg);
+	spi_print_msg(msg);
 	do_abort(instance);
 	do_abort(instance);
 	return;
 	return;
     }
     }

+ 2 - 2
drivers/scsi/ch.c

@@ -75,7 +75,7 @@ static int vendor_counts[CH_TYPES-4];
 module_param_array(vendor_firsts, int, NULL, 0444);
 module_param_array(vendor_firsts, int, NULL, 0444);
 module_param_array(vendor_counts, 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"
 	"v0", "v1", "v2", "v3"
 };
 };
 // module_param_string_array(vendor_labels, NULL, 0444);
 // module_param_string_array(vendor_labels, NULL, 0444);
@@ -140,7 +140,7 @@ static struct file_operations changer_fops =
 #endif
 #endif
 };
 };
 
 
-static struct {
+static const struct {
 	unsigned char  sense;
 	unsigned char  sense;
 	unsigned char  asc;
 	unsigned char  asc;
 	unsigned char  ascq;
 	unsigned char  ascq;

+ 5 - 113
drivers/scsi/constants.c

@@ -1065,7 +1065,7 @@ struct error_info2 {
 	const char * fmt;
 	const char * fmt;
 };
 };
 
 
-static struct error_info2 additional2[] =
+static const struct error_info2 additional2[] =
 {
 {
 	{0x40,0x00,0x7f,"Ram failure (%x)"},
 	{0x40,0x00,0x7f,"Ram failure (%x)"},
 	{0x40,0x80,0xff,"Diagnostic failure on component (%x)"},
 	{0x40,0x80,0xff,"Diagnostic failure on component (%x)"},
@@ -1077,7 +1077,7 @@ static struct error_info2 additional2[] =
 };
 };
 
 
 /* description of the sense key values */
 /* description of the sense key values */
-static const char *snstext[] = {
+static const char * const snstext[] = {
 	"No Sense",	    /* 0: There is no sense information */
 	"No Sense",	    /* 0: There is no sense information */
 	"Recovered Error",  /* 1: The last command completed successfully
 	"Recovered Error",  /* 1: The last command completed successfully
 				  but used error correction */
 				  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);
 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)
 void scsi_print_command(struct scsi_cmnd *cmd)
 {
 {
 	/* Assume appended output (i.e. not at start of line) */
 	/* Assume appended output (i.e. not at start of line) */
@@ -1397,7 +1289,7 @@ EXPORT_SYMBOL(scsi_print_command);
 
 
 #ifdef CONFIG_SCSI_CONSTANTS
 #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_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_ABORT", "DID_PARITY", "DID_ERROR", "DID_RESET", "DID_BAD_INTR",
 "DID_PASSTHROUGH", "DID_SOFT_ERROR", "DID_IMM_RETRY"};
 "DID_PASSTHROUGH", "DID_SOFT_ERROR", "DID_IMM_RETRY"};
@@ -1422,12 +1314,12 @@ void scsi_print_hostbyte(int scsiresult)
 
 
 #ifdef CONFIG_SCSI_CONSTANTS
 #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_OK", "DRIVER_BUSY", "DRIVER_SOFT",  "DRIVER_MEDIA", "DRIVER_ERROR", 
 "DRIVER_INVALID", "DRIVER_TIMEOUT", "DRIVER_HARD", "DRIVER_SENSE"};
 "DRIVER_INVALID", "DRIVER_TIMEOUT", "DRIVER_HARD", "DRIVER_SENSE"};
 #define NUM_DRIVERBYTE_STRS (sizeof(driverbyte_table) / sizeof(const char *))
 #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_RETRY", "SUGGEST_ABORT", "SUGGEST_REMAP", "SUGGEST_DIE",
 "SUGGEST_5", "SUGGEST_6", "SUGGEST_7", "SUGGEST_SENSE"};
 "SUGGEST_5", "SUGGEST_6", "SUGGEST_7", "SUGGEST_SENSE"};
 #define NUM_SUGGEST_STRS (sizeof(driversuggest_table) / sizeof(const char *))
 #define NUM_SUGGEST_STRS (sizeof(driversuggest_table) / sizeof(const char *))

+ 16 - 1
drivers/scsi/ipr.c

@@ -5887,7 +5887,12 @@ static int __devinit ipr_probe_ioa_part2(struct ipr_ioa_cfg *ioa_cfg)
 	ENTER;
 	ENTER;
 	spin_lock_irqsave(ioa_cfg->host->host_lock, host_lock_flags);
 	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);
 	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);
 	spin_unlock_irqrestore(ioa_cfg->host->host_lock, host_lock_flags);
 	wait_event(ioa_cfg->reset_wait_q, !ioa_cfg->in_reset_reload);
 	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;
 	unsigned long ipr_regs_pci;
 	void __iomem *ipr_regs;
 	void __iomem *ipr_regs;
 	u32 rc = PCIBIOS_SUCCESSFUL;
 	u32 rc = PCIBIOS_SUCCESSFUL;
+	volatile u32 mask, uproc;
 
 
 	ENTER;
 	ENTER;
 
 
@@ -6356,6 +6362,15 @@ static int __devinit ipr_probe_ioa(struct pci_dev *pdev,
 		goto cleanup_nomem;
 		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);
 	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);
 	rc = request_irq(pdev->irq, ipr_isr, SA_SHIRQ, IPR_NAME, ioa_cfg);
 
 

+ 3 - 2
drivers/scsi/ipr.h

@@ -36,8 +36,8 @@
 /*
 /*
  * Literals
  * 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
  * 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 dump_taken:1;
 	u8 allow_cmds:1;
 	u8 allow_cmds:1;
 	u8 allow_ml_add_del:1;
 	u8 allow_ml_add_del:1;
+	u8 needs_hard_reset:1;
 
 
 	enum ipr_cache_state cache_state;
 	enum ipr_cache_state cache_state;
 	u16 type; /* CCIN of the card */
 	u16 type; /* CCIN of the card */

+ 72 - 49
drivers/scsi/iscsi_tcp.c

@@ -49,7 +49,7 @@ MODULE_AUTHOR("Dmitry Yusupov <dmitry_yus@yahoo.com>, "
 	      "Alex Aizman <itn780@yahoo.com>");
 	      "Alex Aizman <itn780@yahoo.com>");
 MODULE_DESCRIPTION("iSCSI/TCP data-path");
 MODULE_DESCRIPTION("iSCSI/TCP data-path");
 MODULE_LICENSE("GPL");
 MODULE_LICENSE("GPL");
-MODULE_VERSION("0:4.409");
+MODULE_VERSION("0:4.445");
 /* #define DEBUG_TCP */
 /* #define DEBUG_TCP */
 /* #define DEBUG_SCSI */
 /* #define DEBUG_SCSI */
 #define DEBUG_ASSERT
 #define DEBUG_ASSERT
@@ -581,10 +581,16 @@ iscsi_hdr_recv(struct iscsi_conn *conn)
 		crypto_digest_digest(conn->rx_tfm, &sg, 1, (u8 *)&cdgst);
 		crypto_digest_digest(conn->rx_tfm, &sg, 1, (u8 *)&cdgst);
 		rdgst = *(uint32_t*)((char*)hdr + sizeof(struct iscsi_hdr) +
 		rdgst = *(uint32_t*)((char*)hdr + sizeof(struct iscsi_hdr) +
 				     conn->in.ahslen);
 				     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 */
 	/* save opcode for later */
-	conn->in.opcode = hdr->opcode;
+	conn->in.opcode = hdr->opcode & ISCSI_OPCODE_MASK;
 
 
 	/* verify itt (itt encoding: age+cid+itt) */
 	/* verify itt (itt encoding: age+cid+itt) */
 	if (hdr->itt != cpu_to_be32(ISCSI_RESERVED_TAG)) {
 	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);
 		  conn->in.ahslen, conn->in.datalen);
 
 
 	if (conn->in.itt < session->cmds_max) {
 	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];
 		ctask = (struct iscsi_cmd_task *)session->cmds[conn->in.itt];
 
 
 		if (!ctask->sc) {
 		if (!ctask->sc) {
@@ -642,9 +641,7 @@ iscsi_hdr_recv(struct iscsi_conn *conn)
 		switch(conn->in.opcode) {
 		switch(conn->in.opcode) {
 		case ISCSI_OP_SCSI_CMD_RSP:
 		case ISCSI_OP_SCSI_CMD_RSP:
 			BUG_ON((void*)ctask != ctask->sc->SCp.ptr);
 			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);
 				rc = iscsi_cmd_rsp(conn, ctask);
 			else
 			else
 				/*
 				/*
@@ -666,8 +663,7 @@ iscsi_hdr_recv(struct iscsi_conn *conn)
 			break;
 			break;
 		case ISCSI_OP_R2T:
 		case ISCSI_OP_R2T:
 			BUG_ON((void*)ctask != ctask->sc->SCp.ptr);
 			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);
 				rc = iscsi_r2t_rsp(conn, ctask);
 			else
 			else
 				rc = ISCSI_ERR_PROTO;
 				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);
 	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)
 static int iscsi_scsi_data_in(struct iscsi_conn *conn)
 {
 {
 	struct iscsi_cmd_task *ctask = conn->in.ctask;
 	struct iscsi_cmd_task *ctask = conn->in.ctask;
 	struct scsi_cmnd *sc = ctask->sc;
 	struct scsi_cmnd *sc = ctask->sc;
-	struct scatterlist tmp, *sg;
+	struct scatterlist *sg;
 	int i, offset, rc = 0;
 	int i, offset, rc = 0;
 
 
 	BUG_ON((void*)ctask != sc->SCp.ptr);
 	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);
 				      sc->request_bufflen, ctask->data_offset);
 		if (rc == -EAGAIN)
 		if (rc == -EAGAIN)
 			return rc;
 			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;
 		rc = 0;
 		goto done;
 		goto done;
 	}
 	}
@@ -1021,6 +1024,9 @@ iscsi_data_recv(struct iscsi_conn *conn)
 		conn->in.hdr = &conn->hdr;
 		conn->in.hdr = &conn->hdr;
 		conn->senselen = (conn->data[0] << 8) | conn->data[1];
 		conn->senselen = (conn->data[0] << 8) | conn->data[1];
 		rc = iscsi_cmd_rsp(conn, conn->in.ctask);
 		rc = iscsi_cmd_rsp(conn, conn->in.ctask);
+		if (!rc && conn->datadgst_en) 
+			iscsi_recv_digest_update(conn, conn->data,
+						 conn->in.datalen);
 	}
 	}
 	break;
 	break;
 	case ISCSI_OP_TEXT_RSP:
 	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,
 		rc = iscsi_recv_pdu(iscsi_handle(conn), conn->in.hdr,
 				    conn->data, conn->in.datalen);
 				    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) {
 		if (mtask && conn->login_mtask != mtask) {
 			spin_lock(&session->lock);
 			spin_lock(&session->lock);
 			__kfifo_put(session->mgmtpool.queue, (void*)&mtask,
 			__kfifo_put(session->mgmtpool.queue, (void*)&mtask,
@@ -1053,6 +1064,8 @@ iscsi_data_recv(struct iscsi_conn *conn)
 		}
 		}
 	}
 	}
 	break;
 	break;
+	case ISCSI_OP_ASYNC_EVENT:
+	case ISCSI_OP_REJECT:
 	default:
 	default:
 		BUG_ON(1);
 		BUG_ON(1);
 	}
 	}
@@ -1114,8 +1127,7 @@ more:
 		 */
 		 */
 		rc = iscsi_hdr_recv(conn);
 		rc = iscsi_hdr_recv(conn);
 		if (!rc && conn->in.datalen) {
 		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);
 				BUG_ON(!conn->data_rx_tfm);
 				crypto_digest_init(conn->data_rx_tfm);
 				crypto_digest_init(conn->data_rx_tfm);
 			}
 			}
@@ -1127,26 +1139,24 @@ more:
 	}
 	}
 
 
 	if (conn->in_progress == IN_PROGRESS_DDIGEST_RECV) {
 	if (conn->in_progress == IN_PROGRESS_DDIGEST_RECV) {
+		uint32_t recv_digest;
 		debug_tcp("extra data_recv offset %d copy %d\n",
 		debug_tcp("extra data_recv offset %d copy %d\n",
 			  conn->in.offset, conn->in.copy);
 			  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.copy -= conn->in.padding;
 		conn->in.offset += 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) {
 			if (conn->in.padding) {
 				debug_tcp("padding -> %d\n", conn->in.padding);
 				debug_tcp("padding -> %d\n", conn->in.padding);
 				memset(pad, 0, 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;
 	conn = (struct iscsi_conn*)sk->sk_user_data;
 	session = conn->session;
 	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");
 		debug_tcp("iscsi_tcp_state_change: TCP_CLOSE|TCP_CLOSE_WAIT\n");
 		iscsi_conn_failure(conn, ISCSI_ERR_CONN_FAILED);
 		iscsi_conn_failure(conn, ISCSI_ERR_CONN_FAILED);
 	}
 	}
@@ -2388,6 +2398,15 @@ fault:
 	return 0;
 	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
 static int
 iscsi_pool_init(struct iscsi_queue *q, int max, void ***items, int item_size)
 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
 		 * in hdr_extract() and will be re-negotiated at
 		 * set_param() time.
 		 * set_param() time.
 		 */
 		 */
-		if (flag == STOP_CONN_RECOVER)
+		if (flag == STOP_CONN_RECOVER) {
 			conn->hdr_size = sizeof(struct iscsi_hdr);
 			conn->hdr_size = sizeof(struct iscsi_hdr);
+			conn->hdrdgst_en = 0;
+			conn->datadgst_en = 0;
+		}
 	}
 	}
 	up(&conn->xmitsema);
 	up(&conn->xmitsema);
 }
 }
@@ -3247,13 +3269,14 @@ iscsi_r2tpool_free(struct iscsi_session *session)
 static struct scsi_host_template iscsi_sht = {
 static struct scsi_host_template iscsi_sht = {
 	.name			= "iSCSI Initiator over TCP/IP, v."
 	.name			= "iSCSI Initiator over TCP/IP, v."
 				  ISCSI_VERSION_STR,
 				  ISCSI_VERSION_STR,
-        .queuecommand           = iscsi_queuecommand,
+	.queuecommand           = iscsi_queuecommand,
+	.change_queue_depth	= iscsi_change_queue_depth,
 	.can_queue		= ISCSI_XMIT_CMDS_MAX - 1,
 	.can_queue		= ISCSI_XMIT_CMDS_MAX - 1,
 	.sg_tablesize		= ISCSI_SG_TABLESIZE,
 	.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",
 	.proc_name		= "iscsi_tcp",
 	.this_id		= -1,
 	.this_id		= -1,
 };
 };

+ 2 - 1
drivers/scsi/iscsi_tcp.h

@@ -71,7 +71,8 @@
 #define ISCSI_MGMT_CMDS_MAX		32	/* must be power of 2 */
 #define ISCSI_MGMT_CMDS_MAX		32	/* must be power of 2 */
 #define ISCSI_MGMT_ITT_OFFSET		0xa00
 #define ISCSI_MGMT_ITT_OFFSET		0xa00
 #define ISCSI_SG_TABLESIZE		SG_ALL
 #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 ISCSI_TCP_MAX_CMD_LEN		16
 
 
 #define ITT_MASK			(0xfff)
 #define ITT_MASK			(0xfff)

+ 13 - 1
drivers/scsi/lpfc/lpfc.h

@@ -29,9 +29,10 @@ struct lpfc_sli2_slim;
 #define LPFC_LC_HBA_Q_DEPTH	1024	/* max cmds per low cost hba */
 #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_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_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_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 macros for 64 bit support */
 #define putPaddrLow(addr)    ((uint32_t) (0xffffffff & (u64)(addr)))
 #define putPaddrLow(addr)    ((uint32_t) (0xffffffff & (u64)(addr)))
@@ -45,6 +46,11 @@ struct lpfc_sli2_slim;
 
 
 #define MAX_HBAEVT	32
 #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. */
 /* Provide DMA memory definitions the driver uses per port instance. */
 struct lpfc_dmabuf {
 struct lpfc_dmabuf {
 	struct list_head list;
 	struct list_head list;
@@ -167,6 +173,7 @@ struct lpfc_hba {
 	dma_addr_t slim2p_mapping;
 	dma_addr_t slim2p_mapping;
 	uint16_t pci_cfg_value;
 	uint16_t pci_cfg_value;
 
 
+	struct semaphore hba_can_block;
 	uint32_t hba_state;
 	uint32_t hba_state;
 
 
 #define LPFC_INIT_START           1	/* Initial state after board reset */
 #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_fcp_bind_method;
 	uint32_t cfg_discovery_threads;
 	uint32_t cfg_discovery_threads;
 	uint32_t cfg_max_luns;
 	uint32_t cfg_max_luns;
+	uint32_t cfg_poll;
+	uint32_t cfg_poll_tmo;
 	uint32_t cfg_sg_seg_cnt;
 	uint32_t cfg_sg_seg_cnt;
 	uint32_t cfg_sg_dma_buf_size;
 	uint32_t cfg_sg_dma_buf_size;
 
 
@@ -337,7 +346,9 @@ struct lpfc_hba {
 #define VPD_PORT            0x8         /* valid vpd port data */
 #define VPD_PORT            0x8         /* valid vpd port data */
 #define VPD_MASK            0xf         /* mask for any vpd data */
 #define VPD_MASK            0xf         /* mask for any vpd data */
 
 
+	struct timer_list fcp_poll_timer;
 	struct timer_list els_tmofunc;
 	struct timer_list els_tmofunc;
+
 	/*
 	/*
 	 * stat  counters
 	 * stat  counters
 	 */
 	 */
@@ -348,6 +359,7 @@ struct lpfc_hba {
 	struct lpfc_sysfs_mbox sysfs_mbox;
 	struct lpfc_sysfs_mbox sysfs_mbox;
 
 
 	/* fastpath list. */
 	/* fastpath list. */
+	spinlock_t scsi_buf_list_lock;
 	struct list_head lpfc_scsi_buf_list;
 	struct list_head lpfc_scsi_buf_list;
 	uint32_t total_scsi_bufs;
 	uint32_t total_scsi_bufs;
 	struct list_head lpfc_iocb_list;
 	struct list_head lpfc_iocb_list;

+ 90 - 2
drivers/scsi/lpfc/lpfc_attr.c

@@ -278,6 +278,71 @@ lpfc_board_online_store(struct class_device *cdev, const char *buf,
 		return -EIO;
 		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)	\
 #define lpfc_param_show(attr)	\
 static ssize_t \
 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,
 static CLASS_DEVICE_ATTR(board_online, S_IRUGO | S_IWUSR,
 			 lpfc_board_online_show, lpfc_board_online_store);
 			 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
 # 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
 # is 0. Default value of cr_count is 1. The cr_count feature is disabled if
 # cr_delay is set to 0.
 # 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");
 		"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");
 		"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,
 LPFC_ATTR_R(max_luns, 256, 1, 32768,
 	     "Maximum number of LUNs per target driver will support");
 	     "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[] = {
 struct class_device_attribute *lpfc_host_attrs[] = {
 	&class_device_attr_info,
 	&class_device_attr_info,
 	&class_device_attr_serialnum,
 	&class_device_attr_serialnum,
@@ -575,11 +656,15 @@ struct class_device_attribute *lpfc_host_attrs[] = {
 	&class_device_attr_lpfc_topology,
 	&class_device_attr_lpfc_topology,
 	&class_device_attr_lpfc_scan_down,
 	&class_device_attr_lpfc_scan_down,
 	&class_device_attr_lpfc_link_speed,
 	&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_fdmi_on,
 	&class_device_attr_lpfc_max_luns,
 	&class_device_attr_lpfc_max_luns,
 	&class_device_attr_nport_evt_cnt,
 	&class_device_attr_nport_evt_cnt,
 	&class_device_attr_management_version,
 	&class_device_attr_management_version,
 	&class_device_attr_board_online,
 	&class_device_attr_board_online,
+	&class_device_attr_lpfc_poll,
+	&class_device_attr_lpfc_poll_tmo,
 	NULL,
 	NULL,
 };
 };
 
 
@@ -1292,6 +1377,9 @@ lpfc_get_cfgparam(struct lpfc_hba *phba)
 	lpfc_fdmi_on_init(phba, lpfc_fdmi_on);
 	lpfc_fdmi_on_init(phba, lpfc_fdmi_on);
 	lpfc_discovery_threads_init(phba, lpfc_discovery_threads);
 	lpfc_discovery_threads_init(phba, lpfc_discovery_threads);
 	lpfc_max_luns_init(phba, lpfc_max_luns);
 	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
 	 * The total number of segments is the configuration value plus 2

+ 3 - 0
drivers/scsi/lpfc/lpfc_crtn.h

@@ -143,6 +143,9 @@ LPFC_MBOXQ_t *lpfc_mbox_get(struct lpfc_hba *);
 int lpfc_mem_alloc(struct lpfc_hba *);
 int lpfc_mem_alloc(struct lpfc_hba *);
 void lpfc_mem_free(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 *);
 struct lpfc_iocbq * lpfc_sli_get_iocbq(struct lpfc_hba *);
 void lpfc_sli_release_iocbq(struct lpfc_hba * phba, struct lpfc_iocbq * iocb);
 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);
 uint16_t lpfc_sli_next_iotag(struct lpfc_hba * phba, struct lpfc_iocbq * iocb);

+ 2 - 0
drivers/scsi/lpfc/lpfc_disc.h

@@ -73,6 +73,8 @@ struct lpfc_nodelist {
 	struct lpfc_hba      *nlp_phba;
 	struct lpfc_hba      *nlp_phba;
 	struct lpfc_work_evt nodev_timeout_evt;
 	struct lpfc_work_evt nodev_timeout_evt;
 	struct lpfc_work_evt els_retry_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) */
 /* Defines for nlp_flag (uint32) */

+ 4 - 0
drivers/scsi/lpfc/lpfc_els.c

@@ -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 */
 		/* Do not call DSM for lpfc_els_abort'ed ELS cmds */
 		if ((irsp->ulpStatus == IOSTAT_LOCAL_REJECT) &&
 		if ((irsp->ulpStatus == IOSTAT_LOCAL_REJECT) &&
 		   ((irsp->un.ulpWord[4] == IOERR_SLI_ABORTED) ||
 		   ((irsp->un.ulpWord[4] == IOERR_SLI_ABORTED) ||
+		   (irsp->un.ulpWord[4] == IOERR_LINK_DOWN) ||
 		   (irsp->un.ulpWord[4] == IOERR_SLI_DOWN))) {
 		   (irsp->un.ulpWord[4] == IOERR_SLI_DOWN))) {
 			disc = (ndlp->nlp_flag & NLP_NPR_2B_DISC);
 			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 */
 		/* Do not call DSM for lpfc_els_abort'ed ELS cmds */
 		if ((irsp->ulpStatus == IOSTAT_LOCAL_REJECT) &&
 		if ((irsp->ulpStatus == IOSTAT_LOCAL_REJECT) &&
 		   ((irsp->un.ulpWord[4] == IOERR_SLI_ABORTED) ||
 		   ((irsp->un.ulpWord[4] == IOERR_SLI_ABORTED) ||
+		   (irsp->un.ulpWord[4] == IOERR_LINK_DOWN) ||
 		   (irsp->un.ulpWord[4] == IOERR_SLI_DOWN))) {
 		   (irsp->un.ulpWord[4] == IOERR_SLI_DOWN))) {
 			goto out;
 			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 */
 		/* Do not call DSM for lpfc_els_abort'ed ELS cmds */
 		if ((irsp->ulpStatus == IOSTAT_LOCAL_REJECT) &&
 		if ((irsp->ulpStatus == IOSTAT_LOCAL_REJECT) &&
 		   ((irsp->un.ulpWord[4] == IOERR_SLI_ABORTED) ||
 		   ((irsp->un.ulpWord[4] == IOERR_SLI_ABORTED) ||
+		   (irsp->un.ulpWord[4] == IOERR_LINK_DOWN) ||
 		   (irsp->un.ulpWord[4] == IOERR_SLI_DOWN))) {
 		   (irsp->un.ulpWord[4] == IOERR_SLI_DOWN))) {
 			disc = (ndlp->nlp_flag & NLP_NPR_2B_DISC);
 			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 */
 		/* Do not call DSM for lpfc_els_abort'ed ELS cmds */
 		if ((irsp->ulpStatus == IOSTAT_LOCAL_REJECT) &&
 		if ((irsp->ulpStatus == IOSTAT_LOCAL_REJECT) &&
 		   ((irsp->un.ulpWord[4] == IOERR_SLI_ABORTED) ||
 		   ((irsp->un.ulpWord[4] == IOERR_SLI_ABORTED) ||
+		   (irsp->un.ulpWord[4] == IOERR_LINK_DOWN) ||
 		   (irsp->un.ulpWord[4] == IOERR_SLI_DOWN))) {
 		   (irsp->un.ulpWord[4] == IOERR_SLI_DOWN))) {
 			goto out;
 			goto out;
 		}
 		}

+ 10 - 8
drivers/scsi/lpfc/lpfc_hbadisc.c

@@ -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_name = wwn_to_u64(ndlp->nlp_portname.u.wwn);
 	rport_ids.port_id = ndlp->nlp_DID;
 	rport_ids.port_id = ndlp->nlp_DID;
 	rport_ids.roles = FC_RPORT_ROLE_UNKNOWN;
 	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);
 	ndlp->rport = rport = fc_remote_port_add(phba->host, 0, &rport_ids);
 	if (!rport) {
 	if (!rport) {
 		dev_printk(KERN_WARNING, &phba->pcidev->dev,
 		dev_printk(KERN_WARNING, &phba->pcidev->dev,
@@ -1039,7 +1034,16 @@ lpfc_register_remote_port(struct lpfc_hba * phba,
 	}
 	}
 	rdata = rport->dd_data;
 	rdata = rport->dd_data;
 	rdata->pnode = ndlp;
 	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;
 	return;
 }
 }
@@ -1053,9 +1057,7 @@ lpfc_unregister_remote_port(struct lpfc_hba * phba,
 
 
 	ndlp->rport = NULL;
 	ndlp->rport = NULL;
 	rdata->pnode = NULL;
 	rdata->pnode = NULL;
-	scsi_block_requests(phba->host);
 	fc_remote_port_delete(rport);
 	fc_remote_port_delete(rport);
-	scsi_unblock_requests(phba->host);
 
 
 	return;
 	return;
 }
 }

+ 29 - 11
drivers/scsi/lpfc/lpfc_hw.h

@@ -266,9 +266,11 @@ struct lpfc_name {
 		struct {
 		struct {
 #ifdef __BIG_ENDIAN_BITFIELD
 #ifdef __BIG_ENDIAN_BITFIELD
 			uint8_t nameType:4;	/* FC Word 0, bit 28:31 */
 			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 */
 #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 */
 			uint8_t nameType:4;	/* FC Word 0, bit 28:31 */
 #endif
 #endif
 
 
@@ -278,7 +280,8 @@ struct lpfc_name {
 #define NAME_IP_TYPE        0x4	/* IP address */
 #define NAME_IP_TYPE        0x4	/* IP address */
 #define NAME_CCITT_TYPE     0xC
 #define NAME_CCITT_TYPE     0xC
 #define NAME_CCITT_GR_TYPE  0xE
 #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 */
 			uint8_t IEEE[6];	/* FC IEEE address */
 		} s;
 		} s;
 		uint8_t wwn[8];
 		uint8_t wwn[8];
@@ -1024,23 +1027,38 @@ typedef struct {
 /* Start FireFly Register definitions */
 /* Start FireFly Register definitions */
 #define PCI_VENDOR_ID_EMULEX        0x10df
 #define PCI_VENDOR_ID_EMULEX        0x10df
 #define PCI_DEVICE_ID_FIREFLY       0x1ae5
 #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_RFLY          0xf095
 #define PCI_DEVICE_ID_PFLY          0xf098
 #define PCI_DEVICE_ID_PFLY          0xf098
+#define PCI_DEVICE_ID_LP101         0xf0a1
 #define PCI_DEVICE_ID_TFLY          0xf0a5
 #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_CENTAUR       0xf900
 #define PCI_DEVICE_ID_PEGASUS       0xf980
 #define PCI_DEVICE_ID_PEGASUS       0xf980
 #define PCI_DEVICE_ID_THOR          0xfa00
 #define PCI_DEVICE_ID_THOR          0xfa00
 #define PCI_DEVICE_ID_VIPER         0xfb00
 #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_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_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 JEDEC_ID_ADDRESS            0x0080001c
 #define FIREFLY_JEDEC_ID            0x1ACC
 #define FIREFLY_JEDEC_ID            0x1ACC

+ 127 - 56
drivers/scsi/lpfc/lpfc_init.c

@@ -126,34 +126,26 @@ lpfc_config_port_prep(struct lpfc_hba * phba)
 		return -ERESTART;
 		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;
 		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);
 		mempool_free(pmb, phba->mbox_mem_pool);
 		return -ERESTART;
 		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 */
 	/* 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.biuRev = mb->un.varRdRev.biuRev;
 	vp->rev.smRev = mb->un.varRdRev.smRev;
 	vp->rev.smRev = mb->un.varRdRev.smRev;
 	vp->rev.smFwRev = mb->un.varRdRev.un.smFwRev;
 	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)
 	if (psli->num_rings > 3)
 		status |= HC_R3INT_ENA;
 		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);
 	writel(status, phba->HCregaddr);
 	readl(phba->HCregaddr); /* flush */
 	readl(phba->HCregaddr); /* flush */
 	spin_unlock_irq(phba->host->host_lock);
 	spin_unlock_irq(phba->host->host_lock);
@@ -571,6 +567,8 @@ lpfc_handle_latt(struct lpfc_hba * phba)
 
 
 	rc = -EIO;
 	rc = -EIO;
 
 
+	/* Cleanup any outstanding ELS commands */
+	lpfc_els_flush_cmd(phba);
 
 
 	psli->slistat.link_event++;
 	psli->slistat.link_event++;
 	lpfc_read_la(phba, pmb, mp);
 	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_get_hba_model_desc(struct lpfc_hba * phba, uint8_t * mdp, uint8_t * descp)
 {
 {
 	lpfc_vpd_t *vp;
 	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;
 	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:
 	case PCI_DEVICE_ID_FIREFLY:
-		strcpy(str, "LP6000 1");
+		model_str = "LP6000 1Gb PCI";
 		break;
 		break;
 	case PCI_DEVICE_ID_SUPERFLY:
 	case PCI_DEVICE_ID_SUPERFLY:
 		if (vp->rev.biuRev >= 1 && vp->rev.biuRev <= 3)
 		if (vp->rev.biuRev >= 1 && vp->rev.biuRev <= 3)
-			strcpy(str, "LP7000 1");
+			model_str = "LP7000 1Gb PCI";
 		else
 		else
-			strcpy(str, "LP7000E 1");
+			model_str = "LP7000E 1Gb PCI";
 		break;
 		break;
 	case PCI_DEVICE_ID_DRAGONFLY:
 	case PCI_DEVICE_ID_DRAGONFLY:
-		strcpy(str, "LP8000 1");
+		model_str = "LP8000 1Gb PCI";
 		break;
 		break;
 	case PCI_DEVICE_ID_CENTAUR:
 	case PCI_DEVICE_ID_CENTAUR:
 		if (FC_JEDEC_ID(vp->rev.biuRev) == CENTAUR_2G_JEDEC_ID)
 		if (FC_JEDEC_ID(vp->rev.biuRev) == CENTAUR_2G_JEDEC_ID)
-			strcpy(str, "LP9002 2");
+			model_str = "LP9002 2Gb PCI";
 		else
 		else
-			strcpy(str, "LP9000 1");
+			model_str = "LP9000 1Gb PCI";
 		break;
 		break;
 	case PCI_DEVICE_ID_RFLY:
 	case PCI_DEVICE_ID_RFLY:
-		strcpy(str, "LP952 2");
+		model_str = "LP952 2Gb PCI";
 		break;
 		break;
 	case PCI_DEVICE_ID_PEGASUS:
 	case PCI_DEVICE_ID_PEGASUS:
-		strcpy(str, "LP9802 2");
+		model_str = "LP9802 2Gb PCI-X";
 		break;
 		break;
 	case PCI_DEVICE_ID_THOR:
 	case PCI_DEVICE_ID_THOR:
 		if (hdrtype == 0x80)
 		if (hdrtype == 0x80)
-			strcpy(str, "LP10000DC 2");
+			model_str = "LP10000DC 2Gb 2-port PCI-X";
 		else
 		else
-			strcpy(str, "LP10000 2");
+			model_str = "LP10000 2Gb PCI-X";
 		break;
 		break;
 	case PCI_DEVICE_ID_VIPER:
 	case PCI_DEVICE_ID_VIPER:
-		strcpy(str, "LPX1000 10");
+		model_str = "LPX1000 10Gb PCI-X";
 		break;
 		break;
 	case PCI_DEVICE_ID_PFLY:
 	case PCI_DEVICE_ID_PFLY:
-		strcpy(str, "LP982 2");
+		model_str = "LP982 2Gb PCI-X";
 		break;
 		break;
 	case PCI_DEVICE_ID_TFLY:
 	case PCI_DEVICE_ID_TFLY:
 		if (hdrtype == 0x80)
 		if (hdrtype == 0x80)
-			strcpy(str, "LP1050DC 2");
+			model_str = "LP1050DC 2Gb 2-port PCI-X";
 		else
 		else
-			strcpy(str, "LP1050 2");
+			model_str = "LP1050 2Gb PCI-X";
 		break;
 		break;
 	case PCI_DEVICE_ID_HELIOS:
 	case PCI_DEVICE_ID_HELIOS:
 		if (hdrtype == 0x80)
 		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
 		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;
 		break;
 	case PCI_DEVICE_ID_BMID:
 	case PCI_DEVICE_ID_BMID:
-		strcpy(str, "LP1150 4");
+		model_str = "LP1150 4Gb PCI-X2";
 		break;
 		break;
 	case PCI_DEVICE_ID_BSMB:
 	case PCI_DEVICE_ID_BSMB:
-		strcpy(str, "LP111 4");
+		model_str = "LP111 4Gb PCI-X2";
 		break;
 		break;
 	case PCI_DEVICE_ID_ZEPHYR:
 	case PCI_DEVICE_ID_ZEPHYR:
 		if (hdrtype == 0x80)
 		if (hdrtype == 0x80)
-			strcpy(str, "LPe11002 4");
+			model_str = "LPe11002 4Gb 2-port PCIe";
 		else
 		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;
 		break;
 	case PCI_DEVICE_ID_ZMID:
 	case PCI_DEVICE_ID_ZMID:
-		strcpy(str, "LPe1150 4");
+		model_str = "LPe1150 4Gb PCIe";
 		break;
 		break;
 	case PCI_DEVICE_ID_ZSMB:
 	case PCI_DEVICE_ID_ZSMB:
-		strcpy(str, "LPe111 4");
+		model_str = "LPe111 4Gb PCIe";
 		break;
 		break;
 	case PCI_DEVICE_ID_LP101:
 	case PCI_DEVICE_ID_LP101:
-		strcpy(str, "LP101 2");
+		model_str = "LP101 2Gb PCI-X";
 		break;
 		break;
 	case PCI_DEVICE_ID_LP10000S:
 	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;
 		break;
 	default:
 	default:
-		memset(str, 0, 16);
 		break;
 		break;
 	}
 	}
 	if (mdp)
 	if (mdp)
-		sscanf(str, "%s", mdp);
+		sscanf(model_str, "%s", mdp);
 	if (descp)
 	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_estabtmo);
 	del_timer_sync(&phba->fc_disctmo);
 	del_timer_sync(&phba->fc_disctmo);
 	del_timer_sync(&phba->fc_fdmitmo);
 	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;
 		goto out_put_host;
 
 
 	host->unique_id = phba->brd_no;
 	host->unique_id = phba->brd_no;
-
+	init_MUTEX(&phba->hba_can_block);
 	INIT_LIST_HEAD(&phba->ctrspbuflist);
 	INIT_LIST_HEAD(&phba->ctrspbuflist);
 	INIT_LIST_HEAD(&phba->rnidrspbuflist);
 	INIT_LIST_HEAD(&phba->rnidrspbuflist);
 	INIT_LIST_HEAD(&phba->freebufList);
 	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.function = lpfc_mbox_timeout;
 	psli->mbox_tmo.data = (unsigned long)phba;
 	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
 	 * Get all the module params for configuring this host and then
 	 * establish the host parameters.
 	 * 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;
 	host->max_cmd_len = 16;
 
 
 	/* Initialize the list of scsi buffers used by driver for scsi IO. */
 	/* 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);
 	INIT_LIST_HEAD(&phba->lpfc_scsi_buf_list);
 
 
 	host->transportt = lpfc_transport_template;
 	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)
 	if (error)
 		goto out_free_irq;
 		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
 	 * set fixed host attributes
 	 * Must done after lpfc_sli_hba_setup()
 	 * 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_ANY_ID, PCI_ANY_ID, },
 	{PCI_VENDOR_ID_EMULEX, PCI_DEVICE_ID_PFLY,
 	{PCI_VENDOR_ID_EMULEX, PCI_DEVICE_ID_PFLY,
 		PCI_ANY_ID, PCI_ANY_ID, },
 		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_VENDOR_ID_EMULEX, PCI_DEVICE_ID_HELIOS,
 		PCI_ANY_ID, PCI_ANY_ID, },
 		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_VENDOR_ID_EMULEX, PCI_DEVICE_ID_BMID,
 		PCI_ANY_ID, PCI_ANY_ID, },
 		PCI_ANY_ID, PCI_ANY_ID, },
 	{PCI_VENDOR_ID_EMULEX, PCI_DEVICE_ID_BSMB,
 	{PCI_VENDOR_ID_EMULEX, PCI_DEVICE_ID_BSMB,
 		PCI_ANY_ID, PCI_ANY_ID, },
 		PCI_ANY_ID, PCI_ANY_ID, },
 	{PCI_VENDOR_ID_EMULEX, PCI_DEVICE_ID_ZEPHYR,
 	{PCI_VENDOR_ID_EMULEX, PCI_DEVICE_ID_ZEPHYR,
 		PCI_ANY_ID, PCI_ANY_ID, },
 		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_VENDOR_ID_EMULEX, PCI_DEVICE_ID_ZMID,
 		PCI_ANY_ID, PCI_ANY_ID, },
 		PCI_ANY_ID, PCI_ANY_ID, },
 	{PCI_VENDOR_ID_EMULEX, PCI_DEVICE_ID_ZSMB,
 	{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_ANY_ID, PCI_ANY_ID, },
 	{PCI_VENDOR_ID_EMULEX, PCI_DEVICE_ID_LP10000S,
 	{PCI_VENDOR_ID_EMULEX, PCI_DEVICE_ID_LP10000S,
 		PCI_ANY_ID, PCI_ANY_ID, },
 		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 }
 	{ 0 }
 };
 };
 
 

+ 45 - 24
drivers/scsi/lpfc/lpfc_nportdisc.c

@@ -55,55 +55,76 @@ lpfc_check_adisc(struct lpfc_hba * phba, struct lpfc_nodelist * ndlp,
 	return (1);
 	return (1);
 }
 }
 
 
-
 int
 int
 lpfc_check_sparm(struct lpfc_hba * phba,
 lpfc_check_sparm(struct lpfc_hba * phba,
 		 struct lpfc_nodelist * ndlp, struct serv_parm * sp,
 		 struct lpfc_nodelist * ndlp, struct serv_parm * sp,
 		 uint32_t class)
 		 uint32_t class)
 {
 {
 	volatile struct serv_parm *hsp = &phba->fc_sparam;
 	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.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.rcvDataSizeLsb = hsp->cls1.rcvDataSizeLsb;
+			sp->cls1.rcvDataSizeMsb = hsp->cls1.rcvDataSizeMsb;
+		}
 	} else if (class == CLASS1) {
 	} else if (class == CLASS1) {
-		return (0);
+		return 0;
 	}
 	}
 
 
 	if (sp->cls2.classValid) {
 	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.rcvDataSizeLsb = hsp->cls2.rcvDataSizeLsb;
+			sp->cls2.rcvDataSizeMsb = hsp->cls2.rcvDataSizeMsb;
+		}
 	} else if (class == CLASS2) {
 	} else if (class == CLASS2) {
-		return (0);
+		return 0;
 	}
 	}
 
 
 	if (sp->cls3.classValid) {
 	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.rcvDataSizeLsb = hsp->cls3.rcvDataSizeLsb;
+			sp->cls3.rcvDataSizeMsb = hsp->cls3.rcvDataSizeMsb;
+		}
 	} else if (class == CLASS3) {
 	} 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.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_nodename, &sp->nodeName, sizeof (struct lpfc_name));
 	memcpy(&ndlp->nlp_portname, &sp->portName, sizeof (struct lpfc_name));
 	memcpy(&ndlp->nlp_portname, &sp->portName, sizeof (struct lpfc_name));
-	return (1);
+	return 1;
 }
 }
 
 
 static void *
 static void *

+ 207 - 88
drivers/scsi/lpfc/lpfc_scsi.c

@@ -41,6 +41,20 @@
 #define LPFC_ABORT_WAIT  2
 #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
  * This routine allocates a scsi buffer, which contains all the necessary
  * information needed to initiate a SCSI I/O.  The non-DMAable buffer region
  * 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*
 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  lpfc_scsi_buf * lpfc_cmd = NULL;
 	struct list_head *scsi_buf_list = &phba->lpfc_scsi_buf_list;
 	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);
 	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;
 	return  lpfc_cmd;
 }
 }
 
 
 static void
 static void
 lpfc_release_scsi_buf(struct lpfc_hba * phba, struct lpfc_scsi_buf * psb)
 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
 	 * There are only two special cases to consider.  (1) the scsi command
 	 * requested scatter-gather usage or (2) the scsi command allocated
 	 * 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;
 	psb->pCmd = NULL;
 	list_add_tail(&psb->list, &phba->lpfc_scsi_buf_list);
 	list_add_tail(&psb->list, &phba->lpfc_scsi_buf_list);
+	spin_unlock_irqrestore(&phba->scsi_buf_list_lock, iflag);
 }
 }
 
 
 static int
 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_rport_data *rdata = lpfc_cmd->rdata;
 	struct lpfc_nodelist *pnode = rdata->pnode;
 	struct lpfc_nodelist *pnode = rdata->pnode;
 	struct scsi_cmnd *cmd = lpfc_cmd->pCmd;
 	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->result = pIocbOut->iocb.un.ulpWord[4];
 	lpfc_cmd->status = pIocbOut->iocb.ulpStatus;
 	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);
 				*lp, *(lp + 3), cmd->retries, cmd->resid);
 	}
 	}
 
 
+	result = cmd->result;
+	sdev = cmd->device;
 	cmd->scsi_done(cmd);
 	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);
 	lpfc_release_scsi_buf(phba, lpfc_cmd);
-	spin_unlock_irqrestore(phba->host->host_lock, iflag);
 }
 }
 
 
 static void
 static void
@@ -693,6 +768,37 @@ lpfc_info(struct Scsi_Host *host)
 	return lpfcinfobuf;
 	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
 static int
 lpfc_queuecommand(struct scsi_cmnd *cmnd, void (*done) (struct scsi_cmnd *))
 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);
 		cmnd->result = ScsiResult(DID_BUS_BUSY, 0);
 		goto out_fail_command;
 		goto out_fail_command;
 	}
 	}
-	lpfc_cmd = lpfc_sli_get_scsi_buf (phba);
+	lpfc_cmd = lpfc_get_scsi_buf (phba);
 	if (lpfc_cmd == NULL) {
 	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;
 		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);
 				&lpfc_cmd->cur_iocbq, SLI_IOCB_RET_IOCB);
 	if (err)
 	if (err)
 		goto out_host_busy_free_buf;
 		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;
 	return 0;
 
 
  out_host_busy_free_buf:
  out_host_busy_free_buf:
 	lpfc_release_scsi_buf(phba, lpfc_cmd);
 	lpfc_release_scsi_buf(phba, lpfc_cmd);
-	cmnd->host_scribble = NULL;
  out_host_busy:
  out_host_busy:
 	return SCSI_MLQUEUE_HOST_BUSY;
 	return SCSI_MLQUEUE_HOST_BUSY;
 
 
@@ -759,11 +872,12 @@ lpfc_queuecommand(struct scsi_cmnd *cmnd, void (*done) (struct scsi_cmnd *))
 	return 0;
 	return 0;
 }
 }
 
 
+
 static int
 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_sli_ring *pring = &phba->sli.ring[phba->sli.fcp_ring];
 	struct lpfc_iocbq *iocb;
 	struct lpfc_iocbq *iocb;
 	struct lpfc_iocbq *abtsiocb;
 	struct lpfc_iocbq *abtsiocb;
@@ -772,6 +886,8 @@ __lpfc_abort_handler(struct scsi_cmnd *cmnd)
 	unsigned int loop_count = 0;
 	unsigned int loop_count = 0;
 	int ret = SUCCESS;
 	int ret = SUCCESS;
 
 
+	lpfc_block_requests(phba);
+	spin_lock_irq(shost->host_lock);
 
 
 	lpfc_cmd = (struct lpfc_scsi_buf *)cmnd->host_scribble;
 	lpfc_cmd = (struct lpfc_scsi_buf *)cmnd->host_scribble;
 	BUG_ON(!lpfc_cmd);
 	BUG_ON(!lpfc_cmd);
@@ -821,9 +937,15 @@ __lpfc_abort_handler(struct scsi_cmnd *cmnd)
 		goto out;
 		goto out;
 	}
 	}
 
 
+	if (phba->cfg_poll & DISABLE_FCP_RING_INT)
+		lpfc_sli_poll_fcp_ring (phba);
+
 	/* Wait for abort to complete */
 	/* Wait for abort to complete */
 	while (lpfc_cmd->pCmd == cmnd)
 	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);
 		spin_unlock_irq(phba->host->host_lock);
 			schedule_timeout_uninterruptible(LPFC_ABORT_WAIT*HZ);
 			schedule_timeout_uninterruptible(LPFC_ABORT_WAIT*HZ);
 		spin_lock_irq(phba->host->host_lock);
 		spin_lock_irq(phba->host->host_lock);
@@ -844,26 +966,19 @@ __lpfc_abort_handler(struct scsi_cmnd *cmnd)
 
 
  out:
  out:
 	lpfc_printf_log(phba, KERN_WARNING, LOG_FCP,
 	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,
 			phba->brd_no, ret, cmnd->device->id,
 			cmnd->device->lun, cmnd->serial_number);
 			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
 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 Scsi_Host *shost = cmnd->device->host;
 	struct lpfc_hba *phba = (struct lpfc_hba *)shost->hostdata[0];
 	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_iocbq *iocbq, *iocbqrsp;
 	struct lpfc_rport_data *rdata = cmnd->device->hostdata;
 	struct lpfc_rport_data *rdata = cmnd->device->hostdata;
 	struct lpfc_nodelist *pnode = rdata->pnode;
 	struct lpfc_nodelist *pnode = rdata->pnode;
+	uint32_t cmd_result = 0, cmd_status = 0;
 	int ret = FAILED;
 	int ret = FAILED;
 	int cnt, loopcnt;
 	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
 	 * If target is not in a MAPPED state, delay the reset until
 	 * target is rediscovered or nodev timeout expires.
 	 * target is rediscovered or nodev timeout expires.
@@ -891,7 +1009,7 @@ __lpfc_reset_lun_handler(struct scsi_cmnd *cmnd)
 			break;
 			break;
 	}
 	}
 
 
-	lpfc_cmd = lpfc_sli_get_scsi_buf (phba);
+	lpfc_cmd = lpfc_get_scsi_buf (phba);
 	if (lpfc_cmd == NULL)
 	if (lpfc_cmd == NULL)
 		goto out;
 		goto out;
 
 
@@ -916,26 +1034,28 @@ __lpfc_reset_lun_handler(struct scsi_cmnd *cmnd)
 	if (ret == IOCB_SUCCESS)
 	if (ret == IOCB_SUCCESS)
 		ret = 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
 	 * Unfortunately, some targets do not abide by this forcing the driver
 	 * to double check.
 	 * 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;
 	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);
 		spin_unlock_irq(phba->host->host_lock);
 		schedule_timeout_uninterruptible(LPFC_RESET_WAIT*HZ);
 		schedule_timeout_uninterruptible(LPFC_RESET_WAIT*HZ);
 		spin_lock_irq(phba->host->host_lock);
 		spin_lock_irq(phba->host->host_lock);
@@ -943,6 +1063,11 @@ __lpfc_reset_lun_handler(struct scsi_cmnd *cmnd)
 		if (++loopcnt
 		if (++loopcnt
 		    > (2 * phba->cfg_nodev_tmo)/LPFC_RESET_WAIT)
 		    > (2 * phba->cfg_nodev_tmo)/LPFC_RESET_WAIT)
 			break;
 			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) {
 	if (cnt) {
@@ -952,35 +1077,21 @@ __lpfc_reset_lun_handler(struct scsi_cmnd *cmnd)
 		ret = FAILED;
 		ret = FAILED;
 	}
 	}
 
 
-	lpfc_sli_release_iocbq(phba, iocbqrsp);
-
 out_free_scsi_buf:
 out_free_scsi_buf:
 	lpfc_printf_log(phba, KERN_ERR, LOG_FCP,
 	lpfc_printf_log(phba, KERN_ERR, LOG_FCP,
 			"%d:0713 SCSI layer issued LUN reset (%d, %d) "
 			"%d:0713 SCSI layer issued LUN reset (%d, %d) "
 			"Data: x%x x%x x%x\n",
 			"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:
 out:
+	spin_unlock_irq(shost->host_lock);
+	lpfc_unblock_requests(phba);
 	return ret;
 	return ret;
 }
 }
 
 
 static int
 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 Scsi_Host *shost = cmnd->device->host;
 	struct lpfc_hba *phba = (struct lpfc_hba *)shost->hostdata[0];
 	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;
 	unsigned int midlayer_id = 0;
 	struct lpfc_scsi_buf * lpfc_cmd;
 	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)
 	if (lpfc_cmd == NULL)
 		goto out;
 		goto out;
 
 
@@ -1022,18 +1136,31 @@ __lpfc_reset_bus_handler(struct scsi_cmnd *cmnd)
 		lpfc_cmd->pCmd->device->hostdata = ndlp->rport->dd_data;
 		lpfc_cmd->pCmd->device->hostdata = ndlp->rport->dd_data;
 		ret = lpfc_scsi_tgt_reset(lpfc_cmd, phba);
 		ret = lpfc_scsi_tgt_reset(lpfc_cmd, phba);
 		if (ret != SUCCESS) {
 		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",
 				"%d:0713 Bus Reset on target %d failed\n",
 				phba->brd_no, i);
 				phba->brd_no, i);
 			err_count++;
 			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;
 	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;
 	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);
 		spin_unlock_irq(phba->host->host_lock);
 		schedule_timeout_uninterruptible(LPFC_RESET_WAIT*HZ);
 		schedule_timeout_uninterruptible(LPFC_RESET_WAIT*HZ);
 		spin_lock_irq(phba->host->host_lock);
 		spin_lock_irq(phba->host->host_lock);
@@ -1041,44 +1168,30 @@ __lpfc_reset_bus_handler(struct scsi_cmnd *cmnd)
 		if (++loopcnt
 		if (++loopcnt
 		    > (2 * phba->cfg_nodev_tmo)/LPFC_RESET_WAIT)
 		    > (2 * phba->cfg_nodev_tmo)/LPFC_RESET_WAIT)
 			break;
 			break;
+
+		cnt = lpfc_sli_sum_iocb(phba,
+					&phba->sli.ring[phba->sli.fcp_ring],
+					0, 0, LPFC_CTX_HOST);
 	}
 	}
 
 
 	if (cnt) {
 	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",
 		   "%d:0715 Bus Reset I/O flush failure: cnt x%x left x%x\n",
 		   phba->brd_no, cnt, i);
 		   phba->brd_no, cnt, i);
-	}
-
-	if (cnt == 0)
-		ret = SUCCESS;
-	else
 		ret = FAILED;
 		ret = FAILED;
+	}
 
 
-	lpfc_release_scsi_buf(phba, lpfc_cmd);
 	lpfc_printf_log(phba,
 	lpfc_printf_log(phba,
 			KERN_ERR,
 			KERN_ERR,
 			LOG_FCP,
 			LOG_FCP,
 			"%d:0714 SCSI layer issued Bus Reset Data: x%x\n",
 			"%d:0714 SCSI layer issued Bus Reset Data: x%x\n",
 			phba->brd_no, ret);
 			phba->brd_no, ret);
 out:
 out:
+	spin_unlock_irq(shost->host_lock);
+	lpfc_unblock_requests(phba);
 	return ret;
 	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
 static int
 lpfc_slave_alloc(struct scsi_device *sdev)
 lpfc_slave_alloc(struct scsi_device *sdev)
 {
 {
@@ -1127,10 +1240,10 @@ lpfc_slave_alloc(struct scsi_device *sdev)
 			break;
 			break;
 		}
 		}
 
 
-		spin_lock_irqsave(phba->host->host_lock, flags);
+		spin_lock_irqsave(&phba->scsi_buf_list_lock, flags);
 		phba->total_scsi_bufs++;
 		phba->total_scsi_bufs++;
 		list_add_tail(&scsi_buf->list, &phba->lpfc_scsi_buf_list);
 		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;
 	return 0;
 }
 }
@@ -1154,6 +1267,12 @@ lpfc_slave_configure(struct scsi_device *sdev)
 	 */
 	 */
 	rport->dev_loss_tmo = phba->cfg_nodev_tmo + 5;
 	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;
 	return 0;
 }
 }
 
 

+ 196 - 21
drivers/scsi/lpfc/lpfc_sli.c

@@ -886,6 +886,182 @@ lpfc_sli_process_sol_iocb(struct lpfc_hba * phba, struct lpfc_sli_ring * pring,
 	return rc;
 	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
  * This routine presumes LPFC_FCP_RING handling and doesn't bother
  * to check it explicitly.
  * to check it explicitly.
@@ -917,24 +1093,7 @@ lpfc_sli_handle_fast_ring_event(struct lpfc_hba * phba,
 	portRspMax = pring->numRiocb;
 	portRspMax = pring->numRiocb;
 	portRspPut = le32_to_cpu(pgp->rspPutInx);
 	portRspPut = le32_to_cpu(pgp->rspPutInx);
 	if (unlikely(portRspPut >= portRspMax)) {
 	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);
 		spin_unlock_irqrestore(phba->host->host_lock, iflag);
 		return 1;
 		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.
 		 * network byte order and pci byte orders are different.
 		 */
 		 */
 		entry = IOCB_ENTRY(pring->rspringaddr, pring->rspidx);
 		entry = IOCB_ENTRY(pring->rspringaddr, pring->rspidx);
+
+		if (++pring->rspidx >= portRspMax)
+			pring->rspidx = 0;
+
 		lpfc_sli_pcimem_bcopy((uint32_t *) entry,
 		lpfc_sli_pcimem_bcopy((uint32_t *) entry,
 				      (uint32_t *) &rspiocbq.iocb,
 				      (uint32_t *) &rspiocbq.iocb,
 				      sizeof (IOCB_t));
 				      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
 		 * been updated, sync the pgp->rspPutInx and fetch the new port
 		 * response put pointer.
 		 * response put pointer.
 		 */
 		 */
-		if (++pring->rspidx >= portRspMax)
-			pring->rspidx = 0;
-
 		to_slim = phba->MBslimaddr +
 		to_slim = phba->MBslimaddr +
 			(SLIMOFF + (pring->ringno * 2) + 1) * 4;
 			(SLIMOFF + (pring->ringno * 2) + 1) * 4;
 		writel(pring->rspidx, to_slim);
 		writel(pring->rspidx, to_slim);
@@ -2615,6 +2775,7 @@ lpfc_sli_issue_iocb_wait(struct lpfc_hba * phba,
 	DECLARE_WAIT_QUEUE_HEAD(done_q);
 	DECLARE_WAIT_QUEUE_HEAD(done_q);
 	long timeleft, timeout_req = 0;
 	long timeleft, timeout_req = 0;
 	int retval = IOCB_SUCCESS;
 	int retval = IOCB_SUCCESS;
+	uint32_t creg_val;
 
 
 	/*
 	/*
 	 * If the caller has provided a response iocbq buffer, then context2
 	 * 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->context_un.wait_queue = &done_q;
 	piocb->iocb_flag &= ~LPFC_IO_WAKE;
 	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);
 	retval = lpfc_sli_issue_iocb(phba, pring, piocb, 0);
 	if (retval == IOCB_SUCCESS) {
 	if (retval == IOCB_SUCCESS) {
 		timeout_req = timeout * HZ;
 		timeout_req = timeout * HZ;
@@ -2663,6 +2831,13 @@ lpfc_sli_issue_iocb_wait(struct lpfc_hba * phba,
 		retval = IOCB_ERROR;
 		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)
 	if (prspiocbq)
 		piocb->context2 = NULL;
 		piocb->context2 = NULL;
 
 

+ 1 - 1
drivers/scsi/lpfc/lpfc_version.h

@@ -18,7 +18,7 @@
  * included with this package.                                     *
  * included with this package.                                     *
  *******************************************************************/
  *******************************************************************/
 
 
-#define LPFC_DRIVER_VERSION "8.1.0"
+#define LPFC_DRIVER_VERSION "8.1.1"
 
 
 #define LPFC_DRIVER_NAME "lpfc"
 #define LPFC_DRIVER_NAME "lpfc"
 
 

+ 9 - 18
drivers/scsi/megaraid.c

@@ -2,7 +2,7 @@
  *
  *
  *			Linux MegaRAID device driver
  *			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
  *	   This program is free software; you can redistribute it and/or
  *	   modify it under the terms of the GNU General Public License
  *	   modify it under the terms of the GNU General Public License
@@ -17,7 +17,8 @@
  * Copyright (c) 2003  Christoph Hellwig  <hch@lst.de>
  * Copyright (c) 2003  Christoph Hellwig  <hch@lst.de>
  *	  - new-style, hotplug-aware pci probing and scsi registration
  *	  - 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
  * Description: Linux device driver for LSI Logic MegaRAID controller
  *
  *
@@ -51,10 +52,10 @@
 
 
 #include "megaraid.h"
 #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_LICENSE ("GPL");
 MODULE_VERSION(MEGARAID_MODULE_VERSION);
 MODULE_VERSION(MEGARAID_MODULE_VERSION);
 
 
@@ -4553,7 +4554,7 @@ mega_internal_done(Scsi_Cmnd *scmd)
 static struct scsi_host_template megaraid_template = {
 static struct scsi_host_template megaraid_template = {
 	.module				= THIS_MODULE,
 	.module				= THIS_MODULE,
 	.name				= "MegaRAID",
 	.name				= "MegaRAID",
-	.proc_name			= "megaraid",
+	.proc_name			= "megaraid_legacy",
 	.info				= megaraid_info,
 	.info				= megaraid_info,
 	.queuecommand			= megaraid_queue,	
 	.queuecommand			= megaraid_queue,	
 	.bios_param			= megaraid_biosparam,
 	.bios_param			= megaraid_biosparam,
@@ -5037,22 +5038,12 @@ megaraid_shutdown(struct pci_dev *pdev)
 }
 }
 
 
 static struct pci_device_id megaraid_pci_tbl[] = {
 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_VENDOR_ID_AMI, PCI_DEVICE_ID_AMI_MEGARAID,
 		PCI_ANY_ID, PCI_ANY_ID, 0, 0, 0},
 		PCI_ANY_ID, PCI_ANY_ID, 0, 0, 0},
 	{PCI_VENDOR_ID_AMI, PCI_DEVICE_ID_AMI_MEGARAID2,
 	{PCI_VENDOR_ID_AMI, PCI_DEVICE_ID_AMI_MEGARAID2,
 		PCI_ANY_ID, PCI_ANY_ID, 0, 0, 0},
 		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_VENDOR_ID_INTEL, PCI_DEVICE_ID_AMI_MEGARAID3,
 		PCI_ANY_ID, PCI_ANY_ID, 0, 0, 0},
 		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,}
 	{0,}
 };
 };
 MODULE_DEVICE_TABLE(pci, megaraid_pci_tbl);
 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
 	 * First argument (major) to register_chrdev implies a dynamic
 	 * major number allocation.
 	 * major number allocation.
 	 */
 	 */
-	major = register_chrdev(0, "megadev", &megadev_fops);
+	major = register_chrdev(0, "megadev_legacy", &megadev_fops);
 	if (!major) {
 	if (!major) {
 		printk(KERN_WARNING
 		printk(KERN_WARNING
 				"megaraid: failed to register char device\n");
 				"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 the character device interface to the driver.
 	 */
 	 */
-	unregister_chrdev(major, "megadev");
+	unregister_chrdev(major, "megadev_legacy");
 
 
 	pci_unregister_driver(&megaraid_pci_driver);
 	pci_unregister_driver(&megaraid_pci_driver);
 
 

+ 0 - 2
drivers/scsi/megaraid/Kconfig.megaraid

@@ -64,7 +64,6 @@ config MEGARAID_MAILBOX
 	To compile this driver as a module, choose M here: the
 	To compile this driver as a module, choose M here: the
 	module will be called megaraid_mbox
 	module will be called megaraid_mbox
 
 
-if MEGARAID_NEWGEN=n
 config MEGARAID_LEGACY
 config MEGARAID_LEGACY
 	tristate "LSI Logic Legacy MegaRAID Driver"
 	tristate "LSI Logic Legacy MegaRAID Driver"
 	depends on PCI && SCSI
 	depends on PCI && SCSI
@@ -75,7 +74,6 @@ config MEGARAID_LEGACY
 
 
 	To compile this driver as a module, choose M here: the
 	To compile this driver as a module, choose M here: the
 	module will be called megaraid
 	module will be called megaraid
-endif
 
 
 config MEGARAID_SAS
 config MEGARAID_SAS
 	tristate "LSI Logic MegaRAID SAS RAID Module"
 	tristate "LSI Logic MegaRAID SAS RAID Module"

+ 9 - 73
drivers/scsi/megaraid/megaraid_mbox.c

@@ -10,12 +10,13 @@
  *	   2 of the License, or (at your option) any later version.
  *	   2 of the License, or (at your option) any later version.
  *
  *
  * FILE		: megaraid_mbox.c
  * FILE		: megaraid_mbox.c
- * Version	: v2.20.4.6 (Mar 07 2005)
+ * Version	: v2.20.4.7 (Nov 14 2005)
  *
  *
  * Authors:
  * Authors:
  * 	Atul Mukker		<Atul.Mukker@lsil.com>
  * 	Atul Mukker		<Atul.Mukker@lsil.com>
  * 	Sreenivas Bagalkote	<Sreenivas.Bagalkote@lsil.com>
  * 	Sreenivas Bagalkote	<Sreenivas.Bagalkote@lsil.com>
  * 	Manoj Jose		<Manoj.Jose@lsil.com>
  * 	Manoj Jose		<Manoj.Jose@lsil.com>
+ * 	Seokmann Ju		<Seokmann.Ju@lsil.com>
  *
  *
  * List of supported controllers
  * 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_DESCRIPTION("LSI Logic MegaRAID Mailbox Driver");
 MODULE_LICENSE("GPL");
 MODULE_LICENSE("GPL");
 MODULE_VERSION(MEGARAID_VERSION);
 MODULE_VERSION(MEGARAID_VERSION);
@@ -278,68 +279,14 @@ static struct pci_device_id pci_id_table_g[] =  {
 	{
 	{
 		PCI_VENDOR_ID_AMI,
 		PCI_VENDOR_ID_AMI,
 		PCI_DEVICE_ID_AMI_MEGARAID3,
 		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_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,
 		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_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 */
 	{0}	/* Terminating entry */
 };
 };
 MODULE_DEVICE_TABLE(pci, pci_id_table_g);
 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++) {
 	for (i = 0; i < 0xFFFFF; i++) {
 		if (mbox->numstatus != 0xFF) break;
 		if (mbox->numstatus != 0xFF) break;
+		rmb();
 	}
 	}
 
 
 	if (i == 0xFFFFF) {
 	if (i == 0xFFFFF) {

+ 2 - 2
drivers/scsi/megaraid/megaraid_mbox.h

@@ -21,8 +21,8 @@
 #include "megaraid_ioctl.h"
 #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)"
 
 
 
 
 /*
 /*

+ 735 - 14
drivers/scsi/ncr53c8xx.c

@@ -131,7 +131,739 @@
 #define NAME53C			"ncr53c"
 #define NAME53C			"ncr53c"
 #define NAME53C8XX		"ncr53c8xx"
 #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)
 static void ncr_print_msg(struct ccb *cp, char *label, u_char *msg)
 {
 {
-	int i;
 	PRINT_ADDR(cp->cmd, "%s: ", label);
 	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");
 }
 }
 
 
 /*==========================================================
 /*==========================================================

+ 1262 - 1
drivers/scsi/ncr53c8xx.h

@@ -2,6 +2,7 @@
 **  Device driver for the PCI-SCSI NCR538XX controller family.
 **  Device driver for the PCI-SCSI NCR538XX controller family.
 **
 **
 **  Copyright (C) 1994  Wolfgang Stanglmeier
 **  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
 **  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
 **  it under the terms of the GNU General Public License as published by
@@ -36,15 +37,1275 @@
 **  And has been ported to NetBSD by
 **  And has been ported to NetBSD by
 **          Charles M. Hannum           <mycroft@gnu.ai.mit.edu>
 **          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
 #ifndef NCR53C8XX_H
 #define NCR53C8XX_H
 #define NCR53C8XX_H
 
 
+#include <linux/config.h>
 #include <scsi/scsi_host.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.
 	Build a scatter/gather entry.

+ 42 - 27
drivers/scsi/qla2xxx/Kconfig

@@ -1,55 +1,70 @@
 config SCSI_QLA2XXX
 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
 	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---
 	---help---
 	This driver supports the QLogic 21xx (ISP2100) host adapter family.
 	This driver supports the QLogic 21xx (ISP2100) host adapter family.
 
 
 config SCSI_QLA22XX
 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---
 	---help---
 	This driver supports the QLogic 22xx (ISP2200) host adapter family.
 	This driver supports the QLogic 22xx (ISP2200) host adapter family.
 
 
 config SCSI_QLA2300
 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---
 	---help---
 	This driver supports the QLogic 2300 (ISP2300 and ISP2312) host
 	This driver supports the QLogic 2300 (ISP2300 and ISP2312) host
 	adapter family.
 	adapter family.
 
 
 config SCSI_QLA2322
 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---
 	---help---
 	This driver supports the QLogic 2322 (ISP2322) host adapter family.
 	This driver supports the QLogic 2322 (ISP2322) host adapter family.
 
 
 config SCSI_QLA6312
 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---
 	---help---
 	This driver supports the QLogic 63xx (ISP6312 and ISP6322) host
 	This driver supports the QLogic 63xx (ISP6312 and ISP6322) host
 	adapter family.
 	adapter family.
 
 
 config SCSI_QLA24XX
 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---
 	---help---
 	This driver supports the QLogic 24xx (ISP2422 and ISP2432) host
 	This driver supports the QLogic 24xx (ISP2422 and ISP2432) host
 	adapter family.
 	adapter family.

+ 4 - 1
drivers/scsi/qla2xxx/Makefile

@@ -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 \
 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
 		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
 qla2100-y := ql2100.o ql2100_fw.o
 qla2200-y := ql2200.o ql2200_fw.o
 qla2200-y := ql2200.o ql2200_fw.o
 qla2300-y := ql2300.o ql2300_fw.o
 qla2300-y := ql2300.o ql2300_fw.o
 qla2322-y := ql2322.o ql2322_fw.o
 qla2322-y := ql2322.o ql2322_fw.o
 qla6312-y := ql6312.o ql6312_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_QLA21XX) += qla2xxx.o qla2100.o
 obj-$(CONFIG_SCSI_QLA22XX) += qla2xxx.o qla2200.o
 obj-$(CONFIG_SCSI_QLA22XX) += qla2xxx.o qla2200.o
 obj-$(CONFIG_SCSI_QLA2300) += qla2xxx.o qla2300.o
 obj-$(CONFIG_SCSI_QLA2300) += qla2xxx.o qla2300.o
 obj-$(CONFIG_SCSI_QLA2322) += qla2xxx.o qla2322.o
 obj-$(CONFIG_SCSI_QLA2322) += qla2xxx.o qla2322.o
 obj-$(CONFIG_SCSI_QLA6312) += qla2xxx.o qla6312.o
 obj-$(CONFIG_SCSI_QLA6312) += qla2xxx.o qla6312.o
-obj-$(CONFIG_SCSI_QLA24XX) += qla2xxx.o
+obj-$(CONFIG_SCSI_QLA24XX) += qla2xxx.o qla2400.o

+ 111 - 0
drivers/scsi/qla2xxx/ql2400.c

@@ -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);

+ 12376 - 0
drivers/scsi/qla2xxx/ql2400_fw.c

@@ -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
+

+ 1 - 1
drivers/scsi/qla2xxx/qla_attr.c

@@ -232,7 +232,7 @@ static ssize_t
 qla2x00_isp_name_show(struct class_device *cdev, char *buf)
 qla2x00_isp_name_show(struct class_device *cdev, char *buf)
 {
 {
 	scsi_qla_host_t *ha = to_qla_host(class_to_shost(cdev));
 	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
 static ssize_t

+ 23 - 1
drivers/scsi/qla2xxx/qla_def.h

@@ -22,6 +22,7 @@
 #include <linux/completion.h>
 #include <linux/completion.h>
 #include <linux/interrupt.h>
 #include <linux/interrupt.h>
 #include <linux/workqueue.h>
 #include <linux/workqueue.h>
+#include <linux/firmware.h>
 #include <asm/semaphore.h>
 #include <asm/semaphore.h>
 
 
 #include <scsi/scsi.h>
 #include <scsi/scsi.h>
@@ -29,6 +30,7 @@
 #include <scsi/scsi_device.h>
 #include <scsi/scsi_device.h>
 #include <scsi/scsi_cmnd.h>
 #include <scsi/scsi_cmnd.h>
 
 
+#if defined(CONFIG_SCSI_QLA2XXX_EMBEDDED_FIRMWARE)
 #if defined(CONFIG_SCSI_QLA21XX) || defined(CONFIG_SCSI_QLA21XX_MODULE)
 #if defined(CONFIG_SCSI_QLA21XX) || defined(CONFIG_SCSI_QLA21XX_MODULE)
 #define IS_QLA2100(ha)	((ha)->pdev->device == PCI_DEVICE_ID_QLOGIC_ISP2100)
 #define IS_QLA2100(ha)	((ha)->pdev->device == PCI_DEVICE_ID_QLOGIC_ISP2100)
 #else
 #else
@@ -79,9 +81,23 @@
 #define IS_QLA2522(ha)	0
 #define IS_QLA2522(ha)	0
 #endif
 #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) || \
 #define IS_QLA23XX(ha)	(IS_QLA2300(ha) || IS_QLA2312(ha) || IS_QLA2322(ha) || \
     			 IS_QLA6312(ha) || IS_QLA6322(ha))
     			 IS_QLA6312(ha) || IS_QLA6322(ha))
-
 #define IS_QLA24XX(ha)	(IS_QLA2422(ha) || IS_QLA2432(ha))
 #define IS_QLA24XX(ha)	(IS_QLA2422(ha) || IS_QLA2432(ha))
 #define IS_QLA25XX(ha)	(IS_QLA2512(ha) || IS_QLA2522(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 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. */
 /* Return data from MBC_GET_ID_LIST call. */
 struct gid_list_info {
 struct gid_list_info {
 	uint8_t	al_pa;
 	uint8_t	al_pa;

+ 3 - 1
drivers/scsi/qla2xxx/qla_gbl.h

@@ -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 qla2x00_update_fw_options(struct scsi_qla_host *);
 extern void qla24xx_update_fw_options(scsi_qla_host_t *);
 extern void qla24xx_update_fw_options(scsi_qla_host_t *);
 extern int qla2x00_load_risc(struct scsi_qla_host *, uint32_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_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);
 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 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.
  * Global Function Prototypes in qla_iocb.c source file.
  */
  */

+ 197 - 51
drivers/scsi/qla2xxx/qla_init.c

@@ -8,7 +8,6 @@
 
 
 #include <linux/delay.h>
 #include <linux/delay.h>
 #include <linux/vmalloc.h>
 #include <linux/vmalloc.h>
-#include <linux/firmware.h>
 #include <scsi/scsi_transport_fc.h>
 #include <scsi/scsi_transport_fc.h>
 
 
 #include "qla_devtbl.h"
 #include "qla_devtbl.h"
@@ -3484,17 +3483,16 @@ qla24xx_nvram_config(scsi_qla_host_t *ha)
 	return (rval);
 	return (rval);
 }
 }
 
 
+#if defined(CONFIG_SCSI_QLA2XXX_EMBEDDED_FIRMWARE)
+
 int
 int
 qla2x00_load_risc(scsi_qla_host_t *ha, uint32_t *srisc_addr)
 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;
 	struct qla_fw_info *fw_iter;
 
 
 	rval = QLA_SUCCESS;
 	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;
 	*srisc_addr = *ha->brd_info->fw_info->fwstart;
 	while (fw_iter->addressing != FW_INFO_ADDR_NOMORE) {
 	while (fw_iter->addressing != FW_INFO_ADDR_NOMORE) {
 		risc_code = fw_iter->fwcode;
 		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;
 		num = 0;
 		rval = 0;
 		rval = 0;
-		while (risc_code_size > 0 && !rval) {
+		while (risc_size > 0 && !rval) {
 			cnt = (uint16_t)(ha->fw_transfer_size >> 1);
 			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@ "
 			DEBUG7(printk("scsi(%ld): Loading risc segment@ "
 			    "addr %p, number of bytes 0x%x, offset 0x%lx.\n",
 			    "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;
 			req_ring = (uint16_t *)ha->request_ring;
 			for (i = 0; i < cnt; i++)
 			for (i = 0; i < cnt; i++)
 				req_ring[i] = cpu_to_le16(risc_code[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) {
 			if (rval) {
 				DEBUG(printk("scsi(%ld): [ERROR] Failed to "
 				DEBUG(printk("scsi(%ld): [ERROR] Failed to "
 				    "load segment %d of firmware\n",
 				    "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_code += cnt;
-			risc_address += cnt;
-			risc_code_size -= cnt;
+			risc_addr += cnt;
+			risc_size -= cnt;
 			num++;
 			num++;
 		}
 		}
 
 
 		/* Next firmware sequence */
 		/* Next firmware sequence */
 		fw_iter++;
 		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
 int
@@ -3642,8 +3692,108 @@ qla24xx_load_risc_flash(scsi_qla_host_t *ha, uint32_t *srisc_addr)
 	return rval;
 	return rval;
 }
 }
 
 
+#else	/* !defined(CONFIG_SCSI_QLA2XXX_EMBEDDED_FIRMWARE) */
+
 int
 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	rval;
 	int	segments, fragment;
 	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_addr;
 	uint32_t risc_size;
 	uint32_t risc_size;
 	uint32_t i;
 	uint32_t i;
-	const struct firmware *fw_entry;
+	struct fw_blob *blob;
 	uint32_t *fwcode, fwclen;
 	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;
 		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;
 	segments = FA_RISC_CODE_SEGMENTS;
 	dcode = (uint32_t *)ha->request_ring;
 	dcode = (uint32_t *)ha->request_ring;
 	*srisc_addr = 0;
 	*srisc_addr = 0;
-	fwcode = (uint32_t *)fw_entry->data;
+	fwcode = (uint32_t *)blob->fw->data;
 	fwclen = 0;
 	fwclen = 0;
 
 
 	/* Validate firmware image by checking version. */
 	/* 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,
 		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;
 		goto fail_fw_integrity;
 	}
 	}
 	for (i = 0; i < 4; i++)
 	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[0] == 0 && dcode[1] == 0 && dcode[2] == 0 &&
 		dcode[3] == 0)) {
 		dcode[3] == 0)) {
 		qla_printk(KERN_WARNING, ha,
 		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,
 		qla_printk(KERN_WARNING, ha,
 		    "Firmware data: %08x %08x %08x %08x!\n", dcode[0],
 		    "Firmware data: %08x %08x %08x %08x!\n", dcode[0],
 		    dcode[1], dcode[2], dcode[3]);
 		    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. */
 		/* Validate firmware image size. */
 		fwclen += risc_size * sizeof(uint32_t);
 		fwclen += risc_size * sizeof(uint32_t);
-		if (fw_entry->size < fwclen) {
+		if (blob->fw->size < fwclen) {
 			qla_printk(KERN_WARNING, ha,
 			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;
 			goto fail_fw_integrity;
 		}
 		}
 
 
@@ -3739,13 +3889,9 @@ qla24xx_load_risc_hotplug(scsi_qla_host_t *ha, uint32_t *srisc_addr)
 		/* Next segment. */
 		/* Next segment. */
 		segments--;
 		segments--;
 	}
 	}
-
-	release_firmware(fw_entry);
 	return rval;
 	return rval;
 
 
 fail_fw_integrity:
 fail_fw_integrity:
-
-	release_firmware(fw_entry);
 	return QLA_FUNCTION_FAILED;
 	return QLA_FUNCTION_FAILED;
-
 }
 }
+#endif

+ 148 - 48
drivers/scsi/qla2xxx/qla_os.c

@@ -54,10 +54,12 @@ module_param(ql2xloginretrycount, int, S_IRUGO|S_IRUSR);
 MODULE_PARM_DESC(ql2xloginretrycount,
 MODULE_PARM_DESC(ql2xloginretrycount,
 		"Specify an alternate value for the NVRAM login retry count.");
 		"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 *);
 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 pci_info[20];
 	char fw_str[30];
 	char fw_str[30];
 	fc_port_t *fcport;
 	fc_port_t *fcport;
+	struct scsi_host_template *sht;
 
 
 	if (pci_enable_device(pdev))
 	if (pci_enable_device(pdev))
 		goto probe_out;
 		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) {
 	if (host == NULL) {
 		printk(KERN_WARNING
 		printk(KERN_WARNING
 		    "qla2xxx: Couldn't allocate host from scsi layer!\n");
 		    "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;
 		goto probe_failed;
 
 
 	qla_printk(KERN_INFO, ha,
 	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);
 	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.reset_adapter = qla24xx_reset_adapter;
 		ha->isp_ops.nvram_config = qla24xx_nvram_config;
 		ha->isp_ops.nvram_config = qla24xx_nvram_config;
 		ha->isp_ops.update_fw_options = qla24xx_update_fw_options;
 		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.pci_info_str = qla24xx_pci_info_str;
 		ha->isp_ops.fw_version_str = qla24xx_fw_version_str;
 		ha->isp_ops.fw_version_str = qla24xx_fw_version_str;
 		ha->isp_ops.intr_handler = qla24xx_intr_handler;
 		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"
 	qla_printk(KERN_INFO, ha, "\n"
 	    " QLogic Fibre Channel HBA Driver: %s\n"
 	    " QLogic Fibre Channel HBA Driver: %s\n"
 	    "  QLogic %s - %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. */
 	/* Go with fc_rport registration. */
 	list_for_each_entry(fcport, &ha->fcports, list)
 	list_for_each_entry(fcport, &ha->fcports, list)
@@ -2483,45 +2492,115 @@ qla2x00_down_timeout(struct semaphore *sema, unsigned long timeout)
 	return -ETIMEDOUT;
 	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[] = {
 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);
 MODULE_DEVICE_TABLE(pci, qla2xxx_pci_tbl);
 
 
 static int __devinit
 static int __devinit
 qla2xxx_probe_one(struct pci_dev *pdev, const struct pci_device_id *id)
 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
 static void __devexit
@@ -2532,11 +2611,28 @@ qla2xxx_remove_one(struct pci_dev *pdev)
 
 
 static struct pci_driver qla2xxx_pci_driver = {
 static struct pci_driver qla2xxx_pci_driver = {
 	.name		= "qla2xxx",
 	.name		= "qla2xxx",
+	.driver		= {
+		.owner		= THIS_MODULE,
+	},
 	.id_table	= qla2xxx_pci_tbl,
 	.id_table	= qla2xxx_pci_tbl,
 	.probe		= qla2xxx_probe_one,
 	.probe		= qla2xxx_probe_one,
 	.remove		= __devexit_p(qla2xxx_remove_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.
  * qla2x00_module_init - Module initialization.
  **/
  **/
@@ -2556,6 +2652,9 @@ qla2x00_module_init(void)
 
 
 	/* Derive version string. */
 	/* Derive version string. */
 	strcpy(qla2x00_version_str, QLA2XXX_VERSION);
 	strcpy(qla2x00_version_str, QLA2XXX_VERSION);
+#if defined(CONFIG_SCSI_QLA2XXX_EMBEDDED_FIRMWARE)
+	strcat(qla2x00_version_str, "-fw");
+#endif
 #if DEBUG_QLA2100
 #if DEBUG_QLA2100
 	strcat(qla2x00_version_str, "-debug");
 	strcat(qla2x00_version_str, "-debug");
 #endif
 #endif
@@ -2565,7 +2664,7 @@ qla2x00_module_init(void)
 		return -ENODEV;
 		return -ENODEV;
 
 
 	printk(KERN_INFO "QLogic Fibre Channel HBA Driver\n");
 	printk(KERN_INFO "QLogic Fibre Channel HBA Driver\n");
-	ret = pci_module_init(&qla2xxx_pci_driver);
+	ret = qla2x00_pci_module_init();
 	if (ret) {
 	if (ret) {
 		kmem_cache_destroy(srb_cachep);
 		kmem_cache_destroy(srb_cachep);
 		fc_release_transport(qla2xxx_transport_template);
 		fc_release_transport(qla2xxx_transport_template);
@@ -2579,7 +2678,8 @@ qla2x00_module_init(void)
 static void __exit
 static void __exit
 qla2x00_module_exit(void)
 qla2x00_module_exit(void)
 {
 {
-	pci_unregister_driver(&qla2xxx_pci_driver);
+	qla2x00_pci_module_exit();
+	qla2x00_release_firmware();
 	kmem_cache_destroy(srb_cachep);
 	kmem_cache_destroy(srb_cachep);
 	fc_release_transport(qla2xxx_transport_template);
 	fc_release_transport(qla2xxx_transport_template);
 }
 }

+ 1 - 1
drivers/scsi/raid_class.c

@@ -115,7 +115,7 @@ static DECLARE_TRANSPORT_CLASS(raid_class,
 			       raid_remove,
 			       raid_remove,
 			       NULL);
 			       NULL);
 
 
-static struct {
+static const struct {
 	enum raid_state	value;
 	enum raid_state	value;
 	char		*name;
 	char		*name;
 } raid_states[] = {
 } raid_states[] = {

+ 3 - 2
drivers/scsi/scsi_devinfo.c

@@ -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
  *     @model, if found, return the matching flags value, else return
  *     the host or global default settings.
  *     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;
 	struct scsi_dev_info_list *devinfo;
 	unsigned int bflags;
 	unsigned int bflags;

+ 9 - 38
drivers/scsi/scsi_error.c

@@ -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
  * scsi_eh_lock_door - Prevent medium removal for the specified device
  * @sdev:	SCSI device to prevent medium removal
  * @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)
 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);
 }
 }
 
 
 
 

+ 223 - 39
drivers/scsi/scsi_lib.c

@@ -63,39 +63,6 @@ static struct scsi_host_sg_pool scsi_sg_pools[] = {
 }; 	
 }; 	
 #undef SP
 #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);
 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
 	 * 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);
 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);
 	memcpy(req->cmd, cmd, req->cmd_len);
 	req->sense = sense;
 	req->sense = sense;
 	req->sense_len = 0;
 	req->sense_len = 0;
+	req->retries = retries;
 	req->timeout = timeout;
 	req->timeout = timeout;
 	req->flags |= flags | REQ_BLOCK_PC | REQ_SPECIAL | REQ_QUIET;
 	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);
 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()
  * 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
 			* system where READ CAPACITY failed, we may have read
 			* past the end of the disk.
 			* 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] == READ_10 ||
 			     cmd->cmnd[0] == WRITE_10)) {
 			     cmd->cmnd[0] == WRITE_10)) {
 				cmd->device->use_10_for_rw = 0;
 				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)
 static void scsi_generic_done(struct scsi_cmnd *cmd)
 {
 {
 	BUG_ON(!blk_pc_request(cmd->request));
 	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;
 	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->sc_data_direction = DMA_FROM_DEVICE;
 	
 	
 	cmd->transfersize = req->data_len;
 	cmd->transfersize = req->data_len;
-	cmd->allowed = retries;
+	cmd->allowed = req->retries;
 	cmd->timeout_per_command = req->timeout;
 	cmd->timeout_per_command = req->timeout;
 }
 }
 EXPORT_SYMBOL_GPL(scsi_setup_blk_pc_cmnd);
 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;
 				goto kill;
 			}
 			}
 		} else {
 		} else {
-			scsi_setup_blk_pc_cmnd(cmd, 3);
+			scsi_setup_blk_pc_cmnd(cmd);
 			cmd->done = scsi_generic_done;
 			cmd->done = scsi_generic_done;
 		}
 		}
 	}
 	}
@@ -1603,6 +1777,14 @@ int __init scsi_init_queue(void)
 {
 {
 	int i;
 	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++) {
 	for (i = 0; i < SG_MEMPOOL_NR; i++) {
 		struct scsi_host_sg_pool *sgp = scsi_sg_pools + i;
 		struct scsi_host_sg_pool *sgp = scsi_sg_pools + i;
 		int size = sgp->size * sizeof(struct scatterlist);
 		int size = sgp->size * sizeof(struct scatterlist);
@@ -1630,6 +1812,8 @@ void scsi_exit_queue(void)
 {
 {
 	int i;
 	int i;
 
 
+	kmem_cache_destroy(scsi_io_context_cache);
+
 	for (i = 0; i < SG_MEMPOOL_NR; i++) {
 	for (i = 0; i < SG_MEMPOOL_NR; i++) {
 		struct scsi_host_sg_pool *sgp = scsi_sg_pools + i;
 		struct scsi_host_sg_pool *sgp = scsi_sg_pools + i;
 		mempool_destroy(sgp->pool);
 		mempool_destroy(sgp->pool);

+ 2 - 2
drivers/scsi/scsi_priv.h

@@ -40,7 +40,6 @@ extern void scsi_exit_hosts(void);
 extern int scsi_dispatch_cmd(struct scsi_cmnd *cmd);
 extern int scsi_dispatch_cmd(struct scsi_cmnd *cmd);
 extern int scsi_setup_command_freelist(struct Scsi_Host *shost);
 extern int scsi_setup_command_freelist(struct Scsi_Host *shost);
 extern void scsi_destroy_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,
 extern void scsi_init_cmd_from_req(struct scsi_cmnd *cmd,
 		struct scsi_request *sreq);
 		struct scsi_request *sreq);
 extern void __scsi_release_request(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 */
 /* scsi_devinfo.c */
 extern int scsi_get_device_flags(struct scsi_device *sdev,
 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 int __init scsi_init_devinfo(void);
 extern void scsi_exit_devinfo(void);
 extern void scsi_exit_devinfo(void);
 
 

+ 1 - 1
drivers/scsi/scsi_scan.c

@@ -74,7 +74,7 @@
 #define SCSI_SCAN_TARGET_PRESENT	1
 #define SCSI_SCAN_TARGET_PRESENT	1
 #define SCSI_SCAN_LUN_PRESENT		2
 #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
 #define MAX_SCSI_LUNS	512
 
 

+ 2 - 2
drivers/scsi/scsi_sysfs.c

@@ -21,7 +21,7 @@
 #include "scsi_priv.h"
 #include "scsi_priv.h"
 #include "scsi_logging.h"
 #include "scsi_logging.h"
 
 
-static struct {
+static const struct {
 	enum scsi_device_state	value;
 	enum scsi_device_state	value;
 	char			*name;
 	char			*name;
 } sdev_states[] = {
 } sdev_states[] = {
@@ -48,7 +48,7 @@ const char *scsi_device_state_name(enum scsi_device_state state)
 	return name;
 	return name;
 }
 }
 
 
-static struct {
+static const struct {
 	enum scsi_host_state	value;
 	enum scsi_host_state	value;
 	char			*name;
 	char			*name;
 } shost_states[] = {
 } shost_states[] = {

+ 4 - 4
drivers/scsi/scsi_transport_fc.c

@@ -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 */
 /* Convert fc_tgtid_binding_type values to ascii string name */
-static struct {
+static const struct {
 	enum fc_tgtid_binding_type	value;
 	enum fc_tgtid_binding_type	value;
 	char				*name;
 	char				*name;
 	int				matchlen;
 	int				matchlen;
@@ -150,7 +150,7 @@ get_fc_##title##_names(u32 table_key, char *buf)		\
 
 
 
 
 /* Convert FC_COS bit values to ascii string name */
 /* Convert FC_COS bit values to ascii string name */
-static struct {
+static const struct {
 	u32 			value;
 	u32 			value;
 	char			*name;
 	char			*name;
 } fc_cos_names[] = {
 } fc_cos_names[] = {
@@ -164,7 +164,7 @@ fc_bitfield_name_search(cos, fc_cos_names)
 
 
 
 
 /* Convert FC_PORTSPEED bit values to ascii string name */
 /* Convert FC_PORTSPEED bit values to ascii string name */
-static struct {
+static const struct {
 	u32 			value;
 	u32 			value;
 	char			*name;
 	char			*name;
 } fc_port_speed_names[] = {
 } 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 */
 /* Convert FC_RPORT_ROLE bit values to ascii string name */
-static struct {
+static const struct {
 	u32 			value;
 	u32 			value;
 	char			*name;
 	char			*name;
 } fc_remote_port_role_names[] = {
 } fc_remote_port_role_names[] = {

+ 132 - 4
drivers/scsi/scsi_transport_spi.c

@@ -18,6 +18,7 @@
  *  along with this program; if not, write to the Free Software
  *  along with this program; if not, write to the Free Software
  *  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
  *  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
  */
  */
+#include <linux/config.h>
 #include <linux/ctype.h>
 #include <linux/ctype.h>
 #include <linux/init.h>
 #include <linux/init.h>
 #include <linux/module.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
 /* Translate the period into ns according to the current spec
  * for SDTR/PPR messages */
  * 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;
 	int len, picosec;
 
 
@@ -398,6 +397,14 @@ show_spi_transport_period_helper(struct class_device *cdev, char *buf,
 		len = sprint_frac(buf, picosec, 1000);
 		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++] = '\n';
 	buf[len] = '\0';
 	buf[len] = '\0';
 	return len;
 	return len;
@@ -1041,12 +1048,133 @@ void spi_display_xfer_agreement(struct scsi_target *starget)
 			 tp->hold_mcs ? " HMCS" : "",
 			 tp->hold_mcs ? " HMCS" : "",
 			 tmp, tp->offset);
 			 tmp, tp->offset);
 	} else {
 	} else {
-		dev_info(&starget->dev, "%sasynchronous.\n",
+		dev_info(&starget->dev, "%sasynchronous\n",
 				tp->width ? "wide " : "");
 				tp->width ? "wide " : "");
 	}
 	}
 }
 }
 EXPORT_SYMBOL(spi_display_xfer_agreement);
 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)						\
 #define SETUP_ATTRIBUTE(field)						\
 	i->private_attrs[count] = class_device_attr_##field;		\
 	i->private_attrs[count] = class_device_attr_##field;		\
 	if (!i->f->set_##field) {					\
 	if (!i->f->set_##field) {					\

+ 2 - 4
drivers/scsi/sd.c

@@ -245,7 +245,7 @@ static int sd_init_command(struct scsi_cmnd * SCpnt)
 	 * SG_IO from block layer already setup, just copy cdb basically
 	 * SG_IO from block layer already setup, just copy cdb basically
 	 */
 	 */
 	if (blk_pc_request(rq)) {
 	if (blk_pc_request(rq)) {
-		scsi_setup_blk_pc_cmnd(SCpnt, SD_PASSTHROUGH_RETRIES);
+		scsi_setup_blk_pc_cmnd(SCpnt);
 		if (rq->timeout)
 		if (rq->timeout)
 			timeout = rq->timeout;
 			timeout = rq->timeout;
 
 
@@ -1495,9 +1495,7 @@ static int sd_revalidate_disk(struct gendisk *disk)
 	 */
 	 */
 	if (sdkp->media_present) {
 	if (sdkp->media_present) {
 		sd_read_capacity(sdkp, disk->disk_name, buffer);
 		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);
 		sd_read_cache_type(sdkp, disk->disk_name, buffer);
 	}
 	}
 		
 		

File diff suppressed because it is too large
+ 244 - 406
drivers/scsi/sg.c


+ 2 - 2
drivers/scsi/sr.c

@@ -320,7 +320,7 @@ static int sr_init_command(struct scsi_cmnd * SCpnt)
 	 * these are already setup, just copy cdb basically
 	 * these are already setup, just copy cdb basically
 	 */
 	 */
 	if (SCpnt->request->flags & REQ_BLOCK_PC) {
 	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)
 		if (SCpnt->timeout_per_command)
 			timeout = 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;
 	unsigned int the_result;
 	int retries, rc, n;
 	int retries, rc, n;
 
 
-	static char *loadmech[] =
+	static const char *loadmech[] =
 	{
 	{
 		"caddy",
 		"caddy",
 		"tray",
 		"tray",

+ 2 - 2
drivers/scsi/sr_vendor.c

@@ -68,8 +68,8 @@ void sr_vendor_init(Scsi_CD *cd)
 #ifndef CONFIG_BLK_DEV_SR_VENDOR
 #ifndef CONFIG_BLK_DEV_SR_VENDOR
 	cd->vendor = VENDOR_SCSI3;
 	cd->vendor = VENDOR_SCSI3;
 #else
 #else
-	char *vendor = cd->device->vendor;
-	char *model = cd->device->model;
+	const char *vendor = cd->device->vendor;
+	const char *model = cd->device->model;
 	
 	
 	/* default */
 	/* default */
 	cd->vendor = VENDOR_SCSI3;
 	cd->vendor = VENDOR_SCSI3;

+ 126 - 153
drivers/scsi/st.c

@@ -17,7 +17,7 @@
    Last modified: 18-JAN-1998 Richard Gooch <rgooch@atnf.csiro.au> Devfs support
    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>
 #include <linux/module.h>
 
 
@@ -50,7 +50,6 @@ static char *verstr = "20050830";
 #include <scsi/scsi_eh.h>
 #include <scsi/scsi_eh.h>
 #include <scsi/scsi_host.h>
 #include <scsi/scsi_host.h>
 #include <scsi/scsi_ioctl.h>
 #include <scsi/scsi_ioctl.h>
-#include <scsi/scsi_request.h>
 #include <scsi/sg.h>
 #include <scsi/sg.h>
 
 
 
 
@@ -134,7 +133,7 @@ static struct st_dev_parm {
 #endif
 #endif
 /* Bit reversed order to get same names for same minors with all
 /* Bit reversed order to get same names for same minors with all
    mode counts */
    mode counts */
-static char *st_formats[] = {
+static const char *st_formats[] = {
 	"",  "r", "k", "s", "l", "t", "o", "u",
 	"",  "r", "k", "s", "l", "t", "o", "u",
 	"m", "v", "p", "x", "a", "y", "q", "z"}; 
 	"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 move_buffer_data(struct st_buffer *, int);
 static void buf_to_sg(struct st_buffer *, unsigned 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, 
 static int sgl_map_user_pages(struct scatterlist *, const unsigned int, 
 			      unsigned long, size_t, int);
 			      unsigned long, size_t, int);
 static int sgl_unmap_user_pages(struct scatterlist *, const unsigned int, 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 *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;
 	s->flags = 0;
 
 
 	if (s->have_sense) {
 	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 */
 /* 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;
 	u8 scode;
 	DEB(const char *stp;)
 	DEB(const char *stp;)
 	char *name = tape_name(STp);
 	char *name = tape_name(STp);
@@ -366,13 +364,12 @@ static int st_chk_result(struct scsi_tape *STp, struct scsi_request * SRpnt)
 
 
         DEB(
         DEB(
         if (debugging) {
         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,
 		       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)
 		if (cmdstatp->have_sense)
-			scsi_print_req_sense("st", SRpnt);
+			 __scsi_print_sense("st", SRpnt->sense, SCSI_SENSE_BUFFERSIZE);
 	} ) /* end DEB */
 	} ) /* end DEB */
 	if (!debugging) { /* Abnormal conditions for tape */
 	if (!debugging) { /* Abnormal conditions for tape */
 		if (!cmdstatp->have_sense)
 		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 != UNIT_ATTENTION && */
 			 scode != BLANK_CHECK &&
 			 scode != BLANK_CHECK &&
 			 scode != VOLUME_OVERFLOW &&
 			 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);
 				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 &&
 	if (cmdstatp->fixed_format &&
 	    STp->cln_mode >= EXTENDED_SENSE_START) {  /* Only fixed format sense */
 	    STp->cln_mode >= EXTENDED_SENSE_START) {  /* Only fixed format sense */
 		if (STp->cln_sense_value)
 		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);
 					       STp->cln_sense_mask) == STp->cln_sense_value);
 		else
 		else
-			STp->cleaning_req |= ((SRpnt->sr_sense_buffer[STp->cln_mode] &
+			STp->cleaning_req |= ((SRpnt->sense[STp->cln_mode] &
 					       STp->cln_sense_mask) != 0);
 					       STp->cln_sense_mask) != 0);
 	}
 	}
 	if (cmdstatp->have_sense &&
 	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 &&
 	if (cmdstatp->have_sense &&
 	    scode == RECOVERED_ERROR
 	    scode == RECOVERED_ERROR
 #if ST_RECOVERED_WRITE_FATAL
 #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
 #endif
 	    ) {
 	    ) {
 		STp->recover_count++;
 		STp->recover_count++;
@@ -420,9 +418,9 @@ static int st_chk_result(struct scsi_tape *STp, struct scsi_request * SRpnt)
 
 
                 DEB(
                 DEB(
 		if (debugging) {
 		if (debugging) {
-			if (SRpnt->sr_cmnd[0] == READ_6)
+			if (SRpnt->cmd[0] == READ_6)
 				stp = "read";
 				stp = "read";
-			else if (SRpnt->sr_cmnd[0] == WRITE_6)
+			else if (SRpnt->cmd[0] == WRITE_6)
 				stp = "write";
 				stp = "write";
 			else
 			else
 				stp = "ioctl";
 				stp = "ioctl";
@@ -438,28 +436,37 @@ static int st_chk_result(struct scsi_tape *STp, struct scsi_request * SRpnt)
 
 
 
 
 /* Wakeup from interrupt */
 /* 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; )
 	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.
 /* Do the scsi command. Waits until command performed if do_wait is true.
    Otherwise write_behind_check() is used to check that the command
    Otherwise write_behind_check() is used to check that the command
    has finished. */
    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)
 	   int bytes, int direction, int timeout, int retries, int do_wait)
 {
 {
 	struct completion *waiting;
 	struct completion *waiting;
-	unsigned char *bp;
 
 
 	/* if async, make sure there's no command outstanding */
 	/* if async, make sure there's no command outstanding */
 	if (!do_wait && ((STp->buffer)->last_SRpnt)) {
 	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) {
 	if (SRpnt == NULL) {
-		SRpnt = scsi_allocate_request(STp->device, GFP_ATOMIC);
+		SRpnt = st_allocate_request();
 		if (SRpnt == NULL) {
 		if (SRpnt == NULL) {
 			DEBC( printk(KERN_ERR "%s: Can't get SCSI request.\n",
 			DEBC( printk(KERN_ERR "%s: Can't get SCSI request.\n",
 				     tape_name(STp)); );
 				     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);
 				(STp->buffer)->syscall_result = (-EBUSY);
 			return NULL;
 			return NULL;
 		}
 		}
+		SRpnt->stp = STp;
 	}
 	}
 
 
 	/* If async IO, set last_SRpnt. This ptr tells write_behind_check
 	/* 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;
 	waiting = &STp->wait;
 	init_completion(waiting);
 	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);
 		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);
 		(STp->buffer)->syscall_result = st_chk_result(STp, SRpnt);
 	}
 	}
+
 	return SRpnt;
 	return SRpnt;
 }
 }
 
 
@@ -532,7 +536,7 @@ static int write_behind_check(struct scsi_tape * STp)
 	struct st_buffer *STbuffer;
 	struct st_buffer *STbuffer;
 	struct st_partstat *STps;
 	struct st_partstat *STps;
 	struct st_cmdstatus *cmdstatp;
 	struct st_cmdstatus *cmdstatp;
-	struct scsi_request *SRpnt;
+	struct st_request *SRpnt;
 
 
 	STbuffer = STp->buffer;
 	STbuffer = STp->buffer;
 	if (!STbuffer->writing)
 	if (!STbuffer->writing)
@@ -548,12 +552,10 @@ static int write_behind_check(struct scsi_tape * STp)
 	wait_for_completion(&(STp->wait));
 	wait_for_completion(&(STp->wait));
 	SRpnt = STbuffer->last_SRpnt;
 	SRpnt = STbuffer->last_SRpnt;
 	STbuffer->last_SRpnt = NULL;
 	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);
 	(STp->buffer)->syscall_result = st_chk_result(STp, SRpnt);
-	scsi_release_request(SRpnt);
+	st_release_request(SRpnt);
 
 
 	STbuffer->buffer_bytes -= STbuffer->writing;
 	STbuffer->buffer_bytes -= STbuffer->writing;
 	STps = &(STp->ps[STp->partition]);
 	STps = &(STp->ps[STp->partition]);
@@ -593,7 +595,7 @@ static int write_behind_check(struct scsi_tape * STp)
    it messes up the block number). */
    it messes up the block number). */
 static int cross_eof(struct scsi_tape * STp, int forward)
 static int cross_eof(struct scsi_tape * STp, int forward)
 {
 {
-	struct scsi_request *SRpnt;
+	struct st_request *SRpnt;
 	unsigned char cmd[MAX_COMMAND_SIZE];
 	unsigned char cmd[MAX_COMMAND_SIZE];
 
 
 	cmd[0] = SPACE;
 	cmd[0] = SPACE;
@@ -613,7 +615,7 @@ static int cross_eof(struct scsi_tape * STp, int forward)
 	if (!SRpnt)
 	if (!SRpnt)
 		return (STp->buffer)->syscall_result;
 		return (STp->buffer)->syscall_result;
 
 
-	scsi_release_request(SRpnt);
+	st_release_request(SRpnt);
 	SRpnt = NULL;
 	SRpnt = NULL;
 
 
 	if ((STp->buffer)->cmdstat.midlevel_result != 0)
 	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 offset, transfer, blks;
 	int result;
 	int result;
 	unsigned char cmd[MAX_COMMAND_SIZE];
 	unsigned char cmd[MAX_COMMAND_SIZE];
-	struct scsi_request *SRpnt;
+	struct st_request *SRpnt;
 	struct st_partstat *STps;
 	struct st_partstat *STps;
 
 
 	result = write_behind_check(STp);
 	result = write_behind_check(STp);
@@ -688,7 +690,7 @@ static int flush_write_buffer(struct scsi_tape * STp)
 			STp->dirty = 0;
 			STp->dirty = 0;
 			(STp->buffer)->buffer_bytes = 0;
 			(STp->buffer)->buffer_bytes = 0;
 		}
 		}
-		scsi_release_request(SRpnt);
+		st_release_request(SRpnt);
 		SRpnt = NULL;
 		SRpnt = NULL;
 	}
 	}
 	return result;
 	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)
 static int do_door_lock(struct scsi_tape * STp, int do_lock)
 {
 {
 	int retval, cmd;
 	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 attentions, waits, max_wait, scode;
 	int retval = CHKRES_READY, new_session = 0;
 	int retval = CHKRES_READY, new_session = 0;
 	unsigned char cmd[MAX_COMMAND_SIZE];
 	unsigned char cmd[MAX_COMMAND_SIZE];
-	struct scsi_request *SRpnt = NULL;
+	struct st_request *SRpnt = NULL;
 	struct st_cmdstatus *cmdstatp = &STp->buffer->cmdstat;
 	struct st_cmdstatus *cmdstatp = &STp->buffer->cmdstat;
 
 
 	max_wait = do_wait ? ST_BLOCK_SECONDS : 0;
 	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)
 	if (SRpnt != NULL)
-		scsi_release_request(SRpnt);
+		st_release_request(SRpnt);
 	return retval;
 	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;
 	int i, retval, new_session = 0, do_wait;
 	unsigned char cmd[MAX_COMMAND_SIZE], saved_cleaning;
 	unsigned char cmd[MAX_COMMAND_SIZE], saved_cleaning;
 	unsigned short st_flags = filp->f_flags;
 	unsigned short st_flags = filp->f_flags;
-	struct scsi_request *SRpnt = NULL;
+	struct st_request *SRpnt = NULL;
 	struct st_modedef *STm;
 	struct st_modedef *STm;
 	struct st_partstat *STps;
 	struct st_partstat *STps;
 	char *name = tape_name(STp);
 	char *name = tape_name(STp);
@@ -993,7 +995,7 @@ static int check_tape(struct scsi_tape *STp, struct file *filp)
 			goto err_out;
 			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->max_block = ((STp->buffer)->b_data[1] << 16) |
 			    ((STp->buffer)->b_data[2] << 8) | (STp->buffer)->b_data[3];
 			    ((STp->buffer)->b_data[2] << 8) | (STp->buffer)->b_data[3];
 			STp->min_block = ((STp->buffer)->b_data[4] << 8) |
 			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;
 		STp->drv_write_prot = ((STp->buffer)->b_data[2] & 0x80) != 0;
 	}
 	}
-	scsi_release_request(SRpnt);
+	st_release_request(SRpnt);
 	SRpnt = NULL;
 	SRpnt = NULL;
         STp->inited = 1;
         STp->inited = 1;
 
 
@@ -1196,7 +1198,7 @@ static int st_flush(struct file *filp)
 {
 {
 	int result = 0, result2;
 	int result = 0, result2;
 	unsigned char cmd[MAX_COMMAND_SIZE];
 	unsigned char cmd[MAX_COMMAND_SIZE];
-	struct scsi_request *SRpnt;
+	struct st_request *SRpnt;
 	struct scsi_tape *STp = filp->private_data;
 	struct scsi_tape *STp = filp->private_data;
 	struct st_modedef *STm = &(STp->modes[STp->current_mode]);
 	struct st_modedef *STm = &(STp->modes[STp->current_mode]);
 	struct st_partstat *STps = &(STp->ps[STp->partition]);
 	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->sense_hdr.sense_key == RECOVERED_ERROR) &&
 		     (!cmdstatp->remainder_valid || cmdstatp->uremainder64 == 0))) {
 		     (!cmdstatp->remainder_valid || cmdstatp->uremainder64 == 0))) {
 			/* Write successful at EOM */
 			/* Write successful at EOM */
-			scsi_release_request(SRpnt);
+			st_release_request(SRpnt);
 			SRpnt = NULL;
 			SRpnt = NULL;
 			if (STps->drv_file >= 0)
 			if (STps->drv_file >= 0)
 				STps->drv_file++;
 				STps->drv_file++;
@@ -1259,7 +1261,7 @@ static int st_flush(struct file *filp)
 			STps->eof = ST_FM;
 			STps->eof = ST_FM;
 		}
 		}
 		else { /* Write error */
 		else { /* Write error */
-			scsi_release_request(SRpnt);
+			st_release_request(SRpnt);
 			SRpnt = NULL;
 			SRpnt = NULL;
 			printk(KERN_ERR "%s: Error on write filemark.\n", name);
 			printk(KERN_ERR "%s: Error on write filemark.\n", name);
 			if (result == 0)
 			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;
 		i = STp->try_dio && try_rdio;
 	else
 	else
 		i = STp->try_dio && try_wdio;
 		i = STp->try_dio && try_wdio;
+
 	if (i && ((unsigned long)buf & queue_dma_alignment(
 	if (i && ((unsigned long)buf & queue_dma_alignment(
 					STp->device->request_queue)) == 0) {
 					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) {
 		if (i > 0) {
 			STbp->do_dio = i;
 			STbp->do_dio = i;
 			STbp->buffer_bytes = 0;   /* can be used as transfer counter */
 			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() */
 /* 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;
 	struct st_buffer *STbp;
 
 
 	STbp = STp->buffer;
 	STbp = STp->buffer;
 	if (STbp->do_dio) {
 	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->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;
 	int async_write;
 	unsigned char cmd[MAX_COMMAND_SIZE];
 	unsigned char cmd[MAX_COMMAND_SIZE];
 	const char __user *b_point;
 	const char __user *b_point;
-	struct scsi_request *SRpnt = NULL;
+	struct st_request *SRpnt = NULL;
 	struct scsi_tape *STp = filp->private_data;
 	struct scsi_tape *STp = filp->private_data;
 	struct st_modedef *STm;
 	struct st_modedef *STm;
 	struct st_partstat *STps;
 	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;
 			retval = STbp->syscall_result;
 			goto out;
 			goto out;
 		}
 		}
-		if (async_write) {
+		if (async_write && !STbp->syscall_result) {
 			STbp->writing = transfer;
 			STbp->writing = transfer;
 			STp->dirty = !(STbp->writing ==
 			STp->dirty = !(STbp->writing ==
 				       STbp->buffer_bytes);
 				       STbp->buffer_bytes);
@@ -1698,7 +1701,7 @@ st_write(struct file *filp, const char __user *buf, size_t count, loff_t * ppos)
 			} else {
 			} else {
 				count += do_count;
 				count += do_count;
 				STps->drv_block = (-1);		/* Too cautious? */
 				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:
  out:
 	if (SRpnt != NULL)
 	if (SRpnt != NULL)
-		scsi_release_request(SRpnt);
-	release_buffering(STp);
+		st_release_request(SRpnt);
+	release_buffering(STp, 0);
 	up(&STp->lock);
 	up(&STp->lock);
 
 
 	return retval;
 	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.
    Does release user buffer mapping if it is set.
 */
 */
 static long read_tape(struct scsi_tape *STp, long count,
 static long read_tape(struct scsi_tape *STp, long count,
-		      struct scsi_request ** aSRpnt)
+		      struct st_request ** aSRpnt)
 {
 {
 	int transfer, blks, bytes;
 	int transfer, blks, bytes;
 	unsigned char cmd[MAX_COMMAND_SIZE];
 	unsigned char cmd[MAX_COMMAND_SIZE];
-	struct scsi_request *SRpnt;
+	struct st_request *SRpnt;
 	struct st_modedef *STm;
 	struct st_modedef *STm;
 	struct st_partstat *STps;
 	struct st_partstat *STps;
 	struct st_buffer *STbp;
 	struct st_buffer *STbp;
@@ -1787,7 +1790,7 @@ static long read_tape(struct scsi_tape *STp, long count,
 	SRpnt = *aSRpnt;
 	SRpnt = *aSRpnt;
 	SRpnt = st_do_scsi(SRpnt, STp, cmd, bytes, DMA_FROM_DEVICE,
 	SRpnt = st_do_scsi(SRpnt, STp, cmd, bytes, DMA_FROM_DEVICE,
 			   STp->device->timeout, MAX_RETRIES, 1);
 			   STp->device->timeout, MAX_RETRIES, 1);
-	release_buffering(STp);
+	release_buffering(STp, 1);
 	*aSRpnt = SRpnt;
 	*aSRpnt = SRpnt;
 	if (!SRpnt)
 	if (!SRpnt)
 		return STbp->syscall_result;
 		return STbp->syscall_result;
@@ -1802,10 +1805,10 @@ static long read_tape(struct scsi_tape *STp, long count,
 		retval = 1;
 		retval = 1;
 		DEBC(printk(ST_DEB_MSG "%s: Sense: %2x %2x %2x %2x %2x %2x %2x %2x\n",
 		DEBC(printk(ST_DEB_MSG "%s: Sense: %2x %2x %2x %2x %2x %2x %2x %2x\n",
                             name,
                             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->have_sense) {
 
 
 			if (cmdstatp->sense_hdr.sense_key == BLANK_CHECK)
 			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;
 						STbp->buffer_bytes = bytes - transfer;
 					} else {
 					} else {
-						scsi_release_request(SRpnt);
+						st_release_request(SRpnt);
 						SRpnt = *aSRpnt = NULL;
 						SRpnt = *aSRpnt = NULL;
 						if (transfer == blks) {	/* We did not get anything, error */
 						if (transfer == blks) {	/* We did not get anything, error */
 							printk(KERN_NOTICE "%s: Incorrect block size.\n", name);
 							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 retval = 0;
 	ssize_t i, transfer;
 	ssize_t i, transfer;
 	int special, do_dio = 0;
 	int special, do_dio = 0;
-	struct scsi_request *SRpnt = NULL;
+	struct st_request *SRpnt = NULL;
 	struct scsi_tape *STp = filp->private_data;
 	struct scsi_tape *STp = filp->private_data;
 	struct st_modedef *STm;
 	struct st_modedef *STm;
 	struct st_partstat *STps;
 	struct st_partstat *STps;
@@ -2054,11 +2057,11 @@ st_read(struct file *filp, char __user *buf, size_t count, loff_t * ppos)
 
 
  out:
  out:
 	if (SRpnt != NULL) {
 	if (SRpnt != NULL) {
-		scsi_release_request(SRpnt);
+		st_release_request(SRpnt);
 		SRpnt = NULL;
 		SRpnt = NULL;
 	}
 	}
 	if (do_dio) {
 	if (do_dio) {
-		release_buffering(STp);
+		release_buffering(STp, 1);
 		STbp->buffer_bytes = 0;
 		STbp->buffer_bytes = 0;
 	}
 	}
 	up(&STp->lock);
 	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)
 static int read_mode_page(struct scsi_tape *STp, int page, int omit_block_descs)
 {
 {
 	unsigned char cmd[MAX_COMMAND_SIZE];
 	unsigned char cmd[MAX_COMMAND_SIZE];
-	struct scsi_request *SRpnt = NULL;
+	struct st_request *SRpnt = NULL;
 
 
 	memset(cmd, 0, MAX_COMMAND_SIZE);
 	memset(cmd, 0, MAX_COMMAND_SIZE);
 	cmd[0] = MODE_SENSE;
 	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)
 	if (SRpnt == NULL)
 		return (STp->buffer)->syscall_result;
 		return (STp->buffer)->syscall_result;
 
 
-	scsi_release_request(SRpnt);
+	st_release_request(SRpnt);
 
 
 	return (STp->buffer)->syscall_result;
 	return (STp->buffer)->syscall_result;
 }
 }
@@ -2310,7 +2313,7 @@ static int write_mode_page(struct scsi_tape *STp, int page, int slow)
 {
 {
 	int pgo;
 	int pgo;
 	unsigned char cmd[MAX_COMMAND_SIZE];
 	unsigned char cmd[MAX_COMMAND_SIZE];
-	struct scsi_request *SRpnt = NULL;
+	struct st_request *SRpnt = NULL;
 
 
 	memset(cmd, 0, MAX_COMMAND_SIZE);
 	memset(cmd, 0, MAX_COMMAND_SIZE);
 	cmd[0] = MODE_SELECT;
 	cmd[0] = MODE_SELECT;
@@ -2329,7 +2332,7 @@ static int write_mode_page(struct scsi_tape *STp, int page, int slow)
 	if (SRpnt == NULL)
 	if (SRpnt == NULL)
 		return (STp->buffer)->syscall_result;
 		return (STp->buffer)->syscall_result;
 
 
-	scsi_release_request(SRpnt);
+	st_release_request(SRpnt);
 
 
 	return (STp->buffer)->syscall_result;
 	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); )
 	DEB( char *name = tape_name(STp); )
 	unsigned char cmd[MAX_COMMAND_SIZE];
 	unsigned char cmd[MAX_COMMAND_SIZE];
 	struct st_partstat *STps;
 	struct st_partstat *STps;
-	struct scsi_request *SRpnt;
+	struct st_request *SRpnt;
 
 
 	if (STp->ready != ST_READY && !load_code) {
 	if (STp->ready != ST_READY && !load_code) {
 		if (STp->ready == ST_NO_TAPE)
 		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;
 		return (STp->buffer)->syscall_result;
 
 
 	retval = (STp->buffer)->syscall_result;
 	retval = (STp->buffer)->syscall_result;
-	scsi_release_request(SRpnt);
+	st_release_request(SRpnt);
 
 
 	if (!retval) {	/* SCSI command successful */
 	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 ioctl_result;
 	int chg_eof = 1;
 	int chg_eof = 1;
 	unsigned char cmd[MAX_COMMAND_SIZE];
 	unsigned char cmd[MAX_COMMAND_SIZE];
-	struct scsi_request *SRpnt;
+	struct st_request *SRpnt;
 	struct st_partstat *STps;
 	struct st_partstat *STps;
 	int fileno, blkno, at_sm, undone;
 	int fileno, blkno, at_sm, undone;
 	int datalen = 0, direction = DMA_NONE;
 	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;
 	ioctl_result = (STp->buffer)->syscall_result;
 
 
 	if (!ioctl_result) {	/* SCSI command successful */
 	if (!ioctl_result) {	/* SCSI command successful */
-		scsi_release_request(SRpnt);
+		st_release_request(SRpnt);
 		SRpnt = NULL;
 		SRpnt = NULL;
 		STps->drv_block = blkno;
 		STps->drv_block = blkno;
 		STps->drv_file = fileno;
 		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
 				/* Try the other possible state of Page Format if not
 				   already tried */
 				   already tried */
 				STp->use_pf = !STp->use_pf | PF_TESTED;
 				STp->use_pf = !STp->use_pf | PF_TESTED;
-				scsi_release_request(SRpnt);
+				st_release_request(SRpnt);
 				SRpnt = NULL;
 				SRpnt = NULL;
 				return st_int_ioctl(STp, cmd_in, arg);
 				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)
 		if (cmdstatp->sense_hdr.sense_key == BLANK_CHECK)
 			STps->eof = ST_EOD;
 			STps->eof = ST_EOD;
 
 
-		scsi_release_request(SRpnt);
+		st_release_request(SRpnt);
 		SRpnt = NULL;
 		SRpnt = NULL;
 	}
 	}
 
 
@@ -2898,7 +2901,7 @@ static int get_location(struct scsi_tape *STp, unsigned int *block, int *partiti
 {
 {
 	int result;
 	int result;
 	unsigned char scmd[MAX_COMMAND_SIZE];
 	unsigned char scmd[MAX_COMMAND_SIZE];
-	struct scsi_request *SRpnt;
+	struct st_request *SRpnt;
 	DEB( char *name = tape_name(STp); )
 	DEB( char *name = tape_name(STp); )
 
 
 	if (STp->ready != ST_READY)
 	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,
                 DEBC(printk(ST_DEB_MSG "%s: Got tape pos. blk %d part %d.\n", name,
                             *block, *partition));
                             *block, *partition));
 	}
 	}
-	scsi_release_request(SRpnt);
+	st_release_request(SRpnt);
 	SRpnt = NULL;
 	SRpnt = NULL;
 
 
 	return result;
 	return result;
@@ -2961,7 +2964,7 @@ static int set_location(struct scsi_tape *STp, unsigned int block, int partition
 	unsigned int blk;
 	unsigned int blk;
 	int timeout;
 	int timeout;
 	unsigned char scmd[MAX_COMMAND_SIZE];
 	unsigned char scmd[MAX_COMMAND_SIZE];
-	struct scsi_request *SRpnt;
+	struct st_request *SRpnt;
 	DEB( char *name = tape_name(STp); )
 	DEB( char *name = tape_name(STp); )
 
 
 	if (STp->ready != ST_READY)
 	if (STp->ready != ST_READY)
@@ -3047,7 +3050,7 @@ static int set_location(struct scsi_tape *STp, unsigned int block, int partition
 		result = 0;
 		result = 0;
 	}
 	}
 
 
-	scsi_release_request(SRpnt);
+	st_release_request(SRpnt);
 	SRpnt = NULL;
 	SRpnt = NULL;
 
 
 	return result;
 	return result;
@@ -3577,7 +3580,7 @@ static long st_compat_ioctl(struct file *file, unsigned int cmd, unsigned long a
 static struct st_buffer *
 static struct st_buffer *
  new_tape_buffer(int from_initialization, int need_dma, int max_sg)
  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;
 	gfp_t priority;
 	struct st_buffer *tb;
 	struct st_buffer *tb;
 
 
@@ -3594,10 +3597,8 @@ static struct st_buffer *
 		return NULL;
 		return NULL;
 	}
 	}
 	memset(tb, 0, i);
 	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;
 	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->frp = (struct st_buf_fragment *)(&(tb->sg[0]) + max_sg);
 
 
 	tb->in_use = 1;
 	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;
 	priority = GFP_KERNEL | __GFP_NOWARN;
 	if (need_dma)
 	if (need_dma)
 		priority |= GFP_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;
 	     b_size < new_size - STbuffer->buffer_size;
 	     order++, b_size *= 2)
 	     order++, b_size *= 2)
 		;  /* empty */
 		;  /* empty */
@@ -3670,6 +3671,7 @@ static void normalize_buffer(struct st_buffer * STbuffer)
 	}
 	}
 	STbuffer->frp_segs = STbuffer->orig_frp_segs;
 	STbuffer->frp_segs = STbuffer->orig_frp_segs;
 	STbuffer->frp_sg_current = 0;
 	STbuffer->frp_sg_current = 0;
+	STbuffer->sg_segs = 0;
 }
 }
 
 
 
 
@@ -3882,7 +3884,6 @@ static int st_probe(struct device *dev)
 	struct st_buffer *buffer;
 	struct st_buffer *buffer;
 	int i, j, mode, dev_num, error;
 	int i, j, mode, dev_num, error;
 	char *stp;
 	char *stp;
-	u64 bounce_limit;
 
 
 	if (SDp->type != TYPE_TAPE)
 	if (SDp->type != TYPE_TAPE)
 		return -ENODEV;
 		return -ENODEV;
@@ -3892,7 +3893,8 @@ static int st_probe(struct device *dev)
 		return -ENODEV;
 		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)
 	if (st_max_sg_segs < i)
 		i = st_max_sg_segs;
 		i = st_max_sg_segs;
 	buffer = new_tape_buffer(1, (SDp->host)->unchecked_isa_dma, i);
 	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->long_timeout = ST_LONG_TIMEOUT;
 	tpnt->try_dio = try_direct_io && !SDp->host->unchecked_isa_dma;
 	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++) {
 	for (i = 0; i < ST_NBR_MODES; i++) {
 		STm = &(tpnt->modes[i]);
 		STm = &(tpnt->modes[i]);
 		STm->defined = 0;
 		STm->defined = 0;
@@ -4077,9 +4074,9 @@ static int st_probe(struct device *dev)
 
 
 	sdev_printk(KERN_WARNING, SDp,
 	sdev_printk(KERN_WARNING, SDp,
 		    "Attached scsi tape %s", tape_name(tpnt));
 		    "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",
 	       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;
 	return 0;
 
 
@@ -4185,7 +4182,11 @@ static void scsi_tape_release(struct kref *kref)
 
 
 static void st_intr(struct scsi_cmnd *SCpnt)
 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))
 	if (!(SCpnt->request->flags & REQ_BLOCK_PC))
 		return 0;
 		return 0;
 
 
-	scsi_setup_blk_pc_cmnd(SCpnt, 0);
+	scsi_setup_blk_pc_cmnd(SCpnt);
 	SCpnt->done = st_intr;
 	SCpnt->done = st_intr;
 	return 1;
 	return 1;
 }
 }
@@ -4390,34 +4391,6 @@ static void do_create_class_files(struct scsi_tape *STp, int dev_num, int mode)
 	return;
 	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. */
 /* The following functions may be useful for a larger audience. */
 static int sgl_map_user_pages(struct scatterlist *sgl, const unsigned int max_pages, 
 static int sgl_map_user_pages(struct scatterlist *sgl, const unsigned int max_pages, 
 			      unsigned long uaddr, size_t count, int rw)
 			      unsigned long uaddr, size_t count, int rw)

+ 13 - 1
drivers/scsi/st.h

@@ -4,6 +4,7 @@
 
 
 #include <linux/completion.h>
 #include <linux/completion.h>
 #include <linux/kref.h>
 #include <linux/kref.h>
+#include <scsi/scsi_cmnd.h>
 
 
 /* Descriptor for analyzed sense data */
 /* Descriptor for analyzed sense data */
 struct st_cmdstatus {
 struct st_cmdstatus {
@@ -17,6 +18,17 @@ struct st_cmdstatus {
 	u8 deferred;
 	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. */
 /* The tape buffer descriptor. */
 struct st_buffer {
 struct st_buffer {
 	unsigned char in_use;
 	unsigned char in_use;
@@ -28,7 +40,7 @@ struct st_buffer {
 	int read_pointer;
 	int read_pointer;
 	int writing;
 	int writing;
 	int syscall_result;
 	int syscall_result;
-	struct scsi_request *last_SRpnt;
+	struct st_request *last_SRpnt;
 	struct st_cmdstatus cmdstat;
 	struct st_cmdstatus cmdstat;
 	unsigned char *b_data;
 	unsigned char *b_data;
 	unsigned short use_sg;	/* zero or max number of s/g segments for this adapter */
 	unsigned short use_sg;	/* zero or max number of s/g segments for this adapter */

+ 4 - 3
drivers/scsi/sun3_NCR5380.c

@@ -70,6 +70,7 @@
  *
  *
  */
  */
 #include <scsi/scsi_dbg.h>
 #include <scsi/scsi_dbg.h>
+#include <scsi/scsi_transport_spi.h>
 
 
 /*
 /*
  * Further development / testing that should be done : 
  * Further development / testing that should be done : 
@@ -2378,7 +2379,7 @@ static void NCR5380_information_transfer (struct Scsi_Host *instance)
  * 3..length+1	arguments
  * 3..length+1	arguments
  *
  *
  * Start the extended message buffer with the EXTENDED_MESSAGE
  * 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;
 		    extended_msg[0] = EXTENDED_MESSAGE;
 		    /* Accept first byte by clearing ACK */
 		    /* Accept first byte by clearing ACK */
@@ -2431,7 +2432,7 @@ static void NCR5380_information_transfer (struct Scsi_Host *instance)
 		default:
 		default:
 		    if (!tmp) {
 		    if (!tmp) {
 			printk(KERN_DEBUG "scsi%d: rejecting message ", HOSTNO);
 			printk(KERN_DEBUG "scsi%d: rejecting message ", HOSTNO);
-			scsi_print_msg (extended_msg);
+			spi_print_msg(extended_msg);
 			printk("\n");
 			printk("\n");
 		    } else if (tmp != EXTENDED_MESSAGE)
 		    } else if (tmp != EXTENDED_MESSAGE)
 			printk(KERN_DEBUG "scsi%d: rejecting unknown "
 			printk(KERN_DEBUG "scsi%d: rejecting unknown "
@@ -2566,7 +2567,7 @@ static void NCR5380_reselect (struct Scsi_Host *instance)
 
 
     if (!(msg[0] & 0x80)) {
     if (!(msg[0] & 0x80)) {
 	printk(KERN_DEBUG "scsi%d: expecting IDENTIFY message, got ", HOSTNO);
 	printk(KERN_DEBUG "scsi%d: expecting IDENTIFY message, got ", HOSTNO);
-	scsi_print_msg(msg);
+	spi_print_msg(msg);
 	do_abort(instance);
 	do_abort(instance);
 	return;
 	return;
     }
     }

+ 1 - 1
drivers/scsi/sym53c8xx_2/sym_defs.h

@@ -40,7 +40,7 @@
 #ifndef SYM_DEFS_H
 #ifndef SYM_DEFS_H
 #define 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
 #define SYM_DRIVER_NAME	"sym-" SYM_VERSION
 
 
 /*
 /*

+ 0 - 18
drivers/scsi/sym53c8xx_2/sym_fw.c

@@ -37,11 +37,7 @@
  * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
  * 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"
 #include "sym_glue.h"
-#endif
 
 
 /*
 /*
  *  Macros used for all firmwares.
  *  Macros used for all firmwares.
@@ -60,19 +56,12 @@
 #define	SYM_FWA_SCR		sym_fw1a_scr
 #define	SYM_FWA_SCR		sym_fw1a_scr
 #define	SYM_FWB_SCR		sym_fw1b_scr
 #define	SYM_FWB_SCR		sym_fw1b_scr
 #define	SYM_FWZ_SCR		sym_fw1z_scr
 #define	SYM_FWZ_SCR		sym_fw1z_scr
-#ifdef __FreeBSD__
-#include <dev/sym/sym_fw1.h>
-#else
 #include "sym_fw1.h"
 #include "sym_fw1.h"
-#endif
 static struct sym_fwa_ofs sym_fw1a_ofs = {
 static struct sym_fwa_ofs sym_fw1a_ofs = {
 	SYM_GEN_FW_A(struct SYM_FWA_SCR)
 	SYM_GEN_FW_A(struct SYM_FWA_SCR)
 };
 };
 static struct sym_fwb_ofs sym_fw1b_ofs = {
 static struct sym_fwb_ofs sym_fw1b_ofs = {
 	SYM_GEN_FW_B(struct SYM_FWB_SCR)
 	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 = {
 static struct sym_fwz_ofs sym_fw1z_ofs = {
 	SYM_GEN_FW_Z(struct SYM_FWZ_SCR)
 	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_FWA_SCR		sym_fw2a_scr
 #define	SYM_FWB_SCR		sym_fw2b_scr
 #define	SYM_FWB_SCR		sym_fw2b_scr
 #define	SYM_FWZ_SCR		sym_fw2z_scr
 #define	SYM_FWZ_SCR		sym_fw2z_scr
-#ifdef __FreeBSD__
-#include <dev/sym/sym_fw2.h>
-#else
 #include "sym_fw2.h"
 #include "sym_fw2.h"
-#endif
 static struct sym_fwa_ofs sym_fw2a_ofs = {
 static struct sym_fwa_ofs sym_fw2a_ofs = {
 	SYM_GEN_FW_A(struct SYM_FWA_SCR)
 	SYM_GEN_FW_A(struct SYM_FWA_SCR)
 };
 };
 static struct sym_fwb_ofs sym_fw2b_ofs = {
 static struct sym_fwb_ofs sym_fw2b_ofs = {
 	SYM_GEN_FW_B(struct SYM_FWB_SCR)
 	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, start64)
 	SYM_GEN_B(struct SYM_FWB_SCR, pm_handle)
 	SYM_GEN_B(struct SYM_FWB_SCR, pm_handle)
 };
 };

+ 0 - 6
drivers/scsi/sym53c8xx_2/sym_fw.h

@@ -92,9 +92,6 @@ struct sym_fwa_ofs {
 };
 };
 struct sym_fwb_ofs {
 struct sym_fwb_ofs {
 	SYM_GEN_FW_B(u_short)
 	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, start64)
 	SYM_GEN_B(u_short, pm_handle)
 	SYM_GEN_B(u_short, pm_handle)
 };
 };
@@ -111,9 +108,6 @@ struct sym_fwa_ba {
 };
 };
 struct sym_fwb_ba {
 struct sym_fwb_ba {
 	SYM_GEN_FW_B(u32)
 	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, start64);
 	SYM_GEN_B(u32, pm_handle);
 	SYM_GEN_B(u32, pm_handle);
 };
 };

+ 0 - 48
drivers/scsi/sym53c8xx_2/sym_fw1.h

@@ -197,12 +197,6 @@ struct SYM_FWB_SCR {
 	u32 bad_status		[  7];
 	u32 bad_status		[  7];
 	u32 wsr_ma_helper	[  4];
 	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 */
 	/* Data area */
 	u32 zero		[  1];
 	u32 zero		[  1];
 	u32 scratch		[  1];
 	u32 scratch		[  1];
@@ -1747,48 +1741,6 @@ static struct SYM_FWB_SCR SYM_FWB_SCR = {
 	SCR_JUMP,
 	SCR_JUMP,
 		PADDR_A (dispatch),
 		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 >-----------------------------*/,{
 }/*-------------------------< ZERO >-----------------------------*/,{
 	SCR_DATA_ZERO,
 	SCR_DATA_ZERO,
 }/*-------------------------< SCRATCH >--------------------------*/,{
 }/*-------------------------< SCRATCH >--------------------------*/,{

+ 0 - 52
drivers/scsi/sym53c8xx_2/sym_fw2.h

@@ -191,13 +191,6 @@ struct SYM_FWB_SCR {
 	u32 pm_wsr_handle	[ 38];
 	u32 pm_wsr_handle	[ 38];
 	u32 wsr_ma_helper	[  4];
 	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 */
 	/* Data area */
 	u32 zero		[  1];
 	u32 zero		[  1];
 	u32 scratch		[  1];
 	u32 scratch		[  1];
@@ -1838,51 +1831,6 @@ static struct SYM_FWB_SCR SYM_FWB_SCR = {
 	SCR_JUMP,
 	SCR_JUMP,
 		PADDR_A (dispatch),
 		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 >-----------------------------*/,{
 }/*-------------------------< ZERO >-----------------------------*/,{
 	SCR_DATA_ZERO,
 	SCR_DATA_ZERO,
 }/*-------------------------< SCRATCH >--------------------------*/,{
 }/*-------------------------< SCRATCH >--------------------------*/,{

+ 82 - 35
drivers/scsi/sym53c8xx_2/sym_glue.c

@@ -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 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_tcb *tp = &np->target[cp->target];
 	struct sym_lcb *lp = sym_lp(tp, cp->lun);
 	struct sym_lcb *lp = sym_lp(tp, cp->lun);
+	u32 lastp, goalp;
+	int dir;
 
 
 	/*
 	/*
 	 *  Build the CDB.
 	 *  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);
 			sym_set_cam_status(cmd, DID_ERROR);
 			goto out_abort;
 			goto out_abort;
 		}
 		}
+
+		/*
+		 *  No segments means no data.
+		 */
+		if (!cp->segments)
+			dir = DMA_NONE;
 	} else {
 	} else {
 		cp->data_len = 0;
 		cp->data_len = 0;
 		cp->segments = 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 
 	 *  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.
 	 *	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;
 	return 0;
 
 
 out_abort:
 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)
 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)
 	if (sdev->id >= SYM_CONF_MAX_TARGET || sdev->lun >= SYM_CONF_MAX_LUN)
 		return -ENXIO;
 		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
 	 * Fail the device init if the device is flagged NOSCAN at BOOT in
 	 * the NVRAM.  This may speed up boot and maintain coherency with
 	 * 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.
 	 * 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;
 		tp->usrflags &= ~SYM_SCAN_BOOT_DISABLED;
+		starget_printk(KERN_INFO, tp->starget,
+				"Scan at boot disabled in NVRAM\n");
 		return -ENXIO;
 		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;
 	return 0;
 }
 }
 
 
 /*
 /*
  * Linux entry point for device queue sizing.
  * 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;
 	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.
 	 *  Get user flags.
 	 */
 	 */
@@ -1038,10 +1073,10 @@ static int sym53c8xx_slave_configure(struct scsi_device *device)
 	 *  Use at least 2.
 	 *  Use at least 2.
 	 *  Donnot use more than our maximum.
 	 *  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)
 	if (reqtags > tp->usrtags)
 		reqtags = tp->usrtags;
 		reqtags = tp->usrtags;
-	if (!device->tagged_supported)
+	if (!sdev->tagged_supported)
 		reqtags = 0;
 		reqtags = 0;
 #if 1 /* Avoid to locally queue commands for no good reasons */
 #if 1 /* Avoid to locally queue commands for no good reasons */
 	if (reqtags > SYM_CONF_MAX_TAG)
 	if (reqtags > SYM_CONF_MAX_TAG)
@@ -1050,19 +1085,30 @@ static int sym53c8xx_slave_configure(struct scsi_device *device)
 #else
 #else
 	depth_to_use = (reqtags ? SYM_CONF_MAX_TAG : 2);
 	depth_to_use = (reqtags ? SYM_CONF_MAX_TAG : 2);
 #endif
 #endif
-	scsi_adjust_queue_depth(device,
-				(device->tagged_supported ?
+	scsi_adjust_queue_depth(sdev,
+				(sdev->tagged_supported ?
 				 MSG_SIMPLE_TAG : 0),
 				 MSG_SIMPLE_TAG : 0),
 				depth_to_use);
 				depth_to_use);
 	lp->s.scdev_depth = 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;
 	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
  *  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 > 0
 #if   SYM_CONF_DMA_ADDRESSING_MODE == 1
 #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
 #elif SYM_CONF_DMA_ADDRESSING_MODE == 2
 #define	DMA_DAC_MASK	DMA_64BIT_MASK
 #define	DMA_DAC_MASK	DMA_64BIT_MASK
 #endif
 #endif
@@ -1926,6 +1972,7 @@ static struct scsi_host_template sym2_template = {
 	.queuecommand		= sym53c8xx_queue_command,
 	.queuecommand		= sym53c8xx_queue_command,
 	.slave_alloc		= sym53c8xx_slave_alloc,
 	.slave_alloc		= sym53c8xx_slave_alloc,
 	.slave_configure	= sym53c8xx_slave_configure,
 	.slave_configure	= sym53c8xx_slave_configure,
+	.slave_destroy		= sym53c8xx_slave_destroy,
 	.eh_abort_handler	= sym53c8xx_eh_abort_handler,
 	.eh_abort_handler	= sym53c8xx_eh_abort_handler,
 	.eh_device_reset_handler = sym53c8xx_eh_device_reset_handler,
 	.eh_device_reset_handler = sym53c8xx_eh_device_reset_handler,
 	.eh_bus_reset_handler	= sym53c8xx_eh_bus_reset_handler,
 	.eh_bus_reset_handler	= sym53c8xx_eh_bus_reset_handler,

+ 0 - 2
drivers/scsi/sym53c8xx_2/sym_glue.h

@@ -68,7 +68,6 @@
  */
  */
 #define	SYM_CONF_TIMER_INTERVAL		((HZ+1)/2)
 #define	SYM_CONF_TIMER_INTERVAL		((HZ+1)/2)
 
 
-#define SYM_OPT_HANDLE_DIR_UNKNOWN
 #define SYM_OPT_HANDLE_DEVICE_QUEUEING
 #define SYM_OPT_HANDLE_DEVICE_QUEUEING
 #define SYM_OPT_LIMIT_COMMAND_REORDERING
 #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);
 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);
 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_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 */
 #endif /* SYM_GLUE_H */

+ 17 - 147
drivers/scsi/sym53c8xx_2/sym_hipd.c

@@ -40,6 +40,7 @@
 
 
 #include <linux/slab.h>
 #include <linux/slab.h>
 #include <asm/param.h>		/* for timeouts in units of HZ */
 #include <asm/param.h>		/* for timeouts in units of HZ */
+#include <scsi/scsi_dbg.h>
 
 
 #include "sym_glue.h"
 #include "sym_glue.h"
 #include "sym_nvram.h"
 #include "sym_nvram.h"
@@ -70,32 +71,12 @@ static void sym_printl_hex(u_char *p, int n)
 	printf (".\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)
 static void sym_print_msg(struct sym_ccb *cp, char *label, u_char *msg)
 {
 {
 	sym_print_addr(cp->cmd, "%s: ", label);
 	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)
 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];
 	struct sym_tcb *tp = &np->target[target];
 	dev_info(&tp->starget->dev, "%s: ", label);
 	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.
  *  Save initial settings of some IO registers.
  *  Assumed to have been set by BIOS.
  *  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->usrflags |= (SYM_DISC_ENABLED | SYM_TAGS_ENABLED);
 		tp->usrtags = SYM_SETUP_MAX_TAG;
 		tp->usrtags = SYM_SETUP_MAX_TAG;
 
 
-		sym_nvram_setup_target(np, i, nvram);
+		sym_nvram_setup_target(tp, i, nvram);
 
 
 		if (!tp->usrtags)
 		if (!tp->usrtags)
 			tp->usrflags &= ~SYM_TAGS_ENABLED;
 			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,
 			sym_name(np), np->rv_scntl3, np->rv_dmode, np->rv_dcntl,
 			np->rv_ctest3, np->rv_ctest4, np->rv_ctest5);
 			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;
 	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.
  *  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;
 	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 
 	 *  If result is dp_sg = SYM_CONF_MAX_SG, then we are at the 
 	 *  end of the data.
 	 *  end of the data.
 	 */
 	 */
-	tmp = scr_to_cpu(sym_goalp(cp));
+	tmp = scr_to_cpu(cp->goalp);
 	dp_sg = SYM_CONF_MAX_SG;
 	dp_sg = SYM_CONF_MAX_SG;
 	if (dp_scr != tmp)
 	if (dp_scr != tmp)
 		dp_sg -= (tmp - 8 - (int)dp_scr) / (2*4);
 		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 
 	 *  And our alchemy:) allows to easily calculate the data 
 	 *  script address we want to return for the next data phase.
 	 *  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);
 	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,
 	 *  If all data has been transferred,
 	 *  there is no residual.
 	 *  there is no residual.
 	 */
 	 */
-	if (cp->phys.head.lastp == sym_goalp(cp))
+	if (cp->phys.head.lastp == cp->goalp)
 		return resid;
 		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;
 		goto out;
 	cp = sym_que_entry(qp, struct sym_ccb, link_ccbq);
 	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.
 		 *  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 =
 			lp->head.resel_sa =
 				cpu_to_scr(SCRIPTB_BA(np, resel_bad_lun));
 				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 
 	 *  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_lcb *sym_alloc_lcb (struct sym_hcb *np, u_char tn, u_char ln)
 {
 {
 	struct sym_tcb *tp = &np->target[tn];
 	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.
 	 *  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_max   = SYM_CONF_MAX_TASK;
 	lp->started_limit = SYM_CONF_MAX_TASK;
 	lp->started_limit = SYM_CONF_MAX_TASK;
 #endif
 #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:
 fail:
 	return lp;
 	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);
 	struct sym_lcb *lp = sym_lp(tp, ln);
 	int i;
 	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 
 	 *  Allocate the task table and and the tag allocation 
 	 *  circular buffer. We want both or none.
 	 *  circular buffer. We want both or none.
@@ -5481,8 +5378,7 @@ finish:
 	/*
 	/*
 	 *  Donnot start more than 1 command after an error.
 	 *  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
 #endif
 }
 }
 
 
@@ -5520,18 +5416,12 @@ void sym_complete_ok (struct sym_hcb *np, struct sym_ccb *cp)
 	tp = &np->target[cp->target];
 	tp = &np->target[cp->target];
 	lp = sym_lp(tp, cp->lun);
 	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
 	 *  If all data have been transferred, given than no
 	 *  extended error did occur, there is no residual.
 	 *  extended error did occur, there is no residual.
 	 */
 	 */
 	resid = 0;
 	resid = 0;
-	if (cp->phys.head.lastp != sym_goalp(cp))
+	if (cp->phys.head.lastp != cp->goalp)
 		resid = sym_compute_residual(np, cp);
 		resid = sym_compute_residual(np, cp);
 
 
 	/*
 	/*
@@ -5551,15 +5441,6 @@ if (resid)
 	 */
 	 */
 	sym_set_cam_result_ok(cp, cmd, 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
 #ifdef SYM_OPT_HANDLE_DEVICE_QUEUEING
 	/*
 	/*
 	 *  If max number of started ccbs had been reduced,
 	 *  If max number of started ccbs had been reduced,
@@ -5587,7 +5468,7 @@ if (resid)
 	/*
 	/*
 	 *  Requeue a couple of awaiting scsi commands.
 	 *  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);
 		sym_start_next_ccbs(np, lp, 2);
 #endif
 #endif
 	/*
 	/*
@@ -5830,8 +5711,7 @@ void sym_hcb_free(struct sym_hcb *np)
 	SYM_QUEHEAD *qp;
 	SYM_QUEHEAD *qp;
 	struct sym_ccb *cp;
 	struct sym_ccb *cp;
 	struct sym_tcb *tp;
 	struct sym_tcb *tp;
-	struct sym_lcb *lp;
-	int target, lun;
+	int target;
 
 
 	if (np->scriptz0)
 	if (np->scriptz0)
 		sym_mfree_dma(np->scriptz0, np->scriptz_sz, "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++) {
 	for (target = 0; target < SYM_CONF_MAX_TARGET ; target++) {
 		tp = &np->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
 #if SYM_CONF_MAX_LUN > 1
 		kfree(tp->lunmp);
 		kfree(tp->lunmp);
 #endif 
 #endif 

+ 4 - 100
drivers/scsi/sym53c8xx_2/sym_hipd.h

@@ -48,12 +48,6 @@
  *  They may be defined in platform specific headers, if they 
  *  They may be defined in platform specific headers, if they 
  *  are useful.
  *  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
  *    SYM_OPT_HANDLE_DEVICE_QUEUEING
  *        When this option is set, the driver will use a queue per 
  *        When this option is set, the driver will use a queue per 
  *        device and handle QUEUE FULL status requeuing internally.
  *        device and handle QUEUE FULL status requeuing internally.
@@ -64,7 +58,6 @@
  *        (set for Linux)
  *        (set for Linux)
  */
  */
 #if 0
 #if 0
-#define SYM_OPT_HANDLE_DIR_UNKNOWN
 #define SYM_OPT_HANDLE_DEVICE_QUEUEING
 #define SYM_OPT_HANDLE_DEVICE_QUEUEING
 #define SYM_OPT_LIMIT_COMMAND_REORDERING
 #define SYM_OPT_LIMIT_COMMAND_REORDERING
 #endif
 #endif
@@ -416,19 +409,6 @@ struct sym_tcb {
 	struct sym_lcb **lunmp;		/* Other LCBs [1..MAX_LUN]	*/
 	struct sym_lcb **lunmp;		/* Other LCBs [1..MAX_LUN]	*/
 #endif
 #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
 #ifdef	SYM_HAVE_STCB
 	/*
 	/*
 	 *  O/S specific data structure.
 	 *  O/S specific data structure.
@@ -454,8 +434,10 @@ struct sym_tcb {
 	 *  Other user settable limits and options.
 	 *  Other user settable limits and options.
 	 *  These limits are read from the NVRAM if present.
 	 *  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;
 	struct scsi_target *starget;
 };
 };
 
 
@@ -672,9 +654,6 @@ struct sym_ccbh {
 	 */
 	 */
 	u32	savep;		/* Jump address to saved data pointer	*/
 	u32	savep;		/* Jump address to saved data pointer	*/
 	u32	lastp;		/* SCRIPTS address at end of data	*/
 	u32	lastp;		/* SCRIPTS address at end of data	*/
-#ifdef	SYM_OPT_HANDLE_DIR_UNKNOWN
-	u32	wlastp;
-#endif
 
 
 	/*
 	/*
 	 *  Status fields.
 	 *  Status fields.
@@ -804,9 +783,6 @@ struct sym_ccb {
 	SYM_QUEHEAD link_ccbq;	/* Link to free/busy CCB queue	*/
 	SYM_QUEHEAD link_ccbq;	/* Link to free/busy CCB queue	*/
 	u32	startp;		/* Initial data pointer		*/
 	u32	startp;		/* Initial data pointer		*/
 	u32	goalp;		/* Expected last 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_sg;		/* Extreme data pointer, used	*/
 	int	ext_ofs;	/*  to calculate the residual.	*/
 	int	ext_ofs;	/*  to calculate the residual.	*/
 #ifdef SYM_OPT_HANDLE_DEVICE_QUEUEING
 #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))
 #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;
 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);
 void sym_print_xerr(struct scsi_cmnd *cmd, int x_status);
 int sym_reset_scsi_bus(struct sym_hcb *np, int enab_int);
 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);
 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
 #ifdef SYM_OPT_HANDLE_DEVICE_QUEUEING
 void sym_start_next_ccbs(struct sym_hcb *np, struct sym_lcb *lp, int maxn);
 void sym_start_next_ccbs(struct sym_hcb *np, struct sym_lcb *lp, int maxn);
 #endif
 #endif
@@ -1135,71 +1104,6 @@ bad:
 #error "Unsupported DMA addressing mode"
 #error "Unsupported DMA addressing mode"
 #endif
 #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.
  *  MEMORY ALLOCATOR.
  */
  */

+ 0 - 4
drivers/scsi/sym53c8xx_2/sym_malloc.c

@@ -37,11 +37,7 @@
  * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
  * 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"
 #include "sym_glue.h"
-#endif
 
 
 /*
 /*
  *  Simple power of two buddy-like generic allocator.
  *  Simple power of two buddy-like generic allocator.

+ 16 - 13
drivers/scsi/sym53c8xx_2/sym_nvram.c

@@ -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.
  *  Get target set-up from Symbios format NVRAM.
  */
  */
 static void
 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];
 	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))
 	if (!(tn->flags & SYMBIOS_DISCONNECT_ENABLE))
 		tp->usrflags &= ~SYM_DISC_ENABLED;
 		tp->usrflags &= ~SYM_DISC_ENABLED;
 	if (!(tn->flags & SYMBIOS_SCAN_AT_BOOT_TIME))
 	if (!(tn->flags & SYMBIOS_SCAN_AT_BOOT_TIME))
 		tp->usrflags |= SYM_SCAN_BOOT_DISABLED;
 		tp->usrflags |= SYM_SCAN_BOOT_DISABLED;
 	if (!(tn->flags & SYMBIOS_SCAN_LUNS))
 	if (!(tn->flags & SYMBIOS_SCAN_LUNS))
 		tp->usrflags |= SYM_SCAN_LUNS_DISABLED;
 		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.
  *  Get target set-up from Tekram format NVRAM.
  */
  */
 static void
 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];
 	struct Tekram_target *tn = &nvram->target[target];
 
 
 	if (tn->flags & TEKRAM_TAGGED_COMMANDS) {
 	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)
 	if (tn->flags & TEKRAM_DISCONNECT_ENABLE)
 		tp->usrflags |= SYM_DISC_ENABLED;
 		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.
  *  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) {
 	switch (nvp->type) {
 	case SYM_SYMBIOS_NVRAM:
 	case SYM_SYMBIOS_NVRAM:
-		sym_Symbios_setup_target(np, target, &nvp->data.Symbios);
+		sym_Symbios_setup_target(tp, target, &nvp->data.Symbios);
 		break;
 		break;
 	case SYM_TEKRAM_NVRAM:
 	case SYM_TEKRAM_NVRAM:
-		sym_Tekram_setup_target(np, target, &nvp->data.Tekram);
+		sym_Tekram_setup_target(tp, target, &nvp->data.Tekram);
 		break;
 		break;
 	default:
 	default:
 		break;
 		break;

+ 2 - 2
drivers/scsi/sym53c8xx_2/sym_nvram.h

@@ -194,12 +194,12 @@ struct sym_nvram {
 
 
 #if SYM_CONF_NVRAM_SUPPORT
 #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_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);
 int sym_read_nvram (struct sym_device *np, struct sym_nvram *nvp);
 char *sym_nvram_type(struct sym_nvram *nvp);
 char *sym_nvram_type(struct sym_nvram *nvp);
 #else
 #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_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)
 static inline int sym_read_nvram(struct sym_device *np, struct sym_nvram *nvp)
 {
 {
 	nvp->type = 0;
 	nvp->type = 0;

+ 0 - 792
drivers/scsi/sym53c8xx_comm.h

@@ -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;
-}

+ 0 - 1320
drivers/scsi/sym53c8xx_defs.h

@@ -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 */

+ 30 - 8
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
 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;
 	int retried_segments = 0;
 	struct bio_vec *bvec;
 	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)
 	if (bio->bi_vcnt >= bio->bi_max_vecs)
 		return 0;
 		return 0;
 
 
-	if (((bio->bi_size + len) >> 9) > q->max_sectors)
+	if (((bio->bi_size + len) >> 9) > max_sectors)
 		return 0;
 		return 0;
 
 
 	/*
 	/*
@@ -385,6 +386,25 @@ static int __bio_add_page(request_queue_t *q, struct bio *bio, struct page
 	return len;
 	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_add_page	-	attempt to add page to bio
  *	@bio: destination 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,
 int bio_add_page(struct bio *bio, struct page *page, unsigned int len,
 		 unsigned int offset)
 		 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 {
 struct bio_map_data {
@@ -514,7 +534,7 @@ struct bio *bio_copy_user(request_queue_t *q, unsigned long uaddr,
 			break;
 			break;
 		}
 		}
 
 
-		if (__bio_add_page(q, bio, page, bytes, 0) < bytes) {
+		if (bio_add_pc_page(q, bio, page, bytes, 0) < bytes) {
 			ret = -EINVAL;
 			ret = -EINVAL;
 			break;
 			break;
 		}
 		}
@@ -628,7 +648,8 @@ static struct bio *__bio_map_user_iov(request_queue_t *q,
 			/*
 			/*
 			 * sorry...
 			 * 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;
 				break;
 
 
 			len -= bytes;
 			len -= bytes;
@@ -801,8 +822,8 @@ static struct bio *__bio_map_kern(request_queue_t *q, void *data,
 		if (bytes > len)
 		if (bytes > len)
 			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;
 			break;
 
 
 		data += bytes;
 		data += bytes;
@@ -1228,6 +1249,7 @@ EXPORT_SYMBOL(bio_clone);
 EXPORT_SYMBOL(bio_phys_segments);
 EXPORT_SYMBOL(bio_phys_segments);
 EXPORT_SYMBOL(bio_hw_segments);
 EXPORT_SYMBOL(bio_hw_segments);
 EXPORT_SYMBOL(bio_add_page);
 EXPORT_SYMBOL(bio_add_page);
+EXPORT_SYMBOL(bio_add_pc_page);
 EXPORT_SYMBOL(bio_get_nr_vecs);
 EXPORT_SYMBOL(bio_get_nr_vecs);
 EXPORT_SYMBOL(bio_map_user);
 EXPORT_SYMBOL(bio_map_user);
 EXPORT_SYMBOL(bio_unmap_user);
 EXPORT_SYMBOL(bio_unmap_user);

+ 2 - 0
include/linux/bio.h

@@ -292,6 +292,8 @@ extern struct bio *bio_clone(struct bio *, gfp_t);
 extern void bio_init(struct bio *);
 extern void bio_init(struct bio *);
 
 
 extern int bio_add_page(struct bio *, struct page *, unsigned int,unsigned int);
 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 int bio_get_nr_vecs(struct block_device *);
 extern struct bio *bio_map_user(struct request_queue *, struct block_device *,
 extern struct bio *bio_map_user(struct request_queue *, struct block_device *,
 				unsigned long, unsigned int, int);
 				unsigned long, unsigned int, int);

+ 8 - 1
include/linux/blkdev.h

@@ -184,6 +184,7 @@ struct request {
 	void *sense;
 	void *sense;
 
 
 	unsigned int timeout;
 	unsigned int timeout;
+	int retries;
 
 
 	/*
 	/*
 	 * For Power Management requests
 	 * 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 register_disk(struct gendisk *dev);
 extern void generic_make_request(struct bio *bio);
 extern void generic_make_request(struct bio *bio);
 extern void blk_put_request(struct request *);
 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_end_sync_rq(struct request *rq);
 extern void blk_attempt_remerge(request_queue_t *, struct request *);
 extern void blk_attempt_remerge(request_queue_t *, struct request *);
 extern struct request *blk_get_request(request_queue_t *, int, gfp_t);
 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_rq_map_user_iov(request_queue_t *, struct request *, struct sg_iovec *, int);
 extern int blk_execute_rq(request_queue_t *, struct gendisk *,
 extern int blk_execute_rq(request_queue_t *, struct gendisk *,
 			  struct request *, int);
 			  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)
 static inline request_queue_t *bdev_get_queue(struct block_device *bdev)
 {
 {
 	return bdev->bd_disk->queue;
 	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_PHYS_SEGMENTS 128
 #define MAX_HW_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
 #define MAX_SEGMENT_SIZE	65536
 
 

+ 1 - 0
include/linux/pci_ids.h

@@ -15,6 +15,7 @@
 #define PCI_CLASS_STORAGE_FLOPPY	0x0102
 #define PCI_CLASS_STORAGE_FLOPPY	0x0102
 #define PCI_CLASS_STORAGE_IPI		0x0103
 #define PCI_CLASS_STORAGE_IPI		0x0103
 #define PCI_CLASS_STORAGE_RAID		0x0104
 #define PCI_CLASS_STORAGE_RAID		0x0104
+#define PCI_CLASS_STORAGE_SAS		0x0107
 #define PCI_CLASS_STORAGE_OTHER		0x0180
 #define PCI_CLASS_STORAGE_OTHER		0x0180
 
 
 #define PCI_BASE_CLASS_NETWORK		0x02
 #define PCI_BASE_CLASS_NETWORK		0x02

+ 1 - 1
include/scsi/scsi_cmnd.h

@@ -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_put_command(struct scsi_cmnd *);
 extern void scsi_io_completion(struct scsi_cmnd *, unsigned int, unsigned int);
 extern void scsi_io_completion(struct scsi_cmnd *, unsigned int, unsigned int);
 extern void scsi_finish_command(struct scsi_cmnd *cmd);
 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 */
 #endif /* _SCSI_SCSI_CMND_H */

+ 0 - 1
include/scsi/scsi_dbg.h

@@ -16,7 +16,6 @@ extern void __scsi_print_sense(const char *name,
 extern void scsi_print_driverbyte(int);
 extern void scsi_print_driverbyte(int);
 extern void scsi_print_hostbyte(int);
 extern void scsi_print_hostbyte(int);
 extern void scsi_print_status(unsigned char);
 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_sense_key_string(unsigned char);
 extern const char *scsi_extd_sense_format(unsigned char, unsigned char);
 extern const char *scsi_extd_sense_format(unsigned char, unsigned char);
 
 

+ 9 - 3
include/scsi/scsi_device.h

@@ -79,9 +79,9 @@ struct scsi_device {
 	char inq_periph_qual;	/* PQ from INQUIRY data */	
 	char inq_periph_qual;	/* PQ from INQUIRY data */	
 	unsigned char inquiry_len;	/* valid bytes in 'inquiry' */
 	unsigned char inquiry_len;	/* valid bytes in 'inquiry' */
 	unsigned char * inquiry;	/* INQUIRY response data */
 	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 */
 	unsigned char current_tag;	/* current tag */
 	struct scsi_target      *sdev_target;   /* used only for single_lun */
 	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,
 extern int scsi_execute_req(struct scsi_device *sdev, const unsigned char *cmd,
 			    int data_direction, void *buffer, unsigned bufflen,
 			    int data_direction, void *buffer, unsigned bufflen,
 			    struct scsi_sense_hdr *, int timeout, int retries);
 			    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)
 static inline unsigned int sdev_channel(struct scsi_device *sdev)
 {
 {

+ 4 - 0
include/scsi/scsi_transport_spi.h

@@ -24,6 +24,9 @@
 #include <linux/transport_class.h>
 #include <linux/transport_class.h>
 
 
 struct scsi_transport_template;
 struct scsi_transport_template;
+struct scsi_target;
+struct scsi_device;
+struct Scsi_Host;
 
 
 struct spi_transport_attrs {
 struct spi_transport_attrs {
 	int period;		/* value in the PPR/SDTR command */
 	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_schedule_dv_device(struct scsi_device *);
 void spi_dv_device(struct scsi_device *);
 void spi_dv_device(struct scsi_device *);
 void spi_display_xfer_agreement(struct scsi_target *);
 void spi_display_xfer_agreement(struct scsi_target *);
+int spi_print_msg(const unsigned char *);
 
 
 #endif /* SCSI_TRANSPORT_SPI_H */
 #endif /* SCSI_TRANSPORT_SPI_H */

Some files were not shown because too many files changed in this diff