aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--Documentation/scsi/ChangeLog.megaraid35
-rw-r--r--Documentation/scsi/scsi_mid_low_api.txt37
-rw-r--r--block/ll_rw_blk.c40
-rw-r--r--block/scsi_ioctl.c2
-rw-r--r--drivers/md/dm-table.c2
-rw-r--r--drivers/message/fusion/mptbase.c14
-rw-r--r--drivers/message/fusion/mptbase.h34
-rw-r--r--drivers/message/fusion/mptctl.c4
-rw-r--r--drivers/message/fusion/mptfc.c24
-rw-r--r--drivers/message/fusion/mptsas.c55
-rw-r--r--drivers/message/fusion/mptscsih.c968
-rw-r--r--drivers/message/fusion/mptscsih.h2
-rw-r--r--drivers/message/fusion/mptspi.c24
-rw-r--r--drivers/scsi/53c700.c6
-rw-r--r--drivers/scsi/53c700.h22
-rw-r--r--drivers/scsi/53c7xx.c7
-rw-r--r--drivers/scsi/Kconfig13
-rw-r--r--drivers/scsi/NCR5380.c7
-rw-r--r--drivers/scsi/aha152x.c7
-rw-r--r--drivers/scsi/aic7xxx/aic79xx_osm.c11
-rw-r--r--drivers/scsi/aic7xxx/aic7xxx_osm.c18
-rw-r--r--drivers/scsi/arm/Kconfig1
-rw-r--r--drivers/scsi/arm/acornscsi.c7
-rw-r--r--drivers/scsi/atari_NCR5380.c7
-rw-r--r--drivers/scsi/ch.c4
-rw-r--r--drivers/scsi/constants.c118
-rw-r--r--drivers/scsi/ipr.c17
-rw-r--r--drivers/scsi/ipr.h5
-rw-r--r--drivers/scsi/iscsi_tcp.c121
-rw-r--r--drivers/scsi/iscsi_tcp.h3
-rw-r--r--drivers/scsi/lpfc/lpfc.h14
-rw-r--r--drivers/scsi/lpfc/lpfc_attr.c92
-rw-r--r--drivers/scsi/lpfc/lpfc_crtn.h3
-rw-r--r--drivers/scsi/lpfc/lpfc_disc.h2
-rw-r--r--drivers/scsi/lpfc/lpfc_els.c4
-rw-r--r--drivers/scsi/lpfc/lpfc_hbadisc.c18
-rw-r--r--drivers/scsi/lpfc/lpfc_hw.h40
-rw-r--r--drivers/scsi/lpfc/lpfc_init.c183
-rw-r--r--drivers/scsi/lpfc/lpfc_nportdisc.c69
-rw-r--r--drivers/scsi/lpfc/lpfc_scsi.c295
-rw-r--r--drivers/scsi/lpfc/lpfc_sli.c217
-rw-r--r--drivers/scsi/lpfc/lpfc_version.h2
-rw-r--r--drivers/scsi/megaraid.c27
-rw-r--r--drivers/scsi/megaraid/Kconfig.megaraid2
-rw-r--r--drivers/scsi/megaraid/megaraid_mbox.c82
-rw-r--r--drivers/scsi/megaraid/megaraid_mbox.h4
-rw-r--r--drivers/scsi/ncr53c8xx.c749
-rw-r--r--drivers/scsi/ncr53c8xx.h1263
-rw-r--r--drivers/scsi/qla2xxx/Kconfig69
-rw-r--r--drivers/scsi/qla2xxx/Makefile5
-rw-r--r--drivers/scsi/qla2xxx/ql2400.c111
-rw-r--r--drivers/scsi/qla2xxx/ql2400_fw.c12376
-rw-r--r--drivers/scsi/qla2xxx/qla_attr.c2
-rw-r--r--drivers/scsi/qla2xxx/qla_def.h24
-rw-r--r--drivers/scsi/qla2xxx/qla_gbl.h4
-rw-r--r--drivers/scsi/qla2xxx/qla_init.c248
-rw-r--r--drivers/scsi/qla2xxx/qla_os.c196
-rw-r--r--drivers/scsi/raid_class.c2
-rw-r--r--drivers/scsi/scsi_devinfo.c5
-rw-r--r--drivers/scsi/scsi_error.c47
-rw-r--r--drivers/scsi/scsi_lib.c262
-rw-r--r--drivers/scsi/scsi_priv.h4
-rw-r--r--drivers/scsi/scsi_scan.c2
-rw-r--r--drivers/scsi/scsi_sysfs.c4
-rw-r--r--drivers/scsi/scsi_transport_fc.c8
-rw-r--r--drivers/scsi/scsi_transport_spi.c136
-rw-r--r--drivers/scsi/sd.c6
-rw-r--r--drivers/scsi/sg.c686
-rw-r--r--drivers/scsi/sr.c4
-rw-r--r--drivers/scsi/sr_vendor.c4
-rw-r--r--drivers/scsi/st.c279
-rw-r--r--drivers/scsi/st.h14
-rw-r--r--drivers/scsi/sun3_NCR5380.c7
-rw-r--r--drivers/scsi/sym53c8xx_2/sym_defs.h2
-rw-r--r--drivers/scsi/sym53c8xx_2/sym_fw.c18
-rw-r--r--drivers/scsi/sym53c8xx_2/sym_fw.h6
-rw-r--r--drivers/scsi/sym53c8xx_2/sym_fw1.h48
-rw-r--r--drivers/scsi/sym53c8xx_2/sym_fw2.h52
-rw-r--r--drivers/scsi/sym53c8xx_2/sym_glue.c117
-rw-r--r--drivers/scsi/sym53c8xx_2/sym_glue.h2
-rw-r--r--drivers/scsi/sym53c8xx_2/sym_hipd.c164
-rw-r--r--drivers/scsi/sym53c8xx_2/sym_hipd.h104
-rw-r--r--drivers/scsi/sym53c8xx_2/sym_malloc.c4
-rw-r--r--drivers/scsi/sym53c8xx_2/sym_nvram.c29
-rw-r--r--drivers/scsi/sym53c8xx_2/sym_nvram.h4
-rw-r--r--drivers/scsi/sym53c8xx_comm.h792
-rw-r--r--drivers/scsi/sym53c8xx_defs.h1320
-rw-r--r--fs/bio.c38
-rw-r--r--include/linux/bio.h2
-rw-r--r--include/linux/blkdev.h9
-rw-r--r--include/linux/pci_ids.h1
-rw-r--r--include/scsi/scsi_cmnd.h2
-rw-r--r--include/scsi/scsi_dbg.h1
-rw-r--r--include/scsi/scsi_device.h12
-rw-r--r--include/scsi/scsi_transport_spi.h4
95 files changed, 17446 insertions, 4471 deletions
diff --git a/Documentation/scsi/ChangeLog.megaraid b/Documentation/scsi/ChangeLog.megaraid
index 5331d91432c7..09f6300eda4b 100644
--- a/Documentation/scsi/ChangeLog.megaraid
+++ b/Documentation/scsi/ChangeLog.megaraid
@@ -1,3 +1,38 @@
1Release Date : Fri Nov 11 12:27:22 EST 2005 - Seokmann Ju <sju@lsil.com>
2Current Version : 2.20.4.7 (scsi module), 2.20.2.6 (cmm module)
3Older Version : 2.20.4.6 (scsi module), 2.20.2.6 (cmm module)
4
51. Sorted out PCI IDs to remove megaraid support overlaps.
6 Based on the patch from Daniel, sorted out PCI IDs along with
7 charactor node name change from 'megadev' to 'megadev_legacy' to avoid
8 conflict.
9 ---
10 Hopefully we'll be getting the build restriction zapped much sooner,
11 but we should also be thinking about totally removing the hardware
12 support overlap in the megaraid drivers.
13
14 This patch pencils in a date of Feb 06 for this, and performs some
15 printk abuse in hope that existing legacy users might pick up on what's
16 going on.
17
18 Signed-off-by: Daniel Drake <dsd@gentoo.org>
19 ---
20
212. Fixed a issue: megaraid always fails to reset handler.
22 ---
23 I found that the megaraid driver always fails to reset the
24 adapter with the following message:
25 megaraid: resetting the host...
26 megaraid mbox: reset sequence completed successfully
27 megaraid: fast sync command timed out
28 megaraid: reservation reset failed
29 when the "Cluster mode" of the adapter BIOS is enabled.
30 So, whenever the reset occurs, the adapter goes to
31 offline and just become unavailable.
32
33 Jun'ichi Nomura [mailto:jnomura@mtc.biglobe.ne.jp]
34 ---
35
1Release Date : Mon Mar 07 12:27:22 EST 2005 - Seokmann Ju <sju@lsil.com> 36Release Date : Mon Mar 07 12:27:22 EST 2005 - Seokmann Ju <sju@lsil.com>
2Current Version : 2.20.4.6 (scsi module), 2.20.2.6 (cmm module) 37Current Version : 2.20.4.6 (scsi module), 2.20.2.6 (cmm module)
3Older Version : 2.20.4.5 (scsi module), 2.20.2.5 (cmm module) 38Older Version : 2.20.4.5 (scsi module), 2.20.2.5 (cmm module)
diff --git a/Documentation/scsi/scsi_mid_low_api.txt b/Documentation/scsi/scsi_mid_low_api.txt
index 66565d42288f..c4af92bc705d 100644
--- a/Documentation/scsi/scsi_mid_low_api.txt
+++ b/Documentation/scsi/scsi_mid_low_api.txt
@@ -150,7 +150,8 @@ scsi devices of which only the first 2 respond:
150LLD mid level LLD 150LLD mid level LLD
151===-------------------=========--------------------===------ 151===-------------------=========--------------------===------
152scsi_host_alloc() --> 152scsi_host_alloc() -->
153scsi_add_host() --------+ 153scsi_add_host() ---->
154scsi_scan_host() -------+
154 | 155 |
155 slave_alloc() 156 slave_alloc()
156 slave_configure() --> scsi_adjust_queue_depth() 157 slave_configure() --> scsi_adjust_queue_depth()
@@ -196,7 +197,7 @@ of the issues involved. See the section on reference counting below.
196 197
197 198
198The hotplug concept may be extended to SCSI devices. Currently, when an 199The hotplug concept may be extended to SCSI devices. Currently, when an
199HBA is added, the scsi_add_host() function causes a scan for SCSI devices 200HBA is added, the scsi_scan_host() function causes a scan for SCSI devices
200attached to the HBA's SCSI transport. On newer SCSI transports the HBA 201attached to the HBA's SCSI transport. On newer SCSI transports the HBA
201may become aware of a new SCSI device _after_ the scan has completed. 202may become aware of a new SCSI device _after_ the scan has completed.
202An LLD can use this sequence to make the mid level aware of a SCSI device: 203An LLD can use this sequence to make the mid level aware of a SCSI device:
@@ -372,7 +373,7 @@ names all start with "scsi_".
372Summary: 373Summary:
373 scsi_activate_tcq - turn on tag command queueing 374 scsi_activate_tcq - turn on tag command queueing
374 scsi_add_device - creates new scsi device (lu) instance 375 scsi_add_device - creates new scsi device (lu) instance
375 scsi_add_host - perform sysfs registration and SCSI bus scan. 376 scsi_add_host - perform sysfs registration and set up transport class
376 scsi_adjust_queue_depth - change the queue depth on a SCSI device 377 scsi_adjust_queue_depth - change the queue depth on a SCSI device
377 scsi_assign_lock - replace default host_lock with given lock 378 scsi_assign_lock - replace default host_lock with given lock
378 scsi_bios_ptable - return copy of block device's partition table 379 scsi_bios_ptable - return copy of block device's partition table
@@ -386,6 +387,7 @@ Summary:
386 scsi_remove_device - detach and remove a SCSI device 387 scsi_remove_device - detach and remove a SCSI device
387 scsi_remove_host - detach and remove all SCSI devices owned by host 388 scsi_remove_host - detach and remove all SCSI devices owned by host
388 scsi_report_bus_reset - report scsi _bus_ reset observed 389 scsi_report_bus_reset - report scsi _bus_ reset observed
390 scsi_scan_host - scan SCSI bus
389 scsi_track_queue_full - track successive QUEUE_FULL events 391 scsi_track_queue_full - track successive QUEUE_FULL events
390 scsi_unblock_requests - allow further commands to be queued to given host 392 scsi_unblock_requests - allow further commands to be queued to given host
391 scsi_unregister - [calls scsi_host_put()] 393 scsi_unregister - [calls scsi_host_put()]
@@ -425,10 +427,10 @@ void scsi_activate_tcq(struct scsi_device *sdev, int depth)
425 * Might block: yes 427 * Might block: yes
426 * 428 *
427 * Notes: This call is usually performed internally during a scsi 429 * Notes: This call is usually performed internally during a scsi
428 * bus scan when an HBA is added (i.e. scsi_add_host()). So it 430 * bus scan when an HBA is added (i.e. scsi_scan_host()). So it
429 * should only be called if the HBA becomes aware of a new scsi 431 * should only be called if the HBA becomes aware of a new scsi
430 * device (lu) after scsi_add_host() has completed. If successful 432 * device (lu) after scsi_scan_host() has completed. If successful
431 * this call we lead to slave_alloc() and slave_configure() callbacks 433 * this call can lead to slave_alloc() and slave_configure() callbacks
432 * into the LLD. 434 * into the LLD.
433 * 435 *
434 * Defined in: drivers/scsi/scsi_scan.c 436 * Defined in: drivers/scsi/scsi_scan.c
@@ -439,7 +441,7 @@ struct scsi_device * scsi_add_device(struct Scsi_Host *shost,
439 441
440 442
441/** 443/**
442 * scsi_add_host - perform sysfs registration and SCSI bus scan. 444 * scsi_add_host - perform sysfs registration and set up transport class
443 * @shost: pointer to scsi host instance 445 * @shost: pointer to scsi host instance
444 * @dev: pointer to struct device of type scsi class 446 * @dev: pointer to struct device of type scsi class
445 * 447 *
@@ -448,7 +450,11 @@ struct scsi_device * scsi_add_device(struct Scsi_Host *shost,
448 * Might block: no 450 * Might block: no
449 * 451 *
450 * Notes: Only required in "hotplug initialization model" after a 452 * Notes: Only required in "hotplug initialization model" after a
451 * successful call to scsi_host_alloc(). 453 * successful call to scsi_host_alloc(). This function does not
454 * scan the bus; this can be done by calling scsi_scan_host() or
455 * in some other transport-specific way. The LLD must set up
456 * the transport template before calling this function and may only
457 * access the transport class data after this function has been called.
452 * 458 *
453 * Defined in: drivers/scsi/hosts.c 459 * Defined in: drivers/scsi/hosts.c
454 **/ 460 **/
@@ -559,7 +565,7 @@ void scsi_deactivate_tcq(struct scsi_device *sdev, int depth)
559 * area for the LLD's exclusive use. 565 * area for the LLD's exclusive use.
560 * Both associated refcounting objects have their refcount set to 1. 566 * Both associated refcounting objects have their refcount set to 1.
561 * Full registration (in sysfs) and a bus scan are performed later when 567 * Full registration (in sysfs) and a bus scan are performed later when
562 * scsi_add_host() is called. 568 * scsi_add_host() and scsi_scan_host() are called.
563 * 569 *
564 * Defined in: drivers/scsi/hosts.c . 570 * Defined in: drivers/scsi/hosts.c .
565 **/ 571 **/
@@ -699,6 +705,19 @@ void scsi_report_bus_reset(struct Scsi_Host * shost, int channel)
699 705
700 706
701/** 707/**
708 * scsi_scan_host - scan SCSI bus
709 * @shost: a pointer to a scsi host instance
710 *
711 * Might block: yes
712 *
713 * Notes: Should be called after scsi_add_host()
714 *
715 * Defined in: drivers/scsi/scsi_scan.c
716 **/
717void scsi_scan_host(struct Scsi_Host *shost)
718
719
720/**
702 * scsi_track_queue_full - track successive QUEUE_FULL events on given 721 * scsi_track_queue_full - track successive QUEUE_FULL events on given
703 * device to determine if and when there is a need 722 * device to determine if and when there is a need
704 * to adjust the queue depth on the device. 723 * to adjust the queue depth on the device.
diff --git a/block/ll_rw_blk.c b/block/ll_rw_blk.c
index 99c9ca6d5992..d4beb9a89ee0 100644
--- a/block/ll_rw_blk.c
+++ b/block/ll_rw_blk.c
@@ -239,7 +239,7 @@ void blk_queue_make_request(request_queue_t * q, make_request_fn * mfn)
239 q->backing_dev_info.ra_pages = (VM_MAX_READAHEAD * 1024) / PAGE_CACHE_SIZE; 239 q->backing_dev_info.ra_pages = (VM_MAX_READAHEAD * 1024) / PAGE_CACHE_SIZE;
240 q->backing_dev_info.state = 0; 240 q->backing_dev_info.state = 0;
241 q->backing_dev_info.capabilities = BDI_CAP_MAP_COPY; 241 q->backing_dev_info.capabilities = BDI_CAP_MAP_COPY;
242 blk_queue_max_sectors(q, MAX_SECTORS); 242 blk_queue_max_sectors(q, SAFE_MAX_SECTORS);
243 blk_queue_hardsect_size(q, 512); 243 blk_queue_hardsect_size(q, 512);
244 blk_queue_dma_alignment(q, 511); 244 blk_queue_dma_alignment(q, 511);
245 blk_queue_congestion_threshold(q); 245 blk_queue_congestion_threshold(q);
@@ -555,7 +555,12 @@ void blk_queue_max_sectors(request_queue_t *q, unsigned short max_sectors)
555 printk("%s: set to minimum %d\n", __FUNCTION__, max_sectors); 555 printk("%s: set to minimum %d\n", __FUNCTION__, max_sectors);
556 } 556 }
557 557
558 q->max_sectors = q->max_hw_sectors = max_sectors; 558 if (BLK_DEF_MAX_SECTORS > max_sectors)
559 q->max_hw_sectors = q->max_sectors = max_sectors;
560 else {
561 q->max_sectors = BLK_DEF_MAX_SECTORS;
562 q->max_hw_sectors = max_sectors;
563 }
559} 564}
560 565
561EXPORT_SYMBOL(blk_queue_max_sectors); 566EXPORT_SYMBOL(blk_queue_max_sectors);
@@ -657,8 +662,8 @@ EXPORT_SYMBOL(blk_queue_hardsect_size);
657void blk_queue_stack_limits(request_queue_t *t, request_queue_t *b) 662void blk_queue_stack_limits(request_queue_t *t, request_queue_t *b)
658{ 663{
659 /* zero is "infinity" */ 664 /* zero is "infinity" */
660 t->max_sectors = t->max_hw_sectors = 665 t->max_sectors = min_not_zero(t->max_sectors,b->max_sectors);
661 min_not_zero(t->max_sectors,b->max_sectors); 666 t->max_hw_sectors = min_not_zero(t->max_hw_sectors,b->max_hw_sectors);
662 667
663 t->max_phys_segments = min(t->max_phys_segments,b->max_phys_segments); 668 t->max_phys_segments = min(t->max_phys_segments,b->max_phys_segments);
664 t->max_hw_segments = min(t->max_hw_segments,b->max_hw_segments); 669 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,
1293static int ll_back_merge_fn(request_queue_t *q, struct request *req, 1298static int ll_back_merge_fn(request_queue_t *q, struct request *req,
1294 struct bio *bio) 1299 struct bio *bio)
1295{ 1300{
1301 unsigned short max_sectors;
1296 int len; 1302 int len;
1297 1303
1298 if (req->nr_sectors + bio_sectors(bio) > q->max_sectors) { 1304 if (unlikely(blk_pc_request(req)))
1305 max_sectors = q->max_hw_sectors;
1306 else
1307 max_sectors = q->max_sectors;
1308
1309 if (req->nr_sectors + bio_sectors(bio) > max_sectors) {
1299 req->flags |= REQ_NOMERGE; 1310 req->flags |= REQ_NOMERGE;
1300 if (req == q->last_merge) 1311 if (req == q->last_merge)
1301 q->last_merge = NULL; 1312 q->last_merge = NULL;
@@ -1325,9 +1336,16 @@ static int ll_back_merge_fn(request_queue_t *q, struct request *req,
1325static int ll_front_merge_fn(request_queue_t *q, struct request *req, 1336static int ll_front_merge_fn(request_queue_t *q, struct request *req,
1326 struct bio *bio) 1337 struct bio *bio)
1327{ 1338{
1339 unsigned short max_sectors;
1328 int len; 1340 int len;
1329 1341
1330 if (req->nr_sectors + bio_sectors(bio) > q->max_sectors) { 1342 if (unlikely(blk_pc_request(req)))
1343 max_sectors = q->max_hw_sectors;
1344 else
1345 max_sectors = q->max_sectors;
1346
1347
1348 if (req->nr_sectors + bio_sectors(bio) > max_sectors) {
1331 req->flags |= REQ_NOMERGE; 1349 req->flags |= REQ_NOMERGE;
1332 if (req == q->last_merge) 1350 if (req == q->last_merge)
1333 q->last_merge = NULL; 1351 q->last_merge = NULL;
@@ -2144,7 +2162,7 @@ int blk_rq_map_user(request_queue_t *q, struct request *rq, void __user *ubuf,
2144 struct bio *bio; 2162 struct bio *bio;
2145 int reading; 2163 int reading;
2146 2164
2147 if (len > (q->max_sectors << 9)) 2165 if (len > (q->max_hw_sectors << 9))
2148 return -EINVAL; 2166 return -EINVAL;
2149 if (!len || !ubuf) 2167 if (!len || !ubuf)
2150 return -EINVAL; 2168 return -EINVAL;
@@ -2259,7 +2277,7 @@ int blk_rq_map_kern(request_queue_t *q, struct request *rq, void *kbuf,
2259{ 2277{
2260 struct bio *bio; 2278 struct bio *bio;
2261 2279
2262 if (len > (q->max_sectors << 9)) 2280 if (len > (q->max_hw_sectors << 9))
2263 return -EINVAL; 2281 return -EINVAL;
2264 if (!len || !kbuf) 2282 if (!len || !kbuf)
2265 return -EINVAL; 2283 return -EINVAL;
@@ -2306,6 +2324,8 @@ void blk_execute_rq_nowait(request_queue_t *q, struct gendisk *bd_disk,
2306 generic_unplug_device(q); 2324 generic_unplug_device(q);
2307} 2325}
2308 2326
2327EXPORT_SYMBOL_GPL(blk_execute_rq_nowait);
2328
2309/** 2329/**
2310 * blk_execute_rq - insert a request into queue for execution 2330 * blk_execute_rq - insert a request into queue for execution
2311 * @q: queue to insert the request in 2331 * @q: queue to insert the request in
@@ -2444,7 +2464,7 @@ void disk_round_stats(struct gendisk *disk)
2444/* 2464/*
2445 * queue lock must be held 2465 * queue lock must be held
2446 */ 2466 */
2447static void __blk_put_request(request_queue_t *q, struct request *req) 2467void __blk_put_request(request_queue_t *q, struct request *req)
2448{ 2468{
2449 struct request_list *rl = req->rl; 2469 struct request_list *rl = req->rl;
2450 2470
@@ -2473,6 +2493,8 @@ static void __blk_put_request(request_queue_t *q, struct request *req)
2473 } 2493 }
2474} 2494}
2475 2495
2496EXPORT_SYMBOL_GPL(__blk_put_request);
2497
2476void blk_put_request(struct request *req) 2498void blk_put_request(struct request *req)
2477{ 2499{
2478 unsigned long flags; 2500 unsigned long flags;
diff --git a/block/scsi_ioctl.c b/block/scsi_ioctl.c
index 6e7db2e79f42..1d8852f7bbff 100644
--- a/block/scsi_ioctl.c
+++ b/block/scsi_ioctl.c
@@ -233,7 +233,7 @@ static int sg_io(struct file *file, request_queue_t *q,
233 if (verify_command(file, cmd)) 233 if (verify_command(file, cmd))
234 return -EPERM; 234 return -EPERM;
235 235
236 if (hdr->dxfer_len > (q->max_sectors << 9)) 236 if (hdr->dxfer_len > (q->max_hw_sectors << 9))
237 return -EIO; 237 return -EIO;
238 238
239 if (hdr->dxfer_len) 239 if (hdr->dxfer_len)
diff --git a/drivers/md/dm-table.c b/drivers/md/dm-table.c
index a6d3baa46f61..a6f2dc66c3db 100644
--- a/drivers/md/dm-table.c
+++ b/drivers/md/dm-table.c
@@ -638,7 +638,7 @@ int dm_split_args(int *argc, char ***argvp, char *input)
638static void check_for_valid_limits(struct io_restrictions *rs) 638static void check_for_valid_limits(struct io_restrictions *rs)
639{ 639{
640 if (!rs->max_sectors) 640 if (!rs->max_sectors)
641 rs->max_sectors = MAX_SECTORS; 641 rs->max_sectors = SAFE_MAX_SECTORS;
642 if (!rs->max_phys_segments) 642 if (!rs->max_phys_segments)
643 rs->max_phys_segments = MAX_PHYS_SEGMENTS; 643 rs->max_phys_segments = MAX_PHYS_SEGMENTS;
644 if (!rs->max_hw_segments) 644 if (!rs->max_hw_segments)
diff --git a/drivers/message/fusion/mptbase.c b/drivers/message/fusion/mptbase.c
index 4262a22adc22..537836068c49 100644
--- a/drivers/message/fusion/mptbase.c
+++ b/drivers/message/fusion/mptbase.c
@@ -313,13 +313,13 @@ mpt_reply(MPT_ADAPTER *ioc, u32 pa)
313 u32 log_info = le32_to_cpu(mr->u.reply.IOCLogInfo); 313 u32 log_info = le32_to_cpu(mr->u.reply.IOCLogInfo);
314 if (ioc->bus_type == FC) 314 if (ioc->bus_type == FC)
315 mpt_fc_log_info(ioc, log_info); 315 mpt_fc_log_info(ioc, log_info);
316 else if (ioc->bus_type == SCSI) 316 else if (ioc->bus_type == SPI)
317 mpt_sp_log_info(ioc, log_info); 317 mpt_sp_log_info(ioc, log_info);
318 else if (ioc->bus_type == SAS) 318 else if (ioc->bus_type == SAS)
319 mpt_sas_log_info(ioc, log_info); 319 mpt_sas_log_info(ioc, log_info);
320 } 320 }
321 if (ioc_stat & MPI_IOCSTATUS_MASK) { 321 if (ioc_stat & MPI_IOCSTATUS_MASK) {
322 if (ioc->bus_type == SCSI && 322 if (ioc->bus_type == SPI &&
323 cb_idx != mpt_stm_index && 323 cb_idx != mpt_stm_index &&
324 cb_idx != mpt_lan_index) 324 cb_idx != mpt_lan_index)
325 mpt_sp_ioc_info(ioc, (u32)ioc_stat, mf); 325 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)
1376 } 1376 }
1377 else if (pdev->device == MPI_MANUFACTPAGE_DEVID_53C1030) { 1377 else if (pdev->device == MPI_MANUFACTPAGE_DEVID_53C1030) {
1378 ioc->prod_name = "LSI53C1030"; 1378 ioc->prod_name = "LSI53C1030";
1379 ioc->bus_type = SCSI; 1379 ioc->bus_type = SPI;
1380 /* 1030 Chip Fix. Disable Split transactions 1380 /* 1030 Chip Fix. Disable Split transactions
1381 * for PCIX. Set MOST bits to zero if Rev < C0( = 8). 1381 * for PCIX. Set MOST bits to zero if Rev < C0( = 8).
1382 */ 1382 */
@@ -1389,7 +1389,7 @@ mpt_attach(struct pci_dev *pdev, const struct pci_device_id *id)
1389 } 1389 }
1390 else if (pdev->device == MPI_MANUFACTPAGE_DEVID_1030_53C1035) { 1390 else if (pdev->device == MPI_MANUFACTPAGE_DEVID_1030_53C1035) {
1391 ioc->prod_name = "LSI53C1035"; 1391 ioc->prod_name = "LSI53C1035";
1392 ioc->bus_type = SCSI; 1392 ioc->bus_type = SPI;
1393 } 1393 }
1394 else if (pdev->device == MPI_MANUFACTPAGE_DEVID_SAS1064) { 1394 else if (pdev->device == MPI_MANUFACTPAGE_DEVID_SAS1064) {
1395 ioc->prod_name = "LSISAS1064"; 1395 ioc->prod_name = "LSISAS1064";
@@ -3042,7 +3042,7 @@ mpt_downloadboot(MPT_ADAPTER *ioc, MpiFwHeader_t *pFwHeader, int sleepFlag)
3042 /* Clear the internal flash bad bit - autoincrementing register, 3042 /* Clear the internal flash bad bit - autoincrementing register,
3043 * so must do two writes. 3043 * so must do two writes.
3044 */ 3044 */
3045 if (ioc->bus_type == SCSI) { 3045 if (ioc->bus_type == SPI) {
3046 /* 3046 /*
3047 * 1030 and 1035 H/W errata, workaround to access 3047 * 1030 and 1035 H/W errata, workaround to access
3048 * the ClearFlashBadSignatureBit 3048 * the ClearFlashBadSignatureBit
@@ -3152,7 +3152,7 @@ KickStart(MPT_ADAPTER *ioc, int force, int sleepFlag)
3152 int cnt,cntdn; 3152 int cnt,cntdn;
3153 3153
3154 dinitprintk((KERN_WARNING MYNAM ": KickStarting %s!\n", ioc->name)); 3154 dinitprintk((KERN_WARNING MYNAM ": KickStarting %s!\n", ioc->name));
3155 if (ioc->bus_type == SCSI) { 3155 if (ioc->bus_type == SPI) {
3156 /* Always issue a Msg Unit Reset first. This will clear some 3156 /* Always issue a Msg Unit Reset first. This will clear some
3157 * SCSI bus hang conditions. 3157 * SCSI bus hang conditions.
3158 */ 3158 */
@@ -3580,7 +3580,7 @@ initChainBuffers(MPT_ADAPTER *ioc)
3580 dinitprintk((KERN_INFO MYNAM ": %s Now numSGE=%d num_sge=%d num_chain=%d\n", 3580 dinitprintk((KERN_INFO MYNAM ": %s Now numSGE=%d num_sge=%d num_chain=%d\n",
3581 ioc->name, numSGE, num_sge, num_chain)); 3581 ioc->name, numSGE, num_sge, num_chain));
3582 3582
3583 if (ioc->bus_type == SCSI) 3583 if (ioc->bus_type == SPI)
3584 num_chain *= MPT_SCSI_CAN_QUEUE; 3584 num_chain *= MPT_SCSI_CAN_QUEUE;
3585 else 3585 else
3586 num_chain *= MPT_FC_CAN_QUEUE; 3586 num_chain *= MPT_FC_CAN_QUEUE;
diff --git a/drivers/message/fusion/mptbase.h b/drivers/message/fusion/mptbase.h
index bac8eb4186d2..6c48d1f54ac9 100644
--- a/drivers/message/fusion/mptbase.h
+++ b/drivers/message/fusion/mptbase.h
@@ -76,8 +76,8 @@
76#define COPYRIGHT "Copyright (c) 1999-2005 " MODULEAUTHOR 76#define COPYRIGHT "Copyright (c) 1999-2005 " MODULEAUTHOR
77#endif 77#endif
78 78
79#define MPT_LINUX_VERSION_COMMON "3.03.04" 79#define MPT_LINUX_VERSION_COMMON "3.03.05"
80#define MPT_LINUX_PACKAGE_NAME "@(#)mptlinux-3.03.04" 80#define MPT_LINUX_PACKAGE_NAME "@(#)mptlinux-3.03.05"
81#define WHAT_MAGIC_STRING "@" "(" "#" ")" 81#define WHAT_MAGIC_STRING "@" "(" "#" ")"
82 82
83#define show_mptmod_ver(s,ver) \ 83#define show_mptmod_ver(s,ver) \
@@ -321,7 +321,7 @@ typedef struct _SYSIF_REGS
321 * Dynamic Multi-Pathing specific stuff... 321 * Dynamic Multi-Pathing specific stuff...
322 */ 322 */
323 323
324/* VirtDevice negoFlags field */ 324/* VirtTarget negoFlags field */
325#define MPT_TARGET_NO_NEGO_WIDE 0x01 325#define MPT_TARGET_NO_NEGO_WIDE 0x01
326#define MPT_TARGET_NO_NEGO_SYNC 0x02 326#define MPT_TARGET_NO_NEGO_SYNC 0x02
327#define MPT_TARGET_NO_NEGO_QAS 0x04 327#define MPT_TARGET_NO_NEGO_QAS 0x04
@@ -330,8 +330,7 @@ typedef struct _SYSIF_REGS
330/* 330/*
331 * VirtDevice - FC LUN device or SCSI target device 331 * VirtDevice - FC LUN device or SCSI target device
332 */ 332 */
333typedef struct _VirtDevice { 333typedef struct _VirtTarget {
334 struct scsi_device *device;
335 u8 tflags; 334 u8 tflags;
336 u8 ioc_id; 335 u8 ioc_id;
337 u8 target_id; 336 u8 target_id;
@@ -342,21 +341,18 @@ typedef struct _VirtDevice {
342 u8 negoFlags; /* bit field, see above */ 341 u8 negoFlags; /* bit field, see above */
343 u8 raidVolume; /* set, if RAID Volume */ 342 u8 raidVolume; /* set, if RAID Volume */
344 u8 type; /* byte 0 of Inquiry data */ 343 u8 type; /* byte 0 of Inquiry data */
345 u8 cflags; /* controller flags */
346 u8 rsvd1raid;
347 u16 fc_phys_lun;
348 u16 fc_xlat_lun;
349 u32 num_luns; 344 u32 num_luns;
350 u32 luns[8]; /* Max LUNs is 256 */ 345 u32 luns[8]; /* Max LUNs is 256 */
351 u8 pad[4];
352 u8 inq_data[8]; 346 u8 inq_data[8];
353 /* IEEE Registered Extended Identifier 347} VirtTarget;
354 obtained via INQUIRY VPD page 0x83 */ 348
355 /* NOTE: Do not separate uniq_prepad and uniq_data 349typedef struct _VirtDevice {
356 as they are treateed as a single entity in the code */ 350 VirtTarget *vtarget;
357 u8 uniq_prepad[8]; 351 u8 ioc_id;
358 u8 uniq_data[20]; 352 u8 bus_id;
359 u8 pad2[4]; 353 u8 target_id;
354 u8 configured_lun;
355 u32 lun;
360} VirtDevice; 356} VirtDevice;
361 357
362/* 358/*
@@ -903,7 +899,7 @@ typedef struct _MPT_LOCAL_REPLY {
903 899
904typedef enum { 900typedef enum {
905 FC, 901 FC,
906 SCSI, 902 SPI,
907 SAS 903 SAS
908} BUS_TYPE; 904} BUS_TYPE;
909 905
@@ -912,7 +908,7 @@ typedef struct _MPT_SCSI_HOST {
912 int port; 908 int port;
913 u32 pad0; 909 u32 pad0;
914 struct scsi_cmnd **ScsiLookup; 910 struct scsi_cmnd **ScsiLookup;
915 VirtDevice **Targets; 911 VirtTarget **Targets;
916 MPT_LOCAL_REPLY *pLocal; /* used for internal commands */ 912 MPT_LOCAL_REPLY *pLocal; /* used for internal commands */
917 struct timer_list timer; 913 struct timer_list timer;
918 /* Pool of memory for holding SCpnts before doing 914 /* Pool of memory for holding SCpnts before doing
diff --git a/drivers/message/fusion/mptctl.c b/drivers/message/fusion/mptctl.c
index 602138f8544d..959d2c5951b8 100644
--- a/drivers/message/fusion/mptctl.c
+++ b/drivers/message/fusion/mptctl.c
@@ -1245,7 +1245,7 @@ mptctl_gettargetinfo (unsigned long arg)
1245 MPT_ADAPTER *ioc; 1245 MPT_ADAPTER *ioc;
1246 struct Scsi_Host *sh; 1246 struct Scsi_Host *sh;
1247 MPT_SCSI_HOST *hd; 1247 MPT_SCSI_HOST *hd;
1248 VirtDevice *vdev; 1248 VirtTarget *vdev;
1249 char *pmem; 1249 char *pmem;
1250 int *pdata; 1250 int *pdata;
1251 IOCPage2_t *pIoc2; 1251 IOCPage2_t *pIoc2;
@@ -1822,7 +1822,7 @@ mptctl_do_mpt_command (struct mpt_ioctl_command karg, void __user *mfPtr)
1822 case MPI_FUNCTION_SCSI_IO_REQUEST: 1822 case MPI_FUNCTION_SCSI_IO_REQUEST:
1823 if (ioc->sh) { 1823 if (ioc->sh) {
1824 SCSIIORequest_t *pScsiReq = (SCSIIORequest_t *) mf; 1824 SCSIIORequest_t *pScsiReq = (SCSIIORequest_t *) mf;
1825 VirtDevice *pTarget = NULL; 1825 VirtTarget *pTarget = NULL;
1826 MPT_SCSI_HOST *hd = NULL; 1826 MPT_SCSI_HOST *hd = NULL;
1827 int qtag = MPI_SCSIIO_CONTROL_UNTAGGED; 1827 int qtag = MPI_SCSIIO_CONTROL_UNTAGGED;
1828 int scsidir = 0; 1828 int scsidir = 0;
diff --git a/drivers/message/fusion/mptfc.c b/drivers/message/fusion/mptfc.c
index a628be9bbbad..ba61e1828858 100644
--- a/drivers/message/fusion/mptfc.c
+++ b/drivers/message/fusion/mptfc.c
@@ -84,13 +84,16 @@ static int mptfcTaskCtx = -1;
84static int mptfcInternalCtx = -1; /* Used only for internal commands */ 84static int mptfcInternalCtx = -1; /* Used only for internal commands */
85 85
86static struct scsi_host_template mptfc_driver_template = { 86static struct scsi_host_template mptfc_driver_template = {
87 .module = THIS_MODULE,
87 .proc_name = "mptfc", 88 .proc_name = "mptfc",
88 .proc_info = mptscsih_proc_info, 89 .proc_info = mptscsih_proc_info,
89 .name = "MPT FC Host", 90 .name = "MPT FC Host",
90 .info = mptscsih_info, 91 .info = mptscsih_info,
91 .queuecommand = mptscsih_qcmd, 92 .queuecommand = mptscsih_qcmd,
93 .target_alloc = mptscsih_target_alloc,
92 .slave_alloc = mptscsih_slave_alloc, 94 .slave_alloc = mptscsih_slave_alloc,
93 .slave_configure = mptscsih_slave_configure, 95 .slave_configure = mptscsih_slave_configure,
96 .target_destroy = mptscsih_target_destroy,
94 .slave_destroy = mptscsih_slave_destroy, 97 .slave_destroy = mptscsih_slave_destroy,
95 .change_queue_depth = mptscsih_change_queue_depth, 98 .change_queue_depth = mptscsih_change_queue_depth,
96 .eh_abort_handler = mptscsih_abort, 99 .eh_abort_handler = mptscsih_abort,
@@ -167,13 +170,15 @@ mptfc_probe(struct pci_dev *pdev, const struct pci_device_id *id)
167 printk(MYIOC_s_WARN_FMT 170 printk(MYIOC_s_WARN_FMT
168 "Skipping because it's not operational!\n", 171 "Skipping because it's not operational!\n",
169 ioc->name); 172 ioc->name);
170 return -ENODEV; 173 error = -ENODEV;
174 goto out_mptfc_probe;
171 } 175 }
172 176
173 if (!ioc->active) { 177 if (!ioc->active) {
174 printk(MYIOC_s_WARN_FMT "Skipping because it's disabled!\n", 178 printk(MYIOC_s_WARN_FMT "Skipping because it's disabled!\n",
175 ioc->name); 179 ioc->name);
176 return -ENODEV; 180 error = -ENODEV;
181 goto out_mptfc_probe;
177 } 182 }
178 183
179 /* Sanity check - ensure at least 1 port is INITIATOR capable 184 /* 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)
198 printk(MYIOC_s_WARN_FMT 203 printk(MYIOC_s_WARN_FMT
199 "Unable to register controller with SCSI subsystem\n", 204 "Unable to register controller with SCSI subsystem\n",
200 ioc->name); 205 ioc->name);
201 return -1; 206 error = -1;
207 goto out_mptfc_probe;
202 } 208 }
203 209
204 spin_lock_irqsave(&ioc->FreeQlock, flags); 210 spin_lock_irqsave(&ioc->FreeQlock, flags);
@@ -266,7 +272,7 @@ mptfc_probe(struct pci_dev *pdev, const struct pci_device_id *id)
266 mem = kmalloc(sz, GFP_ATOMIC); 272 mem = kmalloc(sz, GFP_ATOMIC);
267 if (mem == NULL) { 273 if (mem == NULL) {
268 error = -ENOMEM; 274 error = -ENOMEM;
269 goto mptfc_probe_failed; 275 goto out_mptfc_probe;
270 } 276 }
271 277
272 memset(mem, 0, sz); 278 memset(mem, 0, sz);
@@ -284,14 +290,14 @@ mptfc_probe(struct pci_dev *pdev, const struct pci_device_id *id)
284 mem = kmalloc(sz, GFP_ATOMIC); 290 mem = kmalloc(sz, GFP_ATOMIC);
285 if (mem == NULL) { 291 if (mem == NULL) {
286 error = -ENOMEM; 292 error = -ENOMEM;
287 goto mptfc_probe_failed; 293 goto out_mptfc_probe;
288 } 294 }
289 295
290 memset(mem, 0, sz); 296 memset(mem, 0, sz);
291 hd->Targets = (VirtDevice **) mem; 297 hd->Targets = (VirtTarget **) mem;
292 298
293 dprintk((KERN_INFO 299 dprintk((KERN_INFO
294 " Targets @ %p, sz=%d\n", hd->Targets, sz)); 300 " vdev @ %p, sz=%d\n", hd->Targets, sz));
295 301
296 /* Clear the TM flags 302 /* Clear the TM flags
297 */ 303 */
@@ -330,13 +336,13 @@ mptfc_probe(struct pci_dev *pdev, const struct pci_device_id *id)
330 if(error) { 336 if(error) {
331 dprintk((KERN_ERR MYNAM 337 dprintk((KERN_ERR MYNAM
332 "scsi_add_host failed\n")); 338 "scsi_add_host failed\n"));
333 goto mptfc_probe_failed; 339 goto out_mptfc_probe;
334 } 340 }
335 341
336 scsi_scan_host(sh); 342 scsi_scan_host(sh);
337 return 0; 343 return 0;
338 344
339mptfc_probe_failed: 345out_mptfc_probe:
340 346
341 mptscsih_remove(pdev); 347 mptscsih_remove(pdev);
342 return error; 348 return error;
diff --git a/drivers/message/fusion/mptsas.c b/drivers/message/fusion/mptsas.c
index e0a8bb8ba7d8..17e9757e728b 100644
--- a/drivers/message/fusion/mptsas.c
+++ b/drivers/message/fusion/mptsas.c
@@ -228,31 +228,35 @@ static void mptsas_print_expander_pg1(SasExpanderPage1_t *pg1)
228 * implement ->target_alloc. 228 * implement ->target_alloc.
229 */ 229 */
230static int 230static int
231mptsas_slave_alloc(struct scsi_device *device) 231mptsas_slave_alloc(struct scsi_device *sdev)
232{ 232{
233 struct Scsi_Host *host = device->host; 233 struct Scsi_Host *host = sdev->host;
234 MPT_SCSI_HOST *hd = (MPT_SCSI_HOST *)host->hostdata; 234 MPT_SCSI_HOST *hd = (MPT_SCSI_HOST *)host->hostdata;
235 struct sas_rphy *rphy; 235 struct sas_rphy *rphy;
236 struct mptsas_portinfo *p; 236 struct mptsas_portinfo *p;
237 VirtTarget *vtarget;
237 VirtDevice *vdev; 238 VirtDevice *vdev;
238 uint target = device->id; 239 struct scsi_target *starget;
239 int i; 240 int i;
240 241
241 if ((vdev = hd->Targets[target]) != NULL)
242 goto out;
243
244 vdev = kmalloc(sizeof(VirtDevice), GFP_KERNEL); 242 vdev = kmalloc(sizeof(VirtDevice), GFP_KERNEL);
245 if (!vdev) { 243 if (!vdev) {
246 printk(MYIOC_s_ERR_FMT "slave_alloc kmalloc(%zd) FAILED!\n", 244 printk(MYIOC_s_ERR_FMT "slave_alloc kmalloc(%zd) FAILED!\n",
247 hd->ioc->name, sizeof(VirtDevice)); 245 hd->ioc->name, sizeof(VirtDevice));
248 return -ENOMEM; 246 return -ENOMEM;
249 } 247 }
250
251 memset(vdev, 0, sizeof(VirtDevice)); 248 memset(vdev, 0, sizeof(VirtDevice));
252 vdev->tflags = MPT_TARGET_FLAGS_Q_YES|MPT_TARGET_FLAGS_VALID_INQUIRY;
253 vdev->ioc_id = hd->ioc->id; 249 vdev->ioc_id = hd->ioc->id;
250 sdev->hostdata = vdev;
251 starget = scsi_target(sdev);
252 vtarget = starget->hostdata;
253 vdev->vtarget = vtarget;
254 if (vtarget->num_luns == 0) {
255 vtarget->tflags = MPT_TARGET_FLAGS_Q_YES|MPT_TARGET_FLAGS_VALID_INQUIRY;
256 hd->Targets[sdev->id] = vtarget;
257 }
254 258
255 rphy = dev_to_rphy(device->sdev_target->dev.parent); 259 rphy = dev_to_rphy(sdev->sdev_target->dev.parent);
256 list_for_each_entry(p, &hd->ioc->sas_topology, list) { 260 list_for_each_entry(p, &hd->ioc->sas_topology, list) {
257 for (i = 0; i < p->num_phys; i++) { 261 for (i = 0; i < p->num_phys; i++) {
258 if (p->phy_info[i].attached.sas_address == 262 if (p->phy_info[i].attached.sas_address ==
@@ -260,7 +264,7 @@ mptsas_slave_alloc(struct scsi_device *device)
260 vdev->target_id = 264 vdev->target_id =
261 p->phy_info[i].attached.target; 265 p->phy_info[i].attached.target;
262 vdev->bus_id = p->phy_info[i].attached.bus; 266 vdev->bus_id = p->phy_info[i].attached.bus;
263 hd->Targets[device->id] = vdev; 267 vdev->lun = sdev->lun;
264 goto out; 268 goto out;
265 } 269 }
266 } 270 }
@@ -271,19 +275,24 @@ mptsas_slave_alloc(struct scsi_device *device)
271 return -ENODEV; 275 return -ENODEV;
272 276
273 out: 277 out:
274 vdev->num_luns++; 278 vtarget->ioc_id = vdev->ioc_id;
275 device->hostdata = vdev; 279 vtarget->target_id = vdev->target_id;
280 vtarget->bus_id = vdev->bus_id;
281 vtarget->num_luns++;
276 return 0; 282 return 0;
277} 283}
278 284
279static struct scsi_host_template mptsas_driver_template = { 285static struct scsi_host_template mptsas_driver_template = {
286 .module = THIS_MODULE,
280 .proc_name = "mptsas", 287 .proc_name = "mptsas",
281 .proc_info = mptscsih_proc_info, 288 .proc_info = mptscsih_proc_info,
282 .name = "MPT SPI Host", 289 .name = "MPT SPI Host",
283 .info = mptscsih_info, 290 .info = mptscsih_info,
284 .queuecommand = mptscsih_qcmd, 291 .queuecommand = mptscsih_qcmd,
292 .target_alloc = mptscsih_target_alloc,
285 .slave_alloc = mptsas_slave_alloc, 293 .slave_alloc = mptsas_slave_alloc,
286 .slave_configure = mptscsih_slave_configure, 294 .slave_configure = mptscsih_slave_configure,
295 .target_destroy = mptscsih_target_destroy,
287 .slave_destroy = mptscsih_slave_destroy, 296 .slave_destroy = mptscsih_slave_destroy,
288 .change_queue_depth = mptscsih_change_queue_depth, 297 .change_queue_depth = mptscsih_change_queue_depth,
289 .eh_abort_handler = mptscsih_abort, 298 .eh_abort_handler = mptscsih_abort,
@@ -986,7 +995,6 @@ mptsas_probe_hba_phys(MPT_ADAPTER *ioc, int *index)
986 goto out_free_port_info; 995 goto out_free_port_info;
987 996
988 list_add_tail(&port_info->list, &ioc->sas_topology); 997 list_add_tail(&port_info->list, &ioc->sas_topology);
989
990 for (i = 0; i < port_info->num_phys; i++) { 998 for (i = 0; i < port_info->num_phys; i++) {
991 mptsas_sas_phy_pg0(ioc, &port_info->phy_info[i], 999 mptsas_sas_phy_pg0(ioc, &port_info->phy_info[i],
992 (MPI_SAS_PHY_PGAD_FORM_PHY_NUMBER << 1000 (MPI_SAS_PHY_PGAD_FORM_PHY_NUMBER <<
@@ -1133,13 +1141,15 @@ mptsas_probe(struct pci_dev *pdev, const struct pci_device_id *id)
1133 printk(MYIOC_s_WARN_FMT 1141 printk(MYIOC_s_WARN_FMT
1134 "Skipping because it's not operational!\n", 1142 "Skipping because it's not operational!\n",
1135 ioc->name); 1143 ioc->name);
1136 return -ENODEV; 1144 error = -ENODEV;
1145 goto out_mptsas_probe;
1137 } 1146 }
1138 1147
1139 if (!ioc->active) { 1148 if (!ioc->active) {
1140 printk(MYIOC_s_WARN_FMT "Skipping because it's disabled!\n", 1149 printk(MYIOC_s_WARN_FMT "Skipping because it's disabled!\n",
1141 ioc->name); 1150 ioc->name);
1142 return -ENODEV; 1151 error = -ENODEV;
1152 goto out_mptsas_probe;
1143 } 1153 }
1144 1154
1145 /* Sanity check - ensure at least 1 port is INITIATOR capable 1155 /* 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)
1163 printk(MYIOC_s_WARN_FMT 1173 printk(MYIOC_s_WARN_FMT
1164 "Unable to register controller with SCSI subsystem\n", 1174 "Unable to register controller with SCSI subsystem\n",
1165 ioc->name); 1175 ioc->name);
1166 return -1; 1176 error = -1;
1177 goto out_mptsas_probe;
1167 } 1178 }
1168 1179
1169 spin_lock_irqsave(&ioc->FreeQlock, flags); 1180 spin_lock_irqsave(&ioc->FreeQlock, flags);
@@ -1237,7 +1248,7 @@ mptsas_probe(struct pci_dev *pdev, const struct pci_device_id *id)
1237 mem = kmalloc(sz, GFP_ATOMIC); 1248 mem = kmalloc(sz, GFP_ATOMIC);
1238 if (mem == NULL) { 1249 if (mem == NULL) {
1239 error = -ENOMEM; 1250 error = -ENOMEM;
1240 goto mptsas_probe_failed; 1251 goto out_mptsas_probe;
1241 } 1252 }
1242 1253
1243 memset(mem, 0, sz); 1254 memset(mem, 0, sz);
@@ -1255,14 +1266,14 @@ mptsas_probe(struct pci_dev *pdev, const struct pci_device_id *id)
1255 mem = kmalloc(sz, GFP_ATOMIC); 1266 mem = kmalloc(sz, GFP_ATOMIC);
1256 if (mem == NULL) { 1267 if (mem == NULL) {
1257 error = -ENOMEM; 1268 error = -ENOMEM;
1258 goto mptsas_probe_failed; 1269 goto out_mptsas_probe;
1259 } 1270 }
1260 1271
1261 memset(mem, 0, sz); 1272 memset(mem, 0, sz);
1262 hd->Targets = (VirtDevice **) mem; 1273 hd->Targets = (VirtTarget **) mem;
1263 1274
1264 dprintk((KERN_INFO 1275 dprintk((KERN_INFO
1265 " Targets @ %p, sz=%d\n", hd->Targets, sz)); 1276 " vtarget @ %p, sz=%d\n", hd->Targets, sz));
1266 1277
1267 /* Clear the TM flags 1278 /* Clear the TM flags
1268 */ 1279 */
@@ -1308,14 +1319,14 @@ mptsas_probe(struct pci_dev *pdev, const struct pci_device_id *id)
1308 if (error) { 1319 if (error) {
1309 dprintk((KERN_ERR MYNAM 1320 dprintk((KERN_ERR MYNAM
1310 "scsi_add_host failed\n")); 1321 "scsi_add_host failed\n"));
1311 goto mptsas_probe_failed; 1322 goto out_mptsas_probe;
1312 } 1323 }
1313 1324
1314 mptsas_scan_sas_topology(ioc); 1325 mptsas_scan_sas_topology(ioc);
1315 1326
1316 return 0; 1327 return 0;
1317 1328
1318mptsas_probe_failed: 1329out_mptsas_probe:
1319 1330
1320 mptscsih_remove(pdev); 1331 mptscsih_remove(pdev);
1321 return error; 1332 return error;
diff --git a/drivers/message/fusion/mptscsih.c b/drivers/message/fusion/mptscsih.c
index b7b9846ff3fd..93a16fa3c4ba 100644
--- a/drivers/message/fusion/mptscsih.c
+++ b/drivers/message/fusion/mptscsih.c
@@ -150,28 +150,29 @@ static int mptscsih_IssueTaskMgmt(MPT_SCSI_HOST *hd, u8 type, u8 channel, u8 tar
150int mptscsih_ioc_reset(MPT_ADAPTER *ioc, int post_reset); 150int mptscsih_ioc_reset(MPT_ADAPTER *ioc, int post_reset);
151int mptscsih_event_process(MPT_ADAPTER *ioc, EventNotificationReply_t *pEvReply); 151int mptscsih_event_process(MPT_ADAPTER *ioc, EventNotificationReply_t *pEvReply);
152 152
153static void mptscsih_initTarget(MPT_SCSI_HOST *hd, int bus_id, int target_id, u8 lun, char *data, int dlen); 153static void mptscsih_initTarget(MPT_SCSI_HOST *hd, VirtTarget *vtarget, u8 lun, char *data, int dlen);
154static void mptscsih_setTargetNegoParms(MPT_SCSI_HOST *hd, VirtDevice *target, char byte56); 154static void mptscsih_setTargetNegoParms(MPT_SCSI_HOST *hd, VirtTarget *vtarget, char byte56);
155static void mptscsih_set_dvflags(MPT_SCSI_HOST *hd, SCSIIORequest_t *pReq);
156static void mptscsih_setDevicePage1Flags (u8 width, u8 factor, u8 offset, int *requestedPtr, int *configurationPtr, u8 flags); 155static void mptscsih_setDevicePage1Flags (u8 width, u8 factor, u8 offset, int *requestedPtr, int *configurationPtr, u8 flags);
157static void mptscsih_no_negotiate(MPT_SCSI_HOST *hd, int target_id); 156static void mptscsih_no_negotiate(MPT_SCSI_HOST *hd, struct scsi_cmnd *sc);
158static int mptscsih_writeSDP1(MPT_SCSI_HOST *hd, int portnum, int target, int flags); 157static int mptscsih_writeSDP1(MPT_SCSI_HOST *hd, int portnum, int target, int flags);
159static int mptscsih_writeIOCPage4(MPT_SCSI_HOST *hd, int target_id, int bus); 158static int mptscsih_writeIOCPage4(MPT_SCSI_HOST *hd, int target_id, int bus);
160int mptscsih_scandv_complete(MPT_ADAPTER *ioc, MPT_FRAME_HDR *mf, MPT_FRAME_HDR *r); 159int mptscsih_scandv_complete(MPT_ADAPTER *ioc, MPT_FRAME_HDR *mf, MPT_FRAME_HDR *r);
161static int mptscsih_do_cmd(MPT_SCSI_HOST *hd, INTERNAL_CMD *iocmd); 160static int mptscsih_do_cmd(MPT_SCSI_HOST *hd, INTERNAL_CMD *iocmd);
162static int mptscsih_synchronize_cache(MPT_SCSI_HOST *hd, int portnum); 161static void mptscsih_synchronize_cache(MPT_SCSI_HOST *hd, VirtDevice *vdevice);
162static void mptscsih_negotiate_to_asyn_narrow(MPT_SCSI_HOST *hd, VirtTarget *vtarget);
163static int mptscsih_is_phys_disk(MPT_ADAPTER *ioc, int id);
163 164
164static struct work_struct mptscsih_persistTask; 165static struct work_struct mptscsih_persistTask;
165 166
166#ifdef MPTSCSIH_ENABLE_DOMAIN_VALIDATION 167#ifdef MPTSCSIH_ENABLE_DOMAIN_VALIDATION
167static int mptscsih_do_raid(MPT_SCSI_HOST *hd, u8 action, INTERNAL_CMD *io); 168static int mptscsih_do_raid(MPT_SCSI_HOST *hd, u8 action, INTERNAL_CMD *io);
168static void mptscsih_domainValidation(void *hd); 169static void mptscsih_domainValidation(void *hd);
169static int mptscsih_is_phys_disk(MPT_ADAPTER *ioc, int id);
170static void mptscsih_qas_check(MPT_SCSI_HOST *hd, int id); 170static void mptscsih_qas_check(MPT_SCSI_HOST *hd, int id);
171static int mptscsih_doDv(MPT_SCSI_HOST *hd, int channel, int target); 171static int mptscsih_doDv(MPT_SCSI_HOST *hd, int channel, int target);
172static void mptscsih_dv_parms(MPT_SCSI_HOST *hd, DVPARAMETERS *dv,void *pPage); 172static void mptscsih_dv_parms(MPT_SCSI_HOST *hd, DVPARAMETERS *dv,void *pPage);
173static void mptscsih_fillbuf(char *buffer, int size, int index, int width); 173static void mptscsih_fillbuf(char *buffer, int size, int index, int width);
174static void mptscsih_set_dvflags_raid(MPT_SCSI_HOST *hd, int id); 174static void mptscsih_set_dvflags_raid(MPT_SCSI_HOST *hd, int id);
175static void mptscsih_set_dvflags(MPT_SCSI_HOST *hd, struct scsi_cmnd *sc);
175#endif 176#endif
176 177
177void mptscsih_remove(struct pci_dev *); 178void mptscsih_remove(struct pci_dev *);
@@ -627,7 +628,7 @@ mptscsih_io_done(MPT_ADAPTER *ioc, MPT_FRAME_HDR *mf, MPT_FRAME_HDR *mr)
627 dreplyprintk((KERN_NOTICE "Reply ha=%d id=%d lun=%d:\n" 628 dreplyprintk((KERN_NOTICE "Reply ha=%d id=%d lun=%d:\n"
628 "IOCStatus=%04xh SCSIState=%02xh SCSIStatus=%02xh\n" 629 "IOCStatus=%04xh SCSIState=%02xh SCSIStatus=%02xh\n"
629 "resid=%d bufflen=%d xfer_cnt=%d\n", 630 "resid=%d bufflen=%d xfer_cnt=%d\n",
630 ioc->id, pScsiReq->TargetID, pScsiReq->LUN[1], 631 ioc->id, sc->device->id, sc->device->lun,
631 status, scsi_state, scsi_status, sc->resid, 632 status, scsi_state, scsi_status, sc->resid,
632 sc->request_bufflen, xfer_cnt)); 633 sc->request_bufflen, xfer_cnt));
633 634
@@ -641,7 +642,7 @@ mptscsih_io_done(MPT_ADAPTER *ioc, MPT_FRAME_HDR *mf, MPT_FRAME_HDR *mr)
641 pScsiReply->ResponseInfo) { 642 pScsiReply->ResponseInfo) {
642 printk(KERN_NOTICE "ha=%d id=%d lun=%d: " 643 printk(KERN_NOTICE "ha=%d id=%d lun=%d: "
643 "FCP_ResponseInfo=%08xh\n", 644 "FCP_ResponseInfo=%08xh\n",
644 ioc->id, pScsiReq->TargetID, pScsiReq->LUN[1], 645 ioc->id, sc->device->id, sc->device->lun,
645 le32_to_cpu(pScsiReply->ResponseInfo)); 646 le32_to_cpu(pScsiReply->ResponseInfo));
646 } 647 }
647 648
@@ -677,8 +678,8 @@ mptscsih_io_done(MPT_ADAPTER *ioc, MPT_FRAME_HDR *mf, MPT_FRAME_HDR *mr)
677 sc->result = DID_RESET << 16; 678 sc->result = DID_RESET << 16;
678 679
679 /* GEM Workaround. */ 680 /* GEM Workaround. */
680 if (ioc->bus_type == SCSI) 681 if (ioc->bus_type == SPI)
681 mptscsih_no_negotiate(hd, sc->device->id); 682 mptscsih_no_negotiate(hd, sc);
682 break; 683 break;
683 684
684 case MPI_IOCSTATUS_SCSI_RESIDUAL_MISMATCH: /* 0x0049 */ 685 case MPI_IOCSTATUS_SCSI_RESIDUAL_MISMATCH: /* 0x0049 */
@@ -892,16 +893,15 @@ mptscsih_flush_running_cmds(MPT_SCSI_HOST *hd)
892 * when a lun is disable by mid-layer. 893 * when a lun is disable by mid-layer.
893 * Do NOT access the referenced scsi_cmnd structure or 894 * Do NOT access the referenced scsi_cmnd structure or
894 * members. Will cause either a paging or NULL ptr error. 895 * members. Will cause either a paging or NULL ptr error.
895 * @hd: Pointer to a SCSI HOST structure 896 * @hd: Pointer to a SCSI HOST structure
896 * @target: target id 897 * @vdevice: per device private data
897 * @lun: lun
898 * 898 *
899 * Returns: None. 899 * Returns: None.
900 * 900 *
901 * Called from slave_destroy. 901 * Called from slave_destroy.
902 */ 902 */
903static void 903static void
904mptscsih_search_running_cmds(MPT_SCSI_HOST *hd, uint target, uint lun) 904mptscsih_search_running_cmds(MPT_SCSI_HOST *hd, VirtDevice *vdevice)
905{ 905{
906 SCSIIORequest_t *mf = NULL; 906 SCSIIORequest_t *mf = NULL;
907 int ii; 907 int ii;
@@ -909,7 +909,7 @@ mptscsih_search_running_cmds(MPT_SCSI_HOST *hd, uint target, uint lun)
909 struct scsi_cmnd *sc; 909 struct scsi_cmnd *sc;
910 910
911 dsprintk((KERN_INFO MYNAM ": search_running target %d lun %d max %d\n", 911 dsprintk((KERN_INFO MYNAM ": search_running target %d lun %d max %d\n",
912 target, lun, max)); 912 vdevice->target_id, vdevice->lun, max));
913 913
914 for (ii=0; ii < max; ii++) { 914 for (ii=0; ii < max; ii++) {
915 if ((sc = hd->ScsiLookup[ii]) != NULL) { 915 if ((sc = hd->ScsiLookup[ii]) != NULL) {
@@ -919,7 +919,7 @@ mptscsih_search_running_cmds(MPT_SCSI_HOST *hd, uint target, uint lun)
919 dsprintk(( "search_running: found (sc=%p, mf = %p) target %d, lun %d \n", 919 dsprintk(( "search_running: found (sc=%p, mf = %p) target %d, lun %d \n",
920 hd->ScsiLookup[ii], mf, mf->TargetID, mf->LUN[1])); 920 hd->ScsiLookup[ii], mf, mf->TargetID, mf->LUN[1]));
921 921
922 if ((mf->TargetID != ((u8)target)) || (mf->LUN[1] != ((u8) lun))) 922 if ((mf->TargetID != ((u8)vdevice->target_id)) || (mf->LUN[1] != ((u8) vdevice->lun)))
923 continue; 923 continue;
924 924
925 /* Cleanup 925 /* Cleanup
@@ -993,8 +993,10 @@ mptscsih_remove(struct pci_dev *pdev)
993 MPT_ADAPTER *ioc = pci_get_drvdata(pdev); 993 MPT_ADAPTER *ioc = pci_get_drvdata(pdev);
994 struct Scsi_Host *host = ioc->sh; 994 struct Scsi_Host *host = ioc->sh;
995 MPT_SCSI_HOST *hd; 995 MPT_SCSI_HOST *hd;
996#ifdef MPTSCSIH_ENABLE_DOMAIN_VALIDATION
996 int count; 997 int count;
997 unsigned long flags; 998 unsigned long flags;
999#endif
998 int sz1; 1000 int sz1;
999 1001
1000 if(!host) { 1002 if(!host) {
@@ -1075,11 +1077,6 @@ mptscsih_shutdown(struct pci_dev *pdev)
1075 1077
1076 hd = (MPT_SCSI_HOST *)host->hostdata; 1078 hd = (MPT_SCSI_HOST *)host->hostdata;
1077 1079
1078 /* Flush the cache of this adapter
1079 */
1080 if(hd != NULL)
1081 mptscsih_synchronize_cache(hd, 0);
1082
1083} 1080}
1084 1081
1085#ifdef CONFIG_PM 1082#ifdef CONFIG_PM
@@ -1286,7 +1283,7 @@ mptscsih_qcmd(struct scsi_cmnd *SCpnt, void (*done)(struct scsi_cmnd *))
1286 MPT_SCSI_HOST *hd; 1283 MPT_SCSI_HOST *hd;
1287 MPT_FRAME_HDR *mf; 1284 MPT_FRAME_HDR *mf;
1288 SCSIIORequest_t *pScsiReq; 1285 SCSIIORequest_t *pScsiReq;
1289 VirtDevice *pTarget = SCpnt->device->hostdata; 1286 VirtDevice *vdev = SCpnt->device->hostdata;
1290 int lun; 1287 int lun;
1291 u32 datalen; 1288 u32 datalen;
1292 u32 scsictl; 1289 u32 scsictl;
@@ -1341,8 +1338,8 @@ mptscsih_qcmd(struct scsi_cmnd *SCpnt, void (*done)(struct scsi_cmnd *))
1341 /* Default to untagged. Once a target structure has been allocated, 1338 /* Default to untagged. Once a target structure has been allocated,
1342 * use the Inquiry data to determine if device supports tagged. 1339 * use the Inquiry data to determine if device supports tagged.
1343 */ 1340 */
1344 if (pTarget 1341 if (vdev
1345 && (pTarget->tflags & MPT_TARGET_FLAGS_Q_YES) 1342 && (vdev->vtarget->tflags & MPT_TARGET_FLAGS_Q_YES)
1346 && (SCpnt->device->tagged_supported)) { 1343 && (SCpnt->device->tagged_supported)) {
1347 scsictl = scsidir | MPI_SCSIIO_CONTROL_SIMPLEQ; 1344 scsictl = scsidir | MPI_SCSIIO_CONTROL_SIMPLEQ;
1348 } else { 1345 } else {
@@ -1351,8 +1348,8 @@ mptscsih_qcmd(struct scsi_cmnd *SCpnt, void (*done)(struct scsi_cmnd *))
1351 1348
1352 /* Use the above information to set up the message frame 1349 /* Use the above information to set up the message frame
1353 */ 1350 */
1354 pScsiReq->TargetID = (u8) pTarget->target_id; 1351 pScsiReq->TargetID = (u8) vdev->target_id;
1355 pScsiReq->Bus = pTarget->bus_id; 1352 pScsiReq->Bus = vdev->bus_id;
1356 pScsiReq->ChainOffset = 0; 1353 pScsiReq->ChainOffset = 0;
1357 pScsiReq->Function = MPI_FUNCTION_SCSI_IO_REQUEST; 1354 pScsiReq->Function = MPI_FUNCTION_SCSI_IO_REQUEST;
1358 pScsiReq->CDBLength = SCpnt->cmd_len; 1355 pScsiReq->CDBLength = SCpnt->cmd_len;
@@ -1403,8 +1400,8 @@ mptscsih_qcmd(struct scsi_cmnd *SCpnt, void (*done)(struct scsi_cmnd *))
1403 SCpnt->host_scribble = NULL; 1400 SCpnt->host_scribble = NULL;
1404 1401
1405#ifdef MPTSCSIH_ENABLE_DOMAIN_VALIDATION 1402#ifdef MPTSCSIH_ENABLE_DOMAIN_VALIDATION
1406 if (hd->ioc->bus_type == SCSI) { 1403 if (hd->ioc->bus_type == SPI) {
1407 int dvStatus = hd->ioc->spi_data.dvStatus[pTarget->target_id]; 1404 int dvStatus = hd->ioc->spi_data.dvStatus[vdev->target_id];
1408 int issueCmd = 1; 1405 int issueCmd = 1;
1409 1406
1410 if (dvStatus || hd->ioc->spi_data.forceDv) { 1407 if (dvStatus || hd->ioc->spi_data.forceDv) {
@@ -1437,7 +1434,7 @@ mptscsih_qcmd(struct scsi_cmnd *SCpnt, void (*done)(struct scsi_cmnd *))
1437 /* Set the DV flags. 1434 /* Set the DV flags.
1438 */ 1435 */
1439 if (dvStatus & MPT_SCSICFG_DV_NOT_DONE) 1436 if (dvStatus & MPT_SCSICFG_DV_NOT_DONE)
1440 mptscsih_set_dvflags(hd, pScsiReq); 1437 mptscsih_set_dvflags(hd, SCpnt);
1441 1438
1442 if (!issueCmd) 1439 if (!issueCmd)
1443 goto fail; 1440 goto fail;
@@ -1741,6 +1738,7 @@ mptscsih_abort(struct scsi_cmnd * SCpnt)
1741 u32 ctx2abort; 1738 u32 ctx2abort;
1742 int scpnt_idx; 1739 int scpnt_idx;
1743 int retval; 1740 int retval;
1741 VirtDevice *vdev;
1744 1742
1745 /* If we can't locate our host adapter structure, return FAILED status. 1743 /* If we can't locate our host adapter structure, return FAILED status.
1746 */ 1744 */
@@ -1790,8 +1788,9 @@ mptscsih_abort(struct scsi_cmnd * SCpnt)
1790 1788
1791 hd->abortSCpnt = SCpnt; 1789 hd->abortSCpnt = SCpnt;
1792 1790
1791 vdev = SCpnt->device->hostdata;
1793 retval = mptscsih_TMHandler(hd, MPI_SCSITASKMGMT_TASKTYPE_ABORT_TASK, 1792 retval = mptscsih_TMHandler(hd, MPI_SCSITASKMGMT_TASKTYPE_ABORT_TASK,
1794 SCpnt->device->channel, SCpnt->device->id, SCpnt->device->lun, 1793 vdev->bus_id, vdev->target_id, vdev->lun,
1795 ctx2abort, 2 /* 2 second timeout */); 1794 ctx2abort, 2 /* 2 second timeout */);
1796 1795
1797 printk (KERN_WARNING MYNAM ": %s: task abort: %s (sc=%p)\n", 1796 printk (KERN_WARNING MYNAM ": %s: task abort: %s (sc=%p)\n",
@@ -1822,6 +1821,7 @@ mptscsih_dev_reset(struct scsi_cmnd * SCpnt)
1822{ 1821{
1823 MPT_SCSI_HOST *hd; 1822 MPT_SCSI_HOST *hd;
1824 int retval; 1823 int retval;
1824 VirtDevice *vdev;
1825 1825
1826 /* If we can't locate our host adapter structure, return FAILED status. 1826 /* If we can't locate our host adapter structure, return FAILED status.
1827 */ 1827 */
@@ -1839,8 +1839,9 @@ mptscsih_dev_reset(struct scsi_cmnd * SCpnt)
1839 hd->ioc->name, SCpnt); 1839 hd->ioc->name, SCpnt);
1840 scsi_print_command(SCpnt); 1840 scsi_print_command(SCpnt);
1841 1841
1842 vdev = SCpnt->device->hostdata;
1842 retval = mptscsih_TMHandler(hd, MPI_SCSITASKMGMT_TASKTYPE_TARGET_RESET, 1843 retval = mptscsih_TMHandler(hd, MPI_SCSITASKMGMT_TASKTYPE_TARGET_RESET,
1843 SCpnt->device->channel, SCpnt->device->id, 1844 vdev->bus_id, vdev->target_id,
1844 0, 0, 5 /* 5 second timeout */); 1845 0, 0, 5 /* 5 second timeout */);
1845 1846
1846 printk (KERN_WARNING MYNAM ": %s: target reset: %s (sc=%p)\n", 1847 printk (KERN_WARNING MYNAM ": %s: target reset: %s (sc=%p)\n",
@@ -1871,6 +1872,7 @@ mptscsih_bus_reset(struct scsi_cmnd * SCpnt)
1871{ 1872{
1872 MPT_SCSI_HOST *hd; 1873 MPT_SCSI_HOST *hd;
1873 int retval; 1874 int retval;
1875 VirtDevice *vdev;
1874 1876
1875 /* If we can't locate our host adapter structure, return FAILED status. 1877 /* If we can't locate our host adapter structure, return FAILED status.
1876 */ 1878 */
@@ -1888,8 +1890,9 @@ mptscsih_bus_reset(struct scsi_cmnd * SCpnt)
1888 if (hd->timeouts < -1) 1890 if (hd->timeouts < -1)
1889 hd->timeouts++; 1891 hd->timeouts++;
1890 1892
1893 vdev = SCpnt->device->hostdata;
1891 retval = mptscsih_TMHandler(hd, MPI_SCSITASKMGMT_TASKTYPE_RESET_BUS, 1894 retval = mptscsih_TMHandler(hd, MPI_SCSITASKMGMT_TASKTYPE_RESET_BUS,
1892 SCpnt->device->channel, 0, 0, 0, 5 /* 5 second timeout */); 1895 vdev->bus_id, 0, 0, 0, 5 /* 5 second timeout */);
1893 1896
1894 printk (KERN_WARNING MYNAM ": %s: bus reset: %s (sc=%p)\n", 1897 printk (KERN_WARNING MYNAM ": %s: bus reset: %s (sc=%p)\n",
1895 hd->ioc->name, 1898 hd->ioc->name,
@@ -2151,23 +2154,36 @@ mptscsih_bios_param(struct scsi_device * sdev, struct block_device *bdev,
2151/*=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=*/ 2154/*=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=*/
2152/* 2155/*
2153 * OS entry point to allow host driver to alloc memory 2156 * OS entry point to allow host driver to alloc memory
2157 * for each scsi target. Called once per device the bus scan.
2158 * Return non-zero if allocation fails.
2159 */
2160int
2161mptscsih_target_alloc(struct scsi_target *starget)
2162{
2163 VirtTarget *vtarget;
2164
2165 vtarget = kmalloc(sizeof(VirtTarget), GFP_KERNEL);
2166 if (!vtarget)
2167 return -ENOMEM;
2168 memset(vtarget, 0, sizeof(VirtTarget));
2169 starget->hostdata = vtarget;
2170 return 0;
2171}
2172
2173/*=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=*/
2174/*
2175 * OS entry point to allow host driver to alloc memory
2154 * for each scsi device. Called once per device the bus scan. 2176 * for each scsi device. Called once per device the bus scan.
2155 * Return non-zero if allocation fails. 2177 * Return non-zero if allocation fails.
2156 * Init memory once per id (not LUN).
2157 */ 2178 */
2158int 2179int
2159mptscsih_slave_alloc(struct scsi_device *device) 2180mptscsih_slave_alloc(struct scsi_device *sdev)
2160{ 2181{
2161 struct Scsi_Host *host = device->host; 2182 struct Scsi_Host *host = sdev->host;
2162 MPT_SCSI_HOST *hd = (MPT_SCSI_HOST *)host->hostdata; 2183 MPT_SCSI_HOST *hd = (MPT_SCSI_HOST *)host->hostdata;
2184 VirtTarget *vtarget;
2163 VirtDevice *vdev; 2185 VirtDevice *vdev;
2164 uint target = device->id; 2186 struct scsi_target *starget;
2165
2166 if (hd == NULL)
2167 return -ENODEV;
2168
2169 if ((vdev = hd->Targets[target]) != NULL)
2170 goto out;
2171 2187
2172 vdev = kmalloc(sizeof(VirtDevice), GFP_KERNEL); 2188 vdev = kmalloc(sizeof(VirtDevice), GFP_KERNEL);
2173 if (!vdev) { 2189 if (!vdev) {
@@ -2177,25 +2193,33 @@ mptscsih_slave_alloc(struct scsi_device *device)
2177 } 2193 }
2178 2194
2179 memset(vdev, 0, sizeof(VirtDevice)); 2195 memset(vdev, 0, sizeof(VirtDevice));
2180 vdev->tflags = MPT_TARGET_FLAGS_Q_YES;
2181 vdev->ioc_id = hd->ioc->id; 2196 vdev->ioc_id = hd->ioc->id;
2182 vdev->target_id = device->id; 2197 vdev->target_id = sdev->id;
2183 vdev->bus_id = device->channel; 2198 vdev->bus_id = sdev->channel;
2184 vdev->raidVolume = 0; 2199 vdev->lun = sdev->lun;
2185 hd->Targets[device->id] = vdev; 2200 sdev->hostdata = vdev;
2186 if (hd->ioc->bus_type == SCSI) { 2201
2187 if (hd->ioc->raid_data.isRaid & (1 << device->id)) { 2202 starget = scsi_target(sdev);
2188 vdev->raidVolume = 1; 2203 vtarget = starget->hostdata;
2189 ddvtprintk((KERN_INFO 2204 vdev->vtarget = vtarget;
2190 "RAID Volume @ id %d\n", device->id)); 2205
2206 if (vtarget->num_luns == 0) {
2207 hd->Targets[sdev->id] = vtarget;
2208 vtarget->ioc_id = hd->ioc->id;
2209 vtarget->tflags = MPT_TARGET_FLAGS_Q_YES;
2210 vtarget->target_id = sdev->id;
2211 vtarget->bus_id = sdev->channel;
2212 if (hd->ioc->bus_type == SPI) {
2213 if (hd->ioc->raid_data.isRaid & (1 << sdev->id)) {
2214 vtarget->raidVolume = 1;
2215 ddvtprintk((KERN_INFO
2216 "RAID Volume @ id %d\n", sdev->id));
2217 }
2218 } else {
2219 vtarget->tflags |= MPT_TARGET_FLAGS_VALID_INQUIRY;
2191 } 2220 }
2192 } else {
2193 vdev->tflags |= MPT_TARGET_FLAGS_VALID_INQUIRY;
2194 } 2221 }
2195 2222 vtarget->num_luns++;
2196 out:
2197 vdev->num_luns++;
2198 device->hostdata = vdev;
2199 return 0; 2223 return 0;
2200} 2224}
2201 2225
@@ -2204,40 +2228,52 @@ mptscsih_slave_alloc(struct scsi_device *device)
2204 * Called if no device present or device being unloaded 2228 * Called if no device present or device being unloaded
2205 */ 2229 */
2206void 2230void
2207mptscsih_slave_destroy(struct scsi_device *device) 2231mptscsih_target_destroy(struct scsi_target *starget)
2208{ 2232{
2209 struct Scsi_Host *host = device->host; 2233 if (starget->hostdata)
2210 MPT_SCSI_HOST *hd = (MPT_SCSI_HOST *)host->hostdata; 2234 kfree(starget->hostdata);
2211 VirtDevice *vdev; 2235 starget->hostdata = NULL;
2212 uint target = device->id; 2236}
2213 uint lun = device->lun;
2214
2215 if (hd == NULL)
2216 return;
2217
2218 mptscsih_search_running_cmds(hd, target, lun);
2219
2220 vdev = hd->Targets[target];
2221 vdev->luns[0] &= ~(1 << lun);
2222 if (--vdev->num_luns)
2223 return;
2224
2225 kfree(hd->Targets[target]);
2226 hd->Targets[target] = NULL;
2227
2228 if (hd->ioc->bus_type == SCSI) {
2229 if (mptscsih_is_phys_disk(hd->ioc, target)) {
2230 hd->ioc->spi_data.forceDv |= MPT_SCSICFG_RELOAD_IOC_PG3;
2231 } else {
2232 hd->ioc->spi_data.dvStatus[target] =
2233 MPT_SCSICFG_NEGOTIATE;
2234 2237
2235 if (!hd->negoNvram) { 2238/*
2236 hd->ioc->spi_data.dvStatus[target] |= 2239 * OS entry point to allow for host driver to free allocated memory
2237 MPT_SCSICFG_DV_NOT_DONE; 2240 * Called if no device present or device being unloaded
2241 */
2242void
2243mptscsih_slave_destroy(struct scsi_device *sdev)
2244{
2245 struct Scsi_Host *host = sdev->host;
2246 MPT_SCSI_HOST *hd = (MPT_SCSI_HOST *)host->hostdata;
2247 VirtTarget *vtarget;
2248 VirtDevice *vdevice;
2249 struct scsi_target *starget;
2250
2251 starget = scsi_target(sdev);
2252 vtarget = starget->hostdata;
2253 vdevice = sdev->hostdata;
2254
2255 mptscsih_search_running_cmds(hd, vdevice);
2256 vtarget->luns[0] &= ~(1 << vdevice->lun);
2257 vtarget->num_luns--;
2258 if (vtarget->num_luns == 0) {
2259 mptscsih_negotiate_to_asyn_narrow(hd, vtarget);
2260 if (hd->ioc->bus_type == SPI) {
2261 if (mptscsih_is_phys_disk(hd->ioc, vtarget->target_id)) {
2262 hd->ioc->spi_data.forceDv |= MPT_SCSICFG_RELOAD_IOC_PG3;
2263 } else {
2264 hd->ioc->spi_data.dvStatus[vtarget->target_id] =
2265 MPT_SCSICFG_NEGOTIATE;
2266 if (!hd->negoNvram) {
2267 hd->ioc->spi_data.dvStatus[vtarget->target_id] |=
2268 MPT_SCSICFG_DV_NOT_DONE;
2269 }
2238 } 2270 }
2239 } 2271 }
2272 hd->Targets[sdev->id] = NULL;
2240 } 2273 }
2274 mptscsih_synchronize_cache(hd, vdevice);
2275 kfree(vdevice);
2276 sdev->hostdata = NULL;
2241} 2277}
2242 2278
2243/*=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=*/ 2279/*=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=*/
@@ -2251,22 +2287,21 @@ mptscsih_slave_destroy(struct scsi_device *device)
2251int 2287int
2252mptscsih_change_queue_depth(struct scsi_device *sdev, int qdepth) 2288mptscsih_change_queue_depth(struct scsi_device *sdev, int qdepth)
2253{ 2289{
2254 MPT_SCSI_HOST *hd = (MPT_SCSI_HOST *)sdev->host->hostdata; 2290 MPT_SCSI_HOST *hd = (MPT_SCSI_HOST *)sdev->host->hostdata;
2255 VirtDevice *pTarget; 2291 VirtTarget *vtarget;
2256 int max_depth; 2292 struct scsi_target *starget;
2257 int tagged; 2293 int max_depth;
2258 2294 int tagged;
2259 if (hd == NULL) 2295
2260 return 0; 2296 starget = scsi_target(sdev);
2261 if (!(pTarget = hd->Targets[sdev->id])) 2297 vtarget = starget->hostdata;
2262 return 0; 2298
2263 2299 if (hd->ioc->bus_type == SPI) {
2264 if (hd->ioc->bus_type == SCSI) { 2300 if (vtarget->tflags & MPT_TARGET_FLAGS_VALID_INQUIRY) {
2265 if (pTarget->tflags & MPT_TARGET_FLAGS_VALID_INQUIRY) { 2301 if (!(vtarget->tflags & MPT_TARGET_FLAGS_Q_YES))
2266 if (!(pTarget->tflags & MPT_TARGET_FLAGS_Q_YES))
2267 max_depth = 1; 2302 max_depth = 1;
2268 else if (((pTarget->inq_data[0] & 0x1f) == 0x00) && 2303 else if (((vtarget->inq_data[0] & 0x1f) == 0x00) &&
2269 (pTarget->minSyncFactor <= MPT_ULTRA160 )) 2304 (vtarget->minSyncFactor <= MPT_ULTRA160 ))
2270 max_depth = MPT_SCSI_CMD_PER_DEV_HIGH; 2305 max_depth = MPT_SCSI_CMD_PER_DEV_HIGH;
2271 else 2306 else
2272 max_depth = MPT_SCSI_CMD_PER_DEV_LOW; 2307 max_depth = MPT_SCSI_CMD_PER_DEV_LOW;
@@ -2295,64 +2330,58 @@ mptscsih_change_queue_depth(struct scsi_device *sdev, int qdepth)
2295 * Return non-zero if fails. 2330 * Return non-zero if fails.
2296 */ 2331 */
2297int 2332int
2298mptscsih_slave_configure(struct scsi_device *device) 2333mptscsih_slave_configure(struct scsi_device *sdev)
2299{ 2334{
2300 struct Scsi_Host *sh = device->host; 2335 struct Scsi_Host *sh = sdev->host;
2301 VirtDevice *pTarget; 2336 VirtTarget *vtarget;
2337 VirtDevice *vdevice;
2338 struct scsi_target *starget;
2302 MPT_SCSI_HOST *hd = (MPT_SCSI_HOST *)sh->hostdata; 2339 MPT_SCSI_HOST *hd = (MPT_SCSI_HOST *)sh->hostdata;
2340 int indexed_lun, lun_index;
2303 2341
2304 if ((hd == NULL) || (hd->Targets == NULL)) { 2342 starget = scsi_target(sdev);
2305 return 0; 2343 vtarget = starget->hostdata;
2306 } 2344 vdevice = sdev->hostdata;
2307 2345
2308 dsprintk((MYIOC_s_INFO_FMT 2346 dsprintk((MYIOC_s_INFO_FMT
2309 "device @ %p, id=%d, LUN=%d, channel=%d\n", 2347 "device @ %p, id=%d, LUN=%d, channel=%d\n",
2310 hd->ioc->name, device, device->id, device->lun, device->channel)); 2348 hd->ioc->name, sdev, sdev->id, sdev->lun, sdev->channel));
2311 dsprintk((MYIOC_s_INFO_FMT 2349 if (hd->ioc->bus_type == SPI)
2312 "sdtr %d wdtr %d ppr %d inq length=%d\n", 2350 dsprintk((MYIOC_s_INFO_FMT
2313 hd->ioc->name, device->sdtr, device->wdtr, 2351 "sdtr %d wdtr %d ppr %d inq length=%d\n",
2314 device->ppr, device->inquiry_len)); 2352 hd->ioc->name, sdev->sdtr, sdev->wdtr,
2315 2353 sdev->ppr, sdev->inquiry_len));
2316 if (device->id > sh->max_id) { 2354
2355 if (sdev->id > sh->max_id) {
2317 /* error case, should never happen */ 2356 /* error case, should never happen */
2318 scsi_adjust_queue_depth(device, 0, 1); 2357 scsi_adjust_queue_depth(sdev, 0, 1);
2319 goto slave_configure_exit;
2320 }
2321
2322 pTarget = hd->Targets[device->id];
2323
2324 if (pTarget == NULL) {
2325 /* Driver doesn't know about this device.
2326 * Kernel may generate a "Dummy Lun 0" which
2327 * may become a real Lun if a
2328 * "scsi add-single-device" command is executed
2329 * while the driver is active (hot-plug a
2330 * device). LSI Raid controllers need
2331 * queue_depth set to DEV_HIGH for this reason.
2332 */
2333 scsi_adjust_queue_depth(device, MSG_SIMPLE_TAG,
2334 MPT_SCSI_CMD_PER_DEV_HIGH);
2335 goto slave_configure_exit; 2358 goto slave_configure_exit;
2336 } 2359 }
2337 2360
2338 mptscsih_initTarget(hd, device->channel, device->id, device->lun, 2361 vdevice->configured_lun=1;
2339 device->inquiry, device->inquiry_len ); 2362 lun_index = (vdevice->lun >> 5); /* 32 luns per lun_index */
2340 mptscsih_change_queue_depth(device, MPT_SCSI_CMD_PER_DEV_HIGH); 2363 indexed_lun = (vdevice->lun % 32);
2364 vtarget->luns[lun_index] |= (1 << indexed_lun);
2365 mptscsih_initTarget(hd, vtarget, sdev->lun, sdev->inquiry,
2366 sdev->inquiry_len );
2367 mptscsih_change_queue_depth(sdev, MPT_SCSI_CMD_PER_DEV_HIGH);
2341 2368
2342 dsprintk((MYIOC_s_INFO_FMT 2369 dsprintk((MYIOC_s_INFO_FMT
2343 "Queue depth=%d, tflags=%x\n", 2370 "Queue depth=%d, tflags=%x\n",
2344 hd->ioc->name, device->queue_depth, pTarget->tflags)); 2371 hd->ioc->name, sdev->queue_depth, vtarget->tflags));
2345 2372
2346 dsprintk((MYIOC_s_INFO_FMT 2373 if (hd->ioc->bus_type == SPI)
2347 "negoFlags=%x, maxOffset=%x, SyncFactor=%x\n", 2374 dsprintk((MYIOC_s_INFO_FMT
2348 hd->ioc->name, pTarget->negoFlags, pTarget->maxOffset, pTarget->minSyncFactor)); 2375 "negoFlags=%x, maxOffset=%x, SyncFactor=%x\n",
2376 hd->ioc->name, vtarget->negoFlags, vtarget->maxOffset,
2377 vtarget->minSyncFactor));
2349 2378
2350slave_configure_exit: 2379slave_configure_exit:
2351 2380
2352 dsprintk((MYIOC_s_INFO_FMT 2381 dsprintk((MYIOC_s_INFO_FMT
2353 "tagged %d, simple %d, ordered %d\n", 2382 "tagged %d, simple %d, ordered %d\n",
2354 hd->ioc->name,device->tagged_supported, device->simple_tags, 2383 hd->ioc->name,sdev->tagged_supported, sdev->simple_tags,
2355 device->ordered_tags)); 2384 sdev->ordered_tags));
2356 2385
2357 return 0; 2386 return 0;
2358} 2387}
@@ -2370,16 +2399,14 @@ slave_configure_exit:
2370static void 2399static void
2371mptscsih_copy_sense_data(struct scsi_cmnd *sc, MPT_SCSI_HOST *hd, MPT_FRAME_HDR *mf, SCSIIOReply_t *pScsiReply) 2400mptscsih_copy_sense_data(struct scsi_cmnd *sc, MPT_SCSI_HOST *hd, MPT_FRAME_HDR *mf, SCSIIOReply_t *pScsiReply)
2372{ 2401{
2373 VirtDevice *target; 2402 VirtDevice *vdev;
2374 SCSIIORequest_t *pReq; 2403 SCSIIORequest_t *pReq;
2375 u32 sense_count = le32_to_cpu(pScsiReply->SenseCount); 2404 u32 sense_count = le32_to_cpu(pScsiReply->SenseCount);
2376 int index;
2377 2405
2378 /* Get target structure 2406 /* Get target structure
2379 */ 2407 */
2380 pReq = (SCSIIORequest_t *) mf; 2408 pReq = (SCSIIORequest_t *) mf;
2381 index = (int) pReq->TargetID; 2409 vdev = sc->device->hostdata;
2382 target = hd->Targets[index];
2383 2410
2384 if (sense_count) { 2411 if (sense_count) {
2385 u8 *sense_data; 2412 u8 *sense_data;
@@ -2393,7 +2420,7 @@ mptscsih_copy_sense_data(struct scsi_cmnd *sc, MPT_SCSI_HOST *hd, MPT_FRAME_HDR
2393 /* Log SMART data (asc = 0x5D, non-IM case only) if required. 2420 /* Log SMART data (asc = 0x5D, non-IM case only) if required.
2394 */ 2421 */
2395 if ((hd->ioc->events) && (hd->ioc->eventTypes & (1 << MPI_EVENT_SCSI_DEVICE_STATUS_CHANGE))) { 2422 if ((hd->ioc->events) && (hd->ioc->eventTypes & (1 << MPI_EVENT_SCSI_DEVICE_STATUS_CHANGE))) {
2396 if ((sense_data[12] == 0x5D) && (target->raidVolume == 0)) { 2423 if ((sense_data[12] == 0x5D) && (vdev->vtarget->raidVolume == 0)) {
2397 int idx; 2424 int idx;
2398 MPT_ADAPTER *ioc = hd->ioc; 2425 MPT_ADAPTER *ioc = hd->ioc;
2399 2426
@@ -2403,7 +2430,7 @@ mptscsih_copy_sense_data(struct scsi_cmnd *sc, MPT_SCSI_HOST *hd, MPT_FRAME_HDR
2403 2430
2404 ioc->events[idx].data[0] = (pReq->LUN[1] << 24) || 2431 ioc->events[idx].data[0] = (pReq->LUN[1] << 24) ||
2405 (MPI_EVENT_SCSI_DEV_STAT_RC_SMART_DATA << 16) || 2432 (MPI_EVENT_SCSI_DEV_STAT_RC_SMART_DATA << 16) ||
2406 (pReq->Bus << 8) || pReq->TargetID; 2433 (sc->device->channel << 8) || sc->device->id;
2407 2434
2408 ioc->events[idx].data[1] = (sense_data[13] << 8) || sense_data[12]; 2435 ioc->events[idx].data[1] = (sense_data[13] << 8) || sense_data[12];
2409 2436
@@ -2503,9 +2530,9 @@ mptscsih_ioc_reset(MPT_ADAPTER *ioc, int reset_phase)
2503 /* 2. Chain Buffer initialization 2530 /* 2. Chain Buffer initialization
2504 */ 2531 */
2505 2532
2506 /* 4. Renegotiate to all devices, if SCSI 2533 /* 4. Renegotiate to all devices, if SPI
2507 */ 2534 */
2508 if (ioc->bus_type == SCSI) { 2535 if (ioc->bus_type == SPI) {
2509 dnegoprintk(("writeSDP1: ALL_IDS USE_NVRAM\n")); 2536 dnegoprintk(("writeSDP1: ALL_IDS USE_NVRAM\n"));
2510 mptscsih_writeSDP1(hd, 0, 0, MPT_SCSICFG_ALL_IDS | MPT_SCSICFG_USE_NVRAM); 2537 mptscsih_writeSDP1(hd, 0, 0, MPT_SCSICFG_ALL_IDS | MPT_SCSICFG_USE_NVRAM);
2511 } 2538 }
@@ -2534,7 +2561,7 @@ mptscsih_ioc_reset(MPT_ADAPTER *ioc, int reset_phase)
2534 2561
2535 /* 7. Set flag to force DV and re-read IOC Page 3 2562 /* 7. Set flag to force DV and re-read IOC Page 3
2536 */ 2563 */
2537 if (ioc->bus_type == SCSI) { 2564 if (ioc->bus_type == SPI) {
2538 ioc->spi_data.forceDv = MPT_SCSICFG_NEED_DV | MPT_SCSICFG_RELOAD_IOC_PG3; 2565 ioc->spi_data.forceDv = MPT_SCSICFG_NEED_DV | MPT_SCSICFG_RELOAD_IOC_PG3;
2539 ddvtprintk(("Set reload IOC Pg3 Flag\n")); 2566 ddvtprintk(("Set reload IOC Pg3 Flag\n"));
2540 } 2567 }
@@ -2576,7 +2603,7 @@ mptscsih_event_process(MPT_ADAPTER *ioc, EventNotificationReply_t *pEvReply)
2576 break; 2603 break;
2577 case MPI_EVENT_IOC_BUS_RESET: /* 04 */ 2604 case MPI_EVENT_IOC_BUS_RESET: /* 04 */
2578 case MPI_EVENT_EXT_BUS_RESET: /* 05 */ 2605 case MPI_EVENT_EXT_BUS_RESET: /* 05 */
2579 if (hd && (ioc->bus_type == SCSI) && (hd->soft_resets < -1)) 2606 if (hd && (ioc->bus_type == SPI) && (hd->soft_resets < -1))
2580 hd->soft_resets++; 2607 hd->soft_resets++;
2581 break; 2608 break;
2582 case MPI_EVENT_LOGOUT: /* 09 */ 2609 case MPI_EVENT_LOGOUT: /* 09 */
@@ -2597,11 +2624,11 @@ mptscsih_event_process(MPT_ADAPTER *ioc, EventNotificationReply_t *pEvReply)
2597 2624
2598 case MPI_EVENT_INTEGRATED_RAID: /* 0B */ 2625 case MPI_EVENT_INTEGRATED_RAID: /* 0B */
2599 { 2626 {
2627#ifdef MPTSCSIH_ENABLE_DOMAIN_VALIDATION
2600 pMpiEventDataRaid_t pRaidEventData = 2628 pMpiEventDataRaid_t pRaidEventData =
2601 (pMpiEventDataRaid_t) pEvReply->Data; 2629 (pMpiEventDataRaid_t) pEvReply->Data;
2602#ifdef MPTSCSIH_ENABLE_DOMAIN_VALIDATION
2603 /* Domain Validation Needed */ 2630 /* Domain Validation Needed */
2604 if (ioc->bus_type == SCSI && 2631 if (ioc->bus_type == SPI &&
2605 pRaidEventData->ReasonCode == 2632 pRaidEventData->ReasonCode ==
2606 MPI_EVENT_RAID_RC_DOMAIN_VAL_NEEDED) 2633 MPI_EVENT_RAID_RC_DOMAIN_VAL_NEEDED)
2607 mptscsih_set_dvflags_raid(hd, pRaidEventData->PhysDiskNum); 2634 mptscsih_set_dvflags_raid(hd, pRaidEventData->PhysDiskNum);
@@ -2632,8 +2659,7 @@ mptscsih_event_process(MPT_ADAPTER *ioc, EventNotificationReply_t *pEvReply)
2632/* 2659/*
2633 * mptscsih_initTarget - Target, LUN alloc/free functionality. 2660 * mptscsih_initTarget - Target, LUN alloc/free functionality.
2634 * @hd: Pointer to MPT_SCSI_HOST structure 2661 * @hd: Pointer to MPT_SCSI_HOST structure
2635 * @bus_id: Bus number (?) 2662 * @vtarget: per target private data
2636 * @target_id: SCSI target id
2637 * @lun: SCSI LUN id 2663 * @lun: SCSI LUN id
2638 * @data: Pointer to data 2664 * @data: Pointer to data
2639 * @dlen: Number of INQUIRY bytes 2665 * @dlen: Number of INQUIRY bytes
@@ -2646,15 +2672,14 @@ mptscsih_event_process(MPT_ADAPTER *ioc, EventNotificationReply_t *pEvReply)
2646 * 2672 *
2647 */ 2673 */
2648static void 2674static void
2649mptscsih_initTarget(MPT_SCSI_HOST *hd, int bus_id, int target_id, u8 lun, char *data, int dlen) 2675mptscsih_initTarget(MPT_SCSI_HOST *hd, VirtTarget *vtarget, u8 lun, char *data, int dlen)
2650{ 2676{
2651 int indexed_lun, lun_index;
2652 VirtDevice *vdev;
2653 SpiCfgData *pSpi; 2677 SpiCfgData *pSpi;
2654 char data_56; 2678 char data_56;
2679 int inq_len;
2655 2680
2656 dinitprintk((MYIOC_s_INFO_FMT "initTarget bus=%d id=%d lun=%d hd=%p\n", 2681 dinitprintk((MYIOC_s_INFO_FMT "initTarget bus=%d id=%d lun=%d hd=%p\n",
2657 hd->ioc->name, bus_id, target_id, lun, hd)); 2682 hd->ioc->name, vtarget->bus_id, vtarget->target_id, lun, hd));
2658 2683
2659 /* 2684 /*
2660 * If the peripheral qualifier filter is enabled then if the target reports a 0x1 2685 * If the peripheral qualifier filter is enabled then if the target reports a 0x1
@@ -2674,75 +2699,68 @@ mptscsih_initTarget(MPT_SCSI_HOST *hd, int bus_id, int target_id, u8 lun, char *
2674 if (data[0] & 0xe0) 2699 if (data[0] & 0xe0)
2675 return; 2700 return;
2676 2701
2677 if ((vdev = hd->Targets[target_id]) == NULL) { 2702 if (vtarget == NULL)
2678 return; 2703 return;
2679 }
2680 2704
2681 lun_index = (lun >> 5); /* 32 luns per lun_index */ 2705 if (data)
2682 indexed_lun = (lun % 32); 2706 vtarget->type = data[0];
2683 vdev->luns[lun_index] |= (1 << indexed_lun); 2707
2684 2708 if (hd->ioc->bus_type != SPI)
2685 if (hd->ioc->bus_type == SCSI) { 2709 return;
2686 if ((data[0] == TYPE_PROCESSOR) && (hd->ioc->spi_data.Saf_Te)) { 2710
2687 /* Treat all Processors as SAF-TE if 2711 if ((data[0] == TYPE_PROCESSOR) && (hd->ioc->spi_data.Saf_Te)) {
2688 * command line option is set */ 2712 /* Treat all Processors as SAF-TE if
2689 vdev->tflags |= MPT_TARGET_FLAGS_SAF_TE_ISSUED; 2713 * command line option is set */
2690 mptscsih_writeIOCPage4(hd, target_id, bus_id); 2714 vtarget->tflags |= MPT_TARGET_FLAGS_SAF_TE_ISSUED;
2691 }else if ((data[0] == TYPE_PROCESSOR) && 2715 mptscsih_writeIOCPage4(hd, vtarget->target_id, vtarget->bus_id);
2692 !(vdev->tflags & MPT_TARGET_FLAGS_SAF_TE_ISSUED )) { 2716 }else if ((data[0] == TYPE_PROCESSOR) &&
2693 if ( dlen > 49 ) { 2717 !(vtarget->tflags & MPT_TARGET_FLAGS_SAF_TE_ISSUED )) {
2694 vdev->tflags |= MPT_TARGET_FLAGS_VALID_INQUIRY; 2718 if ( dlen > 49 ) {
2695 if ( data[44] == 'S' && 2719 vtarget->tflags |= MPT_TARGET_FLAGS_VALID_INQUIRY;
2696 data[45] == 'A' && 2720 if ( data[44] == 'S' &&
2697 data[46] == 'F' && 2721 data[45] == 'A' &&
2698 data[47] == '-' && 2722 data[46] == 'F' &&
2699 data[48] == 'T' && 2723 data[47] == '-' &&
2700 data[49] == 'E' ) { 2724 data[48] == 'T' &&
2701 vdev->tflags |= MPT_TARGET_FLAGS_SAF_TE_ISSUED; 2725 data[49] == 'E' ) {
2702 mptscsih_writeIOCPage4(hd, target_id, bus_id); 2726 vtarget->tflags |= MPT_TARGET_FLAGS_SAF_TE_ISSUED;
2703 } 2727 mptscsih_writeIOCPage4(hd, vtarget->target_id, vtarget->bus_id);
2704 } 2728 }
2705 } 2729 }
2706 if (!(vdev->tflags & MPT_TARGET_FLAGS_VALID_INQUIRY)) { 2730 }
2707 if ( dlen > 8 ) { 2731 if (!(vtarget->tflags & MPT_TARGET_FLAGS_VALID_INQUIRY)) {
2708 memcpy (vdev->inq_data, data, 8); 2732 inq_len = dlen < 8 ? dlen : 8;
2709 } else { 2733 memcpy (vtarget->inq_data, data, inq_len);
2710 memcpy (vdev->inq_data, data, dlen); 2734 /* If have not done DV, set the DV flag.
2711 } 2735 */
2736 pSpi = &hd->ioc->spi_data;
2737 if ((data[0] == TYPE_TAPE) || (data[0] == TYPE_PROCESSOR)) {
2738 if (pSpi->dvStatus[vtarget->target_id] & MPT_SCSICFG_DV_NOT_DONE)
2739 pSpi->dvStatus[vtarget->target_id] |= MPT_SCSICFG_NEED_DV;
2740 }
2741 vtarget->tflags |= MPT_TARGET_FLAGS_VALID_INQUIRY;
2712 2742
2713 /* If have not done DV, set the DV flag. 2743 data_56 = 0x0F; /* Default to full capabilities if Inq data length is < 57 */
2744 if (dlen > 56) {
2745 if ( (!(vtarget->tflags & MPT_TARGET_FLAGS_VALID_56))) {
2746 /* Update the target capabilities
2714 */ 2747 */
2715 pSpi = &hd->ioc->spi_data; 2748 data_56 = data[56];
2716 if ((data[0] == TYPE_TAPE) || (data[0] == TYPE_PROCESSOR)) { 2749 vtarget->tflags |= MPT_TARGET_FLAGS_VALID_56;
2717 if (pSpi->dvStatus[target_id] & MPT_SCSICFG_DV_NOT_DONE)
2718 pSpi->dvStatus[target_id] |= MPT_SCSICFG_NEED_DV;
2719 }
2720
2721 vdev->tflags |= MPT_TARGET_FLAGS_VALID_INQUIRY;
2722
2723
2724 data_56 = 0x0F; /* Default to full capabilities if Inq data length is < 57 */
2725 if (dlen > 56) {
2726 if ( (!(vdev->tflags & MPT_TARGET_FLAGS_VALID_56))) {
2727 /* Update the target capabilities
2728 */
2729 data_56 = data[56];
2730 vdev->tflags |= MPT_TARGET_FLAGS_VALID_56;
2731 }
2732 } 2750 }
2733 mptscsih_setTargetNegoParms(hd, vdev, data_56); 2751 }
2734 } else { 2752 mptscsih_setTargetNegoParms(hd, vtarget, data_56);
2735 /* Initial Inquiry may not request enough data bytes to 2753 } else {
2736 * obtain byte 57. DV will; if target doesn't return 2754 /* Initial Inquiry may not request enough data bytes to
2737 * at least 57 bytes, data[56] will be zero. */ 2755 * obtain byte 57. DV will; if target doesn't return
2738 if (dlen > 56) { 2756 * at least 57 bytes, data[56] will be zero. */
2739 if ( (!(vdev->tflags & MPT_TARGET_FLAGS_VALID_56))) { 2757 if (dlen > 56) {
2740 /* Update the target capabilities 2758 if ( (!(vtarget->tflags & MPT_TARGET_FLAGS_VALID_56))) {
2741 */ 2759 /* Update the target capabilities
2742 data_56 = data[56]; 2760 */
2743 vdev->tflags |= MPT_TARGET_FLAGS_VALID_56; 2761 data_56 = data[56];
2744 mptscsih_setTargetNegoParms(hd, vdev, data_56); 2762 vtarget->tflags |= MPT_TARGET_FLAGS_VALID_56;
2745 } 2763 mptscsih_setTargetNegoParms(hd, vtarget, data_56);
2746 } 2764 }
2747 } 2765 }
2748 } 2766 }
@@ -2755,12 +2773,12 @@ mptscsih_initTarget(MPT_SCSI_HOST *hd, int bus_id, int target_id, u8 lun, char *
2755 * 2773 *
2756 */ 2774 */
2757static void 2775static void
2758mptscsih_setTargetNegoParms(MPT_SCSI_HOST *hd, VirtDevice *target, char byte56) 2776mptscsih_setTargetNegoParms(MPT_SCSI_HOST *hd, VirtTarget *target, char byte56)
2759{ 2777{
2760 SpiCfgData *pspi_data = &hd->ioc->spi_data; 2778 SpiCfgData *pspi_data = &hd->ioc->spi_data;
2761 int id = (int) target->target_id; 2779 int id = (int) target->target_id;
2762 int nvram; 2780 int nvram;
2763 VirtDevice *vdev; 2781 VirtTarget *vtarget;
2764 int ii; 2782 int ii;
2765 u8 width = MPT_NARROW; 2783 u8 width = MPT_NARROW;
2766 u8 factor = MPT_ASYNC; 2784 u8 factor = MPT_ASYNC;
@@ -2905,9 +2923,9 @@ mptscsih_setTargetNegoParms(MPT_SCSI_HOST *hd, VirtDevice *target, char byte56)
2905 2923
2906 ddvtprintk((KERN_INFO "Disabling QAS due to noQas=%02x on id=%d!\n", noQas, id)); 2924 ddvtprintk((KERN_INFO "Disabling QAS due to noQas=%02x on id=%d!\n", noQas, id));
2907 for (ii = 0; ii < id; ii++) { 2925 for (ii = 0; ii < id; ii++) {
2908 if ( (vdev = hd->Targets[ii]) ) { 2926 if ( (vtarget = hd->Targets[ii]) ) {
2909 vdev->negoFlags |= MPT_TARGET_NO_NEGO_QAS; 2927 vtarget->negoFlags |= MPT_TARGET_NO_NEGO_QAS;
2910 mptscsih_writeSDP1(hd, 0, ii, vdev->negoFlags); 2928 mptscsih_writeSDP1(hd, 0, ii, vtarget->negoFlags);
2911 } 2929 }
2912 } 2930 }
2913 } 2931 }
@@ -2926,105 +2944,17 @@ mptscsih_setTargetNegoParms(MPT_SCSI_HOST *hd, VirtDevice *target, char byte56)
2926} 2944}
2927 2945
2928/*=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=*/ 2946/*=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=*/
2929/* If DV disabled (negoNvram set to USE_NVARM) or if not LUN 0, return.
2930 * Else set the NEED_DV flag after Read Capacity Issued (disks)
2931 * or Mode Sense (cdroms).
2932 *
2933 * Tapes, initTarget will set this flag on completion of Inquiry command.
2934 * Called only if DV_NOT_DONE flag is set
2935 */
2936static void
2937mptscsih_set_dvflags(MPT_SCSI_HOST *hd, SCSIIORequest_t *pReq)
2938{
2939 MPT_ADAPTER *ioc = hd->ioc;
2940 u8 cmd;
2941 SpiCfgData *pSpi;
2942
2943 ddvtprintk((MYIOC_s_NOTE_FMT
2944 " set_dvflags: id=%d lun=%d negoNvram=%x cmd=%x\n",
2945 hd->ioc->name, pReq->TargetID, pReq->LUN[1], hd->negoNvram, pReq->CDB[0]));
2946
2947 if ((pReq->LUN[1] != 0) || (hd->negoNvram != 0))
2948 return;
2949
2950 cmd = pReq->CDB[0];
2951
2952 if ((cmd == READ_CAPACITY) || (cmd == MODE_SENSE)) {
2953 pSpi = &ioc->spi_data;
2954 if ((ioc->raid_data.isRaid & (1 << pReq->TargetID)) && ioc->raid_data.pIocPg3) {
2955 /* Set NEED_DV for all hidden disks
2956 */
2957 Ioc3PhysDisk_t *pPDisk = ioc->raid_data.pIocPg3->PhysDisk;
2958 int numPDisk = ioc->raid_data.pIocPg3->NumPhysDisks;
2959
2960 while (numPDisk) {
2961 pSpi->dvStatus[pPDisk->PhysDiskID] |= MPT_SCSICFG_NEED_DV;
2962 ddvtprintk(("NEED_DV set for phys disk id %d\n", pPDisk->PhysDiskID));
2963 pPDisk++;
2964 numPDisk--;
2965 }
2966 }
2967 pSpi->dvStatus[pReq->TargetID] |= MPT_SCSICFG_NEED_DV;
2968 ddvtprintk(("NEED_DV set for visible disk id %d\n", pReq->TargetID));
2969 }
2970}
2971
2972/* mptscsih_raid_set_dv_flags()
2973 *
2974 * New or replaced disk. Set DV flag and schedule DV.
2975 */
2976static void
2977mptscsih_set_dvflags_raid(MPT_SCSI_HOST *hd, int id)
2978{
2979 MPT_ADAPTER *ioc = hd->ioc;
2980 SpiCfgData *pSpi = &ioc->spi_data;
2981 Ioc3PhysDisk_t *pPDisk;
2982 int numPDisk;
2983
2984 if (hd->negoNvram != 0)
2985 return;
2986
2987 ddvtprintk(("DV requested for phys disk id %d\n", id));
2988 if (ioc->raid_data.pIocPg3) {
2989 pPDisk = ioc->raid_data.pIocPg3->PhysDisk;
2990 numPDisk = ioc->raid_data.pIocPg3->NumPhysDisks;
2991 while (numPDisk) {
2992 if (id == pPDisk->PhysDiskNum) {
2993 pSpi->dvStatus[pPDisk->PhysDiskID] =
2994 (MPT_SCSICFG_NEED_DV | MPT_SCSICFG_DV_NOT_DONE);
2995 pSpi->forceDv = MPT_SCSICFG_NEED_DV;
2996 ddvtprintk(("NEED_DV set for phys disk id %d\n",
2997 pPDisk->PhysDiskID));
2998 break;
2999 }
3000 pPDisk++;
3001 numPDisk--;
3002 }
3003
3004 if (numPDisk == 0) {
3005 /* The physical disk that needs DV was not found
3006 * in the stored IOC Page 3. The driver must reload
3007 * this page. DV routine will set the NEED_DV flag for
3008 * all phys disks that have DV_NOT_DONE set.
3009 */
3010 pSpi->forceDv = MPT_SCSICFG_NEED_DV | MPT_SCSICFG_RELOAD_IOC_PG3;
3011 ddvtprintk(("phys disk %d not found. Setting reload IOC Pg3 Flag\n",id));
3012 }
3013 }
3014}
3015
3016/*=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=*/
3017/* 2947/*
3018 * If no Target, bus reset on 1st I/O. Set the flag to 2948 * If no Target, bus reset on 1st I/O. Set the flag to
3019 * prevent any future negotiations to this device. 2949 * prevent any future negotiations to this device.
3020 */ 2950 */
3021static void 2951static void
3022mptscsih_no_negotiate(MPT_SCSI_HOST *hd, int target_id) 2952mptscsih_no_negotiate(MPT_SCSI_HOST *hd, struct scsi_cmnd *sc)
3023{ 2953{
2954 VirtDevice *vdev;
3024 2955
3025 if ((hd->Targets) && (hd->Targets[target_id] == NULL)) 2956 if ((vdev = sc->device->hostdata) != NULL)
3026 hd->ioc->spi_data.dvStatus[target_id] |= MPT_SCSICFG_BLK_NEGO; 2957 hd->ioc->spi_data.dvStatus[vdev->target_id] |= MPT_SCSICFG_BLK_NEGO;
3027
3028 return; 2958 return;
3029} 2959}
3030 2960
@@ -3100,7 +3030,7 @@ mptscsih_writeSDP1(MPT_SCSI_HOST *hd, int portnum, int target_id, int flags)
3100 MPT_ADAPTER *ioc = hd->ioc; 3030 MPT_ADAPTER *ioc = hd->ioc;
3101 Config_t *pReq; 3031 Config_t *pReq;
3102 SCSIDevicePage1_t *pData; 3032 SCSIDevicePage1_t *pData;
3103 VirtDevice *pTarget=NULL; 3033 VirtTarget *vtarget=NULL;
3104 MPT_FRAME_HDR *mf; 3034 MPT_FRAME_HDR *mf;
3105 dma_addr_t dataDma; 3035 dma_addr_t dataDma;
3106 u16 req_idx; 3036 u16 req_idx;
@@ -3180,11 +3110,11 @@ mptscsih_writeSDP1(MPT_SCSI_HOST *hd, int portnum, int target_id, int flags)
3180 /* If id is not a raid volume, get the updated 3110 /* If id is not a raid volume, get the updated
3181 * transmission settings from the target structure. 3111 * transmission settings from the target structure.
3182 */ 3112 */
3183 if (hd->Targets && (pTarget = hd->Targets[id]) && !pTarget->raidVolume) { 3113 if (hd->Targets && (vtarget = hd->Targets[id]) && !vtarget->raidVolume) {
3184 width = pTarget->maxWidth; 3114 width = vtarget->maxWidth;
3185 factor = pTarget->minSyncFactor; 3115 factor = vtarget->minSyncFactor;
3186 offset = pTarget->maxOffset; 3116 offset = vtarget->maxOffset;
3187 negoFlags = pTarget->negoFlags; 3117 negoFlags = vtarget->negoFlags;
3188 } 3118 }
3189 3119
3190#ifdef MPTSCSIH_ENABLE_DOMAIN_VALIDATION 3120#ifdef MPTSCSIH_ENABLE_DOMAIN_VALIDATION
@@ -3904,149 +3834,139 @@ mptscsih_do_cmd(MPT_SCSI_HOST *hd, INTERNAL_CMD *io)
3904 3834
3905/*=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=*/ 3835/*=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=*/
3906/** 3836/**
3907 * mptscsih_synchronize_cache - Send SYNCHRONIZE_CACHE to all disks. 3837 * mptscsih_negotiate_to_asyn_narrow - Restore devices to default state
3908 * @hd: Pointer to MPT_SCSI_HOST structure 3838 * @hd: Pointer to a SCSI HOST structure
3909 * @portnum: IOC port number 3839 * @vtarget: per device private data
3910 * 3840 *
3911 * Uses the ISR, but with special processing. 3841 * Uses the ISR, but with special processing.
3912 * MUST be single-threaded. 3842 * MUST be single-threaded.
3913 * 3843 *
3914 * Return: 0 on completion
3915 */ 3844 */
3916static int 3845static void
3917mptscsih_synchronize_cache(MPT_SCSI_HOST *hd, int portnum) 3846mptscsih_negotiate_to_asyn_narrow(MPT_SCSI_HOST *hd, VirtTarget *vtarget)
3918{ 3847{
3919 MPT_ADAPTER *ioc= hd->ioc; 3848 MPT_ADAPTER *ioc= hd->ioc;
3920 VirtDevice *pTarget; 3849 SCSIDevicePage1_t *pcfg1Data;
3921 SCSIDevicePage1_t *pcfg1Data = NULL;
3922 INTERNAL_CMD iocmd;
3923 CONFIGPARMS cfg; 3850 CONFIGPARMS cfg;
3924 dma_addr_t cfg1_dma_addr = -1; 3851 dma_addr_t cfg1_dma_addr;
3925 ConfigPageHeader_t header1; 3852 ConfigPageHeader_t header;
3926 int bus = 0; 3853 int id;
3927 int id = 0; 3854 int requested, configuration, data,i;
3928 int lun;
3929 int indexed_lun, lun_index;
3930 int hostId = ioc->pfacts[portnum].PortSCSIID;
3931 int max_id;
3932 int requested, configuration, data;
3933 int doConfig = 0;
3934 u8 flags, factor; 3855 u8 flags, factor;
3935 3856
3936 max_id = ioc->sh->max_id - 1; 3857 if (ioc->bus_type != SPI)
3937 3858 return;
3938 /* Following parameters will not change
3939 * in this routine.
3940 */
3941 iocmd.cmd = SYNCHRONIZE_CACHE;
3942 iocmd.flags = 0;
3943 iocmd.physDiskNum = -1;
3944 iocmd.data = NULL;
3945 iocmd.data_dma = -1;
3946 iocmd.size = 0;
3947 iocmd.rsvd = iocmd.rsvd2 = 0;
3948
3949 /* No SCSI hosts
3950 */
3951 if (hd->Targets == NULL)
3952 return 0;
3953
3954 /* Skip the host
3955 */
3956 if (id == hostId)
3957 id++;
3958
3959 /* Write SDP1 for all SCSI devices
3960 * Alloc memory and set up config buffer
3961 */
3962 if (ioc->bus_type == SCSI) {
3963 if (ioc->spi_data.sdp1length > 0) {
3964 pcfg1Data = (SCSIDevicePage1_t *)pci_alloc_consistent(ioc->pcidev,
3965 ioc->spi_data.sdp1length * 4, &cfg1_dma_addr);
3966
3967 if (pcfg1Data != NULL) {
3968 doConfig = 1;
3969 header1.PageVersion = ioc->spi_data.sdp1version;
3970 header1.PageLength = ioc->spi_data.sdp1length;
3971 header1.PageNumber = 1;
3972 header1.PageType = MPI_CONFIG_PAGETYPE_SCSI_DEVICE;
3973 cfg.cfghdr.hdr = &header1;
3974 cfg.physAddr = cfg1_dma_addr;
3975 cfg.action = MPI_CONFIG_ACTION_PAGE_WRITE_CURRENT;
3976 cfg.dir = 1;
3977 cfg.timeout = 0;
3978 }
3979 }
3980 }
3981 3859
3982 /* loop through all devices on this port 3860 if (!ioc->spi_data.sdp1length)
3983 */ 3861 return;
3984 while (bus < MPT_MAX_BUS) {
3985 iocmd.bus = bus;
3986 iocmd.id = id;
3987 pTarget = hd->Targets[(int)id];
3988 3862
3989 if (doConfig) { 3863 pcfg1Data = (SCSIDevicePage1_t *)pci_alloc_consistent(ioc->pcidev,
3864 ioc->spi_data.sdp1length * 4, &cfg1_dma_addr);
3990 3865
3991 /* Set the negotiation flags */ 3866 if (pcfg1Data == NULL)
3992 if (pTarget && (pTarget = hd->Targets[id]) && !pTarget->raidVolume) { 3867 return;
3993 flags = pTarget->negoFlags;
3994 } else {
3995 flags = hd->ioc->spi_data.noQas;
3996 if (hd->ioc->spi_data.nvram && (hd->ioc->spi_data.nvram[id] != MPT_HOST_NVRAM_INVALID)) {
3997 data = hd->ioc->spi_data.nvram[id];
3998 3868
3999 if (data & MPT_NVRAM_WIDE_DISABLE) 3869 header.PageVersion = ioc->spi_data.sdp1version;
4000 flags |= MPT_TARGET_NO_NEGO_WIDE; 3870 header.PageLength = ioc->spi_data.sdp1length;
3871 header.PageNumber = 1;
3872 header.PageType = MPI_CONFIG_PAGETYPE_SCSI_DEVICE;
3873 cfg.cfghdr.hdr = &header;
3874 cfg.physAddr = cfg1_dma_addr;
3875 cfg.action = MPI_CONFIG_ACTION_PAGE_WRITE_CURRENT;
3876 cfg.dir = 1;
3877 cfg.timeout = 0;
4001 3878
4002 factor = (data & MPT_NVRAM_SYNC_MASK) >> MPT_NVRAM_SYNC_SHIFT; 3879 if (vtarget->raidVolume && ioc->raid_data.pIocPg3) {
4003 if ((factor == 0) || (factor == MPT_ASYNC)) 3880 for (i = 0; i < ioc->raid_data.pIocPg3->NumPhysDisks; i++) {
4004 flags |= MPT_TARGET_NO_NEGO_SYNC; 3881 id = ioc->raid_data.pIocPg3->PhysDisk[i].PhysDiskID;
4005 } 3882 flags = hd->ioc->spi_data.noQas;
3883 if (hd->ioc->spi_data.nvram && (hd->ioc->spi_data.nvram[id] != MPT_HOST_NVRAM_INVALID)) {
3884 data = hd->ioc->spi_data.nvram[id];
3885 if (data & MPT_NVRAM_WIDE_DISABLE)
3886 flags |= MPT_TARGET_NO_NEGO_WIDE;
3887 factor = (data & MPT_NVRAM_SYNC_MASK) >> MPT_NVRAM_SYNC_SHIFT;
3888 if ((factor == 0) || (factor == MPT_ASYNC))
3889 flags |= MPT_TARGET_NO_NEGO_SYNC;
4006 } 3890 }
4007
4008 /* Force to async, narrow */
4009 mptscsih_setDevicePage1Flags(0, MPT_ASYNC, 0, &requested, 3891 mptscsih_setDevicePage1Flags(0, MPT_ASYNC, 0, &requested,
4010 &configuration, flags); 3892 &configuration, flags);
4011 dnegoprintk(("syncronize cache: id=%d width=0 factor=MPT_ASYNC " 3893 dnegoprintk(("syncronize cache: id=%d width=0 factor=MPT_ASYNC "
4012 "offset=0 negoFlags=%x request=%x config=%x\n", 3894 "offset=0 negoFlags=%x request=%x config=%x\n",
4013 id, flags, requested, configuration)); 3895 id, flags, requested, configuration));
4014 pcfg1Data->RequestedParameters = cpu_to_le32(requested); 3896 pcfg1Data->RequestedParameters = cpu_to_le32(requested);
4015 pcfg1Data->Reserved = 0; 3897 pcfg1Data->Reserved = 0;
4016 pcfg1Data->Configuration = cpu_to_le32(configuration); 3898 pcfg1Data->Configuration = cpu_to_le32(configuration);
4017 cfg.pageAddr = (bus<<8) | id; 3899 cfg.pageAddr = (vtarget->bus_id<<8) | id;
4018 mpt_config(hd->ioc, &cfg); 3900 mpt_config(hd->ioc, &cfg);
4019 } 3901 }
3902 } else {
3903 flags = vtarget->negoFlags;
3904 mptscsih_setDevicePage1Flags(0, MPT_ASYNC, 0, &requested,
3905 &configuration, flags);
3906 dnegoprintk(("syncronize cache: id=%d width=0 factor=MPT_ASYNC "
3907 "offset=0 negoFlags=%x request=%x config=%x\n",
3908 vtarget->target_id, flags, requested, configuration));
3909 pcfg1Data->RequestedParameters = cpu_to_le32(requested);
3910 pcfg1Data->Reserved = 0;
3911 pcfg1Data->Configuration = cpu_to_le32(configuration);
3912 cfg.pageAddr = (vtarget->bus_id<<8) | vtarget->target_id;
3913 mpt_config(hd->ioc, &cfg);
3914 }
4020 3915
4021 /* If target Ptr NULL or if this target is NOT a disk, skip. 3916 if (pcfg1Data)
4022 */ 3917 pci_free_consistent(ioc->pcidev, header.PageLength * 4, pcfg1Data, cfg1_dma_addr);
4023 if ((pTarget) && (pTarget->inq_data[0] == TYPE_DISK)){ 3918}
4024 for (lun=0; lun <= MPT_LAST_LUN; lun++) {
4025 /* If LUN present, issue the command
4026 */
4027 lun_index = (lun >> 5); /* 32 luns per lun_index */
4028 indexed_lun = (lun % 32);
4029 if (pTarget->luns[lun_index] & (1<<indexed_lun)) {
4030 iocmd.lun = lun;
4031 (void) mptscsih_do_cmd(hd, &iocmd);
4032 }
4033 }
4034 }
4035 3919
4036 /* get next relevant device */ 3920/*=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=*/
4037 id++; 3921/**
3922 * mptscsih_synchronize_cache - Send SYNCHRONIZE_CACHE to all disks.
3923 * @hd: Pointer to a SCSI HOST structure
3924 * @vtarget: per device private data
3925 * @lun: lun
3926 *
3927 * Uses the ISR, but with special processing.
3928 * MUST be single-threaded.
3929 *
3930 */
3931static void
3932mptscsih_synchronize_cache(MPT_SCSI_HOST *hd, VirtDevice *vdevice)
3933{
3934 INTERNAL_CMD iocmd;
4038 3935
4039 if (id == hostId) 3936 /* Following parameters will not change
4040 id++; 3937 * in this routine.
3938 */
3939 iocmd.cmd = SYNCHRONIZE_CACHE;
3940 iocmd.flags = 0;
3941 iocmd.physDiskNum = -1;
3942 iocmd.data = NULL;
3943 iocmd.data_dma = -1;
3944 iocmd.size = 0;
3945 iocmd.rsvd = iocmd.rsvd2 = 0;
3946 iocmd.bus = vdevice->bus_id;
3947 iocmd.id = vdevice->target_id;
3948 iocmd.lun = (u8)vdevice->lun;
4041 3949
4042 if (id > max_id) { 3950 if ((vdevice->vtarget->type & TYPE_DISK) &&
4043 id = 0; 3951 (vdevice->configured_lun))
4044 bus++; 3952 mptscsih_do_cmd(hd, &iocmd);
4045 } 3953}
4046 }
4047 3954
4048 if (pcfg1Data) { 3955/* Search IOC page 3 to determine if this is hidden physical disk
4049 pci_free_consistent(ioc->pcidev, header1.PageLength * 4, pcfg1Data, cfg1_dma_addr); 3956 */
3957/* Search IOC page 3 to determine if this is hidden physical disk
3958 */
3959static int
3960mptscsih_is_phys_disk(MPT_ADAPTER *ioc, int id)
3961{
3962 int i;
3963
3964 if (!ioc->raid_data.isRaid || !ioc->raid_data.pIocPg3)
3965 return 0;
3966
3967 for (i = 0; i < ioc->raid_data.pIocPg3->NumPhysDisks; i++) {
3968 if (id == ioc->raid_data.pIocPg3->PhysDisk[i].PhysDiskID)
3969 return 1;
4050 } 3970 }
4051 3971
4052 return 0; 3972 return 0;
@@ -4101,8 +4021,8 @@ mptscsih_domainValidation(void *arg)
4101 4021
4102 msleep(250); 4022 msleep(250);
4103 4023
4104 /* DV only to SCSI adapters */ 4024 /* DV only to SPI adapters */
4105 if (ioc->bus_type != SCSI) 4025 if (ioc->bus_type != SPI)
4106 continue; 4026 continue;
4107 4027
4108 /* Make sure everything looks ok */ 4028 /* Make sure everything looks ok */
@@ -4205,32 +4125,12 @@ mptscsih_domainValidation(void *arg)
4205 return; 4125 return;
4206} 4126}
4207 4127
4208/* Search IOC page 3 to determine if this is hidden physical disk
4209 */
4210/* Search IOC page 3 to determine if this is hidden physical disk
4211 */
4212static int
4213mptscsih_is_phys_disk(MPT_ADAPTER *ioc, int id)
4214{
4215 int i;
4216
4217 if (!ioc->raid_data.isRaid || !ioc->raid_data.pIocPg3)
4218 return 0;
4219
4220 for (i = 0; i < ioc->raid_data.pIocPg3->NumPhysDisks; i++) {
4221 if (id == ioc->raid_data.pIocPg3->PhysDisk[i].PhysDiskID)
4222 return 1;
4223 }
4224
4225 return 0;
4226}
4227
4228/* Write SDP1 if no QAS has been enabled 4128/* Write SDP1 if no QAS has been enabled
4229 */ 4129 */
4230static void 4130static void
4231mptscsih_qas_check(MPT_SCSI_HOST *hd, int id) 4131mptscsih_qas_check(MPT_SCSI_HOST *hd, int id)
4232{ 4132{
4233 VirtDevice *pTarget; 4133 VirtTarget *vtarget;
4234 int ii; 4134 int ii;
4235 4135
4236 if (hd->Targets == NULL) 4136 if (hd->Targets == NULL)
@@ -4243,11 +4143,11 @@ mptscsih_qas_check(MPT_SCSI_HOST *hd, int id)
4243 if ((hd->ioc->spi_data.dvStatus[ii] & MPT_SCSICFG_DV_NOT_DONE) != 0) 4143 if ((hd->ioc->spi_data.dvStatus[ii] & MPT_SCSICFG_DV_NOT_DONE) != 0)
4244 continue; 4144 continue;
4245 4145
4246 pTarget = hd->Targets[ii]; 4146 vtarget = hd->Targets[ii];
4247 4147
4248 if ((pTarget != NULL) && (!pTarget->raidVolume)) { 4148 if ((vtarget != NULL) && (!vtarget->raidVolume)) {
4249 if ((pTarget->negoFlags & hd->ioc->spi_data.noQas) == 0) { 4149 if ((vtarget->negoFlags & hd->ioc->spi_data.noQas) == 0) {
4250 pTarget->negoFlags |= hd->ioc->spi_data.noQas; 4150 vtarget->negoFlags |= hd->ioc->spi_data.noQas;
4251 dnegoprintk(("writeSDP1: id=%d flags=0\n", id)); 4151 dnegoprintk(("writeSDP1: id=%d flags=0\n", id));
4252 mptscsih_writeSDP1(hd, 0, ii, 0); 4152 mptscsih_writeSDP1(hd, 0, ii, 0);
4253 } 4153 }
@@ -4287,7 +4187,7 @@ static int
4287mptscsih_doDv(MPT_SCSI_HOST *hd, int bus_number, int id) 4187mptscsih_doDv(MPT_SCSI_HOST *hd, int bus_number, int id)
4288{ 4188{
4289 MPT_ADAPTER *ioc = hd->ioc; 4189 MPT_ADAPTER *ioc = hd->ioc;
4290 VirtDevice *pTarget; 4190 VirtTarget *vtarget;
4291 SCSIDevicePage1_t *pcfg1Data; 4191 SCSIDevicePage1_t *pcfg1Data;
4292 SCSIDevicePage0_t *pcfg0Data; 4192 SCSIDevicePage0_t *pcfg0Data;
4293 u8 *pbuf1; 4193 u8 *pbuf1;
@@ -4358,12 +4258,12 @@ mptscsih_doDv(MPT_SCSI_HOST *hd, int bus_number, int id)
4358 iocmd.physDiskNum = -1; 4258 iocmd.physDiskNum = -1;
4359 iocmd.rsvd = iocmd.rsvd2 = 0; 4259 iocmd.rsvd = iocmd.rsvd2 = 0;
4360 4260
4361 pTarget = hd->Targets[id]; 4261 vtarget = hd->Targets[id];
4362 4262
4363 /* Use tagged commands if possible. 4263 /* Use tagged commands if possible.
4364 */ 4264 */
4365 if (pTarget) { 4265 if (vtarget) {
4366 if (pTarget->tflags & MPT_TARGET_FLAGS_Q_YES) 4266 if (vtarget->tflags & MPT_TARGET_FLAGS_Q_YES)
4367 iocmd.flags |= MPT_ICFLAG_TAGGED_CMD; 4267 iocmd.flags |= MPT_ICFLAG_TAGGED_CMD;
4368 else { 4268 else {
4369 if (hd->ioc->facts.FWVersion.Word < 0x01000600) 4269 if (hd->ioc->facts.FWVersion.Word < 0x01000600)
@@ -4579,7 +4479,7 @@ mptscsih_doDv(MPT_SCSI_HOST *hd, int bus_number, int id)
4579 /* Reset the size for disks 4479 /* Reset the size for disks
4580 */ 4480 */
4581 inq0 = (*pbuf1) & 0x1F; 4481 inq0 = (*pbuf1) & 0x1F;
4582 if ((inq0 == 0) && pTarget && !pTarget->raidVolume) { 4482 if ((inq0 == 0) && vtarget && !vtarget->raidVolume) {
4583 sz = 0x40; 4483 sz = 0x40;
4584 iocmd.size = sz; 4484 iocmd.size = sz;
4585 } 4485 }
@@ -4589,8 +4489,7 @@ mptscsih_doDv(MPT_SCSI_HOST *hd, int bus_number, int id)
4589 */ 4489 */
4590 if (inq0 == TYPE_PROCESSOR) { 4490 if (inq0 == TYPE_PROCESSOR) {
4591 mptscsih_initTarget(hd, 4491 mptscsih_initTarget(hd,
4592 bus, 4492 vtarget,
4593 id,
4594 lun, 4493 lun,
4595 pbuf1, 4494 pbuf1,
4596 sz); 4495 sz);
@@ -4604,22 +4503,22 @@ mptscsih_doDv(MPT_SCSI_HOST *hd, int bus_number, int id)
4604 goto target_done; 4503 goto target_done;
4605 4504
4606 if (sz == 0x40) { 4505 if (sz == 0x40) {
4607 if ((pTarget->maxWidth == 1) && (pTarget->maxOffset) && (nfactor < 0x0A) 4506 if ((vtarget->maxWidth == 1) && (vtarget->maxOffset) && (nfactor < 0x0A)
4608 && (pTarget->minSyncFactor > 0x09)) { 4507 && (vtarget->minSyncFactor > 0x09)) {
4609 if ((pbuf1[56] & 0x04) == 0) 4508 if ((pbuf1[56] & 0x04) == 0)
4610 ; 4509 ;
4611 else if ((pbuf1[56] & 0x01) == 1) { 4510 else if ((pbuf1[56] & 0x01) == 1) {
4612 pTarget->minSyncFactor = 4511 vtarget->minSyncFactor =
4613 nfactor > MPT_ULTRA320 ? nfactor : MPT_ULTRA320; 4512 nfactor > MPT_ULTRA320 ? nfactor : MPT_ULTRA320;
4614 } else { 4513 } else {
4615 pTarget->minSyncFactor = 4514 vtarget->minSyncFactor =
4616 nfactor > MPT_ULTRA160 ? nfactor : MPT_ULTRA160; 4515 nfactor > MPT_ULTRA160 ? nfactor : MPT_ULTRA160;
4617 } 4516 }
4618 4517
4619 dv.max.factor = pTarget->minSyncFactor; 4518 dv.max.factor = vtarget->minSyncFactor;
4620 4519
4621 if ((pbuf1[56] & 0x02) == 0) { 4520 if ((pbuf1[56] & 0x02) == 0) {
4622 pTarget->negoFlags |= MPT_TARGET_NO_NEGO_QAS; 4521 vtarget->negoFlags |= MPT_TARGET_NO_NEGO_QAS;
4623 hd->ioc->spi_data.noQas = MPT_TARGET_NO_NEGO_QAS; 4522 hd->ioc->spi_data.noQas = MPT_TARGET_NO_NEGO_QAS;
4624 ddvprintk((MYIOC_s_NOTE_FMT 4523 ddvprintk((MYIOC_s_NOTE_FMT
4625 "DV: Start Basic noQas on id=%d due to pbuf1[56]=%x\n", 4524 "DV: Start Basic noQas on id=%d due to pbuf1[56]=%x\n",
@@ -4702,8 +4601,7 @@ mptscsih_doDv(MPT_SCSI_HOST *hd, int bus_number, int id)
4702 "DV:Inquiry compared id=%d, calling initTarget\n", ioc->name, id)); 4601 "DV:Inquiry compared id=%d, calling initTarget\n", ioc->name, id));
4703 hd->ioc->spi_data.dvStatus[id] &= ~MPT_SCSICFG_DV_NOT_DONE; 4602 hd->ioc->spi_data.dvStatus[id] &= ~MPT_SCSICFG_DV_NOT_DONE;
4704 mptscsih_initTarget(hd, 4603 mptscsih_initTarget(hd,
4705 bus, 4604 vtarget,
4706 id,
4707 lun, 4605 lun,
4708 pbuf1, 4606 pbuf1,
4709 sz); 4607 sz);
@@ -5204,7 +5102,7 @@ target_done:
5204static void 5102static void
5205mptscsih_dv_parms(MPT_SCSI_HOST *hd, DVPARAMETERS *dv,void *pPage) 5103mptscsih_dv_parms(MPT_SCSI_HOST *hd, DVPARAMETERS *dv,void *pPage)
5206{ 5104{
5207 VirtDevice *pTarget; 5105 VirtTarget *vtarget;
5208 SCSIDevicePage0_t *pPage0; 5106 SCSIDevicePage0_t *pPage0;
5209 SCSIDevicePage1_t *pPage1; 5107 SCSIDevicePage1_t *pPage1;
5210 int val = 0, data, configuration; 5108 int val = 0, data, configuration;
@@ -5224,11 +5122,11 @@ mptscsih_dv_parms(MPT_SCSI_HOST *hd, DVPARAMETERS *dv,void *pPage)
5224 * already throttled back. 5122 * already throttled back.
5225 */ 5123 */
5226 negoFlags = hd->ioc->spi_data.noQas; 5124 negoFlags = hd->ioc->spi_data.noQas;
5227 if ((hd->Targets)&&((pTarget = hd->Targets[(int)id]) != NULL) && !pTarget->raidVolume) { 5125 if ((hd->Targets)&&((vtarget = hd->Targets[(int)id]) != NULL) && !vtarget->raidVolume) {
5228 width = pTarget->maxWidth; 5126 width = vtarget->maxWidth;
5229 offset = pTarget->maxOffset; 5127 offset = vtarget->maxOffset;
5230 factor = pTarget->minSyncFactor; 5128 factor = vtarget->minSyncFactor;
5231 negoFlags |= pTarget->negoFlags; 5129 negoFlags |= vtarget->negoFlags;
5232 } else { 5130 } else {
5233 if (hd->ioc->spi_data.nvram && (hd->ioc->spi_data.nvram[id] != MPT_HOST_NVRAM_INVALID)) { 5131 if (hd->ioc->spi_data.nvram && (hd->ioc->spi_data.nvram[id] != MPT_HOST_NVRAM_INVALID)) {
5234 data = hd->ioc->spi_data.nvram[id]; 5132 data = hd->ioc->spi_data.nvram[id];
@@ -5430,11 +5328,11 @@ mptscsih_dv_parms(MPT_SCSI_HOST *hd, DVPARAMETERS *dv,void *pPage)
5430 * or overwrite nvram (phys disks only). 5328 * or overwrite nvram (phys disks only).
5431 */ 5329 */
5432 5330
5433 if ((hd->Targets)&&((pTarget = hd->Targets[(int)id]) != NULL) && !pTarget->raidVolume ) { 5331 if ((hd->Targets)&&((vtarget = hd->Targets[(int)id]) != NULL) && !vtarget->raidVolume ) {
5434 pTarget->maxWidth = dv->now.width; 5332 vtarget->maxWidth = dv->now.width;
5435 pTarget->maxOffset = dv->now.offset; 5333 vtarget->maxOffset = dv->now.offset;
5436 pTarget->minSyncFactor = dv->now.factor; 5334 vtarget->minSyncFactor = dv->now.factor;
5437 pTarget->negoFlags = dv->now.flags; 5335 vtarget->negoFlags = dv->now.flags;
5438 } else { 5336 } else {
5439 /* Preserv all flags, use 5337 /* Preserv all flags, use
5440 * read-modify-write algorithm 5338 * read-modify-write algorithm
@@ -5588,6 +5486,94 @@ mptscsih_fillbuf(char *buffer, int size, int index, int width)
5588 break; 5486 break;
5589 } 5487 }
5590} 5488}
5489
5490/*=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=*/
5491/* If DV disabled (negoNvram set to USE_NVARM) or if not LUN 0, return.
5492 * Else set the NEED_DV flag after Read Capacity Issued (disks)
5493 * or Mode Sense (cdroms).
5494 *
5495 * Tapes, initTarget will set this flag on completion of Inquiry command.
5496 * Called only if DV_NOT_DONE flag is set
5497 */
5498static void
5499mptscsih_set_dvflags(MPT_SCSI_HOST *hd, struct scsi_cmnd *sc)
5500{
5501 MPT_ADAPTER *ioc = hd->ioc;
5502 u8 cmd;
5503 SpiCfgData *pSpi;
5504
5505 ddvtprintk((MYIOC_s_NOTE_FMT
5506 " set_dvflags: id=%d lun=%d negoNvram=%x cmd=%x\n",
5507 hd->ioc->name, sc->device->id, sc->device->lun , hd->negoNvram, sc->cmnd[0]));
5508
5509 if ((sc->device->lun != 0) || (hd->negoNvram != 0))
5510 return;
5511
5512 cmd = sc->cmnd[0];
5513
5514 if ((cmd == READ_CAPACITY) || (cmd == MODE_SENSE)) {
5515 pSpi = &ioc->spi_data;
5516 if ((ioc->raid_data.isRaid & (1 << sc->device->id)) && ioc->raid_data.pIocPg3) {
5517 /* Set NEED_DV for all hidden disks
5518 */
5519 Ioc3PhysDisk_t *pPDisk = ioc->raid_data.pIocPg3->PhysDisk;
5520 int numPDisk = ioc->raid_data.pIocPg3->NumPhysDisks;
5521
5522 while (numPDisk) {
5523 pSpi->dvStatus[pPDisk->PhysDiskID] |= MPT_SCSICFG_NEED_DV;
5524 ddvtprintk(("NEED_DV set for phys disk id %d\n", pPDisk->PhysDiskID));
5525 pPDisk++;
5526 numPDisk--;
5527 }
5528 }
5529 pSpi->dvStatus[sc->device->id] |= MPT_SCSICFG_NEED_DV;
5530 ddvtprintk(("NEED_DV set for visible disk id %d\n", sc->device->id));
5531 }
5532}
5533
5534/* mptscsih_raid_set_dv_flags()
5535 *
5536 * New or replaced disk. Set DV flag and schedule DV.
5537 */
5538static void
5539mptscsih_set_dvflags_raid(MPT_SCSI_HOST *hd, int id)
5540{
5541 MPT_ADAPTER *ioc = hd->ioc;
5542 SpiCfgData *pSpi = &ioc->spi_data;
5543 Ioc3PhysDisk_t *pPDisk;
5544 int numPDisk;
5545
5546 if (hd->negoNvram != 0)
5547 return;
5548
5549 ddvtprintk(("DV requested for phys disk id %d\n", id));
5550 if (ioc->raid_data.pIocPg3) {
5551 pPDisk = ioc->raid_data.pIocPg3->PhysDisk;
5552 numPDisk = ioc->raid_data.pIocPg3->NumPhysDisks;
5553 while (numPDisk) {
5554 if (id == pPDisk->PhysDiskNum) {
5555 pSpi->dvStatus[pPDisk->PhysDiskID] =
5556 (MPT_SCSICFG_NEED_DV | MPT_SCSICFG_DV_NOT_DONE);
5557 pSpi->forceDv = MPT_SCSICFG_NEED_DV;
5558 ddvtprintk(("NEED_DV set for phys disk id %d\n",
5559 pPDisk->PhysDiskID));
5560 break;
5561 }
5562 pPDisk++;
5563 numPDisk--;
5564 }
5565
5566 if (numPDisk == 0) {
5567 /* The physical disk that needs DV was not found
5568 * in the stored IOC Page 3. The driver must reload
5569 * this page. DV routine will set the NEED_DV flag for
5570 * all phys disks that have DV_NOT_DONE set.
5571 */
5572 pSpi->forceDv = MPT_SCSICFG_NEED_DV | MPT_SCSICFG_RELOAD_IOC_PG3;
5573 ddvtprintk(("phys disk %d not found. Setting reload IOC Pg3 Flag\n",id));
5574 }
5575 }
5576}
5591#endif /* ~MPTSCSIH_ENABLE_DOMAIN_VALIDATION */ 5577#endif /* ~MPTSCSIH_ENABLE_DOMAIN_VALIDATION */
5592 5578
5593EXPORT_SYMBOL(mptscsih_remove); 5579EXPORT_SYMBOL(mptscsih_remove);
@@ -5599,7 +5585,9 @@ EXPORT_SYMBOL(mptscsih_resume);
5599EXPORT_SYMBOL(mptscsih_proc_info); 5585EXPORT_SYMBOL(mptscsih_proc_info);
5600EXPORT_SYMBOL(mptscsih_info); 5586EXPORT_SYMBOL(mptscsih_info);
5601EXPORT_SYMBOL(mptscsih_qcmd); 5587EXPORT_SYMBOL(mptscsih_qcmd);
5588EXPORT_SYMBOL(mptscsih_target_alloc);
5602EXPORT_SYMBOL(mptscsih_slave_alloc); 5589EXPORT_SYMBOL(mptscsih_slave_alloc);
5590EXPORT_SYMBOL(mptscsih_target_destroy);
5603EXPORT_SYMBOL(mptscsih_slave_destroy); 5591EXPORT_SYMBOL(mptscsih_slave_destroy);
5604EXPORT_SYMBOL(mptscsih_slave_configure); 5592EXPORT_SYMBOL(mptscsih_slave_configure);
5605EXPORT_SYMBOL(mptscsih_abort); 5593EXPORT_SYMBOL(mptscsih_abort);
diff --git a/drivers/message/fusion/mptscsih.h b/drivers/message/fusion/mptscsih.h
index 971fda4b8b57..d3cba12f4bd9 100644
--- a/drivers/message/fusion/mptscsih.h
+++ b/drivers/message/fusion/mptscsih.h
@@ -91,7 +91,9 @@ extern int mptscsih_resume(struct pci_dev *pdev);
91extern int mptscsih_proc_info(struct Scsi_Host *host, char *buffer, char **start, off_t offset, int length, int func); 91extern int mptscsih_proc_info(struct Scsi_Host *host, char *buffer, char **start, off_t offset, int length, int func);
92extern const char * mptscsih_info(struct Scsi_Host *SChost); 92extern const char * mptscsih_info(struct Scsi_Host *SChost);
93extern int mptscsih_qcmd(struct scsi_cmnd *SCpnt, void (*done)(struct scsi_cmnd *)); 93extern int mptscsih_qcmd(struct scsi_cmnd *SCpnt, void (*done)(struct scsi_cmnd *));
94extern int mptscsih_target_alloc(struct scsi_target *starget);
94extern int mptscsih_slave_alloc(struct scsi_device *device); 95extern int mptscsih_slave_alloc(struct scsi_device *device);
96extern void mptscsih_target_destroy(struct scsi_target *starget);
95extern void mptscsih_slave_destroy(struct scsi_device *device); 97extern void mptscsih_slave_destroy(struct scsi_device *device);
96extern int mptscsih_slave_configure(struct scsi_device *device); 98extern int mptscsih_slave_configure(struct scsi_device *device);
97extern int mptscsih_abort(struct scsi_cmnd * SCpnt); 99extern int mptscsih_abort(struct scsi_cmnd * SCpnt);
diff --git a/drivers/message/fusion/mptspi.c b/drivers/message/fusion/mptspi.c
index 5c0e307d1d5d..ce332a6085e5 100644
--- a/drivers/message/fusion/mptspi.c
+++ b/drivers/message/fusion/mptspi.c
@@ -103,13 +103,16 @@ static int mptspiTaskCtx = -1;
103static int mptspiInternalCtx = -1; /* Used only for internal commands */ 103static int mptspiInternalCtx = -1; /* Used only for internal commands */
104 104
105static struct scsi_host_template mptspi_driver_template = { 105static struct scsi_host_template mptspi_driver_template = {
106 .module = THIS_MODULE,
106 .proc_name = "mptspi", 107 .proc_name = "mptspi",
107 .proc_info = mptscsih_proc_info, 108 .proc_info = mptscsih_proc_info,
108 .name = "MPT SPI Host", 109 .name = "MPT SPI Host",
109 .info = mptscsih_info, 110 .info = mptscsih_info,
110 .queuecommand = mptscsih_qcmd, 111 .queuecommand = mptscsih_qcmd,
112 .target_alloc = mptscsih_target_alloc,
111 .slave_alloc = mptscsih_slave_alloc, 113 .slave_alloc = mptscsih_slave_alloc,
112 .slave_configure = mptscsih_slave_configure, 114 .slave_configure = mptscsih_slave_configure,
115 .target_destroy = mptscsih_target_destroy,
113 .slave_destroy = mptscsih_slave_destroy, 116 .slave_destroy = mptscsih_slave_destroy,
114 .change_queue_depth = mptscsih_change_queue_depth, 117 .change_queue_depth = mptscsih_change_queue_depth,
115 .eh_abort_handler = mptscsih_abort, 118 .eh_abort_handler = mptscsih_abort,
@@ -177,13 +180,15 @@ mptspi_probe(struct pci_dev *pdev, const struct pci_device_id *id)
177 printk(MYIOC_s_WARN_FMT 180 printk(MYIOC_s_WARN_FMT
178 "Skipping because it's not operational!\n", 181 "Skipping because it's not operational!\n",
179 ioc->name); 182 ioc->name);
180 return -ENODEV; 183 error = -ENODEV;
184 goto out_mptspi_probe;
181 } 185 }
182 186
183 if (!ioc->active) { 187 if (!ioc->active) {
184 printk(MYIOC_s_WARN_FMT "Skipping because it's disabled!\n", 188 printk(MYIOC_s_WARN_FMT "Skipping because it's disabled!\n",
185 ioc->name); 189 ioc->name);
186 return -ENODEV; 190 error = -ENODEV;
191 goto out_mptspi_probe;
187 } 192 }
188 193
189 /* Sanity check - ensure at least 1 port is INITIATOR capable 194 /* 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)
208 printk(MYIOC_s_WARN_FMT 213 printk(MYIOC_s_WARN_FMT
209 "Unable to register controller with SCSI subsystem\n", 214 "Unable to register controller with SCSI subsystem\n",
210 ioc->name); 215 ioc->name);
211 return -1; 216 error = -1;
217 goto out_mptspi_probe;
212 } 218 }
213 219
214 spin_lock_irqsave(&ioc->FreeQlock, flags); 220 spin_lock_irqsave(&ioc->FreeQlock, flags);
@@ -286,7 +292,7 @@ mptspi_probe(struct pci_dev *pdev, const struct pci_device_id *id)
286 mem = kmalloc(sz, GFP_ATOMIC); 292 mem = kmalloc(sz, GFP_ATOMIC);
287 if (mem == NULL) { 293 if (mem == NULL) {
288 error = -ENOMEM; 294 error = -ENOMEM;
289 goto mptspi_probe_failed; 295 goto out_mptspi_probe;
290 } 296 }
291 297
292 memset(mem, 0, sz); 298 memset(mem, 0, sz);
@@ -304,14 +310,14 @@ mptspi_probe(struct pci_dev *pdev, const struct pci_device_id *id)
304 mem = kmalloc(sz, GFP_ATOMIC); 310 mem = kmalloc(sz, GFP_ATOMIC);
305 if (mem == NULL) { 311 if (mem == NULL) {
306 error = -ENOMEM; 312 error = -ENOMEM;
307 goto mptspi_probe_failed; 313 goto out_mptspi_probe;
308 } 314 }
309 315
310 memset(mem, 0, sz); 316 memset(mem, 0, sz);
311 hd->Targets = (VirtDevice **) mem; 317 hd->Targets = (VirtTarget **) mem;
312 318
313 dprintk((KERN_INFO 319 dprintk((KERN_INFO
314 " Targets @ %p, sz=%d\n", hd->Targets, sz)); 320 " vdev @ %p, sz=%d\n", hd->Targets, sz));
315 321
316 /* Clear the TM flags 322 /* Clear the TM flags
317 */ 323 */
@@ -385,13 +391,13 @@ mptspi_probe(struct pci_dev *pdev, const struct pci_device_id *id)
385 if(error) { 391 if(error) {
386 dprintk((KERN_ERR MYNAM 392 dprintk((KERN_ERR MYNAM
387 "scsi_add_host failed\n")); 393 "scsi_add_host failed\n"));
388 goto mptspi_probe_failed; 394 goto out_mptspi_probe;
389 } 395 }
390 396
391 scsi_scan_host(sh); 397 scsi_scan_host(sh);
392 return 0; 398 return 0;
393 399
394mptspi_probe_failed: 400out_mptspi_probe:
395 401
396 mptscsih_remove(pdev); 402 mptscsih_remove(pdev);
397 return error; 403 return error;
diff --git a/drivers/scsi/53c700.c b/drivers/scsi/53c700.c
index e7ad269041a4..4ce7438608ec 100644
--- a/drivers/scsi/53c700.c
+++ b/drivers/scsi/53c700.c
@@ -857,7 +857,7 @@ process_extended_message(struct Scsi_Host *host,
857 printk(KERN_INFO "scsi%d (%d:%d): Unexpected message %s: ", 857 printk(KERN_INFO "scsi%d (%d:%d): Unexpected message %s: ",
858 host->host_no, pun, lun, 858 host->host_no, pun, lun,
859 NCR_700_phase[(dsps & 0xf00) >> 8]); 859 NCR_700_phase[(dsps & 0xf00) >> 8]);
860 scsi_print_msg(hostdata->msgin); 860 spi_print_msg(hostdata->msgin);
861 printk("\n"); 861 printk("\n");
862 /* just reject it */ 862 /* just reject it */
863 hostdata->msgout[0] = A_REJECT_MSG; 863 hostdata->msgout[0] = A_REJECT_MSG;
@@ -887,7 +887,7 @@ process_message(struct Scsi_Host *host, struct NCR_700_Host_Parameters *hostdata
887#ifdef NCR_700_DEBUG 887#ifdef NCR_700_DEBUG
888 printk("scsi%d (%d:%d): message %s: ", host->host_no, pun, lun, 888 printk("scsi%d (%d:%d): message %s: ", host->host_no, pun, lun,
889 NCR_700_phase[(dsps & 0xf00) >> 8]); 889 NCR_700_phase[(dsps & 0xf00) >> 8]);
890 scsi_print_msg(hostdata->msgin); 890 spi_print_msg(hostdata->msgin);
891 printk("\n"); 891 printk("\n");
892#endif 892#endif
893 893
@@ -939,7 +939,7 @@ process_message(struct Scsi_Host *host, struct NCR_700_Host_Parameters *hostdata
939 host->host_no, pun, lun, 939 host->host_no, pun, lun,
940 NCR_700_phase[(dsps & 0xf00) >> 8]); 940 NCR_700_phase[(dsps & 0xf00) >> 8]);
941 941
942 scsi_print_msg(hostdata->msgin); 942 spi_print_msg(hostdata->msgin);
943 printk("\n"); 943 printk("\n");
944 /* just reject it */ 944 /* just reject it */
945 hostdata->msgout[0] = A_REJECT_MSG; 945 hostdata->msgout[0] = A_REJECT_MSG;
diff --git a/drivers/scsi/53c700.h b/drivers/scsi/53c700.h
index 362d78483d09..a8c83bb03630 100644
--- a/drivers/scsi/53c700.h
+++ b/drivers/scsi/53c700.h
@@ -238,21 +238,23 @@ struct NCR_700_Host_Parameters {
238#ifdef CONFIG_53C700_LE_ON_BE 238#ifdef CONFIG_53C700_LE_ON_BE
239#define bE (hostdata->force_le_on_be ? 0 : 3) 239#define bE (hostdata->force_le_on_be ? 0 : 3)
240#define bSWAP (hostdata->force_le_on_be) 240#define bSWAP (hostdata->force_le_on_be)
241/* This is terrible, but there's no raw version of ioread32. That means 241#define bEBus (!hostdata->force_le_on_be)
242 * that on a be board we swap twice (once in ioread32 and once again to
243 * get the value correct) */
244#define bS_to_io(x) ((hostdata->force_le_on_be) ? (x) : cpu_to_le32(x))
245#elif defined(__BIG_ENDIAN) 242#elif defined(__BIG_ENDIAN)
246#define bE 3 243#define bE 3
247#define bSWAP 0 244#define bSWAP 0
248#define bS_to_io(x) (x)
249#elif defined(__LITTLE_ENDIAN) 245#elif defined(__LITTLE_ENDIAN)
250#define bE 0 246#define bE 0
251#define bSWAP 0 247#define bSWAP 0
252#define bS_to_io(x) (x)
253#else 248#else
254#error "__BIG_ENDIAN or __LITTLE_ENDIAN must be defined, did you include byteorder.h?" 249#error "__BIG_ENDIAN or __LITTLE_ENDIAN must be defined, did you include byteorder.h?"
255#endif 250#endif
251#ifndef bEBus
252#ifdef CONFIG_53C700_BE_BUS
253#define bEBus 1
254#else
255#define bEBus 0
256#endif
257#endif
256#define bS_to_cpu(x) (bSWAP ? le32_to_cpu(x) : (x)) 258#define bS_to_cpu(x) (bSWAP ? le32_to_cpu(x) : (x))
257#define bS_to_host(x) (bSWAP ? cpu_to_le32(x) : (x)) 259#define bS_to_host(x) (bSWAP ? cpu_to_le32(x) : (x))
258 260
@@ -466,14 +468,15 @@ NCR_700_readl(struct Scsi_Host *host, __u32 reg)
466{ 468{
467 const struct NCR_700_Host_Parameters *hostdata 469 const struct NCR_700_Host_Parameters *hostdata
468 = (struct NCR_700_Host_Parameters *)host->hostdata[0]; 470 = (struct NCR_700_Host_Parameters *)host->hostdata[0];
469 __u32 value = ioread32(hostdata->base + reg); 471 __u32 value = bEBus ? ioread32be(hostdata->base + reg) :
472 ioread32(hostdata->base + reg);
470#if 1 473#if 1
471 /* sanity check the register */ 474 /* sanity check the register */
472 if((reg & 0x3) != 0) 475 if((reg & 0x3) != 0)
473 BUG(); 476 BUG();
474#endif 477#endif
475 478
476 return bS_to_io(value); 479 return value;
477} 480}
478 481
479static inline void 482static inline void
@@ -497,7 +500,8 @@ NCR_700_writel(__u32 value, struct Scsi_Host *host, __u32 reg)
497 BUG(); 500 BUG();
498#endif 501#endif
499 502
500 iowrite32(bS_to_io(value), hostdata->base + reg); 503 bEBus ? iowrite32be(value, hostdata->base + reg):
504 iowrite32(value, hostdata->base + reg);
501} 505}
502 506
503#endif 507#endif
diff --git a/drivers/scsi/53c7xx.c b/drivers/scsi/53c7xx.c
index 9cb5dd48383f..7894b8ea84bd 100644
--- a/drivers/scsi/53c7xx.c
+++ b/drivers/scsi/53c7xx.c
@@ -282,6 +282,7 @@
282#include "scsi.h" 282#include "scsi.h"
283#include <scsi/scsi_dbg.h> 283#include <scsi/scsi_dbg.h>
284#include <scsi/scsi_host.h> 284#include <scsi/scsi_host.h>
285#include <scsi/scsi_transport_spi.h>
285#include "53c7xx.h" 286#include "53c7xx.h"
286#include <linux/stat.h> 287#include <linux/stat.h>
287#include <linux/stddef.h> 288#include <linux/stddef.h>
@@ -1724,7 +1725,7 @@ NCR53c7xx_run_tests (struct Scsi_Host *host) {
1724 printk ("scsi%d : status ", host->host_no); 1725 printk ("scsi%d : status ", host->host_no);
1725 scsi_print_status (status); 1726 scsi_print_status (status);
1726 printk ("\nscsi%d : message ", host->host_no); 1727 printk ("\nscsi%d : message ", host->host_no);
1727 scsi_print_msg (&msg); 1728 spi_print_msg(&msg);
1728 printk ("\n"); 1729 printk ("\n");
1729 } else if (hostdata->test_completed == 3) { 1730 } else if (hostdata->test_completed == 3) {
1730 printk("scsi%d : test 2 no connection with target %d\n", 1731 printk("scsi%d : test 2 no connection with target %d\n",
@@ -2313,7 +2314,7 @@ NCR53c7x0_dstat_sir_intr (struct Scsi_Host *host, struct
2313 printk ("scsi%d : received message", host->host_no); 2314 printk ("scsi%d : received message", host->host_no);
2314 if (c) 2315 if (c)
2315 printk (" from target %d lun %d ", c->device->id, c->device->lun); 2316 printk (" from target %d lun %d ", c->device->id, c->device->lun);
2316 scsi_print_msg ((unsigned char *) hostdata->msg_buf); 2317 spi_print_msg((unsigned char *) hostdata->msg_buf);
2317 printk("\n"); 2318 printk("\n");
2318 } 2319 }
2319 2320
@@ -5540,7 +5541,7 @@ print_dsa (struct Scsi_Host *host, u32 *dsa, const char *prefix) {
5540 i > 0 && !check_address ((unsigned long) ptr, 1); 5541 i > 0 && !check_address ((unsigned long) ptr, 1);
5541 ptr += len, i -= len) { 5542 ptr += len, i -= len) {
5542 printk(" "); 5543 printk(" ");
5543 len = scsi_print_msg (ptr); 5544 len = spi_print_msg(ptr);
5544 printk("\n"); 5545 printk("\n");
5545 if (!len) 5546 if (!len)
5546 break; 5547 break;
diff --git a/drivers/scsi/Kconfig b/drivers/scsi/Kconfig
index 20dd85a77813..4c42065dea88 100644
--- a/drivers/scsi/Kconfig
+++ b/drivers/scsi/Kconfig
@@ -336,6 +336,7 @@ config SCSI_ACARD
336config SCSI_AHA152X 336config SCSI_AHA152X
337 tristate "Adaptec AHA152X/2825 support" 337 tristate "Adaptec AHA152X/2825 support"
338 depends on ISA && SCSI && !64BIT 338 depends on ISA && SCSI && !64BIT
339 select SCSI_SPI_ATTRS
339 ---help--- 340 ---help---
340 This is a driver for the AHA-1510, AHA-1520, AHA-1522, and AHA-2825 341 This is a driver for the AHA-1510, AHA-1520, AHA-1522, and AHA-2825
341 SCSI host adapters. It also works for the AVA-1505, but the IRQ etc. 342 SCSI host adapters. It also works for the AVA-1505, but the IRQ etc.
@@ -623,6 +624,7 @@ config SCSI_OMIT_FLASHPOINT
623config SCSI_DMX3191D 624config SCSI_DMX3191D
624 tristate "DMX3191D SCSI support" 625 tristate "DMX3191D SCSI support"
625 depends on PCI && SCSI 626 depends on PCI && SCSI
627 select SCSI_SPI_ATTRS
626 help 628 help
627 This is support for Domex DMX3191D SCSI Host Adapters. 629 This is support for Domex DMX3191D SCSI Host Adapters.
628 630
@@ -632,6 +634,7 @@ config SCSI_DMX3191D
632config SCSI_DTC3280 634config SCSI_DTC3280
633 tristate "DTC3180/3280 SCSI support" 635 tristate "DTC3180/3280 SCSI support"
634 depends on ISA && SCSI 636 depends on ISA && SCSI
637 select SCSI_SPI_ATTRS
635 help 638 help
636 This is support for DTC 3180/3280 SCSI Host Adapters. Please read 639 This is support for DTC 3180/3280 SCSI Host Adapters. Please read
637 the SCSI-HOWTO, available from 640 the SCSI-HOWTO, available from
@@ -752,6 +755,7 @@ config SCSI_GDTH
752config SCSI_GENERIC_NCR5380 755config SCSI_GENERIC_NCR5380
753 tristate "Generic NCR5380/53c400 SCSI PIO support" 756 tristate "Generic NCR5380/53c400 SCSI PIO support"
754 depends on ISA && SCSI 757 depends on ISA && SCSI
758 select SCSI_SPI_ATTRS
755 ---help--- 759 ---help---
756 This is a driver for the old NCR 53c80 series of SCSI controllers 760 This is a driver for the old NCR 53c80 series of SCSI controllers
757 on boards using PIO. Most boards such as the Trantor T130 fit this 761 on boards using PIO. Most boards such as the Trantor T130 fit this
@@ -771,6 +775,7 @@ config SCSI_GENERIC_NCR5380
771config SCSI_GENERIC_NCR5380_MMIO 775config SCSI_GENERIC_NCR5380_MMIO
772 tristate "Generic NCR5380/53c400 SCSI MMIO support" 776 tristate "Generic NCR5380/53c400 SCSI MMIO support"
773 depends on ISA && SCSI 777 depends on ISA && SCSI
778 select SCSI_SPI_ATTRS
774 ---help--- 779 ---help---
775 This is a driver for the old NCR 53c80 series of SCSI controllers 780 This is a driver for the old NCR 53c80 series of SCSI controllers
776 on boards using memory mapped I/O. 781 on boards using memory mapped I/O.
@@ -1254,6 +1259,7 @@ config SCSI_MCA_53C9X
1254config SCSI_PAS16 1259config SCSI_PAS16
1255 tristate "PAS16 SCSI support" 1260 tristate "PAS16 SCSI support"
1256 depends on ISA && SCSI 1261 depends on ISA && SCSI
1262 select SCSI_SPI_ATTRS
1257 ---help--- 1263 ---help---
1258 This is support for a SCSI host adapter. It is explained in section 1264 This is support for a SCSI host adapter. It is explained in section
1259 3.10 of the SCSI-HOWTO, available from 1265 3.10 of the SCSI-HOWTO, available from
@@ -1423,6 +1429,7 @@ config SCSI_DC390T
1423config SCSI_T128 1429config SCSI_T128
1424 tristate "Trantor T128/T128F/T228 SCSI support" 1430 tristate "Trantor T128/T128F/T228 SCSI support"
1425 depends on ISA && SCSI 1431 depends on ISA && SCSI
1432 select SCSI_SPI_ATTRS
1426 ---help--- 1433 ---help---
1427 This is support for a SCSI host adapter. It is explained in section 1434 This is support for a SCSI host adapter. It is explained in section
1428 3.11 of the SCSI-HOWTO, available from 1435 3.11 of the SCSI-HOWTO, available from
@@ -1681,6 +1688,7 @@ config OKTAGON_SCSI
1681config ATARI_SCSI 1688config ATARI_SCSI
1682 tristate "Atari native SCSI support" 1689 tristate "Atari native SCSI support"
1683 depends on ATARI && SCSI && BROKEN 1690 depends on ATARI && SCSI && BROKEN
1691 select SCSI_SPI_ATTRS
1684 ---help--- 1692 ---help---
1685 If you have an Atari with built-in NCR5380 SCSI controller (TT, 1693 If you have an Atari with built-in NCR5380 SCSI controller (TT,
1686 Falcon, ...) say Y to get it supported. Of course also, if you have 1694 Falcon, ...) say Y to get it supported. Of course also, if you have
@@ -1722,6 +1730,7 @@ config TT_DMA_EMUL
1722config MAC_SCSI 1730config MAC_SCSI
1723 bool "Macintosh NCR5380 SCSI" 1731 bool "Macintosh NCR5380 SCSI"
1724 depends on MAC && SCSI=y 1732 depends on MAC && SCSI=y
1733 select SCSI_SPI_ATTRS
1725 help 1734 help
1726 This is the NCR 5380 SCSI controller included on most of the 68030 1735 This is the NCR 5380 SCSI controller included on most of the 68030
1727 based Macintoshes. If you have one of these say Y and read the 1736 based Macintoshes. If you have one of these say Y and read the
@@ -1743,6 +1752,7 @@ config SCSI_MAC_ESP
1743config MVME147_SCSI 1752config MVME147_SCSI
1744 bool "WD33C93 SCSI driver for MVME147" 1753 bool "WD33C93 SCSI driver for MVME147"
1745 depends on MVME147 && SCSI=y 1754 depends on MVME147 && SCSI=y
1755 select SCSI_SPI_ATTRS
1746 help 1756 help
1747 Support for the on-board SCSI controller on the Motorola MVME147 1757 Support for the on-board SCSI controller on the Motorola MVME147
1748 single-board computer. 1758 single-board computer.
@@ -1750,6 +1760,7 @@ config MVME147_SCSI
1750config MVME16x_SCSI 1760config MVME16x_SCSI
1751 bool "NCR53C710 SCSI driver for MVME16x" 1761 bool "NCR53C710 SCSI driver for MVME16x"
1752 depends on MVME16x && SCSI && BROKEN 1762 depends on MVME16x && SCSI && BROKEN
1763 select SCSI_SPI_ATTRS
1753 help 1764 help
1754 The Motorola MVME162, 166, 167, 172 and 177 boards use the NCR53C710 1765 The Motorola MVME162, 166, 167, 172 and 177 boards use the NCR53C710
1755 SCSI controller chip. Almost everyone using one of these boards 1766 SCSI controller chip. Almost everyone using one of these boards
@@ -1758,6 +1769,7 @@ config MVME16x_SCSI
1758config BVME6000_SCSI 1769config BVME6000_SCSI
1759 bool "NCR53C710 SCSI driver for BVME6000" 1770 bool "NCR53C710 SCSI driver for BVME6000"
1760 depends on BVME6000 && SCSI && BROKEN 1771 depends on BVME6000 && SCSI && BROKEN
1772 select SCSI_SPI_ATTRS
1761 help 1773 help
1762 The BVME4000 and BVME6000 boards from BVM Ltd use the NCR53C710 1774 The BVME4000 and BVME6000 boards from BVM Ltd use the NCR53C710
1763 SCSI controller chip. Almost everyone using one of these boards 1775 SCSI controller chip. Almost everyone using one of these boards
@@ -1774,6 +1786,7 @@ config SCSI_NCR53C7xx_FAST
1774config SUN3_SCSI 1786config SUN3_SCSI
1775 tristate "Sun3 NCR5380 SCSI" 1787 tristate "Sun3 NCR5380 SCSI"
1776 depends on SUN3 && SCSI && BROKEN 1788 depends on SUN3 && SCSI && BROKEN
1789 select SCSI_SPI_ATTRS
1777 help 1790 help
1778 This option will enable support for the OBIO (onboard io) NCR5380 1791 This option will enable support for the OBIO (onboard io) NCR5380
1779 SCSI controller found in the Sun 3/50 and 3/60, as well as for 1792 SCSI controller found in the Sun 3/50 and 3/60, as well as for
diff --git a/drivers/scsi/NCR5380.c b/drivers/scsi/NCR5380.c
index cba9655d0f14..9f0ddbe6dc76 100644
--- a/drivers/scsi/NCR5380.c
+++ b/drivers/scsi/NCR5380.c
@@ -87,6 +87,7 @@
87 * the high level code. 87 * the high level code.
88 */ 88 */
89#include <scsi/scsi_dbg.h> 89#include <scsi/scsi_dbg.h>
90#include <scsi/scsi_transport_spi.h>
90 91
91#ifndef NDEBUG 92#ifndef NDEBUG
92#define NDEBUG 0 93#define NDEBUG 0
@@ -2377,7 +2378,7 @@ static void NCR5380_information_transfer(struct Scsi_Host *instance) {
2377 * 3..length+1 arguments 2378 * 3..length+1 arguments
2378 * 2379 *
2379 * Start the extended message buffer with the EXTENDED_MESSAGE 2380 * Start the extended message buffer with the EXTENDED_MESSAGE
2380 * byte, since scsi_print_msg() wants the whole thing. 2381 * byte, since spi_print_msg() wants the whole thing.
2381 */ 2382 */
2382 extended_msg[0] = EXTENDED_MESSAGE; 2383 extended_msg[0] = EXTENDED_MESSAGE;
2383 /* Accept first byte by clearing ACK */ 2384 /* Accept first byte by clearing ACK */
@@ -2424,7 +2425,7 @@ static void NCR5380_information_transfer(struct Scsi_Host *instance) {
2424 default: 2425 default:
2425 if (!tmp) { 2426 if (!tmp) {
2426 printk("scsi%d: rejecting message ", instance->host_no); 2427 printk("scsi%d: rejecting message ", instance->host_no);
2427 scsi_print_msg(extended_msg); 2428 spi_print_msg(extended_msg);
2428 printk("\n"); 2429 printk("\n");
2429 } else if (tmp != EXTENDED_MESSAGE) 2430 } else if (tmp != EXTENDED_MESSAGE)
2430 scmd_printk(KERN_INFO, cmd, 2431 scmd_printk(KERN_INFO, cmd,
@@ -2560,7 +2561,7 @@ static void NCR5380_reselect(struct Scsi_Host *instance) {
2560 2561
2561 if (!(msg[0] & 0x80)) { 2562 if (!(msg[0] & 0x80)) {
2562 printk(KERN_ERR "scsi%d : expecting IDENTIFY message, got ", instance->host_no); 2563 printk(KERN_ERR "scsi%d : expecting IDENTIFY message, got ", instance->host_no);
2563 scsi_print_msg(msg); 2564 spi_print_msg(msg);
2564 abort = 1; 2565 abort = 1;
2565 } else { 2566 } else {
2566 /* Accept message by clearing ACK */ 2567 /* Accept message by clearing ACK */
diff --git a/drivers/scsi/aha152x.c b/drivers/scsi/aha152x.c
index 9df23b654cec..cb2ee25f213f 100644
--- a/drivers/scsi/aha152x.c
+++ b/drivers/scsi/aha152x.c
@@ -259,6 +259,7 @@
259#include "scsi.h" 259#include "scsi.h"
260#include <scsi/scsi_dbg.h> 260#include <scsi/scsi_dbg.h>
261#include <scsi/scsi_host.h> 261#include <scsi/scsi_host.h>
262#include <scsi/scsi_transport_spi.h>
262#include "aha152x.h" 263#include "aha152x.h"
263 264
264 265
@@ -1845,7 +1846,7 @@ static void msgi_run(struct Scsi_Host *shpnt)
1845#if defined(AHA152X_DEBUG) 1846#if defined(AHA152X_DEBUG)
1846 if (HOSTDATA(shpnt)->debug & debug_msgi) { 1847 if (HOSTDATA(shpnt)->debug & debug_msgi) {
1847 printk(INFO_LEAD "inbound message %02x ", CMDINFO(CURRENT_SC), MSGI(0)); 1848 printk(INFO_LEAD "inbound message %02x ", CMDINFO(CURRENT_SC), MSGI(0));
1848 scsi_print_msg(&MSGI(0)); 1849 spi_print_msg(&MSGI(0));
1849 printk("\n"); 1850 printk("\n");
1850 } 1851 }
1851#endif 1852#endif
@@ -1933,7 +1934,7 @@ static void msgi_run(struct Scsi_Host *shpnt)
1933 break; 1934 break;
1934 1935
1935 printk(INFO_LEAD, CMDINFO(CURRENT_SC)); 1936 printk(INFO_LEAD, CMDINFO(CURRENT_SC));
1936 scsi_print_msg(&MSGI(0)); 1937 spi_print_msg(&MSGI(0));
1937 printk("\n"); 1938 printk("\n");
1938 1939
1939 ticks = (MSGI(3) * 4 + 49) / 50; 1940 ticks = (MSGI(3) * 4 + 49) / 50;
@@ -2031,7 +2032,7 @@ static void msgo_init(struct Scsi_Host *shpnt)
2031 int i; 2032 int i;
2032 2033
2033 printk(DEBUG_LEAD "messages( ", CMDINFO(CURRENT_SC)); 2034 printk(DEBUG_LEAD "messages( ", CMDINFO(CURRENT_SC));
2034 for (i=0; i<MSGOLEN; i+=scsi_print_msg(&MSGO(i)), printk(" ")) 2035 for (i=0; i<MSGOLEN; i+=spi_print_msg(&MSGO(i)), printk(" "))
2035 ; 2036 ;
2036 printk(")\n"); 2037 printk(")\n");
2037 } 2038 }
diff --git a/drivers/scsi/aic7xxx/aic79xx_osm.c b/drivers/scsi/aic7xxx/aic79xx_osm.c
index 6aab9dacdeea..1c8f872e2dd4 100644
--- a/drivers/scsi/aic7xxx/aic79xx_osm.c
+++ b/drivers/scsi/aic7xxx/aic79xx_osm.c
@@ -1064,6 +1064,7 @@ ahd_linux_register_host(struct ahd_softc *ahd, struct scsi_host_template *templa
1064 struct Scsi_Host *host; 1064 struct Scsi_Host *host;
1065 char *new_name; 1065 char *new_name;
1066 u_long s; 1066 u_long s;
1067 int retval;
1067 1068
1068 template->name = ahd->description; 1069 template->name = ahd->description;
1069 host = scsi_host_alloc(template, sizeof(struct ahd_softc *)); 1070 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
1096 1097
1097 host->transportt = ahd_linux_transport_template; 1098 host->transportt = ahd_linux_transport_template;
1098 1099
1099 scsi_add_host(host, &ahd->dev_softc->dev); /* XXX handle failure */ 1100 retval = scsi_add_host(host, &ahd->dev_softc->dev);
1101 if (retval) {
1102 printk(KERN_WARNING "aic79xx: scsi_add_host failed\n");
1103 scsi_host_put(host);
1104 return retval;
1105 }
1106
1100 scsi_scan_host(host); 1107 scsi_scan_host(host);
1101 return (0); 1108 return 0;
1102} 1109}
1103 1110
1104uint64_t 1111uint64_t
diff --git a/drivers/scsi/aic7xxx/aic7xxx_osm.c b/drivers/scsi/aic7xxx/aic7xxx_osm.c
index d866213f42b8..fd389e9f9460 100644
--- a/drivers/scsi/aic7xxx/aic7xxx_osm.c
+++ b/drivers/scsi/aic7xxx/aic7xxx_osm.c
@@ -1061,10 +1061,11 @@ uint32_t aic7xxx_verbose;
1061int 1061int
1062ahc_linux_register_host(struct ahc_softc *ahc, struct scsi_host_template *template) 1062ahc_linux_register_host(struct ahc_softc *ahc, struct scsi_host_template *template)
1063{ 1063{
1064 char buf[80]; 1064 char buf[80];
1065 struct Scsi_Host *host; 1065 struct Scsi_Host *host;
1066 char *new_name; 1066 char *new_name;
1067 u_long s; 1067 u_long s;
1068 int retval;
1068 1069
1069 template->name = ahc->description; 1070 template->name = ahc->description;
1070 host = scsi_host_alloc(template, sizeof(struct ahc_softc *)); 1071 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
1097 1098
1098 host->transportt = ahc_linux_transport_template; 1099 host->transportt = ahc_linux_transport_template;
1099 1100
1100 scsi_add_host(host, (ahc->dev_softc ? &ahc->dev_softc->dev : NULL)); /* XXX handle failure */ 1101 retval = scsi_add_host(host,
1102 (ahc->dev_softc ? &ahc->dev_softc->dev : NULL));
1103 if (retval) {
1104 printk(KERN_WARNING "aic7xxx: scsi_add_host failed\n");
1105 scsi_host_put(host);
1106 return retval;
1107 }
1108
1101 scsi_scan_host(host); 1109 scsi_scan_host(host);
1102 return (0); 1110 return 0;
1103} 1111}
1104 1112
1105/* 1113/*
diff --git a/drivers/scsi/arm/Kconfig b/drivers/scsi/arm/Kconfig
index 13f23043c8a3..06d7601cdf56 100644
--- a/drivers/scsi/arm/Kconfig
+++ b/drivers/scsi/arm/Kconfig
@@ -4,6 +4,7 @@
4config SCSI_ACORNSCSI_3 4config SCSI_ACORNSCSI_3
5 tristate "Acorn SCSI card (aka30) support" 5 tristate "Acorn SCSI card (aka30) support"
6 depends on ARCH_ACORN && SCSI && BROKEN 6 depends on ARCH_ACORN && SCSI && BROKEN
7 select SCSI_SPI_ATTRS
7 help 8 help
8 This enables support for the Acorn SCSI card (aka30). If you have an 9 This enables support for the Acorn SCSI card (aka30). If you have an
9 Acorn system with one of these, say Y. If unsure, say N. 10 Acorn system with one of these, say Y. If unsure, say N.
diff --git a/drivers/scsi/arm/acornscsi.c b/drivers/scsi/arm/acornscsi.c
index b7b20c689c24..09ed05727bcb 100644
--- a/drivers/scsi/arm/acornscsi.c
+++ b/drivers/scsi/arm/acornscsi.c
@@ -152,6 +152,7 @@
152#include "../scsi.h" 152#include "../scsi.h"
153#include <scsi/scsi_dbg.h> 153#include <scsi/scsi_dbg.h>
154#include <scsi/scsi_host.h> 154#include <scsi/scsi_host.h>
155#include <scsi/scsi_transport_spi.h>
155#include "acornscsi.h" 156#include "acornscsi.h"
156#include "msgqueue.h" 157#include "msgqueue.h"
157#include "scsi.h" 158#include "scsi.h"
@@ -1370,7 +1371,7 @@ void acornscsi_sendmessage(AS_Host *host)
1370 1371
1371 host->scsi.last_message = msg->msg[0]; 1372 host->scsi.last_message = msg->msg[0];
1372#if (DEBUG & DEBUG_MESSAGES) 1373#if (DEBUG & DEBUG_MESSAGES)
1373 scsi_print_msg(msg->msg); 1374 spi_print_msg(msg->msg);
1374#endif 1375#endif
1375 break; 1376 break;
1376 1377
@@ -1392,7 +1393,7 @@ void acornscsi_sendmessage(AS_Host *host)
1392 while ((msg = msgqueue_getmsg(&host->scsi.msgs, msgnr++)) != NULL) { 1393 while ((msg = msgqueue_getmsg(&host->scsi.msgs, msgnr++)) != NULL) {
1393 unsigned int i; 1394 unsigned int i;
1394#if (DEBUG & DEBUG_MESSAGES) 1395#if (DEBUG & DEBUG_MESSAGES)
1395 scsi_print_msg(msg); 1396 spi_print_msg(msg);
1396#endif 1397#endif
1397 i = 0; 1398 i = 0;
1398 if (acornscsi_write_pio(host, msg->msg, &i, msg->length, 1000000)) 1399 if (acornscsi_write_pio(host, msg->msg, &i, msg->length, 1000000))
@@ -1488,7 +1489,7 @@ void acornscsi_message(AS_Host *host)
1488#if (DEBUG & DEBUG_MESSAGES) 1489#if (DEBUG & DEBUG_MESSAGES)
1489 printk("scsi%d.%c: message in: ", 1490 printk("scsi%d.%c: message in: ",
1490 host->host->host_no, acornscsi_target(host)); 1491 host->host->host_no, acornscsi_target(host));
1491 scsi_print_msg(message); 1492 spi_print_msg(message);
1492 printk("\n"); 1493 printk("\n");
1493#endif 1494#endif
1494 1495
diff --git a/drivers/scsi/atari_NCR5380.c b/drivers/scsi/atari_NCR5380.c
index 2ae31ceb32a8..57295bcea3e7 100644
--- a/drivers/scsi/atari_NCR5380.c
+++ b/drivers/scsi/atari_NCR5380.c
@@ -74,6 +74,7 @@
74 * the high level code. 74 * the high level code.
75 */ 75 */
76#include <scsi/scsi_dbg.h> 76#include <scsi/scsi_dbg.h>
77#include <scsi/scsi_transport_spi.h>
77 78
78#if (NDEBUG & NDEBUG_LISTS) 79#if (NDEBUG & NDEBUG_LISTS)
79#define LIST(x,y) \ 80#define LIST(x,y) \
@@ -2355,7 +2356,7 @@ static void NCR5380_information_transfer (struct Scsi_Host *instance)
2355 * 3..length+1 arguments 2356 * 3..length+1 arguments
2356 * 2357 *
2357 * Start the extended message buffer with the EXTENDED_MESSAGE 2358 * Start the extended message buffer with the EXTENDED_MESSAGE
2358 * byte, since scsi_print_msg() wants the whole thing. 2359 * byte, since spi_print_msg() wants the whole thing.
2359 */ 2360 */
2360 extended_msg[0] = EXTENDED_MESSAGE; 2361 extended_msg[0] = EXTENDED_MESSAGE;
2361 /* Accept first byte by clearing ACK */ 2362 /* Accept first byte by clearing ACK */
@@ -2408,7 +2409,7 @@ static void NCR5380_information_transfer (struct Scsi_Host *instance)
2408 default: 2409 default:
2409 if (!tmp) { 2410 if (!tmp) {
2410 printk(KERN_DEBUG "scsi%d: rejecting message ", HOSTNO); 2411 printk(KERN_DEBUG "scsi%d: rejecting message ", HOSTNO);
2411 scsi_print_msg (extended_msg); 2412 spi_print_msg(extended_msg);
2412 printk("\n"); 2413 printk("\n");
2413 } else if (tmp != EXTENDED_MESSAGE) 2414 } else if (tmp != EXTENDED_MESSAGE)
2414 printk(KERN_DEBUG "scsi%d: rejecting unknown " 2415 printk(KERN_DEBUG "scsi%d: rejecting unknown "
@@ -2541,7 +2542,7 @@ static void NCR5380_reselect (struct Scsi_Host *instance)
2541 2542
2542 if (!(msg[0] & 0x80)) { 2543 if (!(msg[0] & 0x80)) {
2543 printk(KERN_DEBUG "scsi%d: expecting IDENTIFY message, got ", HOSTNO); 2544 printk(KERN_DEBUG "scsi%d: expecting IDENTIFY message, got ", HOSTNO);
2544 scsi_print_msg(msg); 2545 spi_print_msg(msg);
2545 do_abort(instance); 2546 do_abort(instance);
2546 return; 2547 return;
2547 } 2548 }
diff --git a/drivers/scsi/ch.c b/drivers/scsi/ch.c
index ccbbae2bf478..0920220f3313 100644
--- a/drivers/scsi/ch.c
+++ b/drivers/scsi/ch.c
@@ -75,7 +75,7 @@ static int vendor_counts[CH_TYPES-4];
75module_param_array(vendor_firsts, int, NULL, 0444); 75module_param_array(vendor_firsts, int, NULL, 0444);
76module_param_array(vendor_counts, int, NULL, 0444); 76module_param_array(vendor_counts, int, NULL, 0444);
77 77
78static char *vendor_labels[CH_TYPES-4] = { 78static const char * vendor_labels[CH_TYPES-4] = {
79 "v0", "v1", "v2", "v3" 79 "v0", "v1", "v2", "v3"
80}; 80};
81// module_param_string_array(vendor_labels, NULL, 0444); 81// module_param_string_array(vendor_labels, NULL, 0444);
@@ -140,7 +140,7 @@ static struct file_operations changer_fops =
140#endif 140#endif
141}; 141};
142 142
143static struct { 143static const struct {
144 unsigned char sense; 144 unsigned char sense;
145 unsigned char asc; 145 unsigned char asc;
146 unsigned char ascq; 146 unsigned char ascq;
diff --git a/drivers/scsi/constants.c b/drivers/scsi/constants.c
index 09bc81557b6e..30a335349cee 100644
--- a/drivers/scsi/constants.c
+++ b/drivers/scsi/constants.c
@@ -1065,7 +1065,7 @@ struct error_info2 {
1065 const char * fmt; 1065 const char * fmt;
1066}; 1066};
1067 1067
1068static struct error_info2 additional2[] = 1068static const struct error_info2 additional2[] =
1069{ 1069{
1070 {0x40,0x00,0x7f,"Ram failure (%x)"}, 1070 {0x40,0x00,0x7f,"Ram failure (%x)"},
1071 {0x40,0x80,0xff,"Diagnostic failure on component (%x)"}, 1071 {0x40,0x80,0xff,"Diagnostic failure on component (%x)"},
@@ -1077,7 +1077,7 @@ static struct error_info2 additional2[] =
1077}; 1077};
1078 1078
1079/* description of the sense key values */ 1079/* description of the sense key values */
1080static const char *snstext[] = { 1080static const char * const snstext[] = {
1081 "No Sense", /* 0: There is no sense information */ 1081 "No Sense", /* 0: There is no sense information */
1082 "Recovered Error", /* 1: The last command completed successfully 1082 "Recovered Error", /* 1: The last command completed successfully
1083 but used error correction */ 1083 but used error correction */
@@ -1278,114 +1278,6 @@ void scsi_print_req_sense(const char *devclass, struct scsi_request *sreq)
1278} 1278}
1279EXPORT_SYMBOL(scsi_print_req_sense); 1279EXPORT_SYMBOL(scsi_print_req_sense);
1280 1280
1281#ifdef CONFIG_SCSI_CONSTANTS
1282static const char *one_byte_msgs[] = {
1283/* 0x00 */ "Command Complete", NULL, "Save Pointers",
1284/* 0x03 */ "Restore Pointers", "Disconnect", "Initiator Error",
1285/* 0x06 */ "Abort", "Message Reject", "Nop", "Message Parity Error",
1286/* 0x0a */ "Linked Command Complete", "Linked Command Complete w/flag",
1287/* 0x0c */ "Bus device reset", "Abort Tag", "Clear Queue",
1288/* 0x0f */ "Initiate Recovery", "Release Recovery"
1289};
1290#define NO_ONE_BYTE_MSGS (sizeof(one_byte_msgs) / sizeof (const char *))
1291
1292static const char *two_byte_msgs[] = {
1293/* 0x20 */ "Simple Queue Tag", "Head of Queue Tag", "Ordered Queue Tag"
1294/* 0x23 */ "Ignore Wide Residue"
1295};
1296#define NO_TWO_BYTE_MSGS (sizeof(two_byte_msgs) / sizeof (const char *))
1297
1298static const char *extended_msgs[] = {
1299/* 0x00 */ "Modify Data Pointer", "Synchronous Data Transfer Request",
1300/* 0x02 */ "SCSI-I Extended Identify", "Wide Data Transfer Request"
1301};
1302#define NO_EXTENDED_MSGS (sizeof(two_byte_msgs) / sizeof (const char *))
1303
1304
1305int scsi_print_msg (const unsigned char *msg)
1306{
1307 int len = 0, i;
1308 if (msg[0] == EXTENDED_MESSAGE) {
1309 len = 3 + msg[1];
1310 if (msg[2] < NO_EXTENDED_MSGS)
1311 printk ("%s ", extended_msgs[msg[2]]);
1312 else
1313 printk ("Extended Message, reserved code (0x%02x) ",
1314 (int) msg[2]);
1315 switch (msg[2]) {
1316 case EXTENDED_MODIFY_DATA_POINTER:
1317 printk("pointer = %d", (int) (msg[3] << 24) |
1318 (msg[4] << 16) | (msg[5] << 8) | msg[6]);
1319 break;
1320 case EXTENDED_SDTR:
1321 printk("period = %d ns, offset = %d",
1322 (int) msg[3] * 4, (int) msg[4]);
1323 break;
1324 case EXTENDED_WDTR:
1325 printk("width = 2^%d bytes", msg[3]);
1326 break;
1327 default:
1328 for (i = 2; i < len; ++i)
1329 printk("%02x ", msg[i]);
1330 }
1331 /* Identify */
1332 } else if (msg[0] & 0x80) {
1333 printk("Identify disconnect %sallowed %s %d ",
1334 (msg[0] & 0x40) ? "" : "not ",
1335 (msg[0] & 0x20) ? "target routine" : "lun",
1336 msg[0] & 0x7);
1337 len = 1;
1338 /* Normal One byte */
1339 } else if (msg[0] < 0x1f) {
1340 if (msg[0] < NO_ONE_BYTE_MSGS)
1341 printk(one_byte_msgs[msg[0]]);
1342 else
1343 printk("reserved (%02x) ", msg[0]);
1344 len = 1;
1345 /* Two byte */
1346 } else if (msg[0] <= 0x2f) {
1347 if ((msg[0] - 0x20) < NO_TWO_BYTE_MSGS)
1348 printk("%s %02x ", two_byte_msgs[msg[0] - 0x20],
1349 msg[1]);
1350 else
1351 printk("reserved two byte (%02x %02x) ",
1352 msg[0], msg[1]);
1353 len = 2;
1354 } else
1355 printk("reserved");
1356 return len;
1357}
1358EXPORT_SYMBOL(scsi_print_msg);
1359
1360#else /* ifndef CONFIG_SCSI_CONSTANTS */
1361
1362int scsi_print_msg (const unsigned char *msg)
1363{
1364 int len = 0, i;
1365
1366 if (msg[0] == EXTENDED_MESSAGE) {
1367 len = 3 + msg[1];
1368 for (i = 0; i < len; ++i)
1369 printk("%02x ", msg[i]);
1370 /* Identify */
1371 } else if (msg[0] & 0x80) {
1372 printk("%02x ", msg[0]);
1373 len = 1;
1374 /* Normal One byte */
1375 } else if (msg[0] < 0x1f) {
1376 printk("%02x ", msg[0]);
1377 len = 1;
1378 /* Two byte */
1379 } else if (msg[0] <= 0x2f) {
1380 printk("%02x %02x", msg[0], msg[1]);
1381 len = 2;
1382 } else
1383 printk("%02x ", msg[0]);
1384 return len;
1385}
1386EXPORT_SYMBOL(scsi_print_msg);
1387#endif /* ! CONFIG_SCSI_CONSTANTS */
1388
1389void scsi_print_command(struct scsi_cmnd *cmd) 1281void scsi_print_command(struct scsi_cmnd *cmd)
1390{ 1282{
1391 /* Assume appended output (i.e. not at start of line) */ 1283 /* Assume appended output (i.e. not at start of line) */
@@ -1397,7 +1289,7 @@ EXPORT_SYMBOL(scsi_print_command);
1397 1289
1398#ifdef CONFIG_SCSI_CONSTANTS 1290#ifdef CONFIG_SCSI_CONSTANTS
1399 1291
1400static const char * hostbyte_table[]={ 1292static const char * const hostbyte_table[]={
1401"DID_OK", "DID_NO_CONNECT", "DID_BUS_BUSY", "DID_TIME_OUT", "DID_BAD_TARGET", 1293"DID_OK", "DID_NO_CONNECT", "DID_BUS_BUSY", "DID_TIME_OUT", "DID_BAD_TARGET",
1402"DID_ABORT", "DID_PARITY", "DID_ERROR", "DID_RESET", "DID_BAD_INTR", 1294"DID_ABORT", "DID_PARITY", "DID_ERROR", "DID_RESET", "DID_BAD_INTR",
1403"DID_PASSTHROUGH", "DID_SOFT_ERROR", "DID_IMM_RETRY"}; 1295"DID_PASSTHROUGH", "DID_SOFT_ERROR", "DID_IMM_RETRY"};
@@ -1422,12 +1314,12 @@ void scsi_print_hostbyte(int scsiresult)
1422 1314
1423#ifdef CONFIG_SCSI_CONSTANTS 1315#ifdef CONFIG_SCSI_CONSTANTS
1424 1316
1425static const char * driverbyte_table[]={ 1317static const char * const driverbyte_table[]={
1426"DRIVER_OK", "DRIVER_BUSY", "DRIVER_SOFT", "DRIVER_MEDIA", "DRIVER_ERROR", 1318"DRIVER_OK", "DRIVER_BUSY", "DRIVER_SOFT", "DRIVER_MEDIA", "DRIVER_ERROR",
1427"DRIVER_INVALID", "DRIVER_TIMEOUT", "DRIVER_HARD", "DRIVER_SENSE"}; 1319"DRIVER_INVALID", "DRIVER_TIMEOUT", "DRIVER_HARD", "DRIVER_SENSE"};
1428#define NUM_DRIVERBYTE_STRS (sizeof(driverbyte_table) / sizeof(const char *)) 1320#define NUM_DRIVERBYTE_STRS (sizeof(driverbyte_table) / sizeof(const char *))
1429 1321
1430static const char * driversuggest_table[]={"SUGGEST_OK", 1322static const char * const driversuggest_table[]={"SUGGEST_OK",
1431"SUGGEST_RETRY", "SUGGEST_ABORT", "SUGGEST_REMAP", "SUGGEST_DIE", 1323"SUGGEST_RETRY", "SUGGEST_ABORT", "SUGGEST_REMAP", "SUGGEST_DIE",
1432"SUGGEST_5", "SUGGEST_6", "SUGGEST_7", "SUGGEST_SENSE"}; 1324"SUGGEST_5", "SUGGEST_6", "SUGGEST_7", "SUGGEST_SENSE"};
1433#define NUM_SUGGEST_STRS (sizeof(driversuggest_table) / sizeof(const char *)) 1325#define NUM_SUGGEST_STRS (sizeof(driversuggest_table) / sizeof(const char *))
diff --git a/drivers/scsi/ipr.c b/drivers/scsi/ipr.c
index fa2cb3582cfa..b6714da4d6e2 100644
--- a/drivers/scsi/ipr.c
+++ b/drivers/scsi/ipr.c
@@ -5887,7 +5887,12 @@ static int __devinit ipr_probe_ioa_part2(struct ipr_ioa_cfg *ioa_cfg)
5887 ENTER; 5887 ENTER;
5888 spin_lock_irqsave(ioa_cfg->host->host_lock, host_lock_flags); 5888 spin_lock_irqsave(ioa_cfg->host->host_lock, host_lock_flags);
5889 dev_dbg(&ioa_cfg->pdev->dev, "ioa_cfg adx: 0x%p\n", ioa_cfg); 5889 dev_dbg(&ioa_cfg->pdev->dev, "ioa_cfg adx: 0x%p\n", ioa_cfg);
5890 _ipr_initiate_ioa_reset(ioa_cfg, ipr_reset_enable_ioa, IPR_SHUTDOWN_NONE); 5890 if (ioa_cfg->needs_hard_reset) {
5891 ioa_cfg->needs_hard_reset = 0;
5892 ipr_initiate_ioa_reset(ioa_cfg, IPR_SHUTDOWN_NONE);
5893 } else
5894 _ipr_initiate_ioa_reset(ioa_cfg, ipr_reset_enable_ioa,
5895 IPR_SHUTDOWN_NONE);
5891 5896
5892 spin_unlock_irqrestore(ioa_cfg->host->host_lock, host_lock_flags); 5897 spin_unlock_irqrestore(ioa_cfg->host->host_lock, host_lock_flags);
5893 wait_event(ioa_cfg->reset_wait_q, !ioa_cfg->in_reset_reload); 5898 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,
6264 unsigned long ipr_regs_pci; 6269 unsigned long ipr_regs_pci;
6265 void __iomem *ipr_regs; 6270 void __iomem *ipr_regs;
6266 u32 rc = PCIBIOS_SUCCESSFUL; 6271 u32 rc = PCIBIOS_SUCCESSFUL;
6272 volatile u32 mask, uproc;
6267 6273
6268 ENTER; 6274 ENTER;
6269 6275
@@ -6356,6 +6362,15 @@ static int __devinit ipr_probe_ioa(struct pci_dev *pdev,
6356 goto cleanup_nomem; 6362 goto cleanup_nomem;
6357 } 6363 }
6358 6364
6365 /*
6366 * If HRRQ updated interrupt is not masked, or reset alert is set,
6367 * the card is in an unknown state and needs a hard reset
6368 */
6369 mask = readl(ioa_cfg->regs.sense_interrupt_mask_reg);
6370 uproc = readl(ioa_cfg->regs.sense_uproc_interrupt_reg);
6371 if ((mask & IPR_PCII_HRRQ_UPDATED) == 0 || (uproc & IPR_UPROCI_RESET_ALERT))
6372 ioa_cfg->needs_hard_reset = 1;
6373
6359 ipr_mask_and_clear_interrupts(ioa_cfg, ~IPR_PCII_IOA_TRANS_TO_OPER); 6374 ipr_mask_and_clear_interrupts(ioa_cfg, ~IPR_PCII_IOA_TRANS_TO_OPER);
6360 rc = request_irq(pdev->irq, ipr_isr, SA_SHIRQ, IPR_NAME, ioa_cfg); 6375 rc = request_irq(pdev->irq, ipr_isr, SA_SHIRQ, IPR_NAME, ioa_cfg);
6361 6376
diff --git a/drivers/scsi/ipr.h b/drivers/scsi/ipr.h
index 6bec673c925c..b639332131f1 100644
--- a/drivers/scsi/ipr.h
+++ b/drivers/scsi/ipr.h
@@ -36,8 +36,8 @@
36/* 36/*
37 * Literals 37 * Literals
38 */ 38 */
39#define IPR_DRIVER_VERSION "2.1.0" 39#define IPR_DRIVER_VERSION "2.1.1"
40#define IPR_DRIVER_DATE "(October 31, 2005)" 40#define IPR_DRIVER_DATE "(November 15, 2005)"
41 41
42/* 42/*
43 * IPR_MAX_CMD_PER_LUN: This defines the maximum number of outstanding 43 * IPR_MAX_CMD_PER_LUN: This defines the maximum number of outstanding
@@ -922,6 +922,7 @@ struct ipr_ioa_cfg {
922 u8 dump_taken:1; 922 u8 dump_taken:1;
923 u8 allow_cmds:1; 923 u8 allow_cmds:1;
924 u8 allow_ml_add_del:1; 924 u8 allow_ml_add_del:1;
925 u8 needs_hard_reset:1;
925 926
926 enum ipr_cache_state cache_state; 927 enum ipr_cache_state cache_state;
927 u16 type; /* CCIN of the card */ 928 u16 type; /* CCIN of the card */
diff --git a/drivers/scsi/iscsi_tcp.c b/drivers/scsi/iscsi_tcp.c
index 3d8009f55342..10bcf42cb65c 100644
--- a/drivers/scsi/iscsi_tcp.c
+++ b/drivers/scsi/iscsi_tcp.c
@@ -49,7 +49,7 @@ MODULE_AUTHOR("Dmitry Yusupov <dmitry_yus@yahoo.com>, "
49 "Alex Aizman <itn780@yahoo.com>"); 49 "Alex Aizman <itn780@yahoo.com>");
50MODULE_DESCRIPTION("iSCSI/TCP data-path"); 50MODULE_DESCRIPTION("iSCSI/TCP data-path");
51MODULE_LICENSE("GPL"); 51MODULE_LICENSE("GPL");
52MODULE_VERSION("0:4.409"); 52MODULE_VERSION("0:4.445");
53/* #define DEBUG_TCP */ 53/* #define DEBUG_TCP */
54/* #define DEBUG_SCSI */ 54/* #define DEBUG_SCSI */
55#define DEBUG_ASSERT 55#define DEBUG_ASSERT
@@ -581,10 +581,16 @@ iscsi_hdr_recv(struct iscsi_conn *conn)
581 crypto_digest_digest(conn->rx_tfm, &sg, 1, (u8 *)&cdgst); 581 crypto_digest_digest(conn->rx_tfm, &sg, 1, (u8 *)&cdgst);
582 rdgst = *(uint32_t*)((char*)hdr + sizeof(struct iscsi_hdr) + 582 rdgst = *(uint32_t*)((char*)hdr + sizeof(struct iscsi_hdr) +
583 conn->in.ahslen); 583 conn->in.ahslen);
584 if (cdgst != rdgst) {
585 printk(KERN_ERR "iscsi_tcp: itt %x: hdrdgst error "
586 "recv 0x%x calc 0x%x\n", conn->in.itt, rdgst,
587 cdgst);
588 return ISCSI_ERR_HDR_DGST;
589 }
584 } 590 }
585 591
586 /* save opcode for later */ 592 /* save opcode for later */
587 conn->in.opcode = hdr->opcode; 593 conn->in.opcode = hdr->opcode & ISCSI_OPCODE_MASK;
588 594
589 /* verify itt (itt encoding: age+cid+itt) */ 595 /* verify itt (itt encoding: age+cid+itt) */
590 if (hdr->itt != cpu_to_be32(ISCSI_RESERVED_TAG)) { 596 if (hdr->itt != cpu_to_be32(ISCSI_RESERVED_TAG)) {
@@ -610,13 +616,6 @@ iscsi_hdr_recv(struct iscsi_conn *conn)
610 conn->in.ahslen, conn->in.datalen); 616 conn->in.ahslen, conn->in.datalen);
611 617
612 if (conn->in.itt < session->cmds_max) { 618 if (conn->in.itt < session->cmds_max) {
613 if (conn->hdrdgst_en && cdgst != rdgst) {
614 printk(KERN_ERR "iscsi_tcp: itt %x: hdrdgst error "
615 "recv 0x%x calc 0x%x\n", conn->in.itt, rdgst,
616 cdgst);
617 return ISCSI_ERR_HDR_DGST;
618 }
619
620 ctask = (struct iscsi_cmd_task *)session->cmds[conn->in.itt]; 619 ctask = (struct iscsi_cmd_task *)session->cmds[conn->in.itt];
621 620
622 if (!ctask->sc) { 621 if (!ctask->sc) {
@@ -642,9 +641,7 @@ iscsi_hdr_recv(struct iscsi_conn *conn)
642 switch(conn->in.opcode) { 641 switch(conn->in.opcode) {
643 case ISCSI_OP_SCSI_CMD_RSP: 642 case ISCSI_OP_SCSI_CMD_RSP:
644 BUG_ON((void*)ctask != ctask->sc->SCp.ptr); 643 BUG_ON((void*)ctask != ctask->sc->SCp.ptr);
645 if (ctask->hdr.flags & ISCSI_FLAG_CMD_WRITE) 644 if (!conn->in.datalen)
646 rc = iscsi_cmd_rsp(conn, ctask);
647 else if (!conn->in.datalen)
648 rc = iscsi_cmd_rsp(conn, ctask); 645 rc = iscsi_cmd_rsp(conn, ctask);
649 else 646 else
650 /* 647 /*
@@ -666,8 +663,7 @@ iscsi_hdr_recv(struct iscsi_conn *conn)
666 break; 663 break;
667 case ISCSI_OP_R2T: 664 case ISCSI_OP_R2T:
668 BUG_ON((void*)ctask != ctask->sc->SCp.ptr); 665 BUG_ON((void*)ctask != ctask->sc->SCp.ptr);
669 if (ctask->hdr.flags & ISCSI_FLAG_CMD_WRITE && 666 if (ctask->sc->sc_data_direction == DMA_TO_DEVICE)
670 ctask->sc->sc_data_direction == DMA_TO_DEVICE)
671 rc = iscsi_r2t_rsp(conn, ctask); 667 rc = iscsi_r2t_rsp(conn, ctask);
672 else 668 else
673 rc = ISCSI_ERR_PROTO; 669 rc = ISCSI_ERR_PROTO;
@@ -906,11 +902,20 @@ partial_sg_digest_update(struct iscsi_conn *conn, struct scatterlist *sg,
906 crypto_digest_update(conn->data_rx_tfm, &temp, 1); 902 crypto_digest_update(conn->data_rx_tfm, &temp, 1);
907} 903}
908 904
905static void
906iscsi_recv_digest_update(struct iscsi_conn *conn, char* buf, int len)
907{
908 struct scatterlist tmp;
909
910 sg_init_one(&tmp, buf, len);
911 crypto_digest_update(conn->data_rx_tfm, &tmp, 1);
912}
913
909static int iscsi_scsi_data_in(struct iscsi_conn *conn) 914static int iscsi_scsi_data_in(struct iscsi_conn *conn)
910{ 915{
911 struct iscsi_cmd_task *ctask = conn->in.ctask; 916 struct iscsi_cmd_task *ctask = conn->in.ctask;
912 struct scsi_cmnd *sc = ctask->sc; 917 struct scsi_cmnd *sc = ctask->sc;
913 struct scatterlist tmp, *sg; 918 struct scatterlist *sg;
914 int i, offset, rc = 0; 919 int i, offset, rc = 0;
915 920
916 BUG_ON((void*)ctask != sc->SCp.ptr); 921 BUG_ON((void*)ctask != sc->SCp.ptr);
@@ -924,10 +929,8 @@ static int iscsi_scsi_data_in(struct iscsi_conn *conn)
924 sc->request_bufflen, ctask->data_offset); 929 sc->request_bufflen, ctask->data_offset);
925 if (rc == -EAGAIN) 930 if (rc == -EAGAIN)
926 return rc; 931 return rc;
927 if (conn->datadgst_en) { 932 if (conn->datadgst_en)
928 sg_init_one(&tmp, sc->request_buffer, i); 933 iscsi_recv_digest_update(conn, sc->request_buffer, i);
929 crypto_digest_update(conn->data_rx_tfm, &tmp, 1);
930 }
931 rc = 0; 934 rc = 0;
932 goto done; 935 goto done;
933 } 936 }
@@ -1021,6 +1024,9 @@ iscsi_data_recv(struct iscsi_conn *conn)
1021 conn->in.hdr = &conn->hdr; 1024 conn->in.hdr = &conn->hdr;
1022 conn->senselen = (conn->data[0] << 8) | conn->data[1]; 1025 conn->senselen = (conn->data[0] << 8) | conn->data[1];
1023 rc = iscsi_cmd_rsp(conn, conn->in.ctask); 1026 rc = iscsi_cmd_rsp(conn, conn->in.ctask);
1027 if (!rc && conn->datadgst_en)
1028 iscsi_recv_digest_update(conn, conn->data,
1029 conn->in.datalen);
1024 } 1030 }
1025 break; 1031 break;
1026 case ISCSI_OP_TEXT_RSP: 1032 case ISCSI_OP_TEXT_RSP:
@@ -1045,6 +1051,11 @@ iscsi_data_recv(struct iscsi_conn *conn)
1045 rc = iscsi_recv_pdu(iscsi_handle(conn), conn->in.hdr, 1051 rc = iscsi_recv_pdu(iscsi_handle(conn), conn->in.hdr,
1046 conn->data, conn->in.datalen); 1052 conn->data, conn->in.datalen);
1047 1053
1054 if (!rc && conn->datadgst_en &&
1055 conn->in.opcode != ISCSI_OP_LOGIN_RSP)
1056 iscsi_recv_digest_update(conn, conn->data,
1057 conn->in.datalen);
1058
1048 if (mtask && conn->login_mtask != mtask) { 1059 if (mtask && conn->login_mtask != mtask) {
1049 spin_lock(&session->lock); 1060 spin_lock(&session->lock);
1050 __kfifo_put(session->mgmtpool.queue, (void*)&mtask, 1061 __kfifo_put(session->mgmtpool.queue, (void*)&mtask,
@@ -1053,6 +1064,8 @@ iscsi_data_recv(struct iscsi_conn *conn)
1053 } 1064 }
1054 } 1065 }
1055 break; 1066 break;
1067 case ISCSI_OP_ASYNC_EVENT:
1068 case ISCSI_OP_REJECT:
1056 default: 1069 default:
1057 BUG_ON(1); 1070 BUG_ON(1);
1058 } 1071 }
@@ -1114,8 +1127,7 @@ more:
1114 */ 1127 */
1115 rc = iscsi_hdr_recv(conn); 1128 rc = iscsi_hdr_recv(conn);
1116 if (!rc && conn->in.datalen) { 1129 if (!rc && conn->in.datalen) {
1117 if (conn->datadgst_en && 1130 if (conn->datadgst_en) {
1118 conn->in.opcode == ISCSI_OP_SCSI_DATA_IN) {
1119 BUG_ON(!conn->data_rx_tfm); 1131 BUG_ON(!conn->data_rx_tfm);
1120 crypto_digest_init(conn->data_rx_tfm); 1132 crypto_digest_init(conn->data_rx_tfm);
1121 } 1133 }
@@ -1127,26 +1139,24 @@ more:
1127 } 1139 }
1128 1140
1129 if (conn->in_progress == IN_PROGRESS_DDIGEST_RECV) { 1141 if (conn->in_progress == IN_PROGRESS_DDIGEST_RECV) {
1142 uint32_t recv_digest;
1130 debug_tcp("extra data_recv offset %d copy %d\n", 1143 debug_tcp("extra data_recv offset %d copy %d\n",
1131 conn->in.offset, conn->in.copy); 1144 conn->in.offset, conn->in.copy);
1132 if (conn->in.opcode == ISCSI_OP_SCSI_DATA_IN) { 1145 skb_copy_bits(conn->in.skb, conn->in.offset,
1133 uint32_t recv_digest; 1146 &recv_digest, 4);
1134 skb_copy_bits(conn->in.skb, conn->in.offset, 1147 conn->in.offset += 4;
1135 &recv_digest, 4); 1148 conn->in.copy -= 4;
1136 conn->in.offset += 4; 1149 if (recv_digest != conn->in.datadgst) {
1137 conn->in.copy -= 4; 1150 debug_tcp("iscsi_tcp: data digest error!"
1138 if (recv_digest != conn->in.datadgst) { 1151 "0x%x != 0x%x\n", recv_digest,
1139 debug_tcp("iscsi_tcp: data digest error!" 1152 conn->in.datadgst);
1140 "0x%x != 0x%x\n", recv_digest, 1153 iscsi_conn_failure(conn, ISCSI_ERR_DATA_DGST);
1141 conn->in.datadgst); 1154 return 0;
1142 iscsi_conn_failure(conn, ISCSI_ERR_DATA_DGST); 1155 } else {
1143 return 0; 1156 debug_tcp("iscsi_tcp: data digest match!"
1144 } else { 1157 "0x%x == 0x%x\n", recv_digest,
1145 debug_tcp("iscsi_tcp: data digest match!" 1158 conn->in.datadgst);
1146 "0x%x == 0x%x\n", recv_digest, 1159 conn->in_progress = IN_PROGRESS_WAIT_HEADER;
1147 conn->in.datadgst);
1148 conn->in_progress = IN_PROGRESS_WAIT_HEADER;
1149 }
1150 } 1160 }
1151 } 1161 }
1152 1162
@@ -1167,8 +1177,7 @@ more:
1167 } 1177 }
1168 conn->in.copy -= conn->in.padding; 1178 conn->in.copy -= conn->in.padding;
1169 conn->in.offset += conn->in.padding; 1179 conn->in.offset += conn->in.padding;
1170 if (conn->datadgst_en && 1180 if (conn->datadgst_en) {
1171 conn->in.opcode == ISCSI_OP_SCSI_DATA_IN) {
1172 if (conn->in.padding) { 1181 if (conn->in.padding) {
1173 debug_tcp("padding -> %d\n", conn->in.padding); 1182 debug_tcp("padding -> %d\n", conn->in.padding);
1174 memset(pad, 0, conn->in.padding); 1183 memset(pad, 0, conn->in.padding);
@@ -1237,8 +1246,9 @@ iscsi_tcp_state_change(struct sock *sk)
1237 conn = (struct iscsi_conn*)sk->sk_user_data; 1246 conn = (struct iscsi_conn*)sk->sk_user_data;
1238 session = conn->session; 1247 session = conn->session;
1239 1248
1240 if (sk->sk_state == TCP_CLOSE_WAIT || 1249 if ((sk->sk_state == TCP_CLOSE_WAIT ||
1241 sk->sk_state == TCP_CLOSE) { 1250 sk->sk_state == TCP_CLOSE) &&
1251 !atomic_read(&sk->sk_rmem_alloc)) {
1242 debug_tcp("iscsi_tcp_state_change: TCP_CLOSE|TCP_CLOSE_WAIT\n"); 1252 debug_tcp("iscsi_tcp_state_change: TCP_CLOSE|TCP_CLOSE_WAIT\n");
1243 iscsi_conn_failure(conn, ISCSI_ERR_CONN_FAILED); 1253 iscsi_conn_failure(conn, ISCSI_ERR_CONN_FAILED);
1244 } 1254 }
@@ -2389,6 +2399,15 @@ fault:
2389} 2399}
2390 2400
2391static int 2401static int
2402iscsi_change_queue_depth(struct scsi_device *sdev, int depth)
2403{
2404 if (depth > ISCSI_MAX_CMD_PER_LUN)
2405 depth = ISCSI_MAX_CMD_PER_LUN;
2406 scsi_adjust_queue_depth(sdev, scsi_get_tag_type(sdev), depth);
2407 return sdev->queue_depth;
2408}
2409
2410static int
2392iscsi_pool_init(struct iscsi_queue *q, int max, void ***items, int item_size) 2411iscsi_pool_init(struct iscsi_queue *q, int max, void ***items, int item_size)
2393{ 2412{
2394 int i; 2413 int i;
@@ -2853,8 +2872,11 @@ iscsi_conn_stop(iscsi_connh_t connh, int flag)
2853 * in hdr_extract() and will be re-negotiated at 2872 * in hdr_extract() and will be re-negotiated at
2854 * set_param() time. 2873 * set_param() time.
2855 */ 2874 */
2856 if (flag == STOP_CONN_RECOVER) 2875 if (flag == STOP_CONN_RECOVER) {
2857 conn->hdr_size = sizeof(struct iscsi_hdr); 2876 conn->hdr_size = sizeof(struct iscsi_hdr);
2877 conn->hdrdgst_en = 0;
2878 conn->datadgst_en = 0;
2879 }
2858 } 2880 }
2859 up(&conn->xmitsema); 2881 up(&conn->xmitsema);
2860} 2882}
@@ -3247,13 +3269,14 @@ iscsi_r2tpool_free(struct iscsi_session *session)
3247static struct scsi_host_template iscsi_sht = { 3269static struct scsi_host_template iscsi_sht = {
3248 .name = "iSCSI Initiator over TCP/IP, v." 3270 .name = "iSCSI Initiator over TCP/IP, v."
3249 ISCSI_VERSION_STR, 3271 ISCSI_VERSION_STR,
3250 .queuecommand = iscsi_queuecommand, 3272 .queuecommand = iscsi_queuecommand,
3273 .change_queue_depth = iscsi_change_queue_depth,
3251 .can_queue = ISCSI_XMIT_CMDS_MAX - 1, 3274 .can_queue = ISCSI_XMIT_CMDS_MAX - 1,
3252 .sg_tablesize = ISCSI_SG_TABLESIZE, 3275 .sg_tablesize = ISCSI_SG_TABLESIZE,
3253 .cmd_per_lun = ISCSI_CMD_PER_LUN, 3276 .cmd_per_lun = ISCSI_DEF_CMD_PER_LUN,
3254 .eh_abort_handler = iscsi_eh_abort, 3277 .eh_abort_handler = iscsi_eh_abort,
3255 .eh_host_reset_handler = iscsi_eh_host_reset, 3278 .eh_host_reset_handler = iscsi_eh_host_reset,
3256 .use_clustering = DISABLE_CLUSTERING, 3279 .use_clustering = DISABLE_CLUSTERING,
3257 .proc_name = "iscsi_tcp", 3280 .proc_name = "iscsi_tcp",
3258 .this_id = -1, 3281 .this_id = -1,
3259}; 3282};
diff --git a/drivers/scsi/iscsi_tcp.h b/drivers/scsi/iscsi_tcp.h
index d23ae68fae0d..855f2dfd18af 100644
--- a/drivers/scsi/iscsi_tcp.h
+++ b/drivers/scsi/iscsi_tcp.h
@@ -71,7 +71,8 @@
71#define ISCSI_MGMT_CMDS_MAX 32 /* must be power of 2 */ 71#define ISCSI_MGMT_CMDS_MAX 32 /* must be power of 2 */
72#define ISCSI_MGMT_ITT_OFFSET 0xa00 72#define ISCSI_MGMT_ITT_OFFSET 0xa00
73#define ISCSI_SG_TABLESIZE SG_ALL 73#define ISCSI_SG_TABLESIZE SG_ALL
74#define ISCSI_CMD_PER_LUN 128 74#define ISCSI_DEF_CMD_PER_LUN 32
75#define ISCSI_MAX_CMD_PER_LUN 128
75#define ISCSI_TCP_MAX_CMD_LEN 16 76#define ISCSI_TCP_MAX_CMD_LEN 16
76 77
77#define ITT_MASK (0xfff) 78#define ITT_MASK (0xfff)
diff --git a/drivers/scsi/lpfc/lpfc.h b/drivers/scsi/lpfc/lpfc.h
index 3062b39fbdb9..38ffa8d6e629 100644
--- a/drivers/scsi/lpfc/lpfc.h
+++ b/drivers/scsi/lpfc/lpfc.h
@@ -29,9 +29,10 @@ struct lpfc_sli2_slim;
29#define LPFC_LC_HBA_Q_DEPTH 1024 /* max cmds per low cost hba */ 29#define LPFC_LC_HBA_Q_DEPTH 1024 /* max cmds per low cost hba */
30#define LPFC_LP101_HBA_Q_DEPTH 128 /* max cmds per low cost hba */ 30#define LPFC_LP101_HBA_Q_DEPTH 128 /* max cmds per low cost hba */
31 31
32#define LPFC_CMD_PER_LUN 30 /* max outstanding cmds per lun */ 32#define LPFC_CMD_PER_LUN 3 /* max outstanding cmds per lun */
33#define LPFC_SG_SEG_CNT 64 /* sg element count per scsi cmnd */ 33#define LPFC_SG_SEG_CNT 64 /* sg element count per scsi cmnd */
34#define LPFC_IOCB_LIST_CNT 2250 /* list of IOCBs for fast-path usage. */ 34#define LPFC_IOCB_LIST_CNT 2250 /* list of IOCBs for fast-path usage. */
35#define LPFC_Q_RAMP_UP_INTERVAL 120 /* lun q_depth ramp up interval */
35 36
36/* Define macros for 64 bit support */ 37/* Define macros for 64 bit support */
37#define putPaddrLow(addr) ((uint32_t) (0xffffffff & (u64)(addr))) 38#define putPaddrLow(addr) ((uint32_t) (0xffffffff & (u64)(addr)))
@@ -45,6 +46,11 @@ struct lpfc_sli2_slim;
45 46
46#define MAX_HBAEVT 32 47#define MAX_HBAEVT 32
47 48
49enum lpfc_polling_flags {
50 ENABLE_FCP_RING_POLLING = 0x1,
51 DISABLE_FCP_RING_INT = 0x2
52};
53
48/* Provide DMA memory definitions the driver uses per port instance. */ 54/* Provide DMA memory definitions the driver uses per port instance. */
49struct lpfc_dmabuf { 55struct lpfc_dmabuf {
50 struct list_head list; 56 struct list_head list;
@@ -167,6 +173,7 @@ struct lpfc_hba {
167 dma_addr_t slim2p_mapping; 173 dma_addr_t slim2p_mapping;
168 uint16_t pci_cfg_value; 174 uint16_t pci_cfg_value;
169 175
176 struct semaphore hba_can_block;
170 uint32_t hba_state; 177 uint32_t hba_state;
171 178
172#define LPFC_INIT_START 1 /* Initial state after board reset */ 179#define LPFC_INIT_START 1 /* Initial state after board reset */
@@ -286,6 +293,8 @@ struct lpfc_hba {
286 uint32_t cfg_fcp_bind_method; 293 uint32_t cfg_fcp_bind_method;
287 uint32_t cfg_discovery_threads; 294 uint32_t cfg_discovery_threads;
288 uint32_t cfg_max_luns; 295 uint32_t cfg_max_luns;
296 uint32_t cfg_poll;
297 uint32_t cfg_poll_tmo;
289 uint32_t cfg_sg_seg_cnt; 298 uint32_t cfg_sg_seg_cnt;
290 uint32_t cfg_sg_dma_buf_size; 299 uint32_t cfg_sg_dma_buf_size;
291 300
@@ -337,7 +346,9 @@ struct lpfc_hba {
337#define VPD_PORT 0x8 /* valid vpd port data */ 346#define VPD_PORT 0x8 /* valid vpd port data */
338#define VPD_MASK 0xf /* mask for any vpd data */ 347#define VPD_MASK 0xf /* mask for any vpd data */
339 348
349 struct timer_list fcp_poll_timer;
340 struct timer_list els_tmofunc; 350 struct timer_list els_tmofunc;
351
341 /* 352 /*
342 * stat counters 353 * stat counters
343 */ 354 */
@@ -348,6 +359,7 @@ struct lpfc_hba {
348 struct lpfc_sysfs_mbox sysfs_mbox; 359 struct lpfc_sysfs_mbox sysfs_mbox;
349 360
350 /* fastpath list. */ 361 /* fastpath list. */
362 spinlock_t scsi_buf_list_lock;
351 struct list_head lpfc_scsi_buf_list; 363 struct list_head lpfc_scsi_buf_list;
352 uint32_t total_scsi_bufs; 364 uint32_t total_scsi_bufs;
353 struct list_head lpfc_iocb_list; 365 struct list_head lpfc_iocb_list;
diff --git a/drivers/scsi/lpfc/lpfc_attr.c b/drivers/scsi/lpfc/lpfc_attr.c
index 89e8222bc7cc..5625a8c2a8fd 100644
--- a/drivers/scsi/lpfc/lpfc_attr.c
+++ b/drivers/scsi/lpfc/lpfc_attr.c
@@ -278,6 +278,71 @@ lpfc_board_online_store(struct class_device *cdev, const char *buf,
278 return -EIO; 278 return -EIO;
279} 279}
280 280
281static ssize_t
282lpfc_poll_show(struct class_device *cdev, char *buf)
283{
284 struct Scsi_Host *host = class_to_shost(cdev);
285 struct lpfc_hba *phba = (struct lpfc_hba*)host->hostdata[0];
286
287 return snprintf(buf, PAGE_SIZE, "%#x\n", phba->cfg_poll);
288}
289
290static ssize_t
291lpfc_poll_store(struct class_device *cdev, const char *buf,
292 size_t count)
293{
294 struct Scsi_Host *host = class_to_shost(cdev);
295 struct lpfc_hba *phba = (struct lpfc_hba*)host->hostdata[0];
296 uint32_t creg_val;
297 uint32_t old_val;
298 int val=0;
299
300 if (!isdigit(buf[0]))
301 return -EINVAL;
302
303 if (sscanf(buf, "%i", &val) != 1)
304 return -EINVAL;
305
306 if ((val & 0x3) != val)
307 return -EINVAL;
308
309 spin_lock_irq(phba->host->host_lock);
310
311 old_val = phba->cfg_poll;
312
313 if (val & ENABLE_FCP_RING_POLLING) {
314 if ((val & DISABLE_FCP_RING_INT) &&
315 !(old_val & DISABLE_FCP_RING_INT)) {
316 creg_val = readl(phba->HCregaddr);
317 creg_val &= ~(HC_R0INT_ENA << LPFC_FCP_RING);
318 writel(creg_val, phba->HCregaddr);
319 readl(phba->HCregaddr); /* flush */
320
321 lpfc_poll_start_timer(phba);
322 }
323 } else if (val != 0x0) {
324 spin_unlock_irq(phba->host->host_lock);
325 return -EINVAL;
326 }
327
328 if (!(val & DISABLE_FCP_RING_INT) &&
329 (old_val & DISABLE_FCP_RING_INT))
330 {
331 spin_unlock_irq(phba->host->host_lock);
332 del_timer(&phba->fcp_poll_timer);
333 spin_lock_irq(phba->host->host_lock);
334 creg_val = readl(phba->HCregaddr);
335 creg_val |= (HC_R0INT_ENA << LPFC_FCP_RING);
336 writel(creg_val, phba->HCregaddr);
337 readl(phba->HCregaddr); /* flush */
338 }
339
340 phba->cfg_poll = val;
341
342 spin_unlock_irq(phba->host->host_lock);
343
344 return strlen(buf);
345}
281 346
282#define lpfc_param_show(attr) \ 347#define lpfc_param_show(attr) \
283static ssize_t \ 348static ssize_t \
@@ -416,6 +481,15 @@ static CLASS_DEVICE_ATTR(management_version, S_IRUGO, management_version_show,
416static CLASS_DEVICE_ATTR(board_online, S_IRUGO | S_IWUSR, 481static CLASS_DEVICE_ATTR(board_online, S_IRUGO | S_IWUSR,
417 lpfc_board_online_show, lpfc_board_online_store); 482 lpfc_board_online_show, lpfc_board_online_store);
418 483
484static int lpfc_poll = 0;
485module_param(lpfc_poll, int, 0);
486MODULE_PARM_DESC(lpfc_poll, "FCP ring polling mode control:"
487 " 0 - none,"
488 " 1 - poll with interrupts enabled"
489 " 3 - poll and disable FCP ring interrupts");
490
491static CLASS_DEVICE_ATTR(lpfc_poll, S_IRUGO | S_IWUSR,
492 lpfc_poll_show, lpfc_poll_store);
419 493
420/* 494/*
421# lpfc_log_verbose: Only turn this flag on if you are willing to risk being 495# 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");
523# is 0. Default value of cr_count is 1. The cr_count feature is disabled if 597# is 0. Default value of cr_count is 1. The cr_count feature is disabled if
524# cr_delay is set to 0. 598# cr_delay is set to 0.
525*/ 599*/
526LPFC_ATTR(cr_delay, 0, 0, 63, "A count of milliseconds after which an" 600LPFC_ATTR_RW(cr_delay, 0, 0, 63, "A count of milliseconds after which an"
527 "interrupt response is generated"); 601 "interrupt response is generated");
528 602
529LPFC_ATTR(cr_count, 1, 1, 255, "A count of I/O completions after which an" 603LPFC_ATTR_RW(cr_count, 1, 1, 255, "A count of I/O completions after which an"
530 "interrupt response is generated"); 604 "interrupt response is generated");
531 605
532/* 606/*
@@ -553,6 +627,13 @@ LPFC_ATTR(discovery_threads, 32, 1, 64, "Maximum number of ELS commands"
553LPFC_ATTR_R(max_luns, 256, 1, 32768, 627LPFC_ATTR_R(max_luns, 256, 1, 32768,
554 "Maximum number of LUNs per target driver will support"); 628 "Maximum number of LUNs per target driver will support");
555 629
630/*
631# lpfc_poll_tmo: .Milliseconds driver will wait between polling FCP ring.
632# Value range is [1,255], default value is 10.
633*/
634LPFC_ATTR_RW(poll_tmo, 10, 1, 255,
635 "Milliseconds driver will wait between polling FCP ring");
636
556struct class_device_attribute *lpfc_host_attrs[] = { 637struct class_device_attribute *lpfc_host_attrs[] = {
557 &class_device_attr_info, 638 &class_device_attr_info,
558 &class_device_attr_serialnum, 639 &class_device_attr_serialnum,
@@ -575,11 +656,15 @@ struct class_device_attribute *lpfc_host_attrs[] = {
575 &class_device_attr_lpfc_topology, 656 &class_device_attr_lpfc_topology,
576 &class_device_attr_lpfc_scan_down, 657 &class_device_attr_lpfc_scan_down,
577 &class_device_attr_lpfc_link_speed, 658 &class_device_attr_lpfc_link_speed,
659 &class_device_attr_lpfc_cr_delay,
660 &class_device_attr_lpfc_cr_count,
578 &class_device_attr_lpfc_fdmi_on, 661 &class_device_attr_lpfc_fdmi_on,
579 &class_device_attr_lpfc_max_luns, 662 &class_device_attr_lpfc_max_luns,
580 &class_device_attr_nport_evt_cnt, 663 &class_device_attr_nport_evt_cnt,
581 &class_device_attr_management_version, 664 &class_device_attr_management_version,
582 &class_device_attr_board_online, 665 &class_device_attr_board_online,
666 &class_device_attr_lpfc_poll,
667 &class_device_attr_lpfc_poll_tmo,
583 NULL, 668 NULL,
584}; 669};
585 670
@@ -1292,6 +1377,9 @@ lpfc_get_cfgparam(struct lpfc_hba *phba)
1292 lpfc_fdmi_on_init(phba, lpfc_fdmi_on); 1377 lpfc_fdmi_on_init(phba, lpfc_fdmi_on);
1293 lpfc_discovery_threads_init(phba, lpfc_discovery_threads); 1378 lpfc_discovery_threads_init(phba, lpfc_discovery_threads);
1294 lpfc_max_luns_init(phba, lpfc_max_luns); 1379 lpfc_max_luns_init(phba, lpfc_max_luns);
1380 lpfc_poll_tmo_init(phba, lpfc_poll_tmo);
1381
1382 phba->cfg_poll = lpfc_poll;
1295 1383
1296 /* 1384 /*
1297 * The total number of segments is the configuration value plus 2 1385 * The total number of segments is the configuration value plus 2
diff --git a/drivers/scsi/lpfc/lpfc_crtn.h b/drivers/scsi/lpfc/lpfc_crtn.h
index d527d05a607f..f1e708946e66 100644
--- a/drivers/scsi/lpfc/lpfc_crtn.h
+++ b/drivers/scsi/lpfc/lpfc_crtn.h
@@ -143,6 +143,9 @@ LPFC_MBOXQ_t *lpfc_mbox_get(struct lpfc_hba *);
143int lpfc_mem_alloc(struct lpfc_hba *); 143int lpfc_mem_alloc(struct lpfc_hba *);
144void lpfc_mem_free(struct lpfc_hba *); 144void lpfc_mem_free(struct lpfc_hba *);
145 145
146void lpfc_poll_timeout(unsigned long ptr);
147void lpfc_poll_start_timer(struct lpfc_hba * phba);
148void lpfc_sli_poll_fcp_ring(struct lpfc_hba * hba);
146struct lpfc_iocbq * lpfc_sli_get_iocbq(struct lpfc_hba *); 149struct lpfc_iocbq * lpfc_sli_get_iocbq(struct lpfc_hba *);
147void lpfc_sli_release_iocbq(struct lpfc_hba * phba, struct lpfc_iocbq * iocb); 150void lpfc_sli_release_iocbq(struct lpfc_hba * phba, struct lpfc_iocbq * iocb);
148uint16_t lpfc_sli_next_iotag(struct lpfc_hba * phba, struct lpfc_iocbq * iocb); 151uint16_t lpfc_sli_next_iotag(struct lpfc_hba * phba, struct lpfc_iocbq * iocb);
diff --git a/drivers/scsi/lpfc/lpfc_disc.h b/drivers/scsi/lpfc/lpfc_disc.h
index 084e7628ce17..ed6c81660e03 100644
--- a/drivers/scsi/lpfc/lpfc_disc.h
+++ b/drivers/scsi/lpfc/lpfc_disc.h
@@ -73,6 +73,8 @@ struct lpfc_nodelist {
73 struct lpfc_hba *nlp_phba; 73 struct lpfc_hba *nlp_phba;
74 struct lpfc_work_evt nodev_timeout_evt; 74 struct lpfc_work_evt nodev_timeout_evt;
75 struct lpfc_work_evt els_retry_evt; 75 struct lpfc_work_evt els_retry_evt;
76 unsigned long last_ramp_up_time; /* jiffy of last ramp up */
77 unsigned long last_q_full_time; /* jiffy of last queue full */
76}; 78};
77 79
78/* Defines for nlp_flag (uint32) */ 80/* Defines for nlp_flag (uint32) */
diff --git a/drivers/scsi/lpfc/lpfc_els.c b/drivers/scsi/lpfc/lpfc_els.c
index bcc29ec126dc..20f1a0713db2 100644
--- a/drivers/scsi/lpfc/lpfc_els.c
+++ b/drivers/scsi/lpfc/lpfc_els.c
@@ -720,6 +720,7 @@ lpfc_cmpl_els_plogi(struct lpfc_hba * phba, struct lpfc_iocbq * cmdiocb,
720 /* Do not call DSM for lpfc_els_abort'ed ELS cmds */ 720 /* Do not call DSM for lpfc_els_abort'ed ELS cmds */
721 if ((irsp->ulpStatus == IOSTAT_LOCAL_REJECT) && 721 if ((irsp->ulpStatus == IOSTAT_LOCAL_REJECT) &&
722 ((irsp->un.ulpWord[4] == IOERR_SLI_ABORTED) || 722 ((irsp->un.ulpWord[4] == IOERR_SLI_ABORTED) ||
723 (irsp->un.ulpWord[4] == IOERR_LINK_DOWN) ||
723 (irsp->un.ulpWord[4] == IOERR_SLI_DOWN))) { 724 (irsp->un.ulpWord[4] == IOERR_SLI_DOWN))) {
724 disc = (ndlp->nlp_flag & NLP_NPR_2B_DISC); 725 disc = (ndlp->nlp_flag & NLP_NPR_2B_DISC);
725 } 726 }
@@ -869,6 +870,7 @@ lpfc_cmpl_els_prli(struct lpfc_hba * phba, struct lpfc_iocbq * cmdiocb,
869 /* Do not call DSM for lpfc_els_abort'ed ELS cmds */ 870 /* Do not call DSM for lpfc_els_abort'ed ELS cmds */
870 if ((irsp->ulpStatus == IOSTAT_LOCAL_REJECT) && 871 if ((irsp->ulpStatus == IOSTAT_LOCAL_REJECT) &&
871 ((irsp->un.ulpWord[4] == IOERR_SLI_ABORTED) || 872 ((irsp->un.ulpWord[4] == IOERR_SLI_ABORTED) ||
873 (irsp->un.ulpWord[4] == IOERR_LINK_DOWN) ||
872 (irsp->un.ulpWord[4] == IOERR_SLI_DOWN))) { 874 (irsp->un.ulpWord[4] == IOERR_SLI_DOWN))) {
873 goto out; 875 goto out;
874 } 876 }
@@ -1054,6 +1056,7 @@ lpfc_cmpl_els_adisc(struct lpfc_hba * phba, struct lpfc_iocbq * cmdiocb,
1054 /* Do not call DSM for lpfc_els_abort'ed ELS cmds */ 1056 /* Do not call DSM for lpfc_els_abort'ed ELS cmds */
1055 if ((irsp->ulpStatus == IOSTAT_LOCAL_REJECT) && 1057 if ((irsp->ulpStatus == IOSTAT_LOCAL_REJECT) &&
1056 ((irsp->un.ulpWord[4] == IOERR_SLI_ABORTED) || 1058 ((irsp->un.ulpWord[4] == IOERR_SLI_ABORTED) ||
1059 (irsp->un.ulpWord[4] == IOERR_LINK_DOWN) ||
1057 (irsp->un.ulpWord[4] == IOERR_SLI_DOWN))) { 1060 (irsp->un.ulpWord[4] == IOERR_SLI_DOWN))) {
1058 disc = (ndlp->nlp_flag & NLP_NPR_2B_DISC); 1061 disc = (ndlp->nlp_flag & NLP_NPR_2B_DISC);
1059 } 1062 }
@@ -1205,6 +1208,7 @@ lpfc_cmpl_els_logo(struct lpfc_hba * phba, struct lpfc_iocbq * cmdiocb,
1205 /* Do not call DSM for lpfc_els_abort'ed ELS cmds */ 1208 /* Do not call DSM for lpfc_els_abort'ed ELS cmds */
1206 if ((irsp->ulpStatus == IOSTAT_LOCAL_REJECT) && 1209 if ((irsp->ulpStatus == IOSTAT_LOCAL_REJECT) &&
1207 ((irsp->un.ulpWord[4] == IOERR_SLI_ABORTED) || 1210 ((irsp->un.ulpWord[4] == IOERR_SLI_ABORTED) ||
1211 (irsp->un.ulpWord[4] == IOERR_LINK_DOWN) ||
1208 (irsp->un.ulpWord[4] == IOERR_SLI_DOWN))) { 1212 (irsp->un.ulpWord[4] == IOERR_SLI_DOWN))) {
1209 goto out; 1213 goto out;
1210 } 1214 }
diff --git a/drivers/scsi/lpfc/lpfc_hbadisc.c b/drivers/scsi/lpfc/lpfc_hbadisc.c
index 259eeb161b82..a1f751e79405 100644
--- a/drivers/scsi/lpfc/lpfc_hbadisc.c
+++ b/drivers/scsi/lpfc/lpfc_hbadisc.c
@@ -1017,12 +1017,7 @@ lpfc_register_remote_port(struct lpfc_hba * phba,
1017 rport_ids.port_name = wwn_to_u64(ndlp->nlp_portname.u.wwn); 1017 rport_ids.port_name = wwn_to_u64(ndlp->nlp_portname.u.wwn);
1018 rport_ids.port_id = ndlp->nlp_DID; 1018 rport_ids.port_id = ndlp->nlp_DID;
1019 rport_ids.roles = FC_RPORT_ROLE_UNKNOWN; 1019 rport_ids.roles = FC_RPORT_ROLE_UNKNOWN;
1020 if (ndlp->nlp_type & NLP_FCP_TARGET)
1021 rport_ids.roles |= FC_RPORT_ROLE_FCP_TARGET;
1022 if (ndlp->nlp_type & NLP_FCP_INITIATOR)
1023 rport_ids.roles |= FC_RPORT_ROLE_FCP_INITIATOR;
1024 1020
1025 scsi_block_requests(phba->host);
1026 ndlp->rport = rport = fc_remote_port_add(phba->host, 0, &rport_ids); 1021 ndlp->rport = rport = fc_remote_port_add(phba->host, 0, &rport_ids);
1027 if (!rport) { 1022 if (!rport) {
1028 dev_printk(KERN_WARNING, &phba->pcidev->dev, 1023 dev_printk(KERN_WARNING, &phba->pcidev->dev,
@@ -1039,7 +1034,16 @@ lpfc_register_remote_port(struct lpfc_hba * phba,
1039 } 1034 }
1040 rdata = rport->dd_data; 1035 rdata = rport->dd_data;
1041 rdata->pnode = ndlp; 1036 rdata->pnode = ndlp;
1042 scsi_unblock_requests(phba->host); 1037
1038 if (ndlp->nlp_type & NLP_FCP_TARGET)
1039 rport_ids.roles |= FC_RPORT_ROLE_FCP_TARGET;
1040 if (ndlp->nlp_type & NLP_FCP_INITIATOR)
1041 rport_ids.roles |= FC_RPORT_ROLE_FCP_INITIATOR;
1042
1043
1044 if (rport_ids.roles != FC_RPORT_ROLE_UNKNOWN)
1045 fc_remote_port_rolechg(rport, rport_ids.roles);
1046
1043 1047
1044 return; 1048 return;
1045} 1049}
@@ -1053,9 +1057,7 @@ lpfc_unregister_remote_port(struct lpfc_hba * phba,
1053 1057
1054 ndlp->rport = NULL; 1058 ndlp->rport = NULL;
1055 rdata->pnode = NULL; 1059 rdata->pnode = NULL;
1056 scsi_block_requests(phba->host);
1057 fc_remote_port_delete(rport); 1060 fc_remote_port_delete(rport);
1058 scsi_unblock_requests(phba->host);
1059 1061
1060 return; 1062 return;
1061} 1063}
diff --git a/drivers/scsi/lpfc/lpfc_hw.h b/drivers/scsi/lpfc/lpfc_hw.h
index 86c41981188b..1ea565e0561f 100644
--- a/drivers/scsi/lpfc/lpfc_hw.h
+++ b/drivers/scsi/lpfc/lpfc_hw.h
@@ -266,9 +266,11 @@ struct lpfc_name {
266 struct { 266 struct {
267#ifdef __BIG_ENDIAN_BITFIELD 267#ifdef __BIG_ENDIAN_BITFIELD
268 uint8_t nameType:4; /* FC Word 0, bit 28:31 */ 268 uint8_t nameType:4; /* FC Word 0, bit 28:31 */
269 uint8_t IEEEextMsn:4; /* FC Word 0, bit 24:27, bit 8:11 of IEEE ext */ 269 uint8_t IEEEextMsn:4; /* FC Word 0, bit 24:27, bit
270 8:11 of IEEE ext */
270#else /* __LITTLE_ENDIAN_BITFIELD */ 271#else /* __LITTLE_ENDIAN_BITFIELD */
271 uint8_t IEEEextMsn:4; /* FC Word 0, bit 24:27, bit 8:11 of IEEE ext */ 272 uint8_t IEEEextMsn:4; /* FC Word 0, bit 24:27, bit
273 8:11 of IEEE ext */
272 uint8_t nameType:4; /* FC Word 0, bit 28:31 */ 274 uint8_t nameType:4; /* FC Word 0, bit 28:31 */
273#endif 275#endif
274 276
@@ -278,7 +280,8 @@ struct lpfc_name {
278#define NAME_IP_TYPE 0x4 /* IP address */ 280#define NAME_IP_TYPE 0x4 /* IP address */
279#define NAME_CCITT_TYPE 0xC 281#define NAME_CCITT_TYPE 0xC
280#define NAME_CCITT_GR_TYPE 0xE 282#define NAME_CCITT_GR_TYPE 0xE
281 uint8_t IEEEextLsb; /* FC Word 0, bit 16:23, IEEE extended Lsb */ 283 uint8_t IEEEextLsb; /* FC Word 0, bit 16:23, IEEE
284 extended Lsb */
282 uint8_t IEEE[6]; /* FC IEEE address */ 285 uint8_t IEEE[6]; /* FC IEEE address */
283 } s; 286 } s;
284 uint8_t wwn[8]; 287 uint8_t wwn[8];
@@ -1024,23 +1027,38 @@ typedef struct {
1024/* Start FireFly Register definitions */ 1027/* Start FireFly Register definitions */
1025#define PCI_VENDOR_ID_EMULEX 0x10df 1028#define PCI_VENDOR_ID_EMULEX 0x10df
1026#define PCI_DEVICE_ID_FIREFLY 0x1ae5 1029#define PCI_DEVICE_ID_FIREFLY 0x1ae5
1027#define PCI_DEVICE_ID_SUPERFLY 0xf700
1028#define PCI_DEVICE_ID_DRAGONFLY 0xf800
1029#define PCI_DEVICE_ID_RFLY 0xf095 1030#define PCI_DEVICE_ID_RFLY 0xf095
1030#define PCI_DEVICE_ID_PFLY 0xf098 1031#define PCI_DEVICE_ID_PFLY 0xf098
1032#define PCI_DEVICE_ID_LP101 0xf0a1
1031#define PCI_DEVICE_ID_TFLY 0xf0a5 1033#define PCI_DEVICE_ID_TFLY 0xf0a5
1034#define PCI_DEVICE_ID_BSMB 0xf0d1
1035#define PCI_DEVICE_ID_BMID 0xf0d5
1036#define PCI_DEVICE_ID_ZSMB 0xf0e1
1037#define PCI_DEVICE_ID_ZMID 0xf0e5
1038#define PCI_DEVICE_ID_NEPTUNE 0xf0f5
1039#define PCI_DEVICE_ID_NEPTUNE_SCSP 0xf0f6
1040#define PCI_DEVICE_ID_NEPTUNE_DCSP 0xf0f7
1041#define PCI_DEVICE_ID_SUPERFLY 0xf700
1042#define PCI_DEVICE_ID_DRAGONFLY 0xf800
1032#define PCI_DEVICE_ID_CENTAUR 0xf900 1043#define PCI_DEVICE_ID_CENTAUR 0xf900
1033#define PCI_DEVICE_ID_PEGASUS 0xf980 1044#define PCI_DEVICE_ID_PEGASUS 0xf980
1034#define PCI_DEVICE_ID_THOR 0xfa00 1045#define PCI_DEVICE_ID_THOR 0xfa00
1035#define PCI_DEVICE_ID_VIPER 0xfb00 1046#define PCI_DEVICE_ID_VIPER 0xfb00
1047#define PCI_DEVICE_ID_LP10000S 0xfc00
1048#define PCI_DEVICE_ID_LP11000S 0xfc10
1049#define PCI_DEVICE_ID_LPE11000S 0xfc20
1036#define PCI_DEVICE_ID_HELIOS 0xfd00 1050#define PCI_DEVICE_ID_HELIOS 0xfd00
1037#define PCI_DEVICE_ID_BMID 0xf0d5 1051#define PCI_DEVICE_ID_HELIOS_SCSP 0xfd11
1038#define PCI_DEVICE_ID_BSMB 0xf0d1 1052#define PCI_DEVICE_ID_HELIOS_DCSP 0xfd12
1039#define PCI_DEVICE_ID_ZEPHYR 0xfe00 1053#define PCI_DEVICE_ID_ZEPHYR 0xfe00
1040#define PCI_DEVICE_ID_ZMID 0xf0e5 1054#define PCI_DEVICE_ID_ZEPHYR_SCSP 0xfe11
1041#define PCI_DEVICE_ID_ZSMB 0xf0e1 1055#define PCI_DEVICE_ID_ZEPHYR_DCSP 0xfe12
1042#define PCI_DEVICE_ID_LP101 0xf0a1 1056
1043#define PCI_DEVICE_ID_LP10000S 0xfc00 1057#define PCI_SUBSYSTEM_ID_LP11000S 0xfc11
1058#define PCI_SUBSYSTEM_ID_LP11002S 0xfc12
1059#define PCI_SUBSYSTEM_ID_LPE11000S 0xfc21
1060#define PCI_SUBSYSTEM_ID_LPE11002S 0xfc22
1061#define PCI_SUBSYSTEM_ID_LPE11010S 0xfc2A
1044 1062
1045#define JEDEC_ID_ADDRESS 0x0080001c 1063#define JEDEC_ID_ADDRESS 0x0080001c
1046#define FIREFLY_JEDEC_ID 0x1ACC 1064#define FIREFLY_JEDEC_ID 0x1ACC
diff --git a/drivers/scsi/lpfc/lpfc_init.c b/drivers/scsi/lpfc/lpfc_init.c
index 07498118359d..b7a603a45328 100644
--- a/drivers/scsi/lpfc/lpfc_init.c
+++ b/drivers/scsi/lpfc/lpfc_init.c
@@ -126,34 +126,26 @@ lpfc_config_port_prep(struct lpfc_hba * phba)
126 return -ERESTART; 126 return -ERESTART;
127 } 127 }
128 128
129 /* The HBA's current state is provided by the ProgType and rr fields. 129 /*
130 * Read and check the value of these fields before continuing to config 130 * The value of rr must be 1 since the driver set the cv field to 1.
131 * this port. 131 * This setting requires the FW to set all revision fields.
132 */ 132 */
133 if (mb->un.varRdRev.rr == 0 || mb->un.varRdRev.un.b.ProgType != 2) { 133 if (mb->un.varRdRev.rr == 0) {
134 /* Old firmware */
135 vp->rev.rBit = 0; 134 vp->rev.rBit = 0;
136 lpfc_printf_log(phba, 135 lpfc_printf_log(phba, KERN_ERR, LOG_INIT,
137 KERN_ERR, 136 "%d:0440 Adapter failed to init, READ_REV has "
138 LOG_INIT, 137 "missing revision information.\n",
139 "%d:0440 Adapter failed to init, mbxCmd x%x " 138 phba->brd_no);
140 "READ_REV detected outdated firmware"
141 "Data: x%x\n",
142 phba->brd_no,
143 mb->mbxCommand, 0);
144 mempool_free(pmb, phba->mbox_mem_pool); 139 mempool_free(pmb, phba->mbox_mem_pool);
145 return -ERESTART; 140 return -ERESTART;
146 } else {
147 vp->rev.rBit = 1;
148 vp->rev.sli1FwRev = mb->un.varRdRev.sli1FwRev;
149 memcpy(vp->rev.sli1FwName,
150 (char*)mb->un.varRdRev.sli1FwName, 16);
151 vp->rev.sli2FwRev = mb->un.varRdRev.sli2FwRev;
152 memcpy(vp->rev.sli2FwName,
153 (char *)mb->un.varRdRev.sli2FwName, 16);
154 } 141 }
155 142
156 /* Save information as VPD data */ 143 /* Save information as VPD data */
144 vp->rev.rBit = 1;
145 vp->rev.sli1FwRev = mb->un.varRdRev.sli1FwRev;
146 memcpy(vp->rev.sli1FwName, (char*) mb->un.varRdRev.sli1FwName, 16);
147 vp->rev.sli2FwRev = mb->un.varRdRev.sli2FwRev;
148 memcpy(vp->rev.sli2FwName, (char *) mb->un.varRdRev.sli2FwName, 16);
157 vp->rev.biuRev = mb->un.varRdRev.biuRev; 149 vp->rev.biuRev = mb->un.varRdRev.biuRev;
158 vp->rev.smRev = mb->un.varRdRev.smRev; 150 vp->rev.smRev = mb->un.varRdRev.smRev;
159 vp->rev.smFwRev = mb->un.varRdRev.un.smFwRev; 151 vp->rev.smFwRev = mb->un.varRdRev.un.smFwRev;
@@ -378,6 +370,10 @@ lpfc_config_port_post(struct lpfc_hba * phba)
378 if (psli->num_rings > 3) 370 if (psli->num_rings > 3)
379 status |= HC_R3INT_ENA; 371 status |= HC_R3INT_ENA;
380 372
373 if ((phba->cfg_poll & ENABLE_FCP_RING_POLLING) &&
374 (phba->cfg_poll & DISABLE_FCP_RING_INT))
375 status &= ~(HC_R0INT_ENA << LPFC_FCP_RING);
376
381 writel(status, phba->HCregaddr); 377 writel(status, phba->HCregaddr);
382 readl(phba->HCregaddr); /* flush */ 378 readl(phba->HCregaddr); /* flush */
383 spin_unlock_irq(phba->host->host_lock); 379 spin_unlock_irq(phba->host->host_lock);
@@ -571,6 +567,8 @@ lpfc_handle_latt(struct lpfc_hba * phba)
571 567
572 rc = -EIO; 568 rc = -EIO;
573 569
570 /* Cleanup any outstanding ELS commands */
571 lpfc_els_flush_cmd(phba);
574 572
575 psli->slistat.link_event++; 573 psli->slistat.link_event++;
576 lpfc_read_la(phba, pmb, mp); 574 lpfc_read_la(phba, pmb, mp);
@@ -765,96 +763,139 @@ static void
765lpfc_get_hba_model_desc(struct lpfc_hba * phba, uint8_t * mdp, uint8_t * descp) 763lpfc_get_hba_model_desc(struct lpfc_hba * phba, uint8_t * mdp, uint8_t * descp)
766{ 764{
767 lpfc_vpd_t *vp; 765 lpfc_vpd_t *vp;
768 uint32_t id; 766 uint16_t dev_id = phba->pcidev->device;
769 uint8_t hdrtype; 767 uint16_t dev_subid = phba->pcidev->subsystem_device;
770 char str[16]; 768 uint8_t hdrtype = phba->pcidev->hdr_type;
769 char *model_str = "";
771 770
772 vp = &phba->vpd; 771 vp = &phba->vpd;
773 pci_read_config_dword(phba->pcidev, PCI_VENDOR_ID, &id);
774 pci_read_config_byte(phba->pcidev, PCI_HEADER_TYPE, &hdrtype);
775 772
776 switch ((id >> 16) & 0xffff) { 773 switch (dev_id) {
777 case PCI_DEVICE_ID_FIREFLY: 774 case PCI_DEVICE_ID_FIREFLY:
778 strcpy(str, "LP6000 1"); 775 model_str = "LP6000 1Gb PCI";
779 break; 776 break;
780 case PCI_DEVICE_ID_SUPERFLY: 777 case PCI_DEVICE_ID_SUPERFLY:
781 if (vp->rev.biuRev >= 1 && vp->rev.biuRev <= 3) 778 if (vp->rev.biuRev >= 1 && vp->rev.biuRev <= 3)
782 strcpy(str, "LP7000 1"); 779 model_str = "LP7000 1Gb PCI";
783 else 780 else
784 strcpy(str, "LP7000E 1"); 781 model_str = "LP7000E 1Gb PCI";
785 break; 782 break;
786 case PCI_DEVICE_ID_DRAGONFLY: 783 case PCI_DEVICE_ID_DRAGONFLY:
787 strcpy(str, "LP8000 1"); 784 model_str = "LP8000 1Gb PCI";
788 break; 785 break;
789 case PCI_DEVICE_ID_CENTAUR: 786 case PCI_DEVICE_ID_CENTAUR:
790 if (FC_JEDEC_ID(vp->rev.biuRev) == CENTAUR_2G_JEDEC_ID) 787 if (FC_JEDEC_ID(vp->rev.biuRev) == CENTAUR_2G_JEDEC_ID)
791 strcpy(str, "LP9002 2"); 788 model_str = "LP9002 2Gb PCI";
792 else 789 else
793 strcpy(str, "LP9000 1"); 790 model_str = "LP9000 1Gb PCI";
794 break; 791 break;
795 case PCI_DEVICE_ID_RFLY: 792 case PCI_DEVICE_ID_RFLY:
796 strcpy(str, "LP952 2"); 793 model_str = "LP952 2Gb PCI";
797 break; 794 break;
798 case PCI_DEVICE_ID_PEGASUS: 795 case PCI_DEVICE_ID_PEGASUS:
799 strcpy(str, "LP9802 2"); 796 model_str = "LP9802 2Gb PCI-X";
800 break; 797 break;
801 case PCI_DEVICE_ID_THOR: 798 case PCI_DEVICE_ID_THOR:
802 if (hdrtype == 0x80) 799 if (hdrtype == 0x80)
803 strcpy(str, "LP10000DC 2"); 800 model_str = "LP10000DC 2Gb 2-port PCI-X";
804 else 801 else
805 strcpy(str, "LP10000 2"); 802 model_str = "LP10000 2Gb PCI-X";
806 break; 803 break;
807 case PCI_DEVICE_ID_VIPER: 804 case PCI_DEVICE_ID_VIPER:
808 strcpy(str, "LPX1000 10"); 805 model_str = "LPX1000 10Gb PCI-X";
809 break; 806 break;
810 case PCI_DEVICE_ID_PFLY: 807 case PCI_DEVICE_ID_PFLY:
811 strcpy(str, "LP982 2"); 808 model_str = "LP982 2Gb PCI-X";
812 break; 809 break;
813 case PCI_DEVICE_ID_TFLY: 810 case PCI_DEVICE_ID_TFLY:
814 if (hdrtype == 0x80) 811 if (hdrtype == 0x80)
815 strcpy(str, "LP1050DC 2"); 812 model_str = "LP1050DC 2Gb 2-port PCI-X";
816 else 813 else
817 strcpy(str, "LP1050 2"); 814 model_str = "LP1050 2Gb PCI-X";
818 break; 815 break;
819 case PCI_DEVICE_ID_HELIOS: 816 case PCI_DEVICE_ID_HELIOS:
820 if (hdrtype == 0x80) 817 if (hdrtype == 0x80)
821 strcpy(str, "LP11002 4"); 818 model_str = "LP11002 4Gb 2-port PCI-X2";
819 else
820 model_str = "LP11000 4Gb PCI-X2";
821 break;
822 case PCI_DEVICE_ID_HELIOS_SCSP:
823 model_str = "LP11000-SP 4Gb PCI-X2";
824 break;
825 case PCI_DEVICE_ID_HELIOS_DCSP:
826 model_str = "LP11002-SP 4Gb 2-port PCI-X2";
827 break;
828 case PCI_DEVICE_ID_NEPTUNE:
829 if (hdrtype == 0x80)
830 model_str = "LPe1002 4Gb 2-port";
822 else 831 else
823 strcpy(str, "LP11000 4"); 832 model_str = "LPe1000 4Gb PCIe";
833 break;
834 case PCI_DEVICE_ID_NEPTUNE_SCSP:
835 model_str = "LPe1000-SP 4Gb PCIe";
836 break;
837 case PCI_DEVICE_ID_NEPTUNE_DCSP:
838 model_str = "LPe1002-SP 4Gb 2-port PCIe";
824 break; 839 break;
825 case PCI_DEVICE_ID_BMID: 840 case PCI_DEVICE_ID_BMID:
826 strcpy(str, "LP1150 4"); 841 model_str = "LP1150 4Gb PCI-X2";
827 break; 842 break;
828 case PCI_DEVICE_ID_BSMB: 843 case PCI_DEVICE_ID_BSMB:
829 strcpy(str, "LP111 4"); 844 model_str = "LP111 4Gb PCI-X2";
830 break; 845 break;
831 case PCI_DEVICE_ID_ZEPHYR: 846 case PCI_DEVICE_ID_ZEPHYR:
832 if (hdrtype == 0x80) 847 if (hdrtype == 0x80)
833 strcpy(str, "LPe11002 4"); 848 model_str = "LPe11002 4Gb 2-port PCIe";
834 else 849 else
835 strcpy(str, "LPe11000 4"); 850 model_str = "LPe11000 4Gb PCIe";
851 break;
852 case PCI_DEVICE_ID_ZEPHYR_SCSP:
853 model_str = "LPe11000-SP 4Gb PCIe";
854 break;
855 case PCI_DEVICE_ID_ZEPHYR_DCSP:
856 model_str = "LPe11002-SP 4Gb 2-port PCIe";
836 break; 857 break;
837 case PCI_DEVICE_ID_ZMID: 858 case PCI_DEVICE_ID_ZMID:
838 strcpy(str, "LPe1150 4"); 859 model_str = "LPe1150 4Gb PCIe";
839 break; 860 break;
840 case PCI_DEVICE_ID_ZSMB: 861 case PCI_DEVICE_ID_ZSMB:
841 strcpy(str, "LPe111 4"); 862 model_str = "LPe111 4Gb PCIe";
842 break; 863 break;
843 case PCI_DEVICE_ID_LP101: 864 case PCI_DEVICE_ID_LP101:
844 strcpy(str, "LP101 2"); 865 model_str = "LP101 2Gb PCI-X";
845 break; 866 break;
846 case PCI_DEVICE_ID_LP10000S: 867 case PCI_DEVICE_ID_LP10000S:
847 strcpy(str, "LP10000-S 2"); 868 model_str = "LP10000-S 2Gb PCI";
869 break;
870 case PCI_DEVICE_ID_LP11000S:
871 case PCI_DEVICE_ID_LPE11000S:
872 switch (dev_subid) {
873 case PCI_SUBSYSTEM_ID_LP11000S:
874 model_str = "LP11002-S 4Gb PCI-X2";
875 break;
876 case PCI_SUBSYSTEM_ID_LP11002S:
877 model_str = "LP11000-S 4Gb 2-port PCI-X2";
878 break;
879 case PCI_SUBSYSTEM_ID_LPE11000S:
880 model_str = "LPe11002-S 4Gb PCIe";
881 break;
882 case PCI_SUBSYSTEM_ID_LPE11002S:
883 model_str = "LPe11002-S 4Gb 2-port PCIe";
884 break;
885 case PCI_SUBSYSTEM_ID_LPE11010S:
886 model_str = "LPe11010-S 4Gb 10-port PCIe";
887 break;
888 default:
889 break;
890 }
848 break; 891 break;
849 default: 892 default:
850 memset(str, 0, 16);
851 break; 893 break;
852 } 894 }
853 if (mdp) 895 if (mdp)
854 sscanf(str, "%s", mdp); 896 sscanf(model_str, "%s", mdp);
855 if (descp) 897 if (descp)
856 sprintf(descp, "Emulex LightPulse %s Gigabit PCI Fibre " 898 sprintf(descp, "Emulex %s Fibre Channel Adapter", model_str);
857 "Channel Adapter", str);
858} 899}
859 900
860/**************************************************/ 901/**************************************************/
@@ -1196,6 +1237,7 @@ lpfc_stop_timer(struct lpfc_hba * phba)
1196 } 1237 }
1197 } 1238 }
1198 1239
1240 del_timer_sync(&phba->fcp_poll_timer);
1199 del_timer_sync(&phba->fc_estabtmo); 1241 del_timer_sync(&phba->fc_estabtmo);
1200 del_timer_sync(&phba->fc_disctmo); 1242 del_timer_sync(&phba->fc_disctmo);
1201 del_timer_sync(&phba->fc_fdmitmo); 1243 del_timer_sync(&phba->fc_fdmitmo);
@@ -1351,7 +1393,7 @@ lpfc_pci_probe_one(struct pci_dev *pdev, const struct pci_device_id *pid)
1351 goto out_put_host; 1393 goto out_put_host;
1352 1394
1353 host->unique_id = phba->brd_no; 1395 host->unique_id = phba->brd_no;
1354 1396 init_MUTEX(&phba->hba_can_block);
1355 INIT_LIST_HEAD(&phba->ctrspbuflist); 1397 INIT_LIST_HEAD(&phba->ctrspbuflist);
1356 INIT_LIST_HEAD(&phba->rnidrspbuflist); 1398 INIT_LIST_HEAD(&phba->rnidrspbuflist);
1357 INIT_LIST_HEAD(&phba->freebufList); 1399 INIT_LIST_HEAD(&phba->freebufList);
@@ -1375,6 +1417,10 @@ lpfc_pci_probe_one(struct pci_dev *pdev, const struct pci_device_id *pid)
1375 psli->mbox_tmo.function = lpfc_mbox_timeout; 1417 psli->mbox_tmo.function = lpfc_mbox_timeout;
1376 psli->mbox_tmo.data = (unsigned long)phba; 1418 psli->mbox_tmo.data = (unsigned long)phba;
1377 1419
1420 init_timer(&phba->fcp_poll_timer);
1421 phba->fcp_poll_timer.function = lpfc_poll_timeout;
1422 phba->fcp_poll_timer.data = (unsigned long)phba;
1423
1378 /* 1424 /*
1379 * Get all the module params for configuring this host and then 1425 * Get all the module params for configuring this host and then
1380 * establish the host parameters. 1426 * establish the host parameters.
@@ -1489,6 +1535,7 @@ lpfc_pci_probe_one(struct pci_dev *pdev, const struct pci_device_id *pid)
1489 host->max_cmd_len = 16; 1535 host->max_cmd_len = 16;
1490 1536
1491 /* Initialize the list of scsi buffers used by driver for scsi IO. */ 1537 /* Initialize the list of scsi buffers used by driver for scsi IO. */
1538 spin_lock_init(&phba->scsi_buf_list_lock);
1492 INIT_LIST_HEAD(&phba->lpfc_scsi_buf_list); 1539 INIT_LIST_HEAD(&phba->lpfc_scsi_buf_list);
1493 1540
1494 host->transportt = lpfc_transport_template; 1541 host->transportt = lpfc_transport_template;
@@ -1520,6 +1567,12 @@ lpfc_pci_probe_one(struct pci_dev *pdev, const struct pci_device_id *pid)
1520 if (error) 1567 if (error)
1521 goto out_free_irq; 1568 goto out_free_irq;
1522 1569
1570 if (phba->cfg_poll & DISABLE_FCP_RING_INT) {
1571 spin_lock_irq(phba->host->host_lock);
1572 lpfc_poll_start_timer(phba);
1573 spin_unlock_irq(phba->host->host_lock);
1574 }
1575
1523 /* 1576 /*
1524 * set fixed host attributes 1577 * set fixed host attributes
1525 * Must done after lpfc_sli_hba_setup() 1578 * Must done after lpfc_sli_hba_setup()
@@ -1679,14 +1732,28 @@ static struct pci_device_id lpfc_id_table[] = {
1679 PCI_ANY_ID, PCI_ANY_ID, }, 1732 PCI_ANY_ID, PCI_ANY_ID, },
1680 {PCI_VENDOR_ID_EMULEX, PCI_DEVICE_ID_PFLY, 1733 {PCI_VENDOR_ID_EMULEX, PCI_DEVICE_ID_PFLY,
1681 PCI_ANY_ID, PCI_ANY_ID, }, 1734 PCI_ANY_ID, PCI_ANY_ID, },
1735 {PCI_VENDOR_ID_EMULEX, PCI_DEVICE_ID_NEPTUNE,
1736 PCI_ANY_ID, PCI_ANY_ID, },
1737 {PCI_VENDOR_ID_EMULEX, PCI_DEVICE_ID_NEPTUNE_SCSP,
1738 PCI_ANY_ID, PCI_ANY_ID, },
1739 {PCI_VENDOR_ID_EMULEX, PCI_DEVICE_ID_NEPTUNE_DCSP,
1740 PCI_ANY_ID, PCI_ANY_ID, },
1682 {PCI_VENDOR_ID_EMULEX, PCI_DEVICE_ID_HELIOS, 1741 {PCI_VENDOR_ID_EMULEX, PCI_DEVICE_ID_HELIOS,
1683 PCI_ANY_ID, PCI_ANY_ID, }, 1742 PCI_ANY_ID, PCI_ANY_ID, },
1743 {PCI_VENDOR_ID_EMULEX, PCI_DEVICE_ID_HELIOS_SCSP,
1744 PCI_ANY_ID, PCI_ANY_ID, },
1745 {PCI_VENDOR_ID_EMULEX, PCI_DEVICE_ID_HELIOS_DCSP,
1746 PCI_ANY_ID, PCI_ANY_ID, },
1684 {PCI_VENDOR_ID_EMULEX, PCI_DEVICE_ID_BMID, 1747 {PCI_VENDOR_ID_EMULEX, PCI_DEVICE_ID_BMID,
1685 PCI_ANY_ID, PCI_ANY_ID, }, 1748 PCI_ANY_ID, PCI_ANY_ID, },
1686 {PCI_VENDOR_ID_EMULEX, PCI_DEVICE_ID_BSMB, 1749 {PCI_VENDOR_ID_EMULEX, PCI_DEVICE_ID_BSMB,
1687 PCI_ANY_ID, PCI_ANY_ID, }, 1750 PCI_ANY_ID, PCI_ANY_ID, },
1688 {PCI_VENDOR_ID_EMULEX, PCI_DEVICE_ID_ZEPHYR, 1751 {PCI_VENDOR_ID_EMULEX, PCI_DEVICE_ID_ZEPHYR,
1689 PCI_ANY_ID, PCI_ANY_ID, }, 1752 PCI_ANY_ID, PCI_ANY_ID, },
1753 {PCI_VENDOR_ID_EMULEX, PCI_DEVICE_ID_ZEPHYR_SCSP,
1754 PCI_ANY_ID, PCI_ANY_ID, },
1755 {PCI_VENDOR_ID_EMULEX, PCI_DEVICE_ID_ZEPHYR_DCSP,
1756 PCI_ANY_ID, PCI_ANY_ID, },
1690 {PCI_VENDOR_ID_EMULEX, PCI_DEVICE_ID_ZMID, 1757 {PCI_VENDOR_ID_EMULEX, PCI_DEVICE_ID_ZMID,
1691 PCI_ANY_ID, PCI_ANY_ID, }, 1758 PCI_ANY_ID, PCI_ANY_ID, },
1692 {PCI_VENDOR_ID_EMULEX, PCI_DEVICE_ID_ZSMB, 1759 {PCI_VENDOR_ID_EMULEX, PCI_DEVICE_ID_ZSMB,
@@ -1697,6 +1764,10 @@ static struct pci_device_id lpfc_id_table[] = {
1697 PCI_ANY_ID, PCI_ANY_ID, }, 1764 PCI_ANY_ID, PCI_ANY_ID, },
1698 {PCI_VENDOR_ID_EMULEX, PCI_DEVICE_ID_LP10000S, 1765 {PCI_VENDOR_ID_EMULEX, PCI_DEVICE_ID_LP10000S,
1699 PCI_ANY_ID, PCI_ANY_ID, }, 1766 PCI_ANY_ID, PCI_ANY_ID, },
1767 {PCI_VENDOR_ID_EMULEX, PCI_DEVICE_ID_LP11000S,
1768 PCI_ANY_ID, PCI_ANY_ID, },
1769 {PCI_VENDOR_ID_EMULEX, PCI_DEVICE_ID_LPE11000S,
1770 PCI_ANY_ID, PCI_ANY_ID, },
1700 { 0 } 1771 { 0 }
1701}; 1772};
1702 1773
diff --git a/drivers/scsi/lpfc/lpfc_nportdisc.c b/drivers/scsi/lpfc/lpfc_nportdisc.c
index 507a6af56f42..fbead786031f 100644
--- a/drivers/scsi/lpfc/lpfc_nportdisc.c
+++ b/drivers/scsi/lpfc/lpfc_nportdisc.c
@@ -55,55 +55,76 @@ lpfc_check_adisc(struct lpfc_hba * phba, struct lpfc_nodelist * ndlp,
55 return (1); 55 return (1);
56} 56}
57 57
58
59int 58int
60lpfc_check_sparm(struct lpfc_hba * phba, 59lpfc_check_sparm(struct lpfc_hba * phba,
61 struct lpfc_nodelist * ndlp, struct serv_parm * sp, 60 struct lpfc_nodelist * ndlp, struct serv_parm * sp,
62 uint32_t class) 61 uint32_t class)
63{ 62{
64 volatile struct serv_parm *hsp = &phba->fc_sparam; 63 volatile struct serv_parm *hsp = &phba->fc_sparam;
65 /* First check for supported version */ 64 uint16_t hsp_value, ssp_value = 0;
66 65
67 /* Next check for class validity */ 66 /*
67 * The receive data field size and buffer-to-buffer receive data field
68 * size entries are 16 bits but are represented as two 8-bit fields in
69 * the driver data structure to account for rsvd bits and other control
70 * bits. Reconstruct and compare the fields as a 16-bit values before
71 * correcting the byte values.
72 */
68 if (sp->cls1.classValid) { 73 if (sp->cls1.classValid) {
69 74 hsp_value = (hsp->cls1.rcvDataSizeMsb << 8) |
70 if (sp->cls1.rcvDataSizeMsb > hsp->cls1.rcvDataSizeMsb) 75 hsp->cls1.rcvDataSizeLsb;
71 sp->cls1.rcvDataSizeMsb = hsp->cls1.rcvDataSizeMsb; 76 ssp_value = (sp->cls1.rcvDataSizeMsb << 8) |
72 if (sp->cls1.rcvDataSizeLsb > hsp->cls1.rcvDataSizeLsb) 77 sp->cls1.rcvDataSizeLsb;
78 if (ssp_value > hsp_value) {
73 sp->cls1.rcvDataSizeLsb = hsp->cls1.rcvDataSizeLsb; 79 sp->cls1.rcvDataSizeLsb = hsp->cls1.rcvDataSizeLsb;
80 sp->cls1.rcvDataSizeMsb = hsp->cls1.rcvDataSizeMsb;
81 }
74 } else if (class == CLASS1) { 82 } else if (class == CLASS1) {
75 return (0); 83 return 0;
76 } 84 }
77 85
78 if (sp->cls2.classValid) { 86 if (sp->cls2.classValid) {
79 87 hsp_value = (hsp->cls2.rcvDataSizeMsb << 8) |
80 if (sp->cls2.rcvDataSizeMsb > hsp->cls2.rcvDataSizeMsb) 88 hsp->cls2.rcvDataSizeLsb;
81 sp->cls2.rcvDataSizeMsb = hsp->cls2.rcvDataSizeMsb; 89 ssp_value = (sp->cls2.rcvDataSizeMsb << 8) |
82 if (sp->cls2.rcvDataSizeLsb > hsp->cls2.rcvDataSizeLsb) 90 sp->cls2.rcvDataSizeLsb;
91 if (ssp_value > hsp_value) {
83 sp->cls2.rcvDataSizeLsb = hsp->cls2.rcvDataSizeLsb; 92 sp->cls2.rcvDataSizeLsb = hsp->cls2.rcvDataSizeLsb;
93 sp->cls2.rcvDataSizeMsb = hsp->cls2.rcvDataSizeMsb;
94 }
84 } else if (class == CLASS2) { 95 } else if (class == CLASS2) {
85 return (0); 96 return 0;
86 } 97 }
87 98
88 if (sp->cls3.classValid) { 99 if (sp->cls3.classValid) {
89 100 hsp_value = (hsp->cls3.rcvDataSizeMsb << 8) |
90 if (sp->cls3.rcvDataSizeMsb > hsp->cls3.rcvDataSizeMsb) 101 hsp->cls3.rcvDataSizeLsb;
91 sp->cls3.rcvDataSizeMsb = hsp->cls3.rcvDataSizeMsb; 102 ssp_value = (sp->cls3.rcvDataSizeMsb << 8) |
92 if (sp->cls3.rcvDataSizeLsb > hsp->cls3.rcvDataSizeLsb) 103 sp->cls3.rcvDataSizeLsb;
104 if (ssp_value > hsp_value) {
93 sp->cls3.rcvDataSizeLsb = hsp->cls3.rcvDataSizeLsb; 105 sp->cls3.rcvDataSizeLsb = hsp->cls3.rcvDataSizeLsb;
106 sp->cls3.rcvDataSizeMsb = hsp->cls3.rcvDataSizeMsb;
107 }
94 } else if (class == CLASS3) { 108 } else if (class == CLASS3) {
95 return (0); 109 return 0;
96 } 110 }
97 111
98 if (sp->cmn.bbRcvSizeMsb > hsp->cmn.bbRcvSizeMsb) 112 /*
99 sp->cmn.bbRcvSizeMsb = hsp->cmn.bbRcvSizeMsb; 113 * Preserve the upper four bits of the MSB from the PLOGI response.
100 if (sp->cmn.bbRcvSizeLsb > hsp->cmn.bbRcvSizeLsb) 114 * These bits contain the Buffer-to-Buffer State Change Number
115 * from the target and need to be passed to the FW.
116 */
117 hsp_value = (hsp->cmn.bbRcvSizeMsb << 8) | hsp->cmn.bbRcvSizeLsb;
118 ssp_value = (sp->cmn.bbRcvSizeMsb << 8) | sp->cmn.bbRcvSizeLsb;
119 if (ssp_value > hsp_value) {
101 sp->cmn.bbRcvSizeLsb = hsp->cmn.bbRcvSizeLsb; 120 sp->cmn.bbRcvSizeLsb = hsp->cmn.bbRcvSizeLsb;
121 sp->cmn.bbRcvSizeMsb = (sp->cmn.bbRcvSizeMsb & 0xF0) |
122 (hsp->cmn.bbRcvSizeMsb & 0x0F);
123 }
102 124
103 /* If check is good, copy wwpn wwnn into ndlp */
104 memcpy(&ndlp->nlp_nodename, &sp->nodeName, sizeof (struct lpfc_name)); 125 memcpy(&ndlp->nlp_nodename, &sp->nodeName, sizeof (struct lpfc_name));
105 memcpy(&ndlp->nlp_portname, &sp->portName, sizeof (struct lpfc_name)); 126 memcpy(&ndlp->nlp_portname, &sp->portName, sizeof (struct lpfc_name));
106 return (1); 127 return 1;
107} 128}
108 129
109static void * 130static void *
diff --git a/drivers/scsi/lpfc/lpfc_scsi.c b/drivers/scsi/lpfc/lpfc_scsi.c
index c63275e66e2e..9ee8218404c0 100644
--- a/drivers/scsi/lpfc/lpfc_scsi.c
+++ b/drivers/scsi/lpfc/lpfc_scsi.c
@@ -41,6 +41,20 @@
41#define LPFC_ABORT_WAIT 2 41#define LPFC_ABORT_WAIT 2
42 42
43 43
44static inline void
45lpfc_block_requests(struct lpfc_hba * phba)
46{
47 down(&phba->hba_can_block);
48 scsi_block_requests(phba->host);
49}
50
51static inline void
52lpfc_unblock_requests(struct lpfc_hba * phba)
53{
54 scsi_unblock_requests(phba->host);
55 up(&phba->hba_can_block);
56}
57
44/* 58/*
45 * This routine allocates a scsi buffer, which contains all the necessary 59 * This routine allocates a scsi buffer, which contains all the necessary
46 * information needed to initiate a SCSI I/O. The non-DMAable buffer region 60 * 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)
137} 151}
138 152
139struct lpfc_scsi_buf* 153struct lpfc_scsi_buf*
140lpfc_sli_get_scsi_buf(struct lpfc_hba * phba) 154lpfc_get_scsi_buf(struct lpfc_hba * phba)
141{ 155{
142 struct lpfc_scsi_buf * lpfc_cmd = NULL; 156 struct lpfc_scsi_buf * lpfc_cmd = NULL;
143 struct list_head *scsi_buf_list = &phba->lpfc_scsi_buf_list; 157 struct list_head *scsi_buf_list = &phba->lpfc_scsi_buf_list;
158 unsigned long iflag = 0;
144 159
160 spin_lock_irqsave(&phba->scsi_buf_list_lock, iflag);
145 list_remove_head(scsi_buf_list, lpfc_cmd, struct lpfc_scsi_buf, list); 161 list_remove_head(scsi_buf_list, lpfc_cmd, struct lpfc_scsi_buf, list);
162 spin_unlock_irqrestore(&phba->scsi_buf_list_lock, iflag);
146 return lpfc_cmd; 163 return lpfc_cmd;
147} 164}
148 165
149static void 166static void
150lpfc_release_scsi_buf(struct lpfc_hba * phba, struct lpfc_scsi_buf * psb) 167lpfc_release_scsi_buf(struct lpfc_hba * phba, struct lpfc_scsi_buf * psb)
151{ 168{
169 unsigned long iflag = 0;
152 /* 170 /*
153 * There are only two special cases to consider. (1) the scsi command 171 * There are only two special cases to consider. (1) the scsi command
154 * requested scatter-gather usage or (2) the scsi command allocated 172 * 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)
166 } 184 }
167 } 185 }
168 186
187 spin_lock_irqsave(&phba->scsi_buf_list_lock, iflag);
169 psb->pCmd = NULL; 188 psb->pCmd = NULL;
170 list_add_tail(&psb->list, &phba->lpfc_scsi_buf_list); 189 list_add_tail(&psb->list, &phba->lpfc_scsi_buf_list);
190 spin_unlock_irqrestore(&phba->scsi_buf_list_lock, iflag);
171} 191}
172 192
173static int 193static int
@@ -389,7 +409,9 @@ lpfc_scsi_cmd_iocb_cmpl(struct lpfc_hba *phba, struct lpfc_iocbq *pIocbIn,
389 struct lpfc_rport_data *rdata = lpfc_cmd->rdata; 409 struct lpfc_rport_data *rdata = lpfc_cmd->rdata;
390 struct lpfc_nodelist *pnode = rdata->pnode; 410 struct lpfc_nodelist *pnode = rdata->pnode;
391 struct scsi_cmnd *cmd = lpfc_cmd->pCmd; 411 struct scsi_cmnd *cmd = lpfc_cmd->pCmd;
392 unsigned long iflag; 412 int result;
413 struct scsi_device *sdev, *tmp_sdev;
414 int depth = 0;
393 415
394 lpfc_cmd->result = pIocbOut->iocb.un.ulpWord[4]; 416 lpfc_cmd->result = pIocbOut->iocb.un.ulpWord[4];
395 lpfc_cmd->status = pIocbOut->iocb.ulpStatus; 417 lpfc_cmd->status = pIocbOut->iocb.ulpStatus;
@@ -441,11 +463,64 @@ lpfc_scsi_cmd_iocb_cmpl(struct lpfc_hba *phba, struct lpfc_iocbq *pIocbIn,
441 *lp, *(lp + 3), cmd->retries, cmd->resid); 463 *lp, *(lp + 3), cmd->retries, cmd->resid);
442 } 464 }
443 465
466 result = cmd->result;
467 sdev = cmd->device;
444 cmd->scsi_done(cmd); 468 cmd->scsi_done(cmd);
445 469
446 spin_lock_irqsave(phba->host->host_lock, iflag); 470 if (!result &&
471 ((jiffies - pnode->last_ramp_up_time) >
472 LPFC_Q_RAMP_UP_INTERVAL * HZ) &&
473 ((jiffies - pnode->last_q_full_time) >
474 LPFC_Q_RAMP_UP_INTERVAL * HZ) &&
475 (phba->cfg_lun_queue_depth > sdev->queue_depth)) {
476 shost_for_each_device(tmp_sdev, sdev->host) {
477 if (phba->cfg_lun_queue_depth > tmp_sdev->queue_depth) {
478 if (tmp_sdev->id != sdev->id)
479 continue;
480 if (tmp_sdev->ordered_tags)
481 scsi_adjust_queue_depth(tmp_sdev,
482 MSG_ORDERED_TAG,
483 tmp_sdev->queue_depth+1);
484 else
485 scsi_adjust_queue_depth(tmp_sdev,
486 MSG_SIMPLE_TAG,
487 tmp_sdev->queue_depth+1);
488
489 pnode->last_ramp_up_time = jiffies;
490 }
491 }
492 }
493
494 /*
495 * Check for queue full. If the lun is reporting queue full, then
496 * back off the lun queue depth to prevent target overloads.
497 */
498 if (result == SAM_STAT_TASK_SET_FULL) {
499 pnode->last_q_full_time = jiffies;
500
501 shost_for_each_device(tmp_sdev, sdev->host) {
502 if (tmp_sdev->id != sdev->id)
503 continue;
504 depth = scsi_track_queue_full(tmp_sdev,
505 tmp_sdev->queue_depth - 1);
506 }
507 /*
508 * The queue depth cannot be lowered any more.
509 * Modify the returned error code to store
510 * the final depth value set by
511 * scsi_track_queue_full.
512 */
513 if (depth == -1)
514 depth = sdev->host->cmd_per_lun;
515
516 if (depth) {
517 lpfc_printf_log(phba, KERN_WARNING, LOG_FCP,
518 "%d:0711 detected queue full - lun queue depth "
519 " adjusted to %d.\n", phba->brd_no, depth);
520 }
521 }
522
447 lpfc_release_scsi_buf(phba, lpfc_cmd); 523 lpfc_release_scsi_buf(phba, lpfc_cmd);
448 spin_unlock_irqrestore(phba->host->host_lock, iflag);
449} 524}
450 525
451static void 526static void
@@ -693,6 +768,37 @@ lpfc_info(struct Scsi_Host *host)
693 return lpfcinfobuf; 768 return lpfcinfobuf;
694} 769}
695 770
771static __inline__ void lpfc_poll_rearm_timer(struct lpfc_hba * phba)
772{
773 unsigned long poll_tmo_expires =
774 (jiffies + msecs_to_jiffies(phba->cfg_poll_tmo));
775
776 if (phba->sli.ring[LPFC_FCP_RING].txcmplq_cnt)
777 mod_timer(&phba->fcp_poll_timer,
778 poll_tmo_expires);
779}
780
781void lpfc_poll_start_timer(struct lpfc_hba * phba)
782{
783 lpfc_poll_rearm_timer(phba);
784}
785
786void lpfc_poll_timeout(unsigned long ptr)
787{
788 struct lpfc_hba *phba = (struct lpfc_hba *)ptr;
789 unsigned long iflag;
790
791 spin_lock_irqsave(phba->host->host_lock, iflag);
792
793 if (phba->cfg_poll & ENABLE_FCP_RING_POLLING) {
794 lpfc_sli_poll_fcp_ring (phba);
795 if (phba->cfg_poll & DISABLE_FCP_RING_INT)
796 lpfc_poll_rearm_timer(phba);
797 }
798
799 spin_unlock_irqrestore(phba->host->host_lock, iflag);
800}
801
696static int 802static int
697lpfc_queuecommand(struct scsi_cmnd *cmnd, void (*done) (struct scsi_cmnd *)) 803lpfc_queuecommand(struct scsi_cmnd *cmnd, void (*done) (struct scsi_cmnd *))
698{ 804{
@@ -719,10 +825,11 @@ lpfc_queuecommand(struct scsi_cmnd *cmnd, void (*done) (struct scsi_cmnd *))
719 cmnd->result = ScsiResult(DID_BUS_BUSY, 0); 825 cmnd->result = ScsiResult(DID_BUS_BUSY, 0);
720 goto out_fail_command; 826 goto out_fail_command;
721 } 827 }
722 lpfc_cmd = lpfc_sli_get_scsi_buf (phba); 828 lpfc_cmd = lpfc_get_scsi_buf (phba);
723 if (lpfc_cmd == NULL) { 829 if (lpfc_cmd == NULL) {
724 printk(KERN_WARNING "%s: No buffer available - list empty, " 830 lpfc_printf_log(phba, KERN_INFO, LOG_FCP,
725 "total count %d\n", __FUNCTION__, phba->total_scsi_bufs); 831 "%d:0707 driver's buffer pool is empty, "
832 "IO busied\n", phba->brd_no);
726 goto out_host_busy; 833 goto out_host_busy;
727 } 834 }
728 835
@@ -746,11 +853,17 @@ lpfc_queuecommand(struct scsi_cmnd *cmnd, void (*done) (struct scsi_cmnd *))
746 &lpfc_cmd->cur_iocbq, SLI_IOCB_RET_IOCB); 853 &lpfc_cmd->cur_iocbq, SLI_IOCB_RET_IOCB);
747 if (err) 854 if (err)
748 goto out_host_busy_free_buf; 855 goto out_host_busy_free_buf;
856
857 if (phba->cfg_poll & ENABLE_FCP_RING_POLLING) {
858 lpfc_sli_poll_fcp_ring(phba);
859 if (phba->cfg_poll & DISABLE_FCP_RING_INT)
860 lpfc_poll_rearm_timer(phba);
861 }
862
749 return 0; 863 return 0;
750 864
751 out_host_busy_free_buf: 865 out_host_busy_free_buf:
752 lpfc_release_scsi_buf(phba, lpfc_cmd); 866 lpfc_release_scsi_buf(phba, lpfc_cmd);
753 cmnd->host_scribble = NULL;
754 out_host_busy: 867 out_host_busy:
755 return SCSI_MLQUEUE_HOST_BUSY; 868 return SCSI_MLQUEUE_HOST_BUSY;
756 869
@@ -759,11 +872,12 @@ lpfc_queuecommand(struct scsi_cmnd *cmnd, void (*done) (struct scsi_cmnd *))
759 return 0; 872 return 0;
760} 873}
761 874
875
762static int 876static int
763__lpfc_abort_handler(struct scsi_cmnd *cmnd) 877lpfc_abort_handler(struct scsi_cmnd *cmnd)
764{ 878{
765 struct lpfc_hba *phba = 879 struct Scsi_Host *shost = cmnd->device->host;
766 (struct lpfc_hba *)cmnd->device->host->hostdata[0]; 880 struct lpfc_hba *phba = (struct lpfc_hba *)shost->hostdata[0];
767 struct lpfc_sli_ring *pring = &phba->sli.ring[phba->sli.fcp_ring]; 881 struct lpfc_sli_ring *pring = &phba->sli.ring[phba->sli.fcp_ring];
768 struct lpfc_iocbq *iocb; 882 struct lpfc_iocbq *iocb;
769 struct lpfc_iocbq *abtsiocb; 883 struct lpfc_iocbq *abtsiocb;
@@ -772,6 +886,8 @@ __lpfc_abort_handler(struct scsi_cmnd *cmnd)
772 unsigned int loop_count = 0; 886 unsigned int loop_count = 0;
773 int ret = SUCCESS; 887 int ret = SUCCESS;
774 888
889 lpfc_block_requests(phba);
890 spin_lock_irq(shost->host_lock);
775 891
776 lpfc_cmd = (struct lpfc_scsi_buf *)cmnd->host_scribble; 892 lpfc_cmd = (struct lpfc_scsi_buf *)cmnd->host_scribble;
777 BUG_ON(!lpfc_cmd); 893 BUG_ON(!lpfc_cmd);
@@ -821,9 +937,15 @@ __lpfc_abort_handler(struct scsi_cmnd *cmnd)
821 goto out; 937 goto out;
822 } 938 }
823 939
940 if (phba->cfg_poll & DISABLE_FCP_RING_INT)
941 lpfc_sli_poll_fcp_ring (phba);
942
824 /* Wait for abort to complete */ 943 /* Wait for abort to complete */
825 while (lpfc_cmd->pCmd == cmnd) 944 while (lpfc_cmd->pCmd == cmnd)
826 { 945 {
946 if (phba->cfg_poll & DISABLE_FCP_RING_INT)
947 lpfc_sli_poll_fcp_ring (phba);
948
827 spin_unlock_irq(phba->host->host_lock); 949 spin_unlock_irq(phba->host->host_lock);
828 schedule_timeout_uninterruptible(LPFC_ABORT_WAIT*HZ); 950 schedule_timeout_uninterruptible(LPFC_ABORT_WAIT*HZ);
829 spin_lock_irq(phba->host->host_lock); 951 spin_lock_irq(phba->host->host_lock);
@@ -844,26 +966,19 @@ __lpfc_abort_handler(struct scsi_cmnd *cmnd)
844 966
845 out: 967 out:
846 lpfc_printf_log(phba, KERN_WARNING, LOG_FCP, 968 lpfc_printf_log(phba, KERN_WARNING, LOG_FCP,
847 "%d:0749 SCSI layer issued abort device: ret %#x, " 969 "%d:0749 SCSI Layer I/O Abort Request "
848 "ID %d, LUN %d, snum %#lx\n", 970 "Status x%x ID %d LUN %d snum %#lx\n",
849 phba->brd_no, ret, cmnd->device->id, 971 phba->brd_no, ret, cmnd->device->id,
850 cmnd->device->lun, cmnd->serial_number); 972 cmnd->device->lun, cmnd->serial_number);
851 973
852 return ret; 974 spin_unlock_irq(shost->host_lock);
853} 975 lpfc_unblock_requests(phba);
854 976
855static int 977 return ret;
856lpfc_abort_handler(struct scsi_cmnd *cmnd)
857{
858 int rc;
859 spin_lock_irq(cmnd->device->host->host_lock);
860 rc = __lpfc_abort_handler(cmnd);
861 spin_unlock_irq(cmnd->device->host->host_lock);
862 return rc;
863} 978}
864 979
865static int 980static int
866__lpfc_reset_lun_handler(struct scsi_cmnd *cmnd) 981lpfc_reset_lun_handler(struct scsi_cmnd *cmnd)
867{ 982{
868 struct Scsi_Host *shost = cmnd->device->host; 983 struct Scsi_Host *shost = cmnd->device->host;
869 struct lpfc_hba *phba = (struct lpfc_hba *)shost->hostdata[0]; 984 struct lpfc_hba *phba = (struct lpfc_hba *)shost->hostdata[0];
@@ -871,9 +986,12 @@ __lpfc_reset_lun_handler(struct scsi_cmnd *cmnd)
871 struct lpfc_iocbq *iocbq, *iocbqrsp; 986 struct lpfc_iocbq *iocbq, *iocbqrsp;
872 struct lpfc_rport_data *rdata = cmnd->device->hostdata; 987 struct lpfc_rport_data *rdata = cmnd->device->hostdata;
873 struct lpfc_nodelist *pnode = rdata->pnode; 988 struct lpfc_nodelist *pnode = rdata->pnode;
989 uint32_t cmd_result = 0, cmd_status = 0;
874 int ret = FAILED; 990 int ret = FAILED;
875 int cnt, loopcnt; 991 int cnt, loopcnt;
876 992
993 lpfc_block_requests(phba);
994 spin_lock_irq(shost->host_lock);
877 /* 995 /*
878 * If target is not in a MAPPED state, delay the reset until 996 * If target is not in a MAPPED state, delay the reset until
879 * target is rediscovered or nodev timeout expires. 997 * target is rediscovered or nodev timeout expires.
@@ -891,7 +1009,7 @@ __lpfc_reset_lun_handler(struct scsi_cmnd *cmnd)
891 break; 1009 break;
892 } 1010 }
893 1011
894 lpfc_cmd = lpfc_sli_get_scsi_buf (phba); 1012 lpfc_cmd = lpfc_get_scsi_buf (phba);
895 if (lpfc_cmd == NULL) 1013 if (lpfc_cmd == NULL)
896 goto out; 1014 goto out;
897 1015
@@ -916,26 +1034,28 @@ __lpfc_reset_lun_handler(struct scsi_cmnd *cmnd)
916 if (ret == IOCB_SUCCESS) 1034 if (ret == IOCB_SUCCESS)
917 ret = SUCCESS; 1035 ret = SUCCESS;
918 1036
919 lpfc_cmd->result = iocbqrsp->iocb.un.ulpWord[4]; 1037
920 lpfc_cmd->status = iocbqrsp->iocb.ulpStatus; 1038 cmd_result = iocbqrsp->iocb.un.ulpWord[4];
921 if (lpfc_cmd->status == IOSTAT_LOCAL_REJECT) 1039 cmd_status = iocbqrsp->iocb.ulpStatus;
922 if (lpfc_cmd->result & IOERR_DRVR_MASK) 1040
923 lpfc_cmd->status = IOSTAT_DRIVER_REJECT; 1041 lpfc_sli_release_iocbq(phba, iocbqrsp);
1042 lpfc_release_scsi_buf(phba, lpfc_cmd);
924 1043
925 /* 1044 /*
926 * All outstanding txcmplq I/Os should have been aborted by the target. 1045 * All outstanding txcmplq I/Os should have been aborted by the device.
927 * Unfortunately, some targets do not abide by this forcing the driver 1046 * Unfortunately, some targets do not abide by this forcing the driver
928 * to double check. 1047 * to double check.
929 */ 1048 */
930 lpfc_sli_abort_iocb(phba, &phba->sli.ring[phba->sli.fcp_ring], 1049 cnt = lpfc_sli_sum_iocb(phba, &phba->sli.ring[phba->sli.fcp_ring],
931 cmnd->device->id, cmnd->device->lun, 0, 1050 cmnd->device->id, cmnd->device->lun,
932 LPFC_CTX_LUN); 1051 LPFC_CTX_LUN);
933 1052 if (cnt)
1053 lpfc_sli_abort_iocb(phba,
1054 &phba->sli.ring[phba->sli.fcp_ring],
1055 cmnd->device->id, cmnd->device->lun,
1056 0, LPFC_CTX_LUN);
934 loopcnt = 0; 1057 loopcnt = 0;
935 while((cnt = lpfc_sli_sum_iocb(phba, 1058 while(cnt) {
936 &phba->sli.ring[phba->sli.fcp_ring],
937 cmnd->device->id, cmnd->device->lun,
938 LPFC_CTX_LUN))) {
939 spin_unlock_irq(phba->host->host_lock); 1059 spin_unlock_irq(phba->host->host_lock);
940 schedule_timeout_uninterruptible(LPFC_RESET_WAIT*HZ); 1060 schedule_timeout_uninterruptible(LPFC_RESET_WAIT*HZ);
941 spin_lock_irq(phba->host->host_lock); 1061 spin_lock_irq(phba->host->host_lock);
@@ -943,6 +1063,11 @@ __lpfc_reset_lun_handler(struct scsi_cmnd *cmnd)
943 if (++loopcnt 1063 if (++loopcnt
944 > (2 * phba->cfg_nodev_tmo)/LPFC_RESET_WAIT) 1064 > (2 * phba->cfg_nodev_tmo)/LPFC_RESET_WAIT)
945 break; 1065 break;
1066
1067 cnt = lpfc_sli_sum_iocb(phba,
1068 &phba->sli.ring[phba->sli.fcp_ring],
1069 cmnd->device->id, cmnd->device->lun,
1070 LPFC_CTX_LUN);
946 } 1071 }
947 1072
948 if (cnt) { 1073 if (cnt) {
@@ -952,35 +1077,21 @@ __lpfc_reset_lun_handler(struct scsi_cmnd *cmnd)
952 ret = FAILED; 1077 ret = FAILED;
953 } 1078 }
954 1079
955 lpfc_sli_release_iocbq(phba, iocbqrsp);
956
957out_free_scsi_buf: 1080out_free_scsi_buf:
958 lpfc_printf_log(phba, KERN_ERR, LOG_FCP, 1081 lpfc_printf_log(phba, KERN_ERR, LOG_FCP,
959 "%d:0713 SCSI layer issued LUN reset (%d, %d) " 1082 "%d:0713 SCSI layer issued LUN reset (%d, %d) "
960 "Data: x%x x%x x%x\n", 1083 "Data: x%x x%x x%x\n",
961 phba->brd_no, lpfc_cmd->pCmd->device->id, 1084 phba->brd_no, cmnd->device->id,cmnd->device->lun,
962 lpfc_cmd->pCmd->device->lun, ret, lpfc_cmd->status, 1085 ret, cmd_status, cmd_result);
963 lpfc_cmd->result); 1086
964 lpfc_release_scsi_buf(phba, lpfc_cmd);
965out: 1087out:
1088 spin_unlock_irq(shost->host_lock);
1089 lpfc_unblock_requests(phba);
966 return ret; 1090 return ret;
967} 1091}
968 1092
969static int 1093static int
970lpfc_reset_lun_handler(struct scsi_cmnd *cmnd) 1094lpfc_reset_bus_handler(struct scsi_cmnd *cmnd)
971{
972 int rc;
973 spin_lock_irq(cmnd->device->host->host_lock);
974 rc = __lpfc_reset_lun_handler(cmnd);
975 spin_unlock_irq(cmnd->device->host->host_lock);
976 return rc;
977}
978
979/*
980 * Note: midlayer calls this function with the host_lock held
981 */
982static int
983__lpfc_reset_bus_handler(struct scsi_cmnd *cmnd)
984{ 1095{
985 struct Scsi_Host *shost = cmnd->device->host; 1096 struct Scsi_Host *shost = cmnd->device->host;
986 struct lpfc_hba *phba = (struct lpfc_hba *)shost->hostdata[0]; 1097 struct lpfc_hba *phba = (struct lpfc_hba *)shost->hostdata[0];
@@ -991,7 +1102,10 @@ __lpfc_reset_bus_handler(struct scsi_cmnd *cmnd)
991 unsigned int midlayer_id = 0; 1102 unsigned int midlayer_id = 0;
992 struct lpfc_scsi_buf * lpfc_cmd; 1103 struct lpfc_scsi_buf * lpfc_cmd;
993 1104
994 lpfc_cmd = lpfc_sli_get_scsi_buf (phba); 1105 lpfc_block_requests(phba);
1106 spin_lock_irq(shost->host_lock);
1107
1108 lpfc_cmd = lpfc_get_scsi_buf(phba);
995 if (lpfc_cmd == NULL) 1109 if (lpfc_cmd == NULL)
996 goto out; 1110 goto out;
997 1111
@@ -1022,18 +1136,31 @@ __lpfc_reset_bus_handler(struct scsi_cmnd *cmnd)
1022 lpfc_cmd->pCmd->device->hostdata = ndlp->rport->dd_data; 1136 lpfc_cmd->pCmd->device->hostdata = ndlp->rport->dd_data;
1023 ret = lpfc_scsi_tgt_reset(lpfc_cmd, phba); 1137 ret = lpfc_scsi_tgt_reset(lpfc_cmd, phba);
1024 if (ret != SUCCESS) { 1138 if (ret != SUCCESS) {
1025 lpfc_printf_log(phba, KERN_INFO, LOG_FCP, 1139 lpfc_printf_log(phba, KERN_ERR, LOG_FCP,
1026 "%d:0713 Bus Reset on target %d failed\n", 1140 "%d:0713 Bus Reset on target %d failed\n",
1027 phba->brd_no, i); 1141 phba->brd_no, i);
1028 err_count++; 1142 err_count++;
1029 } 1143 }
1030 } 1144 }
1031 1145
1146 if (err_count == 0)
1147 ret = SUCCESS;
1148
1149 lpfc_release_scsi_buf(phba, lpfc_cmd);
1150
1151 /*
1152 * All outstanding txcmplq I/Os should have been aborted by
1153 * the targets. Unfortunately, some targets do not abide by
1154 * this forcing the driver to double check.
1155 */
1032 cmnd->device->id = midlayer_id; 1156 cmnd->device->id = midlayer_id;
1157 cnt = lpfc_sli_sum_iocb(phba, &phba->sli.ring[phba->sli.fcp_ring],
1158 0, 0, LPFC_CTX_HOST);
1159 if (cnt)
1160 lpfc_sli_abort_iocb(phba, &phba->sli.ring[phba->sli.fcp_ring],
1161 0, 0, 0, LPFC_CTX_HOST);
1033 loopcnt = 0; 1162 loopcnt = 0;
1034 while((cnt = lpfc_sli_sum_iocb(phba, 1163 while(cnt) {
1035 &phba->sli.ring[phba->sli.fcp_ring],
1036 0, 0, LPFC_CTX_HOST))) {
1037 spin_unlock_irq(phba->host->host_lock); 1164 spin_unlock_irq(phba->host->host_lock);
1038 schedule_timeout_uninterruptible(LPFC_RESET_WAIT*HZ); 1165 schedule_timeout_uninterruptible(LPFC_RESET_WAIT*HZ);
1039 spin_lock_irq(phba->host->host_lock); 1166 spin_lock_irq(phba->host->host_lock);
@@ -1041,45 +1168,31 @@ __lpfc_reset_bus_handler(struct scsi_cmnd *cmnd)
1041 if (++loopcnt 1168 if (++loopcnt
1042 > (2 * phba->cfg_nodev_tmo)/LPFC_RESET_WAIT) 1169 > (2 * phba->cfg_nodev_tmo)/LPFC_RESET_WAIT)
1043 break; 1170 break;
1171
1172 cnt = lpfc_sli_sum_iocb(phba,
1173 &phba->sli.ring[phba->sli.fcp_ring],
1174 0, 0, LPFC_CTX_HOST);
1044 } 1175 }
1045 1176
1046 if (cnt) { 1177 if (cnt) {
1047 /* flush all outstanding commands on the host */ 1178 lpfc_printf_log(phba, KERN_ERR, LOG_FCP,
1048 i = lpfc_sli_abort_iocb(phba,
1049 &phba->sli.ring[phba->sli.fcp_ring], 0, 0, 0,
1050 LPFC_CTX_HOST);
1051
1052 lpfc_printf_log(phba, KERN_INFO, LOG_FCP,
1053 "%d:0715 Bus Reset I/O flush failure: cnt x%x left x%x\n", 1179 "%d:0715 Bus Reset I/O flush failure: cnt x%x left x%x\n",
1054 phba->brd_no, cnt, i); 1180 phba->brd_no, cnt, i);
1055 }
1056
1057 if (cnt == 0)
1058 ret = SUCCESS;
1059 else
1060 ret = FAILED; 1181 ret = FAILED;
1182 }
1061 1183
1062 lpfc_release_scsi_buf(phba, lpfc_cmd);
1063 lpfc_printf_log(phba, 1184 lpfc_printf_log(phba,
1064 KERN_ERR, 1185 KERN_ERR,
1065 LOG_FCP, 1186 LOG_FCP,
1066 "%d:0714 SCSI layer issued Bus Reset Data: x%x\n", 1187 "%d:0714 SCSI layer issued Bus Reset Data: x%x\n",
1067 phba->brd_no, ret); 1188 phba->brd_no, ret);
1068out: 1189out:
1190 spin_unlock_irq(shost->host_lock);
1191 lpfc_unblock_requests(phba);
1069 return ret; 1192 return ret;
1070} 1193}
1071 1194
1072static int 1195static int
1073lpfc_reset_bus_handler(struct scsi_cmnd *cmnd)
1074{
1075 int rc;
1076 spin_lock_irq(cmnd->device->host->host_lock);
1077 rc = __lpfc_reset_bus_handler(cmnd);
1078 spin_unlock_irq(cmnd->device->host->host_lock);
1079 return rc;
1080}
1081
1082static int
1083lpfc_slave_alloc(struct scsi_device *sdev) 1196lpfc_slave_alloc(struct scsi_device *sdev)
1084{ 1197{
1085 struct lpfc_hba *phba = (struct lpfc_hba *)sdev->host->hostdata[0]; 1198 struct lpfc_hba *phba = (struct lpfc_hba *)sdev->host->hostdata[0];
@@ -1127,10 +1240,10 @@ lpfc_slave_alloc(struct scsi_device *sdev)
1127 break; 1240 break;
1128 } 1241 }
1129 1242
1130 spin_lock_irqsave(phba->host->host_lock, flags); 1243 spin_lock_irqsave(&phba->scsi_buf_list_lock, flags);
1131 phba->total_scsi_bufs++; 1244 phba->total_scsi_bufs++;
1132 list_add_tail(&scsi_buf->list, &phba->lpfc_scsi_buf_list); 1245 list_add_tail(&scsi_buf->list, &phba->lpfc_scsi_buf_list);
1133 spin_unlock_irqrestore(phba->host->host_lock, flags); 1246 spin_unlock_irqrestore(&phba->scsi_buf_list_lock, flags);
1134 } 1247 }
1135 return 0; 1248 return 0;
1136} 1249}
@@ -1154,6 +1267,12 @@ lpfc_slave_configure(struct scsi_device *sdev)
1154 */ 1267 */
1155 rport->dev_loss_tmo = phba->cfg_nodev_tmo + 5; 1268 rport->dev_loss_tmo = phba->cfg_nodev_tmo + 5;
1156 1269
1270 if (phba->cfg_poll & ENABLE_FCP_RING_POLLING) {
1271 lpfc_sli_poll_fcp_ring(phba);
1272 if (phba->cfg_poll & DISABLE_FCP_RING_INT)
1273 lpfc_poll_rearm_timer(phba);
1274 }
1275
1157 return 0; 1276 return 0;
1158} 1277}
1159 1278
diff --git a/drivers/scsi/lpfc/lpfc_sli.c b/drivers/scsi/lpfc/lpfc_sli.c
index e2c08c5d83fb..7b785ade8b07 100644
--- a/drivers/scsi/lpfc/lpfc_sli.c
+++ b/drivers/scsi/lpfc/lpfc_sli.c
@@ -886,6 +886,182 @@ lpfc_sli_process_sol_iocb(struct lpfc_hba * phba, struct lpfc_sli_ring * pring,
886 return rc; 886 return rc;
887} 887}
888 888
889static void lpfc_sli_rsp_pointers_error(struct lpfc_hba * phba,
890 struct lpfc_sli_ring * pring)
891{
892 struct lpfc_pgp *pgp = &phba->slim2p->mbx.us.s2.port[pring->ringno];
893 /*
894 * Ring <ringno> handler: portRspPut <portRspPut> is bigger then
895 * rsp ring <portRspMax>
896 */
897 lpfc_printf_log(phba, KERN_ERR, LOG_SLI,
898 "%d:0312 Ring %d handler: portRspPut %d "
899 "is bigger then rsp ring %d\n",
900 phba->brd_no, pring->ringno,
901 le32_to_cpu(pgp->rspPutInx),
902 pring->numRiocb);
903
904 phba->hba_state = LPFC_HBA_ERROR;
905
906 /*
907 * All error attention handlers are posted to
908 * worker thread
909 */
910 phba->work_ha |= HA_ERATT;
911 phba->work_hs = HS_FFER3;
912 if (phba->work_wait)
913 wake_up(phba->work_wait);
914
915 return;
916}
917
918void lpfc_sli_poll_fcp_ring(struct lpfc_hba * phba)
919{
920 struct lpfc_sli * psli = &phba->sli;
921 struct lpfc_sli_ring * pring = &psli->ring[LPFC_FCP_RING];
922 IOCB_t *irsp = NULL;
923 IOCB_t *entry = NULL;
924 struct lpfc_iocbq *cmdiocbq = NULL;
925 struct lpfc_iocbq rspiocbq;
926 struct lpfc_pgp *pgp;
927 uint32_t status;
928 uint32_t portRspPut, portRspMax;
929 int type;
930 uint32_t rsp_cmpl = 0;
931 void __iomem *to_slim;
932 uint32_t ha_copy;
933
934 pring->stats.iocb_event++;
935
936 /* The driver assumes SLI-2 mode */
937 pgp = &phba->slim2p->mbx.us.s2.port[pring->ringno];
938
939 /*
940 * The next available response entry should never exceed the maximum
941 * entries. If it does, treat it as an adapter hardware error.
942 */
943 portRspMax = pring->numRiocb;
944 portRspPut = le32_to_cpu(pgp->rspPutInx);
945 if (unlikely(portRspPut >= portRspMax)) {
946 lpfc_sli_rsp_pointers_error(phba, pring);
947 return;
948 }
949
950 rmb();
951 while (pring->rspidx != portRspPut) {
952
953 entry = IOCB_ENTRY(pring->rspringaddr, pring->rspidx);
954
955 if (++pring->rspidx >= portRspMax)
956 pring->rspidx = 0;
957
958 lpfc_sli_pcimem_bcopy((uint32_t *) entry,
959 (uint32_t *) &rspiocbq.iocb,
960 sizeof (IOCB_t));
961 irsp = &rspiocbq.iocb;
962 type = lpfc_sli_iocb_cmd_type(irsp->ulpCommand & CMD_IOCB_MASK);
963 pring->stats.iocb_rsp++;
964 rsp_cmpl++;
965
966 if (unlikely(irsp->ulpStatus)) {
967 /* Rsp ring <ringno> error: IOCB */
968 lpfc_printf_log(phba, KERN_WARNING, LOG_SLI,
969 "%d:0326 Rsp Ring %d error: IOCB Data: "
970 "x%x x%x x%x x%x x%x x%x x%x x%x\n",
971 phba->brd_no, pring->ringno,
972 irsp->un.ulpWord[0],
973 irsp->un.ulpWord[1],
974 irsp->un.ulpWord[2],
975 irsp->un.ulpWord[3],
976 irsp->un.ulpWord[4],
977 irsp->un.ulpWord[5],
978 *(((uint32_t *) irsp) + 6),
979 *(((uint32_t *) irsp) + 7));
980 }
981
982 switch (type) {
983 case LPFC_ABORT_IOCB:
984 case LPFC_SOL_IOCB:
985 /*
986 * Idle exchange closed via ABTS from port. No iocb
987 * resources need to be recovered.
988 */
989 if (unlikely(irsp->ulpCommand == CMD_XRI_ABORTED_CX)) {
990 printk(KERN_INFO "%s: IOCB cmd 0x%x processed."
991 " Skipping completion\n", __FUNCTION__,
992 irsp->ulpCommand);
993 break;
994 }
995
996 cmdiocbq = lpfc_sli_iocbq_lookup(phba, pring,
997 &rspiocbq);
998 if ((cmdiocbq) && (cmdiocbq->iocb_cmpl)) {
999 (cmdiocbq->iocb_cmpl)(phba, cmdiocbq,
1000 &rspiocbq);
1001 }
1002 break;
1003 default:
1004 if (irsp->ulpCommand == CMD_ADAPTER_MSG) {
1005 char adaptermsg[LPFC_MAX_ADPTMSG];
1006 memset(adaptermsg, 0, LPFC_MAX_ADPTMSG);
1007 memcpy(&adaptermsg[0], (uint8_t *) irsp,
1008 MAX_MSG_DATA);
1009 dev_warn(&((phba->pcidev)->dev), "lpfc%d: %s",
1010 phba->brd_no, adaptermsg);
1011 } else {
1012 /* Unknown IOCB command */
1013 lpfc_printf_log(phba, KERN_ERR, LOG_SLI,
1014 "%d:0321 Unknown IOCB command "
1015 "Data: x%x, x%x x%x x%x x%x\n",
1016 phba->brd_no, type,
1017 irsp->ulpCommand,
1018 irsp->ulpStatus,
1019 irsp->ulpIoTag,
1020 irsp->ulpContext);
1021 }
1022 break;
1023 }
1024
1025 /*
1026 * The response IOCB has been processed. Update the ring
1027 * pointer in SLIM. If the port response put pointer has not
1028 * been updated, sync the pgp->rspPutInx and fetch the new port
1029 * response put pointer.
1030 */
1031 to_slim = phba->MBslimaddr +
1032 (SLIMOFF + (pring->ringno * 2) + 1) * 4;
1033 writeb(pring->rspidx, to_slim);
1034
1035 if (pring->rspidx == portRspPut)
1036 portRspPut = le32_to_cpu(pgp->rspPutInx);
1037 }
1038
1039 ha_copy = readl(phba->HAregaddr);
1040 ha_copy >>= (LPFC_FCP_RING * 4);
1041
1042 if ((rsp_cmpl > 0) && (ha_copy & HA_R0RE_REQ)) {
1043 pring->stats.iocb_rsp_full++;
1044 status = ((CA_R0ATT | CA_R0RE_RSP) << (LPFC_FCP_RING * 4));
1045 writel(status, phba->CAregaddr);
1046 readl(phba->CAregaddr);
1047 }
1048 if ((ha_copy & HA_R0CE_RSP) &&
1049 (pring->flag & LPFC_CALL_RING_AVAILABLE)) {
1050 pring->flag &= ~LPFC_CALL_RING_AVAILABLE;
1051 pring->stats.iocb_cmd_empty++;
1052
1053 /* Force update of the local copy of cmdGetInx */
1054 pring->local_getidx = le32_to_cpu(pgp->cmdGetInx);
1055 lpfc_sli_resume_iocb(phba, pring);
1056
1057 if ((pring->lpfc_sli_cmd_available))
1058 (pring->lpfc_sli_cmd_available) (phba, pring);
1059
1060 }
1061
1062 return;
1063}
1064
889/* 1065/*
890 * This routine presumes LPFC_FCP_RING handling and doesn't bother 1066 * This routine presumes LPFC_FCP_RING handling and doesn't bother
891 * to check it explicitly. 1067 * to check it explicitly.
@@ -917,24 +1093,7 @@ lpfc_sli_handle_fast_ring_event(struct lpfc_hba * phba,
917 portRspMax = pring->numRiocb; 1093 portRspMax = pring->numRiocb;
918 portRspPut = le32_to_cpu(pgp->rspPutInx); 1094 portRspPut = le32_to_cpu(pgp->rspPutInx);
919 if (unlikely(portRspPut >= portRspMax)) { 1095 if (unlikely(portRspPut >= portRspMax)) {
920 /* 1096 lpfc_sli_rsp_pointers_error(phba, pring);
921 * Ring <ringno> handler: portRspPut <portRspPut> is bigger then
922 * rsp ring <portRspMax>
923 */
924 lpfc_printf_log(phba, KERN_ERR, LOG_SLI,
925 "%d:0312 Ring %d handler: portRspPut %d "
926 "is bigger then rsp ring %d\n",
927 phba->brd_no, pring->ringno, portRspPut,
928 portRspMax);
929
930 phba->hba_state = LPFC_HBA_ERROR;
931
932 /* All error attention handlers are posted to worker thread */
933 phba->work_ha |= HA_ERATT;
934 phba->work_hs = HS_FFER3;
935 if (phba->work_wait)
936 wake_up(phba->work_wait);
937
938 spin_unlock_irqrestore(phba->host->host_lock, iflag); 1097 spin_unlock_irqrestore(phba->host->host_lock, iflag);
939 return 1; 1098 return 1;
940 } 1099 }
@@ -947,6 +1106,10 @@ lpfc_sli_handle_fast_ring_event(struct lpfc_hba * phba,
947 * network byte order and pci byte orders are different. 1106 * network byte order and pci byte orders are different.
948 */ 1107 */
949 entry = IOCB_ENTRY(pring->rspringaddr, pring->rspidx); 1108 entry = IOCB_ENTRY(pring->rspringaddr, pring->rspidx);
1109
1110 if (++pring->rspidx >= portRspMax)
1111 pring->rspidx = 0;
1112
950 lpfc_sli_pcimem_bcopy((uint32_t *) entry, 1113 lpfc_sli_pcimem_bcopy((uint32_t *) entry,
951 (uint32_t *) &rspiocbq.iocb, 1114 (uint32_t *) &rspiocbq.iocb,
952 sizeof (IOCB_t)); 1115 sizeof (IOCB_t));
@@ -1020,9 +1183,6 @@ lpfc_sli_handle_fast_ring_event(struct lpfc_hba * phba,
1020 * been updated, sync the pgp->rspPutInx and fetch the new port 1183 * been updated, sync the pgp->rspPutInx and fetch the new port
1021 * response put pointer. 1184 * response put pointer.
1022 */ 1185 */
1023 if (++pring->rspidx >= portRspMax)
1024 pring->rspidx = 0;
1025
1026 to_slim = phba->MBslimaddr + 1186 to_slim = phba->MBslimaddr +
1027 (SLIMOFF + (pring->ringno * 2) + 1) * 4; 1187 (SLIMOFF + (pring->ringno * 2) + 1) * 4;
1028 writel(pring->rspidx, to_slim); 1188 writel(pring->rspidx, to_slim);
@@ -2615,6 +2775,7 @@ lpfc_sli_issue_iocb_wait(struct lpfc_hba * phba,
2615 DECLARE_WAIT_QUEUE_HEAD(done_q); 2775 DECLARE_WAIT_QUEUE_HEAD(done_q);
2616 long timeleft, timeout_req = 0; 2776 long timeleft, timeout_req = 0;
2617 int retval = IOCB_SUCCESS; 2777 int retval = IOCB_SUCCESS;
2778 uint32_t creg_val;
2618 2779
2619 /* 2780 /*
2620 * If the caller has provided a response iocbq buffer, then context2 2781 * If the caller has provided a response iocbq buffer, then context2
@@ -2630,6 +2791,13 @@ lpfc_sli_issue_iocb_wait(struct lpfc_hba * phba,
2630 piocb->context_un.wait_queue = &done_q; 2791 piocb->context_un.wait_queue = &done_q;
2631 piocb->iocb_flag &= ~LPFC_IO_WAKE; 2792 piocb->iocb_flag &= ~LPFC_IO_WAKE;
2632 2793
2794 if (phba->cfg_poll & DISABLE_FCP_RING_INT) {
2795 creg_val = readl(phba->HCregaddr);
2796 creg_val |= (HC_R0INT_ENA << LPFC_FCP_RING);
2797 writel(creg_val, phba->HCregaddr);
2798 readl(phba->HCregaddr); /* flush */
2799 }
2800
2633 retval = lpfc_sli_issue_iocb(phba, pring, piocb, 0); 2801 retval = lpfc_sli_issue_iocb(phba, pring, piocb, 0);
2634 if (retval == IOCB_SUCCESS) { 2802 if (retval == IOCB_SUCCESS) {
2635 timeout_req = timeout * HZ; 2803 timeout_req = timeout * HZ;
@@ -2663,6 +2831,13 @@ lpfc_sli_issue_iocb_wait(struct lpfc_hba * phba,
2663 retval = IOCB_ERROR; 2831 retval = IOCB_ERROR;
2664 } 2832 }
2665 2833
2834 if (phba->cfg_poll & DISABLE_FCP_RING_INT) {
2835 creg_val = readl(phba->HCregaddr);
2836 creg_val &= ~(HC_R0INT_ENA << LPFC_FCP_RING);
2837 writel(creg_val, phba->HCregaddr);
2838 readl(phba->HCregaddr); /* flush */
2839 }
2840
2666 if (prspiocbq) 2841 if (prspiocbq)
2667 piocb->context2 = NULL; 2842 piocb->context2 = NULL;
2668 2843
diff --git a/drivers/scsi/lpfc/lpfc_version.h b/drivers/scsi/lpfc/lpfc_version.h
index 4f0466fbd5f2..fa681a934ffe 100644
--- a/drivers/scsi/lpfc/lpfc_version.h
+++ b/drivers/scsi/lpfc/lpfc_version.h
@@ -18,7 +18,7 @@
18 * included with this package. * 18 * included with this package. *
19 *******************************************************************/ 19 *******************************************************************/
20 20
21#define LPFC_DRIVER_VERSION "8.1.0" 21#define LPFC_DRIVER_VERSION "8.1.1"
22 22
23#define LPFC_DRIVER_NAME "lpfc" 23#define LPFC_DRIVER_NAME "lpfc"
24 24
diff --git a/drivers/scsi/megaraid.c b/drivers/scsi/megaraid.c
index 578143e93a6f..4a6feb1e5e3d 100644
--- a/drivers/scsi/megaraid.c
+++ b/drivers/scsi/megaraid.c
@@ -2,7 +2,7 @@
2 * 2 *
3 * Linux MegaRAID device driver 3 * Linux MegaRAID device driver
4 * 4 *
5 * Copyright © 2002 LSI Logic Corporation. 5 * Copyright (c) 2002 LSI Logic Corporation.
6 * 6 *
7 * This program is free software; you can redistribute it and/or 7 * This program is free software; you can redistribute it and/or
8 * modify it under the terms of the GNU General Public License 8 * modify it under the terms of the GNU General Public License
@@ -17,7 +17,8 @@
17 * Copyright (c) 2003 Christoph Hellwig <hch@lst.de> 17 * Copyright (c) 2003 Christoph Hellwig <hch@lst.de>
18 * - new-style, hotplug-aware pci probing and scsi registration 18 * - new-style, hotplug-aware pci probing and scsi registration
19 * 19 *
20 * Version : v2.00.3 (Feb 19, 2003) - Atul Mukker <Atul.Mukker@lsil.com> 20 * Version : v2.00.4 Mon Nov 14 14:02:43 EST 2005 - Seokmann Ju
21 * <Seokmann.Ju@lsil.com>
21 * 22 *
22 * Description: Linux device driver for LSI Logic MegaRAID controller 23 * Description: Linux device driver for LSI Logic MegaRAID controller
23 * 24 *
@@ -51,10 +52,10 @@
51 52
52#include "megaraid.h" 53#include "megaraid.h"
53 54
54#define MEGARAID_MODULE_VERSION "2.00.3" 55#define MEGARAID_MODULE_VERSION "2.00.4"
55 56
56MODULE_AUTHOR ("LSI Logic Corporation"); 57MODULE_AUTHOR ("sju@lsil.com");
57MODULE_DESCRIPTION ("LSI Logic MegaRAID driver"); 58MODULE_DESCRIPTION ("LSI Logic MegaRAID legacy driver");
58MODULE_LICENSE ("GPL"); 59MODULE_LICENSE ("GPL");
59MODULE_VERSION(MEGARAID_MODULE_VERSION); 60MODULE_VERSION(MEGARAID_MODULE_VERSION);
60 61
@@ -4553,7 +4554,7 @@ mega_internal_done(Scsi_Cmnd *scmd)
4553static struct scsi_host_template megaraid_template = { 4554static struct scsi_host_template megaraid_template = {
4554 .module = THIS_MODULE, 4555 .module = THIS_MODULE,
4555 .name = "MegaRAID", 4556 .name = "MegaRAID",
4556 .proc_name = "megaraid", 4557 .proc_name = "megaraid_legacy",
4557 .info = megaraid_info, 4558 .info = megaraid_info,
4558 .queuecommand = megaraid_queue, 4559 .queuecommand = megaraid_queue,
4559 .bios_param = megaraid_biosparam, 4560 .bios_param = megaraid_biosparam,
@@ -5037,22 +5038,12 @@ megaraid_shutdown(struct pci_dev *pdev)
5037} 5038}
5038 5039
5039static struct pci_device_id megaraid_pci_tbl[] = { 5040static struct pci_device_id megaraid_pci_tbl[] = {
5040 {PCI_VENDOR_ID_DELL, PCI_DEVICE_ID_DISCOVERY,
5041 PCI_ANY_ID, PCI_ANY_ID, 0, 0, 0},
5042 {PCI_VENDOR_ID_DELL, PCI_DEVICE_ID_PERC4_DI,
5043 PCI_ANY_ID, PCI_ANY_ID, 0, 0, BOARD_64BIT},
5044 {PCI_VENDOR_ID_LSI_LOGIC, PCI_DEVICE_ID_PERC4_QC_VERDE,
5045 PCI_ANY_ID, PCI_ANY_ID, 0, 0, BOARD_64BIT},
5046 {PCI_VENDOR_ID_AMI, PCI_DEVICE_ID_AMI_MEGARAID, 5041 {PCI_VENDOR_ID_AMI, PCI_DEVICE_ID_AMI_MEGARAID,
5047 PCI_ANY_ID, PCI_ANY_ID, 0, 0, 0}, 5042 PCI_ANY_ID, PCI_ANY_ID, 0, 0, 0},
5048 {PCI_VENDOR_ID_AMI, PCI_DEVICE_ID_AMI_MEGARAID2, 5043 {PCI_VENDOR_ID_AMI, PCI_DEVICE_ID_AMI_MEGARAID2,
5049 PCI_ANY_ID, PCI_ANY_ID, 0, 0, 0}, 5044 PCI_ANY_ID, PCI_ANY_ID, 0, 0, 0},
5050 {PCI_VENDOR_ID_AMI, PCI_DEVICE_ID_AMI_MEGARAID3,
5051 PCI_ANY_ID, PCI_ANY_ID, 0, 0, 0},
5052 {PCI_VENDOR_ID_INTEL, PCI_DEVICE_ID_AMI_MEGARAID3, 5045 {PCI_VENDOR_ID_INTEL, PCI_DEVICE_ID_AMI_MEGARAID3,
5053 PCI_ANY_ID, PCI_ANY_ID, 0, 0, 0}, 5046 PCI_ANY_ID, PCI_ANY_ID, 0, 0, 0},
5054 {PCI_VENDOR_ID_LSI_LOGIC, PCI_DEVICE_ID_AMI_MEGARAID3,
5055 PCI_ANY_ID, PCI_ANY_ID, 0, 0, 0},
5056 {0,} 5047 {0,}
5057}; 5048};
5058MODULE_DEVICE_TABLE(pci, megaraid_pci_tbl); 5049MODULE_DEVICE_TABLE(pci, megaraid_pci_tbl);
@@ -5095,7 +5086,7 @@ static int __init megaraid_init(void)
5095 * First argument (major) to register_chrdev implies a dynamic 5086 * First argument (major) to register_chrdev implies a dynamic
5096 * major number allocation. 5087 * major number allocation.
5097 */ 5088 */
5098 major = register_chrdev(0, "megadev", &megadev_fops); 5089 major = register_chrdev(0, "megadev_legacy", &megadev_fops);
5099 if (!major) { 5090 if (!major) {
5100 printk(KERN_WARNING 5091 printk(KERN_WARNING
5101 "megaraid: failed to register char device\n"); 5092 "megaraid: failed to register char device\n");
@@ -5109,7 +5100,7 @@ static void __exit megaraid_exit(void)
5109 /* 5100 /*
5110 * Unregister the character device interface to the driver. 5101 * Unregister the character device interface to the driver.
5111 */ 5102 */
5112 unregister_chrdev(major, "megadev"); 5103 unregister_chrdev(major, "megadev_legacy");
5113 5104
5114 pci_unregister_driver(&megaraid_pci_driver); 5105 pci_unregister_driver(&megaraid_pci_driver);
5115 5106
diff --git a/drivers/scsi/megaraid/Kconfig.megaraid b/drivers/scsi/megaraid/Kconfig.megaraid
index 7363e12663ac..17419e30ffc8 100644
--- a/drivers/scsi/megaraid/Kconfig.megaraid
+++ b/drivers/scsi/megaraid/Kconfig.megaraid
@@ -64,7 +64,6 @@ config MEGARAID_MAILBOX
64 To compile this driver as a module, choose M here: the 64 To compile this driver as a module, choose M here: the
65 module will be called megaraid_mbox 65 module will be called megaraid_mbox
66 66
67if MEGARAID_NEWGEN=n
68config MEGARAID_LEGACY 67config MEGARAID_LEGACY
69 tristate "LSI Logic Legacy MegaRAID Driver" 68 tristate "LSI Logic Legacy MegaRAID Driver"
70 depends on PCI && SCSI 69 depends on PCI && SCSI
@@ -75,7 +74,6 @@ config MEGARAID_LEGACY
75 74
76 To compile this driver as a module, choose M here: the 75 To compile this driver as a module, choose M here: the
77 module will be called megaraid 76 module will be called megaraid
78endif
79 77
80config MEGARAID_SAS 78config MEGARAID_SAS
81 tristate "LSI Logic MegaRAID SAS RAID Module" 79 tristate "LSI Logic MegaRAID SAS RAID Module"
diff --git a/drivers/scsi/megaraid/megaraid_mbox.c b/drivers/scsi/megaraid/megaraid_mbox.c
index 4b5d420d2f4d..d18a4bc2498c 100644
--- a/drivers/scsi/megaraid/megaraid_mbox.c
+++ b/drivers/scsi/megaraid/megaraid_mbox.c
@@ -10,12 +10,13 @@
10 * 2 of the License, or (at your option) any later version. 10 * 2 of the License, or (at your option) any later version.
11 * 11 *
12 * FILE : megaraid_mbox.c 12 * FILE : megaraid_mbox.c
13 * Version : v2.20.4.6 (Mar 07 2005) 13 * Version : v2.20.4.7 (Nov 14 2005)
14 * 14 *
15 * Authors: 15 * Authors:
16 * Atul Mukker <Atul.Mukker@lsil.com> 16 * Atul Mukker <Atul.Mukker@lsil.com>
17 * Sreenivas Bagalkote <Sreenivas.Bagalkote@lsil.com> 17 * Sreenivas Bagalkote <Sreenivas.Bagalkote@lsil.com>
18 * Manoj Jose <Manoj.Jose@lsil.com> 18 * Manoj Jose <Manoj.Jose@lsil.com>
19 * Seokmann Ju <Seokmann.Ju@lsil.com>
19 * 20 *
20 * List of supported controllers 21 * List of supported controllers
21 * 22 *
@@ -136,7 +137,7 @@ static int wait_till_fw_empty(adapter_t *);
136 137
137 138
138 139
139MODULE_AUTHOR("LSI Logic Corporation"); 140MODULE_AUTHOR("sju@lsil.com");
140MODULE_DESCRIPTION("LSI Logic MegaRAID Mailbox Driver"); 141MODULE_DESCRIPTION("LSI Logic MegaRAID Mailbox Driver");
141MODULE_LICENSE("GPL"); 142MODULE_LICENSE("GPL");
142MODULE_VERSION(MEGARAID_VERSION); 143MODULE_VERSION(MEGARAID_VERSION);
@@ -278,68 +279,14 @@ static struct pci_device_id pci_id_table_g[] = {
278 { 279 {
279 PCI_VENDOR_ID_AMI, 280 PCI_VENDOR_ID_AMI,
280 PCI_DEVICE_ID_AMI_MEGARAID3, 281 PCI_DEVICE_ID_AMI_MEGARAID3,
281 PCI_VENDOR_ID_DELL, 282 PCI_ANY_ID,
282 PCI_SUBSYS_ID_PERC3_QC, 283 PCI_ANY_ID,
283 },
284 {
285 PCI_VENDOR_ID_AMI,
286 PCI_DEVICE_ID_AMI_MEGARAID3,
287 PCI_VENDOR_ID_DELL,
288 PCI_SUBSYS_ID_PERC3_DC,
289 },
290 {
291 PCI_VENDOR_ID_AMI,
292 PCI_DEVICE_ID_AMI_MEGARAID3,
293 PCI_VENDOR_ID_DELL,
294 PCI_SUBSYS_ID_PERC3_SC,
295 },
296 {
297 PCI_VENDOR_ID_AMI,
298 PCI_DEVICE_ID_AMI_MEGARAID3,
299 PCI_VENDOR_ID_AMI,
300 PCI_SUBSYS_ID_PERC3_SC,
301 },
302 {
303 PCI_VENDOR_ID_AMI,
304 PCI_DEVICE_ID_AMI_MEGARAID3,
305 PCI_VENDOR_ID_AMI,
306 PCI_SUBSYS_ID_PERC3_DC,
307 },
308 {
309 PCI_VENDOR_ID_LSI_LOGIC,
310 PCI_DEVICE_ID_MEGARAID_SCSI_320_0,
311 PCI_VENDOR_ID_LSI_LOGIC,
312 PCI_SUBSYS_ID_MEGARAID_SCSI_320_0,
313 },
314 {
315 PCI_VENDOR_ID_LSI_LOGIC,
316 PCI_DEVICE_ID_MEGARAID_SCSI_320_1,
317 PCI_VENDOR_ID_LSI_LOGIC,
318 PCI_SUBSYS_ID_MEGARAID_SCSI_320_1,
319 },
320 {
321 PCI_VENDOR_ID_LSI_LOGIC,
322 PCI_DEVICE_ID_MEGARAID_SCSI_320_2,
323 PCI_VENDOR_ID_LSI_LOGIC,
324 PCI_SUBSYS_ID_MEGARAID_SCSI_320_2,
325 },
326 {
327 PCI_VENDOR_ID_LSI_LOGIC,
328 PCI_DEVICE_ID_MEGARAID_I4_133_RAID,
329 PCI_VENDOR_ID_LSI_LOGIC,
330 PCI_SUBSYS_ID_MEGARAID_I4_133_RAID,
331 },
332 {
333 PCI_VENDOR_ID_LSI_LOGIC,
334 PCI_DEVICE_ID_MEGARAID_SATA_150_4,
335 PCI_VENDOR_ID_LSI_LOGIC,
336 PCI_SUBSYS_ID_MEGARAID_SATA_150_4,
337 }, 284 },
338 { 285 {
339 PCI_VENDOR_ID_LSI_LOGIC, 286 PCI_VENDOR_ID_LSI_LOGIC,
340 PCI_DEVICE_ID_MEGARAID_SATA_150_6, 287 PCI_DEVICE_ID_AMI_MEGARAID3,
341 PCI_VENDOR_ID_LSI_LOGIC, 288 PCI_ANY_ID,
342 PCI_SUBSYS_ID_MEGARAID_SATA_150_6, 289 PCI_ANY_ID,
343 }, 290 },
344 { 291 {
345 PCI_VENDOR_ID_LSI_LOGIC, 292 PCI_VENDOR_ID_LSI_LOGIC,
@@ -347,18 +294,6 @@ static struct pci_device_id pci_id_table_g[] = {
347 PCI_ANY_ID, 294 PCI_ANY_ID,
348 PCI_ANY_ID, 295 PCI_ANY_ID,
349 }, 296 },
350 {
351 PCI_VENDOR_ID_LSI_LOGIC,
352 PCI_DEVICE_ID_INTEL_RAID_SRCS16,
353 PCI_VENDOR_ID_INTEL,
354 PCI_SUBSYS_ID_INTEL_RAID_SRCS16,
355 },
356 {
357 PCI_VENDOR_ID_LSI_LOGIC,
358 PCI_DEVICE_ID_INTEL_RAID_SRCU41L_LAKE_SHETEK,
359 PCI_VENDOR_ID_INTEL,
360 PCI_SUBSYS_ID_INTEL_RAID_SRCU41L_LAKE_SHETEK,
361 },
362 {0} /* Terminating entry */ 297 {0} /* Terminating entry */
363}; 298};
364MODULE_DEVICE_TABLE(pci, pci_id_table_g); 299MODULE_DEVICE_TABLE(pci, pci_id_table_g);
@@ -2985,6 +2920,7 @@ mbox_post_sync_cmd_fast(adapter_t *adapter, uint8_t raw_mbox[])
2985 2920
2986 for (i = 0; i < 0xFFFFF; i++) { 2921 for (i = 0; i < 0xFFFFF; i++) {
2987 if (mbox->numstatus != 0xFF) break; 2922 if (mbox->numstatus != 0xFF) break;
2923 rmb();
2988 } 2924 }
2989 2925
2990 if (i == 0xFFFFF) { 2926 if (i == 0xFFFFF) {
diff --git a/drivers/scsi/megaraid/megaraid_mbox.h b/drivers/scsi/megaraid/megaraid_mbox.h
index 644b91bdb028..882fb1a0b575 100644
--- a/drivers/scsi/megaraid/megaraid_mbox.h
+++ b/drivers/scsi/megaraid/megaraid_mbox.h
@@ -21,8 +21,8 @@
21#include "megaraid_ioctl.h" 21#include "megaraid_ioctl.h"
22 22
23 23
24#define MEGARAID_VERSION "2.20.4.6" 24#define MEGARAID_VERSION "2.20.4.7"
25#define MEGARAID_EXT_VERSION "(Release Date: Mon Mar 07 12:27:22 EST 2005)" 25#define MEGARAID_EXT_VERSION "(Release Date: Mon Nov 14 12:27:22 EST 2005)"
26 26
27 27
28/* 28/*
diff --git a/drivers/scsi/ncr53c8xx.c b/drivers/scsi/ncr53c8xx.c
index 243470936fab..32350707b940 100644
--- a/drivers/scsi/ncr53c8xx.c
+++ b/drivers/scsi/ncr53c8xx.c
@@ -131,7 +131,739 @@
131#define NAME53C "ncr53c" 131#define NAME53C "ncr53c"
132#define NAME53C8XX "ncr53c8xx" 132#define NAME53C8XX "ncr53c8xx"
133 133
134#include "sym53c8xx_comm.h" 134
135/*==========================================================
136**
137** Debugging tags
138**
139**==========================================================
140*/
141
142#define DEBUG_ALLOC (0x0001)
143#define DEBUG_PHASE (0x0002)
144#define DEBUG_QUEUE (0x0008)
145#define DEBUG_RESULT (0x0010)
146#define DEBUG_POINTER (0x0020)
147#define DEBUG_SCRIPT (0x0040)
148#define DEBUG_TINY (0x0080)
149#define DEBUG_TIMING (0x0100)
150#define DEBUG_NEGO (0x0200)
151#define DEBUG_TAGS (0x0400)
152#define DEBUG_SCATTER (0x0800)
153#define DEBUG_IC (0x1000)
154
155/*
156** Enable/Disable debug messages.
157** Can be changed at runtime too.
158*/
159
160#ifdef SCSI_NCR_DEBUG_INFO_SUPPORT
161static int ncr_debug = SCSI_NCR_DEBUG_FLAGS;
162 #define DEBUG_FLAGS ncr_debug
163#else
164 #define DEBUG_FLAGS SCSI_NCR_DEBUG_FLAGS
165#endif
166
167static inline struct list_head *ncr_list_pop(struct list_head *head)
168{
169 if (!list_empty(head)) {
170 struct list_head *elem = head->next;
171
172 list_del(elem);
173 return elem;
174 }
175
176 return NULL;
177}
178
179/*==========================================================
180**
181** Simple power of two buddy-like allocator.
182**
183** This simple code is not intended to be fast, but to
184** provide power of 2 aligned memory allocations.
185** Since the SCRIPTS processor only supplies 8 bit
186** arithmetic, this allocator allows simple and fast
187** address calculations from the SCRIPTS code.
188** In addition, cache line alignment is guaranteed for
189** power of 2 cache line size.
190** Enhanced in linux-2.3.44 to provide a memory pool
191** per pcidev to support dynamic dma mapping. (I would
192** have preferred a real bus astraction, btw).
193**
194**==========================================================
195*/
196
197#define MEMO_SHIFT 4 /* 16 bytes minimum memory chunk */
198#if PAGE_SIZE >= 8192
199#define MEMO_PAGE_ORDER 0 /* 1 PAGE maximum */
200#else
201#define MEMO_PAGE_ORDER 1 /* 2 PAGES maximum */
202#endif
203#define MEMO_FREE_UNUSED /* Free unused pages immediately */
204#define MEMO_WARN 1
205#define MEMO_GFP_FLAGS GFP_ATOMIC
206#define MEMO_CLUSTER_SHIFT (PAGE_SHIFT+MEMO_PAGE_ORDER)
207#define MEMO_CLUSTER_SIZE (1UL << MEMO_CLUSTER_SHIFT)
208#define MEMO_CLUSTER_MASK (MEMO_CLUSTER_SIZE-1)
209
210typedef u_long m_addr_t; /* Enough bits to bit-hack addresses */
211typedef struct device *m_bush_t; /* Something that addresses DMAable */
212
213typedef struct m_link { /* Link between free memory chunks */
214 struct m_link *next;
215} m_link_s;
216
217typedef struct m_vtob { /* Virtual to Bus address translation */
218 struct m_vtob *next;
219 m_addr_t vaddr;
220 m_addr_t baddr;
221} m_vtob_s;
222#define VTOB_HASH_SHIFT 5
223#define VTOB_HASH_SIZE (1UL << VTOB_HASH_SHIFT)
224#define VTOB_HASH_MASK (VTOB_HASH_SIZE-1)
225#define VTOB_HASH_CODE(m) \
226 ((((m_addr_t) (m)) >> MEMO_CLUSTER_SHIFT) & VTOB_HASH_MASK)
227
228typedef struct m_pool { /* Memory pool of a given kind */
229 m_bush_t bush;
230 m_addr_t (*getp)(struct m_pool *);
231 void (*freep)(struct m_pool *, m_addr_t);
232 int nump;
233 m_vtob_s *(vtob[VTOB_HASH_SIZE]);
234 struct m_pool *next;
235 struct m_link h[PAGE_SHIFT-MEMO_SHIFT+MEMO_PAGE_ORDER+1];
236} m_pool_s;
237
238static void *___m_alloc(m_pool_s *mp, int size)
239{
240 int i = 0;
241 int s = (1 << MEMO_SHIFT);
242 int j;
243 m_addr_t a;
244 m_link_s *h = mp->h;
245
246 if (size > (PAGE_SIZE << MEMO_PAGE_ORDER))
247 return NULL;
248
249 while (size > s) {
250 s <<= 1;
251 ++i;
252 }
253
254 j = i;
255 while (!h[j].next) {
256 if (s == (PAGE_SIZE << MEMO_PAGE_ORDER)) {
257 h[j].next = (m_link_s *)mp->getp(mp);
258 if (h[j].next)
259 h[j].next->next = NULL;
260 break;
261 }
262 ++j;
263 s <<= 1;
264 }
265 a = (m_addr_t) h[j].next;
266 if (a) {
267 h[j].next = h[j].next->next;
268 while (j > i) {
269 j -= 1;
270 s >>= 1;
271 h[j].next = (m_link_s *) (a+s);
272 h[j].next->next = NULL;
273 }
274 }
275#ifdef DEBUG
276 printk("___m_alloc(%d) = %p\n", size, (void *) a);
277#endif
278 return (void *) a;
279}
280
281static void ___m_free(m_pool_s *mp, void *ptr, int size)
282{
283 int i = 0;
284 int s = (1 << MEMO_SHIFT);
285 m_link_s *q;
286 m_addr_t a, b;
287 m_link_s *h = mp->h;
288
289#ifdef DEBUG
290 printk("___m_free(%p, %d)\n", ptr, size);
291#endif
292
293 if (size > (PAGE_SIZE << MEMO_PAGE_ORDER))
294 return;
295
296 while (size > s) {
297 s <<= 1;
298 ++i;
299 }
300
301 a = (m_addr_t) ptr;
302
303 while (1) {
304#ifdef MEMO_FREE_UNUSED
305 if (s == (PAGE_SIZE << MEMO_PAGE_ORDER)) {
306 mp->freep(mp, a);
307 break;
308 }
309#endif
310 b = a ^ s;
311 q = &h[i];
312 while (q->next && q->next != (m_link_s *) b) {
313 q = q->next;
314 }
315 if (!q->next) {
316 ((m_link_s *) a)->next = h[i].next;
317 h[i].next = (m_link_s *) a;
318 break;
319 }
320 q->next = q->next->next;
321 a = a & b;
322 s <<= 1;
323 ++i;
324 }
325}
326
327static DEFINE_SPINLOCK(ncr53c8xx_lock);
328
329static void *__m_calloc2(m_pool_s *mp, int size, char *name, int uflags)
330{
331 void *p;
332
333 p = ___m_alloc(mp, size);
334
335 if (DEBUG_FLAGS & DEBUG_ALLOC)
336 printk ("new %-10s[%4d] @%p.\n", name, size, p);
337
338 if (p)
339 memset(p, 0, size);
340 else if (uflags & MEMO_WARN)
341 printk (NAME53C8XX ": failed to allocate %s[%d]\n", name, size);
342
343 return p;
344}
345
346#define __m_calloc(mp, s, n) __m_calloc2(mp, s, n, MEMO_WARN)
347
348static void __m_free(m_pool_s *mp, void *ptr, int size, char *name)
349{
350 if (DEBUG_FLAGS & DEBUG_ALLOC)
351 printk ("freeing %-10s[%4d] @%p.\n", name, size, ptr);
352
353 ___m_free(mp, ptr, size);
354
355}
356
357/*
358 * With pci bus iommu support, we use a default pool of unmapped memory
359 * for memory we donnot need to DMA from/to and one pool per pcidev for
360 * memory accessed by the PCI chip. `mp0' is the default not DMAable pool.
361 */
362
363static m_addr_t ___mp0_getp(m_pool_s *mp)
364{
365 m_addr_t m = __get_free_pages(MEMO_GFP_FLAGS, MEMO_PAGE_ORDER);
366 if (m)
367 ++mp->nump;
368 return m;
369}
370
371static void ___mp0_freep(m_pool_s *mp, m_addr_t m)
372{
373 free_pages(m, MEMO_PAGE_ORDER);
374 --mp->nump;
375}
376
377static m_pool_s mp0 = {NULL, ___mp0_getp, ___mp0_freep};
378
379/*
380 * DMAable pools.
381 */
382
383/*
384 * With pci bus iommu support, we maintain one pool per pcidev and a
385 * hashed reverse table for virtual to bus physical address translations.
386 */
387static m_addr_t ___dma_getp(m_pool_s *mp)
388{
389 m_addr_t vp;
390 m_vtob_s *vbp;
391
392 vbp = __m_calloc(&mp0, sizeof(*vbp), "VTOB");
393 if (vbp) {
394 dma_addr_t daddr;
395 vp = (m_addr_t) dma_alloc_coherent(mp->bush,
396 PAGE_SIZE<<MEMO_PAGE_ORDER,
397 &daddr, GFP_ATOMIC);
398 if (vp) {
399 int hc = VTOB_HASH_CODE(vp);
400 vbp->vaddr = vp;
401 vbp->baddr = daddr;
402 vbp->next = mp->vtob[hc];
403 mp->vtob[hc] = vbp;
404 ++mp->nump;
405 return vp;
406 }
407 }
408 if (vbp)
409 __m_free(&mp0, vbp, sizeof(*vbp), "VTOB");
410 return 0;
411}
412
413static void ___dma_freep(m_pool_s *mp, m_addr_t m)
414{
415 m_vtob_s **vbpp, *vbp;
416 int hc = VTOB_HASH_CODE(m);
417
418 vbpp = &mp->vtob[hc];
419 while (*vbpp && (*vbpp)->vaddr != m)
420 vbpp = &(*vbpp)->next;
421 if (*vbpp) {
422 vbp = *vbpp;
423 *vbpp = (*vbpp)->next;
424 dma_free_coherent(mp->bush, PAGE_SIZE<<MEMO_PAGE_ORDER,
425 (void *)vbp->vaddr, (dma_addr_t)vbp->baddr);
426 __m_free(&mp0, vbp, sizeof(*vbp), "VTOB");
427 --mp->nump;
428 }
429}
430
431static inline m_pool_s *___get_dma_pool(m_bush_t bush)
432{
433 m_pool_s *mp;
434 for (mp = mp0.next; mp && mp->bush != bush; mp = mp->next);
435 return mp;
436}
437
438static m_pool_s *___cre_dma_pool(m_bush_t bush)
439{
440 m_pool_s *mp;
441 mp = __m_calloc(&mp0, sizeof(*mp), "MPOOL");
442 if (mp) {
443 memset(mp, 0, sizeof(*mp));
444 mp->bush = bush;
445 mp->getp = ___dma_getp;
446 mp->freep = ___dma_freep;
447 mp->next = mp0.next;
448 mp0.next = mp;
449 }
450 return mp;
451}
452
453static void ___del_dma_pool(m_pool_s *p)
454{
455 struct m_pool **pp = &mp0.next;
456
457 while (*pp && *pp != p)
458 pp = &(*pp)->next;
459 if (*pp) {
460 *pp = (*pp)->next;
461 __m_free(&mp0, p, sizeof(*p), "MPOOL");
462 }
463}
464
465static void *__m_calloc_dma(m_bush_t bush, int size, char *name)
466{
467 u_long flags;
468 struct m_pool *mp;
469 void *m = NULL;
470
471 spin_lock_irqsave(&ncr53c8xx_lock, flags);
472 mp = ___get_dma_pool(bush);
473 if (!mp)
474 mp = ___cre_dma_pool(bush);
475 if (mp)
476 m = __m_calloc(mp, size, name);
477 if (mp && !mp->nump)
478 ___del_dma_pool(mp);
479 spin_unlock_irqrestore(&ncr53c8xx_lock, flags);
480
481 return m;
482}
483
484static void __m_free_dma(m_bush_t bush, void *m, int size, char *name)
485{
486 u_long flags;
487 struct m_pool *mp;
488
489 spin_lock_irqsave(&ncr53c8xx_lock, flags);
490 mp = ___get_dma_pool(bush);
491 if (mp)
492 __m_free(mp, m, size, name);
493 if (mp && !mp->nump)
494 ___del_dma_pool(mp);
495 spin_unlock_irqrestore(&ncr53c8xx_lock, flags);
496}
497
498static m_addr_t __vtobus(m_bush_t bush, void *m)
499{
500 u_long flags;
501 m_pool_s *mp;
502 int hc = VTOB_HASH_CODE(m);
503 m_vtob_s *vp = NULL;
504 m_addr_t a = ((m_addr_t) m) & ~MEMO_CLUSTER_MASK;
505
506 spin_lock_irqsave(&ncr53c8xx_lock, flags);
507 mp = ___get_dma_pool(bush);
508 if (mp) {
509 vp = mp->vtob[hc];
510 while (vp && (m_addr_t) vp->vaddr != a)
511 vp = vp->next;
512 }
513 spin_unlock_irqrestore(&ncr53c8xx_lock, flags);
514 return vp ? vp->baddr + (((m_addr_t) m) - a) : 0;
515}
516
517#define _m_calloc_dma(np, s, n) __m_calloc_dma(np->dev, s, n)
518#define _m_free_dma(np, p, s, n) __m_free_dma(np->dev, p, s, n)
519#define m_calloc_dma(s, n) _m_calloc_dma(np, s, n)
520#define m_free_dma(p, s, n) _m_free_dma(np, p, s, n)
521#define _vtobus(np, p) __vtobus(np->dev, p)
522#define vtobus(p) _vtobus(np, p)
523
524/*
525 * Deal with DMA mapping/unmapping.
526 */
527
528/* To keep track of the dma mapping (sg/single) that has been set */
529#define __data_mapped SCp.phase
530#define __data_mapping SCp.have_data_in
531
532static void __unmap_scsi_data(struct device *dev, struct scsi_cmnd *cmd)
533{
534 switch(cmd->__data_mapped) {
535 case 2:
536 dma_unmap_sg(dev, cmd->buffer, cmd->use_sg,
537 cmd->sc_data_direction);
538 break;
539 case 1:
540 dma_unmap_single(dev, cmd->__data_mapping,
541 cmd->request_bufflen,
542 cmd->sc_data_direction);
543 break;
544 }
545 cmd->__data_mapped = 0;
546}
547
548static u_long __map_scsi_single_data(struct device *dev, struct scsi_cmnd *cmd)
549{
550 dma_addr_t mapping;
551
552 if (cmd->request_bufflen == 0)
553 return 0;
554
555 mapping = dma_map_single(dev, cmd->request_buffer,
556 cmd->request_bufflen,
557 cmd->sc_data_direction);
558 cmd->__data_mapped = 1;
559 cmd->__data_mapping = mapping;
560
561 return mapping;
562}
563
564static int __map_scsi_sg_data(struct device *dev, struct scsi_cmnd *cmd)
565{
566 int use_sg;
567
568 if (cmd->use_sg == 0)
569 return 0;
570
571 use_sg = dma_map_sg(dev, cmd->buffer, cmd->use_sg,
572 cmd->sc_data_direction);
573 cmd->__data_mapped = 2;
574 cmd->__data_mapping = use_sg;
575
576 return use_sg;
577}
578
579#define unmap_scsi_data(np, cmd) __unmap_scsi_data(np->dev, cmd)
580#define map_scsi_single_data(np, cmd) __map_scsi_single_data(np->dev, cmd)
581#define map_scsi_sg_data(np, cmd) __map_scsi_sg_data(np->dev, cmd)
582
583/*==========================================================
584**
585** Driver setup.
586**
587** This structure is initialized from linux config
588** options. It can be overridden at boot-up by the boot
589** command line.
590**
591**==========================================================
592*/
593static struct ncr_driver_setup
594 driver_setup = SCSI_NCR_DRIVER_SETUP;
595
596#ifdef SCSI_NCR_BOOT_COMMAND_LINE_SUPPORT
597static struct ncr_driver_setup
598 driver_safe_setup __initdata = SCSI_NCR_DRIVER_SAFE_SETUP;
599#endif
600
601#define initverbose (driver_setup.verbose)
602#define bootverbose (np->verbose)
603
604
605/*===================================================================
606**
607** Driver setup from the boot command line
608**
609**===================================================================
610*/
611
612#ifdef MODULE
613#define ARG_SEP ' '
614#else
615#define ARG_SEP ','
616#endif
617
618#define OPT_TAGS 1
619#define OPT_MASTER_PARITY 2
620#define OPT_SCSI_PARITY 3
621#define OPT_DISCONNECTION 4
622#define OPT_SPECIAL_FEATURES 5
623#define OPT_UNUSED_1 6
624#define OPT_FORCE_SYNC_NEGO 7
625#define OPT_REVERSE_PROBE 8
626#define OPT_DEFAULT_SYNC 9
627#define OPT_VERBOSE 10
628#define OPT_DEBUG 11
629#define OPT_BURST_MAX 12
630#define OPT_LED_PIN 13
631#define OPT_MAX_WIDE 14
632#define OPT_SETTLE_DELAY 15
633#define OPT_DIFF_SUPPORT 16
634#define OPT_IRQM 17
635#define OPT_PCI_FIX_UP 18
636#define OPT_BUS_CHECK 19
637#define OPT_OPTIMIZE 20
638#define OPT_RECOVERY 21
639#define OPT_SAFE_SETUP 22
640#define OPT_USE_NVRAM 23
641#define OPT_EXCLUDE 24
642#define OPT_HOST_ID 25
643
644#ifdef SCSI_NCR_IARB_SUPPORT
645#define OPT_IARB 26
646#endif
647
648static char setup_token[] __initdata =
649 "tags:" "mpar:"
650 "spar:" "disc:"
651 "specf:" "ultra:"
652 "fsn:" "revprob:"
653 "sync:" "verb:"
654 "debug:" "burst:"
655 "led:" "wide:"
656 "settle:" "diff:"
657 "irqm:" "pcifix:"
658 "buschk:" "optim:"
659 "recovery:"
660 "safe:" "nvram:"
661 "excl:" "hostid:"
662#ifdef SCSI_NCR_IARB_SUPPORT
663 "iarb:"
664#endif
665 ; /* DONNOT REMOVE THIS ';' */
666
667#ifdef MODULE
668#define ARG_SEP ' '
669#else
670#define ARG_SEP ','
671#endif
672
673static int __init get_setup_token(char *p)
674{
675 char *cur = setup_token;
676 char *pc;
677 int i = 0;
678
679 while (cur != NULL && (pc = strchr(cur, ':')) != NULL) {
680 ++pc;
681 ++i;
682 if (!strncmp(p, cur, pc - cur))
683 return i;
684 cur = pc;
685 }
686 return 0;
687}
688
689
690static int __init sym53c8xx__setup(char *str)
691{
692#ifdef SCSI_NCR_BOOT_COMMAND_LINE_SUPPORT
693 char *cur = str;
694 char *pc, *pv;
695 int i, val, c;
696 int xi = 0;
697
698 while (cur != NULL && (pc = strchr(cur, ':')) != NULL) {
699 char *pe;
700
701 val = 0;
702 pv = pc;
703 c = *++pv;
704
705 if (c == 'n')
706 val = 0;
707 else if (c == 'y')
708 val = 1;
709 else
710 val = (int) simple_strtoul(pv, &pe, 0);
711
712 switch (get_setup_token(cur)) {
713 case OPT_TAGS:
714 driver_setup.default_tags = val;
715 if (pe && *pe == '/') {
716 i = 0;
717 while (*pe && *pe != ARG_SEP &&
718 i < sizeof(driver_setup.tag_ctrl)-1) {
719 driver_setup.tag_ctrl[i++] = *pe++;
720 }
721 driver_setup.tag_ctrl[i] = '\0';
722 }
723 break;
724 case OPT_MASTER_PARITY:
725 driver_setup.master_parity = val;
726 break;
727 case OPT_SCSI_PARITY:
728 driver_setup.scsi_parity = val;
729 break;
730 case OPT_DISCONNECTION:
731 driver_setup.disconnection = val;
732 break;
733 case OPT_SPECIAL_FEATURES:
734 driver_setup.special_features = val;
735 break;
736 case OPT_FORCE_SYNC_NEGO:
737 driver_setup.force_sync_nego = val;
738 break;
739 case OPT_REVERSE_PROBE:
740 driver_setup.reverse_probe = val;
741 break;
742 case OPT_DEFAULT_SYNC:
743 driver_setup.default_sync = val;
744 break;
745 case OPT_VERBOSE:
746 driver_setup.verbose = val;
747 break;
748 case OPT_DEBUG:
749 driver_setup.debug = val;
750 break;
751 case OPT_BURST_MAX:
752 driver_setup.burst_max = val;
753 break;
754 case OPT_LED_PIN:
755 driver_setup.led_pin = val;
756 break;
757 case OPT_MAX_WIDE:
758 driver_setup.max_wide = val? 1:0;
759 break;
760 case OPT_SETTLE_DELAY:
761 driver_setup.settle_delay = val;
762 break;
763 case OPT_DIFF_SUPPORT:
764 driver_setup.diff_support = val;
765 break;
766 case OPT_IRQM:
767 driver_setup.irqm = val;
768 break;
769 case OPT_PCI_FIX_UP:
770 driver_setup.pci_fix_up = val;
771 break;
772 case OPT_BUS_CHECK:
773 driver_setup.bus_check = val;
774 break;
775 case OPT_OPTIMIZE:
776 driver_setup.optimize = val;
777 break;
778 case OPT_RECOVERY:
779 driver_setup.recovery = val;
780 break;
781 case OPT_USE_NVRAM:
782 driver_setup.use_nvram = val;
783 break;
784 case OPT_SAFE_SETUP:
785 memcpy(&driver_setup, &driver_safe_setup,
786 sizeof(driver_setup));
787 break;
788 case OPT_EXCLUDE:
789 if (xi < SCSI_NCR_MAX_EXCLUDES)
790 driver_setup.excludes[xi++] = val;
791 break;
792 case OPT_HOST_ID:
793 driver_setup.host_id = val;
794 break;
795#ifdef SCSI_NCR_IARB_SUPPORT
796 case OPT_IARB:
797 driver_setup.iarb = val;
798 break;
799#endif
800 default:
801 printk("sym53c8xx_setup: unexpected boot option '%.*s' ignored\n", (int)(pc-cur+1), cur);
802 break;
803 }
804
805 if ((cur = strchr(cur, ARG_SEP)) != NULL)
806 ++cur;
807 }
808#endif /* SCSI_NCR_BOOT_COMMAND_LINE_SUPPORT */
809 return 1;
810}
811
812/*===================================================================
813**
814** Get device queue depth from boot command line.
815**
816**===================================================================
817*/
818#define DEF_DEPTH (driver_setup.default_tags)
819#define ALL_TARGETS -2
820#define NO_TARGET -1
821#define ALL_LUNS -2
822#define NO_LUN -1
823
824static int device_queue_depth(int unit, int target, int lun)
825{
826 int c, h, t, u, v;
827 char *p = driver_setup.tag_ctrl;
828 char *ep;
829
830 h = -1;
831 t = NO_TARGET;
832 u = NO_LUN;
833 while ((c = *p++) != 0) {
834 v = simple_strtoul(p, &ep, 0);
835 switch(c) {
836 case '/':
837 ++h;
838 t = ALL_TARGETS;
839 u = ALL_LUNS;
840 break;
841 case 't':
842 if (t != target)
843 t = (target == v) ? v : NO_TARGET;
844 u = ALL_LUNS;
845 break;
846 case 'u':
847 if (u != lun)
848 u = (lun == v) ? v : NO_LUN;
849 break;
850 case 'q':
851 if (h == unit &&
852 (t == ALL_TARGETS || t == target) &&
853 (u == ALL_LUNS || u == lun))
854 return v;
855 break;
856 case '-':
857 t = ALL_TARGETS;
858 u = ALL_LUNS;
859 break;
860 default:
861 break;
862 }
863 p = ep;
864 }
865 return DEF_DEPTH;
866}
135 867
136 868
137/*========================================================== 869/*==========================================================
@@ -2971,21 +3703,10 @@ struct host_data {
2971 3703
2972static void ncr_print_msg(struct ccb *cp, char *label, u_char *msg) 3704static void ncr_print_msg(struct ccb *cp, char *label, u_char *msg)
2973{ 3705{
2974 int i;
2975 PRINT_ADDR(cp->cmd, "%s: ", label); 3706 PRINT_ADDR(cp->cmd, "%s: ", label);
2976 3707
2977 printk ("%x",*msg); 3708 spi_print_msg(msg);
2978 if (*msg == M_EXTENDED) { 3709 printk("\n");
2979 for (i = 1; i < 8; i++) {
2980 if (i - 1 > msg[1])
2981 break;
2982 printk ("-%x",msg[i]);
2983 }
2984 } else if ((*msg & 0xf0) == 0x20) {
2985 printk ("-%x",msg[1]);
2986 }
2987
2988 printk(".\n");
2989} 3710}
2990 3711
2991/*========================================================== 3712/*==========================================================
diff --git a/drivers/scsi/ncr53c8xx.h b/drivers/scsi/ncr53c8xx.h
index 05c7b83cef09..6a7bef2e6118 100644
--- a/drivers/scsi/ncr53c8xx.h
+++ b/drivers/scsi/ncr53c8xx.h
@@ -2,6 +2,7 @@
2** Device driver for the PCI-SCSI NCR538XX controller family. 2** Device driver for the PCI-SCSI NCR538XX controller family.
3** 3**
4** Copyright (C) 1994 Wolfgang Stanglmeier 4** Copyright (C) 1994 Wolfgang Stanglmeier
5** Copyright (C) 1998-2001 Gerard Roudier <groudier@free.fr>
5** 6**
6** This program is free software; you can redistribute it and/or modify 7** This program is free software; you can redistribute it and/or modify
7** it under the terms of the GNU General Public License as published by 8** it under the terms of the GNU General Public License as published by
@@ -36,15 +37,1275 @@
36** And has been ported to NetBSD by 37** And has been ported to NetBSD by
37** Charles M. Hannum <mycroft@gnu.ai.mit.edu> 38** Charles M. Hannum <mycroft@gnu.ai.mit.edu>
38** 39**
40** NVRAM detection and reading.
41** Copyright (C) 1997 Richard Waltham <dormouse@farsrobt.demon.co.uk>
42**
43** Added support for MIPS big endian systems.
44** Carsten Langgaard, carstenl@mips.com
45** Copyright (C) 2000 MIPS Technologies, Inc. All rights reserved.
46**
47** Added support for HP PARISC big endian systems.
48** Copyright (C) 2000 MIPS Technologies, Inc. All rights reserved.
49**
39******************************************************************************* 50*******************************************************************************
40*/ 51*/
41 52
42#ifndef NCR53C8XX_H 53#ifndef NCR53C8XX_H
43#define NCR53C8XX_H 54#define NCR53C8XX_H
44 55
56#include <linux/config.h>
45#include <scsi/scsi_host.h> 57#include <scsi/scsi_host.h>
46 58
47#include "sym53c8xx_defs.h" 59/*
60** If you want a driver as small as possible, do not define the
61** following options.
62*/
63#define SCSI_NCR_BOOT_COMMAND_LINE_SUPPORT
64#define SCSI_NCR_DEBUG_INFO_SUPPORT
65
66/*
67** To disable integrity checking, do not define the
68** following option.
69*/
70#ifdef CONFIG_SCSI_NCR53C8XX_INTEGRITY_CHECK
71# define SCSI_NCR_ENABLE_INTEGRITY_CHECK
72#endif
73
74/* ---------------------------------------------------------------------
75** Take into account kernel configured parameters.
76** Most of these options can be overridden at startup by a command line.
77** ---------------------------------------------------------------------
78*/
79
80/*
81 * For Ultra2 and Ultra3 SCSI support option, use special features.
82 *
83 * Value (default) means:
84 * bit 0 : all features enabled, except:
85 * bit 1 : PCI Write And Invalidate.
86 * bit 2 : Data Phase Mismatch handling from SCRIPTS.
87 *
88 * Use boot options ncr53c8xx=specf:1 if you want all chip features to be
89 * enabled by the driver.
90 */
91#define SCSI_NCR_SETUP_SPECIAL_FEATURES (3)
92
93#define SCSI_NCR_MAX_SYNC (80)
94
95/*
96 * Allow tags from 2 to 256, default 8
97 */
98#ifdef CONFIG_SCSI_NCR53C8XX_MAX_TAGS
99#if CONFIG_SCSI_NCR53C8XX_MAX_TAGS < 2
100#define SCSI_NCR_MAX_TAGS (2)
101#elif CONFIG_SCSI_NCR53C8XX_MAX_TAGS > 256
102#define SCSI_NCR_MAX_TAGS (256)
103#else
104#define SCSI_NCR_MAX_TAGS CONFIG_SCSI_NCR53C8XX_MAX_TAGS
105#endif
106#else
107#define SCSI_NCR_MAX_TAGS (8)
108#endif
109
110/*
111 * Allow tagged command queuing support if configured with default number
112 * of tags set to max (see above).
113 */
114#ifdef CONFIG_SCSI_NCR53C8XX_DEFAULT_TAGS
115#define SCSI_NCR_SETUP_DEFAULT_TAGS CONFIG_SCSI_NCR53C8XX_DEFAULT_TAGS
116#elif defined CONFIG_SCSI_NCR53C8XX_TAGGED_QUEUE
117#define SCSI_NCR_SETUP_DEFAULT_TAGS SCSI_NCR_MAX_TAGS
118#else
119#define SCSI_NCR_SETUP_DEFAULT_TAGS (0)
120#endif
121
122/*
123 * Immediate arbitration
124 */
125#if defined(CONFIG_SCSI_NCR53C8XX_IARB)
126#define SCSI_NCR_IARB_SUPPORT
127#endif
128
129/*
130 * Sync transfer frequency at startup.
131 * Allow from 5Mhz to 80Mhz default 20 Mhz.
132 */
133#ifndef CONFIG_SCSI_NCR53C8XX_SYNC
134#define CONFIG_SCSI_NCR53C8XX_SYNC (20)
135#elif CONFIG_SCSI_NCR53C8XX_SYNC > SCSI_NCR_MAX_SYNC
136#undef CONFIG_SCSI_NCR53C8XX_SYNC
137#define CONFIG_SCSI_NCR53C8XX_SYNC SCSI_NCR_MAX_SYNC
138#endif
139
140#if CONFIG_SCSI_NCR53C8XX_SYNC == 0
141#define SCSI_NCR_SETUP_DEFAULT_SYNC (255)
142#elif CONFIG_SCSI_NCR53C8XX_SYNC <= 5
143#define SCSI_NCR_SETUP_DEFAULT_SYNC (50)
144#elif CONFIG_SCSI_NCR53C8XX_SYNC <= 20
145#define SCSI_NCR_SETUP_DEFAULT_SYNC (250/(CONFIG_SCSI_NCR53C8XX_SYNC))
146#elif CONFIG_SCSI_NCR53C8XX_SYNC <= 33
147#define SCSI_NCR_SETUP_DEFAULT_SYNC (11)
148#elif CONFIG_SCSI_NCR53C8XX_SYNC <= 40
149#define SCSI_NCR_SETUP_DEFAULT_SYNC (10)
150#else
151#define SCSI_NCR_SETUP_DEFAULT_SYNC (9)
152#endif
153
154/*
155 * Disallow disconnections at boot-up
156 */
157#ifdef CONFIG_SCSI_NCR53C8XX_NO_DISCONNECT
158#define SCSI_NCR_SETUP_DISCONNECTION (0)
159#else
160#define SCSI_NCR_SETUP_DISCONNECTION (1)
161#endif
162
163/*
164 * Force synchronous negotiation for all targets
165 */
166#ifdef CONFIG_SCSI_NCR53C8XX_FORCE_SYNC_NEGO
167#define SCSI_NCR_SETUP_FORCE_SYNC_NEGO (1)
168#else
169#define SCSI_NCR_SETUP_FORCE_SYNC_NEGO (0)
170#endif
171
172/*
173 * Disable master parity checking (flawed hardwares need that)
174 */
175#ifdef CONFIG_SCSI_NCR53C8XX_DISABLE_MPARITY_CHECK
176#define SCSI_NCR_SETUP_MASTER_PARITY (0)
177#else
178#define SCSI_NCR_SETUP_MASTER_PARITY (1)
179#endif
180
181/*
182 * Disable scsi parity checking (flawed devices may need that)
183 */
184#ifdef CONFIG_SCSI_NCR53C8XX_DISABLE_PARITY_CHECK
185#define SCSI_NCR_SETUP_SCSI_PARITY (0)
186#else
187#define SCSI_NCR_SETUP_SCSI_PARITY (1)
188#endif
189
190/*
191 * Settle time after reset at boot-up
192 */
193#define SCSI_NCR_SETUP_SETTLE_TIME (2)
194
195/*
196** Bridge quirks work-around option defaulted to 1.
197*/
198#ifndef SCSI_NCR_PCIQ_WORK_AROUND_OPT
199#define SCSI_NCR_PCIQ_WORK_AROUND_OPT 1
200#endif
201
202/*
203** Work-around common bridge misbehaviour.
204**
205** - Do not flush posted writes in the opposite
206** direction on read.
207** - May reorder DMA writes to memory.
208**
209** This option should not affect performances
210** significantly, so it is the default.
211*/
212#if SCSI_NCR_PCIQ_WORK_AROUND_OPT == 1
213#define SCSI_NCR_PCIQ_MAY_NOT_FLUSH_PW_UPSTREAM
214#define SCSI_NCR_PCIQ_MAY_REORDER_WRITES
215#define SCSI_NCR_PCIQ_MAY_MISS_COMPLETIONS
216
217/*
218** Same as option 1, but also deal with
219** misconfigured interrupts.
220**
221** - Edge triggerred instead of level sensitive.
222** - No interrupt line connected.
223** - IRQ number misconfigured.
224**
225** If no interrupt is delivered, the driver will
226** catch the interrupt conditions 10 times per
227** second. No need to say that this option is
228** not recommended.
229*/
230#elif SCSI_NCR_PCIQ_WORK_AROUND_OPT == 2
231#define SCSI_NCR_PCIQ_MAY_NOT_FLUSH_PW_UPSTREAM
232#define SCSI_NCR_PCIQ_MAY_REORDER_WRITES
233#define SCSI_NCR_PCIQ_MAY_MISS_COMPLETIONS
234#define SCSI_NCR_PCIQ_BROKEN_INTR
235
236/*
237** Some bridge designers decided to flush
238** everything prior to deliver the interrupt.
239** This option tries to deal with such a
240** behaviour.
241*/
242#elif SCSI_NCR_PCIQ_WORK_AROUND_OPT == 3
243#define SCSI_NCR_PCIQ_SYNC_ON_INTR
244#endif
245
246/*
247** Other parameters not configurable with "make config"
248** Avoid to change these constants, unless you know what you are doing.
249*/
250
251#define SCSI_NCR_ALWAYS_SIMPLE_TAG
252#define SCSI_NCR_MAX_SCATTER (127)
253#define SCSI_NCR_MAX_TARGET (16)
254
255/*
256** Compute some desirable value for CAN_QUEUE
257** and CMD_PER_LUN.
258** The driver will use lower values if these
259** ones appear to be too large.
260*/
261#define SCSI_NCR_CAN_QUEUE (8*SCSI_NCR_MAX_TAGS + 2*SCSI_NCR_MAX_TARGET)
262#define SCSI_NCR_CMD_PER_LUN (SCSI_NCR_MAX_TAGS)
263
264#define SCSI_NCR_SG_TABLESIZE (SCSI_NCR_MAX_SCATTER)
265#define SCSI_NCR_TIMER_INTERVAL (HZ)
266
267#if 1 /* defined CONFIG_SCSI_MULTI_LUN */
268#define SCSI_NCR_MAX_LUN (16)
269#else
270#define SCSI_NCR_MAX_LUN (1)
271#endif
272
273/*
274 * IO functions definition for big/little endian CPU support.
275 * For now, the NCR is only supported in little endian addressing mode,
276 */
277
278#ifdef __BIG_ENDIAN
279
280#define inw_l2b inw
281#define inl_l2b inl
282#define outw_b2l outw
283#define outl_b2l outl
284
285#define readb_raw readb
286#define writeb_raw writeb
287
288#if defined(SCSI_NCR_BIG_ENDIAN)
289#define readw_l2b __raw_readw
290#define readl_l2b __raw_readl
291#define writew_b2l __raw_writew
292#define writel_b2l __raw_writel
293#define readw_raw __raw_readw
294#define readl_raw __raw_readl
295#define writew_raw __raw_writew
296#define writel_raw __raw_writel
297#else /* Other big-endian */
298#define readw_l2b readw
299#define readl_l2b readl
300#define writew_b2l writew
301#define writel_b2l writel
302#define readw_raw readw
303#define readl_raw readl
304#define writew_raw writew
305#define writel_raw writel
306#endif
307
308#else /* little endian */
309
310#define inw_raw inw
311#define inl_raw inl
312#define outw_raw outw
313#define outl_raw outl
314
315#define readb_raw readb
316#define readw_raw readw
317#define readl_raw readl
318#define writeb_raw writeb
319#define writew_raw writew
320#define writel_raw writel
321
322#endif
323
324#if !defined(__hppa__) && !defined(__mips__)
325#ifdef SCSI_NCR_BIG_ENDIAN
326#error "The NCR in BIG ENDIAN addressing mode is not (yet) supported"
327#endif
328#endif
329
330#define MEMORY_BARRIER() mb()
331
332
333/*
334 * If the NCR uses big endian addressing mode over the
335 * PCI, actual io register addresses for byte and word
336 * accesses must be changed according to lane routing.
337 * Btw, ncr_offb() and ncr_offw() macros only apply to
338 * constants and so donnot generate bloated code.
339 */
340
341#if defined(SCSI_NCR_BIG_ENDIAN)
342
343#define ncr_offb(o) (((o)&~3)+((~((o)&3))&3))
344#define ncr_offw(o) (((o)&~3)+((~((o)&3))&2))
345
346#else
347
348#define ncr_offb(o) (o)
349#define ncr_offw(o) (o)
350
351#endif
352
353/*
354 * If the CPU and the NCR use same endian-ness addressing,
355 * no byte reordering is needed for script patching.
356 * Macro cpu_to_scr() is to be used for script patching.
357 * Macro scr_to_cpu() is to be used for getting a DWORD
358 * from the script.
359 */
360
361#if defined(__BIG_ENDIAN) && !defined(SCSI_NCR_BIG_ENDIAN)
362
363#define cpu_to_scr(dw) cpu_to_le32(dw)
364#define scr_to_cpu(dw) le32_to_cpu(dw)
365
366#elif defined(__LITTLE_ENDIAN) && defined(SCSI_NCR_BIG_ENDIAN)
367
368#define cpu_to_scr(dw) cpu_to_be32(dw)
369#define scr_to_cpu(dw) be32_to_cpu(dw)
370
371#else
372
373#define cpu_to_scr(dw) (dw)
374#define scr_to_cpu(dw) (dw)
375
376#endif
377
378/*
379 * Access to the controller chip.
380 *
381 * If the CPU and the NCR use same endian-ness addressing,
382 * no byte reordering is needed for accessing chip io
383 * registers. Functions suffixed by '_raw' are assumed
384 * to access the chip over the PCI without doing byte
385 * reordering. Functions suffixed by '_l2b' are
386 * assumed to perform little-endian to big-endian byte
387 * reordering, those suffixed by '_b2l' blah, blah,
388 * blah, ...
389 */
390
391/*
392 * MEMORY mapped IO input / output
393 */
394
395#define INB_OFF(o) readb_raw((char __iomem *)np->reg + ncr_offb(o))
396#define OUTB_OFF(o, val) writeb_raw((val), (char __iomem *)np->reg + ncr_offb(o))
397
398#if defined(__BIG_ENDIAN) && !defined(SCSI_NCR_BIG_ENDIAN)
399
400#define INW_OFF(o) readw_l2b((char __iomem *)np->reg + ncr_offw(o))
401#define INL_OFF(o) readl_l2b((char __iomem *)np->reg + (o))
402
403#define OUTW_OFF(o, val) writew_b2l((val), (char __iomem *)np->reg + ncr_offw(o))
404#define OUTL_OFF(o, val) writel_b2l((val), (char __iomem *)np->reg + (o))
405
406#elif defined(__LITTLE_ENDIAN) && defined(SCSI_NCR_BIG_ENDIAN)
407
408#define INW_OFF(o) readw_b2l((char __iomem *)np->reg + ncr_offw(o))
409#define INL_OFF(o) readl_b2l((char __iomem *)np->reg + (o))
410
411#define OUTW_OFF(o, val) writew_l2b((val), (char __iomem *)np->reg + ncr_offw(o))
412#define OUTL_OFF(o, val) writel_l2b((val), (char __iomem *)np->reg + (o))
413
414#else
415
416#ifdef CONFIG_SCSI_NCR53C8XX_NO_WORD_TRANSFERS
417/* Only 8 or 32 bit transfers allowed */
418#define INW_OFF(o) (readb((char __iomem *)np->reg + ncr_offw(o)) << 8 | readb((char __iomem *)np->reg + ncr_offw(o) + 1))
419#else
420#define INW_OFF(o) readw_raw((char __iomem *)np->reg + ncr_offw(o))
421#endif
422#define INL_OFF(o) readl_raw((char __iomem *)np->reg + (o))
423
424#ifdef CONFIG_SCSI_NCR53C8XX_NO_WORD_TRANSFERS
425/* Only 8 or 32 bit transfers allowed */
426#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)
427#else
428#define OUTW_OFF(o, val) writew_raw((val), (char __iomem *)np->reg + ncr_offw(o))
429#endif
430#define OUTL_OFF(o, val) writel_raw((val), (char __iomem *)np->reg + (o))
431
432#endif
433
434#define INB(r) INB_OFF (offsetof(struct ncr_reg,r))
435#define INW(r) INW_OFF (offsetof(struct ncr_reg,r))
436#define INL(r) INL_OFF (offsetof(struct ncr_reg,r))
437
438#define OUTB(r, val) OUTB_OFF (offsetof(struct ncr_reg,r), (val))
439#define OUTW(r, val) OUTW_OFF (offsetof(struct ncr_reg,r), (val))
440#define OUTL(r, val) OUTL_OFF (offsetof(struct ncr_reg,r), (val))
441
442/*
443 * Set bit field ON, OFF
444 */
445
446#define OUTONB(r, m) OUTB(r, INB(r) | (m))
447#define OUTOFFB(r, m) OUTB(r, INB(r) & ~(m))
448#define OUTONW(r, m) OUTW(r, INW(r) | (m))
449#define OUTOFFW(r, m) OUTW(r, INW(r) & ~(m))
450#define OUTONL(r, m) OUTL(r, INL(r) | (m))
451#define OUTOFFL(r, m) OUTL(r, INL(r) & ~(m))
452
453/*
454 * We normally want the chip to have a consistent view
455 * of driver internal data structures when we restart it.
456 * Thus these macros.
457 */
458#define OUTL_DSP(v) \
459 do { \
460 MEMORY_BARRIER(); \
461 OUTL (nc_dsp, (v)); \
462 } while (0)
463
464#define OUTONB_STD() \
465 do { \
466 MEMORY_BARRIER(); \
467 OUTONB (nc_dcntl, (STD|NOCOM)); \
468 } while (0)
469
470
471/*
472** NCR53C8XX devices features table.
473*/
474struct ncr_chip {
475 unsigned short revision_id;
476 unsigned char burst_max; /* log-base-2 of max burst */
477 unsigned char offset_max;
478 unsigned char nr_divisor;
479 unsigned int features;
480#define FE_LED0 (1<<0)
481#define FE_WIDE (1<<1) /* Wide data transfers */
482#define FE_ULTRA (1<<2) /* Ultra speed 20Mtrans/sec */
483#define FE_DBLR (1<<4) /* Clock doubler present */
484#define FE_QUAD (1<<5) /* Clock quadrupler present */
485#define FE_ERL (1<<6) /* Enable read line */
486#define FE_CLSE (1<<7) /* Cache line size enable */
487#define FE_WRIE (1<<8) /* Write & Invalidate enable */
488#define FE_ERMP (1<<9) /* Enable read multiple */
489#define FE_BOF (1<<10) /* Burst opcode fetch */
490#define FE_DFS (1<<11) /* DMA fifo size */
491#define FE_PFEN (1<<12) /* Prefetch enable */
492#define FE_LDSTR (1<<13) /* Load/Store supported */
493#define FE_RAM (1<<14) /* On chip RAM present */
494#define FE_VARCLK (1<<15) /* SCSI clock may vary */
495#define FE_RAM8K (1<<16) /* On chip RAM sized 8Kb */
496#define FE_64BIT (1<<17) /* Have a 64-bit PCI interface */
497#define FE_IO256 (1<<18) /* Requires full 256 bytes in PCI space */
498#define FE_NOPM (1<<19) /* Scripts handles phase mismatch */
499#define FE_LEDC (1<<20) /* Hardware control of LED */
500#define FE_DIFF (1<<21) /* Support Differential SCSI */
501#define FE_66MHZ (1<<23) /* 66MHz PCI Support */
502#define FE_DAC (1<<24) /* Support DAC cycles (64 bit addressing) */
503#define FE_ISTAT1 (1<<25) /* Have ISTAT1, MBOX0, MBOX1 registers */
504#define FE_DAC_IN_USE (1<<26) /* Platform does DAC cycles */
505#define FE_EHP (1<<27) /* 720: Even host parity */
506#define FE_MUX (1<<28) /* 720: Multiplexed bus */
507#define FE_EA (1<<29) /* 720: Enable Ack */
508
509#define FE_CACHE_SET (FE_ERL|FE_CLSE|FE_WRIE|FE_ERMP)
510#define FE_SCSI_SET (FE_WIDE|FE_ULTRA|FE_DBLR|FE_QUAD|F_CLK80)
511#define FE_SPECIAL_SET (FE_CACHE_SET|FE_BOF|FE_DFS|FE_LDSTR|FE_PFEN|FE_RAM)
512};
513
514
515/*
516** Driver setup structure.
517**
518** This structure is initialized from linux config options.
519** It can be overridden at boot-up by the boot command line.
520*/
521#define SCSI_NCR_MAX_EXCLUDES 8
522struct ncr_driver_setup {
523 u8 master_parity;
524 u8 scsi_parity;
525 u8 disconnection;
526 u8 special_features;
527 u8 force_sync_nego;
528 u8 reverse_probe;
529 u8 pci_fix_up;
530 u8 use_nvram;
531 u8 verbose;
532 u8 default_tags;
533 u16 default_sync;
534 u16 debug;
535 u8 burst_max;
536 u8 led_pin;
537 u8 max_wide;
538 u8 settle_delay;
539 u8 diff_support;
540 u8 irqm;
541 u8 bus_check;
542 u8 optimize;
543 u8 recovery;
544 u8 host_id;
545 u16 iarb;
546 u32 excludes[SCSI_NCR_MAX_EXCLUDES];
547 char tag_ctrl[100];
548};
549
550/*
551** Initial setup.
552** Can be overriden at startup by a command line.
553*/
554#define SCSI_NCR_DRIVER_SETUP \
555{ \
556 SCSI_NCR_SETUP_MASTER_PARITY, \
557 SCSI_NCR_SETUP_SCSI_PARITY, \
558 SCSI_NCR_SETUP_DISCONNECTION, \
559 SCSI_NCR_SETUP_SPECIAL_FEATURES, \
560 SCSI_NCR_SETUP_FORCE_SYNC_NEGO, \
561 0, \
562 0, \
563 1, \
564 0, \
565 SCSI_NCR_SETUP_DEFAULT_TAGS, \
566 SCSI_NCR_SETUP_DEFAULT_SYNC, \
567 0x00, \
568 7, \
569 0, \
570 1, \
571 SCSI_NCR_SETUP_SETTLE_TIME, \
572 0, \
573 0, \
574 1, \
575 0, \
576 0, \
577 255, \
578 0x00 \
579}
580
581/*
582** Boot fail safe setup.
583** Override initial setup from boot command line:
584** ncr53c8xx=safe:y
585*/
586#define SCSI_NCR_DRIVER_SAFE_SETUP \
587{ \
588 0, \
589 1, \
590 0, \
591 0, \
592 0, \
593 0, \
594 0, \
595 1, \
596 2, \
597 0, \
598 255, \
599 0x00, \
600 255, \
601 0, \
602 0, \
603 10, \
604 1, \
605 1, \
606 1, \
607 0, \
608 0, \
609 255 \
610}
611
612/**************** ORIGINAL CONTENT of ncrreg.h from FreeBSD ******************/
613
614/*-----------------------------------------------------------------
615**
616** The ncr 53c810 register structure.
617**
618**-----------------------------------------------------------------
619*/
620
621struct ncr_reg {
622/*00*/ u8 nc_scntl0; /* full arb., ena parity, par->ATN */
623
624/*01*/ u8 nc_scntl1; /* no reset */
625 #define ISCON 0x10 /* connected to scsi */
626 #define CRST 0x08 /* force reset */
627 #define IARB 0x02 /* immediate arbitration */
628
629/*02*/ u8 nc_scntl2; /* no disconnect expected */
630 #define SDU 0x80 /* cmd: disconnect will raise error */
631 #define CHM 0x40 /* sta: chained mode */
632 #define WSS 0x08 /* sta: wide scsi send [W]*/
633 #define WSR 0x01 /* sta: wide scsi received [W]*/
634
635/*03*/ u8 nc_scntl3; /* cnf system clock dependent */
636 #define EWS 0x08 /* cmd: enable wide scsi [W]*/
637 #define ULTRA 0x80 /* cmd: ULTRA enable */
638 /* bits 0-2, 7 rsvd for C1010 */
639
640/*04*/ u8 nc_scid; /* cnf host adapter scsi address */
641 #define RRE 0x40 /* r/w:e enable response to resel. */
642 #define SRE 0x20 /* r/w:e enable response to select */
643
644/*05*/ u8 nc_sxfer; /* ### Sync speed and count */
645 /* bits 6-7 rsvd for C1010 */
646
647/*06*/ u8 nc_sdid; /* ### Destination-ID */
648
649/*07*/ u8 nc_gpreg; /* ??? IO-Pins */
650
651/*08*/ u8 nc_sfbr; /* ### First byte in phase */
652
653/*09*/ u8 nc_socl;
654 #define CREQ 0x80 /* r/w: SCSI-REQ */
655 #define CACK 0x40 /* r/w: SCSI-ACK */
656 #define CBSY 0x20 /* r/w: SCSI-BSY */
657 #define CSEL 0x10 /* r/w: SCSI-SEL */
658 #define CATN 0x08 /* r/w: SCSI-ATN */
659 #define CMSG 0x04 /* r/w: SCSI-MSG */
660 #define CC_D 0x02 /* r/w: SCSI-C_D */
661 #define CI_O 0x01 /* r/w: SCSI-I_O */
662
663/*0a*/ u8 nc_ssid;
664
665/*0b*/ u8 nc_sbcl;
666
667/*0c*/ u8 nc_dstat;
668 #define DFE 0x80 /* sta: dma fifo empty */
669 #define MDPE 0x40 /* int: master data parity error */
670 #define BF 0x20 /* int: script: bus fault */
671 #define ABRT 0x10 /* int: script: command aborted */
672 #define SSI 0x08 /* int: script: single step */
673 #define SIR 0x04 /* int: script: interrupt instruct. */
674 #define IID 0x01 /* int: script: illegal instruct. */
675
676/*0d*/ u8 nc_sstat0;
677 #define ILF 0x80 /* sta: data in SIDL register lsb */
678 #define ORF 0x40 /* sta: data in SODR register lsb */
679 #define OLF 0x20 /* sta: data in SODL register lsb */
680 #define AIP 0x10 /* sta: arbitration in progress */
681 #define LOA 0x08 /* sta: arbitration lost */
682 #define WOA 0x04 /* sta: arbitration won */
683 #define IRST 0x02 /* sta: scsi reset signal */
684 #define SDP 0x01 /* sta: scsi parity signal */
685
686/*0e*/ u8 nc_sstat1;
687 #define FF3210 0xf0 /* sta: bytes in the scsi fifo */
688
689/*0f*/ u8 nc_sstat2;
690 #define ILF1 0x80 /* sta: data in SIDL register msb[W]*/
691 #define ORF1 0x40 /* sta: data in SODR register msb[W]*/
692 #define OLF1 0x20 /* sta: data in SODL register msb[W]*/
693 #define DM 0x04 /* sta: DIFFSENS mismatch (895/6 only) */
694 #define LDSC 0x02 /* sta: disconnect & reconnect */
695
696/*10*/ u8 nc_dsa; /* --> Base page */
697/*11*/ u8 nc_dsa1;
698/*12*/ u8 nc_dsa2;
699/*13*/ u8 nc_dsa3;
700
701/*14*/ u8 nc_istat; /* --> Main Command and status */
702 #define CABRT 0x80 /* cmd: abort current operation */
703 #define SRST 0x40 /* mod: reset chip */
704 #define SIGP 0x20 /* r/w: message from host to ncr */
705 #define SEM 0x10 /* r/w: message between host + ncr */
706 #define CON 0x08 /* sta: connected to scsi */
707 #define INTF 0x04 /* sta: int on the fly (reset by wr)*/
708 #define SIP 0x02 /* sta: scsi-interrupt */
709 #define DIP 0x01 /* sta: host/script interrupt */
710
711/*15*/ u8 nc_istat1; /* 896 and later cores only */
712 #define FLSH 0x04 /* sta: chip is flushing */
713 #define SRUN 0x02 /* sta: scripts are running */
714 #define SIRQD 0x01 /* r/w: disable INT pin */
715
716/*16*/ u8 nc_mbox0; /* 896 and later cores only */
717/*17*/ u8 nc_mbox1; /* 896 and later cores only */
718
719/*18*/ u8 nc_ctest0;
720 #define EHP 0x04 /* 720 even host parity */
721/*19*/ u8 nc_ctest1;
722
723/*1a*/ u8 nc_ctest2;
724 #define CSIGP 0x40
725 /* bits 0-2,7 rsvd for C1010 */
726
727/*1b*/ u8 nc_ctest3;
728 #define FLF 0x08 /* cmd: flush dma fifo */
729 #define CLF 0x04 /* cmd: clear dma fifo */
730 #define FM 0x02 /* mod: fetch pin mode */
731 #define WRIE 0x01 /* mod: write and invalidate enable */
732 /* bits 4-7 rsvd for C1010 */
733
734/*1c*/ u32 nc_temp; /* ### Temporary stack */
735
736/*20*/ u8 nc_dfifo;
737/*21*/ u8 nc_ctest4;
738 #define MUX 0x80 /* 720 host bus multiplex mode */
739 #define BDIS 0x80 /* mod: burst disable */
740 #define MPEE 0x08 /* mod: master parity error enable */
741
742/*22*/ u8 nc_ctest5;
743 #define DFS 0x20 /* mod: dma fifo size */
744 /* bits 0-1, 3-7 rsvd for C1010 */
745/*23*/ u8 nc_ctest6;
746
747/*24*/ u32 nc_dbc; /* ### Byte count and command */
748/*28*/ u32 nc_dnad; /* ### Next command register */
749/*2c*/ u32 nc_dsp; /* --> Script Pointer */
750/*30*/ u32 nc_dsps; /* --> Script pointer save/opcode#2 */
751
752/*34*/ u8 nc_scratcha; /* Temporary register a */
753/*35*/ u8 nc_scratcha1;
754/*36*/ u8 nc_scratcha2;
755/*37*/ u8 nc_scratcha3;
756
757/*38*/ u8 nc_dmode;
758 #define BL_2 0x80 /* mod: burst length shift value +2 */
759 #define BL_1 0x40 /* mod: burst length shift value +1 */
760 #define ERL 0x08 /* mod: enable read line */
761 #define ERMP 0x04 /* mod: enable read multiple */
762 #define BOF 0x02 /* mod: burst op code fetch */
763
764/*39*/ u8 nc_dien;
765/*3a*/ u8 nc_sbr;
766
767/*3b*/ u8 nc_dcntl; /* --> Script execution control */
768 #define CLSE 0x80 /* mod: cache line size enable */
769 #define PFF 0x40 /* cmd: pre-fetch flush */
770 #define PFEN 0x20 /* mod: pre-fetch enable */
771 #define EA 0x20 /* mod: 720 enable-ack */
772 #define SSM 0x10 /* mod: single step mode */
773 #define IRQM 0x08 /* mod: irq mode (1 = totem pole !) */
774 #define STD 0x04 /* cmd: start dma mode */
775 #define IRQD 0x02 /* mod: irq disable */
776 #define NOCOM 0x01 /* cmd: protect sfbr while reselect */
777 /* bits 0-1 rsvd for C1010 */
778
779/*3c*/ u32 nc_adder;
780
781/*40*/ u16 nc_sien; /* -->: interrupt enable */
782/*42*/ u16 nc_sist; /* <--: interrupt status */
783 #define SBMC 0x1000/* sta: SCSI Bus Mode Change (895/6 only) */
784 #define STO 0x0400/* sta: timeout (select) */
785 #define GEN 0x0200/* sta: timeout (general) */
786 #define HTH 0x0100/* sta: timeout (handshake) */
787 #define MA 0x80 /* sta: phase mismatch */
788 #define CMP 0x40 /* sta: arbitration complete */
789 #define SEL 0x20 /* sta: selected by another device */
790 #define RSL 0x10 /* sta: reselected by another device*/
791 #define SGE 0x08 /* sta: gross error (over/underflow)*/
792 #define UDC 0x04 /* sta: unexpected disconnect */
793 #define RST 0x02 /* sta: scsi bus reset detected */
794 #define PAR 0x01 /* sta: scsi parity error */
795
796/*44*/ u8 nc_slpar;
797/*45*/ u8 nc_swide;
798/*46*/ u8 nc_macntl;
799/*47*/ u8 nc_gpcntl;
800/*48*/ u8 nc_stime0; /* cmd: timeout for select&handshake*/
801/*49*/ u8 nc_stime1; /* cmd: timeout user defined */
802/*4a*/ u16 nc_respid; /* sta: Reselect-IDs */
803
804/*4c*/ u8 nc_stest0;
805
806/*4d*/ u8 nc_stest1;
807 #define SCLK 0x80 /* Use the PCI clock as SCSI clock */
808 #define DBLEN 0x08 /* clock doubler running */
809 #define DBLSEL 0x04 /* clock doubler selected */
810
811
812/*4e*/ u8 nc_stest2;
813 #define ROF 0x40 /* reset scsi offset (after gross error!) */
814 #define DIF 0x20 /* 720 SCSI differential mode */
815 #define EXT 0x02 /* extended filtering */
816
817/*4f*/ u8 nc_stest3;
818 #define TE 0x80 /* c: tolerAnt enable */
819 #define HSC 0x20 /* c: Halt SCSI Clock */
820 #define CSF 0x02 /* c: clear scsi fifo */
821
822/*50*/ u16 nc_sidl; /* Lowlevel: latched from scsi data */
823/*52*/ u8 nc_stest4;
824 #define SMODE 0xc0 /* SCSI bus mode (895/6 only) */
825 #define SMODE_HVD 0x40 /* High Voltage Differential */
826 #define SMODE_SE 0x80 /* Single Ended */
827 #define SMODE_LVD 0xc0 /* Low Voltage Differential */
828 #define LCKFRQ 0x20 /* Frequency Lock (895/6 only) */
829 /* bits 0-5 rsvd for C1010 */
830
831/*53*/ u8 nc_53_;
832/*54*/ u16 nc_sodl; /* Lowlevel: data out to scsi data */
833/*56*/ u8 nc_ccntl0; /* Chip Control 0 (896) */
834 #define ENPMJ 0x80 /* Enable Phase Mismatch Jump */
835 #define PMJCTL 0x40 /* Phase Mismatch Jump Control */
836 #define ENNDJ 0x20 /* Enable Non Data PM Jump */
837 #define DISFC 0x10 /* Disable Auto FIFO Clear */
838 #define DILS 0x02 /* Disable Internal Load/Store */
839 #define DPR 0x01 /* Disable Pipe Req */
840
841/*57*/ u8 nc_ccntl1; /* Chip Control 1 (896) */
842 #define ZMOD 0x80 /* High Impedance Mode */
843 #define DIC 0x10 /* Disable Internal Cycles */
844 #define DDAC 0x08 /* Disable Dual Address Cycle */
845 #define XTIMOD 0x04 /* 64-bit Table Ind. Indexing Mode */
846 #define EXTIBMV 0x02 /* Enable 64-bit Table Ind. BMOV */
847 #define EXDBMV 0x01 /* Enable 64-bit Direct BMOV */
848
849/*58*/ u16 nc_sbdl; /* Lowlevel: data from scsi data */
850/*5a*/ u16 nc_5a_;
851
852/*5c*/ u8 nc_scr0; /* Working register B */
853/*5d*/ u8 nc_scr1; /* */
854/*5e*/ u8 nc_scr2; /* */
855/*5f*/ u8 nc_scr3; /* */
856
857/*60*/ u8 nc_scrx[64]; /* Working register C-R */
858/*a0*/ u32 nc_mmrs; /* Memory Move Read Selector */
859/*a4*/ u32 nc_mmws; /* Memory Move Write Selector */
860/*a8*/ u32 nc_sfs; /* Script Fetch Selector */
861/*ac*/ u32 nc_drs; /* DSA Relative Selector */
862/*b0*/ u32 nc_sbms; /* Static Block Move Selector */
863/*b4*/ u32 nc_dbms; /* Dynamic Block Move Selector */
864/*b8*/ u32 nc_dnad64; /* DMA Next Address 64 */
865/*bc*/ u16 nc_scntl4; /* C1010 only */
866 #define U3EN 0x80 /* Enable Ultra 3 */
867 #define AIPEN 0x40 /* Allow check upper byte lanes */
868 #define XCLKH_DT 0x08 /* Extra clock of data hold on DT
869 transfer edge */
870 #define XCLKH_ST 0x04 /* Extra clock of data hold on ST
871 transfer edge */
872
873/*be*/ u8 nc_aipcntl0; /* Epat Control 1 C1010 only */
874/*bf*/ u8 nc_aipcntl1; /* AIP Control C1010_66 Only */
875
876/*c0*/ u32 nc_pmjad1; /* Phase Mismatch Jump Address 1 */
877/*c4*/ u32 nc_pmjad2; /* Phase Mismatch Jump Address 2 */
878/*c8*/ u8 nc_rbc; /* Remaining Byte Count */
879/*c9*/ u8 nc_rbc1; /* */
880/*ca*/ u8 nc_rbc2; /* */
881/*cb*/ u8 nc_rbc3; /* */
882
883/*cc*/ u8 nc_ua; /* Updated Address */
884/*cd*/ u8 nc_ua1; /* */
885/*ce*/ u8 nc_ua2; /* */
886/*cf*/ u8 nc_ua3; /* */
887/*d0*/ u32 nc_esa; /* Entry Storage Address */
888/*d4*/ u8 nc_ia; /* Instruction Address */
889/*d5*/ u8 nc_ia1;
890/*d6*/ u8 nc_ia2;
891/*d7*/ u8 nc_ia3;
892/*d8*/ u32 nc_sbc; /* SCSI Byte Count (3 bytes only) */
893/*dc*/ u32 nc_csbc; /* Cumulative SCSI Byte Count */
894
895 /* Following for C1010 only */
896/*e0*/ u16 nc_crcpad; /* CRC Value */
897/*e2*/ u8 nc_crccntl0; /* CRC control register */
898 #define SNDCRC 0x10 /* Send CRC Request */
899/*e3*/ u8 nc_crccntl1; /* CRC control register */
900/*e4*/ u32 nc_crcdata; /* CRC data register */
901/*e8*/ u32 nc_e8_; /* rsvd */
902/*ec*/ u32 nc_ec_; /* rsvd */
903/*f0*/ u16 nc_dfbc; /* DMA FIFO byte count */
904
905};
906
907/*-----------------------------------------------------------
908**
909** Utility macros for the script.
910**
911**-----------------------------------------------------------
912*/
913
914#define REGJ(p,r) (offsetof(struct ncr_reg, p ## r))
915#define REG(r) REGJ (nc_, r)
916
917typedef u32 ncrcmd;
918
919/*-----------------------------------------------------------
920**
921** SCSI phases
922**
923** DT phases illegal for ncr driver.
924**
925**-----------------------------------------------------------
926*/
927
928#define SCR_DATA_OUT 0x00000000
929#define SCR_DATA_IN 0x01000000
930#define SCR_COMMAND 0x02000000
931#define SCR_STATUS 0x03000000
932#define SCR_DT_DATA_OUT 0x04000000
933#define SCR_DT_DATA_IN 0x05000000
934#define SCR_MSG_OUT 0x06000000
935#define SCR_MSG_IN 0x07000000
936
937#define SCR_ILG_OUT 0x04000000
938#define SCR_ILG_IN 0x05000000
939
940/*-----------------------------------------------------------
941**
942** Data transfer via SCSI.
943**
944**-----------------------------------------------------------
945**
946** MOVE_ABS (LEN)
947** <<start address>>
948**
949** MOVE_IND (LEN)
950** <<dnad_offset>>
951**
952** MOVE_TBL
953** <<dnad_offset>>
954**
955**-----------------------------------------------------------
956*/
957
958#define OPC_MOVE 0x08000000
959
960#define SCR_MOVE_ABS(l) ((0x00000000 | OPC_MOVE) | (l))
961#define SCR_MOVE_IND(l) ((0x20000000 | OPC_MOVE) | (l))
962#define SCR_MOVE_TBL (0x10000000 | OPC_MOVE)
963
964#define SCR_CHMOV_ABS(l) ((0x00000000) | (l))
965#define SCR_CHMOV_IND(l) ((0x20000000) | (l))
966#define SCR_CHMOV_TBL (0x10000000)
967
968struct scr_tblmove {
969 u32 size;
970 u32 addr;
971};
972
973/*-----------------------------------------------------------
974**
975** Selection
976**
977**-----------------------------------------------------------
978**
979** SEL_ABS | SCR_ID (0..15) [ | REL_JMP]
980** <<alternate_address>>
981**
982** SEL_TBL | << dnad_offset>> [ | REL_JMP]
983** <<alternate_address>>
984**
985**-----------------------------------------------------------
986*/
987
988#define SCR_SEL_ABS 0x40000000
989#define SCR_SEL_ABS_ATN 0x41000000
990#define SCR_SEL_TBL 0x42000000
991#define SCR_SEL_TBL_ATN 0x43000000
992
993
994#ifdef SCSI_NCR_BIG_ENDIAN
995struct scr_tblsel {
996 u8 sel_scntl3;
997 u8 sel_id;
998 u8 sel_sxfer;
999 u8 sel_scntl4;
1000};
1001#else
1002struct scr_tblsel {
1003 u8 sel_scntl4;
1004 u8 sel_sxfer;
1005 u8 sel_id;
1006 u8 sel_scntl3;
1007};
1008#endif
1009
1010#define SCR_JMP_REL 0x04000000
1011#define SCR_ID(id) (((u32)(id)) << 16)
1012
1013/*-----------------------------------------------------------
1014**
1015** Waiting for Disconnect or Reselect
1016**
1017**-----------------------------------------------------------
1018**
1019** WAIT_DISC
1020** dummy: <<alternate_address>>
1021**
1022** WAIT_RESEL
1023** <<alternate_address>>
1024**
1025**-----------------------------------------------------------
1026*/
1027
1028#define SCR_WAIT_DISC 0x48000000
1029#define SCR_WAIT_RESEL 0x50000000
1030
1031/*-----------------------------------------------------------
1032**
1033** Bit Set / Reset
1034**
1035**-----------------------------------------------------------
1036**
1037** SET (flags {|.. })
1038**
1039** CLR (flags {|.. })
1040**
1041**-----------------------------------------------------------
1042*/
1043
1044#define SCR_SET(f) (0x58000000 | (f))
1045#define SCR_CLR(f) (0x60000000 | (f))
1046
1047#define SCR_CARRY 0x00000400
1048#define SCR_TRG 0x00000200
1049#define SCR_ACK 0x00000040
1050#define SCR_ATN 0x00000008
1051
1052
1053
1054
1055/*-----------------------------------------------------------
1056**
1057** Memory to memory move
1058**
1059**-----------------------------------------------------------
1060**
1061** COPY (bytecount)
1062** << source_address >>
1063** << destination_address >>
1064**
1065** SCR_COPY sets the NO FLUSH option by default.
1066** SCR_COPY_F does not set this option.
1067**
1068** For chips which do not support this option,
1069** ncr_copy_and_bind() will remove this bit.
1070**-----------------------------------------------------------
1071*/
1072
1073#define SCR_NO_FLUSH 0x01000000
1074
1075#define SCR_COPY(n) (0xc0000000 | SCR_NO_FLUSH | (n))
1076#define SCR_COPY_F(n) (0xc0000000 | (n))
1077
1078/*-----------------------------------------------------------
1079**
1080** Register move and binary operations
1081**
1082**-----------------------------------------------------------
1083**
1084** SFBR_REG (reg, op, data) reg = SFBR op data
1085** << 0 >>
1086**
1087** REG_SFBR (reg, op, data) SFBR = reg op data
1088** << 0 >>
1089**
1090** REG_REG (reg, op, data) reg = reg op data
1091** << 0 >>
1092**
1093**-----------------------------------------------------------
1094** On 810A, 860, 825A, 875, 895 and 896 chips the content
1095** of SFBR register can be used as data (SCR_SFBR_DATA).
1096** The 896 has additionnal IO registers starting at
1097** offset 0x80. Bit 7 of register offset is stored in
1098** bit 7 of the SCRIPTS instruction first DWORD.
1099**-----------------------------------------------------------
1100*/
1101
1102#define SCR_REG_OFS(ofs) ((((ofs) & 0x7f) << 16ul) + ((ofs) & 0x80))
1103
1104#define SCR_SFBR_REG(reg,op,data) \
1105 (0x68000000 | (SCR_REG_OFS(REG(reg))) | (op) | (((data)&0xff)<<8ul))
1106
1107#define SCR_REG_SFBR(reg,op,data) \
1108 (0x70000000 | (SCR_REG_OFS(REG(reg))) | (op) | (((data)&0xff)<<8ul))
1109
1110#define SCR_REG_REG(reg,op,data) \
1111 (0x78000000 | (SCR_REG_OFS(REG(reg))) | (op) | (((data)&0xff)<<8ul))
1112
1113
1114#define SCR_LOAD 0x00000000
1115#define SCR_SHL 0x01000000
1116#define SCR_OR 0x02000000
1117#define SCR_XOR 0x03000000
1118#define SCR_AND 0x04000000
1119#define SCR_SHR 0x05000000
1120#define SCR_ADD 0x06000000
1121#define SCR_ADDC 0x07000000
1122
1123#define SCR_SFBR_DATA (0x00800000>>8ul) /* Use SFBR as data */
1124
1125/*-----------------------------------------------------------
1126**
1127** FROM_REG (reg) SFBR = reg
1128** << 0 >>
1129**
1130** TO_REG (reg) reg = SFBR
1131** << 0 >>
1132**
1133** LOAD_REG (reg, data) reg = <data>
1134** << 0 >>
1135**
1136** LOAD_SFBR(data) SFBR = <data>
1137** << 0 >>
1138**
1139**-----------------------------------------------------------
1140*/
1141
1142#define SCR_FROM_REG(reg) \
1143 SCR_REG_SFBR(reg,SCR_OR,0)
1144
1145#define SCR_TO_REG(reg) \
1146 SCR_SFBR_REG(reg,SCR_OR,0)
1147
1148#define SCR_LOAD_REG(reg,data) \
1149 SCR_REG_REG(reg,SCR_LOAD,data)
1150
1151#define SCR_LOAD_SFBR(data) \
1152 (SCR_REG_SFBR (gpreg, SCR_LOAD, data))
1153
1154/*-----------------------------------------------------------
1155**
1156** LOAD from memory to register.
1157** STORE from register to memory.
1158**
1159** Only supported by 810A, 860, 825A, 875, 895 and 896.
1160**
1161**-----------------------------------------------------------
1162**
1163** LOAD_ABS (LEN)
1164** <<start address>>
1165**
1166** LOAD_REL (LEN) (DSA relative)
1167** <<dsa_offset>>
1168**
1169**-----------------------------------------------------------
1170*/
1171
1172#define SCR_REG_OFS2(ofs) (((ofs) & 0xff) << 16ul)
1173#define SCR_NO_FLUSH2 0x02000000
1174#define SCR_DSA_REL2 0x10000000
1175
1176#define SCR_LOAD_R(reg, how, n) \
1177 (0xe1000000 | how | (SCR_REG_OFS2(REG(reg))) | (n))
1178
1179#define SCR_STORE_R(reg, how, n) \
1180 (0xe0000000 | how | (SCR_REG_OFS2(REG(reg))) | (n))
1181
1182#define SCR_LOAD_ABS(reg, n) SCR_LOAD_R(reg, SCR_NO_FLUSH2, n)
1183#define SCR_LOAD_REL(reg, n) SCR_LOAD_R(reg, SCR_NO_FLUSH2|SCR_DSA_REL2, n)
1184#define SCR_LOAD_ABS_F(reg, n) SCR_LOAD_R(reg, 0, n)
1185#define SCR_LOAD_REL_F(reg, n) SCR_LOAD_R(reg, SCR_DSA_REL2, n)
1186
1187#define SCR_STORE_ABS(reg, n) SCR_STORE_R(reg, SCR_NO_FLUSH2, n)
1188#define SCR_STORE_REL(reg, n) SCR_STORE_R(reg, SCR_NO_FLUSH2|SCR_DSA_REL2,n)
1189#define SCR_STORE_ABS_F(reg, n) SCR_STORE_R(reg, 0, n)
1190#define SCR_STORE_REL_F(reg, n) SCR_STORE_R(reg, SCR_DSA_REL2, n)
1191
1192
1193/*-----------------------------------------------------------
1194**
1195** Waiting for Disconnect or Reselect
1196**
1197**-----------------------------------------------------------
1198**
1199** JUMP [ | IFTRUE/IFFALSE ( ... ) ]
1200** <<address>>
1201**
1202** JUMPR [ | IFTRUE/IFFALSE ( ... ) ]
1203** <<distance>>
1204**
1205** CALL [ | IFTRUE/IFFALSE ( ... ) ]
1206** <<address>>
1207**
1208** CALLR [ | IFTRUE/IFFALSE ( ... ) ]
1209** <<distance>>
1210**
1211** RETURN [ | IFTRUE/IFFALSE ( ... ) ]
1212** <<dummy>>
1213**
1214** INT [ | IFTRUE/IFFALSE ( ... ) ]
1215** <<ident>>
1216**
1217** INT_FLY [ | IFTRUE/IFFALSE ( ... ) ]
1218** <<ident>>
1219**
1220** Conditions:
1221** WHEN (phase)
1222** IF (phase)
1223** CARRYSET
1224** DATA (data, mask)
1225**
1226**-----------------------------------------------------------
1227*/
1228
1229#define SCR_NO_OP 0x80000000
1230#define SCR_JUMP 0x80080000
1231#define SCR_JUMP64 0x80480000
1232#define SCR_JUMPR 0x80880000
1233#define SCR_CALL 0x88080000
1234#define SCR_CALLR 0x88880000
1235#define SCR_RETURN 0x90080000
1236#define SCR_INT 0x98080000
1237#define SCR_INT_FLY 0x98180000
1238
1239#define IFFALSE(arg) (0x00080000 | (arg))
1240#define IFTRUE(arg) (0x00000000 | (arg))
1241
1242#define WHEN(phase) (0x00030000 | (phase))
1243#define IF(phase) (0x00020000 | (phase))
1244
1245#define DATA(D) (0x00040000 | ((D) & 0xff))
1246#define MASK(D,M) (0x00040000 | (((M ^ 0xff) & 0xff) << 8ul)|((D) & 0xff))
1247
1248#define CARRYSET (0x00200000)
1249
1250/*-----------------------------------------------------------
1251**
1252** SCSI constants.
1253**
1254**-----------------------------------------------------------
1255*/
1256
1257/*
1258** Messages
1259*/
1260
1261#define M_COMPLETE COMMAND_COMPLETE
1262#define M_EXTENDED EXTENDED_MESSAGE
1263#define M_SAVE_DP SAVE_POINTERS
1264#define M_RESTORE_DP RESTORE_POINTERS
1265#define M_DISCONNECT DISCONNECT
1266#define M_ID_ERROR INITIATOR_ERROR
1267#define M_ABORT ABORT_TASK_SET
1268#define M_REJECT MESSAGE_REJECT
1269#define M_NOOP NOP
1270#define M_PARITY MSG_PARITY_ERROR
1271#define M_LCOMPLETE LINKED_CMD_COMPLETE
1272#define M_FCOMPLETE LINKED_FLG_CMD_COMPLETE
1273#define M_RESET TARGET_RESET
1274#define M_ABORT_TAG ABORT_TASK
1275#define M_CLEAR_QUEUE CLEAR_TASK_SET
1276#define M_INIT_REC INITIATE_RECOVERY
1277#define M_REL_REC RELEASE_RECOVERY
1278#define M_TERMINATE (0x11)
1279#define M_SIMPLE_TAG SIMPLE_QUEUE_TAG
1280#define M_HEAD_TAG HEAD_OF_QUEUE_TAG
1281#define M_ORDERED_TAG ORDERED_QUEUE_TAG
1282#define M_IGN_RESIDUE IGNORE_WIDE_RESIDUE
1283#define M_IDENTIFY (0x80)
1284
1285#define M_X_MODIFY_DP EXTENDED_MODIFY_DATA_POINTER
1286#define M_X_SYNC_REQ EXTENDED_SDTR
1287#define M_X_WIDE_REQ EXTENDED_WDTR
1288#define M_X_PPR_REQ EXTENDED_PPR
1289
1290/*
1291** Status
1292*/
1293
1294#define S_GOOD (0x00)
1295#define S_CHECK_COND (0x02)
1296#define S_COND_MET (0x04)
1297#define S_BUSY (0x08)
1298#define S_INT (0x10)
1299#define S_INT_COND_MET (0x14)
1300#define S_CONFLICT (0x18)
1301#define S_TERMINATED (0x20)
1302#define S_QUEUE_FULL (0x28)
1303#define S_ILLEGAL (0xff)
1304#define S_SENSE (0x80)
1305
1306/*
1307 * End of ncrreg from FreeBSD
1308 */
48 1309
49/* 1310/*
50 Build a scatter/gather entry. 1311 Build a scatter/gather entry.
diff --git a/drivers/scsi/qla2xxx/Kconfig b/drivers/scsi/qla2xxx/Kconfig
index c1c1c687bcbd..5205c4e7d6ff 100644
--- a/drivers/scsi/qla2xxx/Kconfig
+++ b/drivers/scsi/qla2xxx/Kconfig
@@ -1,55 +1,70 @@
1config SCSI_QLA2XXX 1config SCSI_QLA2XXX
2 tristate 2 tristate "QLogic QLA2XXX Fibre Channel Support"
3 default (SCSI && PCI) 3 depends on PCI && SCSI
4 depends on SCSI && PCI 4 select SCSI_FC_ATTRS
5 select FW_LOADER
6 ---help---
7 This qla2xxx driver supports all QLogic Fibre Channel
8 PCI and PCIe host adapters.
5 9
6config SCSI_QLA21XX 10 By default, firmware for the ISP parts will be loaded
7 tristate "QLogic ISP2100 host adapter family support" 11 via the Firmware Loader interface.
12
13 ISP Firmware Filename
14 ---------- -----------------
15 21xx ql2100_fw.bin
16 22xx ql2200_fw.bin
17 2300, 2312 ql2300_fw.bin
18 2322 ql2322_fw.bin
19 6312, 6322 ql6312_fw.bin
20 24xx ql2400_fw.bin
21
22 Upon request, the driver caches the firmware image until
23 the driver is unloaded.
24
25 NOTE: The original method of building firmware-loader
26 modules has been deprecated as the firmware-images will
27 be removed from the kernel sources.
28
29config SCSI_QLA2XXX_EMBEDDED_FIRMWARE
30 bool " Use firmware-loader modules (DEPRECATED)"
8 depends on SCSI_QLA2XXX 31 depends on SCSI_QLA2XXX
9 select SCSI_FC_ATTRS 32
10 select FW_LOADER 33config SCSI_QLA21XX
34 tristate " Build QLogic ISP2100 firmware-module"
35 depends on SCSI_QLA2XXX_EMBEDDED_FIRMWARE
11 ---help--- 36 ---help---
12 This driver supports the QLogic 21xx (ISP2100) host adapter family. 37 This driver supports the QLogic 21xx (ISP2100) host adapter family.
13 38
14config SCSI_QLA22XX 39config SCSI_QLA22XX
15 tristate "QLogic ISP2200 host adapter family support" 40 tristate " Build QLogic ISP2200 firmware-module"
16 depends on SCSI_QLA2XXX 41 depends on SCSI_QLA2XXX_EMBEDDED_FIRMWARE
17 select SCSI_FC_ATTRS
18 select FW_LOADER
19 ---help--- 42 ---help---
20 This driver supports the QLogic 22xx (ISP2200) host adapter family. 43 This driver supports the QLogic 22xx (ISP2200) host adapter family.
21 44
22config SCSI_QLA2300 45config SCSI_QLA2300
23 tristate "QLogic ISP2300 host adapter family support" 46 tristate " Build QLogic ISP2300 firmware-module"
24 depends on SCSI_QLA2XXX 47 depends on SCSI_QLA2XXX_EMBEDDED_FIRMWARE
25 select SCSI_FC_ATTRS
26 select FW_LOADER
27 ---help--- 48 ---help---
28 This driver supports the QLogic 2300 (ISP2300 and ISP2312) host 49 This driver supports the QLogic 2300 (ISP2300 and ISP2312) host
29 adapter family. 50 adapter family.
30 51
31config SCSI_QLA2322 52config SCSI_QLA2322
32 tristate "QLogic ISP2322 host adapter family support" 53 tristate " Build QLogic ISP2322 firmware-module"
33 depends on SCSI_QLA2XXX 54 depends on SCSI_QLA2XXX_EMBEDDED_FIRMWARE
34 select SCSI_FC_ATTRS
35 select FW_LOADER
36 ---help--- 55 ---help---
37 This driver supports the QLogic 2322 (ISP2322) host adapter family. 56 This driver supports the QLogic 2322 (ISP2322) host adapter family.
38 57
39config SCSI_QLA6312 58config SCSI_QLA6312
40 tristate "QLogic ISP63xx host adapter family support" 59 tristate " Build QLogic ISP63xx firmware-module"
41 depends on SCSI_QLA2XXX 60 depends on SCSI_QLA2XXX_EMBEDDED_FIRMWARE
42 select SCSI_FC_ATTRS
43 select FW_LOADER
44 ---help--- 61 ---help---
45 This driver supports the QLogic 63xx (ISP6312 and ISP6322) host 62 This driver supports the QLogic 63xx (ISP6312 and ISP6322) host
46 adapter family. 63 adapter family.
47 64
48config SCSI_QLA24XX 65config SCSI_QLA24XX
49 tristate "QLogic ISP24xx host adapter family support" 66 tristate " Build QLogic ISP24xx firmware-module"
50 depends on SCSI_QLA2XXX 67 depends on SCSI_QLA2XXX_EMBEDDED_FIRMWARE
51 select SCSI_FC_ATTRS
52 select FW_LOADER
53 ---help--- 68 ---help---
54 This driver supports the QLogic 24xx (ISP2422 and ISP2432) host 69 This driver supports the QLogic 24xx (ISP2422 and ISP2432) host
55 adapter family. 70 adapter family.
diff --git a/drivers/scsi/qla2xxx/Makefile b/drivers/scsi/qla2xxx/Makefile
index b169687d08ff..40c0de125889 100644
--- a/drivers/scsi/qla2xxx/Makefile
+++ b/drivers/scsi/qla2xxx/Makefile
@@ -3,15 +3,18 @@ EXTRA_CFLAGS += -DUNIQUE_FW_NAME
3qla2xxx-y := qla_os.o qla_init.o qla_mbx.o qla_iocb.o qla_isr.o qla_gs.o \ 3qla2xxx-y := qla_os.o qla_init.o qla_mbx.o qla_iocb.o qla_isr.o qla_gs.o \
4 qla_dbg.o qla_sup.o qla_rscn.o qla_attr.o 4 qla_dbg.o qla_sup.o qla_rscn.o qla_attr.o
5 5
6obj-$(CONFIG_SCSI_QLA2XXX) += qla2xxx.o
7
6qla2100-y := ql2100.o ql2100_fw.o 8qla2100-y := ql2100.o ql2100_fw.o
7qla2200-y := ql2200.o ql2200_fw.o 9qla2200-y := ql2200.o ql2200_fw.o
8qla2300-y := ql2300.o ql2300_fw.o 10qla2300-y := ql2300.o ql2300_fw.o
9qla2322-y := ql2322.o ql2322_fw.o 11qla2322-y := ql2322.o ql2322_fw.o
10qla6312-y := ql6312.o ql6312_fw.o 12qla6312-y := ql6312.o ql6312_fw.o
13qla2400-y := ql2400.o ql2400_fw.o
11 14
12obj-$(CONFIG_SCSI_QLA21XX) += qla2xxx.o qla2100.o 15obj-$(CONFIG_SCSI_QLA21XX) += qla2xxx.o qla2100.o
13obj-$(CONFIG_SCSI_QLA22XX) += qla2xxx.o qla2200.o 16obj-$(CONFIG_SCSI_QLA22XX) += qla2xxx.o qla2200.o
14obj-$(CONFIG_SCSI_QLA2300) += qla2xxx.o qla2300.o 17obj-$(CONFIG_SCSI_QLA2300) += qla2xxx.o qla2300.o
15obj-$(CONFIG_SCSI_QLA2322) += qla2xxx.o qla2322.o 18obj-$(CONFIG_SCSI_QLA2322) += qla2xxx.o qla2322.o
16obj-$(CONFIG_SCSI_QLA6312) += qla2xxx.o qla6312.o 19obj-$(CONFIG_SCSI_QLA6312) += qla2xxx.o qla6312.o
17obj-$(CONFIG_SCSI_QLA24XX) += qla2xxx.o 20obj-$(CONFIG_SCSI_QLA24XX) += qla2xxx.o qla2400.o
diff --git a/drivers/scsi/qla2xxx/ql2400.c b/drivers/scsi/qla2xxx/ql2400.c
new file mode 100644
index 000000000000..6c7165f47e29
--- /dev/null
+++ b/drivers/scsi/qla2xxx/ql2400.c
@@ -0,0 +1,111 @@
1/*
2 * QLogic Fibre Channel HBA Driver
3 * Copyright (c) 2003-2005 QLogic Corporation
4 *
5 * See LICENSE.qla2xxx for copyright and licensing details.
6 */
7#include <linux/init.h>
8#include <linux/module.h>
9#include <linux/pci.h>
10
11#include "qla_def.h"
12
13static char qla_driver_name[] = "qla2400";
14
15extern uint32_t fw2400_version_str[];
16extern uint32_t fw2400_addr01;
17extern uint32_t fw2400_code01[];
18extern uint32_t fw2400_length01;
19extern uint32_t fw2400_addr02;
20extern uint32_t fw2400_code02[];
21extern uint32_t fw2400_length02;
22
23static struct qla_fw_info qla_fw_tbl[] = {
24 {
25 .addressing = FW_INFO_ADDR_EXTENDED,
26 .fwcode = (unsigned short *)&fw2400_code01[0],
27 .fwlen = (unsigned short *)&fw2400_length01,
28 .lfwstart = (unsigned long *)&fw2400_addr01,
29 },
30 {
31 .addressing = FW_INFO_ADDR_EXTENDED,
32 .fwcode = (unsigned short *)&fw2400_code02[0],
33 .fwlen = (unsigned short *)&fw2400_length02,
34 .lfwstart = (unsigned long *)&fw2400_addr02,
35 },
36 { FW_INFO_ADDR_NOMORE, },
37};
38
39static struct qla_board_info qla_board_tbl[] = {
40 {
41 .drv_name = qla_driver_name,
42 .isp_name = "ISP2422",
43 .fw_info = qla_fw_tbl,
44 .fw_fname = "ql2400_fw.bin",
45 },
46 {
47 .drv_name = qla_driver_name,
48 .isp_name = "ISP2432",
49 .fw_info = qla_fw_tbl,
50 .fw_fname = "ql2400_fw.bin",
51 },
52};
53
54static struct pci_device_id qla24xx_pci_tbl[] = {
55 {
56 .vendor = PCI_VENDOR_ID_QLOGIC,
57 .device = PCI_DEVICE_ID_QLOGIC_ISP2422,
58 .subvendor = PCI_ANY_ID,
59 .subdevice = PCI_ANY_ID,
60 .driver_data = (unsigned long)&qla_board_tbl[0],
61 },
62 {
63 .vendor = PCI_VENDOR_ID_QLOGIC,
64 .device = PCI_DEVICE_ID_QLOGIC_ISP2432,
65 .subvendor = PCI_ANY_ID,
66 .subdevice = PCI_ANY_ID,
67 .driver_data = (unsigned long)&qla_board_tbl[1],
68 },
69 {0, 0},
70};
71MODULE_DEVICE_TABLE(pci, qla24xx_pci_tbl);
72
73static int __devinit
74qla24xx_probe_one(struct pci_dev *pdev, const struct pci_device_id *id)
75{
76 return qla2x00_probe_one(pdev,
77 (struct qla_board_info *)id->driver_data);
78}
79
80static void __devexit
81qla24xx_remove_one(struct pci_dev *pdev)
82{
83 qla2x00_remove_one(pdev);
84}
85
86static struct pci_driver qla24xx_pci_driver = {
87 .name = "qla2400",
88 .id_table = qla24xx_pci_tbl,
89 .probe = qla24xx_probe_one,
90 .remove = __devexit_p(qla24xx_remove_one),
91};
92
93static int __init
94qla24xx_init(void)
95{
96 return pci_module_init(&qla24xx_pci_driver);
97}
98
99static void __exit
100qla24xx_exit(void)
101{
102 pci_unregister_driver(&qla24xx_pci_driver);
103}
104
105module_init(qla24xx_init);
106module_exit(qla24xx_exit);
107
108MODULE_AUTHOR("QLogic Corporation");
109MODULE_DESCRIPTION("QLogic ISP24xx FC-SCSI Host Bus Adapter driver");
110MODULE_LICENSE("GPL");
111MODULE_VERSION(QLA2XXX_VERSION);
diff --git a/drivers/scsi/qla2xxx/ql2400_fw.c b/drivers/scsi/qla2xxx/ql2400_fw.c
new file mode 100644
index 000000000000..5977795854f8
--- /dev/null
+++ b/drivers/scsi/qla2xxx/ql2400_fw.c
@@ -0,0 +1,12376 @@
1/*
2 * QLogic Fibre Channel HBA Driver
3 * Copyright (c) 2003-2005 QLogic Corporation
4 *
5 * See LICENSE.qla2xxx for copyright and licensing details.
6 */
7#include <linux/types.h>
8
9/*
10 * Firmware Version 4.00.16 (08:09 Oct 26, 2005)
11 */
12
13#ifdef UNIQUE_FW_NAME
14uint32_t fw2400_version = 4*1024+0;
15#else
16uint32_t risc_code_version = 4*1024+0;
17#endif
18
19#ifdef UNIQUE_FW_NAME
20uint32_t fw2400_version_str[] = {4, 0,16};
21#else
22uint32_t firmware_version[] = {4, 0,16};
23#endif
24
25#ifdef UNIQUE_FW_NAME
26#define fw2400_VERSION_STRING "4.00.16"
27#else
28#define FW_VERSION_STRING "4.00.16"
29#endif
30
31#ifdef UNIQUE_FW_NAME
32uint32_t fw2400_addr01 = 0x00100000 ;
33#else
34uint32_t risc_code_addr01 = 0x00100000 ;
35#endif
36
37#ifdef UNIQUE_FW_NAME
38uint32_t fw2400_code01[] = {
39#else
40uint32_t risc_code01[] = {
41#endif
42 0x0401f17c, 0x0010e000, 0x00100000, 0x0000ab4a,
43 0x00000004, 0x00000000, 0x00000010, 0x00000002,
44 0x00000003, 0x00000000, 0x20434f50, 0x59524947,
45 0x48542032, 0x30303520, 0x514c4f47, 0x49432043,
46 0x4f52504f, 0x52415449, 0x4f4e2020, 0x20495350,
47 0x32347878, 0x20466972, 0x6d776172, 0x65202020,
48 0x56657273, 0x696f6e20, 0x342e302e, 0x31362020,
49 0x20202024, 0x00000000, 0x00000000, 0x00000000,
50 0x00000000, 0x00000000, 0x00000000, 0x00000000,
51 0x00000000, 0x00000000, 0x00000000, 0x00000000,
52 0x00000000, 0x00000000, 0x00000000, 0x00000000,
53 0x00000000, 0x00000000, 0x00000000, 0x00000000,
54 0x42001800, 0x0010014f, 0x42002000, 0x0010b8fe,
55 0x500c0800, 0x800c1800, 0x500c1000, 0x800c1800,
56 0x54042000, 0x80102000, 0x80040800, 0x80081040,
57 0x040207fc, 0x500c0800, 0x800409c0, 0x040207f6,
58 0x44002000, 0x80102000, 0x40100000, 0x44040000,
59 0x80000000, 0x44080000, 0x80000000, 0x440c0000,
60 0x80000000, 0x44100000, 0x80000000, 0x44140000,
61 0x80000000, 0x44180000, 0x80000000, 0x441c0000,
62 0x80000000, 0x44200000, 0x80000000, 0x44240000,
63 0x80000000, 0x44280000, 0x80000000, 0x442c0000,
64 0x80000000, 0x44300000, 0x80000000, 0x44340000,
65 0x80000000, 0x44380000, 0x80000000, 0x443c0000,
66 0x80000000, 0x44400000, 0x80000000, 0x44440000,
67 0x80000000, 0x44480000, 0x80000000, 0x444c0000,
68 0x80000000, 0x44500000, 0x80000000, 0x44540000,
69 0x80000000, 0x44580000, 0x80000000, 0x445c0000,
70 0x80000000, 0x44600000, 0x80000000, 0x44640000,
71 0x80000000, 0x44680000, 0x80000000, 0x446c0000,
72 0x80000000, 0x44700000, 0x80000000, 0x44740000,
73 0x80000000, 0x44780000, 0x80000000, 0x447c0000,
74 0x80000000, 0x44800000, 0x80000000, 0x44840000,
75 0x80000000, 0x44880000, 0x80000000, 0x448c0000,
76 0x80000000, 0x44900000, 0x80000000, 0x44940000,
77 0x80000000, 0x44980000, 0x80000000, 0x449c0000,
78 0x80000000, 0x44a00000, 0x80000000, 0x44a40000,
79 0x80000000, 0x44a80000, 0x80000000, 0x44ac0000,
80 0x80000000, 0x44b00000, 0x80000000, 0x44b40000,
81 0x80000000, 0x44b80000, 0x80000000, 0x44bc0000,
82 0x80000000, 0x44c00000, 0x80000000, 0x44c40000,
83 0x80000000, 0x44c80000, 0x80000000, 0x44cc0000,
84 0x80000000, 0x44d00000, 0x80000000, 0x44d80000,
85 0x80000000, 0x44d40000, 0x80000000, 0x44dc0000,
86 0x80000000, 0x44e00000, 0x80000000, 0x44e40000,
87 0x80000000, 0x44e80000, 0x80000000, 0x44ec0000,
88 0x80000000, 0x44f00000, 0x80000000, 0x44f40000,
89 0x80000000, 0x44f80000, 0x80000000, 0x44fc0000,
90 0x80000000, 0x45000000, 0x80000000, 0x45040000,
91 0x80000000, 0x45080000, 0x80000000, 0x450c0000,
92 0x80000000, 0x45100000, 0x80000000, 0x45140000,
93 0x80000000, 0x45180000, 0x80000000, 0x451c0000,
94 0x80000000, 0x45200000, 0x80000000, 0x45240000,
95 0x80000000, 0x45280000, 0x80000000, 0x452c0000,
96 0x80000000, 0x45300000, 0x80000000, 0x45340000,
97 0x80000000, 0x45380000, 0x80000000, 0x453c0000,
98 0x80000000, 0x45400000, 0x80000000, 0x45440000,
99 0x80000000, 0x45480000, 0x80000000, 0x454c0000,
100 0x80000000, 0x45500000, 0x80000000, 0x45540000,
101 0x80000000, 0x45580000, 0x80000000, 0x455c0000,
102 0x80000000, 0x45600000, 0x80000000, 0x45640000,
103 0x80000000, 0x45680000, 0x80000000, 0x456c0000,
104 0x80000000, 0x45700000, 0x80000000, 0x45740000,
105 0x80000000, 0x45780000, 0x80000000, 0x457c0000,
106 0x80000000, 0x45800000, 0x80000000, 0x45840000,
107 0x80000000, 0x45880000, 0x80000000, 0x458c0000,
108 0x80000000, 0x45900000, 0x80000000, 0x45940000,
109 0x80000000, 0x45980000, 0x80000000, 0x459c0000,
110 0x80000000, 0x45a00000, 0x80000000, 0x45a40000,
111 0x80000000, 0x45a80000, 0x80000000, 0x45ac0000,
112 0x80000000, 0x45b00000, 0x80000000, 0x45b40000,
113 0x80000000, 0x45b80000, 0x80000000, 0x45bc0000,
114 0x80000000, 0x45c00000, 0x80000000, 0x45c40000,
115 0x80000000, 0x45c80000, 0x80000000, 0x45cc0000,
116 0x80000000, 0x45d00000, 0x80000000, 0x45d40000,
117 0x80000000, 0x45d80000, 0x80000000, 0x45dc0000,
118 0x80000000, 0x45e00000, 0x80000000, 0x45e40000,
119 0x80000000, 0x45e80000, 0x80000000, 0x45ec0000,
120 0x80000000, 0x45f00000, 0x80000000, 0x45f40000,
121 0x80000000, 0x45f80000, 0x80000000, 0x45fc0000,
122 0x4a03c020, 0x00004000, 0x4a03c011, 0x40000010,
123 0x04006000, 0x4203e000, 0x40000000, 0x59e00017,
124 0x8c000508, 0x04000003, 0x4a03c017, 0x00000000,
125 0x4203e000, 0x30000001, 0x0401f000, 0x0000bf00,
126 0x00000080, 0x0000bfe0, 0x00000020, 0x0000ff00,
127 0x00000080, 0x0000ffd0, 0x00000030, 0x00007100,
128 0x00000010, 0x00007200, 0x00000008, 0x00007209,
129 0x00000007, 0x00007300, 0x00000008, 0x00007309,
130 0x00000007, 0x00007400, 0x00000008, 0x00007409,
131 0x00000007, 0x00007600, 0x000000b0, 0x00007700,
132 0x00000040, 0x00003000, 0x00000070, 0x00004000,
133 0x000000c0, 0x00006000, 0x00000050, 0x00006100,
134 0x00000010, 0x00006130, 0x00000010, 0x00006150,
135 0x00000010, 0x00006170, 0x00000010, 0x00006190,
136 0x00000010, 0x000061b0, 0x00000010, 0x00000000,
137 0x42000000, 0x00000100, 0x4202f000, 0x00000000,
138 0x42000800, 0x00021f00, 0x45780800, 0x80040800,
139 0x80000040, 0x040207fd, 0x4203f000, 0x00021fff,
140 0x40000000, 0x4203e000, 0x90000100, 0x40000000,
141 0x0201f800, 0x001006fd, 0x42000000, 0x00001000,
142 0x50000000, 0x82000480, 0x24320002, 0x04020015,
143 0x42000800, 0x00000064, 0x80040840, 0x04000007,
144 0x4a030000, 0x00000001, 0x40000000, 0x59800000,
145 0x8c000500, 0x040007f9, 0x04000008, 0x42000800,
146 0x00007a17, 0x50040000, 0x8c00050e, 0x04020003,
147 0x8400054e, 0x44000800, 0x4a030000, 0x00000000,
148 0x4a03c020, 0x00000004, 0x4203e000, 0x6000000f,
149 0x59e00023, 0x8c000500, 0x04020039, 0x42000000,
150 0x00100001, 0x50000800, 0x82040c00, 0x00000004,
151 0x58042003, 0x42001000, 0xffffffff, 0x0201f800,
152 0x001006f4, 0x0402004e, 0x58042003, 0x42001000,
153 0xffffffff, 0x0201f800, 0x001006f4, 0x04020048,
154 0x58042003, 0x42001000, 0x00ffffff, 0x0201f800,
155 0x001006f4, 0x04020042, 0x58042003, 0x42001000,
156 0x00ffffff, 0x0201f800, 0x001006f4, 0x0402003c,
157 0x42000000, 0x00100001, 0x5000a000, 0x8250a400,
158 0x00000004, 0x4200a800, 0x00020000, 0x5850b003,
159 0x0201f800, 0x0010ab17, 0x8250a400, 0x00000005,
160 0x4a0370e8, 0x00000003, 0x4200a800, 0x0000c000,
161 0x5850b003, 0x0201f800, 0x0010ab17, 0x4a0378e8,
162 0x00000003, 0x4200a800, 0x00008000, 0x5850b003,
163 0x0201f800, 0x0010ab17, 0x0401f02b, 0x42000800,
164 0x00020000, 0x58042003, 0x42001000, 0xffffffff,
165 0x0201f800, 0x001006f4, 0x04020019, 0x4a0370e8,
166 0x00000003, 0x42000800, 0x0000c000, 0x58042003,
167 0x82102500, 0x00ffffff, 0x42001000, 0x00ffffff,
168 0x0201f800, 0x001006f4, 0x0402000d, 0x4a0378e8,
169 0x00000003, 0x42000800, 0x00008000, 0x58042003,
170 0x82102500, 0x00ffffff, 0x42001000, 0x00ffffff,
171 0x0201f800, 0x001006f4, 0x0400000b, 0x4a03c020,
172 0x00004010, 0x4a03c011, 0x40100011, 0x04006000,
173 0x4203e000, 0x40000000, 0x4203e000, 0x30000001,
174 0x0401f000, 0x0201f800, 0x00100791, 0x42001000,
175 0x0010ab4a, 0x40080000, 0x80140480, 0x82001d00,
176 0xffffff00, 0x04020003, 0x40001800, 0x0401f003,
177 0x42001800, 0x000000ff, 0x480bc840, 0x480fc842,
178 0x04011000, 0x400c0000, 0x80081400, 0x40140000,
179 0x80080580, 0x040207f0, 0x4817500d, 0x45782800,
180 0x59c40000, 0x82000500, 0xffff0000, 0x80000120,
181 0x82000580, 0x00002422, 0x04020005, 0x59a80005,
182 0x8400054e, 0x48035005, 0x0401f008, 0x59e00003,
183 0x82000500, 0x00030000, 0x04000004, 0x59a80005,
184 0x84000554, 0x48035005, 0x42000800, 0x00000040,
185 0x59a80005, 0x8c000514, 0x0402000e, 0x42000800,
186 0x00001000, 0x82141480, 0x0017ffff, 0x04021009,
187 0x80040902, 0x82141480, 0x0013ffff, 0x04021005,
188 0x80040902, 0x82141480, 0x0011ffff, 0x04001b8d,
189 0x4807500e, 0x42001000, 0x00000024, 0x0201f800,
190 0x00106681, 0x82040c00, 0x0010d1c0, 0x4807500b,
191 0x4a03c810, 0x00100000, 0x4a03c811, 0x0010ab4a,
192 0x4a03c829, 0x00000004, 0x59e40001, 0x82000540,
193 0x0003001d, 0x4803c801, 0x4a03c014, 0x001c001c,
194 0x42001000, 0x0000001c, 0x0201f800, 0x001006e2,
195 0x4202c000, 0x0010d1c0, 0x59aab00b, 0x59aaa00b,
196 0x59aaa80b, 0x59aac80e, 0x49675069, 0x59a8000b,
197 0x4803500c, 0x0401fbf5, 0x0201f800, 0x00107903,
198 0x0201f800, 0x001007be, 0x0201f800, 0x00100807,
199 0x0201f800, 0x00101a05, 0x0201f800, 0x00101354,
200 0x0201f800, 0x00100969, 0x0201f800, 0x00101354,
201 0x0201f800, 0x00100f4c, 0x0201f800, 0x001066c1,
202 0x0401fb1a, 0x0201f800, 0x0010220e, 0x0201f800,
203 0x001053bb, 0x0201f800, 0x00104c90, 0x0201f800,
204 0x00106194, 0x0201f800, 0x00105f28, 0x0201f800,
205 0x001013ed, 0x0201f800, 0x0010126f, 0x4203e000,
206 0xf0000001, 0x42000000, 0x00001000, 0x50000000,
207 0x82000480, 0x24220001, 0x04000016, 0x59e00002,
208 0x8c00051e, 0x42000000, 0x7ffe00fe, 0x04020003,
209 0x42000000, 0x7ffe01fe, 0x50000800, 0x48075058,
210 0x80040920, 0x82040580, 0x0000013a, 0x04000004,
211 0x82040580, 0x0000013b, 0x04020006, 0x59a80005,
212 0x84000552, 0x48035005, 0x4a0378e4, 0x000c0000,
213 0x4a03c018, 0x0000000f, 0x4203e000, 0x20000511,
214 0x4203e000, 0x50010000, 0x4a03c020, 0x00000000,
215 0x04027013, 0x59e00020, 0x82000580, 0x00000002,
216 0x0402000f, 0x4a03c020, 0x00004000, 0x4a03c011,
217 0x40000010, 0x04006000, 0x4203e000, 0x40000000,
218 0x59e00017, 0x8c000508, 0x04000003, 0x4a03c017,
219 0x00000000, 0x4203e000, 0x30000001, 0x4202d800,
220 0x00000000, 0x4203e000, 0xb0600000, 0x59a80005,
221 0x42000800, 0x00000002, 0x8c000512, 0x04020007,
222 0x42000800, 0x0000000f, 0x8c000514, 0x04020003,
223 0x42000800, 0x00000001, 0x4007f800, 0x59a80005,
224 0x8c000514, 0x02020000, 0x00020004, 0x59e00003,
225 0x82000500, 0x00030000, 0x82000580, 0x00000000,
226 0x04020af8, 0x0201f000, 0x00020004, 0x4df00000,
227 0x4203e000, 0x50000000, 0x416c0000, 0x82000c80,
228 0x00000008, 0x04021aef, 0x0c01f804, 0x5c03e000,
229 0x0201f000, 0x00020008, 0x001002f7, 0x0010030a,
230 0x001003d7, 0x001002f6, 0x00100452, 0x001002f6,
231 0x001002f6, 0x00100593, 0x0401fae2, 0x42000800,
232 0x0010b4a4, 0x5804001d, 0x4803c857, 0x8c000500,
233 0x0400000d, 0x84000500, 0x4800081d, 0x4202d800,
234 0x00000004, 0x0401fbd3, 0x49f3c857, 0x5c000800,
235 0x5c000000, 0x82000540, 0x00003e00, 0x4c000000,
236 0x4c040000, 0x1c01f000, 0x0401fbbd, 0x0201f800,
237 0x0010513b, 0x04000009, 0x0201f800, 0x00105151,
238 0x0402002e, 0x59c40006, 0x82000540, 0x000000c0,
239 0x48038806, 0x0401f029, 0x0201f800, 0x001050a2,
240 0x836c0580, 0x00000001, 0x040200bc, 0x59a80017,
241 0x82000580, 0x00000009, 0x040200b8, 0x497b5010,
242 0x4a038893, 0x00000001, 0x42001000, 0x000000f0,
243 0x0201f800, 0x0010193d, 0x0201f800, 0x00105149,
244 0x59c41006, 0x04020006, 0x82081540, 0x000000f1,
245 0x82081500, 0xbbffffff, 0x0401f003, 0x82081540,
246 0x440000f1, 0x480b8806, 0x0201f800, 0x0010609e,
247 0x4a0378e4, 0x00002000, 0x42000000, 0x0010b83a,
248 0x0201f800, 0x0010aa47, 0x42001000, 0x00008030,
249 0x497b5013, 0x0401f035, 0x0201f800, 0x00103b38,
250 0x59c400a4, 0x82000500, 0x0000000f, 0x82000480,
251 0x00000007, 0x04021091, 0x0201f800, 0x0010609e,
252 0x59c400a3, 0x82000500, 0xffefffff, 0x480388a3,
253 0x59a8004b, 0x800001c0, 0x04020004, 0x0201f800,
254 0x00104139, 0x0401f085, 0x59a80015, 0x84000546,
255 0x48035015, 0x0201f800, 0x00105141, 0x59c41006,
256 0x04020006, 0x82081540, 0x44000001, 0x82081500,
257 0xffffff0f, 0x0401f003, 0x82081540, 0x440000f1,
258 0x480b8806, 0x497b9005, 0x4a038802, 0x0000ffff,
259 0x4a0378e4, 0x00003000, 0x42000000, 0x0010b80c,
260 0x0201f800, 0x0010aa47, 0x59a81010, 0x42000800,
261 0x00000003, 0x0201f800, 0x00106c78, 0x42001000,
262 0x00008010, 0x59a8180a, 0x0201f800, 0x00103a3e,
263 0x0201f800, 0x00101815, 0x59a80805, 0x82040d00,
264 0xffffffdf, 0x48075005, 0x0201f800, 0x0010483d,
265 0x0201f800, 0x0010513b, 0x0400000a, 0x0201f800,
266 0x0010413e, 0x04000007, 0x4a035013, 0x00000001,
267 0x497b5021, 0x0201f800, 0x00103c80, 0x0401f04f,
268 0x0201f800, 0x001048ec, 0x04000005, 0x59c41002,
269 0x8408150c, 0x480b8802, 0x0401f012, 0x0201f800,
270 0x0010513b, 0x04020006, 0x59a8001d, 0x80000540,
271 0x02000800, 0x0010930f, 0x0401f00a, 0x0201f800,
272 0x0010930f, 0x59a80026, 0x8c000506, 0x04020005,
273 0x59a8001d, 0x80000540, 0x02020800, 0x00104245,
274 0x497b5028, 0x497b5027, 0x497b5018, 0x0201f800,
275 0x0010513b, 0x59a81026, 0x0402000a, 0x0201f800,
276 0x0010162a, 0x80001580, 0x59a8002a, 0x82000500,
277 0xffff0000, 0x80040d40, 0x4807502a, 0x0401f005,
278 0x59a8002a, 0x82000500, 0xffff0000, 0x4803502a,
279 0x599c0017, 0x8c00050a, 0x04000002, 0x84081544,
280 0x480b5026, 0x0201f800, 0x0010513b, 0x04000004,
281 0x0201f800, 0x0010162a, 0x48078880, 0x42001000,
282 0x00000005, 0x0201f800, 0x001070b0, 0x497b5028,
283 0x497b501b, 0x4a03501c, 0x0000ffff, 0x4a0378e4,
284 0x000000c0, 0x4202d800, 0x00000002, 0x0201f800,
285 0x0010513b, 0x04000007, 0x59a80026, 0x82000500,
286 0x0000000c, 0x82000580, 0x00000004, 0x04000003,
287 0x0201f800, 0x00101e45, 0x1c01f000, 0x59a8001c,
288 0x82000580, 0x0000ffff, 0x04000004, 0x0201f800,
289 0x00101e45, 0x0401f074, 0x59a80026, 0x8c00050a,
290 0x04020003, 0x8c000506, 0x0400001c, 0x8c000500,
291 0x0400001a, 0x4a038802, 0x0000ffbf, 0x8c000502,
292 0x04000016, 0x599c0018, 0x8c000516, 0x04020010,
293 0x59a80027, 0x82000580, 0x0000ffff, 0x0400000c,
294 0x0201f800, 0x00101f9a, 0x59a80026, 0x8c000504,
295 0x0402005d, 0x42001000, 0x00000003, 0x417a5800,
296 0x0201f800, 0x00101fbf, 0x0401f057, 0x59a80028,
297 0x80000540, 0x04020054, 0x59a80026, 0x8c000508,
298 0x04020005, 0x59a8001b, 0x80000540, 0x0402004e,
299 0x0401f003, 0x8c000516, 0x0400004b, 0x0201f800,
300 0x001048ec, 0x04020048, 0x599c0018, 0x8c000516,
301 0x04020004, 0x0201f800, 0x00104c51, 0x04020042,
302 0x599c0017, 0x8c00050a, 0x0400000d, 0x4200b000,
303 0x000007f0, 0x417a8800, 0x0201f800, 0x00020245,
304 0x04020004, 0x59340200, 0x8c00051a, 0x04020036,
305 0x81468800, 0x8058b040, 0x040207f8, 0x4a038802,
306 0x0000ffff, 0x42001800, 0x0010b4eb, 0x0401fb8c,
307 0x42001800, 0x0010b4f8, 0x0401fb89, 0x59a80005,
308 0x84000502, 0x48035005, 0x4a0378e4, 0x00000080,
309 0x4202d800, 0x00000003, 0x4a03501c, 0x0000ffff,
310 0x0401fa7f, 0x80000580, 0x0201f800, 0x00101590,
311 0x599c0018, 0x8c000516, 0x04000004, 0x0201f800,
312 0x00103b10, 0x0401f009, 0x42001800, 0x0000ffff,
313 0x42002000, 0x00000006, 0x42003000, 0x00000000,
314 0x0201f800, 0x00103aae, 0x0201f800, 0x00105151,
315 0x0400000b, 0x59c40006, 0x0201f800, 0x0010513b,
316 0x04000004, 0x82000500, 0xffffff0f, 0x0401f003,
317 0x82000500, 0xfbffffff, 0x48038806, 0x0201f800,
318 0x00106f36, 0x1c01f000, 0x4c040000, 0x4c080000,
319 0x4c100000, 0x59a8003e, 0x82000c80, 0x00000004,
320 0x04021980, 0x0c01f805, 0x5c002000, 0x5c001000,
321 0x5c000800, 0x1c01f000, 0x00100462, 0x001004ea,
322 0x00100516, 0x00100577, 0x42000000, 0x00000001,
323 0x0201f800, 0x00101590, 0x0201f800, 0x0010609e,
324 0x59c408a3, 0x82040d00, 0xfffffff7, 0x480788a3,
325 0x0201f800, 0x00105141, 0x0400000e, 0x0201f800,
326 0x00105151, 0x0400000b, 0x0201f800, 0x00105149,
327 0x04020964, 0x59c400a3, 0x84000532, 0x84000570,
328 0x480388a3, 0x4a038808, 0x00000008, 0x0401f010,
329 0x59c400a3, 0x84000530, 0x82000500, 0xbf7fffff,
330 0x480388a3, 0x42000800, 0x000000f8, 0x0201f800,
331 0x00104200, 0x59c400a3, 0x82000540, 0x00018000,
332 0x8400051c, 0x480388a3, 0x497b8808, 0x59c40006,
333 0x82000500, 0xfbffff0e, 0x48038806, 0x497b2822,
334 0x497b2823, 0x42000800, 0x000001f4, 0x42001000,
335 0x00100591, 0x0201f800, 0x00105f83, 0x59c40805,
336 0x42001000, 0x00000001, 0x0201f800, 0x0010193d,
337 0x0201f800, 0x0010163b, 0x0402000a, 0x42000000,
338 0x00000001, 0x0201f800, 0x0010188c, 0x42000000,
339 0x00000001, 0x0201f800, 0x00101821, 0x0401f022,
340 0x0201f800, 0x00101642, 0x04020008, 0x41780000,
341 0x0201f800, 0x0010188c, 0x41780000, 0x0201f800,
342 0x00101821, 0x0401f018, 0x0201f800, 0x00101649,
343 0x0402000a, 0x42000000, 0x00000002, 0x0201f800,
344 0x0010188c, 0x42000000, 0x00000002, 0x0201f800,
345 0x00101821, 0x0401f00c, 0x0201f800, 0x00101650,
346 0x04020918, 0x59a80049, 0x800001c0, 0x04000006,
347 0x0201f800, 0x00101656, 0x4a03503e, 0x00000001,
348 0x0401f021, 0x0201f800, 0x00101927, 0x4a03503e,
349 0x00000001, 0x0201f800, 0x00105141, 0x0400000c,
350 0x0201f800, 0x00105151, 0x04000009, 0x0201f800,
351 0x00105149, 0x04020903, 0x4a035033, 0x00000001,
352 0x0201f800, 0x001050a2, 0x0401f00f, 0x59c400a4,
353 0x82000500, 0x0000000f, 0x82000580, 0x00000008,
354 0x04000003, 0x4a038805, 0x04000000, 0x59c400a3,
355 0x82000540, 0x0001c000, 0x480388a3, 0x84000520,
356 0x480388a3, 0x1c01f000, 0x0401f8a3, 0x04020004,
357 0x4a03503e, 0x00000003, 0x0401f027, 0x0201f800,
358 0x00101650, 0x04020011, 0x59a80049, 0x800001c0,
359 0x0400000e, 0x0201f800, 0x00101656, 0x59a80048,
360 0x8c00051e, 0x0400001c, 0x0201f800, 0x00105149,
361 0x04020009, 0x4a035033, 0x00000001, 0x0201f800,
362 0x001050a2, 0x0401f004, 0x0201f800, 0x001018d3,
363 0x04020011, 0x0201f800, 0x00101815, 0x4a03503e,
364 0x00000002, 0x497b5049, 0x59c400a3, 0x84000520,
365 0x480388a3, 0x497b2822, 0x497b2823, 0x42000800,
366 0x0000002d, 0x42001000, 0x00100591, 0x0201f800,
367 0x00105f83, 0x1c01f000, 0x0401f877, 0x04020004,
368 0x4a03503e, 0x00000003, 0x0401f05b, 0x4a038805,
369 0x000000f0, 0x0201f800, 0x001018d3, 0x04020050,
370 0x0201f800, 0x00105149, 0x04000044, 0x59c400a4,
371 0x82000500, 0x0000000f, 0x82000580, 0x00000008,
372 0x04000020, 0x59c40005, 0x8c000534, 0x0402001d,
373 0x59940022, 0x82000580, 0x00000001, 0x04020046,
374 0x0201f800, 0x00105151, 0x04020043, 0x4a038805,
375 0x000000f0, 0x0201f800, 0x00105196, 0x4a035032,
376 0x0000aaaa, 0x4a035033, 0x00000000, 0x59c408a3,
377 0x82040d40, 0x00000008, 0x480788a3, 0x4202d800,
378 0x00000001, 0x4a03503e, 0x00000000, 0x4a038805,
379 0x00000001, 0x497b2822, 0x497b2823, 0x0401f01f,
380 0x0201f800, 0x00105151, 0x04020007, 0x59a80032,
381 0x82000580, 0x0000aaaa, 0x04020003, 0x4a035010,
382 0x00ffffff, 0x497b5032, 0x59c40006, 0x82000540,
383 0x04000001, 0x48038806, 0x59a80805, 0x8c040d06,
384 0x04020005, 0x59c408a3, 0x82040d40, 0x00000008,
385 0x480788a3, 0x4202d800, 0x00000001, 0x4a03503e,
386 0x00000000, 0x4a038805, 0x00000001, 0x497b2822,
387 0x497b2823, 0x0401f010, 0x59c40005, 0x82000500,
388 0x000000c0, 0x0400000c, 0x59c40006, 0x82000540,
389 0x000000f1, 0x48038806, 0x0401f7ef, 0x0201f800,
390 0x00101650, 0x04020004, 0x59a80049, 0x800001c0,
391 0x040207a4, 0x497b8885, 0x1c01f000, 0x4803c856,
392 0x42000000, 0x00000001, 0x0201f800, 0x00101590,
393 0x4a03503e, 0x00000000, 0x0201f800, 0x00101650,
394 0x0402000b, 0x59a80052, 0x800001c0, 0x04000004,
395 0x80000040, 0x48035052, 0x04020005, 0x4a035052,
396 0x0000000a, 0x4a035049, 0x00000001, 0x497b8885,
397 0x0401f0ed, 0x59940022, 0x59940823, 0x80040540,
398 0x1c01f000, 0x497b2823, 0x1c01f000, 0x4c080000,
399 0x42001000, 0x000000f0, 0x0201f800, 0x0010193d,
400 0x5c001000, 0x1c01f000, 0x4a03505c, 0x00000004,
401 0x4a03505d, 0x00000000, 0x4a03505e, 0x00000010,
402 0x4a03505f, 0x00000002, 0x4a035010, 0x00ffffff,
403 0x0201f800, 0x0010930f, 0x4a03502a, 0x20200000,
404 0x4a03502b, 0x88000200, 0x4a03502c, 0x00ff001f,
405 0x4a03502d, 0x000007d0, 0x4a03502e, 0x80000000,
406 0x4a03502f, 0x00000200, 0x4a035030, 0x00ff0000,
407 0x4a035031, 0x00010000, 0x4a03503a, 0x514c4f47,
408 0x4a03503b, 0x49432020, 0x1c01f000, 0x4d440000,
409 0x417a8800, 0x41780800, 0x0201f800, 0x00020245,
410 0x04020005, 0x0201f800, 0x001049e7, 0x04020002,
411 0x80040800, 0x81468800, 0x83440580, 0x000007f0,
412 0x040207f6, 0x5c028800, 0x1c01f000, 0x4803c857,
413 0x5c000000, 0x4c000000, 0x4803c857, 0x0401f809,
414 0x485fc857, 0x4203e000, 0x50000000, 0x5c000000,
415 0x4d780000, 0x4200b800, 0x00008002, 0x0401f006,
416 0x485fc857, 0x4203e000, 0x50000000, 0x4200b800,
417 0x00008002, 0x04006000, 0x4c000000, 0x4c040000,
418 0x59bc00ea, 0x82000500, 0x00000007, 0x82000580,
419 0x00000001, 0x04020005, 0x42000800, 0x00000000,
420 0x0201f800, 0x00106c6c, 0x5c000800, 0x4807c025,
421 0x80040920, 0x4807c026, 0x5c000000, 0x4803c023,
422 0x80000120, 0x4803c024, 0x5c000000, 0x4803c857,
423 0x4803c021, 0x80000120, 0x4803c022, 0x41f80000,
424 0x4803c027, 0x80000120, 0x4803c028, 0x42000000,
425 0x00001000, 0x50000000, 0x82000480, 0x24320001,
426 0x4803c857, 0x0400104f, 0x42000800, 0x00000064,
427 0x80040840, 0x04000007, 0x4a030000, 0x00000001,
428 0x40000000, 0x59800000, 0x8c000500, 0x040007f9,
429 0x04000042, 0x42000800, 0x0010c1a3, 0x46000800,
430 0xfaceface, 0x80040800, 0x42001000, 0x00007a00,
431 0x58080013, 0x44000800, 0x80040800, 0x58080019,
432 0x44000800, 0x80040800, 0x5808001a, 0x44000800,
433 0x80040800, 0x5808001b, 0x44000800, 0x80040800,
434 0x5808001c, 0x44000800, 0x80040800, 0x5808001f,
435 0x44000800, 0x80040800, 0x42001000, 0x00007a40,
436 0x42001800, 0x0000000b, 0x50080000, 0x44000800,
437 0x80081000, 0x80040800, 0x800c1840, 0x040207fb,
438 0x42001800, 0x00000003, 0x42001000, 0x00007b00,
439 0x480c1003, 0x58080005, 0x44000800, 0x80040800,
440 0x800c1840, 0x040217fb, 0x42001000, 0x00007c00,
441 0x58080002, 0x44000800, 0x80040800, 0x58080003,
442 0x44000800, 0x80040800, 0x58080020, 0x44000800,
443 0x80040800, 0x58080021, 0x44000800, 0x80040800,
444 0x58080022, 0x44000800, 0x80040800, 0x58080023,
445 0x44000800, 0x80040800, 0x4a030000, 0x00000000,
446 0x485fc020, 0x905cb9c0, 0x825cbd40, 0x00000012,
447 0x485fc011, 0x4203e000, 0x40000000, 0x4202d800,
448 0x00000005, 0x59e00017, 0x8c000508, 0x04000003,
449 0x4a03c017, 0x00000002, 0x4203e000, 0x30000001,
450 0x0401f81a, 0x0401f7ff, 0x4a03c850, 0x0010c1bf,
451 0x4a03c851, 0x0010d1be, 0x4a03c853, 0x00000800,
452 0x4a03c855, 0x0001eb5a, 0x59e40001, 0x82000540,
453 0x00003f00, 0x4803c801, 0x4a03b104, 0x70000002,
454 0x4a03a804, 0x70000002, 0x4a03b004, 0x70000002,
455 0x42000000, 0x0010b8ec, 0x49780001, 0x49780002,
456 0x1c01f000, 0x1c01f000, 0x59a8006b, 0x8c000530,
457 0x040207fe, 0x4c080000, 0x42001000, 0x00000004,
458 0x0401f862, 0x5c001000, 0x4201d000, 0x00028b0a,
459 0x0201f800, 0x0010608e, 0x4c080000, 0x42001000,
460 0x00000008, 0x0401f859, 0x5c001000, 0x4201d000,
461 0x00028b0a, 0x0201f800, 0x0010608e, 0x4c080000,
462 0x42001000, 0x00000010, 0x0401f850, 0x5c001000,
463 0x4201d000, 0x00028b0a, 0x0201f800, 0x0010608e,
464 0x0401f7e2, 0x8c00050c, 0x59a8086b, 0x04020003,
465 0x84040d30, 0x0401f006, 0x84040d70, 0x4807506b,
466 0x42001000, 0x00000000, 0x0401f040, 0x4807506b,
467 0x836c0500, 0x00000007, 0x0c01f001, 0x001006e1,
468 0x001006c7, 0x001006c7, 0x001006af, 0x001006d4,
469 0x001006c7, 0x001006c7, 0x001006d4, 0x59a80005,
470 0x8c000514, 0x04020013, 0x59c40801, 0x82040d00,
471 0x00018000, 0x82040580, 0x00010000, 0x0400000a,
472 0x82040580, 0x00008000, 0x04000004, 0x42001000,
473 0x42004000, 0x0401f006, 0x42001000, 0x22002000,
474 0x0401f003, 0x42001000, 0x12001000, 0x0401f025,
475 0x42001000, 0x00001004, 0x0401f022, 0x59a80005,
476 0x8c000514, 0x04020008, 0x59a8006b, 0x8c000534,
477 0x04020004, 0x42001000, 0x74057005, 0x0401f819,
478 0x1c01f000, 0x42001000, 0x00002008, 0x0401f7fc,
479 0x59a8006b, 0x8c000534, 0x0402000a, 0x59a80005,
480 0x8c000514, 0x04000004, 0x42001000, 0x24052005,
481 0x0401f00c, 0x42001000, 0x74057005, 0x0401f009,
482 0x1c01f000, 0x1c01f000, 0x82081500, 0x0000001c,
483 0x82081540, 0x001c0000, 0x480bc013, 0x1c01f000,
484 0x59a8006b, 0x8c000530, 0x04000002, 0x84081570,
485 0x480b506b, 0x8c000530, 0x04020005, 0x82081500,
486 0x00007000, 0x80081114, 0x0401fff0, 0x1c01f000,
487 0x41780000, 0x50041800, 0x800c0400, 0x80040800,
488 0x80102040, 0x040207fc, 0x80080500, 0x80000540,
489 0x1c01f000, 0x4202f000, 0x00000000, 0x41780000,
490 0x41780800, 0x41781000, 0x41781800, 0x41782000,
491 0x41782800, 0x41783000, 0x41783800, 0x41784000,
492 0x41784800, 0x41785000, 0x41785800, 0x41786000,
493 0x41786800, 0x41787000, 0x41787800, 0x41788000,
494 0x41788800, 0x41789000, 0x41789800, 0x4178a000,
495 0x4178a800, 0x4178b000, 0x4178b800, 0x4178c000,
496 0x4178c800, 0x4178d000, 0x4178d800, 0x4178e000,
497 0x4178e800, 0x4178f000, 0x4178f800, 0x41790000,
498 0x41790800, 0x41791000, 0x41791800, 0x41792000,
499 0x41792800, 0x41793000, 0x41793800, 0x41794000,
500 0x41794800, 0x41795000, 0x41795800, 0x41796000,
501 0x41796800, 0x41797000, 0x41797800, 0x41798000,
502 0x41798800, 0x42019000, 0x0010b537, 0x42019800,
503 0x0010b50e, 0x4179a000, 0x4179b000, 0x4179a800,
504 0x4179b800, 0x4179c800, 0x4179c000, 0x4179d000,
505 0x4179d800, 0x4179e000, 0x4179e800, 0x4179f000,
506 0x4179f800, 0x417a0000, 0x417a0800, 0x417a1000,
507 0x417a1800, 0x417a2000, 0x42022800, 0x00006100,
508 0x417a3000, 0x417a3800, 0x417a4000, 0x417a4800,
509 0x417a5000, 0x417a5800, 0x417a6000, 0x417a6800,
510 0x417a7000, 0x417a7800, 0x417a8000, 0x417a8800,
511 0x417a9000, 0x417a9800, 0x417ae800, 0x417af800,
512 0x42030000, 0x00007c00, 0x42031000, 0x0010b806,
513 0x42031800, 0x0000bf1d, 0x42032000, 0x0000bf32,
514 0x42032800, 0x0010b7ce, 0x42033000, 0x0010b46e,
515 0x42034000, 0x0010b4a4, 0x42033800, 0x0010b4c3,
516 0x42034800, 0x0010b544, 0x42035000, 0x0010b400,
517 0x42035800, 0x0010ac00, 0x42030800, 0x0010b505,
518 0x417b6000, 0x42036800, 0x00006f00, 0x4203c800,
519 0x00003000, 0x42037000, 0x0000ff00, 0x42037800,
520 0x0000bf00, 0x42038000, 0x00007700, 0x42038800,
521 0x00004000, 0x42039000, 0x00006000, 0x42039800,
522 0x0010bedb, 0x4203a000, 0x00007600, 0x4203a800,
523 0x00007400, 0x4203b000, 0x00007200, 0x4203b800,
524 0x00007100, 0x4203c000, 0x00007000, 0x4203d000,
525 0x00000000, 0x4203e800, 0x00101b95, 0x417bd800,
526 0x1c01f000, 0x42000800, 0x00100000, 0x50040000,
527 0x4c000000, 0x42000000, 0x0000aaaa, 0x44000800,
528 0x42001800, 0x00005555, 0x41782000, 0x82102400,
529 0x00010000, 0x40100000, 0x80042c00, 0x440c2800,
530 0x42003000, 0x0000000a, 0x80183040, 0x040207ff,
531 0x50140000, 0x800c0580, 0x04020004, 0x50040000,
532 0x800c0580, 0x040207f2, 0x5c000000, 0x44000800,
533 0x80142840, 0x4817c861, 0x1c01f000, 0x59a8081f,
534 0x800409c0, 0x04020009, 0x49781c0c, 0x4a001a0c,
535 0x00000200, 0x4a001804, 0x07000000, 0x59a80010,
536 0x9c0001c0, 0x48001805, 0x0401fe01, 0x9c0409c0,
537 0x48041806, 0x1c01f000, 0x59a8080c, 0x4006d000,
538 0x4202b800, 0x00000001, 0x59a8180d, 0x480fc857,
539 0x82041400, 0x00000014, 0x82082400, 0x00000014,
540 0x40100000, 0x800c0480, 0x04001006, 0x44080800,
541 0x40080800, 0x40101000, 0x815eb800, 0x0401f7f7,
542 0x45780800, 0x495f5020, 0x1c01f000, 0x835c0480,
543 0x00000020, 0x04001009, 0x496bc857, 0x815eb840,
544 0x416a5800, 0x592ed000, 0x497a5800, 0x497a5801,
545 0x812e59c0, 0x1c01f000, 0x42000000, 0x0010b853,
546 0x0201f800, 0x0010aa47, 0x417a5800, 0x0401f7f9,
547 0x815eb840, 0x04001008, 0x416a5800, 0x492fc857,
548 0x592ed000, 0x497a5800, 0x497a5801, 0x812e59c0,
549 0x1c01f000, 0x42000000, 0x0010b853, 0x0201f800,
550 0x0010aa47, 0x417ab800, 0x417a5800, 0x0401f7f8,
551 0x492fc857, 0x496a5800, 0x412ed000, 0x815eb800,
552 0x59c80000, 0x82000540, 0x00001200, 0x48039000,
553 0x1c01f000, 0x492fc857, 0x812e59c0, 0x04000007,
554 0x592c0001, 0x497a5801, 0x4c000000, 0x0401fff1,
555 0x5c025800, 0x0401f7f9, 0x1c01f000, 0x4807c856,
556 0x42007000, 0x0010b7f8, 0x4a007001, 0x00000000,
557 0x59e00003, 0x82000540, 0x00008080, 0x4803c003,
558 0x4a03b805, 0x90000001, 0x59dc0006, 0x4a03b805,
559 0x70000000, 0x59dc0006, 0x4a03b805, 0x30000000,
560 0x4200b000, 0x00000020, 0x497bb807, 0x8058b040,
561 0x040207fe, 0x4a03b805, 0x30000000, 0x59dc0006,
562 0x4a03b805, 0x60000001, 0x59dc0006, 0x4a03b805,
563 0x70000001, 0x59dc0006, 0x4a03b805, 0x30000002,
564 0x4200b000, 0x00000020, 0x497bb807, 0x8058b040,
565 0x040207fe, 0x4a03b805, 0x30000000, 0x59dc0006,
566 0x4a03b805, 0x60000001, 0x0401ffa1, 0x04000da5,
567 0x42001000, 0x0010b7f6, 0x452c1000, 0x4a025801,
568 0x00000001, 0x4a025802, 0x00000100, 0x4a025809,
569 0x00107149, 0x497a580a, 0x497a580b, 0x497a580c,
570 0x0401ff93, 0x04000d97, 0x42001000, 0x0010b7f7,
571 0x452c1000, 0x4a025801, 0x00000000, 0x4a025802,
572 0x00000100, 0x4a025809, 0x001011bc, 0x497a5803,
573 0x497a5807, 0x497a5808, 0x497a580a, 0x59a80005,
574 0x8c00050e, 0x04000006, 0x4a03b805, 0xe0000001,
575 0x59dc0006, 0x8c000522, 0x040007fc, 0x1c01f000,
576 0x4df00000, 0x4203e000, 0x50000000, 0x4c380000,
577 0x40087000, 0x480bc857, 0x4a007002, 0x00000000,
578 0x42007000, 0x0010b7f8, 0x82080400, 0x00000000,
579 0x45780000, 0x58380005, 0x48087005, 0x80000540,
580 0x04000005, 0x82000400, 0x00000000, 0x44080000,
581 0x0401f003, 0x480bc857, 0x48087006, 0x58380001,
582 0x80000540, 0x0400080c, 0x5c007000, 0x5c03e000,
583 0x1c01f000, 0x4c380000, 0x42007000, 0x0010b7f8,
584 0x58380001, 0x80000540, 0x04000803, 0x5c007000,
585 0x1c01f000, 0x42007000, 0x0010b7f8, 0x58380001,
586 0x82000580, 0x00000000, 0x04020012, 0x58380000,
587 0x0c01f001, 0x0010088e, 0x0010088d, 0x0010088d,
588 0x0010088d, 0x0010088d, 0x0010088d, 0x0010088d,
589 0x0010088d, 0x0401fd4b, 0x58380808, 0x800409c0,
590 0x04020024, 0x58380006, 0x80000540, 0x04020002,
591 0x1c01f000, 0x4803c857, 0x48007002, 0x40006800,
592 0x58340000, 0x80000540, 0x04020002, 0x48007005,
593 0x48007006, 0x4a03b805, 0x20000000, 0x59dc0006,
594 0x4a03b805, 0x30000000, 0x58340007, 0x4803b800,
595 0x58340008, 0x4803b801, 0x58340004, 0x48007003,
596 0x58340003, 0x48007004, 0x4803b803, 0x58340001,
597 0x8c000500, 0x04000004, 0x4a007001, 0x00000001,
598 0x0401f028, 0x4a007001, 0x00000002, 0x0401f03d,
599 0x0201f800, 0x001093ea, 0x0201f800, 0x0010a69d,
600 0x04000017, 0x4a03b805, 0x20000000, 0x59dc0006,
601 0x4a03b805, 0x30000000, 0x4807b800, 0x480bb801,
602 0x4a007003, 0x00000010, 0x480c7009, 0x42001000,
603 0x00100875, 0x0201f800, 0x00105f9a, 0x58380008,
604 0x82000400, 0x00000004, 0x48007004, 0x4803b803,
605 0x4a007001, 0x00000007, 0x0401f022, 0x0201f800,
606 0x00109402, 0x42000800, 0x00000001, 0x42001000,
607 0x00100875, 0x0201f800, 0x00105f76, 0x0401f7ba,
608 0x4c040000, 0x4c080000, 0x58380803, 0x42001000,
609 0x00003fff, 0x82040480, 0x00003fff, 0x04021003,
610 0x40041000, 0x80000580, 0x48007003, 0x800800c4,
611 0x4803b802, 0x4a03b805, 0x30000002, 0x59dc0006,
612 0x4a03b805, 0x70000001, 0x59dc0006, 0x4a03b805,
613 0x10000000, 0x5c001000, 0x5c000800, 0x1c01f000,
614 0x483bc857, 0x4c040000, 0x4c080000, 0x58380803,
615 0x42001000, 0x00003fff, 0x82040480, 0x00003fff,
616 0x04021003, 0x40041000, 0x80000580, 0x48007003,
617 0x800800c4, 0x4803b802, 0x4a03b805, 0x10000002,
618 0x5c001000, 0x5c000800, 0x1c01f000, 0x4c040000,
619 0x4c380000, 0x42007000, 0x0010b7f8, 0x59dc0806,
620 0x4807c857, 0x4a03b805, 0x20000000, 0x8c040d3e,
621 0x04000007, 0x8c040d08, 0x04020cca, 0x58380001,
622 0x82000500, 0x00000007, 0x0c01f804, 0x5c007000,
623 0x5c000800, 0x1c01f000, 0x0010087d, 0x0010091e,
624 0x0010092e, 0x001005d8, 0x001005d8, 0x001005d8,
625 0x001005d8, 0x001011ea, 0x4807c856, 0x82040d00,
626 0x43000f80, 0x04020009, 0x58380003, 0x80000540,
627 0x0400001c, 0x59dc0000, 0x4803b800, 0x59dc0001,
628 0x4803b801, 0x0401f7af, 0x58380802, 0x4a000802,
629 0x00000200, 0x0401f01e, 0x4807c856, 0x82040d00,
630 0x43000f80, 0x04020009, 0x58380003, 0x80000540,
631 0x0400000c, 0x59dc0000, 0x4803b800, 0x59dc0001,
632 0x4803b801, 0x0401f7b7, 0x58380002, 0x82000400,
633 0x00000002, 0x46000000, 0x00000200, 0x0401f00c,
634 0x4c340000, 0x58386802, 0x59dc0000, 0x4803c857,
635 0x48006807, 0x59dc0001, 0x4803c857, 0x48006808,
636 0x4a006802, 0x00000100, 0x5c006800, 0x4a007001,
637 0x00000000, 0x4c300000, 0x58386002, 0x0401f80c,
638 0x04000009, 0x58300009, 0x82000c80, 0x0010ab4a,
639 0x04021c84, 0x82000c80, 0x00020000, 0x04001c81,
640 0x0801f800, 0x5c006000, 0x0401f723, 0x4833c857,
641 0x803061c0, 0x04000009, 0x59a8000c, 0x80300480,
642 0x04001007, 0x59a8000d, 0x80300480, 0x04021004,
643 0x82000540, 0x00000001, 0x1c01f000, 0x80000580,
644 0x1c01f000, 0x4803c856, 0x4dc00000, 0x42007000,
645 0x0010b803, 0x4a007400, 0x00000000, 0x49787001,
646 0x42038000, 0x00007720, 0x4a038006, 0x60000001,
647 0x4a038009, 0xf4f60000, 0x42038000, 0x00007700,
648 0x4a038006, 0x60000001, 0x4a038009, 0xf4f60000,
649 0x4a03c822, 0x00000010, 0x4a0370e8, 0x00000000,
650 0x0401f809, 0x4a0370e9, 0x00003a0f, 0x4a0370e8,
651 0x00000000, 0x4a0370e8, 0x00000001, 0x5c038000,
652 0x1c01f000, 0x4c5c0000, 0x4178b800, 0x0401f80a,
653 0x5c00b800, 0x1c01f000, 0x4803c856, 0x4c5c0000,
654 0x825cbd40, 0x00000001, 0x0401f803, 0x5c00b800,
655 0x1c01f000, 0x4803c856, 0x4dc00000, 0x4c500000,
656 0x4c580000, 0x4c540000, 0x4a0370e8, 0x00000000,
657 0x805cb9c0, 0x04000009, 0x4a038807, 0x00000004,
658 0x59b800ea, 0x8c000510, 0x04000004, 0x59b800e0,
659 0x0401f87b, 0x0401f7fb, 0x42038000, 0x00007720,
660 0x0201f800, 0x00100ec1, 0x59c00007, 0x4a038006,
661 0x20000000, 0x59c00007, 0x4a038006, 0x8000000a,
662 0x59c00007, 0x4a038006, 0x8000000b, 0x59c00007,
663 0x4a038006, 0x40000001, 0x83c00580, 0x00007700,
664 0x04000004, 0x42038000, 0x00007700, 0x0401f7ed,
665 0x42038000, 0x00007720, 0x42000800, 0x00000800,
666 0x59c00007, 0x8c00051e, 0x04000006, 0x4a038006,
667 0x90000001, 0x80040840, 0x040207fa, 0x0401fc11,
668 0x83c00580, 0x00007700, 0x04000004, 0x42038000,
669 0x00007700, 0x0401f7f1, 0x805cb9c0, 0x0402001d,
670 0x4200b000, 0x00000020, 0x83b8ac00, 0x00000020,
671 0x0201f800, 0x0010ab20, 0x4a0370fb, 0x00000001,
672 0x4a037020, 0x001010bd, 0x59a80039, 0x82000500,
673 0x0000ffff, 0x48037021, 0x4a037035, 0x0010bddb,
674 0x4a037030, 0x0010b410, 0x4a037031, 0x0010ac00,
675 0x4a037032, 0x0010b519, 0x4a037036, 0x0010b524,
676 0x59840002, 0x48037034, 0x4a037038, 0x001010b4,
677 0x4a0370fb, 0x00000001, 0x4178a000, 0x4200b000,
678 0x00000020, 0x83b8ac00, 0x00000000, 0x0201f800,
679 0x0010ab20, 0x4200b000, 0x00000040, 0x83b8ac00,
680 0x00000040, 0x0201f800, 0x0010ab20, 0x805cb9c0,
681 0x04020004, 0x4a0370e4, 0xaaaaaaaa, 0x0401f003,
682 0x4a0370e4, 0xa2aaaa82, 0x4a0370e5, 0xaaaaaaaa,
683 0x4a0370e6, 0xaaaaaaaa, 0x4a0370fb, 0x00000000,
684 0x4a0370e6, 0xaaaaaaaa, 0x42038000, 0x00007720,
685 0x4a038006, 0x90000000, 0x59c00007, 0x8c00051e,
686 0x02020800, 0x001005d8, 0x42038000, 0x00007700,
687 0x4a038006, 0x90000000, 0x59c00007, 0x8c00051e,
688 0x02020800, 0x001005d8, 0x5c00a800, 0x5c00b000,
689 0x5c00a000, 0x5c038000, 0x1c01f000, 0x4d300000,
690 0x4d380000, 0x40026000, 0x82000500, 0x7f000000,
691 0x82000580, 0x00000003, 0x0402000f, 0x83326500,
692 0x00ffffff, 0x59300203, 0x82000580, 0x00000004,
693 0x04020009, 0x59300c06, 0x82040580, 0x00000009,
694 0x04020005, 0x42027000, 0x00000047, 0x0201f800,
695 0x000207a1, 0x5c027000, 0x5c026000, 0x1c01f000,
696 0x4d300000, 0x4d2c0000, 0x4d340000, 0x4d400000,
697 0x4cfc0000, 0x4d380000, 0x4d3c0000, 0x4d440000,
698 0x4d4c0000, 0x4d480000, 0x4c5c0000, 0x4c600000,
699 0x4c640000, 0x4cc80000, 0x4ccc0000, 0x4cf00000,
700 0x4cf40000, 0x4cf80000, 0x4cfc0000, 0x4d000000,
701 0x4d040000, 0x0201f800, 0x00020015, 0x5c020800,
702 0x5c020000, 0x5c01f800, 0x5c01f000, 0x5c01e800,
703 0x5c01e000, 0x5c019800, 0x5c019000, 0x5c00c800,
704 0x5c00c000, 0x5c00b800, 0x5c029000, 0x5c029800,
705 0x5c028800, 0x5c027800, 0x5c027000, 0x5c01f800,
706 0x5c028000, 0x5c026800, 0x5c025800, 0x5c026000,
707 0x1c01f000, 0x493bc857, 0x0201f000, 0x00020044,
708 0x83300500, 0x1f000000, 0x04000008, 0x81326580,
709 0x80000130, 0x82000c80, 0x00000014, 0x02021800,
710 0x001005d8, 0x0c01f013, 0x83300500, 0x000000ff,
711 0x82000c80, 0x00000007, 0x02021800, 0x001005d8,
712 0x0c01f025, 0x1c01f000, 0x82000d00, 0xc0000038,
713 0x02020800, 0x001005d0, 0x0201f800, 0x001005d8,
714 0x00000000, 0x00000048, 0x00000054, 0x00000053,
715 0x00100a9b, 0x00100abf, 0x00100aba, 0x00100adf,
716 0x00100aa6, 0x00100ab2, 0x00100a9b, 0x00100ada,
717 0x00100b1a, 0x00100a9b, 0x00100a9b, 0x00100a9b,
718 0x00100a9b, 0x00100b1d, 0x00100b23, 0x00100b34,
719 0x00100b45, 0x00100a9b, 0x00100b4e, 0x00100b5a,
720 0x00100a9b, 0x00100a9b, 0x00100a9b, 0x0201f800,
721 0x001005d8, 0x00100aa4, 0x00100bff, 0x00100aec,
722 0x00100b0f, 0x00100aa4, 0x00100aa4, 0x00100aa4,
723 0x0201f800, 0x001005d8, 0x4803c856, 0x59300004,
724 0x8c00053e, 0x04020005, 0x42027000, 0x00000055,
725 0x0201f000, 0x000207a1, 0x0201f800, 0x00106f60,
726 0x040007fa, 0x1c01f000, 0x4803c856, 0x0401f8a9,
727 0x40002800, 0x41782000, 0x42027000, 0x00000056,
728 0x0201f000, 0x000207a1, 0x4803c856, 0x42027000,
729 0x00000057, 0x0201f000, 0x000207a1, 0x4803c856,
730 0x59300007, 0x8c00051a, 0x04020010, 0x59325808,
731 0x812e59c0, 0x04000014, 0x592c0408, 0x8c00051c,
732 0x04020003, 0x4a026011, 0xffffffff, 0x59300004,
733 0x8c00053e, 0x04020009, 0x42027000, 0x00000048,
734 0x0201f000, 0x000207a1, 0x59325808, 0x4a025a06,
735 0x00000007, 0x0401f7f4, 0x0201f800, 0x00106f60,
736 0x040007f6, 0x1c01f000, 0x4803c856, 0x83300500,
737 0x00ffffff, 0x0201f000, 0x001064d7, 0x1c01f000,
738 0x4c040000, 0x59b808ea, 0x82040d00, 0x00000007,
739 0x82040580, 0x00000003, 0x04000004, 0x42000000,
740 0x60000000, 0x0401f8ab, 0x5c000800, 0x1c01f000,
741 0x0401f8f9, 0x59325808, 0x812e59c0, 0x04000018,
742 0x592c0204, 0x82000500, 0x000000ff, 0x82000d80,
743 0x00000029, 0x04020012, 0x59300203, 0x82000580,
744 0x00000003, 0x0400000b, 0x59300807, 0x84040d26,
745 0x48066007, 0x0201f800, 0x00020086, 0x4a03900d,
746 0x00000040, 0x4a0370e5, 0x00000008, 0x1c01f000,
747 0x0201f800, 0x00106f60, 0x040007f4, 0x59880052,
748 0x80000000, 0x48031052, 0x4a03900d, 0x00000040,
749 0x42000000, 0xc0000000, 0x0401f05a, 0x42007800,
750 0x0010bde2, 0x42002000, 0x00003000, 0x42003000,
751 0x00000105, 0x0201f800, 0x00105e04, 0x4a0370e4,
752 0x02000000, 0x1c01f000, 0x4933c857, 0x0201f000,
753 0x0002077d, 0x41300800, 0x800409c0, 0x02020800,
754 0x001005d8, 0x0201f800, 0x001005d0, 0x4933c857,
755 0x813261c0, 0x02000800, 0x001005d8, 0x0401f835,
756 0x40002800, 0x0201f800, 0x0010a99c, 0x0401f8ae,
757 0x04000007, 0x59326809, 0x59340200, 0x8c00050e,
758 0x59300414, 0x02020800, 0x001092ce, 0x1c01f000,
759 0x4933c857, 0x813261c0, 0x02000800, 0x001005d8,
760 0x0401f8a1, 0x0400000b, 0x59325808, 0x0201f800,
761 0x00109037, 0x04000007, 0x592c0208, 0x8400054e,
762 0x48025a08, 0x417a7800, 0x0201f800, 0x00108be3,
763 0x1c01f000, 0x485fc857, 0x5c000000, 0x4d780000,
764 0x4203e000, 0x50000000, 0x4200b800, 0x00008005,
765 0x0201f000, 0x001005dd, 0x4933c857, 0x83300480,
766 0x00000020, 0x02021800, 0x001005d8, 0x83300c00,
767 0x0010b8cc, 0x50040000, 0x80000000, 0x04001002,
768 0x44000800, 0x1c01f000, 0x4933c857, 0x0401f7f4,
769 0x4807c856, 0x59b800ea, 0x8c000510, 0x040007fd,
770 0x59b800e0, 0x4803c857, 0x1c01f000, 0x4803c856,
771 0x42000000, 0x10000000, 0x41300800, 0x0401f02d,
772 0x82000500, 0xf0000000, 0x82040d00, 0x0fffffff,
773 0x80040d40, 0x4807c857, 0x59b800ea, 0x8c000516,
774 0x04020003, 0x480770e1, 0x1c01f000, 0x8c000510,
775 0x040007fa, 0x4c040000, 0x0401f809, 0x5c000800,
776 0x82100480, 0x00000008, 0x040017f4, 0x4c040000,
777 0x0401febc, 0x5c000800, 0x0401f7f0, 0x59b800e2,
778 0x59b820e2, 0x80100580, 0x040207fd, 0x80102114,
779 0x0401f006, 0x59b800e2, 0x59b820e2, 0x80100580,
780 0x040207fd, 0x0401f001, 0x40101800, 0x800c190a,
781 0x82100500, 0x0000001f, 0x820c1d00, 0x0000001f,
782 0x800c2480, 0x82102500, 0x0000001f, 0x1c01f000,
783 0x82000500, 0xf0000000, 0x82040d00, 0x0fffffff,
784 0x80040d40, 0x4807c857, 0x42001000, 0x0010b804,
785 0x50080000, 0x80000540, 0x04020005, 0x4a0370e5,
786 0x00000003, 0x4a0370e4, 0x00000300, 0x80000000,
787 0x44001000, 0x42001000, 0x00000400, 0x59b800ea,
788 0x8c000510, 0x0400000c, 0x0401ffd5, 0x82100480,
789 0x00000008, 0x04001007, 0x4c040000, 0x4c080000,
790 0x0401fe88, 0x5c001000, 0x5c000800, 0x0401f020,
791 0x59b800ea, 0x8c000516, 0x0402001d, 0x4a0370e4,
792 0x00300000, 0x480770e1, 0x42001000, 0x0000ff00,
793 0x80081040, 0x04000012, 0x59b808e4, 0x8c040d28,
794 0x040207fc, 0x42001000, 0x0010b804, 0x50080000,
795 0x80000040, 0x04020005, 0x4a0370e5, 0x00000002,
796 0x4a0370e4, 0x00000200, 0x02001800, 0x001005d8,
797 0x44001000, 0x8c040d2c, 0x1c01f000, 0x41f80000,
798 0x50000000, 0x0201f800, 0x001005d8, 0x80081040,
799 0x040207d3, 0x41f80000, 0x50000000, 0x0201f800,
800 0x001005d8, 0x4d380000, 0x59300c06, 0x82040580,
801 0x00000009, 0x04020006, 0x42027000, 0x00000047,
802 0x0201f800, 0x000207a1, 0x80000580, 0x5c027000,
803 0x1c01f000, 0x4c500000, 0x4a03900d, 0x00000001,
804 0x59c8a020, 0x4a03900d, 0x00000002, 0x59c80820,
805 0x8c50a52e, 0x04000002, 0x900409c0, 0x82040d00,
806 0x0000ffff, 0x0201f800, 0x00105dd7, 0x02000800,
807 0x001005d8, 0x4933c857, 0x8250a500, 0xff000000,
808 0x82500580, 0x05000000, 0x04000003, 0x82000540,
809 0x00000001, 0x5c00a000, 0x1c01f000, 0x0401ffe6,
810 0x4933c857, 0x59300406, 0x82000580, 0x00000000,
811 0x04000040, 0x59c82021, 0x4a03900d, 0x00000001,
812 0x59c82821, 0x82142d00, 0x0000ffff, 0x59325808,
813 0x812e59c0, 0x04000037, 0x59326809, 0x0201f800,
814 0x001048d9, 0x02020800, 0x001092b6, 0x599c0019,
815 0x8c00050c, 0x04020018, 0x0201f800, 0x001048d9,
816 0x04020015, 0x59300811, 0x4807c857, 0x592c0408,
817 0x8c00051c, 0x0402000e, 0x8400055c, 0x48025c08,
818 0x592c0a04, 0x82040d00, 0x000000ff, 0x82040580,
819 0x00000048, 0x04000004, 0x82040580, 0x00000018,
820 0x04020003, 0x59300811, 0x48065803, 0x4a026011,
821 0x7fffffff, 0x48166013, 0x0201f800, 0x001010dd,
822 0x04020014, 0x0401f9fd, 0x40280000, 0x4802600d,
823 0x04000005, 0x4832600b, 0x50200000, 0x4802600a,
824 0x4822600c, 0x59300414, 0x8c00051c, 0x04020004,
825 0x599c0019, 0x8c00050c, 0x0402086e, 0x4a03900d,
826 0x00000040, 0x4a0370e5, 0x00000008, 0x1c01f000,
827 0x59880052, 0x80000000, 0x48031052, 0x4a03900d,
828 0x00000040, 0x42000000, 0xc0000000, 0x0401f71d,
829 0x4cf80000, 0x58f40000, 0x8001f540, 0x0401f820,
830 0x41781800, 0x0401f8e4, 0x04020014, 0x44140800,
831 0x0401f82a, 0x04000011, 0x40043800, 0x42001800,
832 0x00000001, 0x40142000, 0x0401f8db, 0x0402000b,
833 0x801c3800, 0x501c0000, 0x44000800, 0x0401f810,
834 0x801c0580, 0x04000004, 0x44103800, 0x801c3840,
835 0x44143800, 0x0401f819, 0x5c01f000, 0x1c01f000,
836 0x80f9f1c0, 0x04020003, 0x58f41202, 0x0401f003,
837 0x42001000, 0x00000007, 0x1c01f000, 0x80f9f1c0,
838 0x04020006, 0x58f40401, 0x82000480, 0x00000002,
839 0x80f40400, 0x0401f005, 0x58f80401, 0x82000480,
840 0x00000002, 0x80f80400, 0x50002800, 0x80000000,
841 0x50002000, 0x1c01f000, 0x80f9f1c0, 0x04020008,
842 0x58f40401, 0x82000480, 0x00000002, 0x02001800,
843 0x001005d8, 0x4801ec01, 0x0401f00b, 0x58f80401,
844 0x82000480, 0x00000002, 0x02001800, 0x001005d8,
845 0x4801f401, 0x82000580, 0x00000002, 0x04020002,
846 0x0401f809, 0x58f40202, 0x80000040, 0x4801ea02,
847 0x02000800, 0x001005d8, 0x82000580, 0x00000001,
848 0x1c01f000, 0x4d2c0000, 0x40fa5800, 0x0201f800,
849 0x001007f4, 0x4979e800, 0x4179f000, 0x5c025800,
850 0x1c01f000, 0x80f5e9c0, 0x04000009, 0x80f9f1c0,
851 0x04020ff5, 0x4d2c0000, 0x40f65800, 0x0201f800,
852 0x001007f4, 0x4179e800, 0x5c025800, 0x1c01f000,
853 0x4cf40000, 0x59300807, 0x82040500, 0x00003100,
854 0x04020032, 0x8c040d22, 0x04000032, 0x5930001f,
855 0x8001ed40, 0x02000800, 0x001005d8, 0x82000580,
856 0xffffffff, 0x04000029, 0x58f40201, 0x82000580,
857 0x0000dcb3, 0x02020800, 0x001005d8, 0x58f40a02,
858 0x82040500, 0x0000fffe, 0x04000003, 0x0401ff89,
859 0x58f40a02, 0x82040480, 0x0000000f, 0x04021059,
860 0x80040800, 0x4805ea02, 0x82040580, 0x00000008,
861 0x0400005d, 0x82040480, 0x00000008, 0x0400100a,
862 0x58f40000, 0x8001ed40, 0x02000800, 0x001005d8,
863 0x58f40201, 0x82000580, 0x0000ddb9, 0x02020800,
864 0x001005d8, 0x58f40401, 0x82000c00, 0x00000002,
865 0x4805ec01, 0x80f40400, 0x59300812, 0x44040000,
866 0x80000000, 0x45780000, 0x5c01e800, 0x1c01f000,
867 0x42001000, 0x00000400, 0x59b800e4, 0x8c000524,
868 0x04020023, 0x4a0370e4, 0x00030000, 0x40000000,
869 0x59b800e4, 0x8c000524, 0x0402001b, 0x59300807,
870 0x84040d62, 0x48066007, 0x4a0370e4, 0x00020000,
871 0x4d2c0000, 0x0201f800, 0x001007d3, 0x04000025,
872 0x492e601f, 0x4a025a01, 0x0000dcb3, 0x59300008,
873 0x80001d40, 0x02000800, 0x001005d8, 0x580c080f,
874 0x48065803, 0x59301811, 0x40040000, 0x800c0580,
875 0x0402000d, 0x497a5a02, 0x4a025c01, 0x00000004,
876 0x0401f011, 0x4a0370e4, 0x00020000, 0x40000000,
877 0x40000000, 0x80081040, 0x02000800, 0x001005d8,
878 0x0401f7d6, 0x4a025a02, 0x00000001, 0x4a025c01,
879 0x00000006, 0x497a5804, 0x400c0000, 0x80040480,
880 0x48025805, 0x412de800, 0x5c025800, 0x0401f7a9,
881 0x5c025800, 0x4a02601f, 0xffffffff, 0x0401f7c3,
882 0x4d2c0000, 0x58f65800, 0x0201f800, 0x001007f4,
883 0x40f65800, 0x0201f800, 0x001007f4, 0x5c025800,
884 0x0401f7f5, 0x4d2c0000, 0x0201f800, 0x001007d3,
885 0x040007f8, 0x4a025a01, 0x0000ddb9, 0x4a025c01,
886 0x00000002, 0x492de800, 0x412de800, 0x5c025800,
887 0x0401f7a5, 0x0401ff33, 0x82f40400, 0x00000004,
888 0x800c0400, 0x40000800, 0x50040000, 0x80100580,
889 0x04000016, 0x82040c00, 0x00000002, 0x80081040,
890 0x040207fa, 0x80f9f1c0, 0x04000011, 0x58f41202,
891 0x82081480, 0x00000007, 0x82f80400, 0x00000002,
892 0x800c0400, 0x40000800, 0x50040000, 0x80100580,
893 0x04000006, 0x82040c00, 0x00000002, 0x80081040,
894 0x040207fa, 0x0401f002, 0x1c01f000, 0x82000540,
895 0x00000001, 0x0401f7fd, 0x4cf40000, 0x4cf80000,
896 0x4001e800, 0x592c0a06, 0x800409c0, 0x0402001d,
897 0x82f40580, 0xffffffff, 0x04000017, 0x58f40201,
898 0x82000580, 0x0000dcb3, 0x02020800, 0x001005d8,
899 0x58f40000, 0x8001f540, 0x04000006, 0x58f80201,
900 0x82000580, 0x0000ddb9, 0x02020800, 0x001005d8,
901 0x41783800, 0x0401f839, 0x04020006, 0x0401ff32,
902 0x497a601f, 0x5c01f000, 0x5c01e800, 0x1c01f000,
903 0x0401ff2d, 0x4a025a06, 0x00000011, 0x0401f7f9,
904 0x82f40580, 0xffffffff, 0x04020f27, 0x0401f7f5,
905 0x4cf40000, 0x4cf80000, 0x4001e800, 0x82040580,
906 0x00000001, 0x0402001f, 0x82f40580, 0xffffffff,
907 0x04000019, 0x58f40201, 0x82000580, 0x0000dcb3,
908 0x02020800, 0x001005d8, 0x58f40000, 0x8001f540,
909 0x04000006, 0x58f80201, 0x82000580, 0x0000ddb9,
910 0x02020800, 0x001005d8, 0x41783800, 0x0401f813,
911 0x04020008, 0x0401ff0c, 0x42000800, 0x00000001,
912 0x497a601f, 0x5c01f000, 0x5c01e800, 0x1c01f000,
913 0x0401ff05, 0x42000800, 0x00000011, 0x0401f7f9,
914 0x4c040000, 0x82f40580, 0xffffffff, 0x04020efe,
915 0x5c000800, 0x0401f7f3, 0x4803c856, 0x401c2000,
916 0x41781800, 0x0401ff8c, 0x0402002c, 0x58f42003,
917 0x42001800, 0x00000001, 0x0401ff87, 0x04020027,
918 0x0401feb8, 0x40082800, 0x82f40400, 0x00000004,
919 0x40003000, 0x50182000, 0x40100000, 0x801c0580,
920 0x04000005, 0x42001800, 0x00000001, 0x0401ff7a,
921 0x0402001a, 0x82183400, 0x00000002, 0x80142840,
922 0x040207f5, 0x80f9f1c0, 0x04000013, 0x58f42a02,
923 0x82142c80, 0x00000007, 0x82f80400, 0x00000003,
924 0x40003000, 0x50182000, 0x40100000, 0x801c0580,
925 0x04000005, 0x42001800, 0x00000001, 0x0401ff66,
926 0x04020006, 0x82183400, 0x00000002, 0x80142840,
927 0x040207f5, 0x1c01f000, 0x82000540, 0x00000001,
928 0x0401f7fd, 0x0201f800, 0x001005d8, 0x58380207,
929 0x8c000502, 0x040007fc, 0x50200000, 0x80387c00,
930 0x583c2800, 0x583c2001, 0x58380404, 0x80001540,
931 0x04020002, 0x58381407, 0x58c83401, 0x58380c08,
932 0x59303807, 0x497a6012, 0x497a6013, 0x0201f000,
933 0x000200be, 0x592c0408, 0x8c000502, 0x040007ea,
934 0x592c0409, 0x80000540, 0x040007e7, 0x82000c80,
935 0x00000002, 0x04001011, 0x58380001, 0x80007540,
936 0x02000800, 0x001005d8, 0x58380204, 0x82000500,
937 0x0000000f, 0x82000400, 0x001010bd, 0x50004000,
938 0x40040000, 0x800409c0, 0x04000005, 0x82040c80,
939 0x00000005, 0x040217f1, 0x80204400, 0x50200000,
940 0x80387c00, 0x583c2800, 0x583c2001, 0x583c1002,
941 0x592c0a07, 0x592c4c08, 0x592c300d, 0x59303807,
942 0x497a6012, 0x497a6013, 0x4816600e, 0x4812600f,
943 0x480a6010, 0x481a6011, 0x80040840, 0x4806600d,
944 0x02000000, 0x000200c6, 0x80204000, 0x50201800,
945 0x800c19c0, 0x0402000c, 0x58380001, 0x80007540,
946 0x02000800, 0x001005d8, 0x58380204, 0x82000500,
947 0x0000000f, 0x82000400, 0x001010bd, 0x50004000,
948 0x50201800, 0x483a600b, 0x480e600a, 0x4822600c,
949 0x0201f000, 0x000200c6, 0x4803c856, 0x592c0208,
950 0x8c00051e, 0x04020017, 0x50200000, 0x80306c00,
951 0x40240000, 0x0c01f001, 0x00100e46, 0x00100e46,
952 0x00100e4f, 0x00100e46, 0x00100e46, 0x00100e46,
953 0x00100e46, 0x00100e46, 0x00100e4f, 0x00100e46,
954 0x00100e4f, 0x00100e46, 0x00100e46, 0x00100e4f,
955 0x00100e46, 0x00100e46, 0x0201f800, 0x001005d8,
956 0x8400051e, 0x48025a08, 0x50200000, 0x80306c00,
957 0x58343801, 0x481e600f, 0x0401f007, 0x58341802,
958 0x58342800, 0x58343801, 0x480e6010, 0x4816600e,
959 0x481e600f, 0x0401f246, 0x4933c857, 0x5931f808,
960 0x59300a06, 0x800409c0, 0x04000005, 0x80040906,
961 0x04020002, 0x80040800, 0x4805fc06, 0x4a026206,
962 0x00000002, 0x592c0409, 0x82000500, 0x00000008,
963 0x0400000b, 0x0401f834, 0x59300203, 0x82000580,
964 0x00000004, 0x04020005, 0x42027000, 0x00000048,
965 0x0201f800, 0x000207a1, 0x1c01f000, 0x4cfc0000,
966 0x58fc0204, 0x82000500, 0x000000ff, 0x82000580,
967 0x00000048, 0x0402000c, 0x58fc000b, 0x800001c0,
968 0x04000009, 0x58fc0407, 0x800001c0, 0x04000006,
969 0x58fc080b, 0x8c040d16, 0x04000017, 0x58fc0007,
970 0x0401f00a, 0x58fc0408, 0x8c000512, 0x04020014,
971 0x58fc0c09, 0x8c040d16, 0x04020003, 0x5c01f800,
972 0x1c01f000, 0x58fc000a, 0x59300811, 0x80040580,
973 0x04020009, 0x59300007, 0x84000500, 0x48026007,
974 0x42027000, 0x00000048, 0x5c01f800, 0x0201f000,
975 0x000207a1, 0x5c01f800, 0x1c01f000, 0x58fdf809,
976 0x0401f7ec, 0x4933c857, 0x59b808ea, 0x82040d00,
977 0x00000007, 0x82040580, 0x00000000, 0x0400001e,
978 0x82040580, 0x00000003, 0x0400001b, 0x59300406,
979 0x4c000000, 0x4a026406, 0x00000000, 0x42003000,
980 0x00000041, 0x42000000, 0x50000000, 0x41300800,
981 0x4c180000, 0x0401fce7, 0x5c003000, 0x0400000b,
982 0x42000000, 0x0000001e, 0x80000040, 0x040207ff,
983 0x80183040, 0x040207f4, 0x42000000, 0x40000000,
984 0x41300800, 0x0401fcdb, 0x5c000000, 0x48026406,
985 0x1c01f000, 0x59300007, 0x84000500, 0x48026007,
986 0x0401f7fc, 0x59c00007, 0x4a038006, 0x30000000,
987 0x40000000, 0x59c00007, 0x8c00050a, 0x040207fe,
988 0x1c01f000, 0x5c000000, 0x4c000000, 0x4803c857,
989 0x4dc00000, 0x4a0370e8, 0x00000000, 0x42038000,
990 0x00007720, 0x0401fff0, 0x42038000, 0x00007700,
991 0x0401ffed, 0x0201f800, 0x0010513b, 0x04020013,
992 0x4a038891, 0x0000ffff, 0x497b8880, 0x497b8892,
993 0x42001000, 0x00000190, 0x40000000, 0x40000000,
994 0x80081040, 0x040207fd, 0x42000000, 0x0010b8a6,
995 0x0201f800, 0x0010aa47, 0x0401f80e, 0x5c038000,
996 0x0201f000, 0x00105258, 0x0401f82d, 0x42000000,
997 0x0010b8a7, 0x0201f800, 0x0010aa47, 0x0401f805,
998 0x48178892, 0x480b8880, 0x5c038000, 0x1c01f000,
999 0x496fc857, 0x836c0580, 0x00000003, 0x0402000b,
1000 0x4c080000, 0x4c0c0000, 0x42001000, 0x00008048,
1001 0x42001800, 0x0000ffff, 0x0201f800, 0x00103a3e,
1002 0x5c001800, 0x5c001000, 0x42000800, 0x0000003c,
1003 0x0201f800, 0x00101345, 0x59a8006c, 0x80000540,
1004 0x04000006, 0x59a8106d, 0x800811c0, 0x04000003,
1005 0x0201f800, 0x00101aaf, 0x4a038891, 0x0000ffff,
1006 0x4a03900d, 0x00000040, 0x0201f800, 0x0010098e,
1007 0x4a0370e8, 0x00000001, 0x1c01f000, 0x5c000000,
1008 0x4c000000, 0x4803c857, 0x59c41080, 0x497b8880,
1009 0x59c42892, 0x497b8892, 0x0201f800, 0x0010513b,
1010 0x04020002, 0x1c01f000, 0x42002000, 0x00000260,
1011 0x59c418a4, 0x820c1d00, 0x0000000f, 0x820c0580,
1012 0x00000000, 0x04000010, 0x59c41805, 0x820c1d00,
1013 0x00000001, 0x0402000e, 0x59c418a4, 0x820c1d00,
1014 0x0000000f, 0x820c0480, 0x00000007, 0x04001004,
1015 0x820c0480, 0x0000000c, 0x04001003, 0x80102040,
1016 0x040207ec, 0x497b8891, 0x1c01f000, 0x4c100000,
1017 0x42002000, 0x00000019, 0x46000000, 0x00000001,
1018 0x0201f800, 0x00101937, 0x50001800, 0x820c1d00,
1019 0x00000001, 0x04000005, 0x80102040, 0x040207f7,
1020 0x5c002000, 0x0401f7f0, 0x5c002000, 0x0401f7ec,
1021 0x4803c856, 0x1c01f000, 0x4d2c0000, 0x59325808,
1022 0x592c0a04, 0x4807c857, 0x82040d00, 0x000000ff,
1023 0x82040500, 0x0000000f, 0x0c01f001, 0x00100f67,
1024 0x00100f67, 0x00100f67, 0x00100f7f, 0x00100f67,
1025 0x00100f67, 0x00100f67, 0x00100f67, 0x00100f67,
1026 0x00100f7f, 0x00100f67, 0x00100f69, 0x00100f67,
1027 0x00100f67, 0x00100f67, 0x00100f67, 0x0201f800,
1028 0x001005d8, 0x82040580, 0x0000003b, 0x02020800,
1029 0x001005d8, 0x592c020a, 0x8c000500, 0x0400005f,
1030 0x592c1a07, 0x82040500, 0x0000000f, 0x82000400,
1031 0x001010bd, 0x50001000, 0x50080000, 0x59302013,
1032 0x4802600a, 0x492e600b, 0x480a600c, 0x480e600d,
1033 0x48126012, 0x5c025800, 0x1c01f000, 0x82040500,
1034 0x0000000f, 0x82000400, 0x001010bd, 0x50001000,
1035 0x50080000, 0x592c1a07, 0x4802600a, 0x492e600b,
1036 0x480a600c, 0x480e600d, 0x497a6012, 0x0401f7f2,
1037 0x8c040d00, 0x04020041, 0x82040d00, 0x00000080,
1038 0x0400003e, 0x0201f000, 0x000200cf, 0x59300013,
1039 0x59301012, 0x80080580, 0x0402000c, 0x42007800,
1040 0x80000005, 0x592c1208, 0x82080500, 0xffff7fff,
1041 0x48025a08, 0x8c08151e, 0x0402002d, 0x823c7d40,
1042 0x00000020, 0x0401f02a, 0x480bc857, 0x42000000,
1043 0x0010b851, 0x0201f800, 0x0010aa47, 0x59300414,
1044 0x4803c857, 0x8c000514, 0x04020007, 0x599c1819,
1045 0x8c0c1d12, 0x04020004, 0x820c1d40, 0x00000001,
1046 0x0401f01d, 0x59302013, 0x0401f92b, 0x0402001a,
1047 0x42007800, 0x80000005, 0x5930500d, 0x592c0208,
1048 0x4803c857, 0x8c00051e, 0x04020005, 0x823c7d40,
1049 0x00000020, 0x5930400c, 0x0401f004, 0x8400051e,
1050 0x48025a08, 0x0401f8da, 0x50201800, 0x480e600a,
1051 0x4832600b, 0x4822600c, 0x482a600d, 0x480fc857,
1052 0x4833c857, 0x4823c857, 0x482bc857, 0x80000580,
1053 0x483e6004, 0x1c01f000, 0x0201f800, 0x001005d8,
1054 0x4933c857, 0x4d2c0000, 0x59900004, 0x81300580,
1055 0x02020800, 0x001005d8, 0x0201f800, 0x00109037,
1056 0x02000800, 0x001005d8, 0x59325808, 0x4d3c0000,
1057 0x4d400000, 0x59300004, 0x4803c857, 0x4c000000,
1058 0x0201f800, 0x00106dc3, 0x0201f800, 0x00106b8a,
1059 0x5c000000, 0x8c000516, 0x04000010, 0x592c000f,
1060 0x4803c857, 0x48025807, 0x41780800, 0x42028000,
1061 0x00000002, 0x0201f800, 0x00104e70, 0x4a025c06,
1062 0x0000ffff, 0x0201f800, 0x000202da, 0x0201f800,
1063 0x00107911, 0x0401f015, 0x4a026203, 0x00000002,
1064 0x592c0208, 0x8400054e, 0x48025a08, 0x59300406,
1065 0x82000580, 0x00000006, 0x04020009, 0x811800ca,
1066 0x81c80c00, 0x58040939, 0x592c000d, 0x80040480,
1067 0x592c080f, 0x80040480, 0x4802580b, 0x417a7800,
1068 0x0201f800, 0x00108be3, 0x5c028000, 0x5c027800,
1069 0x5c025800, 0x1c01f000, 0x4933c857, 0x4d2c0000,
1070 0x59900004, 0x81300580, 0x02020800, 0x001005d8,
1071 0x0201f800, 0x00109037, 0x02000800, 0x001005d8,
1072 0x59325808, 0x592c0208, 0x84000540, 0x48025a08,
1073 0x0401f7bf, 0x491bc857, 0x49d3c857, 0x4dd00000,
1074 0x41780800, 0x8007a0ca, 0x83d3a400, 0x00007600,
1075 0x4a03a005, 0x80000002, 0x42000000, 0x00001000,
1076 0x50000000, 0x82000480, 0x24220001, 0x04020029,
1077 0x59d01006, 0x82080500, 0x00006000, 0x82000580,
1078 0x00006000, 0x0400002f, 0x82080500, 0x40008000,
1079 0x040007f8, 0x800409c0, 0x0402002a, 0x811a31c0,
1080 0x04000028, 0x42000000, 0x00001002, 0x50001000,
1081 0x46000000, 0x00000512, 0x42001800, 0x0000000a,
1082 0x59e00000, 0x8c00051a, 0x040207fc, 0x800c1840,
1083 0x040207fc, 0x42000000, 0x00001002, 0x46000000,
1084 0x00000514, 0x42001800, 0x0000000a, 0x59e00000,
1085 0x8c00053a, 0x040207fc, 0x800c1840, 0x040207fc,
1086 0x42000000, 0x00001002, 0x44080000, 0x0401f00d,
1087 0x59d01006, 0x82080500, 0x00006000, 0x82000580,
1088 0x00006000, 0x04000007, 0x8c08151e, 0x040007f9,
1089 0x59d01006, 0x82080500, 0x00006000, 0x040207f5,
1090 0x83d3a400, 0x00000020, 0x80040800, 0x82040480,
1091 0x00000005, 0x040017bf, 0x5c03a000, 0x1c01f000,
1092 0x491bc857, 0x49d3c857, 0x4dd00000, 0x41780800,
1093 0x8007a0ca, 0x83d3a400, 0x00007600, 0x4a03a005,
1094 0x80000001, 0x59d00006, 0x83d3a400, 0x00000020,
1095 0x80040800, 0x82040480, 0x00000005, 0x040017f8,
1096 0x5c03a000, 0x1c01f000, 0x59d00006, 0x8c00053e,
1097 0x0400001e, 0x59902804, 0x4817c857, 0x801429c0,
1098 0x04000013, 0x5990000a, 0x5990080b, 0x5990100c,
1099 0x5990180d, 0x4800280a, 0x4804280b, 0x4808280c,
1100 0x480c280d, 0x59d00000, 0x59d00801, 0x59d01002,
1101 0x59d01803, 0x59d02004, 0x4800280e, 0x4804280f,
1102 0x48082810, 0x480c2811, 0x48102812, 0x59900006,
1103 0x82000500, 0xffff0000, 0x48032006, 0x4a03a005,
1104 0x30000000, 0x59d00006, 0x1c01f000, 0x4803c856,
1105 0x80204000, 0x50200000, 0x80000540, 0x04000003,
1106 0x80285040, 0x1c01f000, 0x58300001, 0x80000540,
1107 0x0400000e, 0x4802600b, 0x40006000, 0x58300204,
1108 0x82000500, 0x0000000f, 0x82000400, 0x001010bd,
1109 0x50004000, 0x802041c0, 0x02000800, 0x001005d8,
1110 0x80285040, 0x1c01f000, 0x40005000, 0x1c01f000,
1111 0x00000005, 0x00000008, 0x0000000b, 0x0000000e,
1112 0x00000011, 0x00000000, 0x00000000, 0x0000000b,
1113 0x00000000, 0x00000000, 0x00000000, 0x001010b8,
1114 0x001010b7, 0x00000000, 0x00000000, 0x00000000,
1115 0x00000000, 0x001010b8, 0x001010b7, 0x001010b4,
1116 0x001010b8, 0x001010b7, 0x00000000, 0x00000000,
1117 0x00000000, 0x00000000, 0x00000000, 0x001010b8,
1118 0x00000000, 0x00000000, 0x00000000, 0x00000000,
1119 0x00000000, 0x001010b8, 0x001010b8, 0x001010b8,
1120 0x00000000, 0x001010b8, 0x00000000, 0x00000000,
1121 0x00000000, 0x4813c857, 0x492fc857, 0x4933c857,
1122 0x48126012, 0x592c5207, 0x802851c0, 0x0400004a,
1123 0x412c6000, 0x0401f84b, 0x04000009, 0x82240580,
1124 0x00000002, 0x04020003, 0x5830000d, 0x80102480,
1125 0x50200000, 0x80004540, 0x0400003f, 0x50200000,
1126 0x80000540, 0x0400000b, 0x80301400, 0x58080002,
1127 0x80102480, 0x0400101e, 0x801021c0, 0x04000009,
1128 0x80285040, 0x04000034, 0x80204000, 0x0401f7f4,
1129 0x58300001, 0x80006540, 0x0400002f, 0x0401f7e6,
1130 0x80285040, 0x0400002c, 0x80204000, 0x50200000,
1131 0x80000540, 0x0402000a, 0x58300001, 0x80006540,
1132 0x04000025, 0x58300204, 0x82004d00, 0x0000000f,
1133 0x82244400, 0x001010bd, 0x50204000, 0x592c0208,
1134 0x8400051e, 0x48025a08, 0x0401f013, 0x80102080,
1135 0x80102000, 0x48126010, 0x4813c857, 0x58080802,
1136 0x40100000, 0x80042480, 0x02001800, 0x001005d8,
1137 0x58080000, 0x58081801, 0x80102400, 0x4812600e,
1138 0x480e600f, 0x4813c857, 0x592c0208, 0x8400055e,
1139 0x48025a08, 0x4833c857, 0x4823c857, 0x482bc857,
1140 0x4832600b, 0x4822600c, 0x482a600d, 0x80000580,
1141 0x0401f003, 0x82000540, 0x00000001, 0x1c01f000,
1142 0x58300204, 0x82004d00, 0x0000000f, 0x82244400,
1143 0x001010bd, 0x82000500, 0x000000ff, 0x82000580,
1144 0x00000029, 0x0402001b, 0x50204000, 0x592c0409,
1145 0x80000540, 0x02000800, 0x001005d8, 0x82000c80,
1146 0x00000002, 0x04001011, 0x58300001, 0x80006540,
1147 0x02000800, 0x001005d8, 0x58300204, 0x82000500,
1148 0x0000000f, 0x82000400, 0x001010bd, 0x50004000,
1149 0x40040000, 0x800409c0, 0x04000006, 0x82040c80,
1150 0x00000005, 0x040217f1, 0x80204400, 0x80000580,
1151 0x1c01f000, 0x59e00004, 0x8c00050e, 0x02020000,
1152 0x00100903, 0x1c01f000, 0x4c5c0000, 0x59e4b800,
1153 0x485fc857, 0x825c0500, 0x0000001f, 0x04000004,
1154 0x59e40862, 0x0201f800, 0x001005d8, 0x825c0500,
1155 0x000000e0, 0x02000800, 0x001005d8, 0x8c5cbd0e,
1156 0x04020807, 0x8c5cbd0c, 0x04020809, 0x8c5cbd0a,
1157 0x04020878, 0x5c00b800, 0x1c01f000, 0x4803c856,
1158 0x4a03c800, 0x00000080, 0x1c01f000, 0x4d2c0000,
1159 0x42007800, 0x0010b8ec, 0x583c0001, 0x583c0802,
1160 0x80040540, 0x0400003f, 0x42000800, 0x0010b7f7,
1161 0x50065800, 0x592c0002, 0x82000580, 0x00000000,
1162 0x0400000e, 0x59e40850, 0x59e41853, 0x400c0000,
1163 0x80040400, 0x59e40852, 0x4807c857, 0x80041480,
1164 0x04021008, 0x40001000, 0x480bc857, 0x4a007800,
1165 0x00000001, 0x0401f006, 0x4803c857, 0x0401f029,
1166 0x59e41050, 0x480bc857, 0x49787800, 0x480bc857,
1167 0x480fc857, 0x592c0003, 0x80000540, 0x04000006,
1168 0x80080580, 0x04020004, 0x592c0003, 0x4803c857,
1169 0x480bc857, 0x480a5803, 0x592c0007, 0x800001c0,
1170 0x04000007, 0x592c1007, 0x480bc857, 0x583c0003,
1171 0x4803c857, 0x80080480, 0x04001003, 0x583c1001,
1172 0x480bc857, 0x583c0802, 0x480bc857, 0x4807c857,
1173 0x4a025801, 0x00000000, 0x4a025809, 0x001011bc,
1174 0x480a5807, 0x48065808, 0x59e40053, 0x48025804,
1175 0x412c1000, 0x492fc857, 0x0201f800, 0x00100858,
1176 0x5c025800, 0x4a03c800, 0x00000040, 0x1c01f000,
1177 0x42007800, 0x0010b7f7, 0x503c7800, 0x4a007802,
1178 0x00000100, 0x42007800, 0x0010b8ec, 0x583c0000,
1179 0x4803c857, 0x82000d80, 0x00000001, 0x04000004,
1180 0x80000000, 0x48007800, 0x0401f019, 0x49787800,
1181 0x583c1806, 0x583c0005, 0x800c1800, 0x480c7806,
1182 0x800c0580, 0x04020002, 0x49787806, 0x583c0807,
1183 0x800409c0, 0x0400000e, 0x583c0008, 0x80000000,
1184 0x48007808, 0x80040580, 0x04020009, 0x49787808,
1185 0x583c2006, 0x42001800, 0x00000001, 0x42001000,
1186 0x00008028, 0x0201f800, 0x00103a3e, 0x1c01f000,
1187 0x4a03c800, 0x00000020, 0x0201f800, 0x0010aa40,
1188 0x59e40000, 0x1c01f000, 0x4d2c0000, 0x4a007001,
1189 0x00000000, 0x82040d00, 0x43000f80, 0x02020800,
1190 0x001005d8, 0x58380009, 0x4803c00f, 0x0201f800,
1191 0x00109402, 0x583a5808, 0x592c0000, 0x48007008,
1192 0x800001c0, 0x04020002, 0x49787007, 0x0201f800,
1193 0x001007f4, 0x5c025800, 0x0201f000, 0x0010087d,
1194 0x4803c856, 0x4c3c0000, 0x4d2c0000, 0x4d300000,
1195 0x5830000a, 0x80025d40, 0x02000800, 0x001005d8,
1196 0x592e6008, 0x4c300000, 0x0201f800, 0x0010941a,
1197 0x5c006000, 0x02000800, 0x001005d8, 0x58300002,
1198 0x82000580, 0x00000100, 0x04020010, 0x5930780b,
1199 0x583c0001, 0x80000540, 0x0400000e, 0x4802600b,
1200 0x40007800, 0x82000400, 0x00000002, 0x48006003,
1201 0x583c0000, 0x48006004, 0x40301000, 0x0201f800,
1202 0x00100858, 0x0401f00c, 0x4a025a06, 0x00000002,
1203 0x4c300000, 0x0201f800, 0x000202da, 0x5c006000,
1204 0x40325800, 0x0201f800, 0x001007f4, 0x0201f800,
1205 0x0002077d, 0x5c026000, 0x5c025800, 0x5c007800,
1206 0x1c01f000, 0x4803c856, 0x4d2c0000, 0x4d300000,
1207 0x42007000, 0x0010b7f8, 0x58380801, 0x82040580,
1208 0x00000002, 0x04020011, 0x58386002, 0x5830000a,
1209 0x812c0580, 0x0402000d, 0x59e00004, 0x8c00050e,
1210 0x040007fe, 0x59dc0006, 0x4803c857, 0x4a03b805,
1211 0x20000000, 0x8c00053e, 0x040007f8, 0x4a007001,
1212 0x00000000, 0x0401f019, 0x58386006, 0x40305000,
1213 0x803061c0, 0x02000800, 0x001005d8, 0x5830000a,
1214 0x812c0580, 0x04000004, 0x40305000, 0x58306000,
1215 0x0401f7f8, 0x40280000, 0x80300580, 0x58300000,
1216 0x04000006, 0x48005000, 0x800001c0, 0x04020007,
1217 0x48287005, 0x0401f005, 0x800001c0, 0x04020002,
1218 0x48007005, 0x48007006, 0x40325800, 0x0201f800,
1219 0x001007f4, 0x42007000, 0x0010b7f8, 0x58380001,
1220 0x82000580, 0x00000000, 0x02000800, 0x0010087d,
1221 0x5c026000, 0x5c025800, 0x1c01f000, 0x4803c856,
1222 0x42000800, 0x0000003c, 0x48079000, 0x59c80000,
1223 0x80040500, 0x040207fe, 0x497b9005, 0x4a039035,
1224 0x00880200, 0x59a8000e, 0x800000e0, 0x4803900e,
1225 0x4a039011, 0x00000024, 0x4a03900f, 0x0010d1c0,
1226 0x4a039010, 0x0010d1c0, 0x4a039015, 0x0000007f,
1227 0x4a03900d, 0x00000040, 0x4a039000, 0x00001600,
1228 0x1c01f000, 0x59c80007, 0x8c000508, 0x040208b7,
1229 0x59c80800, 0x8c040d16, 0x04020004, 0x82000500,
1230 0x00000006, 0x0c01f005, 0x4807c857, 0x82000500,
1231 0x0000000e, 0x0c01f001, 0x001012a8, 0x001012a6,
1232 0x00105999, 0x001012a6, 0x001012aa, 0x001012a6,
1233 0x001012aa, 0x001012aa, 0x001012a6, 0x001012a6,
1234 0x001012a6, 0x001012a6, 0x001012aa, 0x001012a6,
1235 0x001012aa, 0x001012a6, 0x0201f800, 0x001005d8,
1236 0x4803c857, 0x1c01f000, 0x59c8080c, 0x4807c857,
1237 0x82040500, 0x00006000, 0x04000004, 0x0201f800,
1238 0x0010aa03, 0x0401f006, 0x82040500, 0x007f0000,
1239 0x04000006, 0x0201f800, 0x0010a9d5, 0x0201f800,
1240 0x00106eb3, 0x0401f02b, 0x82040500, 0x00000014,
1241 0x04000014, 0x0201f800, 0x0010aa32, 0x836c0580,
1242 0x00000003, 0x0400000d, 0x0201f800, 0x0010513b,
1243 0x04000004, 0x0201f800, 0x0010411d, 0x0401f007,
1244 0x4a035033, 0x00000001, 0x4202d800, 0x00000001,
1245 0x0201f800, 0x001050a2, 0x0401f817, 0x0401f015,
1246 0x82040500, 0x00001c00, 0x04000005, 0x0201f800,
1247 0x0010aa11, 0x0401f810, 0x0401f00e, 0x82040500,
1248 0x00000140, 0x04000005, 0x0201f800, 0x0010aa24,
1249 0x0401f809, 0x0401f007, 0x82040500, 0x00008000,
1250 0x04000004, 0x0201f800, 0x0010a9fc, 0x0401f802,
1251 0x1c01f000, 0x4c0c0000, 0x4c100000, 0x4c140000,
1252 0x0201f800, 0x00100ec9, 0x5c002800, 0x5c002000,
1253 0x5c001800, 0x1c01f000, 0x4803c856, 0x59a80804,
1254 0x59a8002b, 0x82000500, 0xfffff000, 0x80040540,
1255 0x4803502b, 0x59a8002f, 0x82000500, 0xfffff000,
1256 0x80040540, 0x4803502f, 0x48078882, 0x82041c00,
1257 0x0000000f, 0x800c1908, 0x820c1c00, 0x00000004,
1258 0x400c2000, 0x901029c0, 0x82040480, 0x000001e4,
1259 0x04021005, 0x42001000, 0x00000008, 0x801020c6,
1260 0x0401f031, 0x82040480, 0x00000230, 0x04021009,
1261 0x42001000, 0x00000007, 0x801000c2, 0x800000c2,
1262 0x80100400, 0x80100400, 0x80102400, 0x0401f026,
1263 0x82040480, 0x00000298, 0x04021008, 0x42001000,
1264 0x00000006, 0x801000c2, 0x800000c2, 0x80100400,
1265 0x80102400, 0x0401f01c, 0x82040480, 0x00000328,
1266 0x04021007, 0x42001000, 0x00000005, 0x801000c2,
1267 0x800000c2, 0x80102400, 0x0401f013, 0x82040480,
1268 0x00000404, 0x04021005, 0x42001000, 0x00000004,
1269 0x801020c4, 0x0401f00c, 0x82040480, 0x0000056c,
1270 0x04021006, 0x42001000, 0x00000003, 0x801000c2,
1271 0x80102400, 0x0401f004, 0x42001000, 0x00000002,
1272 0x801020c2, 0x82100480, 0x00000110, 0x80000080,
1273 0x80002000, 0x800800d0, 0x80140540, 0x80100540,
1274 0x48039035, 0x1c01f000, 0x59c80815, 0x0201f800,
1275 0x001005d0, 0x82040d00, 0x0000007c, 0x48079000,
1276 0x59c80000, 0x80040500, 0x040207fe, 0x8c040d04,
1277 0x04000003, 0x59c80035, 0x48039035, 0x59c80000,
1278 0x82000540, 0x00001200, 0x48039000, 0x1c01f000,
1279 0x4803c856, 0x497b88a9, 0x4a038807, 0x00000001,
1280 0x497b8807, 0x59c40005, 0x48038805, 0x0201f800,
1281 0x00101815, 0x4201d000, 0x000001f4, 0x0201f800,
1282 0x0010608e, 0x497b880e, 0x4200b000, 0x000001f4,
1283 0x42000000, 0x00000001, 0x42000800, 0x00000014,
1284 0x0201f800, 0x00101944, 0x42000800, 0x00000014,
1285 0x0201f800, 0x0010193f, 0x8c040d00, 0x04000005,
1286 0x8058b040, 0x040207f3, 0x0201f800, 0x001005d8,
1287 0x4200b000, 0x00000032, 0x42000000, 0x00000001,
1288 0x42000800, 0x000000b4, 0x0201f800, 0x00101944,
1289 0x42000800, 0x000000b4, 0x0201f800, 0x0010193f,
1290 0x8c040d00, 0x04000005, 0x8058b040, 0x040207f3,
1291 0x0201f800, 0x001005d8, 0x59c40005, 0x48038805,
1292 0x42000000, 0x00000089, 0x800008d0, 0x48075054,
1293 0x48075055, 0x48075056, 0x42000800, 0x000000e0,
1294 0x0201f800, 0x00101944, 0x42000800, 0x000000f4,
1295 0x0201f800, 0x0010193f, 0x82040500, 0xffffffd1,
1296 0x82000540, 0x00000002, 0x42000800, 0x000000f4,
1297 0x0201f800, 0x00101944, 0x42000800, 0x000000a0,
1298 0x0201f800, 0x0010193f, 0x82040540, 0x00000001,
1299 0x42000800, 0x000000a0, 0x0201f800, 0x00101944,
1300 0x42000800, 0x00000000, 0x0201f800, 0x0010193f,
1301 0x82040540, 0x00000001, 0x42000800, 0x00000000,
1302 0x0201f800, 0x00101944, 0x4201d000, 0x0001d4c0,
1303 0x0201f800, 0x0010608e, 0x0401fa2b, 0x4a0388a7,
1304 0x0000f7f7, 0x4a0388a3, 0x8000403c, 0x4a0388ae,
1305 0x000061a8, 0x4a038801, 0x00032063, 0x4a038810,
1306 0x00410108, 0x4a038811, 0x00520608, 0x4a038812,
1307 0x00450320, 0x4a038813, 0x00440405, 0x4a03881c,
1308 0x004132e1, 0x4a038850, 0x80000108, 0x4a038860,
1309 0x00000008, 0x4a038870, 0x00000008, 0x4a038851,
1310 0x80000508, 0x4a038861, 0x00800000, 0x4a038871,
1311 0x00800000, 0x4a038852, 0x80000708, 0x4a038862,
1312 0x00800000, 0x4a038872, 0x00800000, 0x4a038853,
1313 0x80000608, 0x497b8863, 0x4a038873, 0x00800000,
1314 0x4a038882, 0x00000840, 0x4a0388a5, 0x0000001e,
1315 0x4a0388a6, 0x0000001e, 0x4a0388b0, 0x00007530,
1316 0x4a038802, 0x0000ffff, 0x4a038806, 0xc0e00800,
1317 0x1c01f000, 0x497b5022, 0x4a035021, 0x00000001,
1318 0x42000800, 0x00000040, 0x0201f800, 0x0010193f,
1319 0x82040500, 0xffffffaf, 0x82000540, 0x00000000,
1320 0x42000800, 0x00000040, 0x0201f800, 0x00101944,
1321 0x42000800, 0x000000f4, 0x0201f800, 0x0010193f,
1322 0x4c040000, 0x40040000, 0x84000548, 0x42000800,
1323 0x000000f4, 0x0201f800, 0x00101944, 0x42000800,
1324 0x00000000, 0x0201f800, 0x0010193f, 0x82040500,
1325 0xffffffc1, 0x82000540, 0x00000038, 0x42000800,
1326 0x00000000, 0x0201f800, 0x00101944, 0x5c000000,
1327 0x42000800, 0x000000f4, 0x0201f000, 0x00101944,
1328 0x59c40805, 0x4807c857, 0x59c40006, 0x80040d00,
1329 0x02000800, 0x001005d8, 0x82040500, 0x00e00800,
1330 0x04020004, 0x8c040d3e, 0x040208c4, 0x0401f007,
1331 0x82040500, 0x00800800, 0x02020800, 0x001005d0,
1332 0x0201f800, 0x001005d8, 0x4c5c0000, 0x4c600000,
1333 0x59c4b805, 0x485fc857, 0x59c40006, 0x8c000500,
1334 0x04000003, 0x8c5cbd00, 0x04020079, 0x0201f800,
1335 0x0010513b, 0x04000014, 0x59c40005, 0x82000500,
1336 0x000000c0, 0x04000036, 0x0201f800, 0x00105151,
1337 0x04020033, 0x4a038805, 0x04000000, 0x59c400a3,
1338 0x82000500, 0xbf203fff, 0x480388a3, 0x497b5049,
1339 0x4a038805, 0x000000c0, 0x0201f800, 0x00105065,
1340 0x0401f063, 0x8c5cbd34, 0x04020025, 0x59c40005,
1341 0x8c00050c, 0x04020012, 0x8c00050e, 0x04020013,
1342 0x8c00050a, 0x04020014, 0x8c000508, 0x0400000b,
1343 0x59a80017, 0x82000580, 0x00000009, 0x04020007,
1344 0x42000000, 0x0010b844, 0x0201f800, 0x0010aa47,
1345 0x0201f800, 0x00105318, 0x0401f04b, 0x4a035033,
1346 0x00000000, 0x0401f00b, 0x4a035033, 0x00000002,
1347 0x0401f008, 0x42000000, 0x0010b846, 0x0201f800,
1348 0x0010aa47, 0x0201f800, 0x001052c2, 0x0401f03e,
1349 0x0201f800, 0x00105378, 0x0401f03b, 0x8c5cbd34,
1350 0x04000037, 0x59c40005, 0x8c00053a, 0x04020005,
1351 0x42000000, 0x0010b818, 0x0201f800, 0x0010aa47,
1352 0x4a038805, 0x02000000, 0x0201f800, 0x0010513b,
1353 0x04020010, 0x4a038805, 0x04000000, 0x0201f800,
1354 0x00105149, 0x04020008, 0x4a035033, 0x00000001,
1355 0x4202d800, 0x00000001, 0x0201f800, 0x001050a2,
1356 0x0401f05b, 0x41780000, 0x0201f800, 0x00105113,
1357 0x0201f800, 0x001019fe, 0x4000c000, 0x0201f800,
1358 0x00101963, 0x836c1580, 0x00000004, 0x0402000d,
1359 0x8c5cbd00, 0x04020012, 0x59a81005, 0x8c081506,
1360 0x04020005, 0x59c410a3, 0x82081540, 0x00000008,
1361 0x480b88a3, 0x59c41006, 0x84081540, 0x480b8806,
1362 0x4a038805, 0x04000000, 0x4202d800, 0x00000001,
1363 0x497b5014, 0x0201f800, 0x00103b38, 0x8c5cbd3c,
1364 0x04020858, 0x8c5cbd00, 0x04000036, 0x42000000,
1365 0x0010b8ca, 0x0201f800, 0x0010aa47, 0x4a038805,
1366 0x00000001, 0x4200b000, 0x000003e8, 0x4201d000,
1367 0x00000064, 0x4c580000, 0x0201f800, 0x0010608e,
1368 0x0201f800, 0x001018d3, 0x5c00b000, 0x04000004,
1369 0x8058b040, 0x040207f6, 0x0401f004, 0x4a038805,
1370 0x00000001, 0x0401f01f, 0x59c40006, 0x84000500,
1371 0x48038806, 0x0201f800, 0x00106ede, 0x497b8880,
1372 0x0201f800, 0x0010a9c0, 0x59c4000d, 0x8c000500,
1373 0x02020800, 0x0010a9ce, 0x59c400a3, 0x82000500,
1374 0xfcf8ffff, 0x480388a3, 0x4a03504c, 0x00000002,
1375 0x4202d800, 0x00000004, 0x4a038805, 0x00000001,
1376 0x0201f800, 0x001006d4, 0x0401fb3b, 0x497b5052,
1377 0x4a035049, 0x00000001, 0x0201f800, 0x00100452,
1378 0x825cbd00, 0xbbfffffe, 0x485f8805, 0x5c00c000,
1379 0x5c00b800, 0x1c01f000, 0x59c41004, 0x480bc857,
1380 0x8c081500, 0x04000006, 0x4803c856, 0x497b2807,
1381 0x0201f800, 0x00106fa4, 0x0401f00a, 0x82080500,
1382 0x000001f0, 0x04000007, 0x4803c856, 0x417a3000,
1383 0x0201f800, 0x00106062, 0x0201f800, 0x00106fc6,
1384 0x4a038805, 0x80000000, 0x1c01f000, 0x59c408a3,
1385 0x4807c857, 0x84040d40, 0x480788a3, 0x1c01f000,
1386 0x4d900000, 0x4dd00000, 0x4da40000, 0x4d140000,
1387 0x4a038805, 0x40000000, 0x42000000, 0x0010b8c6,
1388 0x0201f800, 0x0010aa47, 0x0201f800, 0x00106c55,
1389 0x59c41004, 0x8c081500, 0x04000054, 0x598e600d,
1390 0x497b2807, 0x813261c0, 0x04000032, 0x59300403,
1391 0x82000580, 0x00000032, 0x0402002e, 0x5930001c,
1392 0x48038833, 0x4a038807, 0x00018000, 0x4201d000,
1393 0x00000002, 0x0201f800, 0x0010608e, 0x497b8807,
1394 0x4201d000, 0x00000002, 0x0201f800, 0x0010608e,
1395 0x0201f800, 0x00106e21, 0x4201d000, 0x00007530,
1396 0x0201f800, 0x0010608e, 0x59c408a4, 0x82040d00,
1397 0x0000000f, 0x82040d80, 0x00000000, 0x04000005,
1398 0x42000000, 0x00200000, 0x0201f800, 0x00101949,
1399 0x0201f800, 0x00106bbf, 0x59300008, 0x80000540,
1400 0x02000800, 0x001005d8, 0x40025800, 0x4a025a04,
1401 0x00000103, 0x5931d821, 0x58ef400b, 0x58ec0009,
1402 0x0801f800, 0x0201f800, 0x0002077d, 0x0401f047,
1403 0x598c000f, 0x82001c80, 0x000000c8, 0x0402100f,
1404 0x80000000, 0x4803180f, 0x59c400a4, 0x82000500,
1405 0x0000000f, 0x82000580, 0x00000002, 0x04020004,
1406 0x42000000, 0x00200000, 0x0401fbf7, 0x0201f800,
1407 0x0010604d, 0x0401f035, 0x4933c857, 0x0201f800,
1408 0x00106e21, 0x813261c0, 0x04000030, 0x4a026203,
1409 0x00000001, 0x42027000, 0x00000027, 0x0201f800,
1410 0x000207a1, 0x0401f029, 0x8c081508, 0x04000027,
1411 0x417a3000, 0x0201f800, 0x001070d8, 0x42032000,
1412 0x0000bf32, 0x0201f800, 0x00106062, 0x59926004,
1413 0x813261c0, 0x04000012, 0x42001800, 0x000000c8,
1414 0x0201f800, 0x001070a4, 0x0402000d, 0x59c400a4,
1415 0x82000500, 0x0000000f, 0x82000580, 0x00000002,
1416 0x04020004, 0x42000000, 0x00200000, 0x0401fbce,
1417 0x0201f800, 0x00106052, 0x0401f00c, 0x4933c857,
1418 0x0201f800, 0x00106dc3, 0x813261c0, 0x04000007,
1419 0x42027000, 0x0000004f, 0x4a026203, 0x00000003,
1420 0x0201f800, 0x000207a1, 0x5c022800, 0x5c034800,
1421 0x5c03a000, 0x5c032000, 0x0201f000, 0x00106c4b,
1422 0x4803c857, 0x59a80821, 0x48035021, 0x80041580,
1423 0x04000045, 0x800409c0, 0x04000023, 0x497b504c,
1424 0x42000000, 0x0010b80d, 0x0201f800, 0x0010aa47,
1425 0x0201f800, 0x0010aaf9, 0x42001000, 0x00008011,
1426 0x59c40001, 0x82000500, 0x00018000, 0x82001d80,
1427 0x00000000, 0x04000009, 0x82001d80, 0x00008000,
1428 0x04000009, 0x82001d80, 0x00010000, 0x04000009,
1429 0x0201f800, 0x001005d8, 0x42001800, 0x00000000,
1430 0x0401f006, 0x42001800, 0x00000001, 0x0401f003,
1431 0x42001800, 0x00000003, 0x0201f800, 0x00103a3e,
1432 0x0401f021, 0x59a8084c, 0x800409c0, 0x04020007,
1433 0x59c4000d, 0x8c000520, 0x04000004, 0x42001800,
1434 0x00000003, 0x0401f002, 0x40041800, 0x0201f800,
1435 0x0010aadd, 0x42001000, 0x00008012, 0x0201f800,
1436 0x00103a3e, 0x0201f800, 0x001006d4, 0x0201f800,
1437 0x0010ab33, 0x0402000c, 0x0401f853, 0x4d400000,
1438 0x4d3c0000, 0x42028000, 0x00000028, 0x42027800,
1439 0x00000408, 0x0201f800, 0x00101fe5, 0x5c027800,
1440 0x5c028000, 0x1c01f000, 0x4803c857, 0x82000400,
1441 0x0010210e, 0x50000800, 0x82040d00, 0x000000ff,
1442 0x1c01f000, 0x4803c856, 0x4c580000, 0x4200b000,
1443 0x00000010, 0x497b88ac, 0x497b88ad, 0x8058b040,
1444 0x040207fe, 0x5c00b000, 0x1c01f000, 0x4807c857,
1445 0x48075010, 0x80041108, 0x4200b000, 0x00000010,
1446 0x497b88ac, 0x80000580, 0x800811c0, 0x04020006,
1447 0x82040500, 0x0000000f, 0x82000400, 0x0010ab38,
1448 0x50000000, 0x480388ad, 0x80081040, 0x8058b040,
1449 0x040207f5, 0x1c01f000, 0x59a80005, 0x04000003,
1450 0x84000546, 0x0401f002, 0x84000506, 0x48035005,
1451 0x4803c857, 0x1c01f000, 0x4803c857, 0x4c080000,
1452 0x4c040000, 0x4c000000, 0x59c40892, 0x4807c857,
1453 0x80041580, 0x04000010, 0x80041480, 0x04021007,
1454 0x80081080, 0x80081000, 0x4008b000, 0x42000000,
1455 0x00000201, 0x0401f004, 0x4008b000, 0x42000000,
1456 0x00000210, 0x48038886, 0x8058b040, 0x040207fe,
1457 0x497b8886, 0x5c000000, 0x5c000800, 0x5c001000,
1458 0x1c01f000, 0x4803c856, 0x0201f800, 0x00103b25,
1459 0x04000005, 0x42028000, 0x0000002e, 0x0201f000,
1460 0x0010a449, 0x1c01f000, 0x42000800, 0x00000002,
1461 0x59a80005, 0x8c000514, 0x0402000b, 0x59c80835,
1462 0x82040d00, 0x00001f00, 0x80040910, 0x80040800,
1463 0x59a8006c, 0x80000540, 0x04000003, 0x42000800,
1464 0x0000025a, 0x4807c857, 0x1c01f000, 0x4c000000,
1465 0x59a80053, 0x4803c857, 0x82000580, 0x00000000,
1466 0x5c000000, 0x1c01f000, 0x4c000000, 0x59a80053,
1467 0x4803c857, 0x82000580, 0x00000001, 0x5c000000,
1468 0x1c01f000, 0x4c000000, 0x59a80053, 0x4803c857,
1469 0x82000580, 0x00000003, 0x5c000000, 0x1c01f000,
1470 0x4c000000, 0x59a80053, 0x82000580, 0x00000002,
1471 0x5c000000, 0x1c01f000, 0x4c000000, 0x4c040000,
1472 0x4c080000, 0x4c380000, 0x59a80040, 0x82000c80,
1473 0x00000007, 0x02021800, 0x001005d8, 0x0c01f806,
1474 0x5c007000, 0x5c001000, 0x5c000800, 0x5c000000,
1475 0x1c01f000, 0x0010166c, 0x0010167f, 0x00101693,
1476 0x00101695, 0x001016bc, 0x001016be, 0x001016c0,
1477 0x4803c856, 0x4a035042, 0x00000000, 0x42000000,
1478 0x00000002, 0x0401fa1b, 0x42000000, 0x00000002,
1479 0x0401f9ad, 0x0401fab2, 0x4803c856, 0x4a035040,
1480 0x00000006, 0x42000800, 0x0000001e, 0x42001000,
1481 0x001016c1, 0x0201f000, 0x0010606e, 0x497b5045,
1482 0x4a035050, 0x00000036, 0x4a03504f, 0x0000002a,
1483 0x4803c856, 0x4a035042, 0x00000001, 0x42000000,
1484 0x00000002, 0x0401f998, 0x4803c856, 0x4a035040,
1485 0x00000006, 0x42000800, 0x0000001e, 0x42001000,
1486 0x001016c1, 0x0201f000, 0x0010606e, 0x0201f800,
1487 0x001005d8, 0x4a035050, 0x00000036, 0x4803c856,
1488 0x4a035042, 0x00000003, 0x42000800, 0x00000000,
1489 0x0401faa3, 0x82040d00, 0x00000090, 0x82040580,
1490 0x00000090, 0x04000009, 0x82040580, 0x00000010,
1491 0x04000009, 0x82040580, 0x00000000, 0x04000008,
1492 0x0201f800, 0x001005d8, 0x42000000, 0x00000001,
1493 0x0401f005, 0x41780000, 0x0401f003, 0x42000000,
1494 0x00000002, 0x0401f970, 0x497b5046, 0x4803c856,
1495 0x4a035040, 0x00000006, 0x42000800, 0x0000001e,
1496 0x42001000, 0x001016c1, 0x0201f000, 0x0010606e,
1497 0x0201f800, 0x001005d8, 0x0201f800, 0x001005d8,
1498 0x1c01f000, 0x4c000000, 0x4c040000, 0x4c080000,
1499 0x4c380000, 0x59a80042, 0x82000c80, 0x00000007,
1500 0x02021800, 0x001005d8, 0x0c01f806, 0x5c007000,
1501 0x5c001000, 0x5c000800, 0x5c000000, 0x1c01f000,
1502 0x001016d7, 0x001016f6, 0x0010174a, 0x00101761,
1503 0x00101778, 0x00101781, 0x00101783, 0x0401f9fc,
1504 0x0402001b, 0x59a81048, 0x42000800, 0x00000000,
1505 0x0401fa63, 0x82040d00, 0x00000090, 0x82040580,
1506 0x00000090, 0x04000009, 0x82040580, 0x00000010,
1507 0x04000008, 0x82040580, 0x00000000, 0x04000007,
1508 0x0201f800, 0x001005d8, 0x84081540, 0x0401f004,
1509 0x84081542, 0x0401f002, 0x84081544, 0x480b5048,
1510 0x4a035040, 0x00000001, 0x0401f003, 0x0401f8cb,
1511 0x0401ff82, 0x1c01f000, 0x0401f88f, 0x04000052,
1512 0x0401f9db, 0x0402002a, 0x42000800, 0x00000000,
1513 0x0401fa43, 0x82040d00, 0x00000090, 0x82040580,
1514 0x00000000, 0x04000044, 0x82040580, 0x00000010,
1515 0x04000006, 0x82040580, 0x00000090, 0x04000009,
1516 0x0201f800, 0x001005d8, 0x59c40801, 0x82040d00,
1517 0x00018000, 0x82040580, 0x00000000, 0x04000036,
1518 0x42000800, 0x00000000, 0x0401fa2d, 0x82040d00,
1519 0x00000090, 0x82040580, 0x00000010, 0x04000006,
1520 0x82040580, 0x00000090, 0x04000006, 0x02020800,
1521 0x001005d8, 0x59a80048, 0x84000542, 0x0401f003,
1522 0x59a80048, 0x84000540, 0x48035048, 0x59a80045,
1523 0x80000000, 0x48035045, 0x82000580, 0x00000005,
1524 0x04000003, 0x0401f861, 0x0401f01e, 0x497b5045,
1525 0x59c40801, 0x82040d00, 0x00018000, 0x82040580,
1526 0x00000000, 0x04000009, 0x82040580, 0x00008000,
1527 0x04000009, 0x82040580, 0x00010000, 0x04000008,
1528 0x0201f800, 0x001005d8, 0x42000000, 0x00000001,
1529 0x0401f005, 0x41780000, 0x0401f003, 0x42000000,
1530 0x00000002, 0x0401f94b, 0x4a035042, 0x00000002,
1531 0x0401f004, 0x4a035040, 0x00000003, 0x0401f002,
1532 0x0401ff42, 0x1c01f000, 0x0401f83b, 0x04000015,
1533 0x59a8004f, 0x80000040, 0x4803504f, 0x0401f984,
1534 0x04020005, 0x4a035040, 0x00000003, 0x497b5041,
1535 0x0401f00c, 0x59a8004f, 0x80000540, 0x04020003,
1536 0x0401f89e, 0x0401f002, 0x0401f84b, 0x0401f82f,
1537 0x497b5045, 0x4a035042, 0x00000001, 0x0401ff2b,
1538 0x1c01f000, 0x0401f824, 0x04000015, 0x0401f970,
1539 0x0402000f, 0x59a80046, 0x80000000, 0x48035046,
1540 0x82000580, 0x00000007, 0x0402000c, 0x4a035052,
1541 0x0000000a, 0x497b5049, 0x59a80048, 0x8400055e,
1542 0x48035048, 0x4803c857, 0x0401f005, 0x0401f817,
1543 0x4a035042, 0x00000004, 0x0401ff3d, 0x1c01f000,
1544 0x0401f80d, 0x04000007, 0x0401f959, 0x04020003,
1545 0x0401ff1b, 0x0401f003, 0x0401f80c, 0x0401ff34,
1546 0x1c01f000, 0x0201f800, 0x001005d8, 0x0201f800,
1547 0x001005d8, 0x59a80050, 0x80000040, 0x48035050,
1548 0x0400088d, 0x1c01f000, 0x4c040000, 0x42000800,
1549 0x00000000, 0x0401f9b2, 0x82040d00, 0x00000090,
1550 0x82040580, 0x00000090, 0x04000009, 0x82040580,
1551 0x00000010, 0x04000009, 0x82040580, 0x00000000,
1552 0x04000009, 0x0201f800, 0x001005d8, 0x42000000,
1553 0x00000002, 0x0401f005, 0x42000000, 0x00000001,
1554 0x0401f002, 0x41780000, 0x0401f8ea, 0x5c000800,
1555 0x1c01f000, 0x4c040000, 0x59c40801, 0x82040d00,
1556 0x00018000, 0x82040580, 0x00000000, 0x04000009,
1557 0x82040580, 0x00008000, 0x04000009, 0x82040580,
1558 0x00010000, 0x04000009, 0x0201f800, 0x001005d8,
1559 0x42000000, 0x00000002, 0x0401f005, 0x42000000,
1560 0x00000001, 0x0401f002, 0x41780000, 0x0401f866,
1561 0x5c000800, 0x1c01f000, 0x4c040000, 0x59a80045,
1562 0x80000000, 0x48035045, 0x82000580, 0x00000005,
1563 0x04020018, 0x497b5045, 0x59c40801, 0x82040d00,
1564 0x00018000, 0x82040580, 0x00000000, 0x04000009,
1565 0x82040580, 0x00008000, 0x04000009, 0x82040580,
1566 0x00010000, 0x04000009, 0x0201f800, 0x001005d8,
1567 0x42000000, 0x00000002, 0x0401f005, 0x42000000,
1568 0x00000001, 0x0401f002, 0x41780000, 0x0401f846,
1569 0x42000800, 0x00000000, 0x0401f961, 0x82040d00,
1570 0x00000090, 0x82040580, 0x00000090, 0x04000009,
1571 0x82040580, 0x00000010, 0x04000009, 0x82040580,
1572 0x00000000, 0x04000009, 0x0201f800, 0x001005d8,
1573 0x42000000, 0x00000002, 0x0401f005, 0x42000000,
1574 0x00000001, 0x0401f002, 0x41780000, 0x0401f899,
1575 0x5c000800, 0x1c01f000, 0x4c200000, 0x59a80048,
1576 0x82000500, 0x00007fff, 0x02000800, 0x001005d8,
1577 0x59a84047, 0x80204102, 0x02001800, 0x001005d8,
1578 0x48235047, 0x80204500, 0x040007fa, 0x8c000504,
1579 0x04020007, 0x8c000502, 0x04020008, 0x8c000500,
1580 0x04020008, 0x0201f800, 0x001005d8, 0x42000000,
1581 0x00000002, 0x0401f005, 0x41780000, 0x0401f003,
1582 0x42000000, 0x00000001, 0x0401f80f, 0x5c004000,
1583 0x1c01f000, 0x04011000, 0x4a03c840, 0x0010b440,
1584 0x4a03c842, 0x00000009, 0x40000000, 0x040117ff,
1585 0x4a035047, 0x00000004, 0x4a03503e, 0x00000000,
1586 0x1c01f000, 0x59a80858, 0x82040d80, 0x01391077,
1587 0x04020008, 0x59e00813, 0x8c040d00, 0x04000005,
1588 0x82000d80, 0x00000002, 0x04020002, 0x41780000,
1589 0x4c000000, 0x0401f9b1, 0x5c000000, 0x800001c0,
1590 0x04000040, 0x82000d80, 0x00000001, 0x0402001d,
1591 0x42000800, 0x000000a0, 0x0401f909, 0x82040540,
1592 0x00000004, 0x42000800, 0x000000a0, 0x0401f909,
1593 0x42000800, 0x000000c0, 0x0401f901, 0x82040540,
1594 0x00000020, 0x42000800, 0x000000c0, 0x0401f901,
1595 0x59c40001, 0x82000500, 0xfffe7fff, 0x82000540,
1596 0x00000000, 0x48038801, 0x59a80054, 0x80000110,
1597 0x42000800, 0x000000e0, 0x0401f8f6, 0x0401f03c,
1598 0x82000d80, 0x00000002, 0x02020800, 0x001005d8,
1599 0x42000800, 0x000000a0, 0x0401f8e9, 0x82040500,
1600 0xfffffffb, 0x42000800, 0x000000a0, 0x0401f8e9,
1601 0x42000800, 0x000000c0, 0x0401f8e1, 0x82040500,
1602 0xffffffdf, 0x42000800, 0x000000c0, 0x0401f8e1,
1603 0x59c40001, 0x82000500, 0xfffe7fff, 0x82000540,
1604 0x00010000, 0x48038801, 0x59a80056, 0x80000110,
1605 0x42000800, 0x000000e0, 0x0401f8d6, 0x0401f01c,
1606 0x42000800, 0x000000a0, 0x0401f8cd, 0x82040540,
1607 0x00000004, 0x42000800, 0x000000a0, 0x0401f8cd,
1608 0x42000800, 0x000000c0, 0x0401f8c5, 0x82040500,
1609 0xffffffdf, 0x42000800, 0x000000c0, 0x0401f8c5,
1610 0x59c40001, 0x82000500, 0xfffe7fff, 0x82000540,
1611 0x00008000, 0x48038801, 0x59a80055, 0x80000110,
1612 0x42000800, 0x000000e0, 0x0401f8ba, 0x0401f163,
1613 0x4803c857, 0x59a80858, 0x82040d80, 0x01391077,
1614 0x04020008, 0x59e00813, 0x8c040d00, 0x04000005,
1615 0x82000d80, 0x00000002, 0x04020002, 0x41780000,
1616 0x4c000000, 0x0401f94d, 0x5c000000, 0x800001c0,
1617 0x04000026, 0x82000d80, 0x00000001, 0x04020010,
1618 0x59a8006c, 0x80000540, 0x04000004, 0x42001000,
1619 0x00000000, 0x0401fa0a, 0x42000800, 0x00000000,
1620 0x0401f897, 0x82040540, 0x00000090, 0x42000800,
1621 0x00000000, 0x0401f897, 0x0401f024, 0x82000d80,
1622 0x00000002, 0x02020800, 0x001005d8, 0x59a8006c,
1623 0x80000540, 0x04000004, 0x42001000, 0x00010000,
1624 0x0401f9f7, 0x42000800, 0x00000000, 0x0401f884,
1625 0x82040500, 0xffffff6f, 0x42000800, 0x00000000,
1626 0x0401f884, 0x0401f011, 0x59a8006c, 0x80000540,
1627 0x04000004, 0x42001000, 0x00008000, 0x0401f9e8,
1628 0x42000800, 0x00000000, 0x0401f875, 0x82040500,
1629 0xffffff6f, 0x82000540, 0x00000010, 0x42000800,
1630 0x00000000, 0x0401f873, 0x0401f124, 0x4c580000,
1631 0x4200b000, 0x00000014, 0x8058b040, 0x04000043,
1632 0x59c4000d, 0x8c000520, 0x040207fc, 0x0401f85c,
1633 0x59c4000d, 0x8c000520, 0x040207f8, 0x59c40808,
1634 0x84040d50, 0x48078808, 0x4200b000, 0x000000c8,
1635 0x8058b040, 0x040207ff, 0x4200b000, 0x00000014,
1636 0x8058b040, 0x04000031, 0x59c4000d, 0x8c000520,
1637 0x0402002e, 0x42000800, 0x00001000, 0x50040800,
1638 0x82040c80, 0x24220001, 0x04020003, 0x8c000504,
1639 0x040007f4, 0x0401f842, 0x59c4000d, 0x8c000520,
1640 0x04020022, 0x42000800, 0x00001000, 0x50040800,
1641 0x82040c80, 0x24220001, 0x04020003, 0x8c000504,
1642 0x040007e8, 0x4200b000, 0x0000000a, 0x8058b040,
1643 0x04000003, 0x0401f832, 0x0401f7fd, 0x4200b000,
1644 0x00000064, 0x59c4000d, 0x8c00051e, 0x0400000f,
1645 0x8058b040, 0x040207fc, 0x42000000, 0x00001000,
1646 0x50000000, 0x82000480, 0x24220001, 0x04020004,
1647 0x59c40808, 0x84040d10, 0x48078808, 0x80000580,
1648 0x4803c857, 0x0401f00c, 0x42000000, 0x00001000,
1649 0x50000000, 0x82000480, 0x24220001, 0x04020004,
1650 0x59c40808, 0x84040d10, 0x48078808, 0x82000540,
1651 0x00000001, 0x5c00b000, 0x1c01f000, 0x42000800,
1652 0x000000a0, 0x0401f816, 0x82040500, 0xfffffffe,
1653 0x42000800, 0x000000a0, 0x0401f816, 0x42000800,
1654 0x00000000, 0x0401f80e, 0x82040500, 0xfffffffe,
1655 0x42000800, 0x00000000, 0x0401f00e, 0x40000000,
1656 0x40000000, 0x40000000, 0x40000000, 0x40000000,
1657 0x1c01f000, 0x480b8805, 0x1c01f000, 0x4807880e,
1658 0x59c4080f, 0x82040d00, 0x000000ff, 0x1c01f000,
1659 0x900001c0, 0x80040d40, 0x84040d40, 0x4807880e,
1660 0x1c01f000, 0x82000d80, 0x00200000, 0x04000009,
1661 0x82000d80, 0x02000000, 0x04000006, 0x82000d80,
1662 0x01000000, 0x04000006, 0x59c408a3, 0x0401f006,
1663 0x59c408a3, 0x84040d30, 0x0401f003, 0x59c408a3,
1664 0x84040d32, 0x80040540, 0x480388a3, 0x480788a3,
1665 0x1c01f000, 0x59c400a3, 0x84000556, 0x480388a3,
1666 0x84000516, 0x480388a3, 0x1c01f000, 0x485fc857,
1667 0x4863c857, 0x4c640000, 0x4d3c0000, 0x4d400000,
1668 0x0201f800, 0x00106ede, 0x4863500a, 0x0201f800,
1669 0x0010ab33, 0x0402006c, 0x82600d00, 0x0000ff00,
1670 0x800409c0, 0x0400000c, 0x4200c800, 0x00000001,
1671 0x59a80010, 0x82000500, 0x000000ff, 0x80041110,
1672 0x80081580, 0x04000021, 0x82041580, 0x0000ff00,
1673 0x0400000a, 0x59c410a3, 0x82081500, 0x00008000,
1674 0x04000009, 0x59c410a7, 0x82081500, 0x0000ff00,
1675 0x82081580, 0x0000ff00, 0x4200c800, 0x00000000,
1676 0x04000012, 0x59a80005, 0x8c000502, 0x04020008,
1677 0x8c000500, 0x0402000d, 0x599c1017, 0x8c08151a,
1678 0x0400003e, 0x84000542, 0x48035005, 0x4200c800,
1679 0x00000002, 0x42028000, 0x00000004, 0x42027800,
1680 0x00000008, 0x0401f008, 0x59a80805, 0x84040d40,
1681 0x48075005, 0x42028000, 0x00000004, 0x42027800,
1682 0x00000400, 0x59a80006, 0x8c000502, 0x04020006,
1683 0x59a80805, 0x8c040d0a, 0x04020033, 0x84040d4a,
1684 0x48075005, 0x42000000, 0x0010b812, 0x0201f800,
1685 0x0010aa47, 0x59a8180a, 0x42001000, 0x00008013,
1686 0x0201f800, 0x00103a3e, 0x0201f800, 0x00103b25,
1687 0x04000015, 0x4d400000, 0x82600500, 0x000000ff,
1688 0x42028800, 0x0000ffff, 0x40643000, 0x42028000,
1689 0x0000000e, 0x0201f800, 0x0010a446, 0x42000800,
1690 0x00000001, 0x42001000, 0x00000100, 0x0201f800,
1691 0x0010618b, 0x5c028000, 0x599c0817, 0x8c040d0a,
1692 0x04020011, 0x493fc857, 0x4943c857, 0x0201f800,
1693 0x00101fe5, 0x0401f00c, 0x0201f800, 0x00103b25,
1694 0x04000009, 0x42028000, 0x0000000f, 0x42028800,
1695 0x0000ffff, 0x42003000, 0x00000000, 0x0201f800,
1696 0x0010a449, 0x497b8880, 0x5c028000, 0x5c027800,
1697 0x5c00c800, 0x1c01f000, 0x42000800, 0x000000a0,
1698 0x0401ff5f, 0x82040540, 0x00000002, 0x42000800,
1699 0x000000a0, 0x0401f75f, 0x42000800, 0x00000000,
1700 0x0401ff57, 0x82040540, 0x00000002, 0x42000800,
1701 0x00000000, 0x0401f757, 0x42000800, 0x000000a0,
1702 0x0401ff4f, 0x82040500, 0xfffffffd, 0x42000800,
1703 0x000000a0, 0x0401f74f, 0x42000800, 0x00000000,
1704 0x0401ff47, 0x82040500, 0xfffffffd, 0x42000800,
1705 0x00000000, 0x0401f747, 0x59c408a8, 0x0401ff38,
1706 0x0401ff37, 0x59c400a8, 0x80040d80, 0x040207fb,
1707 0x1c01f000, 0x4803c856, 0x4a038807, 0x00000001,
1708 0x497b8807, 0x59c40005, 0x48038805, 0x497b506c,
1709 0x497b506d, 0x41785800, 0x42006000, 0x00000001,
1710 0x42006800, 0x00000003, 0x0401f824, 0x0401f82f,
1711 0x40400000, 0x4803c857, 0x82408580, 0x00000000,
1712 0x0402001d, 0x41785800, 0x42006000, 0x0000001e,
1713 0x42006800, 0x00000014, 0x0401f818, 0x0401f823,
1714 0x40400000, 0x4803c857, 0x82408580, 0x00000800,
1715 0x04020011, 0x42005800, 0x00000001, 0x42006000,
1716 0x0000001e, 0x42006800, 0x00000014, 0x0401f80b,
1717 0x0401f816, 0x40400000, 0x4803c857, 0x82408580,
1718 0x0000ffff, 0x04020004, 0x4a03506c, 0x00000001,
1719 0x4803c856, 0x1c01f000, 0x41785000, 0x0401f812,
1720 0x0401f838, 0x40347000, 0x40340800, 0x0401f03d,
1721 0x42005000, 0x00000001, 0x0401f80b, 0x0401f831,
1722 0x40340800, 0x0401f037, 0x42005000, 0x00000002,
1723 0x0401f805, 0x0401f81d, 0x0401f835, 0x40048000,
1724 0x1c01f000, 0x0401f808, 0x0401f814, 0x40280800,
1725 0x0401f826, 0x402c0800, 0x0401f827, 0x40300800,
1726 0x0401f025, 0x42000800, 0x0000ffff, 0x42001000,
1727 0x00000001, 0x0401f829, 0x42001000, 0x00000010,
1728 0x0401f826, 0x42000800, 0x0000ffff, 0x42001000,
1729 0x00000010, 0x0401f021, 0x41780800, 0x42001000,
1730 0x00000002, 0x0401f01d, 0x0401f92e, 0x4a03d000,
1731 0x00050004, 0x0401f92b, 0x4a03d000, 0x00050005,
1732 0x0401f928, 0x4a03d000, 0x00050004, 0x42000800,
1733 0x00000001, 0x42001000, 0x00000001, 0x0401f00f,
1734 0x42000800, 0x00000002, 0x42001000, 0x00000002,
1735 0x0401f00a, 0x42001000, 0x00000005, 0x0401f007,
1736 0x42001000, 0x00000010, 0x0401f004, 0x42001000,
1737 0x00000010, 0x0401f01b, 0x0401f912, 0x82082c00,
1738 0x0010ab38, 0x50142800, 0x82081500, 0xffffffff,
1739 0x04000013, 0x0401f90b, 0x80081040, 0x80142902,
1740 0x40040000, 0x80140500, 0x04000007, 0x4a03d000,
1741 0x00070006, 0x0401f903, 0x4a03d000, 0x00070007,
1742 0x0401f006, 0x4a03d000, 0x00070004, 0x0401f8fd,
1743 0x4a03d000, 0x00070005, 0x0401f7ec, 0x1c01f000,
1744 0x41780800, 0x82082c00, 0x0010ab38, 0x50142800,
1745 0x82081500, 0xffffffff, 0x04000010, 0x0401f8f1,
1746 0x4a03d000, 0x00050001, 0x0401f8ee, 0x59e81800,
1747 0x80081040, 0x80142902, 0x8c0c1d06, 0x04000004,
1748 0x40140000, 0x80040d40, 0x0401f8e6, 0x4a03d000,
1749 0x00070000, 0x0401f7ef, 0x1c01f000, 0x480bc857,
1750 0x480b506d, 0x59c40001, 0x82000500, 0xffffefff,
1751 0x48038801, 0x41781800, 0x0401f8c4, 0x41785800,
1752 0x42006000, 0x0000001e, 0x42006800, 0x00000004,
1753 0x0401ff7a, 0x42006800, 0x0000003c, 0x0401ff7d,
1754 0x41785800, 0x42006000, 0x0000001e, 0x42006800,
1755 0x00000004, 0x0401ff71, 0x41786800, 0x0401ff75,
1756 0x41785800, 0x42006000, 0x0000001e, 0x41786800,
1757 0x0401ff6a, 0x42006800, 0x00000002, 0x0401ff6d,
1758 0x42006800, 0x00000001, 0x0401ff64, 0x42006800,
1759 0x000000f5, 0x0401ff67, 0x41785800, 0x42006000,
1760 0x0000001e, 0x42006800, 0x00000004, 0x0401ff5b,
1761 0x42006800, 0x00000020, 0x0401ff5e, 0x59a8106d,
1762 0x0401f865, 0x42001800, 0x000200f5, 0x0401f897,
1763 0x59a8106d, 0x0401f879, 0x41785800, 0x42006000,
1764 0x0000001e, 0x42006800, 0x00000004, 0x0401ff4b,
1765 0x41786800, 0x0401ff4f, 0x59c40001, 0x82000540,
1766 0x00001000, 0x48038801, 0x41785800, 0x42006000,
1767 0x0000001e, 0x42006800, 0x00000015, 0x0401ff3f,
1768 0x0401ff4a, 0x40400000, 0x82000540, 0x00000002,
1769 0x4c000000, 0x41785800, 0x42006000, 0x0000001e,
1770 0x42006800, 0x00000015, 0x0401ff34, 0x5c000000,
1771 0x40006800, 0x0401ff37, 0x41785800, 0x42006000,
1772 0x0000001e, 0x42006800, 0x00000015, 0x0401ff2b,
1773 0x0401ff36, 0x40400000, 0x82000500, 0x0000fffd,
1774 0x4c000000, 0x41785800, 0x42006000, 0x0000001e,
1775 0x42006800, 0x00000015, 0x0401ff20, 0x5c000000,
1776 0x40006800, 0x0401ff23, 0x41785800, 0x42006000,
1777 0x0000001e, 0x42006800, 0x00000014, 0x0401ff17,
1778 0x0401ff22, 0x40400000, 0x82000540, 0x00000040,
1779 0x4c000000, 0x41785800, 0x42006000, 0x0000001e,
1780 0x42006800, 0x00000014, 0x0401ff0c, 0x5c000000,
1781 0x40006800, 0x0401ff0f, 0x41785800, 0x42006000,
1782 0x0000001e, 0x42006800, 0x00000014, 0x0401ff03,
1783 0x0401ff0e, 0x40400000, 0x82000500, 0x0000ffbf,
1784 0x4c000000, 0x41785800, 0x42006000, 0x0000001e,
1785 0x42006800, 0x00000014, 0x0401fef8, 0x5c000000,
1786 0x40006800, 0x0401fefb, 0x4a038886, 0x00002020,
1787 0x0401f04c, 0x480bc857, 0x82080580, 0x00010000,
1788 0x04020007, 0x82040d40, 0x00010000, 0x42001800,
1789 0x00000001, 0x0401f82d, 0x0401f00f, 0x82080580,
1790 0x00008000, 0x04000007, 0x82040d40, 0x00000000,
1791 0x42001800, 0x00900001, 0x0401f824, 0x0401f006,
1792 0x82040d40, 0x00008000, 0x42001800, 0x00100001,
1793 0x0401f81e, 0x1c01f000, 0x480bc857, 0x82080580,
1794 0x00010000, 0x04020008, 0x42001800, 0x000000a1,
1795 0x0401f816, 0x42001800, 0x000000c1, 0x0401f813,
1796 0x0401f011, 0x82080580, 0x00008000, 0x04000008,
1797 0x42001800, 0x000400a1, 0x0401f80c, 0x42001800,
1798 0x002000c1, 0x0401f809, 0x0401f007, 0x42001800,
1799 0x000400a1, 0x0401f805, 0x42001800, 0x000000c1,
1800 0x0401f802, 0x1c01f000, 0x480fc857, 0x41785800,
1801 0x42006000, 0x0000001e, 0x41786800, 0x0401feb7,
1802 0x400c6800, 0x80346960, 0x0401feba, 0x42006800,
1803 0x00000001, 0x0401feb1, 0x400c6800, 0x0401feb5,
1804 0x42006800, 0x00000003, 0x0401feac, 0x0401feb7,
1805 0x40400000, 0x8c000504, 0x040207fc, 0x1c01f000,
1806 0x42000000, 0x00000064, 0x80000040, 0x040207ff,
1807 0x1c01f000, 0x00020103, 0x00101bd5, 0x00101bdb,
1808 0x00101be1, 0x00101be9, 0x00101bef, 0x00101bf7,
1809 0x00101bff, 0x00101c09, 0x00101c0f, 0x00101c17,
1810 0x00101c1f, 0x00101c29, 0x00101c31, 0x00101c3b,
1811 0x00101c45, 0x000200f8, 0x00101c51, 0x00101c59,
1812 0x00101c61, 0x00101c6b, 0x00101c73, 0x00101c7d,
1813 0x00101c87, 0x00101c93, 0x00101c9b, 0x00101ca5,
1814 0x00101caf, 0x00101cbb, 0x00101cc5, 0x00101cd1,
1815 0x00101cdd, 0x000200fd, 0x00101ceb, 0x00101cf3,
1816 0x00101cfb, 0x00101d05, 0x00101d0d, 0x00101d17,
1817 0x00101d21, 0x00101d2d, 0x00101d35, 0x00101d3f,
1818 0x00101d49, 0x00101d55, 0x00101d5f, 0x00101d6b,
1819 0x00101d77, 0x00101d85, 0x00101d8d, 0x00101d97,
1820 0x00101da1, 0x00101dad, 0x00101db7, 0x00101dc3,
1821 0x00101dcf, 0x00101ddd, 0x00101de7, 0x00101df3,
1822 0x00101dff, 0x00101e0d, 0x00101e19, 0x00101e27,
1823 0x00101e35, 0x4c000000, 0x4df00000, 0x0201f800,
1824 0x00020104, 0x0201f000, 0x00020101, 0x4c000000,
1825 0x4df00000, 0x0201f800, 0x00101418, 0x0201f000,
1826 0x00020101, 0x4c000000, 0x4df00000, 0x0201f800,
1827 0x00101418, 0x0201f800, 0x00020104, 0x0201f000,
1828 0x00020101, 0x4c000000, 0x4df00000, 0x0201f800,
1829 0x00101155, 0x0201f000, 0x00020101, 0x4c000000,
1830 0x4df00000, 0x0201f800, 0x00101155, 0x0201f800,
1831 0x00020104, 0x0201f000, 0x00020101, 0x4c000000,
1832 0x4df00000, 0x0201f800, 0x00101155, 0x0201f800,
1833 0x00101418, 0x0201f000, 0x00020101, 0x4c000000,
1834 0x4df00000, 0x0201f800, 0x00101155, 0x0201f800,
1835 0x00101418, 0x0201f800, 0x00020104, 0x0201f000,
1836 0x00020101, 0x4c000000, 0x4df00000, 0x0201f800,
1837 0x00101289, 0x0201f000, 0x00020101, 0x4c000000,
1838 0x4df00000, 0x0201f800, 0x00101289, 0x0201f800,
1839 0x00020104, 0x0201f000, 0x00020101, 0x4c000000,
1840 0x4df00000, 0x0201f800, 0x00101418, 0x0201f800,
1841 0x00101289, 0x0201f000, 0x00020101, 0x4c000000,
1842 0x4df00000, 0x0201f800, 0x00101418, 0x0201f800,
1843 0x00101289, 0x0201f800, 0x00020104, 0x0201f000,
1844 0x00020101, 0x4c000000, 0x4df00000, 0x0201f800,
1845 0x00101155, 0x0201f800, 0x00101289, 0x0201f000,
1846 0x00020101, 0x4c000000, 0x4df00000, 0x0201f800,
1847 0x00101155, 0x0201f800, 0x00101289, 0x0201f800,
1848 0x00020104, 0x0201f000, 0x00020101, 0x4c000000,
1849 0x4df00000, 0x0201f800, 0x00101155, 0x0201f800,
1850 0x00101418, 0x0201f800, 0x00101289, 0x0201f000,
1851 0x00020101, 0x4c000000, 0x4df00000, 0x0201f800,
1852 0x00101155, 0x0201f800, 0x00101418, 0x0201f800,
1853 0x00101289, 0x0201f800, 0x00020104, 0x0201f000,
1854 0x00020101, 0x4c000000, 0x4df00000, 0x0201f800,
1855 0x00020729, 0x0201f800, 0x00020104, 0x0201f000,
1856 0x00020101, 0x4c000000, 0x4df00000, 0x0201f800,
1857 0x00101418, 0x0201f800, 0x00020729, 0x0201f000,
1858 0x00020101, 0x4c000000, 0x4df00000, 0x0201f800,
1859 0x00101418, 0x0201f800, 0x00020729, 0x0201f800,
1860 0x00020104, 0x0201f000, 0x00020101, 0x4c000000,
1861 0x4df00000, 0x0201f800, 0x00101155, 0x0201f800,
1862 0x00020729, 0x0201f000, 0x00020101, 0x4c000000,
1863 0x4df00000, 0x0201f800, 0x00101155, 0x0201f800,
1864 0x00020729, 0x0201f800, 0x00020104, 0x0201f000,
1865 0x00020101, 0x4c000000, 0x4df00000, 0x0201f800,
1866 0x00101155, 0x0201f800, 0x00101418, 0x0201f800,
1867 0x00020729, 0x0201f000, 0x00020101, 0x4c000000,
1868 0x4df00000, 0x0201f800, 0x00101155, 0x0201f800,
1869 0x00101418, 0x0201f800, 0x00020729, 0x0201f800,
1870 0x00020104, 0x0201f000, 0x00020101, 0x4c000000,
1871 0x4df00000, 0x0201f800, 0x00020729, 0x0201f800,
1872 0x00101289, 0x0201f000, 0x00020101, 0x4c000000,
1873 0x4df00000, 0x0201f800, 0x00020729, 0x0201f800,
1874 0x00101289, 0x0201f800, 0x00020104, 0x0201f000,
1875 0x00020101, 0x4c000000, 0x4df00000, 0x0201f800,
1876 0x00101418, 0x0201f800, 0x00020729, 0x0201f800,
1877 0x00101289, 0x0201f000, 0x00020101, 0x4c000000,
1878 0x4df00000, 0x0201f800, 0x00101418, 0x0201f800,
1879 0x00020729, 0x0201f800, 0x00101289, 0x0201f800,
1880 0x00020104, 0x0201f000, 0x00020101, 0x4c000000,
1881 0x4df00000, 0x0201f800, 0x00101155, 0x0201f800,
1882 0x00020729, 0x0201f800, 0x00101289, 0x0201f000,
1883 0x00020101, 0x4c000000, 0x4df00000, 0x0201f800,
1884 0x00101155, 0x0201f800, 0x00020729, 0x0201f800,
1885 0x00101289, 0x0201f800, 0x00020104, 0x0201f000,
1886 0x00020101, 0x4c000000, 0x4df00000, 0x0201f800,
1887 0x00101155, 0x0201f800, 0x00101418, 0x0201f800,
1888 0x00020729, 0x0201f800, 0x00101289, 0x0201f000,
1889 0x00020101, 0x4c000000, 0x4df00000, 0x0201f800,
1890 0x00101155, 0x0201f800, 0x00101418, 0x0201f800,
1891 0x00020729, 0x0201f800, 0x00101289, 0x0201f800,
1892 0x00020104, 0x0201f000, 0x00020101, 0x4c000000,
1893 0x4df00000, 0x0201f800, 0x00020015, 0x0201f800,
1894 0x00020104, 0x0201f000, 0x00020101, 0x4c000000,
1895 0x4df00000, 0x0201f800, 0x00101418, 0x0201f800,
1896 0x00020015, 0x0201f000, 0x00020101, 0x4c000000,
1897 0x4df00000, 0x0201f800, 0x00101418, 0x0201f800,
1898 0x00020015, 0x0201f800, 0x00020104, 0x0201f000,
1899 0x00020101, 0x4c000000, 0x4df00000, 0x0201f800,
1900 0x00101155, 0x0201f800, 0x00020015, 0x0201f000,
1901 0x00020101, 0x4c000000, 0x4df00000, 0x0201f800,
1902 0x00101155, 0x0201f800, 0x00020015, 0x0201f800,
1903 0x00020104, 0x0201f000, 0x00020101, 0x4c000000,
1904 0x4df00000, 0x0201f800, 0x00101418, 0x0201f800,
1905 0x00101155, 0x0201f800, 0x00020015, 0x0201f000,
1906 0x00020101, 0x4c000000, 0x4df00000, 0x0201f800,
1907 0x00101418, 0x0201f800, 0x00101155, 0x0201f800,
1908 0x00020015, 0x0201f800, 0x00020104, 0x0201f000,
1909 0x00020101, 0x4c000000, 0x4df00000, 0x0201f800,
1910 0x00020015, 0x0201f800, 0x00101289, 0x0201f000,
1911 0x00020101, 0x4c000000, 0x4df00000, 0x0201f800,
1912 0x00020015, 0x0201f800, 0x00101289, 0x0201f800,
1913 0x00020104, 0x0201f000, 0x00020101, 0x4c000000,
1914 0x4df00000, 0x0201f800, 0x00101418, 0x0201f800,
1915 0x00020015, 0x0201f800, 0x00101289, 0x0201f000,
1916 0x00020101, 0x4c000000, 0x4df00000, 0x0201f800,
1917 0x00101418, 0x0201f800, 0x00020015, 0x0201f800,
1918 0x00101289, 0x0201f800, 0x00020104, 0x0201f000,
1919 0x00020101, 0x4c000000, 0x4df00000, 0x0201f800,
1920 0x00020015, 0x0201f800, 0x00101289, 0x0201f800,
1921 0x00101155, 0x0201f000, 0x00020101, 0x4c000000,
1922 0x4df00000, 0x0201f800, 0x00020015, 0x0201f800,
1923 0x00101289, 0x0201f800, 0x00101155, 0x0201f800,
1924 0x00020104, 0x0201f000, 0x00020101, 0x4c000000,
1925 0x4df00000, 0x0201f800, 0x00101418, 0x0201f800,
1926 0x00020015, 0x0201f800, 0x00101289, 0x0201f800,
1927 0x00101155, 0x0201f000, 0x00020101, 0x4c000000,
1928 0x4df00000, 0x0201f800, 0x00101418, 0x0201f800,
1929 0x00020015, 0x0201f800, 0x00101289, 0x0201f800,
1930 0x00101155, 0x0201f800, 0x00020104, 0x0201f000,
1931 0x00020101, 0x4c000000, 0x4df00000, 0x0201f800,
1932 0x00020729, 0x0201f800, 0x00020015, 0x0201f000,
1933 0x00020101, 0x4c000000, 0x4df00000, 0x0201f800,
1934 0x00020729, 0x0201f800, 0x00020015, 0x0201f800,
1935 0x00020104, 0x0201f000, 0x00020101, 0x4c000000,
1936 0x4df00000, 0x0201f800, 0x00101418, 0x0201f800,
1937 0x00020729, 0x0201f800, 0x00020015, 0x0201f000,
1938 0x00020101, 0x4c000000, 0x4df00000, 0x0201f800,
1939 0x00101418, 0x0201f800, 0x00020729, 0x0201f800,
1940 0x00020015, 0x0201f800, 0x00020104, 0x0201f000,
1941 0x00020101, 0x4c000000, 0x4df00000, 0x0201f800,
1942 0x00020729, 0x0201f800, 0x00020015, 0x0201f800,
1943 0x00101155, 0x0201f000, 0x00020101, 0x4c000000,
1944 0x4df00000, 0x0201f800, 0x00020729, 0x0201f800,
1945 0x00020015, 0x0201f800, 0x00101155, 0x0201f800,
1946 0x00020104, 0x0201f000, 0x00020101, 0x4c000000,
1947 0x4df00000, 0x0201f800, 0x00101418, 0x0201f800,
1948 0x00020729, 0x0201f800, 0x00020015, 0x0201f800,
1949 0x00101155, 0x0201f000, 0x00020101, 0x4c000000,
1950 0x4df00000, 0x0201f800, 0x00101418, 0x0201f800,
1951 0x00020729, 0x0201f800, 0x00020015, 0x0201f800,
1952 0x00101155, 0x0201f800, 0x00020104, 0x0201f000,
1953 0x00020101, 0x4c000000, 0x4df00000, 0x0201f800,
1954 0x00020729, 0x0201f800, 0x00020015, 0x0201f800,
1955 0x00101289, 0x0201f000, 0x00020101, 0x4c000000,
1956 0x4df00000, 0x0201f800, 0x00020729, 0x0201f800,
1957 0x00020015, 0x0201f800, 0x00101289, 0x0201f800,
1958 0x00020104, 0x0201f000, 0x00020101, 0x4c000000,
1959 0x4df00000, 0x0201f800, 0x00101418, 0x0201f800,
1960 0x00020729, 0x0201f800, 0x00020015, 0x0201f800,
1961 0x00101289, 0x0201f000, 0x00020101, 0x4c000000,
1962 0x4df00000, 0x0201f800, 0x00101418, 0x0201f800,
1963 0x00020729, 0x0201f800, 0x00020015, 0x0201f800,
1964 0x00101289, 0x0201f800, 0x00020104, 0x0201f000,
1965 0x00020101, 0x4c000000, 0x4df00000, 0x0201f800,
1966 0x00101155, 0x0201f800, 0x00020729, 0x0201f800,
1967 0x00020015, 0x0201f800, 0x00101289, 0x0201f000,
1968 0x00020101, 0x4c000000, 0x4df00000, 0x0201f800,
1969 0x00101155, 0x0201f800, 0x00020729, 0x0201f800,
1970 0x00020015, 0x0201f800, 0x00101289, 0x0201f800,
1971 0x00020104, 0x0201f000, 0x00020101, 0x4c000000,
1972 0x4df00000, 0x0201f800, 0x00101155, 0x0201f800,
1973 0x00101418, 0x0201f800, 0x00020729, 0x0201f800,
1974 0x00020015, 0x0201f800, 0x00101289, 0x0201f000,
1975 0x00020101, 0x4c000000, 0x4df00000, 0x0201f800,
1976 0x00101155, 0x0201f800, 0x00101418, 0x0201f800,
1977 0x00020729, 0x0201f800, 0x00020015, 0x0201f800,
1978 0x00101289, 0x0201f800, 0x00020104, 0x0201f000,
1979 0x00020101, 0x4c5c0000, 0x4c600000, 0x4178b800,
1980 0x0201f800, 0x001048ec, 0x040200fd, 0x59a8c026,
1981 0x0201f800, 0x0010513b, 0x04000003, 0x8c60c506,
1982 0x0400000e, 0x8c60c500, 0x04020004, 0x8c60c50e,
1983 0x040008f6, 0x0401f0f2, 0x0401fab4, 0x040200f0,
1984 0x0201f800, 0x0010513b, 0x04020004, 0x4a03501c,
1985 0x0000ffff, 0x0401f0ea, 0x8c60c504, 0x04000004,
1986 0x4a03501c, 0x0000ffff, 0x0401f0e5, 0x59a8c010,
1987 0x8260c500, 0x000000ff, 0x59a81013, 0x8c081500,
1988 0x0400005d, 0x8c081502, 0x0402005b, 0x59a8b81c,
1989 0x825c0d80, 0x0000ffff, 0x04020003, 0x4200b800,
1990 0x00000001, 0x805c1104, 0x82086400, 0x0010be21,
1991 0x50300800, 0x825c0500, 0x00000003, 0x0c01f001,
1992 0x00101e81, 0x00101e7c, 0x00101e80, 0x00101e7e,
1993 0x80040910, 0x0401f004, 0x80040930, 0x0401f002,
1994 0x80040920, 0x82040500, 0x000000ff, 0x82000d80,
1995 0x000000ff, 0x0400000f, 0x4c000000, 0x82000400,
1996 0x0010210e, 0x50000800, 0x80040910, 0x82040580,
1997 0x00000080, 0x5c000000, 0x04000030, 0x80600d80,
1998 0x0400002e, 0x80000540, 0x0400002c, 0x0401f00b,
1999 0x59a81005, 0x82081500, 0x00000003, 0x0402002b,
2000 0x59a81013, 0x84081542, 0x480b5013, 0x4a03501c,
2001 0x0000ffff, 0x0401f028, 0x4c000000, 0x59a80005,
2002 0x8c000514, 0x42001000, 0x00000010, 0x02020800,
2003 0x00104c6d, 0x5c000000, 0x0402001c, 0x417a8800,
2004 0x0201f800, 0x00105c9a, 0x04020016, 0x0201f800,
2005 0x001045e5, 0x04000006, 0x0201f800, 0x00104c62,
2006 0x0401f8b1, 0x0400000f, 0x0401f00c, 0x599c0019,
2007 0x8c00050e, 0x04020009, 0x0201f800, 0x001045a6,
2008 0x04020008, 0x0201f800, 0x00104c62, 0x0401f9e1,
2009 0x0401f8be, 0x04000003, 0x805cb800, 0x0401f7b2,
2010 0x485f501c, 0x0401f086, 0x4a03501c, 0x0000ffff,
2011 0x0401f083, 0x42003000, 0x0000007e, 0x59a8001c,
2012 0x82001580, 0x0000ffff, 0x04020005, 0x80000d80,
2013 0x4018b000, 0x4803c856, 0x0401f009, 0x8018b480,
2014 0x04001004, 0x40000800, 0x4803c856, 0x0401f004,
2015 0x4a03501c, 0x0000ffff, 0x0401f071, 0x4c040000,
2016 0x4c580000, 0x82040400, 0x0010210e, 0x50000000,
2017 0x82000500, 0x000000ff, 0x80604580, 0x0400005c,
2018 0x0201f800, 0x00105c9b, 0x04020061, 0x59a80005,
2019 0x8c000514, 0x42001000, 0x00000010, 0x02020800,
2020 0x00104c6d, 0x5c00b000, 0x5c000800, 0x040207d7,
2021 0x4c040000, 0x4c580000, 0x845cbd00, 0x0201f800,
2022 0x00020245, 0x04000008, 0x599c0019, 0x8c00050e,
2023 0x04020047, 0x0201f800, 0x001045ab, 0x0402004c,
2024 0x0401f002, 0x845cbd40, 0x0201f800, 0x00104c62,
2025 0x0201f800, 0x001049e7, 0x04020007, 0x59a80005,
2026 0x8c000502, 0x04000033, 0x59340200, 0x8c00050e,
2027 0x04020030, 0x59a81013, 0x8c081502, 0x04000025,
2028 0x0201f800, 0x00104a09, 0x04000031, 0x8c5cbd00,
2029 0x04020004, 0x0201f800, 0x001045ff, 0x0401f02c,
2030 0x0401f9cd, 0x0400002a, 0x42026000, 0x0010bde9,
2031 0x49366009, 0x497a6008, 0x417a7800, 0x0401f925,
2032 0x42000000, 0x0010b864, 0x0201f800, 0x0010aa47,
2033 0x0201f800, 0x00103b25, 0x0400001d, 0x41782800,
2034 0x42003000, 0x00000008, 0x4d400000, 0x4d440000,
2035 0x59368c03, 0x42028000, 0x00000029, 0x0201f800,
2036 0x0010a446, 0x5c028800, 0x5c028000, 0x0401f010,
2037 0x4937c857, 0x599c0019, 0x8c00050e, 0x0402000c,
2038 0x0401f96c, 0x0401f849, 0x04000011, 0x0401f008,
2039 0x59a80013, 0x8c000500, 0x04000003, 0x0401f9a6,
2040 0x04000003, 0x0401f828, 0x04000009, 0x5c00b000,
2041 0x5c000800, 0x80040800, 0x8058b040, 0x04020798,
2042 0x4a03501c, 0x0000ffff, 0x0401f005, 0x4937c857,
2043 0x5c00b000, 0x5c000800, 0x4807501c, 0x5c00c000,
2044 0x5c00b800, 0x1c01f000, 0x4803c856, 0x4a03501c,
2045 0x00000001, 0x42028800, 0x000007fe, 0x42003000,
2046 0x00fffffe, 0x0201f800, 0x001045a6, 0x0402000c,
2047 0x0401f948, 0x0401f825, 0x04000009, 0x59a80026,
2048 0x8400054e, 0x48035026, 0x0201f800, 0x0010930f,
2049 0x82000540, 0x00000001, 0x1c01f000, 0x80000580,
2050 0x0401f7fe, 0x4937c857, 0x0201f800, 0x00107942,
2051 0x04000015, 0x49366009, 0x4a026406, 0x00000001,
2052 0x417a7800, 0x0201f800, 0x00104567, 0x59a8001b,
2053 0x80000000, 0x4803501b, 0x42027000, 0x00000004,
2054 0x599c0019, 0x8c00050e, 0x04000003, 0x42027000,
2055 0x00000000, 0x0201f800, 0x000207a1, 0x82000540,
2056 0x00000001, 0x1c01f000, 0x4937c857, 0x0201f800,
2057 0x00107942, 0x0400001c, 0x49366009, 0x59340403,
2058 0x82000580, 0x000007fe, 0x04000005, 0x4d3c0000,
2059 0x417a7800, 0x0401f8b7, 0x5c027800, 0x4a026406,
2060 0x00000001, 0x417a7800, 0x0201f800, 0x00104567,
2061 0x42000800, 0x00000003, 0x0201f800, 0x00104571,
2062 0x59a8001b, 0x80000000, 0x4803501b, 0x42027000,
2063 0x00000002, 0x0201f800, 0x000207a1, 0x82000540,
2064 0x00000001, 0x1c01f000, 0x4803c856, 0x42028800,
2065 0x000007fc, 0x42003000, 0x00fffffc, 0x0201f800,
2066 0x001045a6, 0x04020005, 0x0401f805, 0x04000003,
2067 0x4a035027, 0x0000ffff, 0x1c01f000, 0x4937c857,
2068 0x0201f800, 0x00107942, 0x04000014, 0x49366009,
2069 0x4a026406, 0x00000001, 0x417a7800, 0x0201f800,
2070 0x00104567, 0x42000800, 0x00000003, 0x0201f800,
2071 0x00104571, 0x59a80028, 0x80000000, 0x48035028,
2072 0x42027000, 0x00000002, 0x0201f800, 0x000207a1,
2073 0x82000540, 0x00000001, 0x1c01f000, 0x480bc857,
2074 0x492fc857, 0x4c5c0000, 0x4008b800, 0x42028800,
2075 0x000007fd, 0x42003000, 0x00fffffd, 0x0201f800,
2076 0x001045a6, 0x0402001a, 0x0201f800, 0x0002075a,
2077 0x04000017, 0x49366009, 0x5934000a, 0x84000544,
2078 0x4802680a, 0x812e59c0, 0x04000005, 0x592c0404,
2079 0x8c00051e, 0x04000002, 0x48ee6021, 0x492e6008,
2080 0x4a026406, 0x00000001, 0x485e601c, 0x42027000,
2081 0x00000022, 0x0201f800, 0x000207a1, 0x82000540,
2082 0x00000001, 0x5c00b800, 0x1c01f000, 0x80000580,
2083 0x0401f7fd, 0x5c000000, 0x4c000000, 0x4803c857,
2084 0x4943c857, 0x493fc857, 0x4d340000, 0x4d440000,
2085 0x4c580000, 0x4d2c0000, 0x4c5c0000, 0x0201f800,
2086 0x00106c55, 0x4df00000, 0x0201f800, 0x001069f1,
2087 0x0201f800, 0x00106aac, 0x0201f800, 0x00106737,
2088 0x0201f800, 0x0010848a, 0x5c03e000, 0x02000800,
2089 0x00106c4b, 0x4200b000, 0x000007f0, 0x417a8800,
2090 0x0201f800, 0x00020245, 0x0402001f, 0x8d3e7d14,
2091 0x04000005, 0x59340212, 0x82000500, 0x0000ff00,
2092 0x04000019, 0x8d3e7d06, 0x04000004, 0x59340200,
2093 0x8c00050e, 0x04020014, 0x8d3e7d18, 0x0400000f,
2094 0x5934b80f, 0x805cb9c0, 0x04000009, 0x49425a06,
2095 0x592cb800, 0x0201f800, 0x000202ce, 0x805cb9c0,
2096 0x040207fb, 0x497a680f, 0x497a6810, 0x4a026c00,
2097 0x00000707, 0x0401f004, 0x4937c857, 0x0201f800,
2098 0x001042b4, 0x81468800, 0x8058b040, 0x040207dd,
2099 0x8d3e7d02, 0x04000011, 0x497b501d, 0x42028800,
2100 0x000007f0, 0x4200b000, 0x00000010, 0x0201f800,
2101 0x00020245, 0x04020006, 0x4937c857, 0x4a026c00,
2102 0x00000707, 0x0201f800, 0x001042b4, 0x81468800,
2103 0x8058b040, 0x040207f6, 0x5c00b800, 0x5c025800,
2104 0x5c00b000, 0x5c028800, 0x5c026800, 0x1c01f000,
2105 0x5c000000, 0x4c000000, 0x4803c857, 0x4933c857,
2106 0x493fc857, 0x4d340000, 0x4d400000, 0x4d440000,
2107 0x4d2c0000, 0x4c5c0000, 0x0201f800, 0x00106c55,
2108 0x4df00000, 0x59326809, 0x813669c0, 0x04000020,
2109 0x59368c03, 0x42028000, 0x00000029, 0x0201f800,
2110 0x00106a50, 0x0201f800, 0x00106ab4, 0x0201f800,
2111 0x001067fd, 0x0201f800, 0x0010a2ff, 0x4937c857,
2112 0x8d3e7d18, 0x04000010, 0x5934b80f, 0x805cb9c0,
2113 0x0400000a, 0x405e5800, 0x49425a06, 0x592cb800,
2114 0x0201f800, 0x000202ce, 0x805cb9c0, 0x040207fa,
2115 0x497a680f, 0x497a6810, 0x4a026c00, 0x00000707,
2116 0x0401f003, 0x0201f800, 0x001042b4, 0x5c03e000,
2117 0x02000800, 0x00106c4b, 0x5c00b800, 0x5c025800,
2118 0x5c028800, 0x5c028000, 0x5c026800, 0x1c01f000,
2119 0x4933c857, 0x59a80026, 0x8c000508, 0x04020012,
2120 0x59305009, 0x482bc857, 0x836c0580, 0x00000002,
2121 0x0402000d, 0x0401f813, 0x0402000b, 0x58280403,
2122 0x82000580, 0x000007fc, 0x04000008, 0x59a8001b,
2123 0x80000040, 0x4803c857, 0x02001800, 0x001005d8,
2124 0x4803501b, 0x1c01f000, 0x59a80028, 0x80000040,
2125 0x4803c857, 0x040017fc, 0x48035028, 0x1c01f000,
2126 0x59300008, 0x800001c0, 0x04020009, 0x59300403,
2127 0x82000580, 0x00000001, 0x04020004, 0x82000540,
2128 0x00000001, 0x0401f002, 0x80000580, 0x1c01f000,
2129 0x4937c857, 0x59340200, 0x84000502, 0x48026a00,
2130 0x1c01f000, 0x4933c857, 0x493fc857, 0x4947c857,
2131 0x4d3c0000, 0x4d400000, 0x4d340000, 0x4d440000,
2132 0x4c580000, 0x0201f800, 0x00106c55, 0x4df00000,
2133 0x813e79c0, 0x04020004, 0x4200b000, 0x00000001,
2134 0x0401f004, 0x4200b000, 0x000007f0, 0x417a8800,
2135 0x41440000, 0x81ac0400, 0x50000000, 0x80026d40,
2136 0x04000019, 0x42027800, 0x00000001, 0x0201f800,
2137 0x001048f6, 0x42028000, 0x00000029, 0x417a7800,
2138 0x0201f800, 0x00106a50, 0x0201f800, 0x00106ab4,
2139 0x0201f800, 0x001067fd, 0x0201f800, 0x001049e7,
2140 0x04020005, 0x4937c857, 0x4a026c00, 0x00000404,
2141 0x0401f003, 0x0201f800, 0x00104a14, 0x0201f800,
2142 0x0010a2ff, 0x81468800, 0x8058b040, 0x040207e1,
2143 0x5c03e000, 0x02000800, 0x00106c4b, 0x5c00b000,
2144 0x5c028800, 0x5c026800, 0x5c028000, 0x5c027800,
2145 0x1c01f000, 0x4937c857, 0x4947c857, 0x4c5c0000,
2146 0x4c600000, 0x4c640000, 0x59a80013, 0x8c000500,
2147 0x0400001f, 0x599c0017, 0x8c00050a, 0x0402001c,
2148 0x5934ba02, 0x825cbd00, 0x000000ff, 0x485fc857,
2149 0x4178c000, 0x4178c800, 0x82600400, 0x0010be21,
2150 0x50002000, 0x8060c1c0, 0x04000008, 0x82100500,
2151 0x000000ff, 0x82002d80, 0x000000ff, 0x0400000c,
2152 0x805c0580, 0x0400000d, 0x80102110, 0x8064c800,
2153 0x82640580, 0x00000004, 0x040207f5, 0x8060c000,
2154 0x82600580, 0x00000020, 0x040207eb, 0x4813c857,
2155 0x82000540, 0x00000001, 0x5c00c800, 0x5c00c000,
2156 0x5c00b800, 0x1c01f000, 0x59a80026, 0x4803c857,
2157 0x8c000512, 0x1c01f000, 0x00007eef, 0x00007de8,
2158 0x00007ce4, 0x000080e2, 0x00007be1, 0x000080e0,
2159 0x000080dc, 0x000080da, 0x00007ad9, 0x000080d6,
2160 0x000080d5, 0x000080d4, 0x000080d3, 0x000080d2,
2161 0x000080d1, 0x000079ce, 0x000078cd, 0x000080cc,
2162 0x000080cb, 0x000080ca, 0x000080c9, 0x000080c7,
2163 0x000080c6, 0x000077c5, 0x000076c3, 0x000080bc,
2164 0x000080ba, 0x000075b9, 0x000080b6, 0x000074b5,
2165 0x000073b4, 0x000072b3, 0x000080b2, 0x000080b1,
2166 0x000080ae, 0x000071ad, 0x000080ac, 0x000070ab,
2167 0x00006faa, 0x00006ea9, 0x000080a7, 0x00006da6,
2168 0x00006ca5, 0x00006ba3, 0x00006a9f, 0x0000699e,
2169 0x0000689d, 0x0000809b, 0x00008098, 0x00006797,
2170 0x00006690, 0x0000658f, 0x00006488, 0x00006384,
2171 0x00006282, 0x00008081, 0x00008080, 0x0000617c,
2172 0x0000607a, 0x00008079, 0x00005f76, 0x00008075,
2173 0x00008074, 0x00008073, 0x00008072, 0x00008071,
2174 0x0000806e, 0x00005e6d, 0x0000806c, 0x00005d6b,
2175 0x00005c6a, 0x00005b69, 0x00008067, 0x00005a66,
2176 0x00005965, 0x00005863, 0x0000575c, 0x0000565a,
2177 0x00005559, 0x00008056, 0x00008055, 0x00005454,
2178 0x00005353, 0x00005252, 0x00005151, 0x0000504e,
2179 0x00004f4d, 0x0000804c, 0x0000804b, 0x00004e4a,
2180 0x00004d49, 0x00008047, 0x00004c46, 0x00008045,
2181 0x00008043, 0x0000803c, 0x0000803a, 0x00008039,
2182 0x00008036, 0x00004b35, 0x00008034, 0x00004a33,
2183 0x00004932, 0x00004831, 0x0000802e, 0x0000472d,
2184 0x0000462c, 0x0000452b, 0x0000442a, 0x00004329,
2185 0x00004227, 0x00008026, 0x00008025, 0x00004123,
2186 0x0000401f, 0x00003f1e, 0x00003e1d, 0x00003d1b,
2187 0x00003c18, 0x00008017, 0x00008010, 0x00003b0f,
2188 0x00003a08, 0x00008004, 0x00003902, 0x00008001,
2189 0x00008000, 0x00008000, 0x00003800, 0x00003700,
2190 0x00003600, 0x00008000, 0x00003500, 0x00008000,
2191 0x00008000, 0x00008000, 0x00003400, 0x00008000,
2192 0x00008000, 0x00008000, 0x00008000, 0x00008000,
2193 0x00008000, 0x00003300, 0x00003200, 0x00008000,
2194 0x00008000, 0x00008000, 0x00008000, 0x00008000,
2195 0x00008000, 0x00003100, 0x00003000, 0x00008000,
2196 0x00008000, 0x00002f00, 0x00008000, 0x00002e00,
2197 0x00002d00, 0x00002c00, 0x00008000, 0x00008000,
2198 0x00008000, 0x00002b00, 0x00008000, 0x00002a00,
2199 0x00002900, 0x00002800, 0x00008000, 0x00002700,
2200 0x00002600, 0x00002500, 0x00002400, 0x00002300,
2201 0x00002200, 0x00008000, 0x00008000, 0x00002100,
2202 0x00002000, 0x00001f00, 0x00001e00, 0x00001d00,
2203 0x00001c00, 0x00008000, 0x00008000, 0x00001b00,
2204 0x00001a00, 0x00008000, 0x00001900, 0x00008000,
2205 0x00008000, 0x00008000, 0x00008000, 0x00008000,
2206 0x00008000, 0x00001800, 0x00008000, 0x00001700,
2207 0x00001600, 0x00001500, 0x00008000, 0x00001400,
2208 0x00001300, 0x00001200, 0x00001100, 0x00001000,
2209 0x00000f00, 0x00008000, 0x00008000, 0x00000e00,
2210 0x00000d00, 0x00000c00, 0x00000b00, 0x00000a00,
2211 0x00000900, 0x00008000, 0x00008000, 0x00000800,
2212 0x00000700, 0x00008000, 0x00000600, 0x00008000,
2213 0x00008000, 0x00008000, 0x00000500, 0x00000400,
2214 0x00000300, 0x00008000, 0x00000200, 0x00008000,
2215 0x00008000, 0x00008000, 0x00000100, 0x00008000,
2216 0x00008000, 0x00008000, 0x00008000, 0x00008000,
2217 0x00008000, 0x00000000, 0x00008000, 0x00008000,
2218 0x00008000, 0x00008000, 0x00008000, 0x00008000,
2219 0x00008000, 0x00008000, 0x00008000, 0x00008000,
2220 0x00008000, 0x00008000, 0x00008000, 0x00008000,
2221 0x00008000, 0x00008000, 0x0201f800, 0x001007d3,
2222 0x02000800, 0x001005d8, 0x492f4016, 0x1c01f000,
2223 0x83a0ac00, 0x00000006, 0x83a00580, 0x0010b4a4,
2224 0x0400000c, 0x492fc857, 0x812e59c0, 0x02000800,
2225 0x001005d8, 0x832ca400, 0x00000006, 0x4200b000,
2226 0x0000000d, 0x0201f800, 0x0010ab17, 0x0401f00f,
2227 0x4200b000, 0x00000010, 0x83e0a400, 0x00000020,
2228 0x50500000, 0x8050a000, 0x50500800, 0x900409c0,
2229 0x80040540, 0x4400a800, 0x8050a000, 0x8054a800,
2230 0x8058b040, 0x040207f7, 0x1c01f000, 0x59a00206,
2231 0x4803c857, 0x82000c80, 0x0000007f, 0x040210c9,
2232 0x59a80821, 0x0c01f001, 0x001022c0, 0x00102300,
2233 0x00102300, 0x0010234b, 0x0010236d, 0x00102300,
2234 0x001022c0, 0x0010238f, 0x001023a0, 0x00102300,
2235 0x00102300, 0x001023ad, 0x001023c5, 0x001023dd,
2236 0x00102300, 0x001023e7, 0x001023f4, 0x00102300,
2237 0x0010241d, 0x00102300, 0x0010247a, 0x00102300,
2238 0x00102300, 0x00102300, 0x00102300, 0x00102300,
2239 0x00102300, 0x00102300, 0x00102300, 0x00102300,
2240 0x00102300, 0x00102300, 0x00102491, 0x00102300,
2241 0x001024e3, 0x00102300, 0x00102300, 0x00102300,
2242 0x00102300, 0x001024e8, 0x00102560, 0x00102300,
2243 0x00102567, 0x00102300, 0x00102300, 0x00102300,
2244 0x00102300, 0x00102300, 0x00102569, 0x001025ea,
2245 0x00102727, 0x00102300, 0x00102300, 0x00102300,
2246 0x00102300, 0x00102300, 0x00102736, 0x00102300,
2247 0x00102300, 0x00102300, 0x00102300, 0x00102300,
2248 0x00102300, 0x00102300, 0x00102753, 0x001027a6,
2249 0x00102802, 0x00102816, 0x00102835, 0x00102a70,
2250 0x00102dff, 0x00102300, 0x00102300, 0x00102300,
2251 0x00102300, 0x00102300, 0x00102300, 0x00102300,
2252 0x00102300, 0x00102300, 0x00102300, 0x00102300,
2253 0x00102300, 0x00102fb4, 0x00103028, 0x00102300,
2254 0x00102300, 0x00103094, 0x00102300, 0x00103126,
2255 0x001031d8, 0x00102300, 0x00102300, 0x0010320f,
2256 0x0010326b, 0x00102300, 0x001032bd, 0x00103419,
2257 0x00102300, 0x0010342d, 0x001034b8, 0x00102300,
2258 0x00102300, 0x00102300, 0x00102300, 0x00103522,
2259 0x00103526, 0x00103545, 0x00102300, 0x001035e7,
2260 0x00102300, 0x00102300, 0x00103615, 0x00102300,
2261 0x00103643, 0x00102300, 0x00102300, 0x001036aa,
2262 0x001037b7, 0x00103814, 0x00102300, 0x0010387a,
2263 0x00102300, 0x00102300, 0x001038d3, 0x00103936,
2264 0x00102300, 0x48efc857, 0x4031d800, 0x58ef400b,
2265 0x58ec0002, 0x82000580, 0x00000200, 0x04000045,
2266 0x48efc857, 0x4a034206, 0x00004000, 0x0201f800,
2267 0x00103a15, 0x83a00580, 0x0010b4a4, 0x0400000d,
2268 0x58ee580a, 0x4d2c0000, 0x0401f856, 0x41a25800,
2269 0x0201f800, 0x001007f4, 0x40ee5800, 0x0201f800,
2270 0x001007f4, 0x5c025800, 0x0201f000, 0x000202da,
2271 0x04026007, 0x59a0001d, 0x84000542, 0x4803401d,
2272 0x4a01d809, 0x001022d4, 0x1c01f000, 0x59a00206,
2273 0x82000d80, 0x00004000, 0x04000006, 0x900001c0,
2274 0x82000540, 0x00000011, 0x4803c011, 0x0401f005,
2275 0x900001c0, 0x82000540, 0x00000010, 0x4803c011,
2276 0x0401f845, 0x59e00017, 0x8c000508, 0x0402000c,
2277 0x4203e000, 0x30000001, 0x4203e000, 0x40000000,
2278 0x40ee5800, 0x0201f800, 0x001007f4, 0x59a0001d,
2279 0x84000504, 0x4803401d, 0x1c01f000, 0x4a03c017,
2280 0x00000000, 0x59a00206, 0x82000d80, 0x00004000,
2281 0x040007f0, 0x4a03c017, 0x00000001, 0x0401f7ed,
2282 0x4803c856, 0x4a034206, 0x00004001, 0x0401f7c0,
2283 0x4803c856, 0x4a034206, 0x00004002, 0x0401f7bc,
2284 0x4803c856, 0x4a034206, 0x00004003, 0x0401f7b8,
2285 0x4803c856, 0x4a034206, 0x00004005, 0x0401f7b4,
2286 0x4803c856, 0x4a034206, 0x00004006, 0x0401f7b0,
2287 0x4803c856, 0x4a034206, 0x0000400b, 0x0401f7ac,
2288 0x4803c856, 0x4a034206, 0x0000400c, 0x0401f7a8,
2289 0x4803c856, 0x4a034206, 0x0000400c, 0x0401f7a4,
2290 0x48efc857, 0x58eca80a, 0x8054a9c0, 0x02000800,
2291 0x001005d8, 0x83a0a400, 0x00000006, 0x8254ac00,
2292 0x00000006, 0x4200b000, 0x0000000d, 0x0201f000,
2293 0x0010ab17, 0x59a00206, 0x4803c857, 0x59a00406,
2294 0x4803c857, 0x59a00207, 0x4803c857, 0x59a00407,
2295 0x4803c857, 0x59a00208, 0x4803c857, 0x59a00408,
2296 0x4803c857, 0x59a00209, 0x4803c857, 0x83e0ac00,
2297 0x00000020, 0x83a0a400, 0x00000006, 0x4200b000,
2298 0x00000010, 0x50500000, 0x4400a800, 0x8054a800,
2299 0x900001c0, 0x4400a800, 0x8054a800, 0x8050a000,
2300 0x8058b040, 0x040207f8, 0x1c01f000, 0x59a00406,
2301 0x800000c2, 0x59a00a07, 0x900409c0, 0x80040540,
2302 0x84000540, 0x59a00c07, 0x8c040d00, 0x04000018,
2303 0x59a80805, 0x8c040d0e, 0x040207ba, 0x42000800,
2304 0x00000064, 0x80040840, 0x04000007, 0x4a030000,
2305 0x00000001, 0x40000000, 0x59801000, 0x8c081500,
2306 0x040007f9, 0x04000005, 0x48030004, 0x4a030000,
2307 0x00000000, 0x0401f75b, 0x4a030000, 0x00000000,
2308 0x4a034406, 0x00000004, 0x040007a2, 0x4803880e,
2309 0x0401f754, 0x59a00406, 0x800000c2, 0x59a00c07,
2310 0x8c040d00, 0x0400001a, 0x59a80805, 0x8c040d0e,
2311 0x0402079c, 0x42000800, 0x00000064, 0x80040840,
2312 0x04000007, 0x4a030000, 0x00000001, 0x40000000,
2313 0x59801000, 0x8c081500, 0x040007f9, 0x04000007,
2314 0x48030004, 0x59800805, 0x48074406, 0x4a030000,
2315 0x00000000, 0x0401f73b, 0x4a030000, 0x00000000,
2316 0x4a034406, 0x00000004, 0x04000782, 0x4803880e,
2317 0x59c4080f, 0x48074406, 0x0401f732, 0x59a01c06,
2318 0x59a00207, 0x900c19c0, 0x800c1d40, 0x580c0803,
2319 0x80000580, 0x500c1000, 0x80080400, 0x800c1800,
2320 0x80040840, 0x040207fc, 0x48034406, 0x900001c0,
2321 0x48034207, 0x800001c0, 0x04000722, 0x0401f769,
2322 0x4a034406, 0x00000004, 0x4a034207, 0x00000000,
2323 0x4a034407, 0x00000010, 0x59a8000d, 0x48034208,
2324 0x900001c0, 0x48034408, 0x4a034209, 0x00000002,
2325 0x0401f714, 0x59a00407, 0x59a01207, 0x900811c0,
2326 0x80081540, 0x59a00409, 0x59a01a09, 0x900c19c0,
2327 0x800c1d40, 0x59a00a08, 0x59a00408, 0x900409c0,
2328 0x80040d40, 0x59a0020a, 0x82002480, 0x00000010,
2329 0x04001754, 0x59a02406, 0x900001c0, 0x80100540,
2330 0x59a8280d, 0x80142480, 0x0400174e, 0x0201f000,
2331 0x00103a25, 0x59a00407, 0x59a01207, 0x900811c0,
2332 0x80081540, 0x59a00409, 0x59a01a09, 0x900c19c0,
2333 0x800c1d40, 0x59a00a08, 0x59a00408, 0x900409c0,
2334 0x80040d40, 0x59a0020a, 0x82002480, 0x00000010,
2335 0x0400173c, 0x59a02406, 0x900001c0, 0x80100540,
2336 0x59a8280d, 0x80142480, 0x04001736, 0x0201f000,
2337 0x00103a28, 0x59a00a0a, 0x59a00406, 0x900409c0,
2338 0x80040d40, 0x59a01407, 0x59a00207, 0x900811c0,
2339 0x80081540, 0x44080800, 0x0401f6da, 0x59a00a0a,
2340 0x59a00406, 0x900409c0, 0x80040d40, 0x50040000,
2341 0x82000d00, 0x0000ffff, 0x48074207, 0x82000d00,
2342 0xffff0000, 0x900409c0, 0x48074407, 0x0401f6cd,
2343 0x59a00406, 0x8c000500, 0x04000020, 0x59a01207,
2344 0x59a01c07, 0x59a02208, 0x480b5054, 0x480f5055,
2345 0x48135056, 0x59c40801, 0x82040d00, 0x00018000,
2346 0x82040580, 0x00000000, 0x04000009, 0x82040580,
2347 0x00008000, 0x04000008, 0x82040580, 0x00010000,
2348 0x04000007, 0x0201f800, 0x001005d8, 0x40080000,
2349 0x0401f004, 0x400c0000, 0x0401f002, 0x40100000,
2350 0x80000110, 0x42000800, 0x000000e0, 0x0201f800,
2351 0x00101944, 0x0401f007, 0x59a81054, 0x59a81855,
2352 0x59a82056, 0x480b4207, 0x480f4407, 0x48134208,
2353 0x0401f6a4, 0x4d2c0000, 0x4d340000, 0x4d300000,
2354 0x4d440000, 0x59a28c06, 0x0201f800, 0x00020245,
2355 0x04000006, 0x5c028800, 0x5c026000, 0x5c026800,
2356 0x5c025800, 0x0401f6e7, 0x59a04407, 0x59a00207,
2357 0x900001c0, 0x80204540, 0x0401f81e, 0x04000009,
2358 0x4a034208, 0x00000001, 0x4a034406, 0x0000ffff,
2359 0x4a034207, 0x0000ffff, 0x497b4407, 0x0401f00b,
2360 0x0401f822, 0x0400000e, 0x4a034208, 0x00000002,
2361 0x59300402, 0x48034406, 0x59300202, 0x48034207,
2362 0x59300206, 0x48034407, 0x5c028800, 0x5c026000,
2363 0x5c026800, 0x5c025800, 0x0401f67a, 0x5c028800,
2364 0x5c026000, 0x5c026800, 0x5c025800, 0x0401f6c1,
2365 0x4937c856, 0x4823c856, 0x4d2c0000, 0x5934000f,
2366 0x80025d40, 0x04000007, 0x592c0005, 0x80200580,
2367 0x592c0000, 0x040207fb, 0x82000540, 0x00000001,
2368 0x5c025800, 0x1c01f000, 0x4823c857, 0x4d2c0000,
2369 0x4d300000, 0x42026000, 0x0010d1c0, 0x59300406,
2370 0x82000d80, 0x00000003, 0x04000004, 0x82000d80,
2371 0x00000006, 0x04020007, 0x59325808, 0x812e59c0,
2372 0x04000004, 0x592c0005, 0x80200580, 0x0400000a,
2373 0x83326400, 0x00000024, 0x41580000, 0x81300480,
2374 0x040017ef, 0x80000580, 0x5c026000, 0x5c025800,
2375 0x1c01f000, 0x82000540, 0x00000001, 0x5c026000,
2376 0x5c025800, 0x1c01f000, 0x83a00580, 0x0010b4a4,
2377 0x04020684, 0x59a80005, 0x8c00050e, 0x04020003,
2378 0x4a030000, 0x00000000, 0x4a034206, 0x00004000,
2379 0x4a03c011, 0x40000010, 0x0401fea7, 0x59e00017,
2380 0x8c000508, 0x04000003, 0x4a03c017, 0x00000000,
2381 0x4203e000, 0x30000001, 0x4203e000, 0x40000000,
2382 0x0401f000, 0x800409c0, 0x04000004, 0x4a034406,
2383 0x00000001, 0x0401f677, 0x836c0580, 0x00000003,
2384 0x04020010, 0x59a80010, 0x497b4406, 0x0201f800,
2385 0x0010513b, 0x0400000f, 0x82000d00, 0x00ffff00,
2386 0x0402000c, 0x82000c00, 0x0010210e, 0x50040800,
2387 0x80040910, 0x82041580, 0x00000080, 0x04020004,
2388 0x4a034406, 0x00000007, 0x0401f662, 0x48074406,
2389 0x82000d00, 0x0000ffff, 0x48074207, 0x80000120,
2390 0x48034407, 0x59a80026, 0x82001500, 0x00000100,
2391 0x480b4409, 0x8c000502, 0x0400001f, 0x8c000506,
2392 0x04000009, 0x82000d00, 0x0000000a, 0x82040d80,
2393 0x0000000a, 0x04020004, 0x4a034209, 0x00000001,
2394 0x0401f022, 0x8c00050a, 0x04000009, 0x82000d00,
2395 0x00000022, 0x82040d80, 0x00000022, 0x04020004,
2396 0x4a034209, 0x00000003, 0x0401f018, 0x8c000508,
2397 0x04000009, 0x82000d00, 0x00000012, 0x82040d80,
2398 0x00000012, 0x04020004, 0x4a034209, 0x00000002,
2399 0x0401f00e, 0x0201f800, 0x0010513b, 0x04020004,
2400 0x4a034209, 0x00000004, 0x0401f5e6, 0x8c000506,
2401 0x04000004, 0x4a034406, 0x00000005, 0x0401f62d,
2402 0x4a034209, 0x00000000, 0x0401f5de, 0x59a80037,
2403 0x48034407, 0x59a80038, 0x48034209, 0x0401f5d9,
2404 0x42007800, 0x0010b8ec, 0x59a00406, 0x4803c857,
2405 0x82000c80, 0x00000006, 0x04021622, 0x0c01f001,
2406 0x001024f6, 0x001024f7, 0x00102505, 0x00102518,
2407 0x00102539, 0x001024f6, 0x0401f61a, 0x836c0580,
2408 0x00000000, 0x04000613, 0x59a00a07, 0x59a00407,
2409 0x900001c0, 0x80040d40, 0x4807c857, 0x59a00a08,
2410 0x59a00408, 0x900001c0, 0x80040d40, 0x4807c857,
2411 0x0401f056, 0x836c0580, 0x00000000, 0x04000605,
2412 0x59a00407, 0x59a01207, 0x900001c0, 0x80081540,
2413 0x59a00408, 0x59a01a08, 0x900001c0, 0x800c1d40,
2414 0x42000000, 0x0010c1bf, 0x480fc857, 0x480bc857,
2415 0x42000800, 0x00001000, 0x0201f000, 0x00103a28,
2416 0x59a00a07, 0x59a00407, 0x900001c0, 0x80041d40,
2417 0x820c0c80, 0x0010ab4a, 0x040215f2, 0x820c0c80,
2418 0x00100000, 0x040015ef, 0x480fc857, 0x823c7c00,
2419 0x00000009, 0x503c0800, 0x800409c0, 0x04000006,
2420 0x823c0580, 0x0000000d, 0x040005e6, 0x803c7800,
2421 0x0401f7f9, 0x59e41001, 0x82080d00, 0xfffeffcf,
2422 0x4807c801, 0x440c7800, 0x46001800, 0x0201f800,
2423 0x800c1800, 0x46001800, 0x001005cb, 0x480bc801,
2424 0x0401f022, 0x59a01a07, 0x59a00407, 0x900001c0,
2425 0x800c1d40, 0x480c7801, 0x59a02208, 0x59a00408,
2426 0x900001c0, 0x80102540, 0x48107802, 0x59a00209,
2427 0x80000040, 0x040015cb, 0x48007806, 0x80000000,
2428 0x48007805, 0x42000800, 0x00004000, 0x40001000,
2429 0x0201f800, 0x00106681, 0x80000540, 0x04000003,
2430 0x49787801, 0x0401f5bf, 0x40040000, 0x800c1c00,
2431 0x040015bc, 0x480c7803, 0x48107804, 0x49787808,
2432 0x59a00409, 0x48007807, 0x59e40001, 0x4803c857,
2433 0x82000540, 0x00040000, 0x4803c801, 0x0401f561,
2434 0x59a80006, 0x48034406, 0x59a80007, 0x48034207,
2435 0x59a80008, 0x48034407, 0x0401f55a, 0x0201f800,
2436 0x001005d8, 0x4803c856, 0x4a03c013, 0x03800300,
2437 0x4a03c014, 0x03800380, 0x59a00c06, 0x82040580,
2438 0x000000a0, 0x04000004, 0x82040580, 0x000000a2,
2439 0x0402002b, 0x59a0140a, 0x82080480, 0x00000100,
2440 0x04021027, 0x59a0020b, 0x8c000500, 0x0402002e,
2441 0x59a00a0a, 0x800409c0, 0x04000021, 0x82040480,
2442 0x00000041, 0x0402101e, 0x82040c00, 0x00000003,
2443 0x82040d00, 0x000000fc, 0x80040904, 0x59a00407,
2444 0x59a01207, 0x900811c0, 0x80081540, 0x59a00409,
2445 0x59a01a09, 0x900c19c0, 0x800c1d40, 0x0201f800,
2446 0x00103a00, 0x04020006, 0x4a034406, 0x00000002,
2447 0x4a03c014, 0x03800000, 0x0401f576, 0x832e5c00,
2448 0x00000004, 0x412c0000, 0x0201f800, 0x00103a25,
2449 0x4a01d809, 0x001025a2, 0x1c01f000, 0x4a03c014,
2450 0x03800000, 0x0401f56f, 0x4031d800, 0x58ef400b,
2451 0x58ee580d, 0x58ec0002, 0x82000580, 0x00000200,
2452 0x0400055c, 0x59a00c06, 0x59a0140a, 0x59a0020b,
2453 0x8c000500, 0x04020031, 0x832e5c00, 0x00000004,
2454 0x41783800, 0x59a04a0a, 0x401c0000, 0x812c0400,
2455 0x50004000, 0x82201d00, 0x000000ff, 0x4c040000,
2456 0x0401f8ac, 0x5c000800, 0x0400002d, 0x80244840,
2457 0x04000028, 0x80081000, 0x82201d00, 0x0000ff00,
2458 0x800c1910, 0x4c040000, 0x0401f8a2, 0x5c000800,
2459 0x04000023, 0x80244840, 0x0400001e, 0x80081000,
2460 0x82201d00, 0x00ff0000, 0x800c1920, 0x4c040000,
2461 0x0401f898, 0x5c000800, 0x04000019, 0x80244840,
2462 0x04000014, 0x80081000, 0x82201d00, 0xff000000,
2463 0x800c1930, 0x4c040000, 0x0401f88e, 0x5c000800,
2464 0x0400000f, 0x80244840, 0x0400000a, 0x80081000,
2465 0x801c3800, 0x0401f7d5, 0x59a0020a, 0x82000500,
2466 0x000000ff, 0x40001800, 0x0401f882, 0x04000004,
2467 0x4a03c014, 0x03800000, 0x0401f4da, 0x4a03c014,
2468 0x03800000, 0x0401f523, 0x4803c856, 0x4a03c013,
2469 0x03800300, 0x4a03c014, 0x03800380, 0x59a00c06,
2470 0x82040580, 0x000000a0, 0x04000004, 0x82040580,
2471 0x000000a2, 0x0402006c, 0x59a0140a, 0x82080480,
2472 0x00000100, 0x04021068, 0x59a0020b, 0x8c000500,
2473 0x0402005c, 0x59a01a0a, 0x800c19c0, 0x04000062,
2474 0x820c0480, 0x00000041, 0x0402105f, 0x0201f800,
2475 0x00103a00, 0x04020006, 0x4a034406, 0x00000002,
2476 0x4a03c014, 0x03800000, 0x0401f502, 0x832e5c00,
2477 0x00000004, 0x41783800, 0x59a04a0a, 0x401c0000,
2478 0x812c0400, 0x40004000, 0x4c040000, 0x4c080000,
2479 0x0401f874, 0x5c001000, 0x5c000800, 0x04000047,
2480 0x44144000, 0x80244840, 0x0400002b, 0x80081000,
2481 0x4c040000, 0x4c080000, 0x0401f86a, 0x5c001000,
2482 0x5c000800, 0x0400003d, 0x50200000, 0x801428d0,
2483 0x80140540, 0x44004000, 0x80244840, 0x0400001e,
2484 0x80081000, 0x4c040000, 0x4c080000, 0x0401f85d,
2485 0x5c001000, 0x5c000800, 0x04000030, 0x50200000,
2486 0x801428e0, 0x80140540, 0x44004000, 0x80244840,
2487 0x04000011, 0x80081000, 0x4c040000, 0x4c080000,
2488 0x0401f850, 0x5c001000, 0x5c000800, 0x04000023,
2489 0x50200000, 0x801428f0, 0x80140540, 0x44004000,
2490 0x80244840, 0x04000004, 0x80081000, 0x801c3800,
2491 0x0401f7cb, 0x59a00a0a, 0x82040c00, 0x00000003,
2492 0x82040d00, 0x000000fc, 0x80040904, 0x59a00407,
2493 0x59a01207, 0x900811c0, 0x80081540, 0x59a00409,
2494 0x59a01a09, 0x900c19c0, 0x800c1d40, 0x4a03c014,
2495 0x03800000, 0x412c0000, 0x0201f000, 0x00103a28,
2496 0x0401f830, 0x04000005, 0x48174406, 0x4a03c014,
2497 0x03800000, 0x0401f463, 0x4a03c014, 0x03800000,
2498 0x0401f4ac, 0x4a03c014, 0x03800000, 0x0401f4ad,
2499 0x0401f836, 0x04000010, 0x0401f862, 0x0402000f,
2500 0x40080800, 0x0401f85f, 0x0402000c, 0x400c0800,
2501 0x0401f85c, 0x04020009, 0x0401f84b, 0x42000000,
2502 0x00030d40, 0x80000040, 0x040207ff, 0x82000540,
2503 0x00000001, 0x1c01f000, 0x0401f843, 0x80000580,
2504 0x0401f7fd, 0x0401f821, 0x0400000a, 0x82040d40,
2505 0x00000001, 0x0401f84b, 0x04020007, 0x0401f87e,
2506 0x0401f898, 0x0401f838, 0x82000540, 0x00000001,
2507 0x1c01f000, 0x0401f834, 0x80000580, 0x0401f7fd,
2508 0x40041800, 0x0401f811, 0x0400000c, 0x0401f83d,
2509 0x0402000b, 0x40080800, 0x0401f83a, 0x04020008,
2510 0x400c0800, 0x0401ffe8, 0x04000004, 0x0401f826,
2511 0x82000540, 0x00000001, 0x1c01f000, 0x0401f822,
2512 0x80000580, 0x0401f7fd, 0x4c040000, 0x42000800,
2513 0x00000064, 0x4a03c013, 0x03800300, 0x80040840,
2514 0x04000016, 0x59e00013, 0x82000500, 0x00000300,
2515 0x82000580, 0x00000300, 0x040207f7, 0x42000000,
2516 0x00000064, 0x80000040, 0x040207ff, 0x4a03c013,
2517 0x01000000, 0x42000000, 0x00000064, 0x80000040,
2518 0x040207ff, 0x4a03c013, 0x02000000, 0x82000540,
2519 0x00000001, 0x0401f002, 0x80000580, 0x5c000800,
2520 0x1c01f000, 0x4a03c013, 0x01000000, 0x42000000,
2521 0x00000064, 0x80000040, 0x040207ff, 0x4a03c013,
2522 0x02000200, 0x42000000, 0x00000064, 0x80000040,
2523 0x040207ff, 0x4a03c013, 0x01000100, 0x1c01f000,
2524 0x42002000, 0x00000008, 0x82040500, 0x00000080,
2525 0x800000c2, 0x82000540, 0x01000000, 0x4803c013,
2526 0x42000000, 0x00000064, 0x80000040, 0x040207ff,
2527 0x4a03c013, 0x02000200, 0x42000000, 0x00000064,
2528 0x80000040, 0x040207ff, 0x4a03c013, 0x02000000,
2529 0x800408c2, 0x80102040, 0x040207ec, 0x4a03c013,
2530 0x01000100, 0x42000000, 0x00000064, 0x80000040,
2531 0x040207ff, 0x4a03c013, 0x02000200, 0x42000000,
2532 0x00000064, 0x80000040, 0x040207ff, 0x59e00013,
2533 0x82000500, 0x00000100, 0x4a03c013, 0x02000000,
2534 0x4c040000, 0x42000800, 0x00000064, 0x59e00013,
2535 0x82000500, 0x00000100, 0x80040840, 0x04000003,
2536 0x80000540, 0x040207fa, 0x80000540, 0x5c000800,
2537 0x1c01f000, 0x4a03c013, 0x01000100, 0x42001000,
2538 0x00000008, 0x80000d80, 0x42000000, 0x00000064,
2539 0x80000040, 0x040207ff, 0x4a03c013, 0x02000200,
2540 0x42000000, 0x00000064, 0x80000040, 0x040207ff,
2541 0x59e00013, 0x82000500, 0x00000100, 0x80000110,
2542 0x800408c2, 0x80040d40, 0x4a03c013, 0x02000000,
2543 0x80081040, 0x040207ed, 0x40042800, 0x1c01f000,
2544 0x4a03c013, 0x01000100, 0x42000000, 0x00000064,
2545 0x80000040, 0x040207ff, 0x4a03c013, 0x02000200,
2546 0x42000000, 0x00000064, 0x80000040, 0x040207ff,
2547 0x4a03c013, 0x02000000, 0x1c01f000, 0x59a00407,
2548 0x59a80837, 0x48035037, 0x48074407, 0x59a00a09,
2549 0x82040480, 0x00000014, 0x04021003, 0x42000800,
2550 0x000007d0, 0x59a80038, 0x48075038, 0x48034209,
2551 0x0201f000, 0x001022c0, 0x836c0580, 0x00000000,
2552 0x0400000e, 0x59a80006, 0x59a00c06, 0x80041580,
2553 0x82081500, 0x00000040, 0x02000000, 0x001022c0,
2554 0x80080580, 0x48035006, 0x0201f800, 0x00100699,
2555 0x0201f000, 0x001022c0, 0x59a00406, 0x59a80806,
2556 0x48035006, 0x80040d80, 0x8c040d0c, 0x02020800,
2557 0x00100699, 0x59a00207, 0x48035007, 0x59a00407,
2558 0x48035008, 0x0201f000, 0x001022c0, 0x800409c0,
2559 0x04000005, 0x4a034406, 0x00000001, 0x0201f000,
2560 0x0010230c, 0x0201f800, 0x0010513b, 0x04020005,
2561 0x4a034406, 0x00000016, 0x0201f000, 0x0010230c,
2562 0x836c0580, 0x00000003, 0x04000005, 0x4a034406,
2563 0x00000007, 0x0201f000, 0x0010230c, 0x59a00c06,
2564 0x82040500, 0xffffff00, 0x02020000, 0x00102310,
2565 0x82041580, 0x000000ff, 0x04020007, 0x59a80010,
2566 0x82000500, 0x000000ff, 0x82001540, 0x0000ff00,
2567 0x0401f011, 0x82040400, 0x0010210e, 0x50000000,
2568 0x80000110, 0x82000580, 0x00000080, 0x02000000,
2569 0x00102310, 0x59a80010, 0x82000500, 0x000000ff,
2570 0x80041580, 0x02000000, 0x00102310, 0x840409c0,
2571 0x80041540, 0x0201f800, 0x0002075a, 0x04020005,
2572 0x4a034406, 0x00000003, 0x0201f000, 0x0010230c,
2573 0x48ee6021, 0x480a621c, 0x4a02641c, 0x0000bc09,
2574 0x4a026406, 0x00000001, 0x0201f800, 0x00103a00,
2575 0x04020007, 0x0201f800, 0x0002077d, 0x4a034406,
2576 0x00000002, 0x0201f000, 0x0010230c, 0x497a5a04,
2577 0x497a5805, 0x4a025c04, 0x00008000, 0x4a01d809,
2578 0x001027f9, 0x492e6008, 0x42027000, 0x00000032,
2579 0x0201f000, 0x000207a1, 0x800409c0, 0x04000005,
2580 0x4a034406, 0x00000001, 0x0201f000, 0x0010230c,
2581 0x0201f800, 0x0010513b, 0x04020005, 0x4a034406,
2582 0x00000016, 0x0201f000, 0x0010230c, 0x836c0580,
2583 0x00000003, 0x04000005, 0x4a034406, 0x00000007,
2584 0x0201f000, 0x0010230c, 0x59a00c06, 0x82040500,
2585 0xffffff00, 0x02020000, 0x00102310, 0x82041580,
2586 0x000000ff, 0x04020007, 0x59a80010, 0x82000500,
2587 0x000000ff, 0x82001540, 0x0000ff00, 0x0401f011,
2588 0x82040400, 0x0010210e, 0x50000000, 0x80000110,
2589 0x82000580, 0x00000080, 0x02000000, 0x00102310,
2590 0x59a80010, 0x82000500, 0x000000ff, 0x80041580,
2591 0x02000000, 0x00102310, 0x840409c0, 0x80041540,
2592 0x0201f800, 0x0002075a, 0x04020005, 0x4a034406,
2593 0x00000003, 0x0201f000, 0x0010230c, 0x48ee6021,
2594 0x480a621c, 0x4a02641c, 0x0000bc05, 0x4a026406,
2595 0x00000001, 0x0201f800, 0x00103a00, 0x04020007,
2596 0x0201f800, 0x0002077d, 0x4a034406, 0x00000002,
2597 0x0201f000, 0x0010230c, 0x497a5a04, 0x497a5805,
2598 0x4a025c04, 0x00008000, 0x4a01d809, 0x001027f9,
2599 0x492e6008, 0x42027000, 0x00000032, 0x0201f000,
2600 0x000207a1, 0x592c0005, 0x82000580, 0x01000000,
2601 0x02020000, 0x001022c0, 0x4a034406, 0x00000004,
2602 0x0201f000, 0x0010230c, 0x497b4406, 0x497b4207,
2603 0x0201f800, 0x00103b25, 0x04000008, 0x59a80066,
2604 0x59a8086a, 0x80040480, 0x59a80867, 0x48074406,
2605 0x80041480, 0x480b4207, 0x49674407, 0x59a8000e,
2606 0x48034209, 0x495f4409, 0x59a80020, 0x4803420b,
2607 0x0201f000, 0x001022c0, 0x800409c0, 0x04000005,
2608 0x4a034406, 0x00000001, 0x0201f000, 0x0010230c,
2609 0x59a00406, 0x8c000500, 0x0402000f, 0x59a80069,
2610 0x81640480, 0x04001008, 0x59a8000b, 0x81500580,
2611 0x04000009, 0x59a8006a, 0x59a81066, 0x80080580,
2612 0x04000005, 0x4a034406, 0x00000018, 0x0201f000,
2613 0x0010230c, 0x82000540, 0x00000001, 0x0201f800,
2614 0x001015fe, 0x0201f800, 0x00103c80, 0x0201f000,
2615 0x001022c0, 0x4803c856, 0x800409c0, 0x02020000,
2616 0x00102314, 0x59a00406, 0x8c00051e, 0x04000008,
2617 0x4803c856, 0x59a0020b, 0x82000480, 0x00000800,
2618 0x04001015, 0x0201f000, 0x00102310, 0x4803c856,
2619 0x59a0020b, 0x599c0a01, 0x80040480, 0x04021003,
2620 0x0201f000, 0x00102310, 0x59a8000e, 0x81640580,
2621 0x04000009, 0x4a034406, 0x00000018, 0x0201f000,
2622 0x0010230c, 0x4a034406, 0x00000005, 0x0201f000,
2623 0x0010230c, 0x59a80026, 0x8c00050a, 0x040007fa,
2624 0x59a00406, 0x8c00051e, 0x04000036, 0x0201f800,
2625 0x0002075a, 0x040007f4, 0x0201f800, 0x00103a00,
2626 0x040007f1, 0x497a5a04, 0x59a00406, 0x4802620a,
2627 0x59a00209, 0x4802640a, 0x59a00409, 0x4802620b,
2628 0x59a0020d, 0x4802620c, 0x59a0040d, 0x4802640c,
2629 0x59a0020e, 0x4802620d, 0x59a0040e, 0x4802640d,
2630 0x59a00210, 0x4802620e, 0x59a00410, 0x4802640e,
2631 0x59a0020b, 0x82000500, 0x0000fffc, 0x80000104,
2632 0x4802640b, 0x0401f9d9, 0x040007d7, 0x48ee6021,
2633 0x58ee580d, 0x5930020e, 0x59301c0e, 0x900c19c0,
2634 0x800c1d40, 0x5930020c, 0x5930140c, 0x900811c0,
2635 0x80081540, 0x592c0a05, 0x832c0400, 0x00000006,
2636 0x0201f800, 0x00103a25, 0x4a01d809, 0x001029e5,
2637 0x4a034000, 0x00000001, 0x49334001, 0x1c01f000,
2638 0x0201f800, 0x00106c55, 0x0201f800, 0x00100ae0,
2639 0x0401f86d, 0x497b5057, 0x4201d000, 0x00002710,
2640 0x0201f800, 0x001060c6, 0x59c40880, 0x4c040000,
2641 0x59c408a3, 0x4c040000, 0x497b4002, 0x0401f876,
2642 0x0401f893, 0x4a03a005, 0x10000000, 0x0401f8b4,
2643 0x0401f901, 0x04000048, 0x59c80001, 0x800001c0,
2644 0x040007fc, 0x59c80018, 0x82000500, 0xf0000000,
2645 0x59c00808, 0x82040d00, 0x0fffffff, 0x80040540,
2646 0x48038008, 0x0201f800, 0x00100ec1, 0x59c00006,
2647 0x4a038006, 0x10000000, 0x59c00009, 0x82000d00,
2648 0x00e00000, 0x04020024, 0x4a03900d, 0x00000000,
2649 0x59c80020, 0x82000500, 0xff000000, 0x82000580,
2650 0x32000000, 0x0402001c, 0x4a03900d, 0x00000001,
2651 0x59c80020, 0x82000500, 0xff000000, 0x82000580,
2652 0xe1000000, 0x04020014, 0x4a03900d, 0x00000000,
2653 0x59c80020, 0x82000500, 0x00ffffff, 0x4a03900d,
2654 0x00000000, 0x59c80821, 0x82040d00, 0x00ffffff,
2655 0x80040580, 0x04020008, 0x59a80010, 0x80040580,
2656 0x04020005, 0x59c40005, 0x82000500, 0x000000f0,
2657 0x04000006, 0x4803c856, 0x0401f8d7, 0x4a035057,
2658 0x00000001, 0x0401f002, 0x0401f8e1, 0x42000000,
2659 0x00000064, 0x80000040, 0x02000800, 0x001005d8,
2660 0x59c00807, 0x82040d00, 0x0000000c, 0x040007fa,
2661 0x0401f003, 0x4a035057, 0x00000001, 0x0401f8da,
2662 0x0201f800, 0x00106f36, 0x0401f818, 0x4201d000,
2663 0x000186a0, 0x0201f800, 0x001060c6, 0x5c000800,
2664 0x480788a3, 0x5c000800, 0x48078880, 0x59a80057,
2665 0x800001c0, 0x02000000, 0x001022c0, 0x0201f000,
2666 0x00102318, 0x599c0201, 0x48035059, 0x41780800,
2667 0x42001000, 0x00003b10, 0x0201f800, 0x001066a0,
2668 0x480b505a, 0x1c01f000, 0x0201f800, 0x00106c4b,
2669 0x59b800ea, 0x82000500, 0x00000007, 0x82000580,
2670 0x00000003, 0x04020003, 0x4a0370e8, 0x00000001,
2671 0x1c01f000, 0x42038000, 0x00007700, 0x4a038006,
2672 0x30000000, 0x59c00007, 0x8c00050a, 0x040207fe,
2673 0x59c00006, 0x59a00209, 0x59a00c09, 0x900409c0,
2674 0x80040d40, 0x48078001, 0x59a0020e, 0x59a00c0e,
2675 0x900409c0, 0x80040d40, 0x48078000, 0x59a0020b,
2676 0x82000500, 0x0000fffc, 0x48038002, 0x48038003,
2677 0x48038005, 0x497b9009, 0x59e00003, 0x82000540,
2678 0x00008060, 0x4803c003, 0x1c01f000, 0x41780800,
2679 0x8007a0ca, 0x83d3a400, 0x00007600, 0x42000800,
2680 0x00000040, 0x0201f800, 0x00101345, 0x4a03a00a,
2681 0x00000001, 0x4a03a005, 0x20000000, 0x59d00006,
2682 0x4a03a005, 0x30000000, 0x59d00006, 0x8c00050a,
2683 0x040207fe, 0x59d00005, 0x59a00210, 0x59a00c10,
2684 0x900409c0, 0x80040d40, 0x4807a001, 0x59a0020d,
2685 0x59a00c0d, 0x900409c0, 0x80040d40, 0x4807a000,
2686 0x59a0020b, 0x82000500, 0x0000fffc, 0x4803a003,
2687 0x4803a002, 0x4803a008, 0x1c01f000, 0x59a00002,
2688 0x4803c857, 0x800001c0, 0x0402004a, 0x59a8005a,
2689 0x48038880, 0x59c400a3, 0x82000540, 0x00002008,
2690 0x8400053a, 0x480388a3, 0x59c40008, 0x8400054e,
2691 0x82000500, 0xffffffe1, 0x48038808, 0x59c80040,
2692 0x84000534, 0x48039040, 0x0401f902, 0x04020013,
2693 0x59a80010, 0x800000d0, 0x82000540, 0x00000011,
2694 0x48039120, 0x59a80010, 0x82000500, 0x00ffffff,
2695 0x82000540, 0x32000000, 0x48039121, 0x4a039123,
2696 0xe1290008, 0x59a80010, 0x82000500, 0x00ffffff,
2697 0x48039122, 0x0401f016, 0x59a80010, 0x82000500,
2698 0x000000ff, 0x900009c0, 0x840001c0, 0x80040540,
2699 0x82000540, 0x00000000, 0x48039120, 0x59a80010,
2700 0x82000500, 0x000000ff, 0x82000540, 0x01000000,
2701 0x48039121, 0x4a039123, 0x08210008, 0x59a80010,
2702 0x82000500, 0x000000ff, 0x48039122, 0x497b9124,
2703 0x59a80c5b, 0x80040800, 0x4807545b, 0x900409c0,
2704 0x82040540, 0x0000aaaa, 0x48039125, 0x497b9126,
2705 0x497b9127, 0x0401f8cf, 0x04020004, 0x4a039100,
2706 0x0000e980, 0x0401f003, 0x4a039100, 0x0000e9a0,
2707 0x1c01f000, 0x82000540, 0x00000001, 0x0402500d,
2708 0x4203e000, 0x80000000, 0x40e81000, 0x41780800,
2709 0x42000000, 0x00000064, 0x0201f800, 0x001066a0,
2710 0x59940024, 0x80080400, 0x48032824, 0x80000580,
2711 0x1c01f000, 0x4d900000, 0x4dd00000, 0x4da40000,
2712 0x4d140000, 0x417a3000, 0x0201f800, 0x001070d8,
2713 0x0201f800, 0x00106dc3, 0x5c022800, 0x5c034800,
2714 0x5c03a000, 0x5c032000, 0x1c01f000, 0x59c80007,
2715 0x8c000500, 0x04000003, 0x4a03900d, 0x00000030,
2716 0x1c01f000, 0x4a038805, 0x00020000, 0x42000800,
2717 0x0000003c, 0x0201f800, 0x00101345, 0x4a038891,
2718 0x0000ffff, 0x59c80035, 0x48039035, 0x4a03900d,
2719 0x00000040, 0x42038000, 0x00007700, 0x0201f800,
2720 0x00100ec1, 0x42038000, 0x00007720, 0x0201f800,
2721 0x00100ec1, 0x4a03a005, 0x20000000, 0x4a03a005,
2722 0x30000000, 0x59d00806, 0x8c040d0a, 0x040207fe,
2723 0x1c01f000, 0x4d300000, 0x4031d800, 0x58ef400b,
2724 0x58ee580d, 0x58ec0002, 0x82000580, 0x00000200,
2725 0x5c026000, 0x02000000, 0x00102304, 0x4d300000,
2726 0x59a26001, 0x59a00000, 0x4000b000, 0x80000000,
2727 0x48034000, 0x592c0001, 0x80000540, 0x0400001e,
2728 0x40025800, 0x8058b040, 0x040207fb, 0x58ec1007,
2729 0x58ec1808, 0x592c0a05, 0x4d2c0000, 0x58ec000d,
2730 0x40025800, 0x592c0204, 0x5c025800, 0x82000580,
2731 0x00000103, 0x04000008, 0x832c0400, 0x00000006,
2732 0x0201f800, 0x00103a25, 0x4a01d809, 0x001029e5,
2733 0x0401f007, 0x832c0400, 0x00000006, 0x0201f800,
2734 0x00103a28, 0x4a01d809, 0x001029e5, 0x5c026000,
2735 0x1c01f000, 0x58ec000d, 0x40025800, 0x592c0204,
2736 0x82000580, 0x00000103, 0x04020006, 0x0201f800,
2737 0x0002077d, 0x5c026000, 0x0201f000, 0x001022c0,
2738 0x58ec000d, 0x40025800, 0x592c0404, 0x8400055e,
2739 0x48025c04, 0x42028800, 0x000007fd, 0x42003000,
2740 0x00fffffd, 0x0201f800, 0x001045a6, 0x04000003,
2741 0x80000580, 0x0401f004, 0x59a26001, 0x0201f800,
2742 0x0010937d, 0x5c026000, 0x02000000, 0x0010230c,
2743 0x4d300000, 0x4a01d809, 0x00102a38, 0x0401f7dc,
2744 0x592c0005, 0x82000580, 0x01000000, 0x02000000,
2745 0x00102318, 0x4d300000, 0x59a26001, 0x5930020b,
2746 0x59301c0a, 0x900001c0, 0x800c1d40, 0x5930040d,
2747 0x5930120d, 0x900001c0, 0x80081540, 0x592c0a05,
2748 0x832c0400, 0x00000006, 0x0201f800, 0x00103a28,
2749 0x4a01d809, 0x001029e5, 0x4a034000, 0x00000001,
2750 0x5c026000, 0x1c01f000, 0x4933c857, 0x4c300000,
2751 0x5930040b, 0x82000c80, 0x0000000e, 0x04001004,
2752 0x4a025a05, 0x0000000e, 0x0401f003, 0x48025a05,
2753 0x0401f00c, 0x800409c0, 0x0400000a, 0x4c040000,
2754 0x0201f800, 0x00103a00, 0x5c000800, 0x04000003,
2755 0x40040000, 0x0401f7f0, 0x80000580, 0x0401f003,
2756 0x82000540, 0x00000001, 0x5c006000, 0x1c01f000,
2757 0x59a00206, 0x82000580, 0x00000044, 0x1c01f000,
2758 0x4807c857, 0x800409c0, 0x0400000c, 0x0201f800,
2759 0x00101650, 0x04020009, 0x42000000, 0x00000002,
2760 0x0201f800, 0x0010188c, 0x42000000, 0x00000002,
2761 0x0201f800, 0x00101821, 0x59a00406, 0x82000500,
2762 0x00000007, 0x0c01f001, 0x00102a8c, 0x00102aa1,
2763 0x00102ab7, 0x00102a8a, 0x00102a8a, 0x00102a8a,
2764 0x00102a8a, 0x00102a8a, 0x0201f000, 0x00102310,
2765 0x42000800, 0x000000c0, 0x0201f800, 0x0010193f,
2766 0x82040540, 0x00000002, 0x42000800, 0x000000c0,
2767 0x0201f800, 0x00101944, 0x42000800, 0x00000000,
2768 0x0201f800, 0x0010193f, 0x82040540, 0x00000008,
2769 0x42000800, 0x00000000, 0x0201f800, 0x00101944,
2770 0x0401f00b, 0x42000800, 0x000000c0, 0x0201f800,
2771 0x0010193f, 0x82040540, 0x00000001, 0x42000800,
2772 0x000000c0, 0x0201f800, 0x00101944, 0x59c80040,
2773 0x4c000000, 0x59a80010, 0x4c000000, 0x59c400a3,
2774 0x4c000000, 0x59c40008, 0x4c000000, 0x0401f911,
2775 0x04000021, 0x0201f800, 0x001005d8, 0x59a80821,
2776 0x800409c0, 0x02020000, 0x00102314, 0x0201f800,
2777 0x0010513b, 0x04020005, 0x4a034406, 0x00000016,
2778 0x0201f000, 0x0010230c, 0x836c0580, 0x00000003,
2779 0x02020000, 0x00102314, 0x59c408a4, 0x82040d00,
2780 0x0000000f, 0x82040580, 0x00000000, 0x02020000,
2781 0x00102314, 0x59c80040, 0x4c000000, 0x59a80010,
2782 0x4c000000, 0x59c400a3, 0x4c000000, 0x59c40008,
2783 0x4c000000, 0x59c40080, 0x4c000000, 0x59a0020f,
2784 0x59a0bc0f, 0x905cb9c0, 0x805cbd40, 0x41784800,
2785 0x41785000, 0x41785800, 0x41789000, 0x41789800,
2786 0x0401fe21, 0x0201f800, 0x00106c55, 0x0201f800,
2787 0x00100ae0, 0x4178c000, 0x497b4002, 0x0401f95c,
2788 0x0401f9aa, 0x59a0020c, 0x59a00c0c, 0x80040d40,
2789 0x04000002, 0x0401f9fb, 0x0401f9fa, 0x0401fe68,
2790 0x8060c1c0, 0x04020014, 0x0401fa98, 0x0401feb2,
2791 0x0402000e, 0x0201f800, 0x001018d3, 0x04020008,
2792 0x4a034406, 0x00000017, 0x0201f800, 0x0010230c,
2793 0x4203e000, 0x50000000, 0x0401f000, 0x42005800,
2794 0x0000aaaa, 0x0401f058, 0x59c80001, 0x800001c0,
2795 0x040007ee, 0x59c80801, 0x800409c0, 0x04000006,
2796 0x0401fa70, 0x40240000, 0x80280540, 0x802c0540,
2797 0x0402004d, 0x59a00002, 0x82000580, 0xfeedbeef,
2798 0x04000004, 0x42008800, 0x10000000, 0x0401f003,
2799 0x42008800, 0x10000004, 0x0401fa19, 0x4a034002,
2800 0xfeedbeef, 0x0401fa71, 0x0401fa97, 0x0401fea8,
2801 0x59c40005, 0x8c000534, 0x04000004, 0x42005800,
2802 0x0000bbbb, 0x0401f038, 0x0401fe83, 0x04020007,
2803 0x42005800, 0x0000cccc, 0x485f420f, 0x905cb9c0,
2804 0x485f440f, 0x0401f030, 0x59a0040c, 0x800001c0,
2805 0x0400000e, 0x59a26000, 0x5930000d, 0x800001c0,
2806 0x040207be, 0x59a26001, 0x5930080d, 0x800409c0,
2807 0x040207ba, 0x804891c0, 0x040207b8, 0x804c99c0,
2808 0x040207b6, 0x0401f87a, 0x805cb840, 0x04000005,
2809 0x40240000, 0x80280540, 0x802c0540, 0x0402001a,
2810 0x42000000, 0x00030d40, 0x80000040, 0x04020012,
2811 0x59c00007, 0x82000500, 0x000501c0, 0x0402000b,
2812 0x0201f800, 0x001018d3, 0x04020008, 0x4a034406,
2813 0x00000017, 0x0201f800, 0x0010230c, 0x4203e000,
2814 0x50000000, 0x0401f000, 0x42005800, 0x0000dddd,
2815 0x0401f005, 0x59c00807, 0x82040d00, 0x0000000c,
2816 0x040007ea, 0x0401fe5c, 0x59a0040c, 0x800001c0,
2817 0x04000002, 0x0401f856, 0x0401fe6b, 0x40240000,
2818 0x80280540, 0x802c0540, 0x04020003, 0x805cb9c0,
2819 0x04020781, 0x0201f800, 0x00106f36, 0x0401fda3,
2820 0x4201d000, 0x000186a0, 0x0201f800, 0x001060c6,
2821 0x5c000800, 0x48078880, 0x5c000800, 0x48078808,
2822 0x5c000800, 0x480788a3, 0x5c000800, 0x48075010,
2823 0x5c000800, 0x48079040, 0x0201f800, 0x00100969,
2824 0x59a00406, 0x82000500, 0x00000003, 0x82000580,
2825 0x00000002, 0x0400002c, 0x42000800, 0x000000c0,
2826 0x0201f800, 0x0010193f, 0x82040500, 0xfffffffc,
2827 0x42000800, 0x000000c0, 0x0201f800, 0x00101944,
2828 0x42000800, 0x00000000, 0x0201f800, 0x0010193f,
2829 0x82040500, 0xfffffff7, 0x42000800, 0x00000000,
2830 0x0201f800, 0x00101944, 0x42000800, 0x00000000,
2831 0x0201f800, 0x0010193f, 0x82040500, 0xfffffffb,
2832 0x42000800, 0x00000000, 0x0201f800, 0x00101944,
2833 0x4a0388a7, 0x0000f7f7, 0x42006000, 0xbeffffff,
2834 0x42006800, 0x80018000, 0x0201f800, 0x0010427d,
2835 0x42006000, 0xfffeffff, 0x41786800, 0x0201f800,
2836 0x0010427d, 0x402c0000, 0x80280540, 0x80240540,
2837 0x02000000, 0x001022c0, 0x48274406, 0x482b4207,
2838 0x482f4407, 0x0201f000, 0x0010231c, 0x59a26000,
2839 0x813261c0, 0x0400000e, 0x59325808, 0x812e59c0,
2840 0x0400000b, 0x0201f800, 0x0002077d, 0x0201f800,
2841 0x001007fd, 0x59a26001, 0x59325808, 0x0201f800,
2842 0x0002077d, 0x0201f800, 0x001007fd, 0x1c01f000,
2843 0x42000800, 0x000000ef, 0x0201f800, 0x001015eb,
2844 0x59c400a3, 0x8400055a, 0x8400053a, 0x480388a3,
2845 0x0201f800, 0x0010163b, 0x0402000a, 0x42000000,
2846 0x00000001, 0x0201f800, 0x0010188c, 0x42000000,
2847 0x00000001, 0x0201f800, 0x00101821, 0x0401f013,
2848 0x0201f800, 0x00101642, 0x04020008, 0x41780000,
2849 0x0201f800, 0x0010188c, 0x41780000, 0x0201f800,
2850 0x00101821, 0x0401f009, 0x42000000, 0x00000002,
2851 0x0201f800, 0x0010188c, 0x42000000, 0x00000002,
2852 0x0201f800, 0x00101821, 0x42000800, 0x00000000,
2853 0x0201f800, 0x0010193f, 0x82040540, 0x00000004,
2854 0x42000800, 0x00000000, 0x0201f800, 0x00101944,
2855 0x4201d000, 0x00000014, 0x0201f800, 0x0010608e,
2856 0x59c40008, 0x8400054e, 0x82000500, 0xffffffe1,
2857 0x48038808, 0x4a0388a7, 0x0000f7f7, 0x42001000,
2858 0x04000001, 0x0201f800, 0x0010193d, 0x42006000,
2859 0xbe20bfff, 0x42006800, 0x80018000, 0x0201f800,
2860 0x0010427d, 0x42006000, 0xfffeffff, 0x41786800,
2861 0x0201f800, 0x0010427d, 0x4200b000, 0x00001388,
2862 0x4201d000, 0x00000014, 0x4c580000, 0x0201f800,
2863 0x0010608e, 0x0201f800, 0x001018d3, 0x5c00b000,
2864 0x04000004, 0x8058b040, 0x040207f6, 0x0401f025,
2865 0x59c40005, 0x8c000534, 0x04020007, 0x59c400a4,
2866 0x82000500, 0x0000000f, 0x82000580, 0x00000008,
2867 0x0402001c, 0x42006000, 0x00020000, 0x0201f800,
2868 0x00104282, 0x4201d000, 0x00000064, 0x0201f800,
2869 0x0010608e, 0x42006000, 0xfeffffff, 0x42006800,
2870 0x02000000, 0x0201f800, 0x0010427d, 0x42006000,
2871 0xfdffffff, 0x41786800, 0x0201f800, 0x0010427d,
2872 0x4a038805, 0x04000001, 0x59c400a4, 0x82000500,
2873 0x0000000f, 0x82000580, 0x00000000, 0x04000003,
2874 0x82000540, 0x00000001, 0x1c01f000, 0x4803c856,
2875 0x42038000, 0x00007700, 0x0201f800, 0x00100ec1,
2876 0x59c00006, 0x59a0040c, 0x800001c0, 0x0400003f,
2877 0x59a03c0c, 0x59a00209, 0x59a01c09, 0x900c19c0,
2878 0x800c1d40, 0x59a0020e, 0x59a0240e, 0x901021c0,
2879 0x80102540, 0x59a0020b, 0x82000500, 0x0000fffc,
2880 0x59a0140b, 0x900811c0, 0x80081540, 0x480b8003,
2881 0x0201f800, 0x0002075a, 0x02000800, 0x001005d8,
2882 0x49334000, 0x0201f800, 0x001007e4, 0x4a025a04,
2883 0x00000018, 0x4a025805, 0x00abcdef, 0x492e6008,
2884 0x492e600b, 0x481e600d, 0x4a02600c, 0x00000004,
2885 0x832c0400, 0x00000011, 0x4802600a, 0x42001000,
2886 0x0000000c, 0x821c0d80, 0x00000001, 0x04000004,
2887 0x801c3840, 0x0401f963, 0x0401f004, 0x41783800,
2888 0x0401f960, 0x0401f011, 0x821c0c80, 0x00000005,
2889 0x04001005, 0x40043800, 0x42001000, 0x0000003c,
2890 0x0401f006, 0x80001580, 0x82081400, 0x0000000c,
2891 0x801c3840, 0x040207fd, 0x832c0400, 0x00000005,
2892 0x0401f950, 0x040207f1, 0x497b9009, 0x59e00003,
2893 0x82000540, 0x00008060, 0x4803c003, 0x4a038009,
2894 0x00e00000, 0x1c01f000, 0x4803c856, 0x41780800,
2895 0x8007a0ca, 0x83d3a400, 0x00007600, 0x42000800,
2896 0x00000040, 0x0201f800, 0x00101345, 0x4a03a00a,
2897 0x00000001, 0x4a03a005, 0x20000000, 0x59d00006,
2898 0x4a03a005, 0x30000000, 0x59d00006, 0x8c00050a,
2899 0x040207fe, 0x59d00005, 0x59a0020c, 0x800001c0,
2900 0x0400003f, 0x59a03a0c, 0x59a00210, 0x59a01c10,
2901 0x900c19c0, 0x800c1d40, 0x59a0020d, 0x59a0240d,
2902 0x901021c0, 0x80102540, 0x59a0120b, 0x82081500,
2903 0x0000fffc, 0x59a0040b, 0x900001c0, 0x80081540,
2904 0x480ba003, 0x0201f800, 0x0002075a, 0x02000800,
2905 0x001005d8, 0x49334001, 0x0201f800, 0x001007e4,
2906 0x4a025a04, 0x00000018, 0x4a025805, 0x00abcdef,
2907 0x492e6008, 0x492e600b, 0x481e600d, 0x4a02600c,
2908 0x00000004, 0x832c0400, 0x00000011, 0x4802600a,
2909 0x42001000, 0x0000000c, 0x821c0d80, 0x00000001,
2910 0x04000004, 0x801c3840, 0x0401f906, 0x0401f004,
2911 0x41783800, 0x0401f903, 0x0401f011, 0x821c0c80,
2912 0x00000005, 0x04001005, 0x40043800, 0x42001000,
2913 0x0000003c, 0x0401f006, 0x80001580, 0x82081400,
2914 0x0000000c, 0x801c3840, 0x040207fd, 0x832c0400,
2915 0x00000005, 0x0401f8f3, 0x040207f1, 0x1c01f000,
2916 0x4803c856, 0x59a0020c, 0x800001c0, 0x04000024,
2917 0x824c0580, 0x00000002, 0x04000040, 0x59a26001,
2918 0x5930380d, 0x801c39c0, 0x0400003c, 0x801c3840,
2919 0x481e600d, 0x5932580b, 0x5930080a, 0x50042000,
2920 0x58041801, 0x58041002, 0x82081500, 0xfffffffc,
2921 0x5930000c, 0x80000000, 0x82000d80, 0x00000005,
2922 0x04020009, 0x497a600c, 0x592e5801, 0x812e59c0,
2923 0x0400001a, 0x492e600b, 0x832c0c00, 0x00000005,
2924 0x0401f005, 0x4802600c, 0x5930080a, 0x82040c00,
2925 0x00000003, 0x4806600a, 0x0401f010, 0x59a0120b,
2926 0x82081500, 0x0000fffc, 0x59a0040b, 0x900001c0,
2927 0x80081540, 0x480ba003, 0x59a0020d, 0x59a0240d,
2928 0x901021c0, 0x80102540, 0x59a00210, 0x59a01c10,
2929 0x900c19c0, 0x800c1d40, 0x4201d000, 0x00003a98,
2930 0x0201f800, 0x001060c6, 0x480ba002, 0x59a80059,
2931 0x4803a008, 0x4813a000, 0x480fa001, 0x4a03a005,
2932 0x10000000, 0x02005800, 0x001005d8, 0x804c9800,
2933 0x82000540, 0x00000001, 0x1c01f000, 0x4847c857,
2934 0x59a0040c, 0x800001c0, 0x04000024, 0x82480580,
2935 0x00000002, 0x04000042, 0x59a26000, 0x5930380d,
2936 0x801c39c0, 0x0400003e, 0x801c3840, 0x481e600d,
2937 0x5932580b, 0x5930080a, 0x50042000, 0x58041801,
2938 0x58041002, 0x82081500, 0xfffffffc, 0x5930000c,
2939 0x80000000, 0x82000d80, 0x00000005, 0x04020009,
2940 0x497a600c, 0x592e5801, 0x812e59c0, 0x0400001d,
2941 0x492e600b, 0x832c0c00, 0x00000005, 0x0401f005,
2942 0x4802600c, 0x5930080a, 0x82040c00, 0x00000003,
2943 0x4806600a, 0x0401f013, 0x82440580, 0x10000000,
2944 0x0402001f, 0x59a0020e, 0x59a0240e, 0x901021c0,
2945 0x80102540, 0x59a00209, 0x59a01c09, 0x900c19c0,
2946 0x800c1d40, 0x59a0020b, 0x82000500, 0x0000fffc,
2947 0x59a0140b, 0x900811c0, 0x80081540, 0x480b8003,
2948 0x48138000, 0x480f8001, 0x480b8002, 0x59c80018,
2949 0x82000500, 0xf0000000, 0x59c02008, 0x82102500,
2950 0x0fffffff, 0x80100540, 0x48038008, 0x48478006,
2951 0x80489000, 0x8260c540, 0x00000001, 0x1c01f000,
2952 0x59c00009, 0x4803c857, 0x82000d00, 0x00e00000,
2953 0x0400000d, 0x485f420f, 0x905cb9c0, 0x485f440f,
2954 0x8c00052e, 0x04000002, 0x80285000, 0x8c00052c,
2955 0x04000002, 0x80244800, 0x8c00052a, 0x04000002,
2956 0x802c5800, 0x1c01f000, 0x59a0020c, 0x800001c0,
2957 0x04000024, 0x59d00806, 0x4807c857, 0x8c040d3e,
2958 0x04000020, 0x4a03a005, 0x20000000, 0x4a03a005,
2959 0x30000000, 0x59d00806, 0x8c040d0a, 0x040207fe,
2960 0x824c0480, 0x00000003, 0x02021800, 0x001005d8,
2961 0x404c0000, 0x0c01f001, 0x00102da1, 0x00102da3,
2962 0x00102da9, 0x0201f800, 0x001005d8, 0x80000040,
2963 0x40009800, 0x0401ff43, 0x0400000a, 0x0401ff41,
2964 0x0401f008, 0x80000040, 0x40009800, 0x59d00806,
2965 0x4807c857, 0x8c040d3e, 0x040207e3, 0x0401ff39,
2966 0x1c01f000, 0x59a0040c, 0x800001c0, 0x04000024,
2967 0x59c00807, 0x4807c857, 0x8c040d3e, 0x04000020,
2968 0x59c00807, 0x4a038006, 0x20000000, 0x82480480,
2969 0x00000003, 0x02021800, 0x001005d8, 0x40480000,
2970 0x0c01f001, 0x00102dc4, 0x00102dc6, 0x00102dce,
2971 0x0201f800, 0x001005d8, 0x80000040, 0x40009000,
2972 0x42008800, 0x10000004, 0x0401ff65, 0x0400000c,
2973 0x0401ff63, 0x0401f00a, 0x80000040, 0x40009000,
2974 0x59c00807, 0x4807c857, 0x8c040d3e, 0x040207e5,
2975 0x42008800, 0x10000004, 0x0401ff59, 0x1c01f000,
2976 0x492fc857, 0x4000a800, 0x4a03b805, 0x20000000,
2977 0x59dc0006, 0x4a03b805, 0x30000000, 0x4813b800,
2978 0x480fb801, 0x480bb802, 0x4857b803, 0x4a03b805,
2979 0x30000002, 0x59dc0006, 0x4a03b805, 0x70000001,
2980 0x59dc0006, 0x4a03b805, 0x10000000, 0x59dc0006,
2981 0x8c00053e, 0x040007fe, 0x4a03b805, 0x20000000,
2982 0x59dc0006, 0x59dc2000, 0x59dc1801, 0x801c39c0,
2983 0x0400000a, 0x4d2c0000, 0x0201f800, 0x001007e4,
2984 0x5c000800, 0x02000800, 0x001005d8, 0x4a025a04,
2985 0x0000000a, 0x492c0801, 0x1c01f000, 0x42006000,
2986 0x00102fb2, 0x0201f800, 0x00101345, 0x4a03902c,
2987 0x00200000, 0x4200b000, 0x000001f4, 0x59c8002c,
2988 0x8c00052c, 0x04000007, 0x8058b040, 0x040207fc,
2989 0x42000000, 0x00004003, 0x41781000, 0x0401f196,
2990 0x50301000, 0x41784800, 0x4a03902d, 0x00008000,
2991 0x4200b000, 0x000001f4, 0x59c8002c, 0x8c000534,
2992 0x04000007, 0x8058b040, 0x040207fc, 0x42000000,
2993 0x00004003, 0x41781000, 0x0401f187, 0x0401f8f8,
2994 0x80244800, 0x40240000, 0x82000580, 0x000003b1,
2995 0x040207fb, 0x0401f988, 0x41784800, 0x0401f920,
2996 0x80244800, 0x40240000, 0x82000580, 0x000003b1,
2997 0x040207fb, 0x80306000, 0x82300580, 0x00102fb4,
2998 0x040207e0, 0x59a80863, 0x800409c0, 0x04000007,
2999 0x42000000, 0x00004004, 0x42001000, 0x00000002,
3000 0x59a81862, 0x0401f16c, 0x42006000, 0x00102fb2,
3001 0x4a035064, 0x00000004, 0x50301000, 0x41784800,
3002 0x4a03902d, 0x00004000, 0x4200b000, 0x000001f4,
3003 0x59c8002c, 0x8c000532, 0x04000007, 0x8058b040,
3004 0x040207fc, 0x42000000, 0x00004003, 0x41781000,
3005 0x0401f159, 0x0401f8ca, 0x80244800, 0x40240000,
3006 0x82000580, 0x00000154, 0x040207fb, 0x0401f95a,
3007 0x41784800, 0x0401f8f2, 0x80244800, 0x40240000,
3008 0x82000580, 0x00000154, 0x040207fb, 0x80306000,
3009 0x82300580, 0x00102fb4, 0x040207e0, 0x59a80863,
3010 0x800409c0, 0x04000007, 0x42000000, 0x00004004,
3011 0x42001000, 0x00000004, 0x59a81862, 0x0401f13e,
3012 0x42006000, 0x00102fb2, 0x497b5064, 0x50301000,
3013 0x41784800, 0x4a03902d, 0x00001000, 0x4200b000,
3014 0x000001f4, 0x59c8002c, 0x8c00052e, 0x04000007,
3015 0x8058b040, 0x040207fc, 0x42000000, 0x00004003,
3016 0x41781000, 0x0401f12c, 0x0401f89d, 0x80244800,
3017 0x40240000, 0x82000580, 0x00000088, 0x040207fb,
3018 0x0401f92d, 0x41784800, 0x0401f8c5, 0x80244800,
3019 0x40240000, 0x82000580, 0x00000088, 0x040207fb,
3020 0x80306000, 0x82300580, 0x00102fb4, 0x040207e0,
3021 0x59a80863, 0x800409c0, 0x04000007, 0x42000000,
3022 0x00004004, 0x42001000, 0x00000001, 0x59a81862,
3023 0x0401f111, 0x42006000, 0x00102fb2, 0x50301000,
3024 0x41784800, 0x4a03902d, 0x00000800, 0x0401f87c,
3025 0x80244800, 0x40240000, 0x82000580, 0x00000018,
3026 0x040207fb, 0x0401f90c, 0x41784800, 0x0401f8a4,
3027 0x80244800, 0x40240000, 0x82000580, 0x00000018,
3028 0x040207fb, 0x80306000, 0x82300580, 0x00102fb4,
3029 0x040207eb, 0x59a80863, 0x800409c0, 0x04000007,
3030 0x42000000, 0x00004004, 0x42001000, 0x00000010,
3031 0x59a81862, 0x0401f0f0, 0x42006000, 0x00102fb2,
3032 0x50301000, 0x41784800, 0x4a03902d, 0x00000400,
3033 0x0401f85b, 0x80244800, 0x40240000, 0x82000580,
3034 0x00000088, 0x040207fb, 0x0401f8eb, 0x41784800,
3035 0x0401f883, 0x80244800, 0x40240000, 0x82000580,
3036 0x00000088, 0x040207fb, 0x80306000, 0x82300580,
3037 0x00102fb4, 0x040207eb, 0x59a80863, 0x800409c0,
3038 0x04000007, 0x42000000, 0x00004004, 0x42001000,
3039 0x00000008, 0x59a81862, 0x0401f0cf, 0x42006000,
3040 0x00102fb2, 0x50301000, 0x41784800, 0x4a03902d,
3041 0x00002000, 0x4200b000, 0x000001f4, 0x59c8002c,
3042 0x8c000530, 0x04000007, 0x8058b040, 0x040207fc,
3043 0x42000000, 0x00004003, 0x41781000, 0x0401f0be,
3044 0x59c8002c, 0x82000500, 0xffe0ffff, 0x82080d00,
3045 0x001f0000, 0x80040540, 0x4803902c, 0x0401f828,
3046 0x80244800, 0x40240000, 0x82000580, 0x00000110,
3047 0x040207fb, 0x0401f8b8, 0x41784800, 0x0401f850,
3048 0x59c80034, 0x82080d00, 0x001f0000, 0x82000500,
3049 0x001f0000, 0x80040580, 0x04000006, 0x59a80063,
3050 0x80000000, 0x48035063, 0x40240000, 0x48035062,
3051 0x80244800, 0x40240000, 0x82000580, 0x00000110,
3052 0x040207ef, 0x80306000, 0x82300580, 0x00102fb4,
3053 0x040207cd, 0x59a80863, 0x800409c0, 0x04000006,
3054 0x42000000, 0x00004004, 0x42001000, 0x00000020,
3055 0x59a81862, 0x0201f000, 0x001022c0, 0x59c8002c,
3056 0x82000500, 0xffff0000, 0x82080d00, 0x0000ffff,
3057 0x80040540, 0x4803902c, 0x40080000, 0x48039028,
3058 0x48039029, 0x59a80064, 0x82000580, 0x00000004,
3059 0x04000004, 0x40080000, 0x4803902a, 0x4803902b,
3060 0x59c8082d, 0x82040d00, 0xfffffc00, 0x40240000,
3061 0x80040d40, 0x4807902d, 0x4200b000, 0x000001f4,
3062 0x59c8002c, 0x82000500, 0x18000000, 0x04000007,
3063 0x8058b040, 0x040207fb, 0x42000000, 0x00004003,
3064 0x41781000, 0x0401f06c, 0x4a03902e, 0x00000001,
3065 0x4200b000, 0x000001f4, 0x59c8002e, 0x8c000500,
3066 0x04000006, 0x8058b040, 0x040207fc, 0x42000000,
3067 0x00004003, 0x0401f060, 0x1c01f000, 0x41783800,
3068 0x59c8082d, 0x82040d00, 0xfffffc00, 0x40240000,
3069 0x80040d40, 0x4807902d, 0x4200b000, 0x000001f4,
3070 0x59c8002c, 0x82000500, 0x18000000, 0x04000007,
3071 0x8058b040, 0x040207fb, 0x42000000, 0x00004003,
3072 0x41781000, 0x0401f04c, 0x59c80030, 0x59c80830,
3073 0x80040580, 0x040207fd, 0x40041800, 0x59c80031,
3074 0x59c80831, 0x80040580, 0x040207fd, 0x40042000,
3075 0x59c80032, 0x59c80832, 0x80040580, 0x040207fd,
3076 0x40042800, 0x59c80033, 0x59c80833, 0x80040580,
3077 0x040207fd, 0x40043000, 0x400c0000, 0x80080580,
3078 0x04000002, 0x801c3800, 0x40100000, 0x80080580,
3079 0x04000002, 0x801c3800, 0x59a80064, 0x82000580,
3080 0x00000004, 0x04000009, 0x40140000, 0x80080580,
3081 0x04000002, 0x801c3800, 0x40180000, 0x80080580,
3082 0x04000002, 0x801c3800, 0x59a80064, 0x82000580,
3083 0x00000004, 0x0400000d, 0x59c80034, 0x59c80834,
3084 0x80040580, 0x040207fd, 0x82040500, 0x0000ffff,
3085 0x82080d00, 0x0000ffff, 0x80040580, 0x0400000e,
3086 0x801c3800, 0x0401f00c, 0x59c80034, 0x59c80834,
3087 0x80040580, 0x040207fd, 0x82040500, 0x000000ff,
3088 0x82080d00, 0x000000ff, 0x80040580, 0x04000002,
3089 0x801c3800, 0x801c39c0, 0x04000006, 0x59a80063,
3090 0x801c0400, 0x48035063, 0x40240000, 0x48035062,
3091 0x1c01f000, 0x48034206, 0x48074406, 0x480b4207,
3092 0x480f4407, 0x48134208, 0x48174408, 0x0201f000,
3093 0x001022c3, 0x42000000, 0x00600000, 0x80000040,
3094 0x040207ff, 0x1c01f000, 0x5a5a5a5a, 0xa5a5a5a5,
3095 0x59a00c0a, 0x800409c0, 0x02000000, 0x00102310,
3096 0x82040480, 0x00000021, 0x02021000, 0x00102310,
3097 0x82040480, 0x00000011, 0x04001003, 0x42000800,
3098 0x00000010, 0x59a00208, 0x59a01407, 0x900811c0,
3099 0x80081540, 0x59a00207, 0x59a01c06, 0x900c19c0,
3100 0x800c1d40, 0x0201f800, 0x00103a00, 0x04000006,
3101 0x0201f800, 0x00103a25, 0x4a01d809, 0x00102fd5,
3102 0x1c01f000, 0x4a034406, 0x00000002, 0x0201f000,
3103 0x0010230c, 0x4031d800, 0x58ef400b, 0x58ec0002,
3104 0x82000580, 0x00000200, 0x02000000, 0x00102304,
3105 0x59a00c0a, 0x82040480, 0x00000011, 0x04001003,
3106 0x42000800, 0x00000010, 0x59a0040b, 0x59a0120b,
3107 0x900811c0, 0x80081540, 0x59a00209, 0x59a01c08,
3108 0x900c19c0, 0x800c1d40, 0x58ec0003, 0x0201f800,
3109 0x00103a28, 0x4a01d809, 0x00102ff0, 0x1c01f000,
3110 0x4031d800, 0x58ef400b, 0x58ec0002, 0x82000580,
3111 0x00000200, 0x02000000, 0x00102304, 0x59a00c0a,
3112 0x82040480, 0x00000011, 0x02001000, 0x001022c0,
3113 0x82040c80, 0x00000010, 0x59a00208, 0x59a01407,
3114 0x900811c0, 0x80081540, 0x59a00207, 0x59a01c06,
3115 0x900c19c0, 0x800c1d40, 0x82081400, 0x00000040,
3116 0x58ec0003, 0x0201f800, 0x00103a25, 0x4a01d809,
3117 0x0010300e, 0x1c01f000, 0x4031d800, 0x58ef400b,
3118 0x58ec0002, 0x82000580, 0x00000200, 0x02000000,
3119 0x00102304, 0x59a0040a, 0x82000c80, 0x00000010,
3120 0x59a0040b, 0x59a0120b, 0x900811c0, 0x80081540,
3121 0x59a00209, 0x59a01c08, 0x900c19c0, 0x800c1d40,
3122 0x82081400, 0x00000040, 0x58ec0003, 0x0201f800,
3123 0x00103a28, 0x4a01d809, 0x001022b9, 0x1c01f000,
3124 0x48efc857, 0x59a00207, 0x59a01407, 0x900001c0,
3125 0x80081540, 0x59a00209, 0x59a01c09, 0x900001c0,
3126 0x800c1d40, 0x59a00406, 0x48034000, 0x480b4001,
3127 0x480f4002, 0x0201f800, 0x00103a00, 0x04020005,
3128 0x4a034406, 0x00000002, 0x0201f000, 0x0010230c,
3129 0x42000800, 0x00000010, 0x0201f800, 0x00103a25,
3130 0x4a01d809, 0x00103043, 0x1c01f000, 0x4031d800,
3131 0x58ef400b, 0x58ee580d, 0x58ec0002, 0x82000580,
3132 0x00000200, 0x02000000, 0x00102304, 0x48efc857,
3133 0x49a3c857, 0x492fc857, 0x592c0a04, 0x80040910,
3134 0x04020005, 0x4a034406, 0x00000019, 0x0201f000,
3135 0x0010230c, 0x4805d80c, 0x0401f00a, 0x4031d800,
3136 0x58ef400b, 0x58ec0002, 0x82000580, 0x00000200,
3137 0x02000000, 0x00102304, 0x48efc857, 0x49a3c857,
3138 0x48efc857, 0x49a3c857, 0x58ec000c, 0x80000040,
3139 0x04000012, 0x4801d80c, 0x0201f800, 0x00103a00,
3140 0x04020005, 0x4a034406, 0x00000002, 0x0201f000,
3141 0x0010230c, 0x42000800, 0x00000010, 0x58ec1007,
3142 0x58ec1808, 0x0201f800, 0x00103a25, 0x4a01d809,
3143 0x00103057, 0x1c01f000, 0x58ee580d, 0x48efc857,
3144 0x49a3c857, 0x492fc857, 0x492f3006, 0x592c0404,
3145 0x8400055e, 0x48025c04, 0x4a01d809, 0x00103081,
3146 0x1c01f000, 0x58ee580d, 0x48efc857, 0x49a3c857,
3147 0x492fc857, 0x592c0404, 0x8400051e, 0x48025c04,
3148 0x59a00000, 0x59a01001, 0x59a01802, 0x80081400,
3149 0x820c1c40, 0x00000000, 0x832c0400, 0x00000004,
3150 0x42000800, 0x00000010, 0x0201f000, 0x00103a28,
3151 0x800409c0, 0x04000005, 0x4a034406, 0x00000001,
3152 0x0201f000, 0x0010230c, 0x836c0580, 0x00000003,
3153 0x04000005, 0x4a034406, 0x00000007, 0x0201f000,
3154 0x0010230c, 0x59a0320b, 0x82183500, 0x000000ff,
3155 0x59a28c06, 0x0201f800, 0x00020245, 0x02020000,
3156 0x00102310, 0x83440580, 0x000007fd, 0x04000008,
3157 0x0201f800, 0x001049e7, 0x04000005, 0x4a034406,
3158 0x00000009, 0x0201f000, 0x0010230c, 0x0201f800,
3159 0x00103a00, 0x04020005, 0x4a034406, 0x00000002,
3160 0x0201f000, 0x0010230c, 0x801831c0, 0x0400000a,
3161 0x412c0800, 0x0201f800, 0x00103a00, 0x04020005,
3162 0x4a034406, 0x00000002, 0x0201f000, 0x0010230c,
3163 0x40065800, 0x4a025c04, 0x00008000, 0x497a5a04,
3164 0x0201f800, 0x00109100, 0x04020005, 0x4a034406,
3165 0x00000003, 0x0201f000, 0x0010230c, 0x4a01d809,
3166 0x001030d2, 0x1c01f000, 0x592c0005, 0x82000580,
3167 0x01000000, 0x04020005, 0x4a034406, 0x00000004,
3168 0x0201f000, 0x0010230c, 0x592c0406, 0x82002d00,
3169 0x0000ff00, 0x82000500, 0x000000ff, 0x80000904,
3170 0x80040800, 0x82040480, 0x00000006, 0x04001003,
3171 0x42000800, 0x00000005, 0x832ca400, 0x00000006,
3172 0x4050a800, 0x4004b000, 0x0201f800, 0x0010ab28,
3173 0x59a00407, 0x59a01207, 0x900811c0, 0x80081540,
3174 0x59a00409, 0x59a01a09, 0x900c19c0, 0x800c1d40,
3175 0x832c0400, 0x00000006, 0x4c140000, 0x0201f800,
3176 0x00103a28, 0x5c002800, 0x801429c0, 0x04000003,
3177 0x4a01d809, 0x001030ff, 0x1c01f000, 0x4031d800,
3178 0x58ef400b, 0x58ee580d, 0x58ec0002, 0x82000580,
3179 0x00000200, 0x02000000, 0x00102304, 0x812e59c0,
3180 0x02000800, 0x001005d8, 0x592c0006, 0x82000500,
3181 0xff000000, 0x80000904, 0x800409c0, 0x02000000,
3182 0x00102304, 0x82040480, 0x0000000e, 0x04001003,
3183 0x42000800, 0x0000000d, 0x592e5801, 0x812e59c0,
3184 0x02000800, 0x001005d8, 0x832ca400, 0x00000005,
3185 0x4050a800, 0x4004b000, 0x0201f800, 0x0010ab28,
3186 0x58ec1007, 0x58ec1808, 0x832c0400, 0x00000005,
3187 0x0201f000, 0x00103a28, 0x0201f800, 0x00103a00,
3188 0x04020005, 0x4a034406, 0x00000002, 0x0201f000,
3189 0x0010230c, 0x59a00c06, 0x82040500, 0x0000ff00,
3190 0x840001c0, 0x82001480, 0x00000007, 0x02021000,
3191 0x00102310, 0x0c01f001, 0x0010313d, 0x00103144,
3192 0x0010314b, 0x0010314b, 0x0010314b, 0x0010314d,
3193 0x00103152, 0x42000800, 0x0000000d, 0x42003800,
3194 0x00103166, 0x4a034000, 0x0010b4eb, 0x0401f013,
3195 0x42000800, 0x0000000d, 0x42003800, 0x00103166,
3196 0x4a034000, 0x0010b4f8, 0x0401f00c, 0x0201f000,
3197 0x00102310, 0x42000800, 0x00000008, 0x42003800,
3198 0x00103179, 0x0401f005, 0x42000800, 0x00000004,
3199 0x42003800, 0x001031c3, 0x59a00207, 0x59a01407,
3200 0x900001c0, 0x80081540, 0x59a00209, 0x59a01c09,
3201 0x900001c0, 0x800c1d40, 0x832c0400, 0x00000005,
3202 0x4c1c0000, 0x0201f800, 0x00103a25, 0x5c003800,
3203 0x481dd809, 0x1c01f000, 0x4031d800, 0x58ef400b,
3204 0x58ee580d, 0x58ec0002, 0x82000580, 0x00000200,
3205 0x02000000, 0x00102304, 0x4a03501f, 0x00000001,
3206 0x4200b000, 0x0000000d, 0x59a0a800, 0x832ca400,
3207 0x00000005, 0x0201f800, 0x0010ab17, 0x0201f000,
3208 0x001022c0, 0x4031d800, 0x58ef400b, 0x58ee580d,
3209 0x58ec0002, 0x82000580, 0x00000200, 0x02000000,
3210 0x00102304, 0x832ca400, 0x00000005, 0x50500000,
3211 0x82001500, 0x000c0016, 0x02020000, 0x00102310,
3212 0x82500c00, 0x00000003, 0x50040000, 0x82001500,
3213 0x00000001, 0x02020000, 0x00102310, 0x50500000,
3214 0x82001500, 0x00000028, 0x0400001d, 0x82081580,
3215 0x00000028, 0x02020000, 0x00102310, 0x80500800,
3216 0x50040000, 0x82001500, 0x00000013, 0x82081580,
3217 0x00000013, 0x02020000, 0x00102310, 0x80040800,
3218 0x50040000, 0x82001500, 0x00010000, 0x82081580,
3219 0x00010000, 0x02020000, 0x00102310, 0x836c0580,
3220 0x00000000, 0x04000012, 0x599c0019, 0x8c00050e,
3221 0x0402000f, 0x0201f000, 0x00102310, 0x80500800,
3222 0x50040000, 0x82001500, 0x00000013, 0x02020000,
3223 0x00102310, 0x80040800, 0x50040000, 0x82001500,
3224 0x00010000, 0x02020000, 0x00102310, 0x4200b000,
3225 0x00000008, 0x4200a800, 0x0010b4e3, 0x0201f800,
3226 0x0010ab17, 0x0201f000, 0x001022c0, 0x4031d800,
3227 0x58ef400b, 0x58ee580d, 0x58ec0002, 0x82000580,
3228 0x00000200, 0x02000000, 0x00102304, 0x4200b000,
3229 0x00000004, 0x4200a800, 0x0010b8fa, 0x832ca400,
3230 0x00000005, 0x0201f800, 0x0010ab17, 0x59a80005,
3231 0x84000550, 0x48035005, 0x0201f000, 0x001022c0,
3232 0x0201f800, 0x00103a00, 0x04020005, 0x4a034406,
3233 0x00000002, 0x0201f000, 0x0010230c, 0x59a00c06,
3234 0x82040500, 0x0000ff00, 0x840001c0, 0x82001480,
3235 0x00000006, 0x02021000, 0x00102310, 0x0c01f001,
3236 0x001031ee, 0x001031f3, 0x001031f8, 0x001031f8,
3237 0x001031f8, 0x001031fa, 0x42000800, 0x0000000d,
3238 0x4200a000, 0x0010b4eb, 0x0401f00c, 0x42000800,
3239 0x0000000d, 0x4200a000, 0x0010b4f8, 0x0401f007,
3240 0x0201f000, 0x00102310, 0x42000800, 0x00000008,
3241 0x4200a000, 0x0010b4e3, 0x4004b000, 0x832cac00,
3242 0x00000005, 0x0201f800, 0x0010ab17, 0x59a00207,
3243 0x59a01407, 0x900001c0, 0x80081540, 0x59a00209,
3244 0x59a01c09, 0x900001c0, 0x800c1d40, 0x832c0400,
3245 0x00000005, 0x0201f000, 0x00103a28, 0x836c0580,
3246 0x00000000, 0x04020005, 0x4a034406, 0x00000007,
3247 0x0201f000, 0x0010230c, 0x59a00406, 0x800001c0,
3248 0x0400001a, 0x59a80005, 0x8c000514, 0x04000005,
3249 0x42000000, 0x00000001, 0x40000800, 0x0401f003,
3250 0x59a00207, 0x59a80853, 0x48035053, 0x0201f800,
3251 0x0010163b, 0x04000022, 0x0201f800, 0x00101642,
3252 0x0400001f, 0x0201f800, 0x00101649, 0x0400001c,
3253 0x0201f800, 0x00101650, 0x04000019, 0x48075053,
3254 0x0201f000, 0x00102310, 0x59c40801, 0x82040d00,
3255 0x00018000, 0x82040580, 0x00000000, 0x04020004,
3256 0x4a034406, 0x00000000, 0x0401f00d, 0x82040580,
3257 0x00008000, 0x04020004, 0x4a034406, 0x00000001,
3258 0x0401f007, 0x82040580, 0x00010000, 0x02020800,
3259 0x001005d8, 0x4a034406, 0x00000003, 0x59a00406,
3260 0x82000580, 0x00000002, 0x0402001f, 0x59c40006,
3261 0x84000500, 0x48038806, 0x0201f800, 0x00106ede,
3262 0x497b8880, 0x0201f800, 0x0010a9c0, 0x0201f800,
3263 0x0010a9ce, 0x42000000, 0x0010b8ca, 0x0201f800,
3264 0x0010aa47, 0x82000540, 0x00000001, 0x0201f800,
3265 0x0010518c, 0x4a038808, 0x00000000, 0x4202d800,
3266 0x00000004, 0x42001000, 0x00000001, 0x0201f800,
3267 0x0010193d, 0x4a035049, 0x00000001, 0x0201f800,
3268 0x001006d4, 0x0201f000, 0x001022c0, 0x800409c0,
3269 0x04000005, 0x4a034406, 0x00000001, 0x0201f000,
3270 0x0010230c, 0x836c0580, 0x00000003, 0x04000005,
3271 0x4a034406, 0x00000007, 0x0201f000, 0x0010230c,
3272 0x59a28c06, 0x59a0320b, 0x82183500, 0x000000ff,
3273 0x0201f800, 0x00020245, 0x02020000, 0x00102310,
3274 0x83440580, 0x000007fd, 0x04000008, 0x0201f800,
3275 0x001049e7, 0x04000005, 0x42000800, 0x00000009,
3276 0x0201f000, 0x0010230c, 0x0201f800, 0x00103a00,
3277 0x04020005, 0x4a034406, 0x00000002, 0x0201f000,
3278 0x0010230c, 0x497a5a04, 0x4a025c04, 0x00008000,
3279 0x0201f800, 0x00109115, 0x04020005, 0x4a034406,
3280 0x00000003, 0x0201f000, 0x0010230c, 0x4a01d809,
3281 0x0010329e, 0x1c01f000, 0x592c0005, 0x82000d00,
3282 0x0000ffff, 0x82000500, 0xffff0000, 0x82000580,
3283 0x01000000, 0x04020005, 0x4a034406, 0x00000004,
3284 0x0201f000, 0x0010230c, 0x80040904, 0x832ca400,
3285 0x00000005, 0x4050a800, 0x4004b000, 0x0201f800,
3286 0x0010ab28, 0x59a00207, 0x59a01407, 0x900001c0,
3287 0x80081540, 0x59a00209, 0x59a01c09, 0x900001c0,
3288 0x800c1d40, 0x832c0400, 0x00000005, 0x0201f000,
3289 0x00103a28, 0x496fc857, 0x836c0580, 0x00000000,
3290 0x04000005, 0x4a034406, 0x0000001a, 0x0201f000,
3291 0x0010230c, 0x0201f800, 0x0010513b, 0x02020800,
3292 0x00104142, 0x42000800, 0x00000020, 0x59a00407,
3293 0x59a01207, 0x900811c0, 0x80081540, 0x59a00409,
3294 0x59a01a09, 0x900c19c0, 0x800c1d40, 0x419c0000,
3295 0x49a3c857, 0x0201f800, 0x00103a25, 0x4a01d809,
3296 0x001032da, 0x1c01f000, 0x4833c857, 0x4031d800,
3297 0x58ef400b, 0x58ec0002, 0x82000580, 0x00000200,
3298 0x02000000, 0x00102304, 0x599c0200, 0x800001c0,
3299 0x02000000, 0x00102310, 0x59a80005, 0x8c000512,
3300 0x04000004, 0x599c0019, 0x8400050c, 0x48033819,
3301 0x0201f800, 0x001097d7, 0x59a80005, 0x8c000514,
3302 0x04000004, 0x599c0017, 0x84000508, 0x48033817,
3303 0x0201f800, 0x00103b25, 0x04020004, 0x8c00050a,
3304 0x02020000, 0x00102310, 0x4803c857, 0x8c000504,
3305 0x04020004, 0x59c408a3, 0x84040d7a, 0x480788a3,
3306 0x8c000502, 0x04020004, 0x59c408a3, 0x84040d08,
3307 0x480788a3, 0x599c0c02, 0x8c000500, 0x04020004,
3308 0x8c000516, 0x04000012, 0x0401f001, 0x82041480,
3309 0x0000007f, 0x02021000, 0x00102310, 0x82041400,
3310 0x0010210e, 0x50081000, 0x82081500, 0x000000ff,
3311 0x8c000500, 0x04020006, 0x480b5010, 0x42000800,
3312 0x00000003, 0x0201f800, 0x00106c78, 0x599c0019,
3313 0x8c00050e, 0x0402000b, 0x59a80806, 0x8c040d14,
3314 0x04000008, 0x42000800, 0x0010b4e3, 0x50040800,
3315 0x82040d00, 0x00000028, 0x02020000, 0x00102310,
3316 0x82000500, 0x00000030, 0x04000003, 0x80000108,
3317 0x0401f003, 0x42000000, 0x00000002, 0x48039040,
3318 0x42000800, 0x00000002, 0x82000400, 0x00103415,
3319 0x50001000, 0x0201f800, 0x00106c78, 0x599c0201,
3320 0x82000c80, 0x00000100, 0x02001000, 0x00102310,
3321 0x82000c80, 0x00000841, 0x02021000, 0x00102310,
3322 0x82000500, 0x00000007, 0x02020000, 0x00102310,
3323 0x599c0401, 0x80000540, 0x02000000, 0x00102310,
3324 0x599c0409, 0x599c0c07, 0x80040c80, 0x02021000,
3325 0x00102310, 0x80000040, 0x02000000, 0x00102310,
3326 0x599c0209, 0x599c0a07, 0x80040c80, 0x02021000,
3327 0x00102310, 0x80000040, 0x02000000, 0x00102310,
3328 0x0201f800, 0x001053cd, 0x0201f800, 0x00104cb6,
3329 0x599c0201, 0x48035004, 0x0201f800, 0x001012ee,
3330 0x599c020a, 0x800001c0, 0x04000003, 0x4803504d,
3331 0x0401f003, 0x4a03504d, 0x000000c8, 0x0201f800,
3332 0x00103b25, 0x04000004, 0x0201f800, 0x001060df,
3333 0x417a5000, 0x836c0580, 0x00000000, 0x04020098,
3334 0x599c0003, 0x599c0804, 0x9c0001c0, 0x9c0409c0,
3335 0x48035002, 0x48075003, 0x599c1017, 0x8c08151c,
3336 0x04000006, 0x599c0005, 0x599c0806, 0x9c0001c0,
3337 0x9c0409c0, 0x0401f003, 0x82000500, 0xf0ffffff,
3338 0x48035000, 0x48075001, 0x42001000, 0x0010b4eb,
3339 0x48001000, 0x48041001, 0x42001000, 0x0010b4f8,
3340 0x48001000, 0x48041001, 0x59a80005, 0x8c000514,
3341 0x04020015, 0x599c1019, 0x82081500, 0x0000e000,
3342 0x82080580, 0x00000000, 0x0402000c, 0x4a035053,
3343 0x00000000, 0x42000000, 0x00000001, 0x0201f800,
3344 0x0010188c, 0x42000000, 0x00000001, 0x0201f800,
3345 0x00101821, 0x0401f02b, 0x82080580, 0x00002000,
3346 0x0402000a, 0x4a035053, 0x00000001, 0x41780000,
3347 0x0201f800, 0x0010188c, 0x41780000, 0x0201f800,
3348 0x00101821, 0x0401f01f, 0x82080580, 0x00004000,
3349 0x04020006, 0x4a035053, 0x00000002, 0x4a035049,
3350 0x00000001, 0x0401f017, 0x82080580, 0x00006000,
3351 0x02020000, 0x00102310, 0x59a80858, 0x82040d80,
3352 0x01391077, 0x04020005, 0x59e00813, 0x8c040d00,
3353 0x02020000, 0x00102310, 0x4a035053, 0x00000003,
3354 0x42000000, 0x00000002, 0x0201f800, 0x0010188c,
3355 0x42000000, 0x00000002, 0x0201f800, 0x00101821,
3356 0x599c0019, 0x8c000520, 0x0400000d, 0x42000000,
3357 0x00000004, 0x42000800, 0x00000040, 0x0201f800,
3358 0x00101944, 0x42000000, 0x00000010, 0x42000800,
3359 0x000000c0, 0x0201f800, 0x00101944, 0x4a035032,
3360 0x0000aaaa, 0x599c1018, 0x82081500, 0x00000030,
3361 0x59a8006c, 0x80000540, 0x0400000c, 0x82080580,
3362 0x00000000, 0x02000000, 0x00102310, 0x599c1018,
3363 0x82081500, 0xffffffcf, 0x82081540, 0x00000010,
3364 0x480b3818, 0x0401f010, 0x82080d80, 0x00000000,
3365 0x04000007, 0x82080d80, 0x00000010, 0x0400000a,
3366 0x82080d80, 0x00000020, 0x04020002, 0x48075032,
3367 0x0201f800, 0x00103aba, 0x04000008, 0x0201f800,
3368 0x001015fe, 0x0201f800, 0x0010162a, 0x59a8002a,
3369 0x80040540, 0x4803502a, 0x49f3c857, 0x42001000,
3370 0x00105065, 0x0201f800, 0x00105f90, 0x42001000,
3371 0x00105058, 0x0201f800, 0x00106084, 0x4a038805,
3372 0xffffffff, 0x4a03c014, 0x00400040, 0x4a03c013,
3373 0x00400000, 0x0201f800, 0x001048c7, 0x59a0001d,
3374 0x84000540, 0x4803401d, 0x49f3c857, 0x0201f000,
3375 0x001022c0, 0x00000018, 0x0000000c, 0x00000018,
3376 0x00000020, 0x836c0580, 0x00000000, 0x04020005,
3377 0x42000800, 0x00000007, 0x0201f000, 0x0010230c,
3378 0x42000800, 0x00000020, 0x59a00407, 0x59a01207,
3379 0x900811c0, 0x80081540, 0x59a00409, 0x59a01a09,
3380 0x900c19c0, 0x800c1d40, 0x419c0000, 0x0201f000,
3381 0x00103a28, 0x800409c0, 0x04000005, 0x4a034406,
3382 0x00000001, 0x0201f000, 0x0010230c, 0x0201f800,
3383 0x0010513b, 0x04020005, 0x4a034406, 0x00000016,
3384 0x0201f000, 0x0010230c, 0x59a80013, 0x8c000500,
3385 0x04000011, 0x4a034406, 0x00000000, 0x42000800,
3386 0x00000020, 0x59a00407, 0x59a01207, 0x900811c0,
3387 0x80081540, 0x59a00409, 0x59a01a09, 0x900c19c0,
3388 0x800c1d40, 0x42000000, 0x0010be21, 0x0201f000,
3389 0x00103a28, 0x4a034406, 0x00000001, 0x4200b000,
3390 0x00000020, 0x4200a800, 0x0010be21, 0x4200a000,
3391 0xffffffff, 0x4450a800, 0x8054a800, 0x8058b040,
3392 0x040207fd, 0x4d440000, 0x4d340000, 0x42028800,
3393 0xffffffff, 0x42002000, 0xffffffff, 0x42003000,
3394 0x00000001, 0x42003800, 0x00000001, 0x42001800,
3395 0x0010be21, 0x59a81010, 0x82081500, 0x000000ff,
3396 0x40180000, 0x0c01f001, 0x0010346e, 0x00103471,
3397 0x00103475, 0x00103479, 0x82102500, 0xffffff00,
3398 0x0401f014, 0x82102500, 0xffff00ff, 0x840811c0,
3399 0x0401f010, 0x82102500, 0xff00ffff, 0x900811c0,
3400 0x0401f00c, 0x82102500, 0x00ffffff, 0x9c0801c0,
3401 0x80102540, 0x44101800, 0x42003000, 0xffffffff,
3402 0x42002000, 0xffffffff, 0x800c1800, 0x0401f003,
3403 0x40080000, 0x80102540, 0x81468800, 0x83442c80,
3404 0x0000007f, 0x04021014, 0x4c080000, 0x4c0c0000,
3405 0x4c180000, 0x4c1c0000, 0x0201f800, 0x00020245,
3406 0x5c003800, 0x5c003000, 0x5c001800, 0x5c001000,
3407 0x040207f2, 0x0201f800, 0x001049f3, 0x040207ef,
3408 0x80183000, 0x801c3800, 0x59341202, 0x40180000,
3409 0x0c01f7ce, 0x82100580, 0xffffffff, 0x04000002,
3410 0x44101800, 0x42001800, 0x0010be21, 0x500c0000,
3411 0x82000500, 0xffffff00, 0x801c0540, 0x44001800,
3412 0x5c026800, 0x5c028800, 0x42000800, 0x00000020,
3413 0x59a00407, 0x59a01207, 0x900811c0, 0x80081540,
3414 0x59a00409, 0x59a01a09, 0x900c19c0, 0x800c1d40,
3415 0x42000000, 0x0010be21, 0x0201f000, 0x00103a28,
3416 0x59a28c06, 0x59a0020b, 0x8c000500, 0x0400000e,
3417 0x59a01208, 0x59a00408, 0x82000500, 0x000000ff,
3418 0x900001c0, 0x80081540, 0x41784000, 0x0201f800,
3419 0x00104919, 0x04000008, 0x48034406, 0x0201f000,
3420 0x00102310, 0x0201f800, 0x00020245, 0x02020000,
3421 0x00102310, 0x0201f800, 0x00103a00, 0x04020005,
3422 0x4a034406, 0x00000002, 0x0201f000, 0x0010230c,
3423 0x59a0020b, 0x8c000500, 0x04000005, 0x0201f800,
3424 0x001049f3, 0x02020000, 0x00103ac4, 0x59a0020b,
3425 0x8c000502, 0x04000019, 0x83440480, 0x000007f0,
3426 0x04021016, 0x0201f800, 0x001049fc, 0x04020013,
3427 0x497a5a04, 0x4a025c04, 0x00008000, 0x0201f800,
3428 0x001090e6, 0x04020005, 0x4a034406, 0x00000003,
3429 0x0201f000, 0x0010230c, 0x4a01d809, 0x001034f1,
3430 0x1c01f000, 0x59a28c06, 0x0201f800, 0x00020245,
3431 0x02020000, 0x00102310, 0x4200b000, 0x0000000a,
3432 0x4134a000, 0x832e5c00, 0x00000002, 0x412ca800,
3433 0x0201f800, 0x0010ab17, 0x832cac00, 0x00000006,
3434 0x4054a000, 0x4200b000, 0x00000004, 0x0201f800,
3435 0x0010ab28, 0x592c0802, 0x82040500, 0x00ff00ff,
3436 0x900001c0, 0x82041500, 0xff00ff00, 0x80080540,
3437 0x48025802, 0x592c0801, 0x82040500, 0x00ff00ff,
3438 0x900001c0, 0x82041500, 0xff00ff00, 0x80080540,
3439 0x48025801, 0x42000800, 0x0000000a, 0x59a00407,
3440 0x59a01207, 0x900811c0, 0x80081540, 0x59a00409,
3441 0x59a01a09, 0x900c19c0, 0x800c1d40, 0x412c0000,
3442 0x0201f000, 0x00103a28, 0x496fc857, 0x496f4406,
3443 0x0201f000, 0x001022c0, 0x59a28c06, 0x0201f800,
3444 0x00020245, 0x02020000, 0x00102310, 0x836c0580,
3445 0x00000003, 0x04000005, 0x4a034406, 0x00000007,
3446 0x0201f000, 0x0010230c, 0x83340c00, 0x00000006,
3447 0x59a0020b, 0x8c000500, 0x04000003, 0x83340c00,
3448 0x00000008, 0x58040001, 0x48034409, 0x900001c0,
3449 0x48034209, 0x50040000, 0x48034407, 0x900001c0,
3450 0x48034207, 0x59340200, 0x48034406, 0x0201f000,
3451 0x001022c0, 0x800409c0, 0x04000005, 0x4a034406,
3452 0x00000001, 0x0201f000, 0x0010230c, 0x59a0220b,
3453 0x8c102500, 0x0402002e, 0x8c102506, 0x04020006,
3454 0x59a03208, 0x82180480, 0x00000003, 0x02021000,
3455 0x00102310, 0x59a28c06, 0x0201f800, 0x00020245,
3456 0x02020000, 0x00102310, 0x0201f800, 0x001049e7,
3457 0x04000005, 0x4a034406, 0x00000009, 0x0201f000,
3458 0x0010230c, 0x0201f800, 0x00103a00, 0x04020005,
3459 0x4a034406, 0x00000002, 0x0201f000, 0x0010230c,
3460 0x59a0220b, 0x8c102506, 0x04000004, 0x59343002,
3461 0x82183500, 0x00ffffff, 0x497a5a04, 0x4a025c04,
3462 0x00008000, 0x0201f800, 0x001090a8, 0x04020005,
3463 0x4a034406, 0x00000003, 0x0201f000, 0x0010230c,
3464 0x4a01d809, 0x001035d1, 0x1c01f000, 0x59a28c06,
3465 0x0201f800, 0x00020245, 0x02020000, 0x00102310,
3466 0x0201f800, 0x001049e7, 0x04000005, 0x4a034406,
3467 0x00000009, 0x0201f000, 0x0010230c, 0x0201f800,
3468 0x00103a00, 0x04020005, 0x4a034406, 0x00000002,
3469 0x0201f000, 0x0010230c, 0x497a5a04, 0x4a025c04,
3470 0x00008000, 0x0201f800, 0x00103a00, 0x04020005,
3471 0x4a034406, 0x00000002, 0x0201f000, 0x0010230c,
3472 0x592e5800, 0x0201f800, 0x001090bd, 0x04020005,
3473 0x4a034406, 0x00000003, 0x0201f000, 0x0010230c,
3474 0x4a01d809, 0x001035a3, 0x1c01f000, 0x592c2805,
3475 0x82140d80, 0x01000000, 0x04020005, 0x4a034406,
3476 0x00000004, 0x0201f000, 0x0010230c, 0x42000800,
3477 0x00000008, 0x59a00207, 0x59a01407, 0x900001c0,
3478 0x80081540, 0x59a00209, 0x59a01c09, 0x900001c0,
3479 0x800c1d40, 0x832c0400, 0x00000005, 0x0201f800,
3480 0x00103a28, 0x8c142d00, 0x04000003, 0x4a01d809,
3481 0x001035be, 0x1c01f000, 0x4031d800, 0x58ef400b,
3482 0x58ee580e, 0x58ec0002, 0x82000580, 0x00000200,
3483 0x02000000, 0x00102304, 0x812e59c0, 0x02000800,
3484 0x001005d8, 0x42000800, 0x00000008, 0x832c0400,
3485 0x00000005, 0x58ec1007, 0x58ec1808, 0x0201f000,
3486 0x00103a28, 0x592c0005, 0x82000580, 0x01000000,
3487 0x04020005, 0x4a034406, 0x00000004, 0x0201f000,
3488 0x0010230c, 0x59a00207, 0x59a01407, 0x900001c0,
3489 0x80081540, 0x59a00209, 0x59a01c09, 0x900001c0,
3490 0x800c1d40, 0x42000800, 0x00000006, 0x832c0400,
3491 0x00000006, 0x0201f000, 0x00103a28, 0x59a00a0a,
3492 0x800409c0, 0x02000000, 0x00102310, 0x82040480,
3493 0x000000e7, 0x04001003, 0x42000800, 0x000000e6,
3494 0x59a00207, 0x59a01407, 0x900001c0, 0x80081540,
3495 0x59a00209, 0x59a01c09, 0x900001c0, 0x800c1d40,
3496 0x83880400, 0x00000000, 0x0201f800, 0x00103a28,
3497 0x4a01d809, 0x001035ff, 0x1c01f000, 0x4031d800,
3498 0x58ef400b, 0x58ec0002, 0x82000580, 0x00000200,
3499 0x02000000, 0x00102304, 0x58ef400b, 0x59a0020b,
3500 0x8c000500, 0x04000008, 0x83880400, 0x00000000,
3501 0x4803c840, 0x4a03c842, 0x00000006, 0x04011000,
3502 0x497b8885, 0x4a034207, 0x000000e6, 0x0201f000,
3503 0x001022c0, 0x800409c0, 0x04000005, 0x4a034406,
3504 0x00000001, 0x0201f000, 0x0010230c, 0x0401fbe5,
3505 0x04020005, 0x4a034406, 0x00000002, 0x0201f000,
3506 0x0010230c, 0x497a5a04, 0x4a025c04, 0x00008000,
3507 0x59a00406, 0x800001c0, 0x02000000, 0x00102310,
3508 0x82001580, 0x000000ff, 0x04000005, 0x82001480,
3509 0x00000004, 0x02021000, 0x00102310, 0x40001000,
3510 0x0201f800, 0x00101fbf, 0x04020005, 0x4a034406,
3511 0x00000003, 0x0201f000, 0x0010230c, 0x4a01d809,
3512 0x0010363a, 0x1c01f000, 0x592c0005, 0x82000580,
3513 0x01000000, 0x02020000, 0x001022c0, 0x4a034406,
3514 0x00000004, 0x0201f000, 0x0010230c, 0x59a01406,
3515 0x8c081508, 0x04020007, 0x800409c0, 0x04000005,
3516 0x4a034406, 0x00000001, 0x0201f000, 0x0010230c,
3517 0x59a01c07, 0x820c0480, 0x00001000, 0x02021000,
3518 0x00102310, 0x497b2804, 0x497b2805, 0x497b281c,
3519 0x497b281d, 0x497b281f, 0x497b2820, 0x497b2822,
3520 0x497b2823, 0x80000580, 0x0201f800, 0x001015fe,
3521 0x59a80805, 0x8c081500, 0x04000004, 0x82040d40,
3522 0x00000011, 0x0401f004, 0x8c081506, 0x04000002,
3523 0x84040d42, 0x84040d0a, 0x48075005, 0x4202d800,
3524 0x00000001, 0x82081500, 0x000000e0, 0x8008010a,
3525 0x0c020036, 0x0201f800, 0x0010513b, 0x04020009,
3526 0x4a035033, 0x00000001, 0x0201f800, 0x001050a2,
3527 0x0401f01f, 0x4a035033, 0x00000000, 0x0401f7fb,
3528 0x497b5032, 0x0201f800, 0x00104142, 0x0201f800,
3529 0x00106c55, 0x0201f800, 0x00106ede, 0x0201f800,
3530 0x00106c4b, 0x59a00a07, 0x480788a7, 0x59c400a3,
3531 0x82000500, 0xfeffffff, 0x82000540, 0x80018000,
3532 0x40000800, 0x84040d20, 0x480388a3, 0x480788a3,
3533 0x497b504e, 0x42000800, 0x0000002d, 0x42001000,
3534 0x001041bc, 0x0201f800, 0x00105f69, 0x59a00407,
3535 0x800000c2, 0x800008c4, 0x8005d400, 0x42000000,
3536 0x0000ffff, 0x0201f800, 0x0010513b, 0x04000003,
3537 0x59a00207, 0x80000110, 0x0201f800, 0x00103afc,
3538 0x0201f000, 0x001022c0, 0x0010366d, 0x00103670,
3539 0x00103678, 0x00102310, 0x00103675, 0x00102310,
3540 0x00102310, 0x00102310, 0x836c0580, 0x00000003,
3541 0x04000005, 0x4a034406, 0x00000007, 0x0201f000,
3542 0x0010230c, 0x59a03c06, 0x59a00407, 0x59a04a07,
3543 0x902449c0, 0x80244d40, 0x59a00409, 0x59a05209,
3544 0x902851c0, 0x80285540, 0x0401fb46, 0x04020005,
3545 0x4a034406, 0x00000002, 0x0201f000, 0x0010230c,
3546 0x417a8800, 0x41783000, 0x497b4001, 0x497b4004,
3547 0x832c4400, 0x00000005, 0x48234002, 0x8c1c3d04,
3548 0x04020078, 0x0201f800, 0x00020245, 0x0402002a,
3549 0x0201f800, 0x001049e7, 0x04000004, 0x0201f800,
3550 0x001048e3, 0x04020024, 0x8c1c3d00, 0x04000008,
3551 0x59340009, 0x44004000, 0x59340008, 0x80204000,
3552 0x44004000, 0x80204000, 0x0401f007, 0x59340007,
3553 0x44004000, 0x59340006, 0x80204000, 0x44004000,
3554 0x80204000, 0x83440580, 0x000007fe, 0x0400000d,
3555 0x83440580, 0x000007fc, 0x0400000a, 0x0201f800,
3556 0x001049f3, 0x04000003, 0x85468d5e, 0x0401f005,
3557 0x0201f800, 0x00104838, 0x04020002, 0x85468d5e,
3558 0x45444000, 0x85468d1e, 0x80204000, 0x82183400,
3559 0x00000003, 0x81468800, 0x83440480, 0x000007f0,
3560 0x0400100e, 0x8c1c3d06, 0x04000010, 0x83440580,
3561 0x000007f0, 0x04020004, 0x42028800, 0x000007fe,
3562 0x0401f006, 0x83440580, 0x000007ff, 0x04020007,
3563 0x42028800, 0x000007fc, 0x82180580, 0x0000000f,
3564 0x0400000b, 0x0401f7c0, 0x801831c0, 0x04020006,
3565 0x59a00801, 0x800408c4, 0x48074406, 0x0201f000,
3566 0x001022c0, 0x4a034004, 0x00000001, 0x49474000,
3567 0x59a00001, 0x80180400, 0x48034001, 0x481f4003,
3568 0x4a01d801, 0x00000000, 0x4819d804, 0x59a00002,
3569 0x4801d803, 0x4825d807, 0x4829d808, 0x4000a800,
3570 0x4000a000, 0x4018b000, 0x0201f800, 0x0010ab17,
3571 0x40ec1000, 0x0201f800, 0x00100858, 0x4a01d809,
3572 0x0010372a, 0x1c01f000, 0x4031d800, 0x58ef400b,
3573 0x58ec0002, 0x82000580, 0x00000200, 0x02000000,
3574 0x00102304, 0x59a00004, 0x80000540, 0x04020008,
3575 0x59a28800, 0x59a04002, 0x59a03803, 0x41783000,
3576 0x58ec4807, 0x58ec5008, 0x0401f78f, 0x59a00801,
3577 0x800408c4, 0x48074406, 0x0201f000, 0x001022c0,
3578 0x0201f800, 0x00020245, 0x0402002f, 0x0201f800,
3579 0x001049e7, 0x04000004, 0x0201f800, 0x001048e3,
3580 0x04020029, 0x83440580, 0x000007fe, 0x04000011,
3581 0x83440580, 0x000007fc, 0x0400000e, 0x0201f800,
3582 0x001049f3, 0x04000005, 0x59340403, 0x8400055e,
3583 0x48026c03, 0x0401f007, 0x0201f800, 0x00104838,
3584 0x04020004, 0x59340403, 0x8400055e, 0x48026c03,
3585 0x4134a000, 0x4020a800, 0x4200b000, 0x00000006,
3586 0x0201f800, 0x0010ab17, 0x59340007, 0x4400a800,
3587 0x59340006, 0x4800a801, 0x59340009, 0x4800a802,
3588 0x59340008, 0x4800a803, 0x59340403, 0x8400051e,
3589 0x48026c03, 0x82204400, 0x0000000a, 0x82183400,
3590 0x0000000a, 0x81468800, 0x83440480, 0x000007f0,
3591 0x0400100e, 0x8c1c3d06, 0x04000010, 0x83440580,
3592 0x000007f0, 0x04020004, 0x42028800, 0x000007fe,
3593 0x0401f006, 0x83440580, 0x000007ff, 0x04020007,
3594 0x42028800, 0x000007fc, 0x82180580, 0x0000000a,
3595 0x0400000b, 0x0401f7bb, 0x801831c0, 0x04020006,
3596 0x59a00801, 0x800408c4, 0x48074406, 0x0201f000,
3597 0x001022c0, 0x4a034004, 0x00000001, 0x49474000,
3598 0x59a00001, 0x80180400, 0x48034001, 0x481f4003,
3599 0x4a01d801, 0x00000000, 0x4819d804, 0x59a00002,
3600 0x4801d803, 0x4825d807, 0x4829d808, 0x40ec1000,
3601 0x0201f800, 0x00100858, 0x4a01d809, 0x001037a1,
3602 0x1c01f000, 0x4031d800, 0x58ef400b, 0x58ec0002,
3603 0x82000580, 0x00000200, 0x02000000, 0x00102304,
3604 0x59a00004, 0x80000540, 0x04020008, 0x59a28800,
3605 0x59a04002, 0x59a03803, 0x41783000, 0x58ec4807,
3606 0x58ec5008, 0x0401f78f, 0x59a00801, 0x800408c4,
3607 0x48074406, 0x0201f000, 0x001022c0, 0x42002800,
3608 0x0000007e, 0x59a00c06, 0x59a01207, 0x59a01c07,
3609 0x59a02209, 0x82040500, 0x0000ff00, 0x840001c0,
3610 0x82003480, 0x00000020, 0x02001000, 0x00102310,
3611 0x80140480, 0x02001000, 0x00102310, 0x82040500,
3612 0x000000ff, 0x82003480, 0x00000020, 0x02001000,
3613 0x00102310, 0x80140480, 0x02001000, 0x00102310,
3614 0x82080500, 0x0000ff00, 0x840001c0, 0x82003480,
3615 0x00000020, 0x02001000, 0x00102310, 0x80140480,
3616 0x02001000, 0x00102310, 0x82080500, 0x000000ff,
3617 0x82003480, 0x00000020, 0x02001000, 0x00102310,
3618 0x80140480, 0x02001000, 0x00102310, 0x820c0500,
3619 0x0000ff00, 0x840001c0, 0x82003480, 0x00000020,
3620 0x02001000, 0x00102310, 0x80140480, 0x02001000,
3621 0x00102310, 0x820c0500, 0x000000ff, 0x82003480,
3622 0x00000020, 0x02001000, 0x00102310, 0x80140480,
3623 0x02001000, 0x00102310, 0x82100500, 0x0000ff00,
3624 0x840001c0, 0x82003480, 0x00000020, 0x02001000,
3625 0x00102310, 0x80140480, 0x02001000, 0x00102310,
3626 0x82100500, 0x000000ff, 0x82003480, 0x00000020,
3627 0x02001000, 0x00102310, 0x80140480, 0x02001000,
3628 0x00102310, 0x900401c0, 0x80080d40, 0x900c01c0,
3629 0x80101d40, 0x83a83400, 0x0000003a, 0x44043000,
3630 0x80183000, 0x440c3000, 0x0201f000, 0x001022c0,
3631 0x0401f9ec, 0x04020005, 0x4a034406, 0x00000002,
3632 0x0201f000, 0x0010230c, 0x42000800, 0x0000000c,
3633 0x0401f853, 0x4a01d809, 0x00103820, 0x1c01f000,
3634 0x4031d800, 0x58ee580d, 0x58ef400b, 0x58ec0002,
3635 0x82000580, 0x00000200, 0x02000000, 0x00102304,
3636 0x832ca400, 0x00000004, 0x4200b000, 0x0000000c,
3637 0x40c8a800, 0x0201f800, 0x0010ab17, 0x58c80200,
3638 0x80000540, 0x04000034, 0x58c80400, 0x82000500,
3639 0xfffffffb, 0x04020030, 0x58c80401, 0x80000540,
3640 0x0400002d, 0x82000480, 0x0000ff01, 0x0402102a,
3641 0x58c80202, 0x82000480, 0x0000005c, 0x04001026,
3642 0x0201f800, 0x001063a3, 0x58c80c08, 0x58c80204,
3643 0x80040480, 0x04001020, 0x58c80204, 0x82000480,
3644 0x00000005, 0x0402101c, 0x58c80205, 0x58c80c08,
3645 0x80040902, 0x80040480, 0x04001017, 0x58c80c08,
3646 0x0201f800, 0x001062f1, 0x0400001b, 0x0201f800,
3647 0x001061b9, 0x04020012, 0x4979940b, 0x59c408a3,
3648 0x82040d40, 0x00000002, 0x480788a3, 0x4a038830,
3649 0x00000001, 0x4a038832, 0x01ffffff, 0x58c80202,
3650 0x48030804, 0x0201f800, 0x0010619b, 0x0201f000,
3651 0x001022c0, 0x0201f000, 0x00102310, 0x0201f800,
3652 0x001063f5, 0x0201f800, 0x00106402, 0x0201f800,
3653 0x001062e4, 0x0201f000, 0x0010230c, 0x4c000000,
3654 0x59a01207, 0x59a00407, 0x900811c0, 0x80081540,
3655 0x59a01a09, 0x59a00409, 0x900c19c0, 0x800c1d40,
3656 0x5c000000, 0x0401f1ac, 0x59840000, 0x82000580,
3657 0x00000000, 0x04000054, 0x59840002, 0x8c000504,
3658 0x04000051, 0x84000546, 0x48030802, 0x0201f800,
3659 0x001062e4, 0x59c408a3, 0x82040d00, 0xfffffffd,
3660 0x480788a3, 0x4c5c0000, 0x4200b800, 0x0010ac00,
3661 0x505e6800, 0x813669c0, 0x04000008, 0x5936600e,
3662 0x813261c0, 0x04000005, 0x0201f800, 0x001062d5,
3663 0x02000800, 0x001064ad, 0x805cb800, 0x825c0580,
3664 0x0010b3f0, 0x040207f3, 0x59866003, 0x813261c0,
3665 0x0400000b, 0x59300406, 0x82000580, 0x00000009,
3666 0x02020800, 0x001005d8, 0x5930b800, 0x0201f800,
3667 0x001062c1, 0x405e6000, 0x0401f7f5, 0x497b0803,
3668 0x4200b800, 0x0010b51b, 0x505e6000, 0x813261c0,
3669 0x04000011, 0x59300406, 0x82000580, 0x00000009,
3670 0x0402000d, 0x59300203, 0x82000580, 0x00000004,
3671 0x04020009, 0x59326809, 0x813669c0, 0x02020800,
3672 0x001005d8, 0x0201f800, 0x00100e99, 0x0201f800,
3673 0x001062c1, 0x4578b800, 0x805cb800, 0x825c0580,
3674 0x0010b523, 0x040207e9, 0x42000800, 0x0010b519,
3675 0x49780801, 0x49780800, 0x59a80069, 0x82000400,
3676 0x00000007, 0x48035069, 0x0201f800, 0x001063f5,
3677 0x0201f800, 0x00106402, 0x5c00b800, 0x0201f800,
3678 0x001061b4, 0x0201f000, 0x001022c0, 0x836c0580,
3679 0x00000003, 0x04000005, 0x4a034406, 0x00000007,
3680 0x0201f000, 0x0010230c, 0x59a00407, 0x59a02207,
3681 0x901021c0, 0x80102540, 0x59a00409, 0x59a02a09,
3682 0x901429c0, 0x80142d40, 0x0401f91e, 0x04020005,
3683 0x4a034406, 0x00000002, 0x0201f000, 0x0010230c,
3684 0x417a8800, 0x41781800, 0x497b4001, 0x497b4003,
3685 0x832c3400, 0x00000004, 0x481b4002, 0x41440000,
3686 0x81ac0400, 0x50026800, 0x813669c0, 0x0400000b,
3687 0x0201f800, 0x001049e7, 0x04020008, 0x59340002,
3688 0x48003000, 0x49443001, 0x82183400, 0x00000002,
3689 0x820c1c00, 0x00000002, 0x81468800, 0x83440480,
3690 0x00000800, 0x04000005, 0x820c0480, 0x00000010,
3691 0x0402100b, 0x0401f7ea, 0x800c19c0, 0x04020006,
3692 0x59a00801, 0x80040902, 0x48074406, 0x0201f000,
3693 0x001022c0, 0x4a034003, 0x00000001, 0x49474000,
3694 0x59a00001, 0x800c0400, 0x48034001, 0x40ec1000,
3695 0x4a001001, 0x00000000, 0x480c1004, 0x59a00002,
3696 0x48001003, 0x48101007, 0x48141008, 0x0201f800,
3697 0x00100858, 0x4a01d809, 0x00103920, 0x1c01f000,
3698 0x4031d800, 0x58ef400b, 0x58ec0002, 0x82000580,
3699 0x00000200, 0x02000000, 0x00102304, 0x59a00003,
3700 0x80000540, 0x04020008, 0x59a28800, 0x59a03002,
3701 0x41781800, 0x40ec1000, 0x58082007, 0x58082808,
3702 0x0401f7bf, 0x59a00801, 0x80040902, 0x48074406,
3703 0x0201f000, 0x001022c0, 0x800409c0, 0x04000005,
3704 0x4a034406, 0x00000001, 0x0201f000, 0x0010230c,
3705 0x59a80026, 0x8c00050a, 0x04020007, 0x8c000506,
3706 0x04020005, 0x4a034406, 0x00000016, 0x0201f000,
3707 0x0010230c, 0x0401f8bb, 0x04020005, 0x4a034406,
3708 0x00000002, 0x0201f000, 0x0010230c, 0x59a00c06,
3709 0x80040902, 0x59a00407, 0x59a01207, 0x900811c0,
3710 0x80081540, 0x59a00409, 0x59a01a09, 0x900c19c0,
3711 0x800c1d40, 0x832c0400, 0x00000005, 0x0401f8ce,
3712 0x4a01d809, 0x0010395b, 0x1c01f000, 0x4031d800,
3713 0x58ef400b, 0x58ee580d, 0x58ec0002, 0x82000580,
3714 0x00000200, 0x02000000, 0x00102304, 0x592c0009,
3715 0x0201f800, 0x00105c9a, 0x02000800, 0x001045a6,
3716 0x02020000, 0x00102310, 0x49474001, 0x481a6802,
3717 0x592c000a, 0x82001d80, 0x70000000, 0x04020007,
3718 0x0401f890, 0x04020011, 0x4a034406, 0x00000002,
3719 0x0201f000, 0x0010230c, 0x82001d80, 0x72000000,
3720 0x02020000, 0x00102310, 0x0401f886, 0x04020885,
3721 0x04020884, 0x04020005, 0x4a034406, 0x00000002,
3722 0x0201f000, 0x0010230c, 0x58ee580d, 0x4a025c04,
3723 0x00008000, 0x497a5a04, 0x592c3208, 0x80183102,
3724 0x592c1801, 0x4a001805, 0x01000000, 0x0201f800,
3725 0x001090d1, 0x04020005, 0x4a034406, 0x00000003,
3726 0x0201f000, 0x0010230c, 0x4a01d809, 0x00103995,
3727 0x1c01f000, 0x592c4000, 0x592c0005, 0x82000580,
3728 0x01000000, 0x04020005, 0x4a034406, 0x00000004,
3729 0x0201f000, 0x0010230c, 0x832c3c00, 0x00000005,
3730 0x401ca000, 0x401ca800, 0x5820280a, 0x4200b000,
3731 0x00000002, 0x82143580, 0x70000000, 0x04000003,
3732 0x4200b000, 0x0000000f, 0x0201f800, 0x0010ab28,
3733 0x401c0000, 0x58201006, 0x58201807, 0x58202205,
3734 0x80102102, 0x82143580, 0x70000000, 0x04020008,
3735 0x82103480, 0x00000002, 0x02001000, 0x00102310,
3736 0x42000800, 0x00000002, 0x0401f06e, 0x82143580,
3737 0x72000000, 0x02020000, 0x00102310, 0x82103480,
3738 0x0000002a, 0x02001000, 0x00102310, 0x42000800,
3739 0x0000000f, 0x0401f863, 0x4a01d809, 0x001039c9,
3740 0x1c01f000, 0x4031d800, 0x58ef400b, 0x58ee580e,
3741 0x58ec0002, 0x82000580, 0x00000200, 0x02000000,
3742 0x00102304, 0x592e5800, 0x832c0c00, 0x00000005,
3743 0x4004a000, 0x4004a800, 0x4200b000, 0x0000000f,
3744 0x0201f800, 0x0010ab28, 0x40ec1000, 0x4a001001,
3745 0x00000000, 0x4a001004, 0x0000000f, 0x48041003,
3746 0x0201f800, 0x00100858, 0x4a01d809, 0x001039e5,
3747 0x1c01f000, 0x4031d800, 0x58ef400b, 0x58ee580e,
3748 0x58ec0002, 0x82000580, 0x00000200, 0x02000000,
3749 0x00102304, 0x832c0c00, 0x00000005, 0x4004a000,
3750 0x4004a800, 0x4200b000, 0x0000000c, 0x0201f800,
3751 0x0010ab28, 0x40ec1000, 0x4a001001, 0x00000000,
3752 0x4a001004, 0x0000000c, 0x48041003, 0x0201f800,
3753 0x00100858, 0x4a01d809, 0x001022b9, 0x1c01f000,
3754 0x0201f800, 0x001007e4, 0x04000010, 0x497a5800,
3755 0x58ec000d, 0x80000540, 0x04020004, 0x492dd80d,
3756 0x492dd80e, 0x0401f007, 0x58ec000e, 0x48025800,
3757 0x82000400, 0x00000001, 0x452c0000, 0x492dd80e,
3758 0x832c0400, 0x00000004, 0x492fc857, 0x4803c857,
3759 0x1c01f000, 0x4d2c0000, 0x48efc857, 0x58ec400d,
3760 0x4823c857, 0x802041c0, 0x04000007, 0x40225800,
3761 0x592c4001, 0x497a5801, 0x0201f800, 0x001007f4,
3762 0x0401f7f8, 0x4979d80d, 0x4979d80e, 0x5c025800,
3763 0x1c01f000, 0x42003000, 0x00000001, 0x0401f003,
3764 0x42003000, 0x00000000, 0x4803c857, 0x4807c857,
3765 0x480bc857, 0x480fc857, 0x481bc857, 0x48efc857,
3766 0x4819d801, 0x800409c0, 0x02000800, 0x001005d8,
3767 0x4805d804, 0x4801d803, 0x4809d807, 0x480dd808,
3768 0x40ec1000, 0x0201f800, 0x00100858, 0x4a01d809,
3769 0x001022b9, 0x1c01f000, 0x80002d80, 0x480bc857,
3770 0x480fc857, 0x4813c857, 0x4817c857, 0x4d2c0000,
3771 0x4da00000, 0x42034000, 0x0010b4a4, 0x59a00017,
3772 0x800001c0, 0x04020013, 0x04006012, 0x480bc020,
3773 0x480fc021, 0x4813c022, 0x4817c023, 0x900811c0,
3774 0x82081540, 0x00000012, 0x480bc011, 0x59e00017,
3775 0x8c000508, 0x04020004, 0x4203e000, 0x30000001,
3776 0x0401f053, 0x4a03c017, 0x00000002, 0x0401f7fb,
3777 0x4c040000, 0x4c1c0000, 0x80000800, 0x48074017,
3778 0x59a0381a, 0x481fc857, 0x801c39c0, 0x04020027,
3779 0x82000480, 0x0000000a, 0x04021010, 0x59a00018,
3780 0x80000000, 0x48034018, 0x59a00219, 0x82000400,
3781 0x00000002, 0x82000c80, 0x00000013, 0x48034219,
3782 0x04001003, 0x497b4219, 0x41780000, 0x59a03816,
3783 0x801c3c00, 0x0401f030, 0x4803c856, 0x0201f800,
3784 0x001007e4, 0x04000007, 0x492f401a, 0x492f401b,
3785 0x412c3800, 0x497b421c, 0x497a5813, 0x0401f026,
3786 0x59880051, 0x80000000, 0x48031051, 0x59a00017,
3787 0x80000040, 0x48034017, 0x59a00219, 0x59a03816,
3788 0x801c3c00, 0x0401f01c, 0x59a0021c, 0x82000400,
3789 0x00000002, 0x82000c80, 0x00000012, 0x04021004,
3790 0x4803421c, 0x801c3c00, 0x0401f013, 0x0201f800,
3791 0x001007e4, 0x0402000b, 0x59880051, 0x80000000,
3792 0x48031051, 0x59a00017, 0x80000040, 0x48034017,
3793 0x4803c856, 0x59a0021c, 0x801c3c00, 0x0401f006,
3794 0x492f401a, 0x492c3813, 0x412c3800, 0x497b421c,
3795 0x497a5813, 0x48083c00, 0x480c3a00, 0x48103c01,
3796 0x48143a01, 0x5c003800, 0x5c000800, 0x5c034000,
3797 0x5c025800, 0x1c01f000, 0x480fc857, 0x4813c857,
3798 0x481bc857, 0x42000000, 0x0010b813, 0x0201f800,
3799 0x0010aa47, 0x801800d0, 0x40002800, 0x42001000,
3800 0x00008014, 0x0401f786, 0x4c000000, 0x599c0017,
3801 0x8c000512, 0x5c000000, 0x1c01f000, 0x4c000000,
3802 0x599c0018, 0x8c00050e, 0x5c000000, 0x1c01f000,
3803 0x59a80821, 0x800409c0, 0x04000005, 0x4a034406,
3804 0x00000001, 0x0201f000, 0x0010230c, 0x836c0580,
3805 0x00000003, 0x04000005, 0x4a034406, 0x00000007,
3806 0x0201f000, 0x0010230c, 0x599c0017, 0x8c00050a,
3807 0x04000005, 0x4a034406, 0x00000008, 0x0201f000,
3808 0x0010230c, 0x59340405, 0x8c000508, 0x04020004,
3809 0x8c00050a, 0x02020000, 0x001034db, 0x497a5a04,
3810 0x497a5805, 0x4a025c04, 0x00008000, 0x0201f800,
3811 0x00109176, 0x04020005, 0x4a034406, 0x00000003,
3812 0x0201f000, 0x0010230c, 0x4a01d809, 0x00103aed,
3813 0x1c01f000, 0x592c0005, 0x82000580, 0x01000000,
3814 0x04020005, 0x4a034406, 0x00000004, 0x0201f000,
3815 0x0010230c, 0x59a28c06, 0x0201f800, 0x00020245,
3816 0x02020000, 0x00102310, 0x0201f000, 0x001034db,
3817 0x82001580, 0x0000ffff, 0x04000009, 0x0201f800,
3818 0x00105c9a, 0x02000800, 0x00020245, 0x0402000c,
3819 0x0201f800, 0x00105fae, 0x0401f009, 0x42028800,
3820 0x000007ef, 0x0201f800, 0x00020245, 0x02000800,
3821 0x00105fae, 0x81468840, 0x040217fb, 0x1c01f000,
3822 0x4803c856, 0x4c0c0000, 0x4d340000, 0x4d440000,
3823 0x42028800, 0x000007fe, 0x0201f800, 0x00020245,
3824 0x04020009, 0x5934180a, 0x820c1d00, 0x00000001,
3825 0x820c1d80, 0x00000001, 0x42001000, 0x0000801b,
3826 0x0401ff1e, 0x5c028800, 0x5c026800, 0x5c001800,
3827 0x1c01f000, 0x599c0017, 0x8c000508, 0x1c01f000,
3828 0x48efc857, 0x04011000, 0x48efc840, 0x4a03c842,
3829 0x00000011, 0x40000000, 0x040117ff, 0x4a01d80f,
3830 0xbeefbeef, 0x1c01f000, 0x497b4000, 0x497b4001,
3831 0x497b4002, 0x497b4003, 0x497b4004, 0x1c01f000,
3832 0x59c400a4, 0x4c580000, 0x4c500000, 0x4c540000,
3833 0x82000500, 0x0000000f, 0x82000480, 0x00000007,
3834 0x0400100a, 0x82006c80, 0x00000006, 0x02021800,
3835 0x001005d8, 0x0c01f807, 0x5c00a800, 0x5c00a000,
3836 0x5c00b000, 0x1c01f000, 0x0401f906, 0x0401f7fb,
3837 0x00103b51, 0x00103b57, 0x00103b7c, 0x00103b9e,
3838 0x00103c59, 0x59c40806, 0x8c040d00, 0x04020003,
3839 0x84040d40, 0x48078806, 0x1c01f000, 0x59c40005,
3840 0x8c000534, 0x02020000, 0x0010429e, 0x4a038805,
3841 0xffffffff, 0x42006000, 0x00020000, 0x0201f800,
3842 0x00104282, 0x59a80015, 0x82000500, 0xfffffffa,
3843 0x84000542, 0x48035015, 0x497b5026, 0x42000800,
3844 0x0010be21, 0x45780800, 0x497b5013, 0x42006000,
3845 0xffefffff, 0x42006800, 0x40000000, 0x0201f800,
3846 0x0010427d, 0x59c40006, 0x82000500, 0xffffff0f,
3847 0x48038806, 0x42000800, 0x00000010, 0x42001000,
3848 0x001041f3, 0x0201f800, 0x00105f83, 0x0401f001,
3849 0x42006000, 0xffffffff, 0x42006800, 0x00800000,
3850 0x0201f800, 0x0010427d, 0x4200b000, 0x000000c8,
3851 0x59c400a4, 0x82000500, 0x0000000f, 0x82000580,
3852 0x0000000a, 0x0400000f, 0x8058b040, 0x040207f9,
3853 0x497b5014, 0x42006000, 0xbf7fffff, 0x42006800,
3854 0x00018000, 0x0201f800, 0x0010427d, 0x42006000,
3855 0xfffeffff, 0x41786800, 0x0201f000, 0x0010427d,
3856 0x497b5014, 0x4a035012, 0x00000000, 0x80000580,
3857 0x0201f000, 0x00104289, 0x4a038805, 0xffffffff,
3858 0x59a80012, 0x82000c80, 0x00000004, 0x02021800,
3859 0x001005d8, 0x0c01f001, 0x00103ba9, 0x00103bd6,
3860 0x00103c4f, 0x4803c856, 0x59c400a3, 0x8400051e,
3861 0x480388a3, 0x4a035012, 0x00000001, 0x59c40008,
3862 0x8400054e, 0x48038808, 0x0201f800, 0x00104263,
3863 0x42007800, 0x0010b54c, 0x4a007806, 0x11010000,
3864 0x4200a000, 0x0010b402, 0x4200a800, 0x0010b553,
3865 0x4200b000, 0x00000002, 0x0201f800, 0x0010ab17,
3866 0x497b8802, 0x42000800, 0x00000003, 0x497b504a,
3867 0x0201f800, 0x0010416e, 0x4a03504a, 0x00000001,
3868 0x497b5016, 0x0201f800, 0x00104290, 0x42006000,
3869 0xffffffff, 0x42006800, 0x00080000, 0x0201f800,
3870 0x0010427d, 0x42006000, 0xfff7ffff, 0x41786800,
3871 0x0201f000, 0x0010427d, 0x59a80016, 0x497b5016,
3872 0x80002540, 0x04000066, 0x59c40004, 0x82000500,
3873 0x00000003, 0x04020071, 0x59a80815, 0x8c040d02,
3874 0x0400004b, 0x82100580, 0x0000000c, 0x0402004f,
3875 0x82100400, 0x00000018, 0x8000b104, 0x41cc1000,
3876 0x42001800, 0x0010b54c, 0x50080800, 0x500c0000,
3877 0x80040580, 0x0402001a, 0x80081000, 0x800c1800,
3878 0x8058b040, 0x040207f9, 0x0201f800, 0x00104290,
3879 0x42006000, 0xffffffff, 0x42006800, 0x00500000,
3880 0x0201f800, 0x0010427d, 0x4a035012, 0x00000002,
3881 0x4a035014, 0x00000002, 0x42000800, 0x000007d0,
3882 0x42001000, 0x00104148, 0x0201f800, 0x0010606e,
3883 0x0201f800, 0x00104263, 0x0401f048, 0x59cc0806,
3884 0x82040d80, 0x11010000, 0x04020028, 0x59cc0800,
3885 0x82040500, 0x00ffffff, 0x0400001a, 0x82000580,
3886 0x000000ef, 0x04020017, 0x59cc0801, 0x82040500,
3887 0x00ffffff, 0x82000580, 0x000000ef, 0x04020011,
3888 0x83cca400, 0x00000007, 0x4200a800, 0x0010b402,
3889 0x4200b000, 0x00000002, 0x50500800, 0x50540000,
3890 0x80040480, 0x04001007, 0x04020010, 0x8050a000,
3891 0x8054a800, 0x8058b040, 0x040207f8, 0x0401f00b,
3892 0x59a80015, 0x84000502, 0x48035015, 0x41cca000,
3893 0x4200a800, 0x0010b54c, 0x4200b000, 0x00000009,
3894 0x0201f800, 0x0010ab17, 0x0201f800, 0x00104290,
3895 0x42006000, 0xffffffff, 0x42006800, 0x00080000,
3896 0x0201f800, 0x0010427d, 0x42006000, 0xfff7ffff,
3897 0x41786800, 0x0201f800, 0x0010427d, 0x42006000,
3898 0xffffffff, 0x42006800, 0x00004000, 0x0201f800,
3899 0x0010427d, 0x59c40004, 0x82000500, 0x00000003,
3900 0x04020006, 0x497b5016, 0x42000800, 0x00000003,
3901 0x0201f000, 0x0010416e, 0x1c01f000, 0x1c01f000,
3902 0x59a80014, 0x82006d80, 0x0000000f, 0x04000005,
3903 0x82000580, 0x0000001b, 0x02020800, 0x00104139,
3904 0x1c01f000, 0x59a80015, 0x84000506, 0x48035015,
3905 0x497b504a, 0x59a80014, 0x82000c80, 0x0000001e,
3906 0x02021800, 0x001005d8, 0x0c01f001, 0x00103c97,
3907 0x00103cac, 0x00103cd5, 0x00103cf0, 0x00103d14,
3908 0x00103d45, 0x00103d68, 0x00103d9b, 0x00103dbe,
3909 0x00103de4, 0x00103e21, 0x00103e48, 0x00103e5f,
3910 0x00103e71, 0x00103e8a, 0x00103ea0, 0x00103ea5,
3911 0x00103ecd, 0x00103ef0, 0x00103f16, 0x00103f39,
3912 0x00103f6c, 0x00103fae, 0x00103fd8, 0x00103ff0,
3913 0x00104030, 0x00104049, 0x0010405c, 0x0010405d,
3914 0x4803c856, 0x4202d800, 0x00000007, 0x0201f800,
3915 0x0010513b, 0x04000007, 0x42006000, 0xffffffd7,
3916 0x41786800, 0x0201f800, 0x0010427d, 0x0401f00b,
3917 0x59c40006, 0x82000500, 0xffffff0f, 0x48038806,
3918 0x42001000, 0x000000f0, 0x0201f800, 0x0010193d,
3919 0x0201f800, 0x00105098, 0x1c01f000, 0x4803c856,
3920 0x42006000, 0xbf7fffff, 0x42006800, 0x00400000,
3921 0x0201f800, 0x0010427d, 0x4a035014, 0x00000001,
3922 0x42001000, 0x001041f3, 0x0201f800, 0x00105fa4,
3923 0x0201f800, 0x001041f8, 0x42000800, 0x000007d0,
3924 0x42001000, 0x00104148, 0x0201f000, 0x0010606e,
3925 0x59a80016, 0x82000580, 0x00000014, 0x04020025,
3926 0x4803c857, 0x42006000, 0xffbfffff, 0x41786800,
3927 0x0201f800, 0x0010427d, 0x59c40004, 0x82000500,
3928 0x00000003, 0x0402001b, 0x59cc1006, 0x82081580,
3929 0x11020000, 0x04020016, 0x59cc1007, 0x8c08153e,
3930 0x0400000b, 0x59a80015, 0x8c000504, 0x04020008,
3931 0x42000000, 0x0010b83f, 0x0201f800, 0x0010aa47,
3932 0x59a80015, 0x84000544, 0x48035015, 0x42001000,
3933 0x00104148, 0x0201f800, 0x00105f90, 0x4a035014,
3934 0x00000010, 0x0401f9d4, 0x0401f002, 0x497b5016,
3935 0x1c01f000, 0x4803c856, 0x4a035014, 0x00000003,
3936 0x42006000, 0xbf3fffff, 0x42006800, 0x00100000,
3937 0x0201f800, 0x0010427d, 0x42001000, 0x001041f3,
3938 0x0201f800, 0x00105fa4, 0x0201f800, 0x001041f8,
3939 0x42001000, 0x00104148, 0x0201f800, 0x00105f90,
3940 0x42007800, 0x0010b552, 0x46007800, 0x11020000,
3941 0x42000800, 0x00000005, 0x0201f000, 0x0010416e,
3942 0x59a80016, 0x80000540, 0x04000021, 0x4803c857,
3943 0x42001000, 0x00104148, 0x0201f800, 0x00105f90,
3944 0x59a80016, 0x82000580, 0x00000014, 0x04020016,
3945 0x59cc1006, 0x82081580, 0x11020000, 0x04020012,
3946 0x59cc1007, 0x8c08153e, 0x0400000b, 0x59a80015,
3947 0x8c000504, 0x04020008, 0x42000000, 0x0010b83f,
3948 0x0201f800, 0x0010aa47, 0x59a80015, 0x84000544,
3949 0x48035015, 0x4a035014, 0x00000004, 0x0401f805,
3950 0x0401f003, 0x0201f800, 0x00104139, 0x1c01f000,
3951 0x4803c856, 0x4a035014, 0x00000005, 0x83cca400,
3952 0x00000006, 0x4200a800, 0x0010b552, 0x4200b000,
3953 0x00000005, 0x0201f800, 0x0010ab17, 0x42007800,
3954 0x0010b552, 0x46007800, 0x11030000, 0x0201f800,
3955 0x0010413e, 0x04020014, 0x59a80015, 0x8c000500,
3956 0x04020011, 0x59a80810, 0x82040580, 0x00ffffff,
3957 0x0400000d, 0x82040d00, 0x000000ff, 0x82040400,
3958 0x0010210e, 0x50000800, 0x80040910, 0x42001000,
3959 0x00000004, 0x0401fb9b, 0x0400000b, 0x0201f800,
3960 0x0010420d, 0x4200b000, 0x00000004, 0x83cca400,
3961 0x00000007, 0x4200a800, 0x0010b553, 0x0201f800,
3962 0x0010ab17, 0x42000800, 0x00000005, 0x0201f000,
3963 0x0010416e, 0x59a80016, 0x80000540, 0x04000020,
3964 0x4803c857, 0x42001000, 0x00104148, 0x0201f800,
3965 0x00105f90, 0x59a80016, 0x82000580, 0x00000014,
3966 0x04020016, 0x59cc1006, 0x82081580, 0x11030000,
3967 0x04020012, 0x59cc1007, 0x8c08153e, 0x0400000b,
3968 0x59a80015, 0x8c000504, 0x04020008, 0x42000000,
3969 0x0010b83f, 0x0201f800, 0x0010aa47, 0x59a80015,
3970 0x84000544, 0x48035015, 0x4a035014, 0x00000006,
3971 0x0401f804, 0x0401f002, 0x0401fbd3, 0x1c01f000,
3972 0x4803c856, 0x4a035014, 0x00000007, 0x83cca400,
3973 0x00000006, 0x4200a800, 0x0010b552, 0x4200b000,
3974 0x00000005, 0x0201f800, 0x0010ab17, 0x42007800,
3975 0x0010b552, 0x46007800, 0x11040000, 0x0401fbc7,
3976 0x04020020, 0x59a80015, 0x8c000500, 0x0402001d,
3977 0x599c0017, 0x8c000500, 0x0400001a, 0x599c1402,
3978 0x82080480, 0x0000007f, 0x02021800, 0x001005d8,
3979 0x4c080000, 0x82081400, 0x0010210e, 0x50081000,
3980 0x82081500, 0x000000ff, 0x480b5010, 0x42000800,
3981 0x00000003, 0x0201f800, 0x00106c78, 0x5c000800,
3982 0x42001000, 0x00000004, 0x0401fb3e, 0x04000005,
3983 0x0401fd2b, 0x04000003, 0x0201f800, 0x001015fe,
3984 0x42000800, 0x00000005, 0x0401f3d4, 0x59a80016,
3985 0x80000540, 0x04000020, 0x4803c857, 0x42001000,
3986 0x00104148, 0x0201f800, 0x00105f90, 0x59a80016,
3987 0x82000580, 0x00000014, 0x04020016, 0x59cc1006,
3988 0x82081580, 0x11040000, 0x04020012, 0x59cc1007,
3989 0x8c08153e, 0x0400000b, 0x59a80015, 0x8c000504,
3990 0x04020008, 0x42000000, 0x0010b83f, 0x0201f800,
3991 0x0010aa47, 0x59a80015, 0x84000544, 0x48035015,
3992 0x4a035014, 0x00000008, 0x0401f804, 0x0401f002,
3993 0x0401fb7d, 0x1c01f000, 0x4803c856, 0x4a035014,
3994 0x00000009, 0x83cca400, 0x00000006, 0x4200a800,
3995 0x0010b552, 0x4200b000, 0x00000005, 0x0201f800,
3996 0x0010ab17, 0x42007800, 0x0010b552, 0x46007800,
3997 0x11050100, 0x0401fb71, 0x0402000a, 0x59a80015,
3998 0x8c000500, 0x04020007, 0x0401fa8c, 0x04020005,
3999 0x82000540, 0x00000001, 0x0201f800, 0x001015fe,
4000 0x42000800, 0x00000005, 0x0401fb94, 0x0401fb63,
4001 0x04020ea4, 0x4d3c0000, 0x42027800, 0x00000001,
4002 0x0201f800, 0x00109874, 0x5c027800, 0x1c01f000,
4003 0x59a80016, 0x80000540, 0x0400003a, 0x4803c857,
4004 0x42001000, 0x00104148, 0x0201f800, 0x00105f90,
4005 0x59a80016, 0x82000580, 0x00000014, 0x04020030,
4006 0x59cc1006, 0x82080500, 0x11050000, 0x82000580,
4007 0x11050000, 0x0402002a, 0x8c081510, 0x04000014,
4008 0x59cc1007, 0x8c08153e, 0x0400000b, 0x59a80015,
4009 0x8c000504, 0x04020008, 0x42000000, 0x0010b83f,
4010 0x0201f800, 0x0010aa47, 0x59a80015, 0x84000544,
4011 0x48035015, 0x4a035013, 0x00000001, 0x4a035014,
4012 0x0000000a, 0x0401f818, 0x0401f016, 0x80000540,
4013 0x04020013, 0x59cc1007, 0x8c08153e, 0x0400000b,
4014 0x59a80015, 0x8c000504, 0x04020008, 0x42000000,
4015 0x0010b83f, 0x0201f800, 0x0010aa47, 0x59a80015,
4016 0x84000544, 0x48035015, 0x497b5013, 0x4a035014,
4017 0x0000000e, 0x0401f86d, 0x0401f002, 0x0401fb1a,
4018 0x1c01f000, 0x4803c856, 0x4a035014, 0x0000000b,
4019 0x42001000, 0x0010b553, 0x4008a800, 0x4200b000,
4020 0x00000020, 0x4600a800, 0xffffffff, 0x8054a800,
4021 0x8058b040, 0x040207fc, 0x42007800, 0x0010b552,
4022 0x46007800, 0x11060000, 0x42001000, 0x0010b553,
4023 0x0401fb0a, 0x04000005, 0x50080000, 0x46001000,
4024 0x00ffffff, 0x0401f00c, 0x50080800, 0x82040d00,
4025 0x0000ffff, 0x59a80010, 0x82000500, 0x000000ff,
4026 0x82000540, 0x00000100, 0x800000e0, 0x80040d40,
4027 0x44041000, 0x42000800, 0x00000021, 0x0401f327,
4028 0x59a80016, 0x80000540, 0x04000014, 0x4803c857,
4029 0x59a80016, 0x42001000, 0x00104148, 0x0201f800,
4030 0x00105f90, 0x59a80016, 0x82000580, 0x00000084,
4031 0x04020009, 0x59cc1006, 0x82081580, 0x11060000,
4032 0x04020005, 0x4a035014, 0x0000000c, 0x0401f804,
4033 0x0401f002, 0x0401fadc, 0x1c01f000, 0x4803c856,
4034 0x4a035014, 0x0000000d, 0x83cca400, 0x00000006,
4035 0x4200a800, 0x0010b552, 0x4200b000, 0x00000021,
4036 0x0201f800, 0x0010ab17, 0x42007800, 0x0010b552,
4037 0x46007800, 0x11070000, 0x42000800, 0x00000021,
4038 0x0401f2fe, 0x59a80016, 0x80000540, 0x04000016,
4039 0x4803c857, 0x59a80016, 0x42001000, 0x00104148,
4040 0x0201f800, 0x00105f90, 0x82000580, 0x00000084,
4041 0x0402000c, 0x59cc1006, 0x82081580, 0x11070000,
4042 0x04020008, 0x4a035013, 0x00000001, 0x0401fa91,
4043 0x4a035014, 0x0000000e, 0x0401f804, 0x0401f002,
4044 0x0401fab1, 0x1c01f000, 0x4803c856, 0x82040d40,
4045 0x00000001, 0x0401fbfc, 0x4a035014, 0x0000000f,
4046 0x497b5016, 0x42006000, 0xffffffff, 0x42006800,
4047 0x00300000, 0x0401fbe8, 0x42006000, 0xffdfffff,
4048 0x41786800, 0x0401fbe4, 0x42000800, 0x000007d0,
4049 0x42001000, 0x00104148, 0x0201f000, 0x00105f69,
4050 0x4803c856, 0x59a80016, 0x80000540, 0x04020296,
4051 0x1c01f000, 0x4803c856, 0x4a035014, 0x00000011,
4052 0x83cca400, 0x00000006, 0x4200a800, 0x0010b552,
4053 0x4200b000, 0x00000005, 0x0201f800, 0x0010ab17,
4054 0x4200a800, 0x0010b552, 0x4600a800, 0x11020000,
4055 0x0401fa8a, 0x04020015, 0x59a80010, 0x82000d00,
4056 0xffff0000, 0x04000011, 0x82000500, 0x000000ff,
4057 0x0400000e, 0x82000c00, 0x0010210e, 0x50040800,
4058 0x80040910, 0x82040580, 0x0000007e, 0x04000007,
4059 0x82040580, 0x00000080, 0x04000004, 0x42001000,
4060 0x00000004, 0x0401fa07, 0x42000800, 0x00000005,
4061 0x0401f2a2, 0x59a80016, 0x80000540, 0x04000020,
4062 0x4803c857, 0x42001000, 0x00104148, 0x0201f800,
4063 0x00105f90, 0x59a80016, 0x82000580, 0x00000014,
4064 0x04020016, 0x59cc1006, 0x82081580, 0x11030000,
4065 0x04020012, 0x59cc1007, 0x8c08153e, 0x0400000b,
4066 0x59a80015, 0x8c000504, 0x04020008, 0x42000000,
4067 0x0010b83f, 0x0201f800, 0x0010aa47, 0x59a80015,
4068 0x84000544, 0x48035015, 0x4a035014, 0x00000012,
4069 0x0401f804, 0x0401f002, 0x0401fa4b, 0x1c01f000,
4070 0x4803c856, 0x4a035014, 0x00000013, 0x83cca400,
4071 0x00000006, 0x4200a800, 0x0010b552, 0x4200b000,
4072 0x00000005, 0x0201f800, 0x0010ab17, 0x4200a800,
4073 0x0010b552, 0x4600a800, 0x11030000, 0x0401fa3f,
4074 0x04020013, 0x59a80015, 0x8c000500, 0x04020010,
4075 0x59a80810, 0x82040580, 0x00ffffff, 0x0400000c,
4076 0x82040d00, 0x000000ff, 0x82040400, 0x0010210e,
4077 0x50000800, 0x80040910, 0x42001000, 0x00000004,
4078 0x0401f9c0, 0x04000002, 0x0401fafb, 0x42000800,
4079 0x00000005, 0x0401f259, 0x59a80016, 0x80000540,
4080 0x04000020, 0x4803c857, 0x42001000, 0x00104148,
4081 0x0201f800, 0x00105f90, 0x59a80016, 0x82000580,
4082 0x00000014, 0x04020016, 0x59cc1006, 0x82081580,
4083 0x11040000, 0x04020012, 0x59cc1007, 0x8c08153e,
4084 0x0400000b, 0x59a80015, 0x8c000504, 0x04020008,
4085 0x42000000, 0x0010b83f, 0x0201f800, 0x0010aa47,
4086 0x59a80015, 0x84000544, 0x48035015, 0x4a035014,
4087 0x00000014, 0x0401f804, 0x0401f002, 0x0401fa02,
4088 0x1c01f000, 0x4803c856, 0x4a035014, 0x00000015,
4089 0x83cca400, 0x00000006, 0x4200a800, 0x0010b552,
4090 0x4200b000, 0x00000005, 0x0201f800, 0x0010ab17,
4091 0x4200a800, 0x0010b552, 0x4600a800, 0x11040000,
4092 0x0401f9f6, 0x04020020, 0x59a80015, 0x8c000500,
4093 0x0402001d, 0x599c0017, 0x8c000500, 0x0400001a,
4094 0x599c1402, 0x82080480, 0x0000007f, 0x02021800,
4095 0x001005d8, 0x4c080000, 0x82081400, 0x0010210e,
4096 0x50081000, 0x82081500, 0x000000ff, 0x480b5010,
4097 0x42000800, 0x00000003, 0x0201f800, 0x00106c78,
4098 0x5c000800, 0x42001000, 0x00000004, 0x0401f96d,
4099 0x04000005, 0x0201f800, 0x00103abf, 0x02020800,
4100 0x001015fe, 0x42000800, 0x00000005, 0x0401f203,
4101 0x59a80016, 0x80000540, 0x0400003f, 0x4803c857,
4102 0x42001000, 0x00104148, 0x0201f800, 0x00105f90,
4103 0x59a80016, 0x82000580, 0x00000014, 0x04020035,
4104 0x59cc1006, 0x82080500, 0x11050000, 0x82000580,
4105 0x11050000, 0x0402002f, 0x8c081510, 0x04000010,
4106 0x0401fb09, 0x59cc1007, 0x8c08153e, 0x0400000b,
4107 0x59a80015, 0x8c000504, 0x04020008, 0x42000000,
4108 0x0010b83f, 0x0201f800, 0x0010aa47, 0x59a80015,
4109 0x84000544, 0x48035015, 0x0401f013, 0x59cc1007,
4110 0x8c08153e, 0x0400000b, 0x59a80015, 0x8c000504,
4111 0x04020008, 0x42000000, 0x0010b83f, 0x0201f800,
4112 0x0010aa47, 0x59a80015, 0x84000544, 0x48035015,
4113 0x82000540, 0x00000001, 0x0401faeb, 0x497b5013,
4114 0x0401f003, 0x4a035013, 0x00000001, 0x59cc1007,
4115 0x8c08153c, 0x04000003, 0x4a035026, 0x00000008,
4116 0x4a035014, 0x00000016, 0x0401f804, 0x0401f002,
4117 0x0401f98d, 0x1c01f000, 0x4803c856, 0x83cca400,
4118 0x00000006, 0x4200a800, 0x0010b552, 0x4200b000,
4119 0x00000005, 0x0201f800, 0x0010ab17, 0x4a035014,
4120 0x00000017, 0x59a80013, 0x8c000500, 0x04000006,
4121 0x42001000, 0x0010b552, 0x46001000, 0x11050100,
4122 0x0401f003, 0x4a035014, 0x0000001b, 0x0401f97b,
4123 0x0402000a, 0x59a80015, 0x8c000500, 0x04020007,
4124 0x0401f896, 0x04020005, 0x82000540, 0x00000001,
4125 0x0201f800, 0x001015fe, 0x42000800, 0x00000005,
4126 0x0401f99e, 0x4d3c0000, 0x42027800, 0x00000001,
4127 0x0201f800, 0x00109874, 0x5c027800, 0x1c01f000,
4128 0x59a80016, 0x80000540, 0x04000015, 0x4803c857,
4129 0x42001000, 0x00104148, 0x0201f800, 0x00105f90,
4130 0x59a80016, 0x82000580, 0x00000084, 0x0402000b,
4131 0x59cc1006, 0x82081580, 0x11060000, 0x04020007,
4132 0x80000580, 0x0401faa0, 0x4a035014, 0x00000018,
4133 0x0401f804, 0x0401f002, 0x0401f94b, 0x1c01f000,
4134 0x4803c856, 0x4a035014, 0x00000019, 0x83cca400,
4135 0x00000006, 0x4200a800, 0x0010b552, 0x4200b000,
4136 0x00000021, 0x0201f800, 0x0010ab17, 0x42003800,
4137 0x0010b553, 0x0401f941, 0x04020018, 0x401c2800,
4138 0x50141000, 0x80080130, 0x80000000, 0x40001800,
4139 0x82081500, 0x00ffffff, 0x800000f0, 0x80080540,
4140 0x44002800, 0x59a80810, 0x82040d00, 0x000000ff,
4141 0x400c1000, 0x80081104, 0x82082400, 0x0010b553,
4142 0x50101000, 0x820c0500, 0x00000003, 0x0c01f806,
4143 0x80081540, 0x44082000, 0x42000800, 0x00000021,
4144 0x0401f156, 0x0010401d, 0x00104022, 0x00104027,
4145 0x0010402c, 0x800408f0, 0x40040000, 0x82081500,
4146 0x00ffffff, 0x1c01f000, 0x800408e0, 0x40040000,
4147 0x82081500, 0xff00ffff, 0x1c01f000, 0x800408d0,
4148 0x40040000, 0x82081500, 0xffff00ff, 0x1c01f000,
4149 0x40040000, 0x82081500, 0xffffff00, 0x1c01f000,
4150 0x59a80016, 0x80000540, 0x04000016, 0x4803c857,
4151 0x42001000, 0x00104148, 0x0201f800, 0x00105f90,
4152 0x59a80016, 0x82000580, 0x00000084, 0x0402000c,
4153 0x59cc1006, 0x82081580, 0x11070000, 0x04020008,
4154 0x4a035013, 0x00000001, 0x0401f8d2, 0x4a035014,
4155 0x0000001a, 0x0401f804, 0x0401f002, 0x0401f8f2,
4156 0x1c01f000, 0x82000540, 0x00000001, 0x0401fa3e,
4157 0x4a035014, 0x0000001b, 0x83cca400, 0x00000006,
4158 0x4200a800, 0x0010b552, 0x59a82016, 0x40100000,
4159 0x8000b104, 0x40580800, 0x5450a800, 0x8050a000,
4160 0x8054a800, 0x8058b040, 0x040207fc, 0x0401f113,
4161 0x1c01f000, 0x1c01f000, 0x4803c856, 0x42003000,
4162 0x00000004, 0x42004000, 0x0010b553, 0x599c2817,
4163 0x8c142d14, 0x0402001f, 0x42001000, 0x00000003,
4164 0x40200000, 0x80080400, 0x50000800, 0x82042580,
4165 0xffffffff, 0x04020005, 0x80081040, 0x80183040,
4166 0x040207f8, 0x0401f05e, 0x800811c0, 0x04020006,
4167 0x82042580, 0x3fffffff, 0x04000058, 0x82040d40,
4168 0xc0000000, 0x4200b000, 0x00000020, 0x42001800,
4169 0x00000001, 0x40042000, 0x80102102, 0x04021021,
4170 0x800c18c2, 0x8058b040, 0x040207fc, 0x0401f04b,
4171 0x41781000, 0x40200000, 0x80080400, 0x50000800,
4172 0x82042580, 0xffffffff, 0x04020005, 0x80081000,
4173 0x80183040, 0x040207f8, 0x0401f040, 0x800811c0,
4174 0x04020003, 0x82040d40, 0xc0000000, 0x4200b000,
4175 0x00000001, 0x42001800, 0x80000000, 0x40042000,
4176 0x801020c2, 0x04021007, 0x800c1902, 0x8058b000,
4177 0x82580480, 0x00000021, 0x040017fa, 0x0401f02f,
4178 0x40200000, 0x80082400, 0x50100000, 0x800c0540,
4179 0x44002000, 0x59a80015, 0x84000540, 0x48035015,
4180 0x40580000, 0x42002800, 0x00000020, 0x80142c80,
4181 0x40080000, 0x42003800, 0x00000003, 0x801c0480,
4182 0x800000ca, 0x80142d40, 0x82144c00, 0x0010210e,
4183 0x50242800, 0x82142d00, 0x000000ff, 0x48175010,
4184 0x4c040000, 0x40140800, 0x0201f800, 0x001015eb,
4185 0x5c000800, 0x40001800, 0x500c0000, 0x80100540,
4186 0x44001800, 0x59a80015, 0x84000540, 0x48035015,
4187 0x4200a800, 0x0010b553, 0x4020a000, 0x4200b000,
4188 0x00000004, 0x0201f800, 0x0010ab17, 0x82000540,
4189 0x00000001, 0x0401f002, 0x80000580, 0x1c01f000,
4190 0x4807c857, 0x480bc857, 0x4008b000, 0x83cca400,
4191 0x00000007, 0x4200a800, 0x0010b553, 0x40541000,
4192 0x0201f800, 0x0010ab17, 0x40041800, 0x41782000,
4193 0x42000000, 0x00000003, 0x820c1c80, 0x00000020,
4194 0x04001004, 0x80102000, 0x80000040, 0x0401f7fb,
4195 0x40041800, 0x801021c0, 0x04000005, 0x820c1c80,
4196 0x00000020, 0x80102040, 0x040207fd, 0x42002000,
4197 0x00000001, 0x800c19c0, 0x04000004, 0x801020c2,
4198 0x800c1840, 0x040207fe, 0x80083c00, 0x83cc2c00,
4199 0x00000007, 0x80142c00, 0x50140000, 0x80102d00,
4200 0x04020012, 0x80100540, 0x44003800, 0x82042400,
4201 0x0010210e, 0x50102800, 0x82142d00, 0x000000ff,
4202 0x48175010, 0x4c040000, 0x40140800, 0x0201f800,
4203 0x001015eb, 0x5c000800, 0x59a80015, 0x84000540,
4204 0x48035015, 0x80000580, 0x1c01f000, 0x4807c856,
4205 0x42001000, 0x00008017, 0x59a8184e, 0x0201f800,
4206 0x0010aa4f, 0x0201f800, 0x00103a3e, 0x1c01f000,
4207 0x4807c856, 0x4200b000, 0x00000020, 0x83cca400,
4208 0x00000007, 0x4200a800, 0x0010be21, 0x0201f000,
4209 0x0010ab28, 0x4807c856, 0x0201f800, 0x00106ede,
4210 0x42000800, 0x000000f7, 0x0401f8de, 0x497b2804,
4211 0x497b2805, 0x497b281c, 0x497b281d, 0x4202d800,
4212 0x00000001, 0x42006000, 0xbf7fffff, 0x42006800,
4213 0x00018000, 0x0401f950, 0x42006000, 0xfffeffff,
4214 0x41786800, 0x0401f94c, 0x497b504e, 0x42000800,
4215 0x0000002d, 0x42001000, 0x001041bc, 0x0201f000,
4216 0x00105f69, 0x4807c856, 0x0401ffe3, 0x497b5014,
4217 0x497b5016, 0x1c01f000, 0x4807c856, 0x59a80005,
4218 0x8c000506, 0x1c01f000, 0x4807c856, 0x42006000,
4219 0xffffffff, 0x42006800, 0x00000028, 0x0401f136,
4220 0x4807c856, 0x0401ffc2, 0x0201f800, 0x00106c55,
4221 0x4df00000, 0x0201f800, 0x00106e21, 0x5c03e000,
4222 0x02000800, 0x00106c4b, 0x59c400a4, 0x82000500,
4223 0x0000000f, 0x82000580, 0x00000002, 0x0402000a,
4224 0x42006000, 0xffffffff, 0x42006800, 0x00200000,
4225 0x0401f921, 0x42006000, 0xffdfffff, 0x41786800,
4226 0x0401f91d, 0x497b5014, 0x42000800, 0x000000f7,
4227 0x0401f89c, 0x59c400a3, 0x82000500, 0xbf20bfff,
4228 0x82000540, 0x0001c000, 0x480388a3, 0x84000520,
4229 0x480388a3, 0x1c01f000, 0x497b5016, 0x59b400f5,
4230 0x8c000500, 0x04020004, 0x82000540, 0x00000001,
4231 0x480368f5, 0x800400c4, 0x82000400, 0x00002000,
4232 0x4803910a, 0x59b400f6, 0x82000500, 0x00000018,
4233 0x040207fd, 0x4a0368f0, 0x0010b54b, 0x42000000,
4234 0x0010b552, 0x480368f1, 0x82040400, 0x0000dc00,
4235 0x480368f3, 0x59c400a4, 0x82000500, 0x0000000f,
4236 0x82000580, 0x00000008, 0x04020017, 0x4c5c0000,
4237 0x4c600000, 0x59c4b805, 0x8c5cbd3a, 0x04020005,
4238 0x42000000, 0x0010b818, 0x0201f800, 0x0010aa47,
4239 0x4a038805, 0x02000000, 0x0201f800, 0x001019fe,
4240 0x4000c000, 0x0201f800, 0x00101963, 0x4202d800,
4241 0x00000001, 0x497b5014, 0x5c00c000, 0x5c00b800,
4242 0x1c01f000, 0x59c8010b, 0x8c000502, 0x040007e2,
4243 0x59c408a4, 0x82040d00, 0x0000000f, 0x82040d80,
4244 0x0000000b, 0x04020005, 0x59a80814, 0x82040d40,
4245 0x00002000, 0x0401f004, 0x59a80812, 0x82040d40,
4246 0x00001000, 0x4807504e, 0x59a8084a, 0x800409c0,
4247 0x04020007, 0x42000800, 0x000007d0, 0x42001000,
4248 0x00104148, 0x0201f800, 0x0010606e, 0x1c01f000,
4249 0x4807c856, 0x0401ff4e, 0x0201f800, 0x00106c55,
4250 0x4df00000, 0x0201f800, 0x00106e21, 0x5c03e000,
4251 0x02000800, 0x00106c4b, 0x59c400a4, 0x82000500,
4252 0x0000000f, 0x82000580, 0x00000002, 0x0402000a,
4253 0x42006000, 0xffffffff, 0x42006800, 0x00200000,
4254 0x0401f8ad, 0x42006000, 0xffdfffff, 0x41786800,
4255 0x0401f8a9, 0x0201f800, 0x00105141, 0x04000014,
4256 0x0201f800, 0x00105151, 0x04020011, 0x4a035032,
4257 0x0000aaaa, 0x4c040000, 0x0201f800, 0x0010162a,
4258 0x59a8002a, 0x82000500, 0xffff0000, 0x80040540,
4259 0x4803502a, 0x5c000800, 0x4a035033, 0x00000000,
4260 0x0201f800, 0x001050a2, 0x0401f008, 0x4a03504c,
4261 0x00000005, 0x42000000, 0x00000001, 0x0201f800,
4262 0x00101590, 0x0401ff2c, 0x1c01f000, 0x0401f805,
4263 0x42006000, 0xbf7f7fff, 0x41786800, 0x0401f086,
4264 0x0201f800, 0x00105151, 0x04020005, 0x59c40006,
4265 0x82000540, 0x000000f0, 0x48038806, 0x1c01f000,
4266 0x800408d0, 0x59a80015, 0x8c000506, 0x04000006,
4267 0x59a80010, 0x82000500, 0x000000ff, 0x80040540,
4268 0x0401f003, 0x82040540, 0x000000f7, 0x480388a7,
4269 0x1c01f000, 0x4807c856, 0x42000000, 0x0010b83b,
4270 0x0201f800, 0x0010aa47, 0x42003000, 0x00000005,
4271 0x4d3c0000, 0x4c180000, 0x42003000, 0x0000000d,
4272 0x42027800, 0x00000002, 0x0401f038, 0x4807c856,
4273 0x42000000, 0x0010b86b, 0x0201f800, 0x0010aa47,
4274 0x42003000, 0x00000000, 0x4d3c0000, 0x4c180000,
4275 0x42003000, 0x0000000f, 0x42027800, 0x00000002,
4276 0x0401f02a, 0x4807c856, 0x42000000, 0x0010b86a,
4277 0x0201f800, 0x0010aa47, 0x42003000, 0x00000003,
4278 0x4d3c0000, 0x4c180000, 0x42003000, 0x0000000e,
4279 0x42027800, 0x00000202, 0x0401f01c, 0x4807c856,
4280 0x42000000, 0x0010b869, 0x0201f800, 0x0010aa47,
4281 0x42003000, 0x00000004, 0x4d3c0000, 0x4c180000,
4282 0x42003000, 0x00000010, 0x42027800, 0x00000202,
4283 0x0401f00e, 0x4807c856, 0x42000000, 0x0010b83e,
4284 0x0201f800, 0x0010aa47, 0x42003000, 0x00000001,
4285 0x4d3c0000, 0x4c180000, 0x42003000, 0x0000000c,
4286 0x42027800, 0x00000202, 0x42001800, 0x0000ffff,
4287 0x42002000, 0x00000007, 0x0201f800, 0x00103aae,
4288 0x5c003000, 0x4d400000, 0x0201f800, 0x0010a95d,
4289 0x42028000, 0x0000002a, 0x0201f800, 0x00101fe5,
4290 0x5c028000, 0x5c027800, 0x1c01f000, 0x4807c856,
4291 0x04011000, 0x4a03c840, 0x0010b54b, 0x4a03c842,
4292 0x00000040, 0x40000000, 0x040117ff, 0x42007800,
4293 0x0010b54b, 0x46007800, 0x00000011, 0x803c7800,
4294 0x4a007800, 0x220000ef, 0x4a007801, 0x000000ef,
4295 0x4a007802, 0x01380000, 0x4a007803, 0x00000000,
4296 0x4a007804, 0xffffffff, 0x4a007805, 0x00000000,
4297 0x1c01f000, 0x59c400a3, 0x80300500, 0x80340540,
4298 0x480388a3, 0x1c01f000, 0x4833c857, 0x59c400a3,
4299 0x80300540, 0x480388a3, 0x80300580, 0x480388a3,
4300 0x1c01f000, 0x4803c856, 0x04000004, 0x4a03504b,
4301 0x00000001, 0x0401f002, 0x497b504b, 0x1c01f000,
4302 0x4803c856, 0x59c80002, 0x80000540, 0x0400000a,
4303 0x80000040, 0x04000008, 0x4a039005, 0x00000140,
4304 0x42000000, 0x00000006, 0x80000040, 0x040207ff,
4305 0x0401f7f4, 0x1c01f000, 0x4c5c0000, 0x4c600000,
4306 0x59c4b805, 0x485fc856, 0x8c5cbd3a, 0x04020005,
4307 0x42000000, 0x0010b818, 0x0201f800, 0x0010aa47,
4308 0x4a038805, 0x02000000, 0x0201f800, 0x001019fe,
4309 0x4000c000, 0x0201f800, 0x00101963, 0x4a038805,
4310 0x04000000, 0x5c00c000, 0x5c00b800, 0x1c01f000,
4311 0x497a6a00, 0x4937c857, 0x4a026c00, 0x00000707,
4312 0x497a6801, 0x497a6808, 0x497a6809, 0x497a6806,
4313 0x497a6807, 0x497a6c0b, 0x497a680c, 0x0201f800,
4314 0x00103b25, 0x04020006, 0x5934080f, 0x59340010,
4315 0x80040540, 0x02020800, 0x001005d8, 0x4a026a04,
4316 0x00000100, 0x497a6a03, 0x59340402, 0x82000500,
4317 0x000000ff, 0x48026c02, 0x497a6c04, 0x497a6a05,
4318 0x497a6c05, 0x497a6811, 0x4d2c0000, 0x5934000d,
4319 0x49466c03, 0x80025d40, 0x04000004, 0x0201f800,
4320 0x001007fd, 0x497a680d, 0x5c025800, 0x599c0401,
4321 0x48026a0b, 0x599c0208, 0x48026c12, 0x497a680a,
4322 0x0201f000, 0x00104c62, 0x42000000, 0x00000005,
4323 0x80000d80, 0x0401f02d, 0x0201f800, 0x00104a09,
4324 0x04020017, 0x59a80026, 0x8c00050a, 0x04020010,
4325 0x59340212, 0x82000500, 0x0000ff00, 0x4803c857,
4326 0x0400000b, 0x59340a00, 0x8c040d1e, 0x02000000,
4327 0x000201c4, 0x42000000, 0x00000029, 0x42000800,
4328 0x00001000, 0x492fc857, 0x0401f018, 0x492fc857,
4329 0x42000000, 0x00000028, 0x0401f012, 0x59a80805,
4330 0x8c040d02, 0x04020003, 0x8c040d00, 0x04000004,
4331 0x42000000, 0x00000004, 0x0401f00a, 0x42000000,
4332 0x00000029, 0x59340a00, 0x8c040d1e, 0x04000005,
4333 0x492fc857, 0x42000800, 0x00001000, 0x0401f003,
4334 0x492fc857, 0x80000d80, 0x4803c857, 0x80028540,
4335 0x1c01f000, 0x4803c857, 0x59a80005, 0x8c000500,
4336 0x040207ec, 0x0201f800, 0x001049e7, 0x040207e4,
4337 0x59340200, 0x8c00050e, 0x040007e1, 0x0201f000,
4338 0x000201c4, 0x0201f800, 0x001047eb, 0x040007bf,
4339 0x0201f000, 0x000201c8, 0x592c0206, 0x492fc857,
4340 0x82000d80, 0x000007ff, 0x04020006, 0x4a025c0a,
4341 0x00000030, 0x42026800, 0x0010b524, 0x0401f021,
4342 0x82000c80, 0x000007f0, 0x04021046, 0x81ac0400,
4343 0x50000000, 0x80026d40, 0x04000038, 0x0201f800,
4344 0x001048e3, 0x04020038, 0x592c040a, 0x8c00050a,
4345 0x04020014, 0x592e6009, 0x83300480, 0x0010d1c0,
4346 0x0400103b, 0x41580000, 0x81300480, 0x04021038,
4347 0x59300c06, 0x82040580, 0x00000009, 0x04020037,
4348 0x4a025a06, 0x00000000, 0x497a5800, 0x59300008,
4349 0x80000540, 0x04020018, 0x492e6008, 0x0401f010,
4350 0x0201f800, 0x0002075a, 0x04000019, 0x592c0206,
4351 0x49366009, 0x492e6008, 0x4a026406, 0x00000009,
4352 0x497a6015, 0x49325809, 0x82000d80, 0x000007ff,
4353 0x04020003, 0x4a026015, 0x00008000, 0x42027000,
4354 0x00000043, 0x0201f800, 0x000207a1, 0x80000580,
4355 0x0401f020, 0x40000800, 0x58040000, 0x80000d40,
4356 0x040207fd, 0x492c0800, 0x0401f01a, 0x42000000,
4357 0x0000002c, 0x0401f016, 0x42000000, 0x00000028,
4358 0x0401f013, 0x59a80805, 0x82040500, 0x00000003,
4359 0x04000004, 0x42000000, 0x00000004, 0x0401f00c,
4360 0x42000000, 0x00000029, 0x0401f009, 0x42000000,
4361 0x00000008, 0x0401f006, 0x82040580, 0x00000007,
4362 0x040207fb, 0x42000000, 0x00000005, 0x80000540,
4363 0x1c01f000, 0x492fc857, 0x592e8c06, 0x83440d80,
4364 0x000007fc, 0x04000004, 0x83440480, 0x000007f0,
4365 0x04021014, 0x0201f800, 0x00020245, 0x04020011,
4366 0x0201f800, 0x001049f3, 0x04020011, 0x0201f800,
4367 0x0002075a, 0x0400001c, 0x49366009, 0x492e6008,
4368 0x4a026406, 0x0000000a, 0x42027000, 0x00000040,
4369 0x0201f800, 0x000207a1, 0x80000580, 0x0401f011,
4370 0x42000000, 0x00000028, 0x0401f00d, 0x0201f800,
4371 0x00104a09, 0x040007fb, 0x59a80805, 0x82040d00,
4372 0x00000003, 0x04000004, 0x42000000, 0x00000004,
4373 0x0401f003, 0x42000000, 0x00000029, 0x80000540,
4374 0x1c01f000, 0x42000000, 0x0000002c, 0x0401f7fc,
4375 0x492fc857, 0x592e8c06, 0x4947c857, 0x83440c80,
4376 0x00000800, 0x42000000, 0x0000000a, 0x04021176,
4377 0x592c4207, 0x4823c857, 0x82200500, 0x0000000f,
4378 0x0c01f001, 0x001043d5, 0x0010445d, 0x001044a9,
4379 0x001044b4, 0x001044bf, 0x001043d1, 0x001043d1,
4380 0x001043d1, 0x001044cf, 0x00104513, 0x00104530,
4381 0x001043d1, 0x001043d1, 0x001043d1, 0x001043d1,
4382 0x001043d1, 0x4803c857, 0x42000000, 0x0000000c,
4383 0x0401f15d, 0x592c1008, 0x82081500, 0x00ffffff,
4384 0x59a80010, 0x80084d80, 0x42000000, 0x00000010,
4385 0x04000155, 0x0201f800, 0x00104919, 0x04000036,
4386 0x4803c857, 0x82004d80, 0x0000001d, 0x0402001a,
4387 0x0201f800, 0x00105755, 0x59340405, 0x4c000000,
4388 0x0201f800, 0x001049e7, 0x5c000000, 0x04000004,
4389 0x8c20450a, 0x04000028, 0x80000580, 0x44002800,
4390 0x59340008, 0x48002802, 0x59340009, 0x48002801,
4391 0x59340006, 0x48002804, 0x59340007, 0x48002803,
4392 0x4200b000, 0x00000005, 0x0201f800, 0x0010955f,
4393 0x0401f166, 0x4803c857, 0x82004d80, 0x0000001a,
4394 0x04020003, 0x40101000, 0x0401f136, 0x4803c857,
4395 0x82004d80, 0x0000001b, 0x04020003, 0x40181000,
4396 0x0401f130, 0x4803c857, 0x82004d80, 0x0000001c,
4397 0x04000131, 0x82004d80, 0x00000019, 0x42000000,
4398 0x0000000a, 0x04000120, 0x42000000, 0x0000000a,
4399 0x04020137, 0x59a80005, 0x8c000514, 0x0400001b,
4400 0x0201f800, 0x001049e7, 0x04000018, 0x59340212,
4401 0x82000500, 0x0000ff00, 0x42001000, 0x00000010,
4402 0x0402000c, 0x42001000, 0x00000008, 0x59a80026,
4403 0x8c000506, 0x04020009, 0x59340002, 0x82000500,
4404 0x00ff0000, 0x82000580, 0x00ff0000, 0x04000007,
4405 0x0201f800, 0x00104c6d, 0x42000000, 0x0000001c,
4406 0x40181000, 0x04020107, 0x0201f800, 0x0002075a,
4407 0x04000111, 0x49366009, 0x492e6008, 0x4a026406,
4408 0x00000001, 0x8c20450a, 0x04000004, 0x592c0404,
4409 0x8400055c, 0x48025c04, 0x4c200000, 0x4d3c0000,
4410 0x42027800, 0x00001000, 0x0201f800, 0x0010203c,
4411 0x5c027800, 0x5c004000, 0x8c204512, 0x0400000b,
4412 0x599c0018, 0x8c000518, 0x04000008, 0x592c0009,
4413 0x82000500, 0x00000380, 0x5934080a, 0x80040d40,
4414 0x84040d54, 0x4806680a, 0x417a7800, 0x0401f914,
4415 0x42000800, 0x00000003, 0x0401f91b, 0x42027000,
4416 0x00000002, 0x0201f800, 0x000207a1, 0x80000580,
4417 0x0401f10a, 0x0201f800, 0x00020245, 0x040200ec,
4418 0x0201f800, 0x001049ed, 0x04000008, 0x0201f800,
4419 0x001049e7, 0x040200ec, 0x417a7800, 0x417a6000,
4420 0x0201f800, 0x001020a1, 0x59a80005, 0x8c000514,
4421 0x0400001b, 0x0201f800, 0x001049e7, 0x04000018,
4422 0x59340212, 0x82000500, 0x0000ff00, 0x42001000,
4423 0x00000010, 0x0402000c, 0x42001000, 0x00000008,
4424 0x59a80026, 0x8c000506, 0x04020009, 0x59340002,
4425 0x82000500, 0x00ff0000, 0x82000580, 0x00ff0000,
4426 0x04000007, 0x0201f800, 0x00104c6d, 0x42000000,
4427 0x0000001c, 0x40181000, 0x040200b2, 0x0201f800,
4428 0x0002075a, 0x040000bc, 0x5934080a, 0x8c204512,
4429 0x0400000c, 0x599c0018, 0x8c000518, 0x04000009,
4430 0x592c0009, 0x82000500, 0x00000380, 0x82041500,
4431 0xfffffc7f, 0x80080d40, 0x84040d54, 0x0401f002,
4432 0x84040d14, 0x4806680a, 0x49366009, 0x492e6008,
4433 0x4a026406, 0x00000001, 0x417a7800, 0x0401f8c8,
4434 0x42000800, 0x00000005, 0x0401f8cf, 0x42027000,
4435 0x00000003, 0x0201f800, 0x000207a1, 0x80000580,
4436 0x0401f0be, 0x0201f800, 0x00020245, 0x040200a0,
4437 0x0201f800, 0x001049fc, 0x040200a3, 0x0201f800,
4438 0x00109517, 0x04000094, 0x80000580, 0x0401f0b3,
4439 0x0201f800, 0x00020245, 0x04020095, 0x0201f800,
4440 0x001049fc, 0x04020098, 0x0201f800, 0x001090e6,
4441 0x04000089, 0x80000580, 0x0401f0a8, 0x0201f800,
4442 0x00020245, 0x0402008a, 0x83444d80, 0x000007fe,
4443 0x42000000, 0x0000000a, 0x0402006b, 0x0201f800,
4444 0x001049e7, 0x04020088, 0x0201f800, 0x0010952f,
4445 0x04000079, 0x80000580, 0x0401f098, 0x82200500,
4446 0x00000070, 0x04020005, 0x8c20450e, 0x42000000,
4447 0x0000000c, 0x0402005c, 0x8c20450a, 0x0400000d,
4448 0x4d3c0000, 0x42027800, 0x00001000, 0x8c20450e,
4449 0x04020002, 0x853e7d56, 0x82200500, 0x000000a0,
4450 0x0201f800, 0x001049d3, 0x5c027800, 0x0401f07f,
4451 0x0201f800, 0x00020245, 0x04020065, 0x8c204508,
4452 0x04000010, 0x4d3c0000, 0x42027800, 0x00001000,
4453 0x8c20450e, 0x04020002, 0x853e7d56, 0x82200500,
4454 0x00000090, 0x0201f800, 0x001049bb, 0x5c027800,
4455 0x42000000, 0x0000000a, 0x0402003b, 0x0401f06b,
4456 0x836c0580, 0x00000003, 0x42000800, 0x00000007,
4457 0x0402000f, 0x0201f800, 0x001049f3, 0x04000007,
4458 0x4c000000, 0x0201f800, 0x00104a1f, 0x5c000000,
4459 0x0400004d, 0x0401f05d, 0x0201f800, 0x001094c5,
4460 0x04000007, 0x80000580, 0x0401f05c, 0x0201f800,
4461 0x00104a1f, 0x04000051, 0x0401f054, 0x0201f800,
4462 0x00104a1f, 0x04000034, 0x0401f050, 0x0201f800,
4463 0x00020245, 0x04020036, 0x836c0580, 0x00000003,
4464 0x04020040, 0x8c204508, 0x04000006, 0x417a7800,
4465 0x417a6000, 0x0201f800, 0x001020a1, 0x0401f043,
4466 0x0201f800, 0x001049ed, 0x04000008, 0x0201f800,
4467 0x001049e7, 0x0402002c, 0x417a7800, 0x417a6000,
4468 0x0201f800, 0x001020a1, 0x480bc856, 0x0201f800,
4469 0x00109332, 0x04000018, 0x80000580, 0x0401f037,
4470 0x0401f7e3, 0x480bc857, 0x42000800, 0x00000019,
4471 0x40001000, 0x4200b000, 0x00000002, 0x0401f00a,
4472 0x480bc857, 0x40000800, 0x4200b000, 0x00000002,
4473 0x0401f005, 0x480bc857, 0x40000800, 0x4200b000,
4474 0x00000001, 0x480bc857, 0x42028000, 0x00000031,
4475 0x0401f020, 0x480bc857, 0x42000800, 0x00000003,
4476 0x4200b000, 0x00000001, 0x0401f7f7, 0x480bc857,
4477 0x42000800, 0x0000000a, 0x4200b000, 0x00000001,
4478 0x0401f7f1, 0x480bc857, 0x42000800, 0x00000009,
4479 0x40001000, 0x4200b000, 0x00000002, 0x0401f7ea,
4480 0x480bc857, 0x42000800, 0x00000007, 0x4200b000,
4481 0x00000001, 0x0401f7e4, 0x480bc857, 0x4200b000,
4482 0x00000001, 0x0401f7e0, 0x80028580, 0x4178b000,
4483 0x82000540, 0x00000001, 0x1c01f000, 0x4937c857,
4484 0x59326809, 0x59341200, 0x813e79c0, 0x04000003,
4485 0x84081540, 0x0401f002, 0x84081500, 0x480a6a00,
4486 0x1c01f000, 0x59326809, 0x5c000000, 0x4c000000,
4487 0x4803c857, 0x4937c857, 0x82040580, 0x00000006,
4488 0x04020004, 0x42000000, 0x00000606, 0x0401f021,
4489 0x82040580, 0x00000004, 0x04020004, 0x42000000,
4490 0x00000404, 0x0401f01b, 0x82040580, 0x00000007,
4491 0x42000000, 0x00000707, 0x04000016, 0x82040580,
4492 0x00000003, 0x42000000, 0x00000703, 0x04000011,
4493 0x82040580, 0x00000005, 0x42000000, 0x00000405,
4494 0x0400000c, 0x82040580, 0x00000009, 0x42000000,
4495 0x00000409, 0x04000007, 0x82040580, 0x0000000b,
4496 0x42000000, 0x0000070b, 0x02020800, 0x001005d8,
4497 0x4803c857, 0x48026c00, 0x82040d80, 0x00000006,
4498 0x04020005, 0x59341404, 0x800811c0, 0x02000800,
4499 0x001005d8, 0x1c01f000, 0x5c000000, 0x4c000000,
4500 0x4803c857, 0x4947c857, 0x481bc857, 0x83440480,
4501 0x00000800, 0x04021034, 0x83441400, 0x0010ac00,
4502 0x50080000, 0x80026d40, 0x04020011, 0x4c180000,
4503 0x4d2c0000, 0x0201f800, 0x001007d3, 0x412e6800,
4504 0x5c025800, 0x5c003000, 0x04000027, 0x45341000,
4505 0x497a680d, 0x497a6810, 0x497a680f, 0x497a680e,
4506 0x4c180000, 0x0401fcf3, 0x5c003000, 0x59340a12,
4507 0x4c040000, 0x0201f800, 0x0010513b, 0x5c000800,
4508 0x04000009, 0x82180500, 0x00ffff00, 0x04000008,
4509 0x59a81010, 0x82081500, 0x00ffff00, 0x80080580,
4510 0x04000003, 0x80000580, 0x0401f004, 0x82180500,
4511 0x000000ff, 0x800000d0, 0x80040d80, 0x04000003,
4512 0x4803c857, 0x48026a12, 0x59340002, 0x80180580,
4513 0x04000003, 0x481bc857, 0x481a6802, 0x80000580,
4514 0x1c01f000, 0x4803c856, 0x82000540, 0x00000001,
4515 0x0401f7fc, 0x4947c857, 0x83440480, 0x00000800,
4516 0x04021011, 0x83441400, 0x0010ac00, 0x50080000,
4517 0x80026d40, 0x0400000b, 0x0401fbf9, 0x0402000a,
4518 0x59a80005, 0x8c000502, 0x04000004, 0x59340200,
4519 0x8c00050e, 0x04000004, 0x82000540, 0x00000001,
4520 0x1c01f000, 0x80000580, 0x0401f7fe, 0x5c000000,
4521 0x4c000000, 0x4803c857, 0x4947c857, 0x4d2c0000,
4522 0x4d300000, 0x83440480, 0x00000800, 0x04021024,
4523 0x83441400, 0x0010ac00, 0x50080000, 0x80026d40,
4524 0x0400001b, 0x45781000, 0x5934000d, 0x80025d40,
4525 0x02020800, 0x001007fd, 0x59366011, 0x813261c0,
4526 0x0400000e, 0x4c640000, 0x5930c800, 0x59325808,
4527 0x0201f800, 0x00109037, 0x02020800, 0x001007fd,
4528 0x0201f800, 0x0002077d, 0x82666540, 0x00000000,
4529 0x040207f6, 0x5c00c800, 0x0201f800, 0x00104c62,
4530 0x41365800, 0x0201f800, 0x001007f5, 0x80000580,
4531 0x5c026000, 0x5c025800, 0x1c01f000, 0x82000540,
4532 0x00000001, 0x0401f7fb, 0x4937c857, 0x4c580000,
4533 0x59cc0001, 0x82000500, 0x00ffffff, 0x48026802,
4534 0x497a6c01, 0x497a6a01, 0x59340200, 0x84000502,
4535 0x48026a00, 0x0201f800, 0x0010513b, 0x04020017,
4536 0x59340403, 0x82000580, 0x000007fe, 0x04000005,
4537 0x59a80026, 0x8c00050a, 0x04020010, 0x0401f008,
4538 0x59cc0408, 0x8c000518, 0x0400000c, 0x59cc0009,
4539 0x48035035, 0x59cc000a, 0x48035036, 0x59cc0207,
4540 0x80000540, 0x04020003, 0x42000000, 0x00000001,
4541 0x48038893, 0x4803501e, 0x59cc0a09, 0x82040d00,
4542 0x00000010, 0x59cc0408, 0x82000500, 0x00000020,
4543 0x04000002, 0x84040d40, 0x5934000a, 0x82000500,
4544 0xffffffee, 0x80040540, 0x4802680a, 0x83cca400,
4545 0x0000000b, 0x8334ac00, 0x00000006, 0x4200b000,
4546 0x00000002, 0x0201f800, 0x0010ab17, 0x83cca400,
4547 0x0000000d, 0x8334ac00, 0x00000008, 0x4200b000,
4548 0x00000002, 0x0201f800, 0x0010ab17, 0x59cc0a18,
4549 0x82040480, 0x00000800, 0x0402100c, 0x82040480,
4550 0x00000400, 0x04001004, 0x42000800, 0x00000400,
4551 0x0401f006, 0x82040480, 0x00000200, 0x04001003,
4552 0x42000800, 0x00000200, 0x48066a04, 0x59340403,
4553 0x82000580, 0x000007fe, 0x04020003, 0x59cc0a08,
4554 0x48066a04, 0x42000800, 0x00000004, 0x59cc1207,
4555 0x800811c0, 0x04000005, 0x82080480, 0x00000004,
4556 0x04021002, 0x40080800, 0x48066c04, 0x5c00b000,
4557 0x1c01f000, 0x4937c857, 0x59a80026, 0x8c000508,
4558 0x04000004, 0x84000556, 0x4803c857, 0x48035026,
4559 0x59cc0207, 0x4803c857, 0x48026a05, 0x59cc020a,
4560 0x4803c857, 0x48026c05, 0x59341200, 0x599c0818,
4561 0x5934180a, 0x4807c857, 0x480bc857, 0x480fc857,
4562 0x59cc2006, 0x82102500, 0xff000000, 0x82102580,
4563 0x02000000, 0x04000007, 0x8c00050e, 0x04000009,
4564 0x8c0c1d14, 0x04000003, 0x8c0c1d0e, 0x04000005,
4565 0x8c040d18, 0x04000003, 0x8408154a, 0x0401f002,
4566 0x8408150a, 0x8c000510, 0x04000009, 0x8c0c1d14,
4567 0x04000003, 0x8c0c1d10, 0x04000005, 0x8c040d18,
4568 0x04000003, 0x8408154e, 0x0401f002, 0x8408150e,
4569 0x8c000512, 0x04000009, 0x8c0c1d14, 0x04000003,
4570 0x8c0c1d12, 0x04000005, 0x8c040d18, 0x04000003,
4571 0x8408155c, 0x0401f002, 0x8408151c, 0x480a6a00,
4572 0x1c01f000, 0x4803c856, 0x4c5c0000, 0x4d2c0000,
4573 0x4c580000, 0x5934000d, 0x80025d40, 0x04000029,
4574 0x592c0003, 0x82000480, 0x00000008, 0x0400100b,
4575 0x412cb800, 0x592c0001, 0x80025d40, 0x040207f9,
4576 0x0201f800, 0x001007e4, 0x04000037, 0x492fc857,
4577 0x492cb801, 0x0401f020, 0x832c0c00, 0x00000004,
4578 0x4200b000, 0x00000008, 0x50040000, 0x82000580,
4579 0xffffffff, 0x04020006, 0x80041000, 0x50080000,
4580 0x82000580, 0xffffffff, 0x04000007, 0x82040c00,
4581 0x00000002, 0x8058b040, 0x040207f4, 0x0201f800,
4582 0x001005d8, 0x45480800, 0x454c1000, 0x592c1803,
4583 0x800c1800, 0x480e5803, 0x480fc857, 0x0401f014,
4584 0x0201f800, 0x001007e4, 0x04000017, 0x492fc857,
4585 0x492e680d, 0x497a5802, 0x4a025803, 0x00000001,
4586 0x494a5804, 0x494e5805, 0x832c0c00, 0x00000006,
4587 0x4200b000, 0x0000000e, 0x46000800, 0xffffffff,
4588 0x80040800, 0x8058b040, 0x040207fc, 0x82000540,
4589 0x00000001, 0x5c00b000, 0x5c025800, 0x5c00b800,
4590 0x1c01f000, 0x80000580, 0x0401f7fb, 0x4803c856,
4591 0x4d3c0000, 0x4d2c0000, 0x5934000d, 0x80025d40,
4592 0x0400001f, 0x592c0002, 0x80000540, 0x0402001f,
4593 0x412e7800, 0x0401f8ce, 0x0402001c, 0x46000800,
4594 0xffffffff, 0x46001000, 0xffffffff, 0x4813c857,
4595 0x480fc857, 0x580c0003, 0x82000c80, 0x00000002,
4596 0x04021014, 0x480fc857, 0x400c0000, 0x812c0580,
4597 0x04020004, 0x580c0001, 0x4802680d, 0x0401f003,
4598 0x580c0001, 0x48002001, 0x400e5800, 0x0201f800,
4599 0x001007f4, 0x82000540, 0x00000001, 0x5c025800,
4600 0x5c027800, 0x1c01f000, 0x80000580, 0x0401f7fc,
4601 0x80000040, 0x48001803, 0x4803c857, 0x0401f7f6,
4602 0x0201f800, 0x00020086, 0x59300007, 0x8400054e,
4603 0x48026007, 0x592c1a04, 0x820c1d00, 0x000000ff,
4604 0x820c0580, 0x00000048, 0x04000013, 0x0201f000,
4605 0x0002028e, 0x8c000500, 0x02020800, 0x000200e5,
4606 0x4a026203, 0x00000002, 0x592c1a04, 0x820c1d00,
4607 0x000000ff, 0x820c0580, 0x00000018, 0x02000000,
4608 0x0002028e, 0x820c0580, 0x00000048, 0x02020000,
4609 0x0002028e, 0x42000800, 0x80000804, 0x0201f800,
4610 0x00106721, 0x0201f000, 0x00020297, 0x4a025a06,
4611 0x00000008, 0x0201f000, 0x000202da, 0x4a025a06,
4612 0x00000029, 0x0201f000, 0x000202da, 0x4a025a06,
4613 0x0000002a, 0x0201f000, 0x000202da, 0x4a025a06,
4614 0x00000028, 0x0201f000, 0x000202da, 0x4943c857,
4615 0x4d440000, 0x4d340000, 0x4d2c0000, 0x4c580000,
4616 0x4200b000, 0x000007f0, 0x417a8800, 0x0201f800,
4617 0x00020245, 0x0402000d, 0x8d3e7d14, 0x04000005,
4618 0x59340212, 0x82000500, 0x0000ff00, 0x04000007,
4619 0x8d3e7d06, 0x04000004, 0x59340200, 0x8c00050e,
4620 0x04020002, 0x0401f813, 0x81468800, 0x8058b040,
4621 0x040207ef, 0x83440480, 0x00000800, 0x04021008,
4622 0x8d3e7d02, 0x04000006, 0x42028800, 0x000007f0,
4623 0x4200b000, 0x00000010, 0x0401f7e5, 0x5c00b000,
4624 0x5c025800, 0x5c026800, 0x5c028800, 0x1c01f000,
4625 0x4d2c0000, 0x41783000, 0x5936580f, 0x812e59c0,
4626 0x04000029, 0x592c0204, 0x82000500, 0x000000ff,
4627 0x82000580, 0x00000012, 0x04000020, 0x8d3e7d00,
4628 0x04000003, 0x0401f83c, 0x0402001c, 0x592c2000,
4629 0x497a5800, 0x801831c0, 0x04020009, 0x59340010,
4630 0x812c0580, 0x04020004, 0x497a680f, 0x497a6810,
4631 0x0401f008, 0x4812680f, 0x0401f006, 0x48103000,
4632 0x59340010, 0x812c0580, 0x04020002, 0x481a6810,
4633 0x4a025a04, 0x00000103, 0x49425a06, 0x497a5c09,
4634 0x0201f800, 0x001091c6, 0x0201f800, 0x000202da,
4635 0x40125800, 0x0401f7da, 0x412c3000, 0x592e5800,
4636 0x0401f7d7, 0x5c025800, 0x1c01f000, 0x4803c856,
4637 0x41781800, 0x5934000f, 0x80025d40, 0x04000010,
4638 0x592c0005, 0x80200580, 0x592c0000, 0x04000003,
4639 0x412c1800, 0x0401f7f9, 0x497a5800, 0x800c19c0,
4640 0x04000008, 0x48001800, 0x80000540, 0x04020004,
4641 0x480e6810, 0x82000540, 0x00000001, 0x1c01f000,
4642 0x4802680f, 0x80000540, 0x040207fd, 0x497a6810,
4643 0x0401f7f9, 0x592c0008, 0x81480580, 0x04020003,
4644 0x592c0009, 0x814c0580, 0x1c01f000, 0x4803c856,
4645 0x4c580000, 0x413c1800, 0x400c2000, 0x593c0002,
4646 0x80000540, 0x04020018, 0x4200b000, 0x00000008,
4647 0x820c0c00, 0x00000004, 0x50040000, 0x81480580,
4648 0x04020005, 0x80041000, 0x50080000, 0x814c0580,
4649 0x0400000d, 0x82040c00, 0x00000002, 0x8058b040,
4650 0x040207f6, 0x400c2000, 0x580c0001, 0x80001d40,
4651 0x040207ee, 0x82000540, 0x00000001, 0x5c00b000,
4652 0x1c01f000, 0x80000580, 0x0401f7fd, 0x4937c857,
4653 0x4c580000, 0x4d2c0000, 0x5934000d, 0x80025d40,
4654 0x04020016, 0x0201f800, 0x001007e4, 0x04000010,
4655 0x492e680d, 0x4a025802, 0x00000001, 0x497a5803,
4656 0x832c0c00, 0x00000004, 0x4200b000, 0x00000010,
4657 0x46000800, 0xffffffff, 0x80040800, 0x8058b040,
4658 0x040207fc, 0x82000540, 0x00000001, 0x5c025800,
4659 0x5c00b000, 0x1c01f000, 0x4d2c0000, 0x592e5801,
4660 0x0201f800, 0x001007fd, 0x5c025800, 0x0401f7ea,
4661 0x4d2c0000, 0x5936580d, 0x812e59c0, 0x04000007,
4662 0x4937c857, 0x497a680d, 0x0201f800, 0x001007fd,
4663 0x82000540, 0x00000001, 0x5c025800, 0x1c01f000,
4664 0x59340405, 0x4937c857, 0x4803c857, 0x8c000508,
4665 0x1c01f000, 0x4803c856, 0x0201f800, 0x0010513b,
4666 0x04000011, 0x59a80815, 0x8c040d04, 0x0402000e,
4667 0x59a80826, 0x8c040d06, 0x0400000b, 0x83ac0400,
4668 0x000007fe, 0x50000000, 0x80026d40, 0x04000006,
4669 0x0401f9a7, 0x04020004, 0x59340200, 0x8400055a,
4670 0x48026a00, 0x599c0017, 0x8c000508, 0x04000015,
4671 0x4200b000, 0x000007f0, 0x417a8800, 0x0201f800,
4672 0x00020245, 0x0402000c, 0x0401f999, 0x0402000a,
4673 0x59a80010, 0x59340802, 0x80040580, 0x82000500,
4674 0x00ffff00, 0x04020004, 0x59340200, 0x8400055a,
4675 0x48026a00, 0x81468800, 0x8058b040, 0x040207f0,
4676 0x0401f884, 0x04000003, 0x59a80836, 0x0401f006,
4677 0x599c0017, 0x8c000508, 0x04000007, 0x42000800,
4678 0x000007d0, 0x42001000, 0x00104876, 0x0201f800,
4679 0x0010606e, 0x1c01f000, 0x4803c856, 0x4d340000,
4680 0x4d440000, 0x4d3c0000, 0x4c580000, 0x42001000,
4681 0x00104876, 0x0201f800, 0x00105f90, 0x59a80826,
4682 0x8c040d06, 0x04000015, 0x0401f86a, 0x04000013,
4683 0x83ae6c00, 0x000007fe, 0x51366800, 0x59340200,
4684 0x8400051a, 0x48026a00, 0x599c0017, 0x8c000508,
4685 0x04000007, 0x42000800, 0x000007d0, 0x42001000,
4686 0x00104876, 0x0201f800, 0x0010606e, 0x0201f800,
4687 0x00101e45, 0x0401f027, 0x4200b000, 0x000007f0,
4688 0x80028d80, 0x0201f800, 0x00020245, 0x0402001e,
4689 0x59340200, 0x8c00051a, 0x0400001b, 0x59368c03,
4690 0x417a7800, 0x42028000, 0x00000029, 0x41783000,
4691 0x0201f800, 0x0010a446, 0x59340200, 0x84000558,
4692 0x8400051a, 0x48026a00, 0x4937c857, 0x4a026c00,
4693 0x00000707, 0x42028000, 0x00000029, 0x0201f800,
4694 0x00106ab4, 0x417a7800, 0x0201f800, 0x001067fd,
4695 0x80000d80, 0x0201f800, 0x0010a2ff, 0x0201f800,
4696 0x00106c4b, 0x81468800, 0x8058b040, 0x040207de,
4697 0x5c00b000, 0x5c027800, 0x5c028800, 0x5c026800,
4698 0x1c01f000, 0x4933c857, 0x59303809, 0x581c0200,
4699 0x8400051a, 0x48003a00, 0x1c01f000, 0x4803c856,
4700 0x42026800, 0x0010b524, 0x497a680e, 0x42028800,
4701 0x000007ff, 0x0201f800, 0x001042b4, 0x4937c857,
4702 0x4a026c00, 0x00000606, 0x4a026802, 0x00ffffff,
4703 0x4a026a04, 0x00000200, 0x4a026c04, 0x00000002,
4704 0x1c01f000, 0x59300009, 0x50000000, 0x4933c857,
4705 0x4803c857, 0x8c00050e, 0x1c01f000, 0x59300009,
4706 0x50000000, 0x8c00050a, 0x1c01f000, 0x4933c856,
4707 0x0401f90f, 0x04000006, 0x59340400, 0x82000d00,
4708 0x000000ff, 0x82041580, 0x00000005, 0x1c01f000,
4709 0x4d340000, 0x83ac0400, 0x000007fe, 0x50000000,
4710 0x80026d40, 0x04000003, 0x59340200, 0x8c00051a,
4711 0x5c026800, 0x1c01f000, 0x4937c857, 0x493fc857,
4712 0x59340403, 0x81ac0400, 0x50000000, 0x81340580,
4713 0x02020800, 0x001005d8, 0x59341200, 0x813e79c0,
4714 0x04000003, 0x8408155e, 0x0401f002, 0x8408151e,
4715 0x480a6a00, 0x1c01f000, 0x4937c857, 0x0201f800,
4716 0x0010210a, 0x04000006, 0x59a80835, 0x42001000,
4717 0x00104910, 0x0201f800, 0x0010606e, 0x1c01f000,
4718 0x4937c857, 0x42001000, 0x00104910, 0x0201f800,
4719 0x00105f90, 0x59a81026, 0x84081512, 0x480b5026,
4720 0x1c01f000, 0x4c380000, 0x4c340000, 0x4c240000,
4721 0x4c600000, 0x4008c000, 0x83440480, 0x00000800,
4722 0x04021045, 0x80002d80, 0x41442000, 0x83447400,
4723 0x0010ac00, 0x4200b000, 0x000007f0, 0x83444c80,
4724 0x000007f0, 0x04001003, 0x4200b000, 0x00000010,
4725 0x50380000, 0x80000540, 0x0402001e, 0x41440000,
4726 0x80100580, 0x04020043, 0x40102800, 0x82104c80,
4727 0x000007f0, 0x04001015, 0x82104d80, 0x000007fc,
4728 0x04020005, 0x82604d80, 0x00fffffc, 0x0402002a,
4729 0x0401f00e, 0x82104d80, 0x000007fd, 0x04020005,
4730 0x82604d80, 0x00fffffd, 0x04020023, 0x0401f007,
4731 0x82104d80, 0x000007ff, 0x0402001f, 0x82604d80,
4732 0x00ffffff, 0x0402001c, 0x84142d5e, 0x0401f029,
4733 0x40006800, 0x58343002, 0x82183500, 0x00ffffff,
4734 0x40180000, 0x80600580, 0x04020019, 0x40100000,
4735 0x81440580, 0x0402000a, 0x40366800, 0x8c204508,
4736 0x04000053, 0x0401ff8a, 0x04020051, 0x4947c857,
4737 0x42000000, 0x0000001d, 0x0401f04e, 0x4947c857,
4738 0x480bc857, 0x4823c857, 0x42000000, 0x0000001a,
4739 0x0401f048, 0x4947c857, 0x4863c857, 0x4813c857,
4740 0x42000000, 0x00000019, 0x0401f042, 0x40100000,
4741 0x81440580, 0x04020007, 0x58343002, 0x4947c857,
4742 0x481bc857, 0x42000000, 0x0000001b, 0x0401f039,
4743 0x80102000, 0x80387000, 0x83444c80, 0x000007f0,
4744 0x04001009, 0x82104d80, 0x00000800, 0x0402000c,
4745 0x42002000, 0x000007f0, 0x42007000, 0x0010b3f0,
4746 0x0401f007, 0x82104d80, 0x000007f0, 0x04020004,
4747 0x41782000, 0x42007000, 0x0010ac00, 0x8058b040,
4748 0x040207a4, 0x801429c0, 0x04020007, 0x0201f800,
4749 0x001005d8, 0x4947c857, 0x42000000, 0x0000000a,
4750 0x0401f01c, 0x4d2c0000, 0x4c180000, 0x40603000,
4751 0x0401fc12, 0x4947c857, 0x4937c857, 0x5c003000,
4752 0x5c025800, 0x040207f4, 0x497a6a12, 0x59a80026,
4753 0x8c00050a, 0x0402000d, 0x82600500, 0x00ffff00,
4754 0x04000006, 0x59a84810, 0x82244d00, 0x00ffff00,
4755 0x80240580, 0x04020005, 0x82600500, 0x000000ff,
4756 0x800000d0, 0x48026a12, 0x48626802, 0x80000580,
4757 0x80000540, 0x5c00c000, 0x5c004800, 0x5c006800,
4758 0x5c007000, 0x1c01f000, 0x5934000f, 0x5934140b,
4759 0x80081040, 0x04001002, 0x480a6c0b, 0x80000540,
4760 0x02020800, 0x00020253, 0x1c01f000, 0x4803c857,
4761 0x4947c857, 0x4c300000, 0x82006500, 0x00000030,
4762 0x04000006, 0x4c000000, 0x0201f800, 0x0010942a,
4763 0x5c000000, 0x0402000b, 0x8c00050e, 0x04000006,
4764 0x0201f800, 0x00020245, 0x04020006, 0x4937c857,
4765 0x0401fc2f, 0x80000580, 0x5c006000, 0x1c01f000,
4766 0x82000540, 0x00000001, 0x0401f7fc, 0x4803c857,
4767 0x4c580000, 0x4d440000, 0x40001000, 0x80000d80,
4768 0x4200b000, 0x000007f0, 0x4c040000, 0x40068800,
4769 0x4c080000, 0x40080000, 0x0401ffdd, 0x5c001000,
4770 0x5c000800, 0x80040800, 0x8058b040, 0x040207f7,
4771 0x5c028800, 0x5c00b000, 0x1c01f000, 0x4c5c0000,
4772 0x59340400, 0x8200bd80, 0x00000606, 0x5c00b800,
4773 0x1c01f000, 0x4c5c0000, 0x59340400, 0x8200bd80,
4774 0x00000404, 0x5c00b800, 0x1c01f000, 0x4c5c0000,
4775 0x59340400, 0x8200bd80, 0x00000404, 0x04000003,
4776 0x8200bd80, 0x00000606, 0x5c00b800, 0x1c01f000,
4777 0x4c5c0000, 0x4c600000, 0x59340400, 0x8200bd00,
4778 0x0000ff00, 0x825cc580, 0x00000400, 0x04000003,
4779 0x825cc580, 0x00000600, 0x5c00c000, 0x5c00b800,
4780 0x1c01f000, 0x4c5c0000, 0x59340400, 0x82000500,
4781 0x000000ff, 0x8200bd80, 0x00000003, 0x04000003,
4782 0x8200bd80, 0x00000005, 0x5c00b800, 0x1c01f000,
4783 0x4c5c0000, 0x59340400, 0x82000500, 0x0000ff00,
4784 0x8400b9c0, 0x805c0580, 0x4937c857, 0x4803c857,
4785 0x48026c00, 0x5c00b800, 0x1c01f000, 0x4c040000,
4786 0x4c080000, 0x592c0207, 0x8c00050c, 0x0400000f,
4787 0x592e8c06, 0x82000500, 0x00000080, 0x84000548,
4788 0x4d3c0000, 0x42027800, 0x00001000, 0x0401ff90,
4789 0x5c027800, 0x82000540, 0x00000001, 0x5c001000,
4790 0x5c000800, 0x1c01f000, 0x80000580, 0x0401f7fc,
4791 0x592c040b, 0x82000500, 0x0000e000, 0x82000580,
4792 0x00006000, 0x04000019, 0x836c0580, 0x00000003,
4793 0x04000016, 0x836c0580, 0x00000002, 0x040200ff,
4794 0x59a80026, 0x82000d00, 0x00000038, 0x04020005,
4795 0x59a80832, 0x800409c0, 0x0400000c, 0x0401f0f7,
4796 0x82000d00, 0x00000003, 0x82040d80, 0x00000003,
4797 0x040200f2, 0x82000d00, 0x00000028, 0x04020003,
4798 0x8c00050c, 0x040000ed, 0x592c100a, 0x82080500,
4799 0xff000000, 0x040200ce, 0x59a80010, 0x80080580,
4800 0x040000c8, 0x592c0c0b, 0x82040d00, 0x0000e000,
4801 0x82040480, 0x00008000, 0x040210c8, 0x592e8c06,
4802 0x83440480, 0x00000800, 0x04001007, 0x83440580,
4803 0x0000ffff, 0x040200af, 0x800409c0, 0x040200f7,
4804 0x0401f0ac, 0x800409c0, 0x040200f4, 0x41784000,
4805 0x0401fead, 0x040200db, 0x42027000, 0x00000053,
4806 0x592c2409, 0x82100500, 0xffffff00, 0x040200aa,
4807 0x4813c857, 0x592c000c, 0x800001c0, 0x04000083,
4808 0x82100580, 0x00000004, 0x040000a0, 0x82100580,
4809 0x00000051, 0x0400009d, 0x82100580, 0x00000003,
4810 0x04000016, 0x82100580, 0x00000020, 0x0400004b,
4811 0x82100580, 0x00000024, 0x04000042, 0x82100580,
4812 0x00000021, 0x04000042, 0x82100580, 0x00000050,
4813 0x04000037, 0x82100580, 0x00000052, 0x04000031,
4814 0x82100580, 0x00000005, 0x0402006b, 0x42027000,
4815 0x00000001, 0x0401f01b, 0x42027000, 0x00000002,
4816 0x59a80005, 0x8c000514, 0x04000016, 0x0401ff4c,
4817 0x04000014, 0x59340212, 0x82000500, 0x0000ff00,
4818 0x42001000, 0x00000010, 0x0402000c, 0x59a80026,
4819 0x8c000506, 0x0402006f, 0x42001000, 0x00000008,
4820 0x59340002, 0x82000500, 0x00ff0000, 0x82000580,
4821 0x00ff0000, 0x04000003, 0x0401f9bf, 0x04020065,
4822 0x0201f800, 0x0002075a, 0x0400007e, 0x4a026406,
4823 0x00000010, 0x49366009, 0x42000800, 0x00000003,
4824 0x83380580, 0x00000002, 0x04000003, 0x42000800,
4825 0x0000000b, 0x0201f800, 0x00104571, 0x0401f044,
4826 0x42027000, 0x00000000, 0x0401f003, 0x42027000,
4827 0x00000004, 0x0401ff37, 0x04020071, 0x0401f036,
4828 0x42027000, 0x00000033, 0x0401f006, 0x42027000,
4829 0x00000005, 0x0401f003, 0x42027000, 0x00000003,
4830 0x0401ff23, 0x04020066, 0x59a80005, 0x8c000514,
4831 0x04000016, 0x0401ff12, 0x04000014, 0x59340212,
4832 0x82000500, 0x0000ff00, 0x42001000, 0x00000010,
4833 0x0402000c, 0x59a80026, 0x8c000506, 0x04020035,
4834 0x42001000, 0x00000008, 0x59340002, 0x82000500,
4835 0x00ff0000, 0x82000580, 0x00ff0000, 0x04000003,
4836 0x0401f985, 0x0402002b, 0x0201f800, 0x0002075a,
4837 0x04000044, 0x4a026406, 0x00000010, 0x49366009,
4838 0x42000800, 0x00000005, 0x83380580, 0x00000003,
4839 0x04000003, 0x42000800, 0x00000009, 0x0201f800,
4840 0x00104571, 0x0401f00a, 0x82102580, 0x00000011,
4841 0x0402002d, 0x0201f800, 0x0002075a, 0x04000031,
4842 0x4a026406, 0x00000010, 0x49366009, 0x492e6008,
4843 0x49325808, 0x813669c0, 0x04000007, 0x592c0c0b,
4844 0x8c040d18, 0x04000004, 0x59340200, 0x84000514,
4845 0x48026a00, 0x0201f800, 0x000207a1, 0x80000580,
4846 0x1c01f000, 0x82000540, 0x00000001, 0x0401f7fd,
4847 0x42001000, 0x0000000a, 0x0401f015, 0x42001000,
4848 0x00000010, 0x0401f012, 0x42001000, 0x00000016,
4849 0x0401f00f, 0x42001000, 0x00000017, 0x0401f00c,
4850 0x42001000, 0x00000018, 0x0401f009, 0x42001000,
4851 0x0000001b, 0x0401f006, 0x42001000, 0x0000001e,
4852 0x0401f003, 0x42001000, 0x00000020, 0x42000800,
4853 0x00000019, 0x42028000, 0x00000031, 0x0401f7e2,
4854 0x42000800, 0x00000003, 0x0401f003, 0x42000800,
4855 0x0000000a, 0x41781000, 0x0401f7f7, 0x42000800,
4856 0x00000009, 0x59341400, 0x0401f7f3, 0x42028000,
4857 0x00000008, 0x0401f005, 0x42000800, 0x00000007,
4858 0x416c1000, 0x0401f7ec, 0x41780800, 0x41781000,
4859 0x0401f7cd, 0x42028000, 0x00000000, 0x0401f7fb,
4860 0x82004d80, 0x0000001d, 0x02000800, 0x001005d8,
4861 0x82004d80, 0x0000001a, 0x04020004, 0x40101000,
4862 0x40000800, 0x0401f7dc, 0x82004d80, 0x0000001b,
4863 0x04020003, 0x40181000, 0x0401f7fa, 0x82004d80,
4864 0x0000001c, 0x040007f7, 0x82004d80, 0x00000019,
4865 0x040007b8, 0x0401f7d6, 0x592e6008, 0x0201f800,
4866 0x0010941a, 0x040007b6, 0x59300c06, 0x82040580,
4867 0x00000011, 0x040207d6, 0x83440580, 0x0000ffff,
4868 0x04020005, 0x59326809, 0x813669c0, 0x0400000e,
4869 0x0401f7cf, 0x592c100a, 0x82081500, 0x00ffffff,
4870 0x41784000, 0x0401fda8, 0x040207d6, 0x59300009,
4871 0x800001c0, 0x04000003, 0x81340580, 0x040207c4,
4872 0x49366009, 0x592c0c0b, 0x82041500, 0x0000e000,
4873 0x82080580, 0x00006000, 0x04000009, 0x59300a03,
4874 0x82040580, 0x00000007, 0x040207b9, 0x492e6008,
4875 0x42027000, 0x00000054, 0x0401f77f, 0x0201f800,
4876 0x0010a8d4, 0x040007bc, 0x0401f7b1, 0x492fc857,
4877 0x59a80021, 0x800001c0, 0x04020073, 0x592e6008,
4878 0x4933c857, 0x0201f800, 0x0010941a, 0x04000041,
4879 0x59301406, 0x82080580, 0x00000005, 0x0402005b,
4880 0x59301203, 0x82080580, 0x00000007, 0x04020057,
4881 0x592e8c06, 0x83440480, 0x00000800, 0x04021032,
4882 0x41784000, 0x592c1009, 0x82081500, 0x00ffffff,
4883 0x0401fd75, 0x0402005f, 0x59300009, 0x800001c0,
4884 0x04000003, 0x81340580, 0x04020048, 0x4d300000,
4885 0x592e6013, 0x4933c857, 0x83300580, 0xffffffff,
4886 0x0400000d, 0x0201f800, 0x0010941a, 0x5c026000,
4887 0x04000029, 0x591c1406, 0x82080580, 0x00000006,
4888 0x04000046, 0x82080580, 0x00000011, 0x04000043,
4889 0x0401f002, 0x5c026000, 0x59a80010, 0x592c100a,
4890 0x82081500, 0x00ffffff, 0x80081580, 0x04020017,
4891 0x592c1009, 0x82081500, 0x00ffffff, 0x80081580,
4892 0x0400000f, 0x49366009, 0x492e6008, 0x42027000,
4893 0x00000092, 0x0201f800, 0x000207a1, 0x80000580,
4894 0x1c01f000, 0x42001000, 0x0000000a, 0x0401f00c,
4895 0x42001000, 0x00000010, 0x0401f009, 0x42001000,
4896 0x00000014, 0x0401f006, 0x42001000, 0x00000018,
4897 0x0401f003, 0x42001000, 0x0000003c, 0x492fc857,
4898 0x480bc857, 0x42000800, 0x00000019, 0x42028000,
4899 0x00000031, 0x82000540, 0x00000001, 0x0401f7e9,
4900 0x492fc857, 0x4803c857, 0x480bc857, 0x40000800,
4901 0x0401f7f7, 0x492fc857, 0x42000800, 0x0000000a,
4902 0x41781000, 0x0401f7f2, 0x4933c857, 0x59300406,
4903 0x4803c857, 0x59300203, 0x4803c857, 0x59300009,
4904 0x4803c857, 0x42028000, 0x00000008, 0x41780800,
4905 0x41781000, 0x0401f7e8, 0x42000800, 0x0000001e,
4906 0x0401f7f0, 0x42000800, 0x00000001, 0x0401f7ed,
4907 0x82004d80, 0x0000001d, 0x02000800, 0x001005d8,
4908 0x82004d80, 0x0000001a, 0x04020003, 0x40101000,
4909 0x0401f7dc, 0x82004d80, 0x0000001b, 0x04020003,
4910 0x40181000, 0x0401f7d7, 0x82004d80, 0x0000001c,
4911 0x040007d4, 0x82004d80, 0x00000019, 0x040007d1,
4912 0x0401f7d5, 0x59302009, 0x801021c0, 0x04000035,
4913 0x58101400, 0x82081d00, 0x000000ff, 0x59300c03,
4914 0x82040580, 0x00000008, 0x04000022, 0x82040580,
4915 0x0000000a, 0x04000017, 0x82040580, 0x0000000c,
4916 0x04000010, 0x82040580, 0x00000002, 0x04000019,
4917 0x82040580, 0x00000001, 0x04000012, 0x82040580,
4918 0x00000003, 0x0400000b, 0x82040580, 0x00000005,
4919 0x04000004, 0x82040580, 0x00000033, 0x04020019,
4920 0x820c0580, 0x00000009, 0x0400000d, 0x0401f015,
4921 0x820c0580, 0x00000005, 0x04000009, 0x0401f011,
4922 0x820c0580, 0x0000000b, 0x04000005, 0x0401f00d,
4923 0x820c0580, 0x00000003, 0x0402000a, 0x82081d00,
4924 0xffffff00, 0x840c01c0, 0x800c0540, 0x4813c857,
4925 0x480bc857, 0x4807c857, 0x4803c857, 0x48002400,
4926 0x1c01f000, 0x599c0017, 0x8c00050a, 0x04000003,
4927 0x80000580, 0x1c01f000, 0x59a80026, 0x82000500,
4928 0x00000028, 0x04000008, 0x42028800, 0x000007fd,
4929 0x0201f800, 0x00020245, 0x04020003, 0x5934000a,
4930 0x8c000504, 0x1c01f000, 0x4d300000, 0x5934000e,
4931 0x80026540, 0x04000006, 0x0201f800, 0x001062d5,
4932 0x02000800, 0x001064ad, 0x497a680e, 0x5c026000,
4933 0x1c01f000, 0x4d440000, 0x4d340000, 0x80000580,
4934 0x40001800, 0x40028800, 0x82080580, 0x00000008,
4935 0x04020003, 0x42001800, 0x00000001, 0x0201f800,
4936 0x00020245, 0x0402000a, 0x0401fd6d, 0x04020008,
4937 0x800c19c0, 0x04000004, 0x59340405, 0x8c000508,
4938 0x04000003, 0x80081040, 0x04000009, 0x81468800,
4939 0x83440480, 0x00000800, 0x040017f1, 0x80000580,
4940 0x5c026800, 0x5c028800, 0x1c01f000, 0x82000540,
4941 0x00000001, 0x5c026800, 0x5c028800, 0x1c01f000,
4942 0x4a033020, 0x00000000, 0x497b3026, 0x497b3027,
4943 0x497b3028, 0x497b3029, 0x497b302b, 0x497b3021,
4944 0x4a03b104, 0x60000001, 0x1c01f000, 0x4803c856,
4945 0x599c0018, 0x497b3024, 0x497b3025, 0x82000500,
4946 0x0000000f, 0x82000d80, 0x00000005, 0x04000006,
4947 0x82000580, 0x00000006, 0x0400000d, 0x497b3022,
4948 0x1c01f000, 0x4a033022, 0x00000005, 0x599c0216,
4949 0x82000500, 0x0000ffff, 0x04020003, 0x42000000,
4950 0x00000002, 0x48033023, 0x1c01f000, 0x4a033022,
4951 0x00000006, 0x0401f7f6, 0x0401ffe5, 0x4a03c826,
4952 0x00000004, 0x599c0209, 0x80000540, 0x0400001f,
4953 0x599c0207, 0x80000540, 0x04000007, 0x800000cc,
4954 0x599c080d, 0x80040400, 0x4803b100, 0x497bb102,
4955 0x59d80101, 0x599c000d, 0x4803b100, 0x599c000e,
4956 0x4803b101, 0x599c0207, 0x80000540, 0x04020002,
4957 0x497bb102, 0x599c0a09, 0x82040540, 0x00400000,
4958 0x59980822, 0x4803b103, 0x4a03b109, 0x00000004,
4959 0x4a03b104, 0x10000001, 0x800409c0, 0x04020004,
4960 0x4a033020, 0x00000001, 0x1c01f000, 0x4a033020,
4961 0x00000002, 0x0401f7fd, 0x59980022, 0x4803c856,
4962 0x80000540, 0x02000000, 0x000202de, 0x0401f017,
4963 0x42034000, 0x0010b4a4, 0x59a1d81e, 0x80edd9c0,
4964 0x02000800, 0x001005d8, 0x58ec0009, 0x48efc857,
4965 0x49a3c857, 0x492fc857, 0x4803c857, 0x800001c0,
4966 0x08020000, 0x0201f800, 0x001005d8, 0x5931d821,
4967 0x58ef400b, 0x58ec0009, 0x800001c0, 0x08020000,
4968 0x0201f800, 0x001005d8, 0x497a5800, 0x59980026,
4969 0x80000540, 0x0402008c, 0x59d80105, 0x82000d00,
4970 0x00018780, 0x040201da, 0x80000106, 0x82000500,
4971 0x00000003, 0x0c01f001, 0x00104d0a, 0x00104d89,
4972 0x00104d22, 0x00104d50, 0x592c0001, 0x492fc857,
4973 0x492fb107, 0x80000d40, 0x04020007, 0x59940019,
4974 0x80000540, 0x04022003, 0x59980023, 0x48032819,
4975 0x1c01f000, 0x497a5801, 0x40065800, 0x592c0001,
4976 0x496a5800, 0x815eb800, 0x412ed000, 0x80000d40,
4977 0x040207f9, 0x59c80000, 0x82000540, 0x00001200,
4978 0x48039000, 0x0401f7ee, 0x492fc857, 0x492fb107,
4979 0x592c0001, 0x80000d40, 0x04020012, 0x59da5908,
4980 0x835c0480, 0x00000020, 0x0400101c, 0x0402b01a,
4981 0x492fb007, 0x0400e7fa, 0x59d80105, 0x82000500,
4982 0x00018780, 0x040201aa, 0x59940019, 0x80000540,
4983 0x04022003, 0x59980023, 0x48032819, 0x1c01f000,
4984 0x497a5801, 0x40065800, 0x592c0001, 0x496a5800,
4985 0x815eb800, 0x412ed000, 0x80000d40, 0x040207f9,
4986 0x59c80000, 0x82000540, 0x00001200, 0x48039000,
4987 0x0401f7e3, 0x0400f009, 0x496a5800, 0x412ed000,
4988 0x815eb800, 0x59c80000, 0x82000540, 0x00001200,
4989 0x48039000, 0x0401f7e0, 0x492fa807, 0x0401f7de,
4990 0x492fc857, 0x59d81108, 0x45681000, 0x400ad000,
4991 0x815eb800, 0x0400e7fc, 0x59c80000, 0x82000540,
4992 0x00001200, 0x48039000, 0x0402d00c, 0x592c0001,
4993 0x492fc857, 0x492fb107, 0x80000d40, 0x0402001d,
4994 0x59940019, 0x80000540, 0x04022003, 0x59980023,
4995 0x48032819, 0x1c01f000, 0x59d80105, 0x82000500,
4996 0x00018780, 0x04020172, 0x42000000, 0x0010b855,
4997 0x0201f800, 0x0010aa47, 0x59980026, 0x59980828,
4998 0x80000000, 0x48033026, 0x492fc857, 0x800409c0,
4999 0x492f3028, 0x04000003, 0x492c0800, 0x0401f002,
5000 0x492f3029, 0x592c0001, 0x80000d40, 0x040007e5,
5001 0x497a5801, 0x40065800, 0x592c0001, 0x496a5800,
5002 0x815eb800, 0x412ed000, 0x80000d40, 0x040207f9,
5003 0x59c80000, 0x82000540, 0x00001200, 0x48039000,
5004 0x0401f7d8, 0x59980026, 0x59980828, 0x80000000,
5005 0x48033026, 0x492fc857, 0x800409c0, 0x492f3028,
5006 0x04000003, 0x492c0800, 0x0401f002, 0x492f3029,
5007 0x592c0001, 0x80000d40, 0x04020027, 0x0402d00e,
5008 0x59980029, 0x80025d40, 0x0400000f, 0x59980026,
5009 0x80000040, 0x48033026, 0x04020002, 0x48033028,
5010 0x592c0000, 0x48033029, 0x492fc857, 0x492fb107,
5011 0x0400d7f4, 0x42000000, 0x0010b855, 0x0201f800,
5012 0x0010aa47, 0x0402e00a, 0x59da5908, 0x496a5800,
5013 0x412ed000, 0x815eb800, 0x0400e7fc, 0x59c80000,
5014 0x82000540, 0x00001200, 0x48039000, 0x59d80105,
5015 0x82000500, 0x00018780, 0x04020125, 0x59940019,
5016 0x80000540, 0x04022003, 0x59980023, 0x48032819,
5017 0x1c01f000, 0x497a5801, 0x40065800, 0x592c0001,
5018 0x496a5800, 0x815eb800, 0x412ed000, 0x80000d40,
5019 0x040207f9, 0x59c80000, 0x82000540, 0x00001200,
5020 0x48039000, 0x0401f7ce, 0x592c0204, 0x4803c856,
5021 0x04000008, 0x42034000, 0x0010b4a4, 0x59a1d81e,
5022 0x80edd9c0, 0x02000800, 0x001005d8, 0x0401f003,
5023 0x5931d821, 0x58ef400b, 0x58ec0009, 0x800001c0,
5024 0x08020000, 0x0201f800, 0x001005d8, 0x497a5801,
5025 0x40065800, 0x592c0001, 0x496a5800, 0x412ed000,
5026 0x815eb800, 0x80000d40, 0x040207f9, 0x59c80000,
5027 0x82000540, 0x00001200, 0x48039000, 0x1c01f000,
5028 0x497a5801, 0x40065800, 0x592c0001, 0x496a5800,
5029 0x412ed000, 0x815eb800, 0x80000d40, 0x040207f9,
5030 0x59c80000, 0x82000540, 0x00001200, 0x48039000,
5031 0x0200e000, 0x000202fb, 0x0201f000, 0x00020302,
5032 0x5998002b, 0x84000540, 0x4803302b, 0x0201f000,
5033 0x0002035e, 0x42000000, 0x0010b855, 0x0201f800,
5034 0x0010aa47, 0x492fc857, 0x59980026, 0x59980828,
5035 0x80000000, 0x48033026, 0x800409c0, 0x492f3028,
5036 0x04000003, 0x492c0800, 0x0401f002, 0x492f3029,
5037 0x592c0001, 0x80000d40, 0x04020002, 0x1c01f000,
5038 0x497a5801, 0x40065800, 0x592c0001, 0x496a5800,
5039 0x412ed000, 0x815eb800, 0x80000d40, 0x040207f9,
5040 0x59c80000, 0x82000540, 0x00001200, 0x48039000,
5041 0x1c01f000, 0x59980026, 0x59980828, 0x80000000,
5042 0x48033026, 0x492fc857, 0x800409c0, 0x492f3028,
5043 0x04000003, 0x492c0800, 0x0401f002, 0x492f3029,
5044 0x592c0001, 0x80000d40, 0x04020039, 0x0402d00e,
5045 0x59980029, 0x80025d40, 0x0400000f, 0x59980026,
5046 0x80000040, 0x48033026, 0x04020002, 0x48033028,
5047 0x592c0000, 0x48033029, 0x492fc857, 0x492fb107,
5048 0x0400d7f4, 0x42000000, 0x0010b855, 0x0201f800,
5049 0x0010aa47, 0x0402e01d, 0x59da5908, 0x496a5800,
5050 0x412ed000, 0x815eb800, 0x0400e7fc, 0x59c80000,
5051 0x82000540, 0x00001200, 0x48039000, 0x04006018,
5052 0x59d8010a, 0x59d8090a, 0x80040d80, 0x040207fd,
5053 0x900001c0, 0x82000540, 0x00000013, 0x4803c011,
5054 0x5998002b, 0x84000500, 0x4803302b, 0x59e00017,
5055 0x8c000508, 0x04000003, 0x4a03c017, 0x00000003,
5056 0x4203e000, 0x30000001, 0x59d80105, 0x82000500,
5057 0x00018780, 0x0402007e, 0x1c01f000, 0x5998002b,
5058 0x84000540, 0x4803302b, 0x0401f7f8, 0x497a5801,
5059 0x40065800, 0x592c0001, 0x496a5800, 0x412ed000,
5060 0x815eb800, 0x80000d40, 0x040207f9, 0x59c80000,
5061 0x82000540, 0x00001200, 0x48039000, 0x0401f7bc,
5062 0x5c000000, 0x4c000000, 0x4803c857, 0x492fc857,
5063 0x4943c857, 0x4807c857, 0x4a025a04, 0x00000103,
5064 0x49425a06, 0x48065a08, 0x4a025c06, 0x0000ffff,
5065 0x813261c0, 0x04000003, 0x59300402, 0x48025c06,
5066 0x832c0400, 0x00000009, 0x04011000, 0x4803c840,
5067 0x4a03c842, 0x0000000b, 0x04011000, 0x1c01f000,
5068 0x4df00000, 0x4203e000, 0x50000000, 0x599cb817,
5069 0x59940019, 0x80000540, 0x04002023, 0x0400000e,
5070 0x59980022, 0x82000580, 0x00000005, 0x0400001e,
5071 0x59a80069, 0x81640580, 0x0402001b, 0x8c5cbd08,
5072 0x04000005, 0x59a8006a, 0x59a80866, 0x80040580,
5073 0x04020015, 0x8c5cbd08, 0x04020030, 0x59d8090b,
5074 0x59d8010a, 0x80040580, 0x0400000d, 0x0400600e,
5075 0x4a03c011, 0x80400012, 0x4a03c020, 0x00008040,
5076 0x59e00017, 0x8c000508, 0x04000003, 0x4a03c017,
5077 0x00000002, 0x4203e000, 0x30000001, 0x4a032819,
5078 0xffff0000, 0x04026835, 0x04006003, 0x8c5cbd08,
5079 0x04020860, 0x59980029, 0x80025d40, 0x04000010,
5080 0x59d80105, 0x82000500, 0x00018780, 0x04020020,
5081 0x0402d00d, 0x59980026, 0x492fc857, 0x80000040,
5082 0x48033026, 0x592c0000, 0x492fb107, 0x48033029,
5083 0x04020003, 0x4803c856, 0x48033028, 0x5c03e000,
5084 0x1c01f000, 0x42000000, 0x0010b855, 0x0201f800,
5085 0x0010aa47, 0x0401f7fa, 0x59e0000f, 0x59e0080f,
5086 0x80040580, 0x040207fd, 0x59e00010, 0x59e01010,
5087 0x80081580, 0x040207fd, 0x40065000, 0x80041580,
5088 0x040007c7, 0x040067dc, 0x0401f7ca, 0x4803c857,
5089 0x485fc857, 0x8c00050e, 0x02020800, 0x001005d0,
5090 0x4203e000, 0x50000000, 0x4200b800, 0x00008004,
5091 0x0201f000, 0x001005dd, 0x5998002b, 0x8c000500,
5092 0x04000013, 0x84000500, 0x4803302b, 0x59d8010a,
5093 0x59d8090a, 0x80040580, 0x040207fd, 0x800408e0,
5094 0x82040d40, 0x00000013, 0x4807c011, 0x59e00017,
5095 0x8c000508, 0x04000003, 0x4a03c017, 0x00000003,
5096 0x4203e000, 0x30000001, 0x1c01f000, 0x0402e014,
5097 0x59da5908, 0x496a5800, 0x412ed000, 0x815eb800,
5098 0x0400e7fc, 0x59c80000, 0x82000540, 0x00001200,
5099 0x48039000, 0x59d8090b, 0x59980024, 0x48073024,
5100 0x80040480, 0x04020004, 0x59940019, 0x80000540,
5101 0x04022003, 0x59980823, 0x48072819, 0x59d80105,
5102 0x82000500, 0x00018780, 0x040207c9, 0x1c01f000,
5103 0x59981025, 0x59e00010, 0x59e00810, 0x80041d80,
5104 0x040207fd, 0x80080580, 0x04000013, 0x48073025,
5105 0x59e0000f, 0x59e0100f, 0x80081d80, 0x040207fd,
5106 0x81280580, 0x04000008, 0x400a5000, 0x40080000,
5107 0x80040580, 0x04000003, 0x59980823, 0x48072819,
5108 0x1c01f000, 0x59940019, 0x80000540, 0x040227f8,
5109 0x0401f7fc, 0x59e0000f, 0x59e0100f, 0x80081d80,
5110 0x040207fd, 0x81280580, 0x040007f6, 0x400a5000,
5111 0x59940019, 0x80000540, 0x040027ed, 0x0401f7f1,
5112 0x59a80017, 0x82000c80, 0x0000000a, 0x02021800,
5113 0x001005d8, 0x0c01f809, 0x4a038805, 0x000000f0,
5114 0x59c400a3, 0x82000500, 0x02870000, 0x02020800,
5115 0x001005d8, 0x1c01f000, 0x00104fc5, 0x00104f51,
5116 0x00104f6c, 0x00104f95, 0x00104fb8, 0x00104ff2,
5117 0x00105004, 0x00104f6c, 0x00104fd6, 0x00104f50,
5118 0x1c01f000, 0x4a038808, 0x00000004, 0x0401f8f9,
5119 0x0201f800, 0x001053ab, 0x59c40805, 0x8c040d0e,
5120 0x04020013, 0x8c040d0a, 0x0402000b, 0x8c040d0c,
5121 0x04020006, 0x8c040d08, 0x0400000d, 0x4a035017,
5122 0x00000003, 0x0401f00a, 0x4a035017, 0x00000000,
5123 0x0401f007, 0x42000000, 0x0010b844, 0x0201f800,
5124 0x0010aa47, 0x4a035017, 0x00000002, 0x1c01f000,
5125 0x4a038808, 0x00000002, 0x0401f8de, 0x59c40805,
5126 0x8c040d08, 0x04020021, 0x8c040d0c, 0x0402001c,
5127 0x8c040d0e, 0x04020017, 0x82040500, 0x000000f0,
5128 0x0402001c, 0x0201f800, 0x001053ab, 0x4a038808,
5129 0x00000080, 0x59c40002, 0x8400050c, 0x48038802,
5130 0x0401f9d9, 0x4d3c0000, 0x42027800, 0x00000001,
5131 0x0201f800, 0x00109874, 0x5c027800, 0x4a038808,
5132 0x00000080, 0x4a035017, 0x00000009, 0x0401f009,
5133 0x4a035017, 0x00000001, 0x0401f006, 0x4a035017,
5134 0x00000000, 0x0401f003, 0x4a035017, 0x00000003,
5135 0x1c01f000, 0x0401f8b7, 0x4a038808, 0x00000080,
5136 0x59c40805, 0x8c040d0a, 0x0402001b, 0x8c040d0c,
5137 0x04020016, 0x8c040d0e, 0x04020011, 0x82040500,
5138 0x000000f0, 0x04020016, 0x59c40002, 0x8400050c,
5139 0x48038802, 0x0401f9b4, 0x4d3c0000, 0x42027800,
5140 0x00000001, 0x0201f800, 0x00109874, 0x5c027800,
5141 0x4a035017, 0x00000009, 0x0401f009, 0x4a035017,
5142 0x00000001, 0x0401f006, 0x4a035017, 0x00000000,
5143 0x0401f003, 0x4a035017, 0x00000002, 0x1c01f000,
5144 0x4a038808, 0x00000008, 0x59c40805, 0x8c040d0c,
5145 0x04020006, 0x8c040d0e, 0x04000006, 0x4a035017,
5146 0x00000001, 0x0401f003, 0x4a035017, 0x00000000,
5147 0x1c01f000, 0x0401f8d3, 0x59c40805, 0x8c040d0c,
5148 0x0402000d, 0x4c040000, 0x0401f882, 0x5c000800,
5149 0x8c040d0a, 0x04020006, 0x8c040d0e, 0x04000006,
5150 0x4a035017, 0x00000001, 0x0401f003, 0x4a035017,
5151 0x00000002, 0x1c01f000, 0x4a038808, 0x00000008,
5152 0x42001000, 0x00105058, 0x0201f800, 0x00106084,
5153 0x59c40805, 0x8c040d0a, 0x0402000d, 0x8c040d08,
5154 0x0402000b, 0x8c040d0c, 0x04020006, 0x8c040d0e,
5155 0x0400000d, 0x4a035017, 0x00000001, 0x0401f00a,
5156 0x4a035017, 0x00000000, 0x0401f007, 0x42000000,
5157 0x0010b844, 0x0201f800, 0x0010aa47, 0x4a035017,
5158 0x00000004, 0x1c01f000, 0x0401f8a6, 0x0401f859,
5159 0x59c40805, 0x8c040d0a, 0x0402000b, 0x8c040d0c,
5160 0x04020006, 0x8c040d0e, 0x04000009, 0x4a035017,
5161 0x00000001, 0x0401f006, 0x4a035017, 0x00000000,
5162 0x0401f003, 0x4a035017, 0x00000002, 0x1c01f000,
5163 0x4a038808, 0x00000004, 0x0401f846, 0x59c40805,
5164 0x8c040d0a, 0x04020010, 0x8c040d08, 0x0402000b,
5165 0x8c040d0c, 0x04020006, 0x8c040d0e, 0x0400000c,
5166 0x4a035017, 0x00000001, 0x0401f009, 0x4a035017,
5167 0x00000000, 0x0401f006, 0x4a035017, 0x00000003,
5168 0x0401f003, 0x4a035017, 0x00000002, 0x1c01f000,
5169 0x0401f91f, 0x02020800, 0x001005d8, 0x59a80805,
5170 0x8c040d0c, 0x04000015, 0x84040d0c, 0x48075005,
5171 0x4a038805, 0x00000010, 0x0201f800, 0x00101937,
5172 0x59c40005, 0x8c000508, 0x04000008, 0x4a038808,
5173 0x00000008, 0x4a035033, 0x00000001, 0x4202d800,
5174 0x00000001, 0x0401f01a, 0x59c40006, 0x84000548,
5175 0x48038806, 0x0401f016, 0x59a80017, 0x82000580,
5176 0x00000001, 0x0400000c, 0x59a80017, 0x82000580,
5177 0x00000005, 0x0402000c, 0x42000000, 0x0010b844,
5178 0x0201f800, 0x0010aa47, 0x4a035017, 0x00000008,
5179 0x0401f007, 0x42000000, 0x0010b844, 0x0201f800,
5180 0x0010aa47, 0x4a035017, 0x00000004, 0x1c01f000,
5181 0x4803c856, 0x4c040000, 0x4c080000, 0x42000800,
5182 0x00000064, 0x42001000, 0x00105058, 0x0201f800,
5183 0x00106079, 0x5c001000, 0x5c000800, 0x1c01f000,
5184 0x4803c856, 0x4c040000, 0x0201f800, 0x00106c55,
5185 0x4df00000, 0x0201f800, 0x00106e21, 0x5c03e000,
5186 0x02000800, 0x00106c4b, 0x0401ffba, 0x5c000800,
5187 0x1c01f000, 0x4803c856, 0x4c040000, 0x4c080000,
5188 0x0201f800, 0x00106c55, 0x4df00000, 0x0201f800,
5189 0x00106e21, 0x5c03e000, 0x02000800, 0x00106c4b,
5190 0x59c40006, 0x84000500, 0x48038806, 0x0201f800,
5191 0x00106ede, 0x497b8880, 0x0201f800, 0x0010a9c0,
5192 0x0201f800, 0x0010a9ce, 0x0201f800, 0x00101815,
5193 0x4a03504c, 0x00000004, 0x4202d800, 0x00000004,
5194 0x4a038805, 0x00000001, 0x42001000, 0x00105058,
5195 0x0201f800, 0x00106084, 0x0201f800, 0x001006d4,
5196 0x0401f8c1, 0x04000006, 0x42006000, 0xfeffffff,
5197 0x41786800, 0x0201f800, 0x0010427d, 0x0201f800,
5198 0x00100452, 0x42000000, 0x00000001, 0x0201f800,
5199 0x00101590, 0x5c001000, 0x5c000800, 0x1c01f000,
5200 0x59c40008, 0x8c000508, 0x04020007, 0x4a038808,
5201 0x00000010, 0x4201d000, 0x00001388, 0x0201f800,
5202 0x0010608e, 0x1c01f000, 0x4c040000, 0x59a80833,
5203 0x82040580, 0x00000000, 0x0400000b, 0x82040580,
5204 0x00000001, 0x0400000b, 0x82040580, 0x00000002,
5205 0x0400000b, 0x82040580, 0x00000003, 0x0400000b,
5206 0x0401f057, 0x4a035017, 0x00000000, 0x0401f009,
5207 0x4a035017, 0x00000004, 0x0401f006, 0x4a035017,
5208 0x00000001, 0x0401f003, 0x4a035017, 0x00000007,
5209 0x497b8880, 0x4a038893, 0x00000001, 0x41780000,
5210 0x0201f800, 0x00101606, 0x0201f800, 0x00106ede,
5211 0x836c0d80, 0x00000004, 0x04000008, 0x59c40006,
5212 0x82000500, 0xffffff0f, 0x82000540, 0x04000001,
5213 0x48038806, 0x0401f007, 0x59c40006, 0x82000500,
5214 0xffffff0f, 0x82000540, 0x04000000, 0x48038806,
5215 0x0401f875, 0x04020005, 0x59c40806, 0x82040d00,
5216 0xfbffff0f, 0x48078806, 0x4200b000, 0x00000005,
5217 0x59c40005, 0x8c000534, 0x04020033, 0x42006000,
5218 0xfc18ffff, 0x42006800, 0x01000000, 0x0201f800,
5219 0x0010427d, 0x0201f800, 0x00101937, 0x59c408a4,
5220 0x82040d00, 0x0000000f, 0x82040d80, 0x0000000c,
5221 0x0400000a, 0x42006000, 0xfeffffff, 0x42006800,
5222 0x02000000, 0x0201f800, 0x0010427d, 0x8058b040,
5223 0x040207e8, 0x0401f8a1, 0x0401f853, 0x04000006,
5224 0x42006000, 0xfeffffff, 0x41786800, 0x0201f800,
5225 0x0010427d, 0x836c0d80, 0x00000004, 0x04000006,
5226 0x59a8084d, 0x42001000, 0x00105065, 0x0201f800,
5227 0x0010606e, 0x4a035033, 0x00000004, 0x0401fe31,
5228 0x0401f841, 0x04020008, 0x59c408a4, 0x82040d00,
5229 0x0000000f, 0x82040580, 0x0000000c, 0x02020800,
5230 0x001005d8, 0x5c000800, 0x1c01f000, 0x4803c856,
5231 0x4c000000, 0x0201f800, 0x0010609e, 0x4a035010,
5232 0x00ffffff, 0x497b5032, 0x59a8002a, 0x82000500,
5233 0xffff0000, 0x4803502a, 0x497b8880, 0x497b8893,
5234 0x41780000, 0x0201f800, 0x00101606, 0x59c40001,
5235 0x82000500, 0xfffffcff, 0x48038801, 0x42006000,
5236 0xfc18ffff, 0x41786800, 0x0201f800, 0x0010427d,
5237 0x4a038808, 0x00000000, 0x5c000000, 0x800001c0,
5238 0x02020800, 0x0010411d, 0x4a038805, 0x040000f0,
5239 0x59c40006, 0x82000500, 0xffffffcf, 0x82000540,
5240 0x440000c1, 0x48038806, 0x1c01f000, 0x4c5c0000,
5241 0x59a8b832, 0x825cbd80, 0x0000aaaa, 0x5c00b800,
5242 0x1c01f000, 0x4c5c0000, 0x599cb818, 0x825cbd00,
5243 0x00000030, 0x825cbd80, 0x00000000, 0x5c00b800,
5244 0x1c01f000, 0x4c5c0000, 0x599cb818, 0x825cbd00,
5245 0x00000030, 0x825cbd80, 0x00000010, 0x5c00b800,
5246 0x1c01f000, 0x4c5c0000, 0x599cb818, 0x825cbd00,
5247 0x00000030, 0x825cbd80, 0x00000020, 0x5c00b800,
5248 0x1c01f000, 0x59a80005, 0x4803c857, 0x82000d00,
5249 0x00000013, 0x04000025, 0x599c1017, 0x4d3c0000,
5250 0x82000500, 0x00000011, 0x04000007, 0x42027800,
5251 0x00000400, 0x0201f800, 0x00103b25, 0x0402000a,
5252 0x0401f012, 0x42027800, 0x00000408, 0x0201f800,
5253 0x00103b25, 0x0400000d, 0x42003000, 0x00000003,
5254 0x0401f003, 0x42003000, 0x00000004, 0x42028000,
5255 0x0000000e, 0x0201f800, 0x0010a449, 0x599c1017,
5256 0x8c08150a, 0x04020007, 0x42028000, 0x00000004,
5257 0x0201f800, 0x00101fe5, 0x80000580, 0x0401f80d,
5258 0x5c027800, 0x0401f00a, 0x0201f800, 0x00103b25,
5259 0x04000007, 0x42028000, 0x0000000f, 0x42003000,
5260 0x00000001, 0x0201f800, 0x0010a449, 0x1c01f000,
5261 0x59a80005, 0x04000004, 0x82000540, 0x00000010,
5262 0x0401f003, 0x82000500, 0xffffffef, 0x48035005,
5263 0x4803c857, 0x1c01f000, 0x4803c856, 0x4c580000,
5264 0x42000000, 0x0010b8cb, 0x0201f800, 0x0010aa47,
5265 0x42000800, 0x0010c0f1, 0x59c40003, 0x44000800,
5266 0x59c40004, 0x48000801, 0x59c4000b, 0x48000802,
5267 0x59c4008e, 0x48000803, 0x59c4008f, 0x48000804,
5268 0x59c40090, 0x48000805, 0x59c40091, 0x48000806,
5269 0x59c40092, 0x48000807, 0x59c40093, 0x48000808,
5270 0x59c40099, 0x48000809, 0x59c4009e, 0x4800080a,
5271 0x59c400aa, 0x4800080b, 0x59c400af, 0x4800080c,
5272 0x59c400b2, 0x4800080d, 0x59c400b1, 0x4800080e,
5273 0x82040c00, 0x0000000f, 0x41c41800, 0x4200b000,
5274 0x00000030, 0x580c0050, 0x44000800, 0x80040800,
5275 0x800c1800, 0x8058b040, 0x040207fb, 0x41c41800,
5276 0x4200b000, 0x00000020, 0x580c0010, 0x44000800,
5277 0x80040800, 0x800c1800, 0x8058b040, 0x040207fb,
5278 0x497b8830, 0x4200b000, 0x00000040, 0x59c40031,
5279 0x44000800, 0x80040800, 0x8058b040, 0x040207fc,
5280 0x497b88ac, 0x4200b000, 0x00000010, 0x59c400ad,
5281 0x44000800, 0x80040800, 0x8058b040, 0x040207fc,
5282 0x59c41001, 0x4c080000, 0x8408150c, 0x480b8801,
5283 0x4a0370e4, 0x00000300, 0x4a0370e5, 0xb0000000,
5284 0x42000800, 0x00000800, 0x80040840, 0x02000800,
5285 0x001005d8, 0x59b800e5, 0x8c000538, 0x040207fb,
5286 0x4a0370e4, 0x00000200, 0x42006000, 0xffffffff,
5287 0x42006800, 0x80000000, 0x0201f800, 0x0010427d,
5288 0x4a038807, 0x00000001, 0x497b8807, 0x4a038808,
5289 0x00000010, 0x42006000, 0xfcf8ffff, 0x42006800,
5290 0x01000000, 0x0201f800, 0x0010427d, 0x5c001000,
5291 0x480b8801, 0x42000800, 0x0010c0f1, 0x50040000,
5292 0x48038803, 0x58040001, 0x48038804, 0x58040002,
5293 0x4803880b, 0x58040003, 0x4803888e, 0x58040004,
5294 0x4803888f, 0x58040005, 0x48038890, 0x58040006,
5295 0x48038891, 0x58040007, 0x48038892, 0x58040008,
5296 0x48038893, 0x58040009, 0x48038899, 0x5804000a,
5297 0x4803889e, 0x5804000b, 0x480388aa, 0x5804000c,
5298 0x480388af, 0x5804000d, 0x480388b2, 0x5804000e,
5299 0x480388b1, 0x82040c00, 0x0000000f, 0x41c41800,
5300 0x4200b000, 0x00000030, 0x50040000, 0x48001850,
5301 0x80040800, 0x800c1800, 0x8058b040, 0x040207fb,
5302 0x41c41800, 0x4200b000, 0x00000020, 0x50040000,
5303 0x48001810, 0x80040800, 0x800c1800, 0x8058b040,
5304 0x040207fb, 0x497b8830, 0x4200b000, 0x00000040,
5305 0x50040000, 0x48038831, 0x80040800, 0x8058b040,
5306 0x040207fc, 0x497b88ac, 0x4200b000, 0x00000010,
5307 0x50040000, 0x480388ad, 0x80040800, 0x8058b040,
5308 0x040207fc, 0x497b8880, 0x41780000, 0x0201f800,
5309 0x00101606, 0x59c408a4, 0x82040d00, 0x0000000f,
5310 0x82040580, 0x0000000c, 0x02020800, 0x001005d8,
5311 0x4a038805, 0x04000000, 0x5c00b000, 0x1c01f000,
5312 0x4803c856, 0x4c580000, 0x4ce80000, 0x42000000,
5313 0x0010b845, 0x0201f800, 0x0010aa47, 0x59c41008,
5314 0x4c080000, 0x82080500, 0xffffff7f, 0x48038808,
5315 0x59c40004, 0x82000500, 0x00003e02, 0x04000005,
5316 0x4201d000, 0x00000014, 0x0201f800, 0x0010608e,
5317 0x59c40006, 0x82000500, 0xffffff0f, 0x48038806,
5318 0x4a038805, 0x00000010, 0x4a038808, 0x00000004,
5319 0x4200b000, 0x00000065, 0x59c40005, 0x8c000508,
5320 0x04020012, 0x4201d000, 0x000003e8, 0x0201f800,
5321 0x0010608e, 0x8058b040, 0x040207f8, 0x0201f800,
5322 0x00106ede, 0x4a038808, 0x00000008, 0x4a035033,
5323 0x00000001, 0x4202d800, 0x00000001, 0x82000540,
5324 0x00000001, 0x0401f030, 0x0201f800, 0x00100ae0,
5325 0x42000000, 0x0010b8a8, 0x0201f800, 0x0010aa47,
5326 0x0201f800, 0x00100ef4, 0x497b8880, 0x59a8002a,
5327 0x82000500, 0x0000ffff, 0x4c000000, 0x0201f800,
5328 0x00101606, 0x5c000000, 0x48038880, 0x4a038808,
5329 0x00000000, 0x4200b000, 0x00000065, 0x4a038805,
5330 0x000000f0, 0x0201f800, 0x00101937, 0x42000800,
5331 0x000000f0, 0x59c40005, 0x80040d00, 0x04000008,
5332 0x4201d000, 0x000003e8, 0x0201f800, 0x0010608e,
5333 0x8058b040, 0x040207f2, 0x0401f7d1, 0x59c40006,
5334 0x82000540, 0x000000f0, 0x48038806, 0x59a8001e,
5335 0x80000540, 0x04020002, 0x80000000, 0x48038893,
5336 0x80000580, 0x5c001000, 0x4df00000, 0x0201f800,
5337 0x0010195d, 0x5c03e000, 0x480b8808, 0x5c01d000,
5338 0x5c00b000, 0x1c01f000, 0x4803c856, 0x4c580000,
5339 0x4ce80000, 0x59c41008, 0x82080500, 0xffffff7f,
5340 0x48038808, 0x4c080000, 0x59c40004, 0x82000500,
5341 0x00003e02, 0x04000005, 0x4201d000, 0x00000014,
5342 0x0201f800, 0x0010608e, 0x0201f800, 0x00100ae0,
5343 0x42000000, 0x0010b8a9, 0x0201f800, 0x0010aa47,
5344 0x0201f800, 0x00100ef4, 0x4a038808, 0x00000002,
5345 0x80000580, 0x48038880, 0x48038893, 0x0201f800,
5346 0x00101606, 0x4200b000, 0x00000384, 0x4a038805,
5347 0x000000f0, 0x0201f800, 0x00101937, 0x42000800,
5348 0x000000f0, 0x59c40005, 0x80040d00, 0x04000015,
5349 0x82000500, 0x000000d0, 0x04020012, 0x4201d000,
5350 0x00000067, 0x0201f800, 0x0010608e, 0x8058b040,
5351 0x040207ef, 0x0201f800, 0x00106ede, 0x4a038808,
5352 0x00000008, 0x4a035033, 0x00000001, 0x4202d800,
5353 0x00000001, 0x82000540, 0x00000001, 0x0401f010,
5354 0x497b8880, 0x59a8001e, 0x80000540, 0x04020002,
5355 0x80000000, 0x48038893, 0x59a8002a, 0x82000500,
5356 0x0000ffff, 0x4c000000, 0x0201f800, 0x00101606,
5357 0x5c000000, 0x48038880, 0x80000580, 0x5c001000,
5358 0x4df00000, 0x0201f800, 0x0010195d, 0x5c03e000,
5359 0x480b8808, 0x5c01d000, 0x5c00b000, 0x1c01f000,
5360 0x4803c856, 0x59c40004, 0x82000500, 0x00003e02,
5361 0x0400000a, 0x0201f800, 0x00106ede, 0x4a038808,
5362 0x00000008, 0x4a035033, 0x00000001, 0x4202d800,
5363 0x00000001, 0x0401f052, 0x0201f800, 0x00100ae0,
5364 0x42000000, 0x0010b8aa, 0x0201f800, 0x0010aa47,
5365 0x0201f800, 0x00100ef4, 0x59c40006, 0x84000508,
5366 0x48038806, 0x4a038805, 0x00000010, 0x59a80805,
5367 0x84040d4c, 0x48075005, 0x42000800, 0x00000064,
5368 0x42001000, 0x00105058, 0x0201f800, 0x0010606e,
5369 0x4a038808, 0x00000000, 0x497b8880, 0x4a038805,
5370 0x000000f0, 0x0201f800, 0x00101937, 0x42000800,
5371 0x000000f0, 0x59c40005, 0x80040d00, 0x0400000e,
5372 0x82000500, 0x000000e0, 0x0402000b, 0x4201d000,
5373 0x000003e8, 0x0201f800, 0x0010608e, 0x0201f800,
5374 0x00105f48, 0x59940004, 0x80000540, 0x040207ec,
5375 0x0401f023, 0x4c080000, 0x42001000, 0x00105065,
5376 0x0201f800, 0x00105f90, 0x42001000, 0x00105058,
5377 0x0201f800, 0x00106084, 0x5c001000, 0x497b8880,
5378 0x59a8001e, 0x80000540, 0x04020002, 0x80000000,
5379 0x48038893, 0x59a8002a, 0x82000500, 0x0000ffff,
5380 0x4c000000, 0x0201f800, 0x00101606, 0x5c000000,
5381 0x48038880, 0x59a80805, 0x84040d0c, 0x48075005,
5382 0x59c40006, 0x84000548, 0x48038806, 0x0201f800,
5383 0x0010195d, 0x4a038808, 0x00000080, 0x1c01f000,
5384 0x4803c856, 0x4d400000, 0x4d3c0000, 0x0201f800,
5385 0x00106ede, 0x0201f800, 0x0010ab33, 0x04020025,
5386 0x599c1017, 0x59a80805, 0x8c040d00, 0x0402000c,
5387 0x8c08151a, 0x0400001f, 0x84040d42, 0x48075005,
5388 0x42028000, 0x00000004, 0x42027800, 0x0000000c,
5389 0x8c081508, 0x04020008, 0x0401f012, 0x42028000,
5390 0x00000004, 0x42027800, 0x00000004, 0x8c081508,
5391 0x0400000c, 0x4d400000, 0x42028000, 0x0000000e,
5392 0x42028800, 0x0000ffff, 0x0201f800, 0x0010a446,
5393 0x5c028000, 0x599c0817, 0x8c040d0a, 0x04020005,
5394 0x4943c857, 0x493fc857, 0x0201f800, 0x00101fe5,
5395 0x497b8880, 0x4202d800, 0x00000001, 0x0401fcfb,
5396 0x5c027800, 0x5c028000, 0x1c01f000, 0x0201f800,
5397 0x00100ae0, 0x42000000, 0x0010b8ab, 0x0201f800,
5398 0x0010aa47, 0x0201f800, 0x00100ef4, 0x42000000,
5399 0x00000001, 0x0201f800, 0x00101606, 0x4a038880,
5400 0x00000001, 0x0201f000, 0x0010195d, 0x4202e000,
5401 0x00000000, 0x4a033015, 0x00000001, 0x497b301d,
5402 0x497b3006, 0x4a03b004, 0x60000001, 0x59d80005,
5403 0x4a03b004, 0x90000001, 0x4a03a804, 0x60000001,
5404 0x59d40005, 0x4a03a804, 0x90000001, 0x0201f000,
5405 0x00105983, 0x4a03c825, 0x00000004, 0x4a03c827,
5406 0x00000004, 0x599c0409, 0x80000d40, 0x04000020,
5407 0x599c0407, 0x80000540, 0x04000007, 0x800000cc,
5408 0x599c100b, 0x80080400, 0x4803b000, 0x497bb002,
5409 0x59d80001, 0x599c000b, 0x4803b000, 0x599c000c,
5410 0x4803b001, 0x599c0407, 0x80000540, 0x04020002,
5411 0x497bb002, 0x599c0c09, 0x82040540, 0x00400000,
5412 0x4803b003, 0x4a03b009, 0x00000004, 0x4a03b004,
5413 0x10000001, 0x59e00803, 0x82040d00, 0xfffffeff,
5414 0x82040d40, 0x00008000, 0x4807c003, 0x599c040a,
5415 0x80000540, 0x04000020, 0x599c0408, 0x80000540,
5416 0x04000007, 0x800000cc, 0x599c100f, 0x80080400,
5417 0x4803a800, 0x497ba802, 0x59d40001, 0x599c000f,
5418 0x4803a800, 0x599c0010, 0x4803a801, 0x599c0408,
5419 0x80000540, 0x04020002, 0x497ba802, 0x599c0c0a,
5420 0x82040540, 0x00400000, 0x4803a803, 0x4a03a809,
5421 0x00000004, 0x4a03a804, 0x10000001, 0x59e00803,
5422 0x82040d00, 0xfffffbff, 0x82040d40, 0x00008000,
5423 0x4807c003, 0x800409c0, 0x04000007, 0x4202e000,
5424 0x00000001, 0x0200b800, 0x00020551, 0x0200f000,
5425 0x00020566, 0x1c01f000, 0x0201f800, 0x001005d8,
5426 0x1c01f000, 0x4df00000, 0x4203e000, 0x50000000,
5427 0x59981005, 0x800811c0, 0x0400001e, 0x58080005,
5428 0x82000d00, 0x43018780, 0x02020000, 0x00105846,
5429 0x8c000508, 0x04000015, 0x580a5808, 0x592c0204,
5430 0x497a5800, 0x497a5801, 0x82000500, 0x000000ff,
5431 0x82000c80, 0x0000004b, 0x0402100b, 0x0c01f80f,
5432 0x5c03e000, 0x83700580, 0x00000003, 0x040007e6,
5433 0x0200f800, 0x00020566, 0x0200b000, 0x00020551,
5434 0x1c01f000, 0x0401f850, 0x5c03e000, 0x0401f7f9,
5435 0x0401f8de, 0x0401f7fd, 0x00105491, 0x00105491,
5436 0x00105491, 0x00105491, 0x001054a1, 0x00105491,
5437 0x00105491, 0x00105491, 0x00105491, 0x00105491,
5438 0x00105519, 0x00105491, 0x00105491, 0x001054a1,
5439 0x001054a1, 0x00105491, 0x00105491, 0x00105491,
5440 0x00105491, 0x00105491, 0x00105491, 0x00105491,
5441 0x00105491, 0x00105491, 0x00105491, 0x00105491,
5442 0x00105491, 0x00105491, 0x00105491, 0x00105491,
5443 0x00105491, 0x00105491, 0x00105491, 0x00105491,
5444 0x00105491, 0x00105491, 0x00105491, 0x00105491,
5445 0x00105491, 0x00105491, 0x00105491, 0x00105491,
5446 0x00105491, 0x00105491, 0x00105491, 0x00105491,
5447 0x00105491, 0x00105491, 0x00105491, 0x00105491,
5448 0x00105491, 0x00105491, 0x00105491, 0x00105491,
5449 0x00105491, 0x00105491, 0x00105491, 0x00105491,
5450 0x00105491, 0x00105491, 0x00105491, 0x00105491,
5451 0x00105491, 0x00105491, 0x00105491, 0x00105491,
5452 0x00105491, 0x00105491, 0x00105491, 0x00105491,
5453 0x00105491, 0x00105491, 0x00105491, 0x00105491,
5454 0x00105491, 0x492fc857, 0x42000000, 0x0010b85e,
5455 0x0201f800, 0x0010aa47, 0x42000000, 0x00000400,
5456 0x0401f019, 0x492fc857, 0x42000000, 0x0010b85d,
5457 0x0201f800, 0x0010aa47, 0x42000000, 0x00001000,
5458 0x0401f011, 0x492fc857, 0x42000000, 0x0010b85c,
5459 0x0201f800, 0x0010aa47, 0x42000000, 0x00002000,
5460 0x0401f009, 0x492fc857, 0x42000000, 0x0010b85f,
5461 0x0201f800, 0x0010aa47, 0x42000000, 0x00000800,
5462 0x0401f001, 0x4803c857, 0x4202e000, 0x00000001,
5463 0x592c0c04, 0x82040d00, 0xffff80ff, 0x80040540,
5464 0x48025c04, 0x0201f000, 0x000202da, 0x592c0204,
5465 0x492fc857, 0x80000110, 0x040007db, 0x80000040,
5466 0x04000025, 0x48033002, 0x492f3003, 0x492f3004,
5467 0x4a033008, 0x001054e5, 0x4202e000, 0x00000003,
5468 0x1c01f000, 0x592c0204, 0x492fc857, 0x80000110,
5469 0x040007cd, 0x80000040, 0x04000033, 0x48033002,
5470 0x492f3003, 0x492f3004, 0x4a033008, 0x00105501,
5471 0x4202e000, 0x00000003, 0x1c01f000, 0x0201f800,
5472 0x0010ab33, 0x02020000, 0x000204d9, 0x42028000,
5473 0x00000028, 0x41780800, 0x417a6000, 0x0201f800,
5474 0x00104e70, 0x0201f800, 0x001091c6, 0x0201f000,
5475 0x000202da, 0x592c0a0a, 0x8c040d02, 0x04020016,
5476 0x59a80021, 0x492fc857, 0x80000540, 0x0402000f,
5477 0x592c0207, 0x80000540, 0x04000005, 0x0201f800,
5478 0x00104326, 0x04020004, 0x1c01f000, 0x42000000,
5479 0x00000000, 0x592c0a06, 0x48065c06, 0x48025a06,
5480 0x0201f000, 0x000202da, 0x42000000, 0x00000028,
5481 0x0401f7f9, 0x42000800, 0x00000009, 0x0201f000,
5482 0x0010665b, 0x592c0208, 0x492fc857, 0x82000c80,
5483 0x0000199a, 0x040217a4, 0x592c0408, 0x80000540,
5484 0x040207a1, 0x59a80821, 0x800409c0, 0x04020009,
5485 0x592c0207, 0x80000540, 0x0400079b, 0x497a5a06,
5486 0x0201f800, 0x00104385, 0x04020004, 0x1c01f000,
5487 0x42000000, 0x00000028, 0x48025a06, 0x0201f000,
5488 0x000202da, 0x59980804, 0x59980002, 0x48065800,
5489 0x492c0801, 0x492f3004, 0x80000040, 0x48033002,
5490 0x04000002, 0x1c01f000, 0x599a5803, 0x59980008,
5491 0x4202e000, 0x00000001, 0x0801f000, 0x592e8a06,
5492 0x592c0406, 0x4803c856, 0x82000500, 0x000000ff,
5493 0x4200b800, 0x00000001, 0x82000d80, 0x00000001,
5494 0x04000015, 0x417a8800, 0x4200b800, 0x000007f0,
5495 0x82000d80, 0x00000002, 0x0400000f, 0x80000540,
5496 0x02020000, 0x000202da, 0x592e8a06, 0x0201f800,
5497 0x00020245, 0x02020000, 0x000202da, 0x592e9008,
5498 0x592e9809, 0x0201f800, 0x00104713, 0x0201f000,
5499 0x000202da, 0x59a80805, 0x84040d00, 0x48075005,
5500 0x0201f800, 0x00020245, 0x02000800, 0x0010482c,
5501 0x81468800, 0x805cb840, 0x040207fa, 0x0201f000,
5502 0x000202da, 0x592c0a08, 0x4807c857, 0x82040580,
5503 0x0000000e, 0x04000045, 0x82040580, 0x00000046,
5504 0x04000046, 0x82040580, 0x00000045, 0x04000020,
5505 0x82040580, 0x00000029, 0x04000010, 0x82040580,
5506 0x0000002a, 0x04000009, 0x82040580, 0x0000000f,
5507 0x040001fc, 0x82040580, 0x0000002e, 0x040001f9,
5508 0x4807c856, 0x0401f1f2, 0x59a80805, 0x84040d04,
5509 0x48075005, 0x0401f1f3, 0x592e8a06, 0x0201f800,
5510 0x00020245, 0x040201ef, 0x59340200, 0x84000518,
5511 0x48026a00, 0x592e6009, 0x4933c857, 0x83300580,
5512 0xffffffff, 0x0402002a, 0x0401f1e6, 0x592c1407,
5513 0x480bc857, 0x0201f800, 0x00109410, 0x411e6000,
5514 0x04020003, 0x4803c856, 0x0401f1d9, 0x592e3809,
5515 0x591c1414, 0x84081516, 0x84081554, 0x480a3c14,
5516 0x4a026403, 0x0000003a, 0x592c040b, 0x80000540,
5517 0x04000007, 0x4a026403, 0x0000003b, 0x592c020c,
5518 0x4802641a, 0x592c040c, 0x4802621a, 0x4a026203,
5519 0x00000001, 0x42000800, 0x80000040, 0x0201f800,
5520 0x00020721, 0x0401f1c7, 0x59a80068, 0x84000510,
5521 0x48035068, 0x0401f1c3, 0x592c1207, 0x8c081500,
5522 0x040201c0, 0x592e8a06, 0x592e6009, 0x0201f800,
5523 0x0010941a, 0x04020003, 0x4803c856, 0x0401f1b4,
5524 0x59300c06, 0x82040580, 0x00000004, 0x04000003,
5525 0x4803c856, 0x0401f1ae, 0x59300a03, 0x82040580,
5526 0x00000007, 0x04000003, 0x4803c856, 0x0401f1a8,
5527 0x59300c03, 0x82040580, 0x00000001, 0x04000021,
5528 0x82040580, 0x00000003, 0x04000016, 0x82040580,
5529 0x00000006, 0x04000020, 0x82040580, 0x00000008,
5530 0x04000015, 0x82040580, 0x0000000a, 0x0400000a,
5531 0x82040580, 0x0000000c, 0x04000004, 0x82040580,
5532 0x0000002e, 0x04020018, 0x42000800, 0x00000009,
5533 0x0401f013, 0x42000800, 0x00000005, 0x0401f010,
5534 0x417a7800, 0x0201f800, 0x0010203c, 0x4a026406,
5535 0x00000001, 0x42000800, 0x00000003, 0x0401f008,
5536 0x417a7800, 0x0201f800, 0x0010203c, 0x4a026406,
5537 0x00000001, 0x42000800, 0x0000000b, 0x0201f800,
5538 0x00104571, 0x4a026203, 0x00000001, 0x0201f800,
5539 0x0010672b, 0x0401f17b, 0x40000800, 0x58040000,
5540 0x80000540, 0x040207fd, 0x492c0800, 0x1c01f000,
5541 0x492fc857, 0x59300c06, 0x82040580, 0x00000006,
5542 0x04020094, 0x0201f800, 0x001049e7, 0x04020005,
5543 0x59340200, 0x8c00051a, 0x02000000, 0x00020533,
5544 0x59340200, 0x8c00050e, 0x0400008a, 0x59300203,
5545 0x42027800, 0x00000001, 0x82000580, 0x00000007,
5546 0x02020000, 0x00020533, 0x4a026203, 0x00000002,
5547 0x0201f000, 0x00020533, 0x42028000, 0x00000002,
5548 0x4a026206, 0x00000014, 0x4d2c0000, 0x0201f800,
5549 0x0010a1d1, 0x5c025800, 0x59300c06, 0x4807c857,
5550 0x82040580, 0x00000007, 0x04020063, 0x492fc857,
5551 0x4a025a06, 0x00000001, 0x0201f000, 0x000202da,
5552 0x592c240a, 0x492fc857, 0x4813c857, 0x8c10251c,
5553 0x04020016, 0x8c10251a, 0x04000003, 0x8c10250a,
5554 0x04000069, 0x59340a00, 0x8c040d0e, 0x04000003,
5555 0x8c10251e, 0x04000064, 0x0201f800, 0x0002075a,
5556 0x0400006b, 0x592c240a, 0x49366009, 0x49325809,
5557 0x4a026406, 0x00000006, 0x4a026203, 0x00000007,
5558 0x0201f000, 0x0002052f, 0x592c0a0c, 0x5934000f,
5559 0x41784000, 0x80001540, 0x0400006d, 0x58080204,
5560 0x82000500, 0x000000ff, 0x82000580, 0x00000012,
5561 0x04020004, 0x5808020c, 0x80040580, 0x04000004,
5562 0x58080000, 0x40084000, 0x0401f7f3, 0x58080000,
5563 0x49781000, 0x802041c0, 0x04000006, 0x48004000,
5564 0x80000540, 0x04020007, 0x48226810, 0x0401f005,
5565 0x4802680f, 0x80000540, 0x04020002, 0x497a6810,
5566 0x4d2c0000, 0x400a5800, 0x4a025a06, 0x00000002,
5567 0x0201f800, 0x000202da, 0x5c025800, 0x0401f7bc,
5568 0x592c040a, 0x8c00051c, 0x04000016, 0x592c0206,
5569 0x82000580, 0x0000ffff, 0x04020012, 0x592e6009,
5570 0x83300580, 0xffffffff, 0x040007b1, 0x83300480,
5571 0x0010d1c0, 0x04001010, 0x59a8000b, 0x81300480,
5572 0x0402100d, 0x59300008, 0x800001c0, 0x04020005,
5573 0x59300203, 0x82000580, 0x00000007, 0x04000797,
5574 0x492fc857, 0x4a025a06, 0x00000029, 0x0201f000,
5575 0x000202da, 0x492fc857, 0x4a025a06, 0x00000008,
5576 0x0201f000, 0x000202da, 0x492fc857, 0x4a025a06,
5577 0x00000045, 0x0201f000, 0x000202da, 0x492fc857,
5578 0x4a025a06, 0x0000002a, 0x0201f000, 0x000202da,
5579 0x492fc857, 0x4a025a06, 0x00000028, 0x0201f000,
5580 0x000202da, 0x492fc857, 0x4a025a06, 0x00000006,
5581 0x0201f000, 0x000202da, 0x492fc857, 0x4a025a06,
5582 0x0000000e, 0x0201f000, 0x000202da, 0x59340010,
5583 0x492e6810, 0x492fc857, 0x80000d40, 0x04000003,
5584 0x492c0800, 0x1c01f000, 0x5934040b, 0x492e680f,
5585 0x492fc857, 0x4803c857, 0x80000540, 0x04020003,
5586 0x4a026a03, 0x00000001, 0x1c01f000, 0x59a8000e,
5587 0x81640480, 0x0402176e, 0x42026000, 0x0010d1c0,
5588 0x59300009, 0x81340580, 0x04020004, 0x59300202,
5589 0x80040580, 0x04000759, 0x83326400, 0x00000024,
5590 0x41580000, 0x81300480, 0x040017f6, 0x0401f760,
5591 0x492fc857, 0x592c0407, 0x82000c80, 0x0000199a,
5592 0x040215f1, 0x592c0204, 0x80000112, 0x040205de,
5593 0x592e8a06, 0x0201f800, 0x00020245, 0x04020059,
5594 0x0201f800, 0x001049e7, 0x04020059, 0x592e780a,
5595 0x493fc857, 0x8d3e7d3e, 0x04020007, 0x59a80021,
5596 0x80000540, 0x0402004f, 0x0201f800, 0x00104838,
5597 0x040005dd, 0x833c1d00, 0x0000001f, 0x040005da,
5598 0x592c0207, 0x82000c80, 0x00001000, 0x040215d6,
5599 0x800000c2, 0x800008c4, 0x8005d400, 0x592e9008,
5600 0x592e9809, 0x5934080d, 0x800409c0, 0x0402002e,
5601 0x833c1d00, 0x0000001f, 0x81780040, 0x80000000,
5602 0x800c1902, 0x040217fe, 0x040205c7, 0x0c01f001,
5603 0x001056e9, 0x001056ec, 0x001056f9, 0x001056fc,
5604 0x001056ff, 0x0201f800, 0x0010903e, 0x0401f01a,
5605 0x0201f800, 0x0010480b, 0x04000027, 0x80e9d1c0,
5606 0x02020800, 0x00105fae, 0x42028000, 0x00000005,
5607 0x417a9000, 0x417a9800, 0x0201f800, 0x0010904e,
5608 0x0401f00d, 0x42027000, 0x0000004d, 0x0401f006,
5609 0x42027000, 0x0000004e, 0x0401f003, 0x42027000,
5610 0x00000052, 0x0201f800, 0x001046c9, 0x02020800,
5611 0x0010907e, 0x04000010, 0x8d3e7d3e, 0x04020017,
5612 0x1c01f000, 0x58040002, 0x80000540, 0x04020007,
5613 0x4d3c0000, 0x40067800, 0x0201f800, 0x001047eb,
5614 0x5c027800, 0x040207cb, 0x4a025a06, 0x00000030,
5615 0x0401f00d, 0x4a025a06, 0x0000002c, 0x0401f00a,
5616 0x4a025a06, 0x00000028, 0x0401f007, 0x4a025a06,
5617 0x00000029, 0x0401f004, 0x497a5c09, 0x4a025a06,
5618 0x00000000, 0x4a025a04, 0x00000103, 0x0201f000,
5619 0x000202da, 0x492fc857, 0x592c0204, 0x80000110,
5620 0x80000040, 0x04000002, 0x0401f56f, 0x592c0207,
5621 0x82000500, 0x000003ff, 0x48025a07, 0x8c000506,
5622 0x04000004, 0x82000500, 0x00000070, 0x04020004,
5623 0x59a80821, 0x800409c0, 0x04020018, 0x4a025a06,
5624 0x0000dead, 0x592c0408, 0x82000500, 0x0000f0ff,
5625 0x48025c08, 0x0201f800, 0x001043b4, 0x04020002,
5626 0x1c01f000, 0x49425a06, 0x8058b1c0, 0x04000009,
5627 0x0201f800, 0x0010955f, 0x0401f80f, 0x44042800,
5628 0x82580580, 0x00000002, 0x04020002, 0x48082801,
5629 0x0201f000, 0x000202da, 0x42028000, 0x00000031,
5630 0x42000800, 0x00000001, 0x4200b000, 0x00000001,
5631 0x0401f7ed, 0x592c0408, 0x80000118, 0x832c2c00,
5632 0x00000009, 0x80142c00, 0x1c01f000, 0x492fc857,
5633 0x4a025a08, 0x00000006, 0x0201f000, 0x000202da,
5634 0x492fc857, 0x4a025a08, 0x00000001, 0x0201f000,
5635 0x000202da, 0x492fc857, 0x592c040a, 0x82000500,
5636 0x00000003, 0x04000020, 0x0201f800, 0x0002075a,
5637 0x04000021, 0x592c0204, 0x492e6008, 0x82000500,
5638 0x000000ff, 0x82000580, 0x00000045, 0x0400000e,
5639 0x592c000b, 0x0201f800, 0x00105c9a, 0x02000800,
5640 0x00020245, 0x04020018, 0x42027000, 0x00000041,
5641 0x49366009, 0x4a026406, 0x00000001, 0x0201f000,
5642 0x000207a1, 0x59300015, 0x8400055e, 0x48026015,
5643 0x42026800, 0x0010b524, 0x42027000, 0x00000040,
5644 0x0401f7f4, 0x4a025a06, 0x00000101, 0x0201f000,
5645 0x000202da, 0x4a025a06, 0x0000002c, 0x0201f000,
5646 0x000202da, 0x4a025a06, 0x00000028, 0x0201f800,
5647 0x000202da, 0x0201f000, 0x0002077d, 0x492fc857,
5648 0x0201f800, 0x001062e1, 0x0400000b, 0x592c0204,
5649 0x80000110, 0x80000040, 0x040204fb, 0x592c0c06,
5650 0x800409c0, 0x04000009, 0x42000000, 0x00000102,
5651 0x0401f003, 0x42000000, 0x00000104, 0x48025a06,
5652 0x0201f000, 0x000202da, 0x592c0c07, 0x800409c0,
5653 0x04000024, 0x82040480, 0x00000005, 0x04021021,
5654 0x4c040000, 0x80040800, 0x0201f800, 0x00106306,
5655 0x5c001000, 0x04020018, 0x832c0400, 0x00000008,
5656 0x4000a000, 0x0201f800, 0x0010632f, 0x04020012,
5657 0x592c1207, 0x82cc0580, 0x0010b50e, 0x04020009,
5658 0x58c80c0b, 0x84040d00, 0x84040d02, 0x8c081500,
5659 0x04000002, 0x84040d5e, 0x4805940b, 0x0401f001,
5660 0x42000000, 0x00000000, 0x48025a06, 0x0201f000,
5661 0x000202da, 0x42000000, 0x00000103, 0x0401f7fb,
5662 0x42000000, 0x00000102, 0x0401f7f8, 0x492fc857,
5663 0x592e7c06, 0x833c0500, 0xfffffffe, 0x04020043,
5664 0x592c4007, 0x42026000, 0x0010d1c0, 0x41581800,
5665 0x400c0000, 0x81300480, 0x04021023, 0x59300203,
5666 0x82000580, 0x00000000, 0x04000007, 0x59300008,
5667 0x80000d40, 0x04000004, 0x58040005, 0x80200580,
5668 0x04000004, 0x83326400, 0x00000024, 0x0401f7f1,
5669 0x58040204, 0x82000500, 0x000000ff, 0x82000d80,
5670 0x00000053, 0x04000007, 0x82000d80, 0x00000048,
5671 0x04000004, 0x82000580, 0x00000018, 0x04020023,
5672 0x4d2c0000, 0x0201f800, 0x00108be3, 0x5c025800,
5673 0x0400001e, 0x4a025a06, 0x00000000, 0x0201f000,
5674 0x000202da, 0x592e8a06, 0x83440480, 0x000007f0,
5675 0x04021016, 0x83440400, 0x0010ac00, 0x50000000,
5676 0x80026d40, 0x04000011, 0x4d2c0000, 0x0201f800,
5677 0x001047cb, 0x0400000c, 0x42028000, 0x00000005,
5678 0x592c0a08, 0x0201f800, 0x00104e70, 0x0201f800,
5679 0x001091cc, 0x0201f800, 0x000202da, 0x5c025800,
5680 0x0401f7e5, 0x5c025800, 0x4a025a06, 0x00000031,
5681 0x0201f000, 0x000202da, 0x492fc857, 0x4d2c0000,
5682 0x0201f800, 0x001007e4, 0x04000016, 0x492fc857,
5683 0x412f4000, 0x0201f800, 0x001007e4, 0x0400000e,
5684 0x492fc857, 0x412dd800, 0x0201f800, 0x00103b28,
5685 0x0201f800, 0x00103b32, 0x49a1d80b, 0x5c025800,
5686 0x492dd80a, 0x0201f800, 0x00102214, 0x0201f000,
5687 0x00102233, 0x41a25800, 0x0201f800, 0x001007f4,
5688 0x5c025800, 0x4a025a06, 0x00004005, 0x4a025c06,
5689 0x00000002, 0x0201f000, 0x000202da, 0x4807c857,
5690 0x485fc857, 0x4200b800, 0x00000001, 0x5c000800,
5691 0x4c5c0000, 0x0401f005, 0x4807c857, 0x485fc857,
5692 0x5c000800, 0x4d780000, 0x4803c857, 0x492fc857,
5693 0x8c00050e, 0x02020800, 0x001005d0, 0x4203e000,
5694 0x50000000, 0x4200b800, 0x00008003, 0x0201f000,
5695 0x001005dd, 0x592c0204, 0x80000110, 0x80000040,
5696 0x04020441, 0x0201f800, 0x00104a34, 0x04020002,
5697 0x1c01f000, 0x49425a06, 0x4806580d, 0x480a580e,
5698 0x4943c857, 0x4807c857, 0x480bc857, 0x0201f000,
5699 0x000202da, 0x592c0204, 0x80000110, 0x80000040,
5700 0x04020431, 0x0201f800, 0x00104b8b, 0x04020002,
5701 0x1c01f000, 0x49425a06, 0x48065811, 0x480a5812,
5702 0x0201f000, 0x000202da, 0x592c0204, 0x80000110,
5703 0x04000425, 0x80000040, 0x0402000c, 0x4202e000,
5704 0x00000001, 0x592c020a, 0x8c000504, 0x02000000,
5705 0x000204d0, 0x592c0207, 0x82000c80, 0x00001001,
5706 0x04021429, 0x0401f009, 0x4202e000, 0x00000003,
5707 0x48033002, 0x492f3003, 0x492f3004, 0x4a033008,
5708 0x000204d0, 0x1c01f000, 0x4202e000, 0x00000002,
5709 0x42000000, 0x0010beda, 0x50007000, 0x492c700b,
5710 0x4978700e, 0x4978700c, 0x592c0011, 0x592c0812,
5711 0x48007007, 0x48047008, 0x592c1013, 0x82080500,
5712 0xffff0000, 0x04000003, 0x0201f800, 0x001005d8,
5713 0x4978700d, 0x82080480, 0x00000180, 0x4803c857,
5714 0x04001007, 0x4800700f, 0x4a007005, 0x00000180,
5715 0x4a007004, 0x00000060, 0x0401f005, 0x4978700f,
5716 0x48087005, 0x80081104, 0x48087004, 0x5838000a,
5717 0x48007003, 0x40381000, 0x0201f000, 0x00100858,
5718 0x0201f800, 0x001007d3, 0x04000003, 0x59980007,
5719 0x0801f000, 0x1c01f000, 0x40307000, 0x5838000b,
5720 0x80025d40, 0x0400001b, 0x58380002, 0x82000580,
5721 0x00000100, 0x0400001d, 0x4c380000, 0x592c0204,
5722 0x82000500, 0x000000ff, 0x82000580, 0x00000012,
5723 0x0400000b, 0x592c0208, 0x8400054e, 0x48025a08,
5724 0x4a025a06, 0x00000002, 0x4a025a04, 0x00000103,
5725 0x0201f800, 0x000202c1, 0x0401f005, 0x4a025a06,
5726 0x00000010, 0x0201f800, 0x000202da, 0x5c007000,
5727 0x4202e000, 0x00000001, 0x4a007002, 0x00000100,
5728 0x49787010, 0x1c01f000, 0x58380004, 0x82000480,
5729 0x00000003, 0x04000087, 0x58380010, 0x8c000500,
5730 0x04020019, 0x4200b000, 0x00000003, 0x832cac00,
5731 0x00000011, 0x5838000a, 0x5838100d, 0x8008a400,
5732 0x4c380000, 0x0201f800, 0x0010ab17, 0x5c007000,
5733 0x5838000d, 0x82000400, 0x00000003, 0x4800700d,
5734 0x4a007010, 0x00000001, 0x58380004, 0x82000480,
5735 0x00000003, 0x48007004, 0x82000580, 0x00000003,
5736 0x0400006c, 0x5838000e, 0x80001d40, 0x04020020,
5737 0x4c380000, 0x0201f800, 0x001007d3, 0x5c007000,
5738 0x04000010, 0x4a025a04, 0x0000010a, 0x42001800,
5739 0x00000005, 0x480c700e, 0x5838000c, 0x80000540,
5740 0x04020002, 0x5838000b, 0x40000800, 0x492c0801,
5741 0x492c700c, 0x42000800, 0x0000000f, 0x0401f011,
5742 0x4202e000, 0x00000008, 0x4a033007, 0x00105915,
5743 0x1c01f000, 0x4202e000, 0x00000002, 0x42000000,
5744 0x0010beda, 0x50007000, 0x0401f7e7, 0x583a580c,
5745 0x400c0000, 0x42000800, 0x00000014, 0x80040c80,
5746 0x58381004, 0x5838000f, 0x41783000, 0x80000540,
5747 0x04020005, 0x84183540, 0x82081480, 0x00000003,
5748 0x0400003c, 0x40080000, 0x80040480, 0x04001002,
5749 0x40080800, 0x4004b000, 0x412c0000, 0x800c0400,
5750 0x4000a800, 0x5838000a, 0x5838100d, 0x8008a400,
5751 0x4c080000, 0x4c040000, 0x4c0c0000, 0x4c380000,
5752 0x0201f800, 0x0010ab17, 0x5c007000, 0x5c001800,
5753 0x5c000800, 0x40040000, 0x58381004, 0x80080480,
5754 0x48007004, 0x82000580, 0x00000003, 0x04000002,
5755 0x84183500, 0x5c000000, 0x80041400, 0x82080480,
5756 0x00000060, 0x04020003, 0x84183542, 0x41781000,
5757 0x400c0000, 0x80041c00, 0x820c0480, 0x00000014,
5758 0x04020003, 0x84183544, 0x40001800, 0x40080800,
5759 0x4804700d, 0x480c700e, 0x40180000, 0x0c01f001,
5760 0x00105960, 0x00105964, 0x00105962, 0x00105960,
5761 0x001058fc, 0x00105964, 0x00105962, 0x00105960,
5762 0x0201f800, 0x001005d8, 0x5838100f, 0x0401f739,
5763 0x5838080d, 0x82040400, 0x00000002, 0x5838100a,
5764 0x80080400, 0x50001000, 0x800811c0, 0x0402000f,
5765 0x4202e000, 0x00000001, 0x583a580b, 0x4978700b,
5766 0x49787010, 0x592c0204, 0x82000500, 0x000000ff,
5767 0x82000580, 0x00000012, 0x02000000, 0x00020507,
5768 0x0201f000, 0x000204d0, 0x5838000a, 0x80040c00,
5769 0x82381c00, 0x00000007, 0x54041800, 0x80040800,
5770 0x800c1800, 0x54041800, 0x0401f71a, 0x0201f800,
5771 0x001007d3, 0x02000800, 0x001005d8, 0x4a02580a,
5772 0x0010be79, 0x42000800, 0x0010beda, 0x452c0800,
5773 0x497a580b, 0x497a580c, 0x497a580d, 0x497a580e,
5774 0x497a580f, 0x4a025809, 0x001058b6, 0x497a5810,
5775 0x4a025802, 0x00000100, 0x4a025801, 0x00000001,
5776 0x1c01f000, 0x59c80007, 0x8c000502, 0x04000070,
5777 0x835c2c80, 0x00000005, 0x02001000, 0x00105f23,
5778 0x59c82817, 0x497b9005, 0x82140500, 0x00e00000,
5779 0x0402004f, 0x82140500, 0x000003ff, 0x82001c00,
5780 0x00000006, 0x41cc2000, 0x42003000, 0x00006080,
5781 0x820c0480, 0x00000040, 0x04001006, 0x42001000,
5782 0x00000040, 0x820c1c80, 0x00000040, 0x0401f003,
5783 0x400c1000, 0x41781800, 0x54182000, 0x80102000,
5784 0x80183000, 0x80081040, 0x040207fc, 0x800c19c0,
5785 0x04000005, 0x59c80005, 0x80000000, 0x48039005,
5786 0x0401f7ea, 0x82140500, 0x01f60000, 0x04020029,
5787 0x82140500, 0x0000f000, 0x0400000b, 0x82000c80,
5788 0x00002000, 0x0402100f, 0x82140500, 0x0e000000,
5789 0x80000132, 0x0c01f840, 0x4a039005, 0x00000140,
5790 0x1c01f000, 0x59cc0400, 0x82000500, 0x0000ff00,
5791 0x82000580, 0x00008100, 0x040007f4, 0x0401f01c,
5792 0x4817c857, 0x82140500, 0x000003ff, 0x04020007,
5793 0x59cc0400, 0x82000500, 0x0000ff00, 0x82000580,
5794 0x00008100, 0x04020012, 0x42000000, 0x0010b8bd,
5795 0x0201f800, 0x0010aa47, 0x0201f800, 0x00105dfa,
5796 0x4803c856, 0x4a039005, 0x00000140, 0x0401f020,
5797 0x4817c857, 0x82140500, 0x00f60000, 0x04020004,
5798 0x0201f800, 0x00105e35, 0x040207d2, 0x0201f800,
5799 0x0010513b, 0x04000010, 0x59c400a4, 0x4803c857,
5800 0x82000500, 0x0000000f, 0x82000580, 0x0000000a,
5801 0x04020009, 0x497b5016, 0x59c400a3, 0x82000540,
5802 0x00080000, 0x480388a3, 0x82000500, 0xfff7ffff,
5803 0x480388a3, 0x4817c856, 0x0201f800, 0x0010a978,
5804 0x4a039005, 0x00000140, 0x0401f842, 0x4803c856,
5805 0x1c01f000, 0x00105a1d, 0x00105cf4, 0x00105a15,
5806 0x00105a15, 0x00105a15, 0x00105a15, 0x00105a15,
5807 0x00105a15, 0x4803c857, 0x42000000, 0x0010b85a,
5808 0x0201f800, 0x0010aa47, 0x4a039005, 0x00000140,
5809 0x1c01f000, 0x4817c857, 0x59cc0400, 0x4803c857,
5810 0x82000d00, 0x0000ff00, 0x82041500, 0x0000f000,
5811 0x840409c0, 0x82140500, 0x000003ff, 0x800018c4,
5812 0x8c142d14, 0x04000005, 0x59cc0002, 0x82000500,
5813 0x00000003, 0x800c1c80, 0x480f5016, 0x82080580,
5814 0x00002000, 0x04020011, 0x836c0580, 0x00000001,
5815 0x0402000c, 0x59cc0006, 0x82000500, 0xff000000,
5816 0x82000580, 0x11000000, 0x04020011, 0x0201f800,
5817 0x00103b38, 0x0201f800, 0x00105f48, 0x0401f00c,
5818 0x0401f81f, 0x0401f00a, 0x82080580, 0x00003000,
5819 0x04020003, 0x0401fa06, 0x0401f005, 0x82080580,
5820 0x00008000, 0x04020002, 0x0401fafc, 0x1c01f000,
5821 0x4817c857, 0x42000000, 0x0010b859, 0x0201f800,
5822 0x0010aa47, 0x836c0580, 0x00000003, 0x0402000b,
5823 0x4c080000, 0x4c0c0000, 0x42001000, 0x00008048,
5824 0x40141800, 0x80142120, 0x0201f800, 0x00103a3e,
5825 0x5c001800, 0x5c001000, 0x1c01f000, 0x4807c857,
5826 0x59cc0002, 0x82000500, 0xff000000, 0x82001580,
5827 0x01000000, 0x04000004, 0x82001580, 0x23000000,
5828 0x04020192, 0x82040580, 0x00000023, 0x0402003f,
5829 0x0401fb6a, 0x0400018d, 0x59300c06, 0x82040580,
5830 0x00000010, 0x04000013, 0x82040580, 0x00000011,
5831 0x04000010, 0x82040580, 0x00000001, 0x0400000d,
5832 0x82040580, 0x00000004, 0x0400000a, 0x82040580,
5833 0x00000008, 0x04000007, 0x82040580, 0x0000000a,
5834 0x04000004, 0x4933c857, 0x4807c857, 0x0401f177,
5835 0x59300004, 0x82000500, 0x80010000, 0x04000004,
5836 0x0201f800, 0x00106f60, 0x04020170, 0x59cc0a04,
5837 0x48066202, 0x59cc0006, 0x82000500, 0xffff0000,
5838 0x82000d80, 0x02000000, 0x04020005, 0x42027000,
5839 0x00000015, 0x0201f000, 0x000207a1, 0x82000d80,
5840 0x02140000, 0x040007fa, 0x82000d80, 0x02100000,
5841 0x040007f7, 0x82000d80, 0x02100000, 0x040007f4,
5842 0x82000d80, 0x01000000, 0x04020158, 0x59cc0006,
5843 0x82000500, 0x0000ffff, 0x04020154, 0x42027000,
5844 0x00000016, 0x0401f7ec, 0x82040580, 0x00000022,
5845 0x0402014e, 0x59a80806, 0x8c040d14, 0x04000011,
5846 0x0401f967, 0x0402000f, 0x0401f97d, 0x0400000d,
5847 0x42027000, 0x0000004c, 0x59cc0001, 0x82000500,
5848 0x00ffffff, 0x0201f800, 0x00105eec, 0x0400012a,
5849 0x42028800, 0x0000ffff, 0x417a6800, 0x0401f126,
5850 0x59cc0006, 0x82000500, 0xffff0000, 0x82000d80,
5851 0x03000000, 0x04020021, 0x59a80026, 0x8c000508,
5852 0x04000017, 0x8400054c, 0x48035026, 0x59cc0800,
5853 0x82040d00, 0x00ffffff, 0x48075010, 0x497b8830,
5854 0x84040d70, 0x48078832, 0x59c40802, 0x84040d4c,
5855 0x48078802, 0x59cc0007, 0x82000500, 0x0000ffff,
5856 0x48038893, 0x4803501e, 0x42000800, 0x00000003,
5857 0x59a81010, 0x0201f800, 0x00106c78, 0x59cc0006,
5858 0x82000500, 0x0000ffff, 0x04020118, 0x42027000,
5859 0x00000017, 0x0401f0d9, 0x82000d80, 0x04000000,
5860 0x04020011, 0x59cc0006, 0x82000500, 0x0000ffff,
5861 0x0402010e, 0x0201f800, 0x0010513b, 0x04000004,
5862 0x42027000, 0x0000001d, 0x0401f0cc, 0x59a80026,
5863 0x84000548, 0x48035026, 0x42027000, 0x00000030,
5864 0x0401f0c6, 0x82000d80, 0x05000000, 0x04020008,
5865 0x59cc0006, 0x82000500, 0x0000ffff, 0x040200fb,
5866 0x42027000, 0x00000018, 0x0401f0bc, 0x82000d80,
5867 0x20100000, 0x04020004, 0x42027000, 0x00000019,
5868 0x0401f0b6, 0x82000d80, 0x21100000, 0x04020004,
5869 0x42027000, 0x0000001a, 0x0401f0b0, 0x82000d80,
5870 0x52000000, 0x04020008, 0x59cc0006, 0x82000500,
5871 0x0000ffff, 0x040200e5, 0x42027000, 0x0000001b,
5872 0x0401f0a6, 0x82000d80, 0x50000000, 0x04020008,
5873 0x59cc0006, 0x82000500, 0x0000ffff, 0x040200db,
5874 0x42027000, 0x0000001c, 0x0401f09c, 0x82000d80,
5875 0x13000000, 0x04020004, 0x42027000, 0x00000034,
5876 0x0401f096, 0x82000d80, 0x12000000, 0x04020008,
5877 0x59cc0006, 0x82000500, 0x0000ffff, 0x040200cb,
5878 0x42027000, 0x00000024, 0x0401f08c, 0x82000d00,
5879 0xff000000, 0x82040d80, 0x24000000, 0x04020004,
5880 0x42027000, 0x0000002d, 0x0401f084, 0x82000d00,
5881 0xff000000, 0x82040d80, 0x53000000, 0x04020004,
5882 0x42027000, 0x0000002a, 0x0401f07c, 0x82000d80,
5883 0x0f000000, 0x04020004, 0x42027000, 0x00000020,
5884 0x0401f076, 0x82000d80, 0x61040000, 0x04020036,
5885 0x83cc1400, 0x00000006, 0x80080800, 0x50080000,
5886 0x82000500, 0x0000ffff, 0x82000480, 0x00000004,
5887 0x4c580000, 0x8000b104, 0x8058b1c0, 0x04000026,
5888 0x4c100000, 0x50041800, 0x820c1500, 0x03000000,
5889 0x80081130, 0x42000000, 0x0010b817, 0x82082580,
5890 0x00000000, 0x04020004, 0x42000000, 0x0010b814,
5891 0x0401f00c, 0x82082580, 0x00000001, 0x04020004,
5892 0x42000000, 0x0010b815, 0x0401f006, 0x82082580,
5893 0x00000002, 0x04020003, 0x42000000, 0x0010b816,
5894 0x0201f800, 0x0010aa47, 0x42001000, 0x00008015,
5895 0x820c2500, 0x0000ffff, 0x800c1920, 0x0201f800,
5896 0x00103a3e, 0x5c002000, 0x80040800, 0x8058b040,
5897 0x040207da, 0x5c00b000, 0x42027000, 0x00000023,
5898 0x0401f03e, 0x82000d80, 0x60000000, 0x04020004,
5899 0x42027000, 0x0000003f, 0x0401f038, 0x82000d80,
5900 0x54000000, 0x04020006, 0x0401fb12, 0x0402006f,
5901 0x42027000, 0x00000046, 0x0401f030, 0x82000d80,
5902 0x55000000, 0x04020009, 0x0401fb32, 0x04020004,
5903 0x42027000, 0x00000041, 0x0401f028, 0x42027000,
5904 0x00000042, 0x0401f025, 0x82000d80, 0x78000000,
5905 0x04020004, 0x42027000, 0x00000045, 0x0401f01f,
5906 0x82000d80, 0x10000000, 0x04020004, 0x42027000,
5907 0x0000004e, 0x0401f019, 0x82000d80, 0x63000000,
5908 0x04020004, 0x42027000, 0x0000004a, 0x0401f013,
5909 0x82000d00, 0xff000000, 0x82040d80, 0x56000000,
5910 0x04020004, 0x42027000, 0x0000004f, 0x0401f00b,
5911 0x82000d00, 0xff000000, 0x82040d80, 0x57000000,
5912 0x04020004, 0x42027000, 0x00000050, 0x0401f003,
5913 0x42027000, 0x0000001d, 0x59cc3800, 0x821c3d00,
5914 0x00ffffff, 0x821c0580, 0x00fffffe, 0x59cc0001,
5915 0x04020005, 0x40003000, 0x42028800, 0x000007fe,
5916 0x0401f003, 0x0401f8d1, 0x04020030, 0x0201f800,
5917 0x001045a6, 0x0402002d, 0x83380580, 0x00000046,
5918 0x04020004, 0x59a80010, 0x80180580, 0x04000027,
5919 0x59340200, 0x8c000514, 0x0400000f, 0x83380580,
5920 0x00000030, 0x0400000c, 0x83380580, 0x0000003f,
5921 0x04000009, 0x83380580, 0x00000034, 0x04000006,
5922 0x83380580, 0x00000024, 0x04000003, 0x42027000,
5923 0x0000004c, 0x0201f800, 0x0002075a, 0x04000018,
5924 0x49366009, 0x4a026406, 0x00000004, 0x59cc0c04,
5925 0x48066202, 0x83380580, 0x0000004c, 0x04020009,
5926 0x4a026406, 0x00000011, 0x813669c0, 0x04020005,
5927 0x59cc0001, 0x82000500, 0x00ffffff, 0x4802601e,
5928 0x0201f000, 0x000207a1, 0x59880052, 0x4803c857,
5929 0x80000000, 0x48031052, 0x1c01f000, 0x42001000,
5930 0x00008049, 0x59cc1806, 0x800c1930, 0x0201f800,
5931 0x00103a3e, 0x0201f800, 0x00107942, 0x040007f3,
5932 0x49366009, 0x4a026406, 0x00000004, 0x59cc0c04,
5933 0x48066202, 0x4a026403, 0x00000009, 0x4a02641a,
5934 0x00000009, 0x4a02621a, 0x00002900, 0x4a026203,
5935 0x00000001, 0x0201f000, 0x0010672b, 0x59a80026,
5936 0x4803c857, 0x8c000508, 0x04000010, 0x59cc0006,
5937 0x82000500, 0xff000000, 0x82000d80, 0x03000000,
5938 0x0400000c, 0x82000d80, 0x20000000, 0x04000009,
5939 0x82000d80, 0x05000000, 0x04000006, 0x82000d80,
5940 0x21000000, 0x04000003, 0x80000580, 0x1c01f000,
5941 0x82000540, 0x00000001, 0x0401f7fd, 0x59cc2006,
5942 0x82102500, 0xff000000, 0x9c1021c0, 0x0401f807,
5943 0x820c1c00, 0x0010b4e3, 0x500c1800, 0x800c0500,
5944 0x4803c857, 0x1c01f000, 0x40100800, 0x41781800,
5945 0x82040480, 0x00000020, 0x04001004, 0x800c1800,
5946 0x40000800, 0x0401f7fb, 0x82040500, 0x0000000f,
5947 0x82000400, 0x0010ab38, 0x50000000, 0x8c040d08,
5948 0x04000002, 0x900001c0, 0x1c01f000, 0x4803c856,
5949 0x0401fac3, 0x0402000a, 0x0201f800, 0x0010210a,
5950 0x04020007, 0x59cc0002, 0x82000500, 0xff000000,
5951 0x82000d80, 0x08000000, 0x04000802, 0x1c01f000,
5952 0x4803c856, 0x59cc0400, 0x82000d00, 0x0000ff00,
5953 0x840409c0, 0x82040580, 0x00000033, 0x0402001f,
5954 0x0401f976, 0x04000038, 0x59cc0a04, 0x48066202,
5955 0x59cc0006, 0x4803c857, 0x82000500, 0xffff0000,
5956 0x82000d80, 0x02000000, 0x04020009, 0x59cc0006,
5957 0x82000500, 0x0000ffff, 0x0402002b, 0x42027000,
5958 0x00000015, 0x0201f000, 0x000207a1, 0x82000d80,
5959 0x01000000, 0x04020024, 0x59cc0006, 0x82000500,
5960 0x0000ffff, 0x04020020, 0x42027000, 0x00000016,
5961 0x0201f000, 0x000207a1, 0x82040580, 0x00000032,
5962 0x04020019, 0x59cc0006, 0x82000500, 0xffff0000,
5963 0x82000d80, 0x14000000, 0x04020013, 0x42027000,
5964 0x00000038, 0x59cc0001, 0x0401f810, 0x0402000e,
5965 0x0201f800, 0x001045a6, 0x0402000b, 0x0201f800,
5966 0x0002075a, 0x04000008, 0x49366009, 0x4a026406,
5967 0x00000004, 0x59cc0c04, 0x48066202, 0x0201f000,
5968 0x000207a1, 0x1c01f000, 0x4803c857, 0x4c580000,
5969 0x4c100000, 0x4c380000, 0x4c340000, 0x82003500,
5970 0x00ffffff, 0x82181500, 0x00ff0000, 0x82081580,
5971 0x00ff0000, 0x04020016, 0x82181480, 0x00fffffc,
5972 0x04001013, 0x82181580, 0x00fffffd, 0x04020004,
5973 0x42028800, 0x000007fd, 0x0401f040, 0x82181580,
5974 0x00fffffe, 0x04020004, 0x42028800, 0x000007fe,
5975 0x0401f03a, 0x82181580, 0x00fffffc, 0x04020004,
5976 0x42028800, 0x000007fc, 0x0401f034, 0x41781000,
5977 0x42002000, 0x00000000, 0x4200b000, 0x000007f0,
5978 0x41ac7000, 0x50380000, 0x80006d40, 0x04020005,
5979 0x800811c0, 0x0402001e, 0x8410155e, 0x0401f01c,
5980 0x58340212, 0x82000500, 0x0000ff00, 0x04000011,
5981 0x59a84010, 0x82204500, 0x00ffff00, 0x82180500,
5982 0x00ffff00, 0x04000002, 0x80200580, 0x58340002,
5983 0x0402000f, 0x82000500, 0x000000ff, 0x82184500,
5984 0x000000ff, 0x80204580, 0x04020009, 0x0401f006,
5985 0x58340002, 0x82000500, 0x00ffffff, 0x80184580,
5986 0x04020003, 0x40128800, 0x0401f00c, 0x80102000,
5987 0x80387000, 0x8058b040, 0x040207db, 0x800811c0,
5988 0x04020005, 0x481bc857, 0x82000540, 0x00000001,
5989 0x0401f003, 0x840a8d1e, 0x80000580, 0x5c006800,
5990 0x5c007000, 0x5c002000, 0x5c00b000, 0x1c01f000,
5991 0x59a80026, 0x8c00050e, 0x04000003, 0x8c000502,
5992 0x04000006, 0x59cc0c00, 0x80040910, 0x82040500,
5993 0x0000000f, 0x0c01f002, 0x1c01f000, 0x00105d0f,
5994 0x00105d0f, 0x00105d0f, 0x00105de5, 0x00105d0f,
5995 0x00105d11, 0x00105d29, 0x00105d2c, 0x00105d0f,
5996 0x00105d0f, 0x00105d0f, 0x00105d0f, 0x00105d0f,
5997 0x00105d0f, 0x00105d0f, 0x00105d0f, 0x4803c856,
5998 0x1c01f000, 0x0401f8c5, 0x04000014, 0x82140500,
5999 0x000003ff, 0x800000c4, 0x82000480, 0x00000008,
6000 0x0400100e, 0x59cc0001, 0x59326809, 0x59340802,
6001 0x80040580, 0x82000500, 0x00ffffff, 0x04020007,
6002 0x59cc0a04, 0x48066202, 0x42027000, 0x00000046,
6003 0x0201f000, 0x000207a1, 0x59cc0004, 0x4803c857,
6004 0x1c01f000, 0x59cc0004, 0x4803c857, 0x1c01f000,
6005 0x0401f8aa, 0x04000016, 0x82140500, 0x000003ff,
6006 0x800000c4, 0x82000480, 0x0000000c, 0x04001010,
6007 0x59cc0001, 0x82000500, 0x00ffffff, 0x59326809,
6008 0x59340802, 0x82040d00, 0x00ffffff, 0x80040580,
6009 0x04020007, 0x59cc0a04, 0x48066202, 0x42027000,
6010 0x00000045, 0x0201f000, 0x000207a1, 0x59cc0004,
6011 0x4803c857, 0x1c01f000, 0x4817c857, 0x0401f9c8,
6012 0x04020011, 0x0201f800, 0x0010210a, 0x0402000e,
6013 0x59cc0002, 0x82000500, 0xff000000, 0x82000580,
6014 0x00000000, 0x04020008, 0x82040500, 0x0000000f,
6015 0x82000c80, 0x00000006, 0x04021003, 0x4803c857,
6016 0x0c01f002, 0x1c01f000, 0x00105d60, 0x00105d64,
6017 0x00105d60, 0x00105d60, 0x00105db2, 0x00105dc3,
6018 0x4803c857, 0x59cc0004, 0x4803c857, 0x1c01f000,
6019 0x59cc0004, 0x4803c857, 0x59a80016, 0x800001c0,
6020 0x040207f8, 0x59cc0802, 0x8c040d2e, 0x0402001d,
6021 0x0201f800, 0x00107942, 0x02000800, 0x001005d8,
6022 0x59cc0001, 0x4803c857, 0x0401ff28, 0x0402000d,
6023 0x0201f800, 0x00020245, 0x0402000a, 0x4a026406,
6024 0x00000005, 0x49366009, 0x59cc0c04, 0x48066202,
6025 0x42027000, 0x00000088, 0x0201f000, 0x000207a1,
6026 0x42028800, 0x0000ffff, 0x417a6800, 0x59cc0001,
6027 0x82000500, 0x00ffffff, 0x4802601e, 0x0401f7f0,
6028 0x59cc0001, 0x4803c857, 0x0401ff10, 0x040207d5,
6029 0x0201f800, 0x001045a6, 0x040207d2, 0x59cc0005,
6030 0x8c000500, 0x04020004, 0x59340200, 0x8c00050e,
6031 0x040207cc, 0x0201f800, 0x001049f3, 0x0402000f,
6032 0x0401f83e, 0x040007c7, 0x0201f800, 0x0002075a,
6033 0x040007c4, 0x49366009, 0x4a026406, 0x00000002,
6034 0x59cc0c04, 0x48066202, 0x42027000, 0x00000088,
6035 0x0201f000, 0x000207a1, 0x0201f800, 0x0002075a,
6036 0x040007b8, 0x49366009, 0x4a026406, 0x00000004,
6037 0x59cc0c04, 0x48066202, 0x42027000, 0x00000001,
6038 0x0201f000, 0x000207a1, 0x59cc0004, 0x4803c857,
6039 0x59cc0802, 0x8c040d2e, 0x0400000b, 0x0401f81f,
6040 0x04000009, 0x0401f960, 0x04020007, 0x59cc0a04,
6041 0x48066202, 0x42027000, 0x00000089, 0x0201f000,
6042 0x000207a1, 0x4933c857, 0x1c01f000, 0x59cc0004,
6043 0x4803c857, 0x59cc0802, 0x8c040d2e, 0x0400000b,
6044 0x0401f80e, 0x04000009, 0x0401f94f, 0x04020007,
6045 0x59cc0a04, 0x48066202, 0x42027000, 0x0000008a,
6046 0x0201f000, 0x000207a1, 0x4933c857, 0x1c01f000,
6047 0x59cc0a04, 0x0401f002, 0x59cc0c04, 0x59a8000e,
6048 0x59a81067, 0x80080400, 0x80040480, 0x04021008,
6049 0x40040000, 0x800000c4, 0x800408ca, 0x80040c00,
6050 0x82066400, 0x0010d1c0, 0x1c01f000, 0x80000580,
6051 0x0401f7fe, 0x59cc0802, 0x8c040d2e, 0x04020010,
6052 0x0401ffec, 0x0400000e, 0x59cc0001, 0x82000500,
6053 0x00ffffff, 0x59326809, 0x59340802, 0x82040d00,
6054 0x00ffffff, 0x80040580, 0x04020005, 0x42027000,
6055 0x00000051, 0x0201f000, 0x000207a1, 0x59cc0004,
6056 0x4803c857, 0x1c01f000, 0x4803c856, 0x42003000,
6057 0x00000105, 0x0401f001, 0x4803c856, 0x4c3c0000,
6058 0x41cc7800, 0x0401f803, 0x5c007800, 0x1c01f000,
6059 0x4803c856, 0x4c580000, 0x583c0400, 0x82000500,
6060 0x0000f000, 0x82000580, 0x0000c000, 0x04000024,
6061 0x0201f800, 0x0002075a, 0x04000021, 0x4c180000,
6062 0x583c0001, 0x0401fe89, 0x0402001f, 0x0201f800,
6063 0x001045a6, 0x0402001c, 0x49366009, 0x0201f800,
6064 0x001007e4, 0x04000018, 0x492e6017, 0x497a5800,
6065 0x497a5a04, 0x48125c04, 0x832cac00, 0x00000005,
6066 0x4200b000, 0x00000007, 0x403ca000, 0x0201f800,
6067 0x0010ab17, 0x5c003000, 0x481a641a, 0x4a026403,
6068 0x0000003e, 0x4a026406, 0x00000001, 0x4a026203,
6069 0x00000001, 0x0201f800, 0x0010672b, 0x5c00b000,
6070 0x1c01f000, 0x0201f800, 0x0002077d, 0x5c003000,
6071 0x0401f7fb, 0x4803c856, 0x59cc0400, 0x82000d00,
6072 0x0000ff00, 0x82040500, 0x0000f000, 0x840409c0,
6073 0x82000580, 0x00002000, 0x04020049, 0x82040580,
6074 0x00000022, 0x0402003a, 0x59c400a4, 0x82000500,
6075 0x0000000f, 0x82000c80, 0x00000007, 0x04001004,
6076 0x82000480, 0x0000000c, 0x0400103f, 0x59cc0006,
6077 0x82000500, 0xffff0000, 0x82000d80, 0x04000000,
6078 0x04000039, 0x82000d80, 0x60000000, 0x04000036,
6079 0x82000d80, 0x54000000, 0x04000033, 0x82000d80,
6080 0x03000000, 0x04020015, 0x59a80826, 0x8c040d02,
6081 0x0402002d, 0x8c040d08, 0x0402002b, 0x0201f800,
6082 0x001048ec, 0x0400002b, 0x59a8001d, 0x800000d0,
6083 0x59a80810, 0x82040d00, 0x000000ff, 0x80040540,
6084 0x59cc0800, 0x82040d00, 0x00ffffff, 0x80040580,
6085 0x0402001b, 0x0401f01c, 0x59c40802, 0x8c040d0c,
6086 0x04020017, 0x82000d80, 0x52000000, 0x040007ec,
6087 0x82000d80, 0x05000000, 0x040007e9, 0x82000d80,
6088 0x50000000, 0x040007e6, 0x0401f00d, 0x82040580,
6089 0x00000023, 0x0402000a, 0x0401ff58, 0x04000008,
6090 0x59300c03, 0x82040580, 0x00000002, 0x04000006,
6091 0x82040580, 0x00000051, 0x04000003, 0x80000580,
6092 0x0401f003, 0x82000540, 0x00000001, 0x1c01f000,
6093 0x59cc0006, 0x82000500, 0xffff0000, 0x82000d80,
6094 0x03000000, 0x04000004, 0x82000d80, 0x52000000,
6095 0x040207f3, 0x59a80026, 0x82000500, 0x00000009,
6096 0x82000580, 0x00000008, 0x040007ef, 0x0401f7ec,
6097 0x4803c856, 0x4c5c0000, 0x4c580000, 0x59a80016,
6098 0x82000580, 0x0000004c, 0x0402001f, 0x59ccb807,
6099 0x9c5cb9c0, 0x825cbd00, 0x00000007, 0x8c5cbd00,
6100 0x0400000a, 0x4200b000, 0x00000002, 0x83a81c00,
6101 0x00000002, 0x83cc1400, 0x0000000d, 0x0201f800,
6102 0x0010855a, 0x04020010, 0x8c5cbd02, 0x0400000a,
6103 0x4200b000, 0x00000002, 0x83a81c00, 0x00000000,
6104 0x83cc1400, 0x0000000f, 0x0201f800, 0x0010855a,
6105 0x04020005, 0x8c5cbd04, 0x04000003, 0x82000540,
6106 0x00000001, 0x5c00b000, 0x5c00b800, 0x1c01f000,
6107 0x4803c856, 0x4c5c0000, 0x4c580000, 0x59a80016,
6108 0x82000580, 0x0000004c, 0x0402001f, 0x59ccb807,
6109 0x9c5cb9c0, 0x825cbd00, 0x00000007, 0x8c5cbd00,
6110 0x0400000a, 0x4200b000, 0x00000002, 0x83a81c00,
6111 0x00000002, 0x83cc1400, 0x00000009, 0x0201f800,
6112 0x0010855a, 0x04020010, 0x8c5cbd02, 0x0400000a,
6113 0x4200b000, 0x00000002, 0x83a81c00, 0x00000000,
6114 0x83cc1400, 0x0000000b, 0x0201f800, 0x0010855a,
6115 0x04020005, 0x8c5cbd04, 0x04000003, 0x82000540,
6116 0x00000001, 0x5c00b000, 0x5c00b800, 0x1c01f000,
6117 0x4803c857, 0x4c580000, 0x40003000, 0x42002000,
6118 0x000007f0, 0x4200b000, 0x00000010, 0x83ac7400,
6119 0x000007f0, 0x50380000, 0x80026d40, 0x04000006,
6120 0x59340002, 0x82000500, 0x00ffffff, 0x80180580,
6121 0x04000010, 0x80102000, 0x80387000, 0x8058b040,
6122 0x040207f5, 0x82100480, 0x00000800, 0x42002000,
6123 0x00000000, 0x4200b000, 0x000007f0, 0x41ac7000,
6124 0x040217ed, 0x82000540, 0x00000001, 0x0401f002,
6125 0x40128800, 0x5c00b000, 0x1c01f000, 0x59a80026,
6126 0x8c00050e, 0x04000004, 0x8c000502, 0x04000003,
6127 0x80000580, 0x1c01f000, 0x82000540, 0x00000001,
6128 0x0401f7fd, 0x59300c06, 0x82040580, 0x00000002,
6129 0x04000006, 0x82040580, 0x00000005, 0x04000003,
6130 0x82000540, 0x00000001, 0x1c01f000, 0x59c80000,
6131 0x84000558, 0x84000512, 0x48039000, 0x1c01f000,
6132 0x4a03281a, 0x000003e8, 0x4a032802, 0x0010d1c0,
6133 0x4a032800, 0x00000000, 0x4a032808, 0x00107049,
6134 0x42000000, 0x00000005, 0x83947c00, 0x00000009,
6135 0x49787801, 0x4a007802, 0x00106fff, 0x823c7c00,
6136 0x00000003, 0x80000040, 0x040207fa, 0x4a032819,
6137 0xffff0000, 0x4201d000, 0x00000064, 0x0401f96e,
6138 0x4201d000, 0x000186a0, 0x0401f184, 0x00000000,
6139 0x00000003, 0x00000006, 0x00000009, 0x0000000c,
6140 0x4d300000, 0x4d2c0000, 0x4d340000, 0x4d400000,
6141 0x4cfc0000, 0x4d380000, 0x4d3c0000, 0x4d440000,
6142 0x4d4c0000, 0x4d480000, 0x4c5c0000, 0x4c600000,
6143 0x4c640000, 0x4cc80000, 0x4ccc0000, 0x0201f800,
6144 0x0002057b, 0x5c019800, 0x5c019000, 0x5c00c800,
6145 0x5c00c000, 0x5c00b800, 0x5c029000, 0x5c029800,
6146 0x5c028800, 0x5c027800, 0x5c027000, 0x5c01f800,
6147 0x5c028000, 0x5c026800, 0x5c025800, 0x5c026000,
6148 0x1c01f000, 0x59940004, 0x80000540, 0x0402000a,
6149 0x59940025, 0x80040400, 0x02001800, 0x001005d8,
6150 0x48032804, 0x480b2805, 0x4a032803, 0x0000000a,
6151 0x80000580, 0x1c01f000, 0x5994001f, 0x80000540,
6152 0x0402000a, 0x59940025, 0x80040400, 0x02001800,
6153 0x001005d8, 0x4803281f, 0x480b2820, 0x4a03281e,
6154 0x00000001, 0x80000580, 0x1c01f000, 0x59940022,
6155 0x80000540, 0x0402000a, 0x59940025, 0x80040400,
6156 0x02001800, 0x001005d8, 0x48032822, 0x480b2823,
6157 0x4a032821, 0x0000000a, 0x80000580, 0x1c01f000,
6158 0x4c000000, 0x59940005, 0x4803c857, 0x480bc857,
6159 0x80080580, 0x04020003, 0x497b2804, 0x497b2805,
6160 0x5c000000, 0x1c01f000, 0x4c000000, 0x59940020,
6161 0x4803c857, 0x480bc857, 0x80080580, 0x04020003,
6162 0x497b281f, 0x497b2820, 0x5c000000, 0x1c01f000,
6163 0x4c000000, 0x59940023, 0x4803c857, 0x480bc857,
6164 0x80080580, 0x04020003, 0x497b2822, 0x497b2823,
6165 0x5c000000, 0x1c01f000, 0x4937c857, 0x48ebc857,
6166 0x59340203, 0x80e80480, 0x04001002, 0x48ea6a03,
6167 0x1c01f000, 0x5c03e000, 0x1c01f000, 0x4d440000,
6168 0x42007800, 0x00000010, 0x59968801, 0x0201f800,
6169 0x00020245, 0x04020012, 0x59341a03, 0x800c1840,
6170 0x0400100f, 0x59940027, 0x800c0480, 0x04000003,
6171 0x48026a03, 0x0402100a, 0x5934000f, 0x497a6a03,
6172 0x80000540, 0x04000006, 0x4c3c0000, 0x5934140b,
6173 0x0201f800, 0x00020253, 0x5c007800, 0x81468800,
6174 0x83440480, 0x00000800, 0x04021007, 0x803c7840,
6175 0x040207e7, 0x49472801, 0x5c028800, 0x5c03e000,
6176 0x1c01f000, 0x4a032800, 0x00000002, 0x497b2801,
6177 0x0401f7fa, 0x42007800, 0x00000010, 0x59966002,
6178 0x59300205, 0x80000d40, 0x04000006, 0x59940027,
6179 0x80040480, 0x48026205, 0x0400102d, 0x0400002c,
6180 0x59300206, 0x80000d40, 0x04000014, 0x59b800e4,
6181 0x8c000524, 0x04020011, 0x4a0370e4, 0x00030000,
6182 0x40000000, 0x59b800e4, 0x8c000524, 0x04000004,
6183 0x4a0370e4, 0x00020000, 0x0401f008, 0x59940027,
6184 0x80040480, 0x48026206, 0x4a0370e4, 0x00020000,
6185 0x0400101c, 0x0400001b, 0x83326400, 0x00000024,
6186 0x49332802, 0x41540000, 0x81300480, 0x04021005,
6187 0x803c7840, 0x040207db, 0x5c03e000, 0x1c01f000,
6188 0x59940026, 0x48032827, 0x4a032802, 0x0010d1c0,
6189 0x497b2826, 0x80000540, 0x0400000f, 0x4a032800,
6190 0x00000001, 0x5c03e000, 0x1c01f000, 0x4c3c0000,
6191 0x0201f800, 0x001091db, 0x5c007800, 0x0401f7d1,
6192 0x4c3c0000, 0x0201f800, 0x00108d5d, 0x5c007800,
6193 0x0401f7e2, 0x4a032800, 0x00000000, 0x5c03e000,
6194 0x1c01f000, 0x59a8086b, 0x8c040d30, 0x04020029,
6195 0x8c040d32, 0x0400000f, 0x59a80069, 0x81640480,
6196 0x04001019, 0x59a8000b, 0x81500580, 0x04000005,
6197 0x59a8006a, 0x59a81066, 0x80080580, 0x04020012,
6198 0x900411c0, 0x82081500, 0x00007000, 0x0401f012,
6199 0x82040500, 0x0000001f, 0x04000016, 0x80040840,
6200 0x82040500, 0x0000001f, 0x04000003, 0x4807506b,
6201 0x0401f010, 0x900401c0, 0x82000500, 0x0000001f,
6202 0x80040d40, 0x900401c0, 0x80040580, 0x82001500,
6203 0x00007000, 0x82040500, 0xffff8fff, 0x80080540,
6204 0x4803506b, 0x80081114, 0x0201f800, 0x001006e2,
6205 0x1c01f000, 0x4a032807, 0x000007d0, 0x4a032806,
6206 0x0000000a, 0x1c01f000, 0x42000800, 0x000007d0,
6207 0x83180480, 0x00000005, 0x02021800, 0x001005d8,
6208 0x83947c00, 0x00000009, 0x83180400, 0x00105f43,
6209 0x50000000, 0x803c7c00, 0x48047801, 0x4a007800,
6210 0x0000000a, 0x1c01f000, 0x83180480, 0x00000005,
6211 0x02021800, 0x001005d8, 0x83947c00, 0x00000009,
6212 0x83180400, 0x00105f43, 0x50000000, 0x803c7c00,
6213 0x49787801, 0x1c01f000, 0x4807c857, 0x480bc857,
6214 0x59940025, 0x80040400, 0x02001800, 0x001005d8,
6215 0x48032804, 0x480b2805, 0x4a032803, 0x0000000a,
6216 0x1c01f000, 0x4807c857, 0x480bc857, 0x59940025,
6217 0x80040400, 0x02001800, 0x001005d8, 0x4803281c,
6218 0x480b281d, 0x4a03281b, 0x0000000a, 0x1c01f000,
6219 0x4c000000, 0x5994001d, 0x4803c857, 0x480bc857,
6220 0x80080580, 0x04020003, 0x4803281c, 0x4803281d,
6221 0x5c000000, 0x1c01f000, 0x80e9d1c0, 0x0400000e,
6222 0x0401f836, 0x04025000, 0x4203e000, 0x80000000,
6223 0x40e81000, 0x41780800, 0x42000000, 0x00000064,
6224 0x0201f800, 0x001066a0, 0x59940024, 0x80080400,
6225 0x48032824, 0x1c01f000, 0x42001000, 0x00105065,
6226 0x0401fef0, 0x42001000, 0x00105058, 0x0401ffe1,
6227 0x42001000, 0x00104148, 0x0401feea, 0x42001000,
6228 0x001041bc, 0x0401fee7, 0x42001000, 0x001041f3,
6229 0x0401f6f8, 0x4203e000, 0x70000000, 0x4203e000,
6230 0xb0300000, 0x41fc0000, 0x40ebf800, 0x80e80480,
6231 0x04001011, 0x04000004, 0x82000480, 0x00000003,
6232 0x0402100d, 0x42000000, 0x0000000f, 0x04004004,
6233 0x80000040, 0x040207fe, 0x0401f007, 0x4203e000,
6234 0x70000000, 0x42000000, 0x0010b87e, 0x0201f800,
6235 0x0010aa47, 0x1c01f000, 0x4203e000, 0x80000000,
6236 0x4203e000, 0xb0400000, 0x41fc0000, 0x40ebf800,
6237 0x80e80480, 0x04001011, 0x04000004, 0x82000480,
6238 0x00000003, 0x0402100d, 0x42000000, 0x0000000f,
6239 0x04005004, 0x80000040, 0x040207fe, 0x0401f007,
6240 0x4203e000, 0x80000000, 0x42000000, 0x0010b87f,
6241 0x0201f800, 0x0010aa47, 0x1c01f000, 0x59a8000e,
6242 0x82000480, 0x00000100, 0x599c0a02, 0x800409c0,
6243 0x04020002, 0x80040800, 0x80041480, 0x04001002,
6244 0x40000800, 0x48075067, 0x59a8100e, 0x40040000,
6245 0x800acc80, 0x4967500e, 0x49675069, 0x59aaa80b,
6246 0x41640800, 0x42001000, 0x00000024, 0x0201f800,
6247 0x00106681, 0x8206a400, 0x0010d1c0, 0x49535065,
6248 0x4152b000, 0x42006000, 0x0010be65, 0x4a006004,
6249 0x0000012c, 0x4a006005, 0xda10da10, 0x4a006008,
6250 0x00000011, 0x4a006009, 0x0010be65, 0x4a00600a,
6251 0x001010b8, 0x599c0014, 0x48006011, 0x599c0015,
6252 0x48006012, 0x42006000, 0x0010be41, 0x4a006203,
6253 0x00000008, 0x4a006406, 0x00000006, 0x4a006002,
6254 0xffff0000, 0x4a006008, 0x0010be65, 0x4a006014,
6255 0x0010be65, 0x599c0014, 0x48006015, 0x599c0015,
6256 0x48006016, 0x599c0413, 0x48006017, 0x49506018,
6257 0x49546019, 0x59a80067, 0x4800601a, 0x4a00601b,
6258 0x0010b465, 0x4a00601c, 0x0010b466, 0x4a00601d,
6259 0x0010b46a, 0x42000000, 0xb0000000, 0x42000800,
6260 0x0010be41, 0x0201f800, 0x00100b68, 0x1c01f000,
6261 0x82000d00, 0x000000c0, 0x04000004, 0x82040d80,
6262 0x000000c0, 0x04020055, 0x82000d00, 0x00002020,
6263 0x59300414, 0x84000512, 0x82040d80, 0x00002020,
6264 0x0400000b, 0x8c000514, 0x0402000f, 0x48026414,
6265 0x813e79c0, 0x02020000, 0x000206d0, 0x42027000,
6266 0x00000043, 0x0201f000, 0x000207a1, 0x59326809,
6267 0x59340a00, 0x8c040d0a, 0x040007f3, 0x84000552,
6268 0x0401f7f1, 0x84000514, 0x592c080d, 0x48066015,
6269 0x0401f7ef, 0x59326809, 0x59340a00, 0x8c040d0a,
6270 0x02000000, 0x000206e3, 0x59300c14, 0x84040d52,
6271 0x48066414, 0x0201f000, 0x000206e3, 0x0201f800,
6272 0x00020086, 0x813e79c0, 0x02020000, 0x000206d0,
6273 0x0201f000, 0x000206f1, 0x8c00051e, 0x02000000,
6274 0x000206fd, 0x82000d00, 0x00002020, 0x82040d80,
6275 0x00002020, 0x04000014, 0x82000500, 0x000000c0,
6276 0x82000d80, 0x00000080, 0x04000008, 0x813e79c0,
6277 0x02020000, 0x000206d0, 0x42027000, 0x00000041,
6278 0x0201f000, 0x000207a1, 0x813e79c0, 0x02020000,
6279 0x000206d0, 0x42027000, 0x00000043, 0x0201f000,
6280 0x000207a1, 0x59326809, 0x59340a00, 0x8c040d0a,
6281 0x040007ea, 0x59300c14, 0x84040d52, 0x48066414,
6282 0x0401f7e6, 0x492fc857, 0x42000800, 0x00000006,
6283 0x0201f000, 0x000206f8, 0x492fc857, 0x42000800,
6284 0x00000004, 0x0201f000, 0x000206f8, 0x4807c856,
6285 0x59a80068, 0x800409c0, 0x04000003, 0x80080540,
6286 0x0401f002, 0x80080500, 0x48035068, 0x1c01f000,
6287 0x4a030800, 0x00000000, 0x4a030802, 0x00000001,
6288 0x497b0803, 0x497b0804, 0x1c01f000, 0x59840002,
6289 0x8c000500, 0x04000004, 0x84000500, 0x4a030800,
6290 0x00000001, 0x84000544, 0x84000506, 0x48030802,
6291 0x82000d00, 0x0fffffff, 0x42000000, 0x90000000,
6292 0x0201f800, 0x00100b94, 0x59a80069, 0x82000480,
6293 0x00000007, 0x48035069, 0x80000580, 0x42000800,
6294 0x0010b519, 0x48000800, 0x48000801, 0x1c01f000,
6295 0x59a80069, 0x82000480, 0x00000007, 0x48035069,
6296 0x1c01f000, 0x83640480, 0x00000008, 0x0400101b,
6297 0x58c80a03, 0x80000580, 0x82000400, 0x00000008,
6298 0x80040840, 0x040207fd, 0x815c0480, 0x04001013,
6299 0x4200b000, 0x00000007, 0x0201f800, 0x0002075a,
6300 0x4a026203, 0x00000004, 0x4a026406, 0x00000009,
6301 0x4a026203, 0x00000004, 0x4a026007, 0x00000101,
6302 0x0401f809, 0x0401f880, 0x8058b040, 0x040207f3,
6303 0x80000580, 0x1c01f000, 0x82000540, 0x00000001,
6304 0x0401f7fd, 0x0201f800, 0x001007e4, 0x492e6008,
6305 0x58c80a03, 0x4a025a04, 0x0000002c, 0x497a5800,
6306 0x497a5801, 0x497a5c04, 0x497a5c06, 0x497a5805,
6307 0x4a025a08, 0x00000005, 0x4a025a07, 0x00000002,
6308 0x58c80201, 0x48025c04, 0x58c80202, 0x48025c07,
6309 0x58c80204, 0x48025c08, 0x4a02580d, 0x0000ffff,
6310 0x80040840, 0x0400000c, 0x412c2000, 0x0201f800,
6311 0x001007e4, 0x4a025a04, 0x0000000a, 0x497a5c04,
6312 0x48125800, 0x492c2001, 0x412c2000, 0x80040840,
6313 0x040207f7, 0x1c01f000, 0x4d7c0000, 0x4202f800,
6314 0x00000010, 0x4df00000, 0x4203e000, 0x50000000,
6315 0x59847803, 0x803c79c0, 0x0400001e, 0x4c5c0000,
6316 0x583cb808, 0x585c3408, 0x801831c0, 0x0400000b,
6317 0x0401f84a, 0x04000016, 0x42001000, 0x0010b519,
6318 0x0401f87f, 0x04000012, 0x0201f800, 0x001007d3,
6319 0x0400000f, 0x492cb805, 0x585c0005, 0x80000540,
6320 0x02000800, 0x001005d8, 0x0401f830, 0x585c5408,
6321 0x0401f80b, 0x5c00b800, 0x5c03e000, 0x817ef840,
6322 0x040207e1, 0x5c02f800, 0x1c01f000, 0x5c00b800,
6323 0x5c03e000, 0x5c02f800, 0x1c01f000, 0x4803c856,
6324 0x405c6000, 0x802851c0, 0x04000018, 0x585c0204,
6325 0x82000d00, 0x0000000f, 0x82040c00, 0x001010bd,
6326 0x50044000, 0x4cf00000, 0x4d000000, 0x4d040000,
6327 0x4021e000, 0x40320800, 0x59860004, 0x4c280000,
6328 0x0401f934, 0x5c005000, 0x40f04000, 0x41046000,
6329 0x0201f800, 0x0010109b, 0x040207f6, 0x5c020800,
6330 0x5c020000, 0x5c01e000, 0x58c80204, 0x4800bc08,
6331 0x0201f800, 0x00020086, 0x4a026007, 0x00000101,
6332 0x497a6009, 0x0401f055, 0x4803c856, 0x59840003,
6333 0x80026540, 0x04000003, 0x59300000, 0x48030803,
6334 0x1c01f000, 0x4803c856, 0x59840003, 0x48026000,
6335 0x49330803, 0x1c01f000, 0x58cc0805, 0x40180000,
6336 0x80040480, 0x0400100d, 0x82cc0580, 0x0010b50e,
6337 0x02020800, 0x001005d8, 0x58c80205, 0x80040480,
6338 0x0400101d, 0x82000540, 0x00000001, 0x1c01f000,
6339 0x80003580, 0x0401f7fe, 0x82cc0580, 0x0010b50e,
6340 0x02020800, 0x001005d8, 0x58c80400, 0x8c000504,
6341 0x040007f8, 0x58c8040b, 0x8c00051e, 0x040007f5,
6342 0x8c000500, 0x040207f3, 0x84000540, 0x4801940b,
6343 0x42000000, 0x0010b839, 0x0201f800, 0x0010aa47,
6344 0x42001000, 0x00008026, 0x0201f800, 0x00103a3e,
6345 0x0401f7e8, 0x58c8040b, 0x8c00051e, 0x040007e2,
6346 0x8c000502, 0x040207e0, 0x84000542, 0x4801940b,
6347 0x42000000, 0x0010b838, 0x0201f800, 0x0010aa47,
6348 0x42001000, 0x00008025, 0x42001800, 0x00000000,
6349 0x0201f800, 0x00103a3e, 0x0401f7d3, 0x4803c856,
6350 0x58080000, 0x42001800, 0x00000007, 0x58080801,
6351 0x80040480, 0x04020004, 0x400c0000, 0x80000540,
6352 0x0401f005, 0x04001003, 0x800c0480, 0x0401f002,
6353 0x80000080, 0x1c01f000, 0x4803c856, 0x59300008,
6354 0x80000d40, 0x02000800, 0x001005d8, 0x58040005,
6355 0x80000540, 0x02000800, 0x001005d8, 0x59300007,
6356 0x82000500, 0x00000101, 0x82000580, 0x00000101,
6357 0x02020800, 0x001005d8, 0x42001000, 0x0010b519,
6358 0x58080801, 0x82040400, 0x0010b51b, 0x497a6414,
6359 0x4a026015, 0x0000ffff, 0x45300000, 0x80040800,
6360 0x82040480, 0x00000008, 0x04001002, 0x80000d80,
6361 0x48041001, 0x82040400, 0x0010b51b, 0x45780000,
6362 0x1c01f000, 0x4933c857, 0x59300808, 0x800409c0,
6363 0x02000800, 0x001005d8, 0x4d2c0000, 0x58065805,
6364 0x812e59c0, 0x02020800, 0x001007f4, 0x49780805,
6365 0x40065800, 0x0201f800, 0x001007fd, 0x5c025800,
6366 0x4d300000, 0x0201f800, 0x0002077d, 0x5c026000,
6367 0x1c01f000, 0x59300406, 0x82000580, 0x00000009,
6368 0x04020006, 0x59300007, 0x8c000510, 0x04000003,
6369 0x80000580, 0x1c01f000, 0x82000540, 0x00000001,
6370 0x1c01f000, 0x59840802, 0x8c040d04, 0x1c01f000,
6371 0x4803c856, 0x59840802, 0x84040d04, 0x84040d40,
6372 0x4a030800, 0x00000000, 0x48070802, 0x82040d00,
6373 0x0fffffff, 0x42000000, 0x90000000, 0x0201f000,
6374 0x00100b94, 0x4807c857, 0x4805980a, 0x49799801,
6375 0x49799803, 0x49799806, 0x49799807, 0x49799808,
6376 0x49799805, 0x49799809, 0x0401f8c9, 0x0400000a,
6377 0x0401f8eb, 0x04000008, 0x48359800, 0x48359802,
6378 0x48359806, 0x4a019804, 0x00000001, 0x4a019807,
6379 0x00000005, 0x1c01f000, 0x4807c857, 0x58cc1007,
6380 0x40040000, 0x80080480, 0x04021020, 0x4c040000,
6381 0x4c080000, 0x0401f8da, 0x5c001000, 0x5c000800,
6382 0x0400001c, 0x58cc0006, 0x80006540, 0x0402000b,
6383 0x48359800, 0x48359802, 0x48359806, 0x49799801,
6384 0x49799803, 0x49786801, 0x49786800, 0x49799804,
6385 0x49799807, 0x0401f005, 0x48306801, 0x48346000,
6386 0x48359806, 0x49786800, 0x58cc0004, 0x58cc1007,
6387 0x80000000, 0x82081400, 0x00000005, 0x48019804,
6388 0x48099807, 0x0401f7df, 0x80000580, 0x1c01f000,
6389 0x82000540, 0x00000001, 0x1c01f000, 0x480bc857,
6390 0x4c500000, 0x4c540000, 0x4c580000, 0x40083000,
6391 0x58cc0801, 0x82040480, 0x00000005, 0x02021800,
6392 0x001005d8, 0x82040400, 0x00106418, 0x50000000,
6393 0x58cca800, 0x8054ac00, 0x42001800, 0x00000005,
6394 0x40040000, 0x800c0480, 0x80082480, 0x04021002,
6395 0x40080000, 0x8000b0c2, 0x8058b400, 0x5450a800,
6396 0x8050a000, 0x8054a800, 0x8058b040, 0x040207fc,
6397 0x40001000, 0x58cc2805, 0x58cc0807, 0x58cc2001,
6398 0x80142c00, 0x80040c80, 0x80102400, 0x48159805,
6399 0x48059807, 0x48119801, 0x82100580, 0x00000005,
6400 0x0400000c, 0x48119801, 0x40080000, 0x80181480,
6401 0x40083000, 0x04000003, 0x040217d6, 0x80000580,
6402 0x5c00b000, 0x5c00a800, 0x5c00a000, 0x1c01f000,
6403 0x58cc0800, 0x800409c0, 0x02000800, 0x001005d8,
6404 0x58040800, 0x48059800, 0x41782000, 0x0401f7ee,
6405 0x0401f813, 0x50f00000, 0x81040400, 0x40001800,
6406 0x585c0204, 0x4803c857, 0x82000580, 0x0000002c,
6407 0x02020800, 0x001005d8, 0x58040202, 0x800000e0,
6408 0x81000540, 0x48001802, 0x58040000, 0x48001800,
6409 0x58040001, 0x48001801, 0x1c01f000, 0x4807c856,
6410 0x58cc0005, 0x80000040, 0x02001800, 0x001005d8,
6411 0x48019805, 0x58cc1003, 0x82080480, 0x00000005,
6412 0x02021800, 0x001005d8, 0x82080400, 0x00106418,
6413 0x50000000, 0x58cc0802, 0x80040c00, 0x80081000,
6414 0x82080480, 0x00000005, 0x0402000f, 0x58cc2002,
6415 0x58100000, 0x80006d40, 0x04000009, 0x4c340000,
6416 0x0401f858, 0x5c006800, 0x49786801, 0x48359802,
6417 0x58cc0004, 0x80000040, 0x48019804, 0x49799803,
6418 0x0401f002, 0x48099803, 0x1c01f000, 0x4807c856,
6419 0x41781800, 0x58c80201, 0x80000540, 0x04000002,
6420 0x800c1800, 0x58c80c01, 0x80040c80, 0x0400100a,
6421 0x04000009, 0x800c1800, 0x58c80202, 0x80041480,
6422 0x04001005, 0x04000004, 0x800c1800, 0x40080800,
6423 0x0401f7fb, 0x480d9204, 0x400c0000, 0x42002000,
6424 0x00000001, 0x80000040, 0x04000007, 0x04001006,
6425 0x80102000, 0x82000480, 0x00000005, 0x04000002,
6426 0x040217fc, 0x48119203, 0x1c01f000, 0x4807c856,
6427 0x4d2c0000, 0x58cc000a, 0x80000540, 0x02000800,
6428 0x001005d8, 0x82002400, 0x00000005, 0x0201f800,
6429 0x001007d3, 0x04000012, 0x492d9809, 0x497a5800,
6430 0x497a5801, 0x0201f800, 0x001007d3, 0x0400000c,
6431 0x58cc0009, 0x48025800, 0x497a5801, 0x492d9809,
6432 0x82102480, 0x00000005, 0x040217f7, 0x82000540,
6433 0x00000001, 0x5c025800, 0x1c01f000, 0x58cc0009,
6434 0x80025d40, 0x040007fc, 0x592c2000, 0x0201f800,
6435 0x001007f4, 0x40100000, 0x0401f7fa, 0x58cc0009,
6436 0x48cfc857, 0x80006d40, 0x04000005, 0x50340000,
6437 0x48019809, 0x49786800, 0x49786801, 0x1c01f000,
6438 0x4813c857, 0x58cc0009, 0x48002000, 0x48119809,
6439 0x1c01f000, 0x4807c856, 0x4d2c0000, 0x58cc0009,
6440 0x80025d40, 0x04000007, 0x592c0000, 0x4c000000,
6441 0x0201f800, 0x001007f4, 0x5c000000, 0x0401f7f9,
6442 0x5c025800, 0x1c01f000, 0x4807c856, 0x4d2c0000,
6443 0x58cc0002, 0x80025d40, 0x04000007, 0x592c0000,
6444 0x4c000000, 0x0201f800, 0x001007f4, 0x5c000000,
6445 0x0401f7f9, 0x49799800, 0x49799802, 0x49799801,
6446 0x49799803, 0x49799806, 0x49799807, 0x49799808,
6447 0x49799809, 0x4979980a, 0x5c025800, 0x1c01f000,
6448 0x00000003, 0x00000006, 0x00000009, 0x0000000c,
6449 0x0000000f, 0x00000012, 0x4803c856, 0x0401f857,
6450 0x4a00c204, 0x0000003c, 0x59301009, 0x82080580,
6451 0x0010b524, 0x04000013, 0x58080802, 0x82040d00,
6452 0x00ffffff, 0x58080403, 0x4804c005, 0x4800c406,
6453 0x4a00c207, 0x00000003, 0x59300811, 0x585c0404,
6454 0x4978c206, 0x4804c407, 0x80000540, 0x0400000d,
6455 0x58600206, 0x84000540, 0x4800c206, 0x0401f009,
6456 0x585c080a, 0x82040d00, 0x00ffffff, 0x4804c005,
6457 0x4a00c406, 0x000007ff, 0x4978c207, 0x0401f7ef,
6458 0x82603c00, 0x00000008, 0x58605404, 0x40282000,
6459 0x405c6000, 0x585c0a04, 0x82040d00, 0x0000000f,
6460 0x82040c00, 0x001010bd, 0x50044000, 0x80004d80,
6461 0x50200000, 0x80307400, 0x58380402, 0x8c244d00,
6462 0x04020003, 0x48003a00, 0x0401f003, 0x48003c00,
6463 0x801c3800, 0x80244800, 0x80102040, 0x04000006,
6464 0x0201f800, 0x0010109b, 0x02000800, 0x001005d8,
6465 0x0401f7f0, 0x1c01f000, 0x4803c856, 0x4d340000,
6466 0x59300009, 0x80026d40, 0x02000800, 0x001005d8,
6467 0x59340401, 0x80000540, 0x0400000e, 0x59840000,
6468 0x80000540, 0x0400000b, 0x836c0580, 0x00000003,
6469 0x04020008, 0x59341c03, 0x42002000, 0x00000004,
6470 0x42003000, 0x00000004, 0x0201f800, 0x00103aae,
6471 0x5c026800, 0x1c01f000, 0x4803c856, 0x80001580,
6472 0x58c80c01, 0x59300011, 0x80040c80, 0x48066011,
6473 0x58c80201, 0x80000540, 0x04000005, 0x80081000,
6474 0x80040c80, 0x04001007, 0x04000006, 0x58c80202,
6475 0x80081000, 0x80040c80, 0x04001002, 0x040207fd,
6476 0x4808bc08, 0x4808c404, 0x1c01f000, 0x4803c856,
6477 0x4a0370e5, 0x00020000, 0x59b800e5, 0x8c000524,
6478 0x040207fc, 0x4a0370e5, 0x00030000, 0x40000000,
6479 0x40000000, 0x59b800e5, 0x8c000524, 0x040207f5,
6480 0x5934000e, 0x80006d40, 0x04000010, 0x81300580,
6481 0x04020004, 0x58340000, 0x4802680e, 0x0401f00a,
6482 0x40347800, 0x58340000, 0x80006d40, 0x02000800,
6483 0x001005d8, 0x81300580, 0x040207fa, 0x58340000,
6484 0x48007800, 0x497a6000, 0x4a0370e5, 0x00020000,
6485 0x1c01f000, 0x4803c856, 0x4d300000, 0x4d2c0000,
6486 0x42000800, 0x000003ff, 0x4a0370e5, 0x00020000,
6487 0x59b800e5, 0x8c000524, 0x04000005, 0x80040840,
6488 0x040207fa, 0x0201f800, 0x001005d8, 0x4a0370e5,
6489 0x00030000, 0x40000000, 0x40000000, 0x59b800e5,
6490 0x8c000524, 0x040207f1, 0x5934000e, 0x80026540,
6491 0x0400000e, 0x4933c857, 0x59300000, 0x4802680e,
6492 0x4a026203, 0x00000004, 0x497a6206, 0x497a6009,
6493 0x4a026007, 0x00000101, 0x59325808, 0x497a5c08,
6494 0x0401fd81, 0x0401f7f1, 0x4a0370e5, 0x00020000,
6495 0x5c025800, 0x5c026000, 0x1c01f000, 0x4803c856,
6496 0x4c000000, 0x0201f800, 0x00105c9a, 0x04020011,
6497 0x0201f800, 0x001045a6, 0x02020800, 0x001005d8,
6498 0x5c000000, 0x48026802, 0x0201f800, 0x0002075a,
6499 0x04000009, 0x49366009, 0x4a026406, 0x00000001,
6500 0x42027000, 0x00000001, 0x0201f000, 0x000207a1,
6501 0x5c000000, 0x1c01f000, 0x59300203, 0x82000c80,
6502 0x0000000e, 0x02021800, 0x001005d8, 0x4803c857,
6503 0x0c01f001, 0x00106503, 0x00106503, 0x00106503,
6504 0x00106505, 0x00106565, 0x00106503, 0x00106503,
6505 0x001065b7, 0x001065b8, 0x00106503, 0x00106503,
6506 0x00106503, 0x00106503, 0x00106503, 0x0201f800,
6507 0x001005d8, 0x493bc857, 0x83380480, 0x00000050,
6508 0x02021800, 0x001005d8, 0x83380480, 0x00000049,
6509 0x02001800, 0x001005d8, 0x0c01f001, 0x00106518,
6510 0x0010653a, 0x00106516, 0x00106516, 0x00106516,
6511 0x00106516, 0x00106549, 0x0201f800, 0x001005d8,
6512 0x4d2c0000, 0x59325808, 0x592c0206, 0x48025c06,
6513 0x4a025a06, 0x00000000, 0x4c5c0000, 0x592cbc0a,
6514 0x592c0000, 0x48026008, 0x0201f800, 0x00104cde,
6515 0x59300008, 0x80000540, 0x04000008, 0x4a026203,
6516 0x00000007, 0x42027000, 0x00000043, 0x5c00b800,
6517 0x5c025800, 0x0401f08a, 0x8c5cbd08, 0x04020006,
6518 0x4a026203, 0x00000007, 0x497a6206, 0x497a6008,
6519 0x0401f003, 0x0201f800, 0x0002077d, 0x5c00b800,
6520 0x5c025800, 0x1c01f000, 0x0201f800, 0x00106b8a,
6521 0x4d2c0000, 0x59325808, 0x0201f800, 0x00109037,
6522 0x04000006, 0x4d400000, 0x42028000, 0x00000001,
6523 0x0401f8f8, 0x5c028000, 0x5c025800, 0x0201f000,
6524 0x0002077d, 0x0201f800, 0x00106b8a, 0x4d3c0000,
6525 0x417a7800, 0x0201f800, 0x0010203c, 0x5c027800,
6526 0x42003000, 0x00000014, 0x0201f800, 0x0010a942,
6527 0x42000000, 0x0010b864, 0x0201f800, 0x0010aa47,
6528 0x4d2c0000, 0x59325808, 0x0201f800, 0x00109037,
6529 0x04000006, 0x4d400000, 0x42028000, 0x00000029,
6530 0x0401f8dc, 0x5c028000, 0x5c025800, 0x0201f000,
6531 0x0002077d, 0x493bc857, 0x497a6206, 0x83380480,
6532 0x00000054, 0x02021800, 0x001005d8, 0x83380480,
6533 0x00000047, 0x02001800, 0x001005d8, 0x0c01f001,
6534 0x001065b6, 0x0010657f, 0x0010657d, 0x0010657d,
6535 0x0010657d, 0x0010657d, 0x0010657d, 0x0010657d,
6536 0x0010657d, 0x0010657d, 0x0010657d, 0x0010657d,
6537 0x00106583, 0x0201f800, 0x001005d8, 0x59300011,
6538 0x82000500, 0xffff0000, 0x04020034, 0x59840802,
6539 0x8c040d04, 0x04000025, 0x59300009, 0x80026d40,
6540 0x0400001f, 0x4c5c0000, 0x4c600000, 0x497a6206,
6541 0x5930b808, 0x585c0005, 0x8000c540, 0x02000800,
6542 0x001005d8, 0x0401fe8d, 0x40625800, 0x0201f800,
6543 0x00104cde, 0x4978b805, 0x0401fef5, 0x497a6009,
6544 0x585c3408, 0x0401fcbd, 0x0400000e, 0x42001000,
6545 0x0010b519, 0x0401fcf2, 0x0400000a, 0x0201f800,
6546 0x001007e4, 0x04000007, 0x492cb805, 0x585c5408,
6547 0x0401fc83, 0x5c00c000, 0x5c00b800, 0x1c01f000,
6548 0x0401fca9, 0x0401f7fc, 0x8c040d06, 0x040207fc,
6549 0x59300009, 0x80026d40, 0x04000006, 0x5934000e,
6550 0x80000540, 0x02020800, 0x001005d8, 0x497a6009,
6551 0x0401fd0d, 0x0401f7f2, 0x0401f06f, 0x4803c856,
6552 0x4803c856, 0x83380580, 0x00000043, 0x02020800,
6553 0x001005d8, 0x4a026203, 0x00000003, 0x493a6403,
6554 0x59325808, 0x592c000f, 0x48026011, 0x497a6013,
6555 0x592c0406, 0x800000c2, 0x800010c4, 0x80081400,
6556 0x480a6206, 0x0201f800, 0x00100f4e, 0x42000800,
6557 0x80000060, 0x0401f154, 0x42000000, 0x0010b875,
6558 0x0201f800, 0x0010aa47, 0x59300203, 0x82000c80,
6559 0x0000000e, 0x02021800, 0x001005d8, 0x4803c857,
6560 0x82000d80, 0x00000003, 0x04000006, 0x82000d80,
6561 0x00000004, 0x04000045, 0x0201f800, 0x001005d8,
6562 0x0201f800, 0x00106c55, 0x59300004, 0x8c00053e,
6563 0x04020007, 0x0201f800, 0x00106b6c, 0x02020800,
6564 0x001005d8, 0x0201f000, 0x00106c4b, 0x0401f9c3,
6565 0x0201f800, 0x00106c4b, 0x59325808, 0x42028000,
6566 0x00000006, 0x0401f84b, 0x0201f000, 0x0002077d,
6567 0x4803c856, 0x59300203, 0x82000c80, 0x0000000e,
6568 0x02021800, 0x001005d8, 0x82000d80, 0x00000003,
6569 0x04000006, 0x82000d80, 0x00000004, 0x04000023,
6570 0x0201f800, 0x001005d8, 0x4803c856, 0x0201f800,
6571 0x00106c55, 0x4df00000, 0x59300004, 0x8c00053e,
6572 0x04020006, 0x0201f800, 0x00106f60, 0x02020800,
6573 0x001005d8, 0x0401f010, 0x0201f800, 0x00108cd6,
6574 0x04020004, 0x0201f800, 0x00106e62, 0x0402000a,
6575 0x0401f99a, 0x02020800, 0x001005d8, 0x5c03e000,
6576 0x02000800, 0x00106c4b, 0x82000540, 0x00000001,
6577 0x1c01f000, 0x5c03e000, 0x02000800, 0x00106c4b,
6578 0x80000580, 0x1c01f000, 0x4933c857, 0x0201f800,
6579 0x00100e99, 0x4933c857, 0x4c5c0000, 0x4d340000,
6580 0x497a6206, 0x5930b808, 0x59300009, 0x80026d40,
6581 0x04020e5f, 0x42001000, 0x0010b519, 0x0401fc60,
6582 0x04000009, 0x58c80204, 0x4800bc08, 0x41785000,
6583 0x0201f800, 0x00106227, 0x5c026800, 0x5c00b800,
6584 0x1c01f000, 0x4978bc08, 0x0401fc17, 0x0401f7fb,
6585 0x4803c856, 0x0201f800, 0x00109037, 0x0400000f,
6586 0x592c0000, 0x80000d40, 0x04000009, 0x497a5800,
6587 0x49425a06, 0x4c040000, 0x0201f800, 0x000202da,
6588 0x5c000800, 0x40065800, 0x0401f7f6, 0x49425a06,
6589 0x0201f800, 0x000202da, 0x1c01f000, 0x4933c857,
6590 0x59300c06, 0x82040580, 0x0000000e, 0x04000004,
6591 0x82040580, 0x00000009, 0x04020004, 0x0401ffe5,
6592 0x497a6008, 0x80000580, 0x1c01f000, 0x592e6009,
6593 0x83300480, 0x0010d1c0, 0x04001016, 0x41580000,
6594 0x81300480, 0x04021013, 0x40040000, 0x59300c06,
6595 0x80040580, 0x04020012, 0x59300a03, 0x82040580,
6596 0x00000007, 0x02020800, 0x001005d8, 0x59300008,
6597 0x80000540, 0x02020800, 0x001005d8, 0x0201f800,
6598 0x0002077d, 0x42000000, 0x00000000, 0x0401f009,
6599 0x42000000, 0x00000008, 0x0401f006, 0x82040580,
6600 0x00000007, 0x040207fb, 0x42000000, 0x00000005,
6601 0x592c0a06, 0x48065c06, 0x48025a06, 0x0201f000,
6602 0x000202da, 0x4c0c0000, 0x4c100000, 0x4c140000,
6603 0x4c180000, 0x80001d80, 0x80002580, 0x42003000,
6604 0x00000020, 0x82040500, 0x00000001, 0x04000003,
6605 0x40080000, 0x800c1c00, 0x400c2800, 0x800c1902,
6606 0x80102102, 0x82140500, 0x00000001, 0x04000003,
6607 0x82102540, 0x80000000, 0x80040902, 0x80183040,
6608 0x040207f1, 0x40100800, 0x400c0000, 0x5c003000,
6609 0x5c002800, 0x5c002000, 0x5c001800, 0x1c01f000,
6610 0x4c580000, 0x4200b000, 0x00000020, 0x80000540,
6611 0x04000018, 0x80041c80, 0x04021016, 0x800810c2,
6612 0x80040982, 0x04001006, 0x80041c80, 0x04021005,
6613 0x8058b040, 0x040207fa, 0x0401f006, 0x80041c80,
6614 0x400c0800, 0x80081000, 0x8058b040, 0x040207f4,
6615 0x4c000000, 0x41f00000, 0x82000500, 0xf7ffffff,
6616 0x4003e000, 0x5c000000, 0x5c00b000, 0x1c01f000,
6617 0x4c000000, 0x41f00000, 0x82000540, 0x08000000,
6618 0x0401f7f8, 0x4a0378e8, 0x00000000, 0x4a03c821,
6619 0x00000010, 0x4a03c823, 0x00000004, 0x0401f82c,
6620 0x4a0378e9, 0x00003a0d, 0x4a0378e8, 0x00000001,
6621 0x42000000, 0x00001000, 0x50000000, 0x82000480,
6622 0x24220001, 0x04000004, 0x59e00002, 0x84000548,
6623 0x4803c002, 0x42000800, 0x00000005, 0x4203a000,
6624 0x00007600, 0x42000000, 0x00001000, 0x50000000,
6625 0x82000480, 0x24320001, 0x04021003, 0x4a03a005,
6626 0xd0000001, 0x59d00006, 0x4a03a005, 0x90000001,
6627 0x83d3a400, 0x00000020, 0x80040840, 0x040207fa,
6628 0x59e00003, 0x82000500, 0xffffffe0, 0x82000540,
6629 0x00008000, 0x4803c003, 0x59c40006, 0x82000500,
6630 0xfffcffff, 0x48038806, 0x1c01f000, 0x4d900000,
6631 0x4d180000, 0x4a0378e7, 0xaaaaaaaa, 0x4a0378e6,
6632 0xaaaaaaaa, 0x4a0378e5, 0xaaaaaaaa, 0x4a0378e4,
6633 0xaaaaaaaa, 0x42000800, 0x0000bf00, 0x4a00081a,
6634 0x0010b7d4, 0x4a00081b, 0x001010bd, 0x4a00081c,
6635 0x001010cd, 0x4a031800, 0x00000000, 0x4a031801,
6636 0x0010b544, 0x4a031802, 0x0010b54b, 0x42000800,
6637 0x0010b7d7, 0x417a3000, 0x811b20c8, 0x83932400,
6638 0x0000bf32, 0x48072000, 0x4a032001, 0x00000000,
6639 0x83180400, 0x001070ea, 0x50000000, 0x48032002,
6640 0x82040c00, 0x00000003, 0x811a3000, 0x83180480,
6641 0x00000005, 0x040017f1, 0x5c023000, 0x5c032000,
6642 0x1c01f000, 0x48066004, 0x497a6000, 0x497a6001,
6643 0x59bc00ea, 0x8c000516, 0x040207fe, 0x83300400,
6644 0xa0000000, 0x480378e1, 0x1c01f000, 0x4933c857,
6645 0x42000800, 0x80000040, 0x48066004, 0x497a6000,
6646 0x59bc00ea, 0x8c000516, 0x040207fe, 0x83300400,
6647 0x60000000, 0x480378e1, 0x1c01f000, 0x0201f800,
6648 0x00106c55, 0x4df00000, 0x4d300000, 0x4d340000,
6649 0x4d2c0000, 0x4d180000, 0x4c5c0000, 0x4c600000,
6650 0x4d900000, 0x4dd00000, 0x4da40000, 0x4d140000,
6651 0x42003000, 0x0000bf2e, 0x581a6001, 0x813261c0,
6652 0x0400002c, 0x41302800, 0x4178c000, 0x59300000,
6653 0x4c000000, 0x59326809, 0x5930b801, 0x59300406,
6654 0x82000d80, 0x00000006, 0x04020003, 0x8d3e7d18,
6655 0x04000010, 0x8d3e7d06, 0x04000007, 0x82000580,
6656 0x00000003, 0x04020004, 0x59340200, 0x8c00050e,
6657 0x04020008, 0x0401f92f, 0x4c0c0000, 0x4c140000,
6658 0x0401fb5f, 0x5c002800, 0x5c001800, 0x0401f005,
6659 0x41301800, 0x8060c1c0, 0x04020002, 0x400cc000,
6660 0x805cb9c0, 0x04000003, 0x405e6000, 0x0401f7e3,
6661 0x5c026000, 0x813261c0, 0x04000006, 0x8060c1c0,
6662 0x04000002, 0x40602800, 0x4178c000, 0x0401f7d8,
6663 0x417a3000, 0x0201f800, 0x001070d8, 0x59926004,
6664 0x813261c0, 0x04000023, 0x59326809, 0x4130c000,
6665 0x59300001, 0x8000bd40, 0x04000016, 0x40026000,
6666 0x40602800, 0x5930b801, 0x59300406, 0x82000d80,
6667 0x00000006, 0x0400000e, 0x8d3e7d06, 0x04000007,
6668 0x82000580, 0x00000003, 0x04020004, 0x59340200,
6669 0x8c00050e, 0x04020006, 0x0401f8dc, 0x4c140000,
6670 0x0401fb2f, 0x5c002800, 0x0401f002, 0x41302800,
6671 0x405e6000, 0x813261c0, 0x040207eb, 0x8060c1c0,
6672 0x04000004, 0x40626000, 0x4178c000, 0x0401f7e7,
6673 0x811a3000, 0x83180480, 0x00000005, 0x040017d6,
6674 0x5c022800, 0x5c034800, 0x5c03a000, 0x5c032000,
6675 0x5c00c000, 0x5c00b800, 0x5c023000, 0x5c025800,
6676 0x5c026800, 0x5c026000, 0x5c03e000, 0x02000800,
6677 0x00106c4b, 0x1c01f000, 0x4933c857, 0x0201f800,
6678 0x00106c55, 0x4df00000, 0x4d340000, 0x4d180000,
6679 0x4d900000, 0x42003000, 0x0000bf2e, 0x59326809,
6680 0x58182001, 0x40102800, 0x801021c0, 0x04000016,
6681 0x41300000, 0x80100580, 0x04000011, 0x58100009,
6682 0x81340580, 0x0402000b, 0x40101800, 0x58102001,
6683 0x41300000, 0x801021c0, 0x0400000b, 0x80100d80,
6684 0x04000007, 0x40101800, 0x58102001, 0x0401f7fa,
6685 0x40102800, 0x58102000, 0x0401f7ec, 0x0401f8bd,
6686 0x0401f01a, 0x42032000, 0x0000bf32, 0x417a3000,
6687 0x59902004, 0x40102800, 0x801021c0, 0x0400000b,
6688 0x58100009, 0x81340580, 0x04020008, 0x41300000,
6689 0x80100580, 0x0400000c, 0x40102800, 0x58102001,
6690 0x801021c0, 0x040207fa, 0x811a3000, 0x83180480,
6691 0x00000005, 0x0402100d, 0x83932400, 0x00000010,
6692 0x0401f7ec, 0x0401f881, 0x5c032000, 0x5c023000,
6693 0x5c026800, 0x5c03e000, 0x02000800, 0x00106c4b,
6694 0x80000580, 0x1c01f000, 0x0401fb6f, 0x040007f7,
6695 0x5c032000, 0x5c023000, 0x5c026800, 0x5c03e000,
6696 0x02000800, 0x00106c4b, 0x82000540, 0x00000001,
6697 0x1c01f000, 0x0201f800, 0x00106c55, 0x4df00000,
6698 0x4d300000, 0x4d340000, 0x4d180000, 0x4d2c0000,
6699 0x4c5c0000, 0x4c600000, 0x4d900000, 0x4dd00000,
6700 0x4da40000, 0x4d140000, 0x42003000, 0x0000bf2e,
6701 0x581a6001, 0x813261c0, 0x04000023, 0x41302800,
6702 0x5930b800, 0x59326809, 0x59340403, 0x81440580,
6703 0x04000006, 0x805cb9c0, 0x0400001b, 0x41302800,
6704 0x405e6000, 0x0401f7f7, 0x5930b801, 0x8d3e7d00,
6705 0x04000003, 0x0401fb67, 0x0402000e, 0x59300406,
6706 0x82000580, 0x00000006, 0x04020003, 0x8d3e7d18,
6707 0x04000008, 0x0401f867, 0x4c0c0000, 0x4c140000,
6708 0x0401fa97, 0x5c002800, 0x5c001800, 0x0401f002,
6709 0x41301800, 0x405e6000, 0x813261c0, 0x040207eb,
6710 0x0401f02d, 0x417a3000, 0x0201f800, 0x001070d8,
6711 0x59926004, 0x813261c0, 0x04000005, 0x59326809,
6712 0x59340403, 0x81440580, 0x04000006, 0x811a3000,
6713 0x83180480, 0x00000005, 0x040017f4, 0x0401f01e,
6714 0x4130c000, 0x59300001, 0x8000bd40, 0x04000012,
6715 0x40026000, 0x40602800, 0x5930b801, 0x8d3e7d00,
6716 0x04000003, 0x0401fb3b, 0x0402000a, 0x59300406,
6717 0x82000580, 0x00000006, 0x04000006, 0x0401f81b,
6718 0x4c140000, 0x0401fa6e, 0x5c002800, 0x0401f002,
6719 0x41302800, 0x405e6000, 0x813261c0, 0x040207ef,
6720 0x8060c1c0, 0x04000004, 0x40626000, 0x4178c000,
6721 0x0401f7eb, 0x5c022800, 0x5c034800, 0x5c03a000,
6722 0x5c032000, 0x5c00c000, 0x5c00b800, 0x5c025800,
6723 0x5c023000, 0x5c026800, 0x5c026000, 0x5c03e000,
6724 0x04000be3, 0x1c01f000, 0x0401fbc8, 0x59900004,
6725 0x81300580, 0x04020018, 0x4c140000, 0x0201f800,
6726 0x00106dc3, 0x0401fbb8, 0x5c002800, 0x59300001,
6727 0x800001c0, 0x04020003, 0x497a680c, 0x1c01f000,
6728 0x42003000, 0x0000bf2e, 0x497a6001, 0x58180801,
6729 0x800409c0, 0x04020004, 0x48003000, 0x48003001,
6730 0x1c01f000, 0x58180800, 0x48000800, 0x48003000,
6731 0x1c01f000, 0x59300001, 0x48002801, 0x800001c0,
6732 0x04020002, 0x4816680c, 0x497a6001, 0x1c01f000,
6733 0x0401fba6, 0x42003000, 0x0000bf2e, 0x58180001,
6734 0x81300580, 0x0402001c, 0x59300801, 0x800409c0,
6735 0x0400000e, 0x59300000, 0x800001c0, 0x04020005,
6736 0x48043001, 0x48043000, 0x497a6001, 0x1c01f000,
6737 0x59300000, 0x48000800, 0x48043001, 0x497a6000,
6738 0x497a6001, 0x1c01f000, 0x59300800, 0x800409c0,
6739 0x04020005, 0x49783001, 0x49783000, 0x497a680c,
6740 0x1c01f000, 0x48043001, 0x497a6000, 0x497a680c,
6741 0x1c01f000, 0x58180000, 0x81300580, 0x0402000c,
6742 0x59300001, 0x800001c0, 0x04020005, 0x48143000,
6743 0x49782800, 0x497a680c, 0x1c01f000, 0x48003000,
6744 0x48002800, 0x497a6001, 0x1c01f000, 0x59300000,
6745 0x800001c0, 0x04020008, 0x59300001, 0x48001801,
6746 0x800001c0, 0x04020002, 0x480e680c, 0x497a6001,
6747 0x1c01f000, 0x59300801, 0x800409c0, 0x04020006,
6748 0x59300800, 0x48042800, 0x497a6000, 0x497a680c,
6749 0x1c01f000, 0x59300000, 0x48000800, 0x48042800,
6750 0x497a6000, 0x497a6001, 0x1c01f000, 0x0401fb82,
6751 0x4df00000, 0x0401f839, 0x040208c4, 0x04020945,
6752 0x04020a89, 0x04020005, 0x5c03e000, 0x04000b70,
6753 0x80000580, 0x1c01f000, 0x5c03e000, 0x04000b6c,
6754 0x82000540, 0x00000001, 0x1c01f000, 0x4d2c0000,
6755 0x4d340000, 0x4d300000, 0x41783000, 0x598e6009,
6756 0x813261c0, 0x04000021, 0x59300406, 0x82000580,
6757 0x00000006, 0x04020004, 0x8d3e7d18, 0x0402000a,
6758 0x0401f017, 0x82040580, 0x00000005, 0x04020006,
6759 0x8d3e7d16, 0x04000004, 0x59300420, 0x8c000500,
6760 0x0402000f, 0x0401fa4e, 0x59300000, 0x4c000000,
6761 0x8d3e7d06, 0x04000004, 0x0201f800, 0x001092d7,
6762 0x04000005, 0x0401f867, 0x4c180000, 0x0401f9bc,
6763 0x5c003000, 0x5c026000, 0x0401f7e2, 0x41303000,
6764 0x59326000, 0x0401f7df, 0x5c026000, 0x5c026800,
6765 0x5c025800, 0x1c01f000, 0x4933c857, 0x4c5c0000,
6766 0x813261c0, 0x02000800, 0x001005d8, 0x41300000,
6767 0x598cb809, 0x41783000, 0x805cb9c0, 0x04000013,
6768 0x805c0d80, 0x04000004, 0x405c3000, 0x5818b800,
6769 0x0401f7fa, 0x0401f84b, 0x598c000d, 0x81300580,
6770 0x02000800, 0x001070b9, 0x59300403, 0x82000580,
6771 0x00000042, 0x04020002, 0x497a6007, 0x80000580,
6772 0x5c00b800, 0x1c01f000, 0x82000540, 0x00000001,
6773 0x5c00b800, 0x1c01f000, 0x0401fb27, 0x4df00000,
6774 0x4d2c0000, 0x4d340000, 0x4d300000, 0x41783000,
6775 0x598e6009, 0x813261c0, 0x0400002c, 0x59300c06,
6776 0x82040580, 0x00000006, 0x04020004, 0x8d3e7d18,
6777 0x0402000a, 0x0401f022, 0x82040580, 0x00000005,
6778 0x04020006, 0x8d3e7d18, 0x04000004, 0x59300420,
6779 0x8c000500, 0x0402001a, 0x59326809, 0x59340403,
6780 0x81440580, 0x04020016, 0x8d3e7d00, 0x04000006,
6781 0x82040580, 0x00000003, 0x04020011, 0x0401fa35,
6782 0x0402000f, 0x0401f9f6, 0x59300000, 0x4c000000,
6783 0x8d3e7d06, 0x04000004, 0x0201f800, 0x001092d7,
6784 0x04000005, 0x0401f80f, 0x4c180000, 0x0401f964,
6785 0x5c003000, 0x5c026000, 0x0401f7d7, 0x41303000,
6786 0x59326000, 0x0401f7d4, 0x5c026000, 0x5c026800,
6787 0x5c025800, 0x5c03e000, 0x04000ae5, 0x1c01f000,
6788 0x59300800, 0x497a6000, 0x0401fac8, 0x801831c0,
6789 0x04020009, 0x598c0008, 0x81300580, 0x04020004,
6790 0x48031808, 0x48031809, 0x0401f008, 0x48071809,
6791 0x0401f006, 0x48043000, 0x598c0008, 0x81300580,
6792 0x04020002, 0x481b1808, 0x0401f2ca, 0x4d2c0000,
6793 0x4d300000, 0x4d340000, 0x41783000, 0x598e600b,
6794 0x813261c0, 0x04000013, 0x8d3e7d06, 0x04000005,
6795 0x59326809, 0x59340200, 0x8c00050e, 0x0402000a,
6796 0x0401f9bf, 0x59300000, 0x4c000000, 0x0401f853,
6797 0x4c180000, 0x0401f932, 0x5c003000, 0x5c026000,
6798 0x0401f7f0, 0x41303000, 0x59326000, 0x0401f7ed,
6799 0x0201f800, 0x00104773, 0x5c026800, 0x5c026000,
6800 0x5c025800, 0x1c01f000, 0x4933c857, 0x4c5c0000,
6801 0x813261c0, 0x02000800, 0x001005d8, 0x41300000,
6802 0x598cb80b, 0x41783000, 0x805cb9c0, 0x0400000f,
6803 0x805c0d80, 0x04000004, 0x405c3000, 0x5818b800,
6804 0x0401f7fa, 0x0401f835, 0x598c000d, 0x81300580,
6805 0x02000800, 0x001070b9, 0x497a6007, 0x80000580,
6806 0x5c00b800, 0x1c01f000, 0x82000540, 0x00000001,
6807 0x5c00b800, 0x1c01f000, 0x0401fa9f, 0x4df00000,
6808 0x4d340000, 0x4d300000, 0x4d2c0000, 0x0201f800,
6809 0x00020245, 0x02020800, 0x001005d8, 0x41783000,
6810 0x598e600b, 0x813261c0, 0x04000014, 0x59300009,
6811 0x81340580, 0x0402000e, 0x8d3e7d00, 0x04000003,
6812 0x0401f9bc, 0x0402000a, 0x0401f97d, 0x59300000,
6813 0x4c000000, 0x0401f811, 0x4c180000, 0x0401f8f0,
6814 0x5c003000, 0x5c026000, 0x0401f7ef, 0x41303000,
6815 0x59326000, 0x0401f7ec, 0x0201f800, 0x0010479c,
6816 0x5c025800, 0x5c026000, 0x5c026800, 0x5c03e000,
6817 0x04000a6f, 0x1c01f000, 0x59300800, 0x497a6000,
6818 0x0401fa52, 0x801831c0, 0x04020009, 0x598c000a,
6819 0x81300580, 0x04020004, 0x4803180a, 0x4803180b,
6820 0x0401f008, 0x4807180b, 0x0401f006, 0x48043000,
6821 0x598c000a, 0x81300580, 0x04020002, 0x481b180a,
6822 0x0401f254, 0x0401fa64, 0x4df00000, 0x4d300000,
6823 0x598e6005, 0x813261c0, 0x04000020, 0x59300000,
6824 0x4c000000, 0x59300c06, 0x82040580, 0x00000011,
6825 0x04020007, 0x833c0500, 0x00001800, 0x04000015,
6826 0x8d3e7d16, 0x04020013, 0x0401f009, 0x82040580,
6827 0x00000004, 0x04020006, 0x8d3e7d16, 0x04000004,
6828 0x59300420, 0x8c000500, 0x0402000a, 0x0201f800,
6829 0x0010914e, 0x02000800, 0x0010801c, 0x0201f800,
6830 0x00109326, 0x0201f800, 0x0002077d, 0x0401fa31,
6831 0x5c026000, 0x0401f7e0, 0x497b1805, 0x497b1804,
6832 0x5c026000, 0x5c03e000, 0x04000a31, 0x1c01f000,
6833 0x4933c857, 0x4c5c0000, 0x4c600000, 0x813261c0,
6834 0x02000800, 0x001005d8, 0x41300000, 0x598cb805,
6835 0x405cc000, 0x805cb9c0, 0x04000025, 0x805c0d80,
6836 0x04000004, 0x405cc000, 0x5860b800, 0x0401f7fa,
6837 0x598c000d, 0x81300580, 0x02000800, 0x001070b9,
6838 0x0401fa02, 0x598c0005, 0x805c0580, 0x04020009,
6839 0x585c0000, 0x48031805, 0x4978b800, 0x598c0004,
6840 0x805c0580, 0x0402000d, 0x497b1804, 0x0401f00b,
6841 0x598c0004, 0x805c0580, 0x04020005, 0x48631804,
6842 0x4978b800, 0x4978c000, 0x0401f004, 0x585c0000,
6843 0x4800c000, 0x4978b800, 0x0401f9fe, 0x80000580,
6844 0x5c00c000, 0x5c00b800, 0x1c01f000, 0x82000540,
6845 0x00000001, 0x5c00c000, 0x5c00b800, 0x1c01f000,
6846 0x4933c857, 0x0401fa04, 0x4df00000, 0x4d2c0000,
6847 0x4d340000, 0x4d300000, 0x4c5c0000, 0x4178b800,
6848 0x8d3e7d18, 0x0400000d, 0x8d3e7d16, 0x0402000b,
6849 0x0201f800, 0x00109037, 0x04000008, 0x0201f800,
6850 0x00109597, 0x04020005, 0x592c0207, 0x492fc857,
6851 0x8200bd00, 0x0000000f, 0x41783000, 0x598e6005,
6852 0x813261c0, 0x04000029, 0x59326809, 0x813669c0,
6853 0x04000023, 0x59340403, 0x81440580, 0x04020020,
6854 0x59300c06, 0x82040580, 0x00000011, 0x0400001a,
6855 0x82040580, 0x00000004, 0x04020004, 0x59300420,
6856 0x8c000500, 0x04020016, 0x0201f800, 0x00109037,
6857 0x04000008, 0x0201f800, 0x00109597, 0x04020005,
6858 0x59300403, 0x82000580, 0x00000043, 0x0400000c,
6859 0x0401f8c3, 0x59300000, 0x4c000000, 0x0401f812,
6860 0x4c180000, 0x0401f836, 0x5c003000, 0x5c026000,
6861 0x0401f7dc, 0x805cb9c0, 0x040207ec, 0x41303000,
6862 0x59326000, 0x0401f7d7, 0x5c00b800, 0x5c026000,
6863 0x5c026800, 0x5c025800, 0x5c03e000, 0x040009b4,
6864 0x1c01f000, 0x59300800, 0x497a6000, 0x0401f997,
6865 0x801831c0, 0x04020009, 0x598c0004, 0x81300580,
6866 0x04020004, 0x48031804, 0x48031805, 0x0401f008,
6867 0x48071805, 0x0401f006, 0x48043000, 0x598c0004,
6868 0x81300580, 0x04020002, 0x481b1804, 0x0401f199,
6869 0x4943c857, 0x0401f9a8, 0x4df00000, 0x0401fe34,
6870 0x0401fecb, 0x5c03e000, 0x04000999, 0x1c01f000,
6871 0x4947c857, 0x0401f9a0, 0x4df00000, 0x4d3c0000,
6872 0x853e7d00, 0x0401fe75, 0x0401fefc, 0x5c027800,
6873 0x5c03e000, 0x0400098e, 0x1c01f000, 0x5c000000,
6874 0x4c000000, 0x4803c857, 0x4d340000, 0x4d2c0000,
6875 0x59326809, 0x59325808, 0x59300406, 0x82000c80,
6876 0x00000012, 0x02021800, 0x001005d8, 0x4933c857,
6877 0x4943c857, 0x493fc857, 0x4803c857, 0x0c01f804,
6878 0x5c025800, 0x5c026800, 0x1c01f000, 0x00106ae5,
6879 0x00106ae7, 0x00106af1, 0x00106b0b, 0x00106ae7,
6880 0x00106afb, 0x00106b23, 0x00106ae5, 0x00106ae5,
6881 0x00106b36, 0x00106b2d, 0x00106ae5, 0x00106ae5,
6882 0x00106ae5, 0x00106ae5, 0x00106ae5, 0x00106b3c,
6883 0x00106b3c, 0x0201f800, 0x001005d8, 0x0201f800,
6884 0x00109134, 0x02000800, 0x00102074, 0x0201f800,
6885 0x00109326, 0x0201f800, 0x0010801c, 0x0201f000,
6886 0x00107911, 0x812e59c0, 0x02020800, 0x001005d8,
6887 0x5930021d, 0x82000580, 0x00000003, 0x02000800,
6888 0x0010912a, 0x0201f000, 0x00107911, 0x0201f800,
6889 0x00109037, 0x02000000, 0x00107911, 0x592c1204,
6890 0x82081500, 0x000000ff, 0x82080580, 0x00000055,
6891 0x02020800, 0x001005d8, 0x49425a06, 0x0201f800,
6892 0x000202da, 0x0201f000, 0x00107911, 0x59300004,
6893 0x8400055c, 0x48026004, 0x59300007, 0x8c000500,
6894 0x02020800, 0x00100e99, 0x0201f800, 0x00109037,
6895 0x0400000d, 0x4a025a04, 0x00000103, 0x49425a06,
6896 0x497a5c09, 0x0201f800, 0x001091c6, 0x0201f800,
6897 0x0010a693, 0x0201f800, 0x000202da, 0x0201f800,
6898 0x0010912a, 0x0201f000, 0x00107911, 0x59300007,
6899 0x8c000500, 0x02020800, 0x00100e99, 0x0201f800,
6900 0x00109037, 0x02020800, 0x0010a3ef, 0x0201f000,
6901 0x00107911, 0x0201f800, 0x00109037, 0x04000005,
6902 0x49425a06, 0x497a5c09, 0x0201f800, 0x000202da,
6903 0x0201f000, 0x00107911, 0x0201f800, 0x00109037,
6904 0x02020800, 0x0010664f, 0x0201f000, 0x00107911,
6905 0x0201f800, 0x00109037, 0x04000004, 0x49425a06,
6906 0x0201f800, 0x000202da, 0x59325817, 0x0201f800,
6907 0x001007fd, 0x0201f000, 0x00107911, 0x598c000d,
6908 0x81300580, 0x04000003, 0x497a6007, 0x1c01f000,
6909 0x59c40004, 0x82000500, 0x0000000c, 0x04000005,
6910 0x4a038804, 0x0000000c, 0x497b2807, 0x0401f00a,
6911 0x0401facd, 0x59300403, 0x82000d80, 0x00000040,
6912 0x04000004, 0x82000580, 0x00000042, 0x04020002,
6913 0x497a6007, 0x0201f800, 0x001070b9, 0x80000580,
6914 0x1c01f000, 0x59300804, 0x8c040d3e, 0x04020004,
6915 0x82000540, 0x00000001, 0x0401f005, 0x4933c857,
6916 0x84040d3e, 0x48066004, 0x80000580, 0x1c01f000,
6917 0x59300804, 0x8c040d20, 0x04020004, 0x82000540,
6918 0x00000001, 0x1c01f000, 0x4933c857, 0x4d380000,
6919 0x59300804, 0x84040d20, 0x48066004, 0x42027000,
6920 0x00000049, 0x59300203, 0x82000580, 0x00000003,
6921 0x04000003, 0x42027000, 0x00000013, 0x0201f800,
6922 0x000207a1, 0x80000580, 0x5c027000, 0x1c01f000,
6923 0x59300017, 0x81480580, 0x04020003, 0x59300018,
6924 0x814c0580, 0x1c01f000, 0x4d2c0000, 0x4d300000,
6925 0x0401f8c9, 0x4df00000, 0x0201f800, 0x00106062,
6926 0x59900001, 0x82000500, 0x00000003, 0x0c01f001,
6927 0x00106bba, 0x00106b9a, 0x00106b98, 0x00106b98,
6928 0x0201f800, 0x001005d8, 0x59926004, 0x0401f88e,
6929 0x813261c0, 0x0400001d, 0x59300004, 0x8c000516,
6930 0x04000004, 0x59325808, 0x497a5808, 0x497a5809,
6931 0x0401f88e, 0x59300001, 0x800001c0, 0x0400000e,
6932 0x497a6001, 0x42003000, 0x0000bf2e, 0x58180801,
6933 0x800409c0, 0x04020004, 0x48003001, 0x48003000,
6934 0x0401f00a, 0x58180800, 0x48000800, 0x48003000,
6935 0x0401f006, 0x59300809, 0x800409c0, 0x02000800,
6936 0x001005d8, 0x4978080c, 0x5c03e000, 0x04000890,
6937 0x5c026000, 0x5c025800, 0x1c01f000, 0x4d300000,
6938 0x497b2807, 0x0401f894, 0x4df00000, 0x598c0000,
6939 0x82000500, 0x00000007, 0x4803c857, 0x0c01f001,
6940 0x00106bef, 0x00106bd2, 0x00106bdb, 0x00106bdf,
6941 0x00106bea, 0x00106bef, 0x00106bd0, 0x00106bd0,
6942 0x0201f800, 0x001005d8, 0x598c000d, 0x80026540,
6943 0x04000004, 0x0401f81e, 0x02020800, 0x001005d8,
6944 0x0201f800, 0x001070b9, 0x0401f015, 0x0401f827,
6945 0x0201f800, 0x001070b9, 0x0401f011, 0x598c000d,
6946 0x80026540, 0x0400000e, 0x0401f838, 0x04000004,
6947 0x0401f80f, 0x04000002, 0x0401f81c, 0x0201f800,
6948 0x001070b9, 0x0401f006, 0x0401f830, 0x02020800,
6949 0x001005d8, 0x0201f800, 0x001070b9, 0x5c03e000,
6950 0x0400085b, 0x5c026000, 0x1c01f000, 0x598c0009,
6951 0x81300580, 0x0402000c, 0x0401f84e, 0x0401f83b,
6952 0x59300000, 0x800001c0, 0x04000004, 0x48031809,
6953 0x497a6000, 0x0401f003, 0x497b1809, 0x497b1808,
6954 0x80000580, 0x1c01f000, 0x4d2c0000, 0x59300406,
6955 0x82000580, 0x00000003, 0x04020012, 0x598c000b,
6956 0x81300580, 0x0402000f, 0x0401f83a, 0x59325808,
6957 0x497a5808, 0x497a5809, 0x0401f824, 0x59300000,
6958 0x800001c0, 0x04000004, 0x4803180b, 0x497a6000,
6959 0x0401f003, 0x497b180a, 0x497b180b, 0x80000580,
6960 0x5c025800, 0x1c01f000, 0x598c0005, 0x81300580,
6961 0x0402000c, 0x0401f827, 0x0401f814, 0x59300000,
6962 0x800001c0, 0x04000004, 0x48031805, 0x497a6000,
6963 0x0401f003, 0x497b1805, 0x497b1804, 0x80000580,
6964 0x1c01f000, 0x4a032001, 0x00000000, 0x497b2004,
6965 0x497b2005, 0x59900006, 0x82000500, 0x0000ffff,
6966 0x48032006, 0x1c01f000, 0x4c040000, 0x59300004,
6967 0x82000500, 0x7ffeffff, 0x48026004, 0x59bc00e4,
6968 0x8c000514, 0x04000009, 0x42000800, 0x0000bf00,
6969 0x58040012, 0x81300580, 0x04020004, 0x49780812,
6970 0x4a0378e4, 0x00000800, 0x5c000800, 0x1c01f000,
6971 0x4803c856, 0x598c000c, 0x80000540, 0x04000003,
6972 0x80000040, 0x4803180c, 0x1c01f000, 0x59bc00ea,
6973 0x82000500, 0x00000007, 0x82000580, 0x00000003,
6974 0x04020004, 0x4803c856, 0x4a0378e8, 0x00000001,
6975 0x1c01f000, 0x59bc00ea, 0x82000500, 0x00000007,
6976 0x82000580, 0x00000001, 0x04020011, 0x4803c856,
6977 0x42000800, 0x00000000, 0x0401f80e, 0x42000800,
6978 0x00001000, 0x59bc00ea, 0x82000500, 0x00000007,
6979 0x82000580, 0x00000003, 0x04000005, 0x80040840,
6980 0x040207f9, 0x0201f800, 0x001005d8, 0x1c01f000,
6981 0x59bc00ea, 0x82000500, 0x00000007, 0x82000580,
6982 0x00000001, 0x02020800, 0x001005d8, 0x59bc00ea,
6983 0x8c000516, 0x040207fe, 0x480778e1, 0x1c01f000,
6984 0x59bc00ea, 0x8c000516, 0x040207fe, 0x480778e1,
6985 0x59bc00ea, 0x8c000516, 0x040207fe, 0x480b78e1,
6986 0x1c01f000, 0x82000d00, 0x80000018, 0x02020800,
6987 0x001005d0, 0x0201f800, 0x001005d8, 0x00106c97,
6988 0x00106d3b, 0x00106d55, 0x00106c97, 0x00106c99,
6989 0x00106cba, 0x00106cd9, 0x00106d0d, 0x00106c97,
6990 0x00106d39, 0x00106c97, 0x00106c97, 0x00106c97,
6991 0x00106c97, 0x00106c97, 0x00106c97, 0x0201f800,
6992 0x001005d8, 0x4d300000, 0x4d900000, 0x4dd00000,
6993 0x4da40000, 0x4d140000, 0x0201f800, 0x001070d8,
6994 0x59bc00ea, 0x8c000510, 0x040007fe, 0x59be60e0,
6995 0x59300004, 0x8c000520, 0x04000011, 0x82000500,
6996 0xfffefeff, 0x48026004, 0x4a026203, 0x00000003,
6997 0x0401ffa9, 0x0201f800, 0x00100fd0, 0x5c022800,
6998 0x5c034800, 0x5c03a000, 0x5c032000, 0x5c026000,
6999 0x4a0378e4, 0x00000008, 0x0401f795, 0x84000510,
7000 0x48026004, 0x0401f7f6, 0x4d300000, 0x4d900000,
7001 0x4dd00000, 0x4da40000, 0x4d140000, 0x0201f800,
7002 0x001070d8, 0x59bc00ea, 0x8c000510, 0x040007fe,
7003 0x59be60e0, 0x59300004, 0x8c000520, 0x0400000f,
7004 0x82000500, 0xfffefeff, 0x48026004, 0x0401ff8a,
7005 0x0201f800, 0x0010100e, 0x5c022800, 0x5c034800,
7006 0x5c03a000, 0x5c032000, 0x5c026000, 0x4a0378e4,
7007 0x00000008, 0x0401f776, 0x84000510, 0x48026004,
7008 0x0401f7f6, 0x4d300000, 0x4d2c0000, 0x4d340000,
7009 0x4da40000, 0x4cd00000, 0x59bc00ea, 0x8c000510,
7010 0x040007fe, 0x59be60e0, 0x813261c0, 0x02000800,
7011 0x001005d8, 0x59300004, 0x8c000520, 0x0400001d,
7012 0x82000500, 0xfffefeff, 0x48026004, 0x59326809,
7013 0x42034800, 0x0010b544, 0x04011000, 0x4a03c840,
7014 0x0010b54b, 0x4a03c842, 0x00000012, 0x04011000,
7015 0x4a03c840, 0x0010b55d, 0x4a03c842, 0x000000ff,
7016 0x04011000, 0x4a03c840, 0x0010b65c, 0x4a03c842,
7017 0x000000ff, 0x0401fbf2, 0x5c01a000, 0x5c034800,
7018 0x5c026800, 0x5c025800, 0x5c026000, 0x1c01f000,
7019 0x84000510, 0x48026004, 0x5c01a000, 0x5c034800,
7020 0x5c026800, 0x5c025800, 0x5c026000, 0x1c01f000,
7021 0x1c01f000, 0x4d300000, 0x4d2c0000, 0x4d340000,
7022 0x4cd00000, 0x4d900000, 0x4dd00000, 0x4da40000,
7023 0x4d140000, 0x0401fbc3, 0x59bc00ea, 0x8c000510,
7024 0x040007fe, 0x59be60e0, 0x813261c0, 0x02000800,
7025 0x001005d8, 0x59300004, 0x8c000520, 0x0400000f,
7026 0x82000500, 0xfffefeff, 0x48026004, 0x0201f800,
7027 0x0010783a, 0x5c022800, 0x5c034800, 0x5c03a000,
7028 0x5c032000, 0x5c01a000, 0x5c026800, 0x5c025800,
7029 0x5c026000, 0x1c01f000, 0x84000510, 0x48026004,
7030 0x5c022800, 0x5c034800, 0x5c03a000, 0x5c032000,
7031 0x5c01a000, 0x5c026800, 0x5c025800, 0x5c026000,
7032 0x1c01f000, 0x0201f800, 0x001005d8, 0x4d300000,
7033 0x4d380000, 0x42000000, 0x0010b8c4, 0x0201f800,
7034 0x0010aa47, 0x0401ff14, 0x598e600d, 0x59c40004,
7035 0x8c000506, 0x04000004, 0x0401f8db, 0x4a038804,
7036 0x00000008, 0x813261c0, 0x04000006, 0x0401fb87,
7037 0x42027000, 0x00000014, 0x0201f800, 0x000207a1,
7038 0x4a0378e4, 0x00000002, 0x5c027000, 0x5c026000,
7039 0x0401f6f7, 0x4d180000, 0x4d300000, 0x4d380000,
7040 0x4d900000, 0x4dd00000, 0x4da40000, 0x4d140000,
7041 0x0401fef9, 0x417a3000, 0x59c40804, 0x83180400,
7042 0x0010709f, 0x50000000, 0x80040500, 0x0400001b,
7043 0x42000000, 0x0010b8c5, 0x0201f800, 0x0010aa47,
7044 0x0401fb70, 0x59926004, 0x0401f859, 0x83180400,
7045 0x0010709f, 0x50000000, 0x48038804, 0x813261c0,
7046 0x0400000a, 0x59300004, 0x8c00050c, 0x04020003,
7047 0x4a026203, 0x00000003, 0x42027000, 0x0000004a,
7048 0x0201f800, 0x000207a1, 0x59c40004, 0x82000500,
7049 0x00f80000, 0x04000005, 0x811a3000, 0x83180480,
7050 0x00000005, 0x040017dd, 0x4a0378e4, 0x00000008,
7051 0x5c022800, 0x5c034800, 0x5c03a000, 0x5c032000,
7052 0x5c027000, 0x5c026000, 0x5c023000, 0x0401f6c0,
7053 0x4d2c0000, 0x4d340000, 0x59326809, 0x598c0800,
7054 0x82040580, 0x00000004, 0x04020004, 0x838c1400,
7055 0x00000005, 0x0401f00c, 0x82040580, 0x00000001,
7056 0x04020004, 0x838c1400, 0x00000009, 0x0401f006,
7057 0x82040580, 0x00000002, 0x04020022, 0x838c1400,
7058 0x0000000b, 0x41306800, 0x58340000, 0x80007d40,
7059 0x0400001c, 0x583c0009, 0x81340580, 0x04020006,
7060 0x403c6800, 0x583c0000, 0x80007d40, 0x040207fa,
7061 0x0401f014, 0x4933c857, 0x483fc857, 0x583c0000,
7062 0x48006800, 0x49307800, 0x443c1000, 0x80000580,
7063 0x4803180d, 0x4803180f, 0x598c0000, 0x82000580,
7064 0x00000003, 0x04000003, 0x4a031800, 0x00000000,
7065 0x80000580, 0x5c026800, 0x5c025800, 0x1c01f000,
7066 0x82000540, 0x00000001, 0x0401f7fb, 0x491bc857,
7067 0x59c80840, 0x82040540, 0x00000010, 0x48039040,
7068 0x59c41008, 0x82080500, 0xffffff7f, 0x48038808,
7069 0x4c040000, 0x4c080000, 0x0401fabb, 0x04020007,
7070 0x0401fabf, 0x04000022, 0x48038804, 0x0201f800,
7071 0x0010107a, 0x0401f042, 0x4a038803, 0x00000008,
7072 0x59c40003, 0x82000500, 0x00000003, 0x040007fd,
7073 0x8c000502, 0x04020007, 0x0401fab1, 0x04000014,
7074 0x48038804, 0x0201f800, 0x0010107a, 0x0401f034,
7075 0x59c80040, 0x8400056a, 0x48039040, 0x59c80040,
7076 0x8c00052a, 0x040207fe, 0x59c40005, 0x82000500,
7077 0xc0000000, 0x04000006, 0x59c400a3, 0x84000540,
7078 0x480388a3, 0x4a038805, 0xc0000000, 0x0201f800,
7079 0x0010101d, 0x4a03a005, 0x30000000, 0x59d00006,
7080 0x4a03a005, 0x30000000, 0x59900006, 0x82000500,
7081 0xffff0000, 0x48032006, 0x59d00005, 0x8c000504,
7082 0x040207fe, 0x42000800, 0x00007600, 0x83180540,
7083 0x60000000, 0x480008a1, 0x811800dc, 0x59c80840,
7084 0x80040540, 0x48039040, 0x82000540, 0x00003000,
7085 0x48039040, 0x59c80040, 0x82000500, 0x00003000,
7086 0x040207fd, 0x0201f800, 0x00101068, 0x83180400,
7087 0x0010709f, 0x50000000, 0x48038804, 0x80000580,
7088 0x4df00000, 0x0201f800, 0x00106062, 0x5c03e000,
7089 0x5c001000, 0x5c000800, 0x480b8808, 0x48079040,
7090 0x1c01f000, 0x4803c856, 0x59c80840, 0x82040540,
7091 0x00000010, 0x48039040, 0x59c41008, 0x82080500,
7092 0xffffff7f, 0x48038808, 0x4c040000, 0x4c080000,
7093 0x59c40004, 0x82000500, 0x00000003, 0x04020010,
7094 0x59c40004, 0x82000500, 0x0000000c, 0x04000005,
7095 0x4a038804, 0x0000000c, 0x8c000504, 0x0401f025,
7096 0x59c80040, 0x8400056e, 0x48039040, 0x59c80040,
7097 0x8c00052e, 0x040207fe, 0x0401f01e, 0x4a038803,
7098 0x00000008, 0x59c40003, 0x82000500, 0x00000003,
7099 0x040007fd, 0x8c000502, 0x04020006, 0x59c40004,
7100 0x4a038804, 0x0000000c, 0x8c000504, 0x0401f011,
7101 0x59c80040, 0x8400056a, 0x48039040, 0x59c80040,
7102 0x8c00052a, 0x040207fe, 0x59c40005, 0x82000500,
7103 0xc0000000, 0x04000007, 0x59c400a3, 0x84000540,
7104 0x480388a3, 0x4a038805, 0xc0000000, 0x80000580,
7105 0x497b2807, 0x5c001000, 0x5c000800, 0x480b8808,
7106 0x48079040, 0x1c01f000, 0x4933c857, 0x4d900000,
7107 0x4dd00000, 0x4da40000, 0x4d140000, 0x0401fdee,
7108 0x4df00000, 0x0401fa6f, 0x59900004, 0x800001c0,
7109 0x04000011, 0x81300580, 0x0402000f, 0x59300004,
7110 0x84000520, 0x48026004, 0x0401ff51, 0x04020009,
7111 0x5c03e000, 0x04000dd6, 0x80000580, 0x5c022800,
7112 0x5c034800, 0x5c03a000, 0x5c032000, 0x1c01f000,
7113 0x0401fd0e, 0x42027000, 0x00000049, 0x59300004,
7114 0x84000520, 0x48026004, 0x8c00050c, 0x02020800,
7115 0x000207a1, 0x5c03e000, 0x04000dc5, 0x82000540,
7116 0x00000001, 0x5c022800, 0x5c034800, 0x5c03a000,
7117 0x5c032000, 0x1c01f000, 0x4933c857, 0x0401fdc6,
7118 0x4df00000, 0x598c000d, 0x80026540, 0x04000012,
7119 0x59300004, 0x84000520, 0x48026004, 0x0401ff8a,
7120 0x04000017, 0x0401fd26, 0x42027000, 0x00000013,
7121 0x59300004, 0x8c00050c, 0x02020800, 0x000207a1,
7122 0x5c03e000, 0x04000daa, 0x82000540, 0x00000001,
7123 0x1c01f000, 0x836c1580, 0x00000001, 0x040007f9,
7124 0x836c1580, 0x00000004, 0x040007f6, 0x42001000,
7125 0x00104148, 0x0201f800, 0x00105f90, 0x5c03e000,
7126 0x04000d9b, 0x80000580, 0x1c01f000, 0x4d300000,
7127 0x4d180000, 0x4d3c0000, 0x0401fd9f, 0x4df00000,
7128 0x4a0378e4, 0x0000000f, 0x0401f9ff, 0x417a3000,
7129 0x59926004, 0x813261c0, 0x04000010, 0x417a7800,
7130 0x0201f800, 0x001048d9, 0x0400000a, 0x59300c06,
7131 0x82040580, 0x00000003, 0x04000004, 0x82040580,
7132 0x00000006, 0x04020003, 0x42027800, 0x00000002,
7133 0x0201f800, 0x00108be3, 0x811a3000, 0x83180480,
7134 0x00000005, 0x040017eb, 0x42000800, 0x00000040,
7135 0x0201f800, 0x00101345, 0x4a0378e4, 0x0000000a,
7136 0x5c03e000, 0x04000d72, 0x5c027800, 0x5c023000,
7137 0x5c026000, 0x1c01f000, 0x4803c856, 0x4d300000,
7138 0x0401fd75, 0x4df00000, 0x59c80840, 0x82040540,
7139 0x00000010, 0x48039040, 0x59c41008, 0x82080500,
7140 0xffffff7f, 0x48038808, 0x4c040000, 0x4c080000,
7141 0x42001000, 0x00000003, 0x0401f9c2, 0x598e600d,
7142 0x813261c0, 0x04020f9d, 0x040009c7, 0x497b2807,
7143 0x0401f80a, 0x5c001000, 0x5c000800, 0x480b8808,
7144 0x84040d74, 0x48079040, 0x5c03e000, 0x04000d50,
7145 0x5c026000, 0x1c01f000, 0x4d380000, 0x4d180000,
7146 0x4d300000, 0x4d900000, 0x4dd00000, 0x4da40000,
7147 0x4d140000, 0x59c41004, 0x480bc857, 0x82080500,
7148 0x00003ff0, 0x04000025, 0x417a3000, 0x4c080000,
7149 0x0201f800, 0x00106062, 0x5c001000, 0x82080500,
7150 0x00000210, 0x04020004, 0x811a3000, 0x80081102,
7151 0x0401f7f7, 0x0401f9c3, 0x59926004, 0x4933c857,
7152 0x813261c0, 0x04020005, 0x59c400a3, 0x8c00051a,
7153 0x02000800, 0x001005d8, 0x0401fea5, 0x04000009,
7154 0x0401fc6a, 0x42027000, 0x00000049, 0x59300004,
7155 0x8c00050c, 0x02020800, 0x000207a1, 0x0401f007,
7156 0x42027000, 0x0000004a, 0x4a026203, 0x00000003,
7157 0x0201f800, 0x000207a1, 0x5c022800, 0x5c034800,
7158 0x5c03a000, 0x5c032000, 0x5c026000, 0x5c023000,
7159 0x5c027000, 0x1c01f000, 0x4d300000, 0x4d180000,
7160 0x4d900000, 0x0401fd1c, 0x42001000, 0x00000000,
7161 0x598c0000, 0x82000580, 0x00000005, 0x04000971,
7162 0x417a3000, 0x811b20c8, 0x83932400, 0x0000bf32,
7163 0x59900001, 0x82000580, 0x00000001, 0x0402000d,
7164 0x42000800, 0x000007d0, 0x59926004, 0x59300011,
7165 0x82000500, 0xfff00000, 0x80000540, 0x04000003,
7166 0x42000800, 0x00001b58, 0x0201f800, 0x00106054,
7167 0x811a3000, 0x83180480, 0x00000005, 0x040017ea,
7168 0x59c81040, 0x84081534, 0x480b9040, 0x0401fcf0,
7169 0x5c032000, 0x5c023000, 0x5c026000, 0x1c01f000,
7170 0x4933c857, 0x4d900000, 0x4dd00000, 0x4da40000,
7171 0x4d140000, 0x4d380000, 0x0401fcef, 0x4df00000,
7172 0x59300004, 0x8c00053e, 0x04020007, 0x8c000520,
7173 0x04000025, 0x0201f800, 0x00106b6c, 0x04000022,
7174 0x0401f02a, 0x598c000d, 0x81300580, 0x04000011,
7175 0x0201f800, 0x00108cd6, 0x04020024, 0x0401f918,
7176 0x04000022, 0x48038804, 0x0401f95e, 0x0201f800,
7177 0x0010107a, 0x0401fc0d, 0x42027000, 0x00000049,
7178 0x59300004, 0x8c00050c, 0x0402000d, 0x0401f00e,
7179 0x59c40004, 0x8c000504, 0x04000014, 0x4a038804,
7180 0x00000004, 0x0401fc36, 0x42027000, 0x00000013,
7181 0x59300004, 0x8c00050c, 0x04000003, 0x0201f800,
7182 0x000207a1, 0x5c03e000, 0x04000cb9, 0x5c027000,
7183 0x5c022800, 0x5c034800, 0x5c03a000, 0x5c032000,
7184 0x80000580, 0x1c01f000, 0x5c03e000, 0x04000cb0,
7185 0x5c027000, 0x5c022800, 0x5c034800, 0x5c03a000,
7186 0x5c032000, 0x82000540, 0x00000001, 0x1c01f000,
7187 0x497b2807, 0x0401fcb0, 0x59c400af, 0x800001c0,
7188 0x04020004, 0x0401fca2, 0x0201f000, 0x001014fb,
7189 0x598c000f, 0x82001480, 0x00000002, 0x04021007,
7190 0x80000000, 0x4803180f, 0x80000580, 0x0201f800,
7191 0x0010604d, 0x0400000e, 0x0401fed8, 0x0402000c,
7192 0x0401fdd4, 0x0400000a, 0x0201f800, 0x0010a9c7,
7193 0x0401f916, 0x4d380000, 0x42027000, 0x00000014,
7194 0x0201f800, 0x000207a1, 0x5c027000, 0x0401fc88,
7195 0x0201f000, 0x001014fb, 0x4d900000, 0x4dd00000,
7196 0x4da40000, 0x4d140000, 0x4d300000, 0x0201f800,
7197 0x00106062, 0x0401fc88, 0x59c400af, 0x800001c0,
7198 0x04000027, 0x0401f907, 0x59926004, 0x4933c857,
7199 0x59300004, 0x8c000516, 0x0400000b, 0x0401fe8b,
7200 0x0402001f, 0x0201f800, 0x00106b8a, 0x0401fc70,
7201 0x42000800, 0x80000804, 0x0201f800, 0x00106721,
7202 0x0401f017, 0x42001800, 0x00007530, 0x0401f8c1,
7203 0x04020004, 0x0201f800, 0x00106052, 0x0401f010,
7204 0x0401fe7a, 0x0402000e, 0x0201f800, 0x0010a9c7,
7205 0x59300004, 0x8c00050c, 0x04020003, 0x4a026203,
7206 0x00000003, 0x4d380000, 0x42027000, 0x0000004a,
7207 0x0201f800, 0x000207a1, 0x5c027000, 0x0401fc54,
7208 0x5c026000, 0x5c022800, 0x5c034800, 0x5c03a000,
7209 0x5c032000, 0x0201f000, 0x001014fb, 0x4d900000,
7210 0x4dd00000, 0x4da40000, 0x4d140000, 0x4d300000,
7211 0x4d2c0000, 0x0401fc50, 0x0401f8d2, 0x59926004,
7212 0x4933c857, 0x0401f880, 0x04000016, 0x0201f800,
7213 0x00106062, 0x813261c0, 0x04000034, 0x59325808,
7214 0x812e59c0, 0x02000800, 0x001005d8, 0x0201f800,
7215 0x0010513b, 0x0402001d, 0x592c0208, 0x84000550,
7216 0x48025a08, 0x0201f800, 0x00105258, 0x04020027,
7217 0x592c0208, 0x84000510, 0x48025a08, 0x0401f023,
7218 0x0201f800, 0x00106052, 0x0401f020, 0x0201f800,
7219 0x0010a9c7, 0x0401fd9e, 0x592c0208, 0x84000550,
7220 0x48025a08, 0x4d380000, 0x42027000, 0x0000004a,
7221 0x4a026203, 0x00000003, 0x0201f800, 0x000207a1,
7222 0x5c027000, 0x0401f011, 0x59900006, 0x82000500,
7223 0xffff0000, 0x040207ee, 0x59c408af, 0x82040480,
7224 0x000003e8, 0x040217ea, 0x59900006, 0x82000400,
7225 0x00010000, 0x48032006, 0x0201f800, 0x00106052,
7226 0x0201f800, 0x0010411d, 0x5c025800, 0x5c026000,
7227 0x5c022800, 0x5c034800, 0x5c03a000, 0x5c032000,
7228 0x0401f403, 0x4d300000, 0x4d2c0000, 0x0401fc0a,
7229 0x598e600d, 0x4933c857, 0x59c41004, 0x8c081500,
7230 0x04000007, 0x0201f800, 0x0010513b, 0x04020007,
7231 0x0201f800, 0x00105258, 0x0402002f, 0x0201f800,
7232 0x0010604d, 0x0401f02c, 0x598c000f, 0x80000540,
7233 0x04020011, 0x59c408af, 0x82040480, 0x000003e8,
7234 0x0402100d, 0x598c080f, 0x80040800, 0x4807180f,
7235 0x0201f800, 0x0010604d, 0x42000000, 0x0010b852,
7236 0x0201f800, 0x0010aa47, 0x0201f800, 0x0010411d,
7237 0x0401f019, 0x0401fdb4, 0x813261c0, 0x04020003,
7238 0x0401f849, 0x0401f014, 0x0201f800, 0x0010a9c7,
7239 0x59300406, 0x82000580, 0x00000003, 0x04020007,
7240 0x59325808, 0x812e59c0, 0x04000004, 0x592c0208,
7241 0x84000550, 0x48025a08, 0x0401f854, 0x4d380000,
7242 0x42027000, 0x00000014, 0x0201f800, 0x000207a1,
7243 0x5c027000, 0x5c025800, 0x5c026000, 0x0201f000,
7244 0x00106c4b, 0x59c40804, 0x83180400, 0x00107095,
7245 0x50000000, 0x80040500, 0x1c01f000, 0x59c40804,
7246 0x83180400, 0x0010709a, 0x50000000, 0x80040500,
7247 0x1c01f000, 0x00000210, 0x00000420, 0x00000840,
7248 0x00001080, 0x00002100, 0x00004000, 0x00008000,
7249 0x00010000, 0x00020000, 0x00040000, 0x00080000,
7250 0x00100000, 0x00200000, 0x00400000, 0x00800000,
7251 0x59900806, 0x80040120, 0x800c0480, 0x04021004,
7252 0x82000540, 0x00000001, 0x0401f005, 0x82040c00,
7253 0x00010000, 0x48072006, 0x80000580, 0x1c01f000,
7254 0x480bc857, 0x0201f800, 0x00106c55, 0x4df00000,
7255 0x480b1800, 0x5c03e000, 0x02000800, 0x00106c4b,
7256 0x1c01f000, 0x4803c856, 0x0201f800, 0x00106c55,
7257 0x4df00000, 0x497b180d, 0x497b1803, 0x497b180e,
7258 0x497b180f, 0x497b1810, 0x598c0000, 0x82000580,
7259 0x00000003, 0x04000009, 0x836c0580, 0x00000002,
7260 0x04020004, 0x4a031800, 0x00000005, 0x0401f003,
7261 0x4a031800, 0x00000000, 0x5c03e000, 0x02000800,
7262 0x00106c4b, 0x1c01f000, 0x59300004, 0x8c00050c,
7263 0x04020003, 0x4a026203, 0x00000001, 0x1c01f000,
7264 0x83180480, 0x00000005, 0x02021800, 0x001005d8,
7265 0x491bc857, 0x811b20c8, 0x83932400, 0x0000bf32,
7266 0x811ba0ca, 0x83d3a400, 0x00007600, 0x83180400,
7267 0x001070ea, 0x50034800, 0x811a28c2, 0x83162c00,
7268 0x00006100, 0x1c01f000, 0x0010b75b, 0x0010b772,
7269 0x0010b789, 0x0010b7a0, 0x0010b7b7, 0x4933c857,
7270 0x59300406, 0x82000c80, 0x00000012, 0x04021016,
7271 0x4803c857, 0x04011000, 0x0c01f001, 0x00107109,
7272 0x00107198, 0x001074d1, 0x00107556, 0x00107198,
7273 0x001074d1, 0x00107556, 0x00107109, 0x00107198,
7274 0x00107109, 0x00107109, 0x00107109, 0x00107109,
7275 0x00107109, 0x00107109, 0x00107109, 0x0010710f,
7276 0x0010710f, 0x0201f800, 0x00106c55, 0x0201f800,
7277 0x00106bbf, 0x0201f000, 0x00106c4b, 0x42001000,
7278 0x0010b7f6, 0x50081000, 0x4930100c, 0x58080002,
7279 0x82000580, 0x00000100, 0x04020032, 0x59325808,
7280 0x812e59c0, 0x02000800, 0x001005d8, 0x59326809,
7281 0x813669c0, 0x04000019, 0x592c040b, 0x82000500,
7282 0x0000e000, 0x04000003, 0x0401fba8, 0x0401f002,
7283 0x0401fb98, 0x42001000, 0x0010b7f6, 0x50081000,
7284 0x4930100b, 0x492c100a, 0x82d00400, 0x00000006,
7285 0x48001003, 0x592c000d, 0x80000104, 0x48001004,
7286 0x592c000e, 0x48001007, 0x592c000f, 0x48001008,
7287 0x0201f000, 0x00100858, 0x42026800, 0x0010be0d,
7288 0x592c080a, 0x48066802, 0x82040500, 0x00ffff00,
7289 0x04000007, 0x497a6a12, 0x59a81010, 0x82081500,
7290 0x00ffff00, 0x80080580, 0x040207dc, 0x82040d00,
7291 0x000000ff, 0x800408d0, 0x48066a12, 0x0401f7d7,
7292 0x1c01f000, 0x4d2c0000, 0x4d300000, 0x4c580000,
7293 0x4c540000, 0x4c500000, 0x5832580a, 0x812e59c0,
7294 0x02000800, 0x001005d8, 0x58300002, 0x4a006002,
7295 0x00000100, 0x82000580, 0x00000100, 0x0402001c,
7296 0x5830000b, 0x5832600c, 0x81300580, 0x04020010,
7297 0x0401f828, 0x04020010, 0x592c080d, 0x80040904,
7298 0x4004b000, 0x4200a000, 0x0010b54b, 0x4050a800,
7299 0x0201f800, 0x0010ab28, 0x42001000, 0x0000dc00,
7300 0x0201f800, 0x001078bc, 0x0401f003, 0x0401f819,
7301 0x04000fa3, 0x5c00a000, 0x5c00a800, 0x5c00b000,
7302 0x5c026000, 0x5c025800, 0x1c01f000, 0x5830000b,
7303 0x5832600c, 0x81300580, 0x040207f5, 0x0401f80d,
7304 0x040207f5, 0x0201f800, 0x001068d3, 0x02020800,
7305 0x001005d8, 0x4a025a06, 0x00000002, 0x0201f800,
7306 0x000202da, 0x0201f800, 0x00107911, 0x0401f7ea,
7307 0x0201f800, 0x00106c55, 0x4df00000, 0x598c000d,
7308 0x81300580, 0x04020009, 0x598c0005, 0x81300580,
7309 0x04020006, 0x5c03e000, 0x02000800, 0x00106c4b,
7310 0x80000580, 0x1c01f000, 0x5c03e000, 0x02000800,
7311 0x00106c4b, 0x82000540, 0x00000001, 0x1c01f000,
7312 0x59300403, 0x82000c80, 0x00000056, 0x02021800,
7313 0x001005d8, 0x4803c857, 0x0c01f001, 0x00107302,
7314 0x0010731d, 0x0010732e, 0x00107431, 0x001073f1,
7315 0x001073f5, 0x00107406, 0x0010741a, 0x0010740f,
7316 0x0010741a, 0x00107455, 0x0010741a, 0x00107497,
7317 0x0010741a, 0x001074a5, 0x0010741a, 0x0010740f,
7318 0x0010741a, 0x001074a9, 0x001071f5, 0x001071f5,
7319 0x001071f5, 0x001071f5, 0x001071f5, 0x001071f5,
7320 0x001071f5, 0x001071f5, 0x001071f5, 0x001071f5,
7321 0x001071f5, 0x00107574, 0x00107593, 0x0010759d,
7322 0x001071f5, 0x001075b3, 0x00107406, 0x001071f5,
7323 0x00107406, 0x0010741a, 0x001071f5, 0x0010732e,
7324 0x00107431, 0x001071f5, 0x00107603, 0x0010741a,
7325 0x001071f5, 0x00107613, 0x0010741a, 0x001071f5,
7326 0x0010740f, 0x001072f3, 0x001071f7, 0x001071f5,
7327 0x0010762a, 0x0010765d, 0x001076d7, 0x001071f5,
7328 0x001076e7, 0x00107404, 0x001076da, 0x001071f5,
7329 0x001075bf, 0x00107700, 0x001071f5, 0x00107735,
7330 0x00107788, 0x001071f5, 0x0010720c, 0x00107265,
7331 0x00107272, 0x001071f5, 0x00107406, 0x001071f5,
7332 0x001072b9, 0x001072c4, 0x001071f5, 0x001071f5,
7333 0x00107220, 0x00107245, 0x001077c7, 0x00107808,
7334 0x0010782e, 0x001071f5, 0x001071f5, 0x001071f5,
7335 0x001077fc, 0x0201f800, 0x001005d8, 0x0401fac5,
7336 0x59325808, 0x592c0009, 0x4801a006, 0x592c000a,
7337 0x4801a007, 0x592c000b, 0x4801a008, 0x592c000c,
7338 0x4801a009, 0x592c000d, 0x4801a00a, 0x4979a00b,
7339 0x592c0809, 0x82040d00, 0x00000fff, 0x80040904,
7340 0x42001000, 0x0000dc00, 0x0201f000, 0x001078bc,
7341 0x4a026202, 0x0000ffff, 0x0401faae, 0x4d2c0000,
7342 0x4a01a006, 0x05000000, 0x59325808, 0x592c0009,
7343 0x4801a007, 0x592c000a, 0x4801a008, 0x592c000b,
7344 0x4801a009, 0x42000800, 0x00000004, 0x42001000,
7345 0x0000dc00, 0x5c025800, 0x0201f000, 0x001078bc,
7346 0x4c580000, 0x4c500000, 0x4c540000, 0x4d2c0000,
7347 0x0401fa98, 0x59325808, 0x5930040b, 0x800000c2,
7348 0x4200a800, 0x0010b54b, 0x592cb205, 0x832ca400,
7349 0x00000006, 0x0201f800, 0x0010ab17, 0x40580000,
7350 0x8054ac00, 0x592c0001, 0x80000540, 0x04000003,
7351 0x40025800, 0x0401f7f5, 0x4200a000, 0x0010b54b,
7352 0x4050a800, 0x5930b40b, 0x0201f800, 0x0010ab28,
7353 0x59300c0b, 0x42001000, 0x0000dc00, 0x5c025800,
7354 0x5c00a800, 0x5c00b000, 0x5c00a000, 0x0201f000,
7355 0x001078bc, 0x4c580000, 0x4c500000, 0x4c540000,
7356 0x4d2c0000, 0x42034800, 0x0010b544, 0x0401fa7f,
7357 0x59325808, 0x4a025805, 0x02000000, 0x592c0802,
7358 0x82d0ac00, 0x00000006, 0x592cb011, 0x832ca400,
7359 0x00000005, 0x0201f800, 0x0010ab17, 0x40580000,
7360 0x8054ac00, 0x592e5801, 0x41780000, 0x812e5d40,
7361 0x040207f6, 0x42001000, 0x0000dc00, 0x5c025800,
7362 0x5c00a800, 0x5c00b000, 0x5c00a000, 0x0201f000,
7363 0x001078bc, 0x0401fa57, 0x4a01a006, 0x78000000,
7364 0x5930001c, 0x840001c0, 0x4801a407, 0x4979a207,
7365 0x42000800, 0x00000002, 0x42001000, 0x0000dc00,
7366 0x0201f000, 0x001078bc, 0x4c580000, 0x4c540000,
7367 0x4c500000, 0x0401fa55, 0x4a01a006, 0x02000000,
7368 0x59a80002, 0x4801a008, 0x59a80003, 0x4801a009,
7369 0x59a80000, 0x4801a00a, 0x59a80001, 0x4801a00b,
7370 0x5930001c, 0x82000d80, 0x0000e000, 0x04000016,
7371 0x82000d80, 0x0000df00, 0x04000006, 0x4a01a407,
7372 0x00000010, 0x42000800, 0x00000006, 0x0401f027,
7373 0x4a03c840, 0x0010b4eb, 0x4a03c842, 0x0000000d,
7374 0x42001800, 0x0010b4eb, 0x0201f800, 0x001007af,
7375 0x42000000, 0x0000df00, 0x4200a000, 0x0010b4eb,
7376 0x0401f00d, 0x4a03c840, 0x0010b4f8, 0x4a03c842,
7377 0x0000000d, 0x42001800, 0x0010b4f8, 0x0201f800,
7378 0x001007af, 0x42000000, 0x0000e000, 0x4200a000,
7379 0x0010b4f8, 0x82000540, 0x00000010, 0x4801a407,
7380 0x4a01a207, 0x00000034, 0x4200b000, 0x0000000d,
7381 0x82d0ac00, 0x0000000c, 0x0201f800, 0x0010ab17,
7382 0x42000800, 0x00000013, 0x42001000, 0x0000dc00,
7383 0x5c00a000, 0x5c00a800, 0x5c00b000, 0x0201f000,
7384 0x001078bc, 0x0401fa03, 0x4a01a006, 0x63000028,
7385 0x5930001c, 0x4801a007, 0x42000800, 0x00000002,
7386 0x42001000, 0x0000dc00, 0x0201f000, 0x001078bc,
7387 0x0401fa06, 0x41780000, 0x41780800, 0x42002000,
7388 0x00080000, 0x0c01f81b, 0x80000000, 0x80040800,
7389 0x42001000, 0x0000000c, 0x59841802, 0x8c0c1d00,
7390 0x04020008, 0x42002000, 0x00050000, 0x0c01f811,
7391 0x80000000, 0x80040800, 0x82081400, 0x00000004,
7392 0x82080540, 0x02000000, 0x4801a006, 0x800408e0,
7393 0x5930001c, 0x80040540, 0x4801a007, 0x80080904,
7394 0x42001000, 0x0000dc00, 0x0201f000, 0x001078bc,
7395 0x001072e9, 0x001072eb, 0x001072ed, 0x001072ef,
7396 0x001072f1, 0x4811a008, 0x1c01f000, 0x4811a009,
7397 0x1c01f000, 0x4811a00a, 0x1c01f000, 0x4811a00b,
7398 0x1c01f000, 0x4811a00c, 0x1c01f000, 0x4a026009,
7399 0x0010be0d, 0x59a80010, 0x82000500, 0x000000ff,
7400 0x800000d0, 0x42026800, 0x0010be0d, 0x48026a12,
7401 0x0401fa3b, 0x41780800, 0x42001000, 0x00005c00,
7402 0x0201f000, 0x001078bc, 0x0401f9ba, 0x4a01a006,
7403 0x52000000, 0x4979a007, 0x599c0017, 0x8c000500,
7404 0x04000005, 0x599c0402, 0x0201f800, 0x001015da,
7405 0x4805a007, 0x59a80002, 0x4801a008, 0x59a80003,
7406 0x4801a009, 0x59a80000, 0x4801a00a, 0x59a80001,
7407 0x4801a00b, 0x59a80010, 0x4801a00c, 0x42000800,
7408 0x00000007, 0x42001000, 0x0000dc00, 0x0201f000,
7409 0x001078bc, 0x4a026202, 0x0000ffff, 0x0401f99d,
7410 0x4a01a006, 0x05000000, 0x59a80010, 0x4801a007,
7411 0x59a80002, 0x59a80803, 0x4801a008, 0x4805a009,
7412 0x42000800, 0x00000004, 0x42001000, 0x0000dc00,
7413 0x0201f000, 0x001078bc, 0x4a026202, 0x0000ffff,
7414 0x0401f98c, 0x4d3c0000, 0x417a7800, 0x0201f800,
7415 0x001048f6, 0x5c027800, 0x4a01a006, 0x03000000,
7416 0x59340403, 0x82000580, 0x000007fe, 0x0402006e,
7417 0x4a01a006, 0x04000000, 0x81a40800, 0x4a000800,
7418 0x22fffffe, 0x5934000a, 0x84000500, 0x4802680a,
7419 0x59c41002, 0x8408150c, 0x480b8802, 0x59a80026,
7420 0x8c000508, 0x04000010, 0x59a8002a, 0x4801a007,
7421 0x59a8002b, 0x82000500, 0xffff2000, 0x599c0818,
7422 0x8c040d16, 0x04000002, 0x8400056a, 0x4801a008,
7423 0x4a01a009, 0x00002710, 0x59a8002d, 0x4801a00a,
7424 0x0401f039, 0x59a8002a, 0x4801a007, 0x0201f800,
7425 0x0010513b, 0x04020009, 0x497b8880, 0x82000500,
7426 0x0000ffff, 0x4c000000, 0x0201f800, 0x00101606,
7427 0x5c000000, 0x48038880, 0x59a8002b, 0x0201f800,
7428 0x0010513b, 0x04020004, 0x82000500, 0x37ffffff,
7429 0x0401f003, 0x82000500, 0x3fffffff, 0x599c0818,
7430 0x8c040d16, 0x04000002, 0x8400056a, 0x59a80805,
7431 0x8c040d10, 0x04000019, 0x59300c03, 0x82041580,
7432 0x00000051, 0x04000015, 0x82041580, 0x00000031,
7433 0x04000012, 0x4c580000, 0x4c500000, 0x4c540000,
7434 0x4200b000, 0x00000004, 0x4200a000, 0x0010b8fa,
7435 0x82d0ac00, 0x0000001f, 0x4c000000, 0x0201f800,
7436 0x0010ab17, 0x5c000000, 0x5c00a800, 0x5c00a000,
7437 0x5c00b000, 0x8400057a, 0x4801a008, 0x4979a009,
7438 0x4979a00a, 0x59a80002, 0x59a80803, 0x4801a00b,
7439 0x4805a00c, 0x59a80000, 0x59a80801, 0x4801a00d,
7440 0x4805a00e, 0x4979a00f, 0x4979a010, 0x4979a011,
7441 0x4979a012, 0x4979a013, 0x4979a014, 0x4979a015,
7442 0x4979a016, 0x59a8002e, 0x84000576, 0x4801a017,
7443 0x59a8002f, 0x4801a018, 0x4979a019, 0x4979a01a,
7444 0x0401f043, 0x59a80026, 0x8c000508, 0x0400000d,
7445 0x59a8002a, 0x82000500, 0x0000ffff, 0x59c40880,
7446 0x80040d80, 0x04000007, 0x497b8880, 0x4c000000,
7447 0x0201f800, 0x00101606, 0x5c000000, 0x48038880,
7448 0x59a8002a, 0x4801a007, 0x4c640000, 0x4d2c0000,
7449 0x59a8c82b, 0x0201f800, 0x00109037, 0x0400000d,
7450 0x0201f800, 0x00109597, 0x0402000a, 0x592c0207,
7451 0x8c00050e, 0x04000007, 0x8264cd00, 0x0000ffff,
7452 0x592c0009, 0x82000500, 0xffff0000, 0x8064cd40,
7453 0x4865a008, 0x5c025800, 0x5c00c800, 0x59a8002c,
7454 0x4801a009, 0x59a8002d, 0x4801a00a, 0x59a80002,
7455 0x59a80803, 0x4801a00b, 0x4805a00c, 0x59a80000,
7456 0x59a80801, 0x4801a00d, 0x4805a00e, 0x4979a00f,
7457 0x4979a010, 0x4979a011, 0x4979a012, 0x4979a013,
7458 0x4979a014, 0x4979a015, 0x4979a016, 0x59a8002e,
7459 0x4801a017, 0x59a8002f, 0x4801a018, 0x59a80030,
7460 0x4801a019, 0x59a80031, 0x4801a01a, 0x42000800,
7461 0x0000001d, 0x42001000, 0x0000dc00, 0x0201f000,
7462 0x001078bc, 0x0401f8cb, 0x4a01a006, 0x50000000,
7463 0x0401f7b5, 0x0401f8c7, 0x4a01a406, 0x21000010,
7464 0x4a01a206, 0x00000014, 0x4979a007, 0x4979a008,
7465 0x4979a009, 0x4979a00a, 0x42000800, 0x00000005,
7466 0x42001000, 0x0000dc00, 0x0201f000, 0x001078bc,
7467 0x0401f8bf, 0x0401f002, 0x0401f8c4, 0x4a01a006,
7468 0x02000000, 0x42000800, 0x00000001, 0x42001000,
7469 0x0000dc00, 0x0201f000, 0x001078bc, 0x0401f8bb,
7470 0x4a01a006, 0x02000000, 0x59300403, 0x82000580,
7471 0x00000031, 0x04020794, 0x81a40800, 0x4a000801,
7472 0x00fffffe, 0x0401f72b, 0x0401f8b0, 0x4a01a006,
7473 0x01000000, 0x5930041a, 0x80000540, 0x04000003,
7474 0x4801a407, 0x0401f003, 0x4a01a407, 0x00000003,
7475 0x5930021a, 0x80000540, 0x04000003, 0x4801a207,
7476 0x0401f003, 0x4a01a207, 0x00002a00, 0x42000800,
7477 0x00000002, 0x42001000, 0x0000dc00, 0x0201f000,
7478 0x001078bc, 0x4a026202, 0x0000ffff, 0x0401f889,
7479 0x4a01a406, 0x00002010, 0x4a01a206, 0x00000014,
7480 0x4a01a407, 0x00000800, 0x4a01a207, 0x00002000,
7481 0x80000580, 0x599c0817, 0x8c040d0a, 0x04020003,
7482 0x82000540, 0x00000020, 0x8c040d08, 0x04000003,
7483 0x82000540, 0x00000010, 0x82000540, 0x00000002,
7484 0x5934080a, 0x8c040d14, 0x04000005, 0x82040d00,
7485 0x00000380, 0x80040540, 0x0401f006, 0x599c0818,
7486 0x8c040d18, 0x04000003, 0x82000540, 0x00000380,
7487 0x0401f03c, 0x0401f875, 0x4a01a406, 0x00000210,
7488 0x4a01a206, 0x00000014, 0x4a01a407, 0x00000800,
7489 0x5934000a, 0x8c000516, 0x04000014, 0x59340c05,
7490 0x82040500, 0x00000030, 0x04000013, 0x59340a05,
7491 0x82040500, 0x0000c000, 0x04020009, 0x8c040d1a,
7492 0x04000004, 0x4a01a207, 0x00002100, 0x0401f00c,
7493 0x4a01a207, 0x00000100, 0x0401f009, 0x4a01a207,
7494 0x00000400, 0x0401f006, 0x4a01a207, 0x00000700,
7495 0x0401f003, 0x4a01a207, 0x00000800, 0x80000580,
7496 0x599c0817, 0x8c040d0a, 0x04020003, 0x82000540,
7497 0x00000020, 0x8c040d08, 0x04000003, 0x82000540,
7498 0x00000010, 0x82000540, 0x00000002, 0x59340a00,
7499 0x8c040d0e, 0x0400000b, 0x84000550, 0x599c1017,
7500 0x8c08150a, 0x04020004, 0x8c040d0a, 0x04000002,
7501 0x8400054e, 0x8c040d1c, 0x04000002, 0x84000552,
7502 0x4801a20a, 0x42000800, 0x00000005, 0x42001000,
7503 0x0000dc00, 0x0201f000, 0x001078bc, 0x0401f833,
7504 0x4a01a006, 0x02100014, 0x4a01a007, 0x01000000,
7505 0x4979a008, 0x4979a009, 0x4979a00a, 0x42000800,
7506 0x00000005, 0x42001000, 0x0000dc00, 0x0201f000,
7507 0x001078bc, 0x0401f825, 0x4a01a006, 0x02000000,
7508 0x0401f65d, 0x4933c857, 0x0401f820, 0x4a01a006,
7509 0x01000000, 0x4a01a407, 0x0000000b, 0x42000800,
7510 0x00000002, 0x42001000, 0x0000dc00, 0x0201f000,
7511 0x001078bc, 0x42005000, 0x32000000, 0x42006000,
7512 0x08290000, 0x41786800, 0x41787800, 0x0401f3df,
7513 0x42005000, 0x22000000, 0x42006000, 0x01290000,
7514 0x41786800, 0x41787800, 0x0401f3d8, 0x42005000,
7515 0x33000000, 0x42006000, 0x08980000, 0x41786800,
7516 0x41787800, 0x0401f3d1, 0x42005000, 0x23000000,
7517 0x42006000, 0x01980000, 0x41786800, 0x41787800,
7518 0x0401f3ca, 0x59300403, 0x82000c80, 0x00000085,
7519 0x02001800, 0x001005d8, 0x82000c80, 0x00000093,
7520 0x02021800, 0x001005d8, 0x82000480, 0x00000085,
7521 0x0c01f001, 0x001074eb, 0x001074ed, 0x001074fb,
7522 0x001074eb, 0x001074eb, 0x001074eb, 0x001074eb,
7523 0x001074eb, 0x001074eb, 0x001074eb, 0x001074eb,
7524 0x001074eb, 0x001074eb, 0x00107506, 0x0201f800,
7525 0x001005d8, 0x4933c857, 0x0401f850, 0x59300402,
7526 0x4801a407, 0x5930001c, 0x4801a207, 0x4979a408,
7527 0x4a01a208, 0x0000ffff, 0x42000800, 0x00000003,
7528 0x42001000, 0x0000dc00, 0x0401f3c2, 0x4933c857,
7529 0x0401f84e, 0x4a01a406, 0x00000003, 0x4a01a206,
7530 0x00000300, 0x42000800, 0x00000001, 0x42001000,
7531 0x0000dc00, 0x0401f3b7, 0x4d2c0000, 0x59325808,
7532 0x4933c857, 0x492fc857, 0x812e59c0, 0x02000800,
7533 0x001005d8, 0x59340a12, 0x82040d00, 0x0000ff00,
7534 0x592c000a, 0x82000500, 0x000000ff, 0x900001c0,
7535 0x80040540, 0x82000540, 0x00000011, 0x44034800,
7536 0x81a5a000, 0x42001000, 0x00000009, 0x42000800,
7537 0x00000003, 0x592c0009, 0x82000500, 0xff000000,
7538 0x82001d80, 0x84000000, 0x04000009, 0x82001d80,
7539 0x85000000, 0x02020800, 0x001005d8, 0x42001000,
7540 0x00000007, 0x42000800, 0x00000001, 0x832c1c00,
7541 0x00000009, 0x500c0000, 0x4401a000, 0x800c1800,
7542 0x80d1a000, 0x80081040, 0x040207fb, 0x42001000,
7543 0x0000dc00, 0x5c025800, 0x0401f386, 0x42005000,
7544 0x81000000, 0x42006000, 0x00090000, 0x41786800,
7545 0x41787800, 0x0401f35d, 0x42005000, 0x84000000,
7546 0x42006000, 0x00990000, 0x59300406, 0x82000580,
7547 0x00000005, 0x04000002, 0x8430652e, 0x41786800,
7548 0x41787800, 0x0401f351, 0x42005000, 0x85000000,
7549 0x42006000, 0x00990000, 0x59300406, 0x82000580,
7550 0x00000005, 0x04000002, 0x8430652e, 0x41786800,
7551 0x41787800, 0x0401f345, 0x59300403, 0x82000c80,
7552 0x00000053, 0x02021800, 0x001005d8, 0x82000480,
7553 0x0000004b, 0x02001800, 0x001005d8, 0x59326809,
7554 0x59368c03, 0x4803c857, 0x0c01f001, 0x001075da,
7555 0x001075e2, 0x001075ea, 0x001075f2, 0x0010756b,
7556 0x0010756b, 0x0010756b, 0x001075d2, 0x0201f800,
7557 0x001005d8, 0x42005000, 0x06000000, 0x42006000,
7558 0x08290000, 0x41786800, 0x41787800, 0x0401f327,
7559 0x4933c857, 0x0401ff47, 0x4a01a006, 0x12000000,
7560 0x59300406, 0x82000580, 0x00000004, 0x04020003,
7561 0x59340002, 0x0401f002, 0x59a80010, 0x82000500,
7562 0x00ffffff, 0x4801a007, 0x59300419, 0x4801a408,
7563 0x59300219, 0x4801a208, 0x4979a009, 0x4979a00a,
7564 0x4979a00b, 0x4979a00c, 0x4979a00d, 0x4979a00e,
7565 0x4979a00f, 0x4979a010, 0x42000800, 0x0000000b,
7566 0x42001000, 0x0000dc00, 0x0401f32a, 0x0401ff29,
7567 0x4a01a006, 0x0f000000, 0x5930001c, 0x4801a007,
7568 0x42000800, 0x00000002, 0x42001000, 0x0000dc00,
7569 0x0401f320, 0x0401ff2d, 0x4a01a006, 0x02000000,
7570 0x59c40085, 0x48031004, 0x59880000, 0x4801a007,
7571 0x59880001, 0x4801a008, 0x59880002, 0x4801a009,
7572 0x59880003, 0x4801a00a, 0x59880004, 0x4801a00b,
7573 0x59880005, 0x4801a00c, 0x42000800, 0x00000007,
7574 0x42001000, 0x0000dc00, 0x0401f30a, 0x4a026202,
7575 0x0000ffff, 0x0401ff07, 0x4a01a006, 0x62000000,
7576 0x5930001c, 0x4801a007, 0x42000800, 0x00000002,
7577 0x42001000, 0x0000dc00, 0x0401f2fe, 0x0401fefd,
7578 0x59300808, 0x4c500000, 0x4c540000, 0x4c580000,
7579 0x8204a400, 0x0000000a, 0x5930b01c, 0x82d0ac00,
7580 0x00000006, 0x0201f800, 0x0010ab17, 0x5930081c,
7581 0x42001000, 0x0000dc00, 0x5c00b000, 0x5c00a800,
7582 0x5c00a000, 0x0401f2eb, 0x0401ff9b, 0x59300017,
7583 0x4801a006, 0x59300018, 0x4801a007, 0x4a01a008,
7584 0x00001000, 0x0401f020, 0x0401ff93, 0x59300017,
7585 0x4801a006, 0x59300018, 0x4801a007, 0x4a01a008,
7586 0x00004000, 0x0401f018, 0x0401ff8b, 0x59300017,
7587 0x4801a006, 0x59300018, 0x4801a007, 0x4a01a008,
7588 0x00002000, 0x0401f010, 0x0401ff83, 0x59300017,
7589 0x4801a006, 0x59300018, 0x4801a007, 0x4a01a008,
7590 0x00000400, 0x0401f008, 0x0401ff7b, 0x59300017,
7591 0x4801a006, 0x59300018, 0x4801a007, 0x4a01a008,
7592 0x00000200, 0x4979a009, 0x4979a00a, 0x4979a00b,
7593 0x4979a00c, 0x4979a00d, 0x42000800, 0x00000008,
7594 0x42001000, 0x0000dc00, 0x0401f2ba, 0x0401fec7,
7595 0x4a01a006, 0x02000014, 0x4979a407, 0x4979a207,
7596 0x59a8003a, 0x4801a008, 0x59a8003b, 0x4801a009,
7597 0x4a01a00a, 0x00047878, 0x42000800, 0x00000005,
7598 0x42001000, 0x0000dc00, 0x0401f2aa, 0x0401feb7,
7599 0x4a01a006, 0x02140018, 0x4a01a407, 0x00000800,
7600 0x5930001c, 0x82000d00, 0xff000000, 0x900409c0,
7601 0x4805a207, 0x82000500, 0x00ffffff, 0x4801a00a,
7602 0x4979a408, 0x4979a208, 0x4979a409, 0x4979a209,
7603 0x4979a00b, 0x42000800, 0x00000006, 0x42001000,
7604 0x0000dc00, 0x0401f293, 0x4803c856, 0x4d380000,
7605 0x4d1c0000, 0x42027000, 0x00000035, 0x0201f800,
7606 0x001093ba, 0x0402001e, 0x0401fe8a, 0x4a01a006,
7607 0x13000000, 0x5932381e, 0x591c0019, 0x4801a005,
7608 0x591c0406, 0x82000580, 0x00000003, 0x04000007,
7609 0x59300809, 0x58040002, 0x82000500, 0x00ffffff,
7610 0x4801a007, 0x0401f003, 0x59a80010, 0x4801a007,
7611 0x59300419, 0x4801a408, 0x59300219, 0x4801a208,
7612 0x42000800, 0x00000003, 0x42001000, 0x0000dc00,
7613 0x5c023800, 0x5c027000, 0x0401f26e, 0x0201f800,
7614 0x00106c55, 0x598c000d, 0x81300580, 0x02020800,
7615 0x001005d8, 0x0201f800, 0x00106bbf, 0x0201f800,
7616 0x0002077d, 0x5c023800, 0x5c027000, 0x0201f000,
7617 0x00106c4b, 0x4803c856, 0x4d2c0000, 0x4d1c0000,
7618 0x5932381e, 0x811e39c0, 0x02000800, 0x001005d8,
7619 0x591c0c06, 0x82040580, 0x00000006, 0x0400000d,
7620 0x82040580, 0x00000003, 0x04000036, 0x4a026403,
7621 0x00000037, 0x4a02641a, 0x00000003, 0x4a02621a,
7622 0x00001700, 0x5c023800, 0x5c025800, 0x0401f064,
7623 0x0401f84b, 0x42001000, 0x40000000, 0x591c0203,
7624 0x591c0804, 0x8c040d3e, 0x04020023, 0x82000c80,
7625 0x0000000e, 0x0c001003, 0x0201f800, 0x001005d8,
7626 0x00107691, 0x0010769d, 0x00107693, 0x0010769d,
7627 0x00107699, 0x00107691, 0x00107691, 0x0010769d,
7628 0x0010769d, 0x00107691, 0x00107691, 0x00107691,
7629 0x00107691, 0x00107691, 0x0010769d, 0x00107691,
7630 0x0010769d, 0x0201f800, 0x001005d8, 0x591c0414,
7631 0x4803c857, 0x8c000518, 0x04000003, 0x8c000512,
7632 0x04000003, 0x80001580, 0x0401f003, 0x42001000,
7633 0x20000000, 0x591c0015, 0x4801a00a, 0x0401f018,
7634 0x0401f81f, 0x591e5808, 0x812e59c0, 0x02000800,
7635 0x001005d8, 0x592c100f, 0x591c0011, 0x80080480,
7636 0x4801a00a, 0x591c0203, 0x591c0804, 0x8c040d3e,
7637 0x04020007, 0x82000d80, 0x00000002, 0x04000007,
7638 0x82000d80, 0x00000004, 0x04000004, 0x42001000,
7639 0x40000000, 0x0401f002, 0x80001580, 0x4809a00b,
7640 0x42000800, 0x00000006, 0x42001000, 0x0000dc00,
7641 0x5c023800, 0x5c025800, 0x0401f1fe, 0x4803c856,
7642 0x0401fe0a, 0x4a01a006, 0x02000000, 0x59300c19,
7643 0x4805a407, 0x59300a19, 0x4805a207, 0x59a81010,
7644 0x59300809, 0x58041802, 0x820c1d00, 0x00ffffff,
7645 0x5930081e, 0x58040406, 0x82000580, 0x00000003,
7646 0x04020004, 0x4809a008, 0x480da009, 0x0401f003,
7647 0x480da008, 0x4809a009, 0x1c01f000, 0x4803c856,
7648 0x0401fdf2, 0x0401f003, 0x4803c856, 0x0401fde8,
7649 0x4a01a006, 0x01000000, 0x5930041a, 0x4801a407,
7650 0x5930021a, 0x4801a207, 0x42000800, 0x00000002,
7651 0x42001000, 0x0000dc00, 0x0401f1d6, 0x4803c856,
7652 0x4d1c0000, 0x0401fdcc, 0x4a01a006, 0x14000000,
7653 0x5932381e, 0x591c0019, 0x4801a005, 0x59300419,
7654 0x4801a407, 0x59300219, 0x4801a207, 0x59300015,
7655 0x4801a008, 0x59300216, 0x82000500, 0x000000ff,
7656 0x840001c0, 0x4801a409, 0x42000800, 0x00000004,
7657 0x42001000, 0x0000dc00, 0x5c023800, 0x0401f1bd,
7658 0x4803c856, 0x0401f80b, 0x5930041a, 0x900001c0,
7659 0x4801a005, 0x0401f9ec, 0x41780800, 0x42001000,
7660 0x00005c00, 0x0401f9b3, 0x0201f000, 0x0010604d,
7661 0x4803c856, 0x59300817, 0x82041c00, 0x00000005,
7662 0x46034800, 0x00000021, 0x58040404, 0x82000500,
7663 0x0000f000, 0x82000580, 0x00003000, 0x04000003,
7664 0x46034800, 0x00000041, 0x81a5a000, 0x580c0001,
7665 0x82000d00, 0x00ffffff, 0x82040d40, 0xc2000000,
7666 0x4805a000, 0x580c0800, 0x82041500, 0x00ffffff,
7667 0x82000500, 0xff000000, 0x80080540, 0x4801a001,
7668 0x580c0002, 0x82000580, 0x00c00000, 0x82000500,
7669 0x00fd0300, 0x4801a002, 0x580c0003, 0x4801a003,
7670 0x580c0404, 0x4801a404, 0x580c0204, 0x4801a204,
7671 0x1c01f000, 0x4803c856, 0x59a80026, 0x82000500,
7672 0x00000028, 0x04020009, 0x59a80026, 0x82000500,
7673 0x00000028, 0x04000003, 0x497a6a12, 0x0401f003,
7674 0x4a026a12, 0x0000ff00, 0x42005000, 0x22000000,
7675 0x42006000, 0x01380000, 0x41786800, 0x41787800,
7676 0x0401f952, 0x59301008, 0x4a01a006, 0x54000000,
7677 0x59a80010, 0x82000500, 0x00ffffff, 0x58080c0a,
7678 0x800408f0, 0x80040540, 0x4801a007, 0x5808000a,
7679 0x82000500, 0xff000000, 0x4801a008, 0x59a80002,
7680 0x4801a009, 0x59a80003, 0x4801a00a, 0x59a80000,
7681 0x4801a00b, 0x59a80001, 0x4801a00c, 0x5808000c,
7682 0x9c0001c0, 0x4801a00d, 0x5808000d, 0x9c0001c0,
7683 0x4801a00e, 0x5808000e, 0x9c0001c0, 0x4801a00f,
7684 0x5808000f, 0x9c0001c0, 0x4801a010, 0x58080010,
7685 0x9c0001c0, 0x4801a011, 0x58080011, 0x9c0001c0,
7686 0x4801a012, 0x58080012, 0x9c0001c0, 0x4801a013,
7687 0x58080013, 0x9c0001c0, 0x4801a014, 0x58080010,
7688 0x9c0001c0, 0x4801a015, 0x58080011, 0x9c0001c0,
7689 0x4801a016, 0x58080012, 0x9c0001c0, 0x4801a017,
7690 0x58080013, 0x9c0001c0, 0x4801a018, 0x42000800,
7691 0x00000013, 0x42001000, 0x0000dc00, 0x0401f135,
7692 0x4803c856, 0x42005000, 0x22000000, 0x42006000,
7693 0x01290000, 0x41786800, 0x41787800, 0x0401f90b,
7694 0x59301008, 0x4a01a006, 0x55000000, 0x5808000b,
7695 0x82000500, 0x00ffffff, 0x58080c0a, 0x800408f0,
7696 0x80040540, 0x4801a007, 0x5808080a, 0x82040d00,
7697 0xff000000, 0x59a80010, 0x82000500, 0x00ffffff,
7698 0x80040540, 0x4801a008, 0x5808000c, 0x9c0001c0,
7699 0x4801a009, 0x5808000d, 0x9c0001c0, 0x4801a00a,
7700 0x5808000e, 0x9c0001c0, 0x4801a00b, 0x5808000f,
7701 0x9c0001c0, 0x4801a00c, 0x59a80002, 0x4801a00d,
7702 0x59a80003, 0x4801a00e, 0x59a80000, 0x4801a00f,
7703 0x59a80001, 0x4801a010, 0x58080010, 0x4801a011,
7704 0x58080011, 0x4801a012, 0x58080012, 0x4801a013,
7705 0x58080013, 0x4801a014, 0x4979a015, 0x4979a016,
7706 0x4979a017, 0x4979a018, 0x42000800, 0x00000013,
7707 0x42001000, 0x0000dc00, 0x0401f0f6, 0x0401fd03,
7708 0x5930001c, 0x800001c0, 0x04000008, 0x4a01a006,
7709 0x01000000, 0x4a01a407, 0x00000003, 0x42000800,
7710 0x00000002, 0x0401f028, 0x4a01a006, 0x02000000,
7711 0x41780800, 0x836c0580, 0x00000004, 0x04020003,
7712 0x84040d42, 0x0401f00d, 0x0201f800, 0x0010513b,
7713 0x04020003, 0x84040d4a, 0x0401f002, 0x84040d48,
7714 0x59a80026, 0x8c000506, 0x04020003, 0x8c00050a,
7715 0x04000002, 0x84040d46, 0x4805a207, 0x59c40085,
7716 0x48031004, 0x4c580000, 0x4c500000, 0x4c540000,
7717 0x4200b000, 0x00000006, 0x8388a400, 0x00000000,
7718 0x82d0ac00, 0x00000008, 0x0201f800, 0x0010ab17,
7719 0x5c00a800, 0x5c00a000, 0x5c00b000, 0x42000800,
7720 0x00000008, 0x42001000, 0x0000dc00, 0x0401f0c1,
7721 0x0401fcc0, 0x4a01a006, 0x56000000, 0x59340006,
7722 0x4801a007, 0x59340007, 0x4801a008, 0x42000800,
7723 0x00000003, 0x42001000, 0x0000dc00, 0x0401f0b5,
7724 0x4803c856, 0x0401fcc1, 0x5930081c, 0x800409c0,
7725 0x0400000e, 0x82040580, 0x0000ffff, 0x04000004,
7726 0x82040480, 0x00000007, 0x04021008, 0x4a01a006,
7727 0x01000000, 0x4a01a407, 0x00000003, 0x42000800,
7728 0x00000002, 0x0401f012, 0x4a01a006, 0x0200001c,
7729 0x4a01a007, 0x00000001, 0x42001000, 0x0010b4f0,
7730 0x50080000, 0x9c0001c0, 0x4801a009, 0x59a80010,
7731 0x4801a00a, 0x59a80002, 0x59a80803, 0x4801a00b,
7732 0x4805a00c, 0x42000800, 0x00000007, 0x42001000,
7733 0x0000dc00, 0x0401f08f, 0x4d2c0000, 0x0401fc8d,
7734 0x59325808, 0x592c0008, 0x82000500, 0x00ffffff,
7735 0x4801a001, 0x4a01a006, 0x51000000, 0x5c025800,
7736 0x0201f000, 0x00107344, 0x4803c856, 0x59a80810,
7737 0x82040d00, 0x000000ff, 0x59325808, 0x59326809,
7738 0x59a83026, 0x8c18350a, 0x04020008, 0x8c00050e,
7739 0x04020006, 0x80001d80, 0x59a82010, 0x82102500,
7740 0x000000ff, 0x0401f001, 0x59300406, 0x4803c857,
7741 0x82000d80, 0x00000009, 0x04000006, 0x82000d80,
7742 0x0000000a, 0x0400002e, 0x0201f800, 0x001005d8,
7743 0x59300015, 0x8c00051e, 0x04020020, 0x42005000,
7744 0x04000000, 0x42006000, 0x05000000, 0x592c040a,
7745 0x82000500, 0x00000030, 0x800000e0, 0x80306540,
7746 0x5934000a, 0x8c000508, 0x04000002, 0x84306546,
7747 0x41786800, 0x41787800, 0x0401f831, 0x59300c14,
7748 0x80040000, 0x48026414, 0x40040000, 0x800000d0,
7749 0x82000540, 0x00000020, 0x4801a403, 0x83180d40,
7750 0x00000038, 0x42001000, 0x0000c920, 0x0401f860,
7751 0x0201f000, 0x00106052, 0x59a80026, 0x82000500,
7752 0x00000028, 0x04000003, 0x497a6a12, 0x0401f7dc,
7753 0x4a026a12, 0x0000ff00, 0x0401f7d9, 0x42005000,
7754 0x02000000, 0x42006000, 0x20290000, 0x41786800,
7755 0x41787800, 0x0401f812, 0x83180d40, 0x00000038,
7756 0x42001000, 0x0000c9a0, 0x0401f849, 0x42000800,
7757 0x000007d0, 0x59300011, 0x82000500, 0xfff00000,
7758 0x80000540, 0x04000003, 0x42000800, 0x00001b58,
7759 0x41781000, 0x0201f000, 0x00106054, 0x4201a000,
7760 0x00000000, 0x0401f003, 0x4201a000, 0x00000011,
7761 0x59340a12, 0x82040d00, 0x0000ff00, 0x59a80010,
7762 0x82000500, 0x000000ff, 0x900001c0, 0x80040540,
7763 0x80d00540, 0x44034800, 0x81a5a000, 0x59340002,
7764 0x82000500, 0x00ffffff, 0x80280540, 0x4801a000,
7765 0x59a80010, 0x4801a001, 0x4831a002, 0x82340540,
7766 0x00000000, 0x4801a003, 0x59300402, 0x4801a404,
7767 0x59300a02, 0x4805a204, 0x8c30652e, 0x04000003,
7768 0x4805a404, 0x4801a204, 0x483da005, 0x1c01f000,
7769 0x4803c856, 0x4c040000, 0x0401f822, 0x5c000800,
7770 0x40040000, 0x80081540, 0x800000c4, 0x82000540,
7771 0x00002000, 0x4803910a, 0x59b400f6, 0x82000500,
7772 0x00000018, 0x040207fd, 0x4a0368f0, 0x0010b544,
7773 0x4a0368f1, 0x0010b54b, 0x480b68f3, 0x4a0378e4,
7774 0x00008000, 0x0201f000, 0x0010604d, 0x4807c857,
7775 0x480a2800, 0x4c040000, 0x0401f80a, 0x5c000800,
7776 0x59b400f6, 0x8c00050a, 0x040207fe, 0x49a768f2,
7777 0x480768f4, 0x4a0378e4, 0x00008000, 0x1c01f000,
7778 0x4a0378e4, 0x0000c000, 0x59bc00e4, 0x8c000520,
7779 0x0400000c, 0x4a0378e4, 0x00008000, 0x42007000,
7780 0x000003e8, 0x59bc00e4, 0x8c000520, 0x040007f5,
7781 0x80387040, 0x02000800, 0x001005d8, 0x0401f7fa,
7782 0x1c01f000, 0x82000500, 0xffff0000, 0x82000580,
7783 0x01050000, 0x0402000d, 0x599c0818, 0x8c040d10,
7784 0x0400000a, 0x59a80807, 0x8c040d0a, 0x04000007,
7785 0x42001000, 0x0000804f, 0x41781800, 0x41782000,
7786 0x0201f800, 0x00103a3e, 0x1c01f000, 0x41781000,
7787 0x42026000, 0x0010d1c0, 0x59a8180e, 0x480a6402,
7788 0x4a026202, 0x0000ffff, 0x80081000, 0x800c1840,
7789 0x04000004, 0x83326400, 0x00000024, 0x0401f7f8,
7790 0x1c01f000, 0x4933c857, 0x59300203, 0x82000580,
7791 0x00000000, 0x0400002c, 0x59300406, 0x4803c857,
7792 0x82000d80, 0x00000004, 0x04000011, 0x82000d80,
7793 0x00000001, 0x0400000e, 0x82000d80, 0x00000003,
7794 0x04000006, 0x82000d80, 0x00000006, 0x04020011,
7795 0x0201f800, 0x0010a5df, 0x5930001c, 0x800001c0,
7796 0x02020800, 0x0010984e, 0x0401f00a, 0x5930081e,
7797 0x4807c857, 0x800409c0, 0x04000006, 0x5804001c,
7798 0x4803c857, 0x81300580, 0x04020002, 0x4978081c,
7799 0x497a6008, 0x4a026004, 0x00004000, 0x59a80037,
7800 0x82000c80, 0x00000051, 0x04001002, 0x80000102,
7801 0x48026206, 0x497a6205, 0x497a6009, 0x4a026406,
7802 0x00000007, 0x1c01f000, 0x8166c9c0, 0x0400001c,
7803 0x41626000, 0x41580000, 0x59300a03, 0x82040d80,
7804 0x00000000, 0x04000008, 0x83326400, 0x00000024,
7805 0x81300c80, 0x040017f9, 0x42026000, 0x0010d1c0,
7806 0x0401f7f6, 0x4933c857, 0x8166c840, 0x83300c00,
7807 0x00000024, 0x80040480, 0x04021006, 0x4006c000,
7808 0x4a026203, 0x00000008, 0x813261c0, 0x1c01f000,
7809 0x4202c000, 0x0010d1c0, 0x0401f7fa, 0x42000000,
7810 0x0010b854, 0x0201f800, 0x0010aa47, 0x4933c856,
7811 0x417a6000, 0x0401f7f5, 0x4933c857, 0x83380580,
7812 0x00000013, 0x0402000b, 0x59300004, 0x8c00053e,
7813 0x04000007, 0x0201f800, 0x00106c55, 0x0201f800,
7814 0x00106bbf, 0x0201f800, 0x00106c4b, 0x1c01f000,
7815 0x4933c857, 0x59880052, 0x80000000, 0x48031052,
7816 0x1c01f000, 0x4933c857, 0x59300203, 0x82003480,
7817 0x0000000e, 0x02021800, 0x001005d8, 0x4d2c0000,
7818 0x0c01f803, 0x5c025800, 0x1c01f000, 0x00107991,
7819 0x00107efd, 0x0010804a, 0x00107991, 0x001080b0,
7820 0x00107af5, 0x00107991, 0x00107991, 0x00107e93,
7821 0x00107991, 0x00107991, 0x00107991, 0x00107991,
7822 0x00107991, 0x0201f800, 0x001005d8, 0x4933c857,
7823 0x59300203, 0x82003480, 0x0000000e, 0x02021800,
7824 0x001005d8, 0x0c01f001, 0x001079a8, 0x00108a3d,
7825 0x001079a8, 0x001079a8, 0x001079a8, 0x001079a8,
7826 0x001079a8, 0x001079a8, 0x001089e5, 0x00108a58,
7827 0x00108ac6, 0x00108a58, 0x00108ac6, 0x001079a8,
7828 0x0201f800, 0x001005d8, 0x0201f800, 0x001005d8,
7829 0x4933c857, 0x4d2c0000, 0x59325808, 0x59300203,
7830 0x82003480, 0x0000000e, 0x02021800, 0x001005d8,
7831 0x0c01f803, 0x5c025800, 0x1c01f000, 0x001079c5,
7832 0x001079c5, 0x001079c5, 0x001079e1, 0x00107a2d,
7833 0x001079c5, 0x001079c5, 0x001079c5, 0x001079c7,
7834 0x001079c5, 0x001079c5, 0x001079c5, 0x001079c5,
7835 0x001079c5, 0x0201f800, 0x001005d8, 0x4933c857,
7836 0x83380580, 0x00000040, 0x02020800, 0x001005d8,
7837 0x4a026007, 0x00082000, 0x4a026203, 0x00000003,
7838 0x493a6403, 0x4a025c08, 0x00000001, 0x592c000d,
7839 0x48026011, 0x497a6013, 0x592c0208, 0x800000c2,
7840 0x800010c4, 0x80081400, 0x480a6206, 0x0201f800,
7841 0x00100f4e, 0x42000800, 0x80000060, 0x0201f000,
7842 0x00106721, 0x4933c857, 0x83380480, 0x00000050,
7843 0x02021800, 0x001005d8, 0x83380480, 0x00000049,
7844 0x02001800, 0x001005d8, 0x0c01f001, 0x001079f4,
7845 0x001079ff, 0x001079f2, 0x001079f2, 0x001079f2,
7846 0x001079f2, 0x00107a0a, 0x0201f800, 0x001005d8,
7847 0x4a026203, 0x00000004, 0x4a025c08, 0x00000002,
7848 0x592c0207, 0x48025c09, 0x592c0209, 0x48025a07,
7849 0x592c000c, 0x4802580d, 0x1c01f000, 0x0201f800,
7850 0x00106b8a, 0x0201f800, 0x00109037, 0x04000005,
7851 0x4a025a06, 0x00000006, 0x0201f800, 0x000202da,
7852 0x0201f000, 0x0002077d, 0x0201f800, 0x00106b8a,
7853 0x4d3c0000, 0x417a7800, 0x0201f800, 0x0010203c,
7854 0x5c027800, 0x42003000, 0x00000014, 0x41782800,
7855 0x42002000, 0x00000002, 0x4d400000, 0x4d440000,
7856 0x59368c03, 0x42028000, 0x00000029, 0x0201f800,
7857 0x0010985e, 0x5c028800, 0x5c028000, 0x42000000,
7858 0x0010b864, 0x0201f800, 0x0010aa47, 0x0201f800,
7859 0x00109037, 0x02000000, 0x0002077d, 0x4a025a06,
7860 0x00000029, 0x0201f800, 0x000202da, 0x0201f000,
7861 0x0002077d, 0x4933c857, 0x83380580, 0x00000048,
7862 0x04000005, 0x83380580, 0x00000053, 0x02020800,
7863 0x001005d8, 0x592c0206, 0x82000580, 0x00000007,
7864 0x04000009, 0x59300011, 0x80000540, 0x04000006,
7865 0x592c080c, 0x80040480, 0x4802580c, 0x4a025a06,
7866 0x00000015, 0x592c0206, 0x80000540, 0x04020003,
7867 0x4a025a06, 0x00000000, 0x0201f800, 0x000202da,
7868 0x0201f000, 0x0002077d, 0x4933c857, 0x4d2c0000,
7869 0x4c500000, 0x4c540000, 0x4c580000, 0x0201f800,
7870 0x001007e4, 0x02000800, 0x001005d8, 0x497a5a06,
7871 0x59c80017, 0x82000500, 0x0000f000, 0x48025c07,
7872 0x59a80816, 0x82040c00, 0x00000018, 0x48065a07,
7873 0x412c7800, 0x4d2c0000, 0x41cca000, 0x42002800,
7874 0x00000001, 0x42001000, 0x0000002c, 0x82040480,
7875 0x0000002d, 0x04021006, 0x832cac00, 0x00000009,
7876 0x0201f800, 0x00108b96, 0x0401f02e, 0x40043000,
7877 0x42000800, 0x0000002c, 0x832cac00, 0x00000009,
7878 0x0201f800, 0x00108b96, 0x82183480, 0x0000002c,
7879 0x0201f800, 0x001007e4, 0x0400001a, 0x80142800,
7880 0x4a025804, 0x00000110, 0x492c7801, 0x82180c80,
7881 0x0000003d, 0x04021007, 0x40180800, 0x832cac00,
7882 0x00000005, 0x0201f800, 0x00108b96, 0x0401f015,
7883 0x82081400, 0x0000003c, 0x82183480, 0x0000003c,
7884 0x42000800, 0x0000003c, 0x412c7800, 0x832cac00,
7885 0x00000005, 0x0201f800, 0x00108b96, 0x0401f7e5,
7886 0x5c025800, 0x592c0206, 0x8400055e, 0x48025a06,
7887 0x592c0407, 0x80080540, 0x48025c07, 0x0401f002,
7888 0x5c025800, 0x813669c0, 0x04000003, 0x59343403,
7889 0x0401f003, 0x42003000, 0x0000ffff, 0x49325808,
7890 0x481a5c06, 0x82100580, 0x00000054, 0x04020002,
7891 0x491e5813, 0x841401c0, 0x80100540, 0x48025804,
7892 0x592c0001, 0x497a5801, 0x4c000000, 0x0201f800,
7893 0x000202da, 0x5c025800, 0x812e59c0, 0x040207f9,
7894 0x5c00b000, 0x5c00a800, 0x5c00a000, 0x5c025800,
7895 0x1c01f000, 0x4803c856, 0x4c5c0000, 0x4d2c0000,
7896 0x4c500000, 0x4c540000, 0x4c580000, 0x412cb800,
7897 0x592c040b, 0x8c000516, 0x04000003, 0x41cca000,
7898 0x0401f003, 0x83cca400, 0x00000006, 0x4008b000,
7899 0x41781000, 0x82580480, 0x00000012, 0x04001004,
7900 0x4200b000, 0x00000012, 0x40001000, 0x4c080000,
7901 0x4d2c0000, 0x0201f800, 0x001007e4, 0x04000023,
7902 0x5c001800, 0x492c1801, 0x485a5800, 0x832cac00,
7903 0x00000002, 0x0201f800, 0x0010ab28, 0x585c040b,
7904 0x8c000500, 0x0400000e, 0x832c1400, 0x00000002,
7905 0x8c000516, 0x04000003, 0x82081400, 0x00000006,
7906 0x46001000, 0x00000001, 0x80081000, 0x46001000,
7907 0x00000900, 0x84000500, 0x4800bc0b, 0x5c001000,
7908 0x800811c0, 0x040207da, 0x82000540, 0x00000001,
7909 0x5c00b000, 0x5c00a800, 0x5c00a000, 0x5c025800,
7910 0x5c00b800, 0x1c01f000, 0x5c025800, 0x5c001000,
7911 0x0401f7f8, 0x4933c857, 0x83380d80, 0x00000015,
7912 0x04020003, 0x0201f000, 0x0002077d, 0x83380d80,
7913 0x00000016, 0x02020800, 0x001005d8, 0x0201f000,
7914 0x0002077d, 0x4933c857, 0x4d2c0000, 0x4c500000,
7915 0x4c540000, 0x4c580000, 0x59325808, 0x83cca400,
7916 0x00000006, 0x59cc1806, 0x820c0580, 0x01000000,
7917 0x04020004, 0x4200b000, 0x00000002, 0x0401f00f,
7918 0x4200b000, 0x00000008, 0x832cac00, 0x00000005,
7919 0x0201f800, 0x0010ab17, 0x8c0c1d00, 0x0400000b,
7920 0x4200b000, 0x00000008, 0x592e5801, 0x812e59c0,
7921 0x02000800, 0x001005d8, 0x832cac00, 0x00000005,
7922 0x0201f800, 0x0010ab17, 0x0401f816, 0x5c00b000,
7923 0x5c00a800, 0x5c00a000, 0x5c025800, 0x1c01f000,
7924 0x4933c857, 0x4c500000, 0x4c540000, 0x4c580000,
7925 0x83cca400, 0x00000006, 0x5930a808, 0x8254ac00,
7926 0x00000005, 0x4200b000, 0x00000007, 0x0201f800,
7927 0x0010ab17, 0x5c00b000, 0x5c00a800, 0x5c00a000,
7928 0x4933c857, 0x0201f800, 0x00109037, 0x02000000,
7929 0x0002077d, 0x4d2c0000, 0x0201f800, 0x00109597,
7930 0x0402000b, 0x41780800, 0x4d400000, 0x42028000,
7931 0x00000000, 0x0201f800, 0x0010943b, 0x5c028000,
7932 0x5c025800, 0x0201f000, 0x0002077d, 0x5931d821,
7933 0x58ef400b, 0x58ee580d, 0x4a025a04, 0x00000103,
7934 0x58ec0009, 0x0801f800, 0x5c025800, 0x0201f000,
7935 0x0002077d, 0x4933c857, 0x59cc1806, 0x820c0580,
7936 0x02000000, 0x04020014, 0x4a026802, 0x00fffffd,
7937 0x5934000a, 0x84000504, 0x4802680a, 0x59300808,
7938 0x800409c0, 0x02000000, 0x0002077d, 0x4a000a04,
7939 0x00000103, 0x480c0805, 0x5931d821, 0x58ef400b,
7940 0x58ee580d, 0x58ec0009, 0x0801f800, 0x0201f000,
7941 0x0002077d, 0x42000000, 0x0010b86c, 0x0201f800,
7942 0x0010aa47, 0x4c0c0000, 0x0401f804, 0x5c001800,
7943 0x040207eb, 0x1c01f000, 0x4933c857, 0x4d2c0000,
7944 0x59325808, 0x812e59c0, 0x04020009, 0x497a6206,
7945 0x497a6205, 0x4d380000, 0x42027000, 0x00000022,
7946 0x0401fb77, 0x5c027000, 0x80000580, 0x5c025800,
7947 0x1c01f000, 0x4933c857, 0x4d2c0000, 0x4c500000,
7948 0x4c540000, 0x4c580000, 0x59325808, 0x592e5801,
7949 0x832cac00, 0x00000005, 0x83cca400, 0x00000006,
7950 0x59c80817, 0x82040d00, 0x000003ff, 0x82041480,
7951 0x0000000f, 0x0400101b, 0x4200b000, 0x0000000f,
7952 0x0201f800, 0x0010ab17, 0x592e5801, 0x832cac00,
7953 0x00000005, 0x82080c80, 0x0000000f, 0x0400100d,
7954 0x4200b000, 0x0000000f, 0x0201f800, 0x0010ab17,
7955 0x592e5801, 0x832cac00, 0x00000005, 0x82041480,
7956 0x0000000f, 0x04001007, 0x42001000, 0x0000000f,
7957 0x4008b000, 0x0201f800, 0x0010ab17, 0x0401f004,
7958 0x4004b000, 0x0201f800, 0x0010ab17, 0x5931d821,
7959 0x58ef400b, 0x58ee580d, 0x4a025a04, 0x00000103,
7960 0x592e5801, 0x58ec0009, 0x0801f800, 0x0201f800,
7961 0x0002077d, 0x5c00b000, 0x5c00a800, 0x5c00a000,
7962 0x5c025800, 0x1c01f000, 0x4933c857, 0x4d2c0000,
7963 0x4c500000, 0x4c540000, 0x4c580000, 0x59cc0006,
7964 0x82000d80, 0x01000000, 0x0400002c, 0x59cc0007,
7965 0x9000b1c0, 0x8258b500, 0x000000ff, 0x8058b104,
7966 0x8258b400, 0x00000002, 0x82580c80, 0x00000007,
7967 0x04001003, 0x4200b000, 0x00000006, 0x83cca400,
7968 0x00000006, 0x59301008, 0x800811c0, 0x02000800,
7969 0x001005d8, 0x8208ac00, 0x00000005, 0x0201f800,
7970 0x0010ab17, 0x82000d00, 0xff000000, 0x800409c0,
7971 0x04000019, 0x8200b500, 0x000000ff, 0x8058b104,
7972 0x82580c80, 0x0000000e, 0x04001003, 0x4200b000,
7973 0x0000000d, 0x58081001, 0x800811c0, 0x02000800,
7974 0x001005d8, 0x8208ac00, 0x00000005, 0x0201f800,
7975 0x0010ab17, 0x0401f008, 0x59301008, 0x800811c0,
7976 0x02000800, 0x001005d8, 0x48001005, 0x59cc0007,
7977 0x48001006, 0x0401ff3b, 0x5c00b000, 0x5c00a800,
7978 0x5c00a000, 0x5c025800, 0x1c01f000, 0x4933c857,
7979 0x42000800, 0x00000000, 0x59cc0006, 0x82000580,
7980 0x02000000, 0x04000003, 0x42000800, 0x00000001,
7981 0x4d2c0000, 0x59325808, 0x812e59c0, 0x02000800,
7982 0x001005d8, 0x48065a06, 0x0201f800, 0x000202da,
7983 0x5c025800, 0x0201f000, 0x0002077d, 0x4933c857,
7984 0x4d2c0000, 0x4c500000, 0x4c540000, 0x4c580000,
7985 0x4200b000, 0x00000002, 0x59cc0806, 0x82040580,
7986 0x01000000, 0x04000004, 0x8204b500, 0x0000ffff,
7987 0x8058b104, 0x83cca400, 0x00000006, 0x59300008,
7988 0x8200ac00, 0x00000005, 0x0201f800, 0x0010ab17,
7989 0x0401ff0c, 0x5c00b000, 0x5c00a800, 0x5c00a000,
7990 0x5c025800, 0x1c01f000, 0x4933c857, 0x4803c857,
7991 0x4807c857, 0x480bc857, 0x480fc857, 0x4813c857,
7992 0x481bc857, 0x492fc857, 0x4d2c0000, 0x4c000000,
7993 0x0201f800, 0x001007d3, 0x5c000000, 0x0400000f,
7994 0x48025803, 0x5c000000, 0x4802580a, 0x4c000000,
7995 0x481a5801, 0x48125809, 0x48065804, 0x480a5807,
7996 0x480e5808, 0x412c1000, 0x0201f800, 0x00100858,
7997 0x82000540, 0x00000001, 0x5c025800, 0x1c01f000,
7998 0x4933c857, 0x4d1c0000, 0x59cc0001, 0x82000500,
7999 0x00ffffff, 0x59341002, 0x82081500, 0x00ffffff,
8000 0x80080580, 0x0402001f, 0x497a6205, 0x4d380000,
8001 0x42027000, 0x00000035, 0x0201f800, 0x001093ba,
8002 0x5c027000, 0x04020012, 0x591c001c, 0x800001c0,
8003 0x0400000f, 0x497a381c, 0x591c0414, 0x8c000502,
8004 0x02000800, 0x001005d8, 0x84000502, 0x48023c14,
8005 0x591c1406, 0x82080580, 0x00000003, 0x04000006,
8006 0x82080580, 0x00000006, 0x04000005, 0x0401fc9e,
8007 0x0401f004, 0x0401f805, 0x0401f002, 0x0401f8c0,
8008 0x5c023800, 0x1c01f000, 0x4d2c0000, 0x591e5808,
8009 0x4933c857, 0x491fc857, 0x493bc857, 0x492fc857,
8010 0x83380580, 0x00000015, 0x040000b3, 0x83380580,
8011 0x00000016, 0x040200ae, 0x4d300000, 0x411e6000,
8012 0x59cc0207, 0x4803c857, 0x82000d00, 0x0000ff00,
8013 0x82040580, 0x00001700, 0x04000004, 0x82040580,
8014 0x00000300, 0x0402005b, 0x591c0203, 0x4803c857,
8015 0x82000580, 0x0000000d, 0x0400003f, 0x812e59c0,
8016 0x0400009a, 0x591c0202, 0x4803c857, 0x82000580,
8017 0x0000ffff, 0x0402007e, 0x592c020a, 0x4803c857,
8018 0x82000500, 0x00000003, 0x82000580, 0x00000002,
8019 0x04020007, 0x592c080f, 0x591c0011, 0x4803c857,
8020 0x4807c857, 0x80040580, 0x04020071, 0x591c0414,
8021 0x4803c857, 0x8c000500, 0x0402006d, 0x41780800,
8022 0x591c1206, 0x42000000, 0x0000000a, 0x0201f800,
8023 0x001066a0, 0x592c0406, 0x4803c857, 0x800001c0,
8024 0x0400000c, 0x80080c80, 0x04001004, 0x02020800,
8025 0x001005d8, 0x80001040, 0x480a5c06, 0x800811c0,
8026 0x04020004, 0x0201f800, 0x00108d88, 0x0401f06b,
8027 0x0201f800, 0x0010912a, 0x591c0817, 0x591c0018,
8028 0x48065808, 0x48025809, 0x59300007, 0x8c000500,
8029 0x02020800, 0x00100e99, 0x497a3808, 0x0201f800,
8030 0x000201ba, 0x0402004a, 0x411e6000, 0x0401fc3e,
8031 0x0401f05a, 0x0401fc6d, 0x04000013, 0x49366009,
8032 0x4a026406, 0x00000003, 0x492e6008, 0x591c0817,
8033 0x591c1018, 0x48066017, 0x480a6018, 0x4d380000,
8034 0x591e7403, 0x4d300000, 0x411e6000, 0x0401fc2e,
8035 0x5c026000, 0x0201f800, 0x000207a1, 0x5c027000,
8036 0x0401f046, 0x59a80039, 0x48023a05, 0x0401f043,
8037 0x59cc0407, 0x82000580, 0x0000000b, 0x04020025,
8038 0x59340a00, 0x84040d0e, 0x48066a00, 0x592c0a04,
8039 0x82040d00, 0x000000ff, 0x82040d80, 0x00000014,
8040 0x04000003, 0x4a02621d, 0x00000003, 0x59300007,
8041 0x8c000500, 0x02020800, 0x00100e99, 0x4d400000,
8042 0x42028000, 0x00000003, 0x592c0a08, 0x0201f800,
8043 0x00104e70, 0x0201f800, 0x000202da, 0x5c028000,
8044 0x497a6008, 0x4a026403, 0x00000085, 0x4a026203,
8045 0x00000009, 0x4a026406, 0x00000002, 0x42000800,
8046 0x8000404b, 0x0201f800, 0x00020721, 0x0401f01b,
8047 0x59cc0207, 0x82000580, 0x00002a00, 0x04020004,
8048 0x59a80039, 0x48023a05, 0x0401f014, 0x812e59c0,
8049 0x02000800, 0x001005d8, 0x4a025a04, 0x00000103,
8050 0x591c0007, 0x8c000500, 0x02020800, 0x00100e99,
8051 0x591c0402, 0x48025c06, 0x4a025a06, 0x00000003,
8052 0x0201f800, 0x000202c1, 0x0201f800, 0x00107911,
8053 0x0201f800, 0x001049b2, 0x5c026000, 0x0201f800,
8054 0x0002077d, 0x0401f002, 0x5c026000, 0x5c025800,
8055 0x1c01f000, 0x0401f819, 0x0401f7fd, 0x4933c857,
8056 0x83380580, 0x00000015, 0x04020004, 0x59a80039,
8057 0x48023a05, 0x0401f00d, 0x83380580, 0x00000016,
8058 0x0402000d, 0x4d300000, 0x411e6000, 0x0201f800,
8059 0x0010a5df, 0x0201f800, 0x000206fd, 0x0201f800,
8060 0x0002077d, 0x5c026000, 0x497a381c, 0x0201f800,
8061 0x0002077d, 0x1c01f000, 0x591c0414, 0x84000540,
8062 0x48023c14, 0x59cc100b, 0x4933c857, 0x491fc857,
8063 0x492fc857, 0x4803c857, 0x480bc857, 0x8c08153c,
8064 0x04000006, 0x59a80039, 0x48023a05, 0x497a381c,
8065 0x0201f000, 0x0002077d, 0x4d300000, 0x411e6000,
8066 0x0201f800, 0x00108bd7, 0x5c026000, 0x591c0406,
8067 0x82000580, 0x00000000, 0x02000000, 0x0002077d,
8068 0x591c0403, 0x82000580, 0x00000050, 0x0402000d,
8069 0x4d300000, 0x411e6000, 0x4a026203, 0x00000001,
8070 0x42000800, 0x80000043, 0x0201f800, 0x00020721,
8071 0x5c026000, 0x497a381c, 0x0201f000, 0x0002077d,
8072 0x591c0203, 0x82000580, 0x0000000d, 0x04000014,
8073 0x812e59c0, 0x02000800, 0x001005d8, 0x591c0203,
8074 0x82000580, 0x00000004, 0x04020011, 0x592c020a,
8075 0x8c000502, 0x0400000e, 0x4a023812, 0x0fffffff,
8076 0x592c0208, 0x8400051e, 0x48025a08, 0x42000000,
8077 0x00000001, 0x48023a14, 0x0401f021, 0x42000000,
8078 0x00000007, 0x48023a14, 0x0401f01d, 0x592c020a,
8079 0x4803c857, 0x8c000500, 0x0402000b, 0x8c000502,
8080 0x040007f7, 0x591c0414, 0x8c00051c, 0x040207eb,
8081 0x591c0011, 0x4803c857, 0x800001c0, 0x040007f0,
8082 0x0401f7e6, 0x8c08153a, 0x040207ed, 0x59cc000a,
8083 0x592c180f, 0x4803c857, 0x480fc857, 0x800c0580,
8084 0x040007e7, 0x59cc000a, 0x4803c857, 0x48023816,
8085 0x42000000, 0x00000005, 0x48023a14, 0x0201f000,
8086 0x00109259, 0x4933c857, 0x4d1c0000, 0x59cc0001,
8087 0x59341002, 0x80080580, 0x82000500, 0x00ffffff,
8088 0x04020041, 0x59301419, 0x0201f800, 0x00109410,
8089 0x02000800, 0x001005d8, 0x591c1406, 0x82080580,
8090 0x00000007, 0x04000038, 0x82080580, 0x00000002,
8091 0x04000035, 0x82080580, 0x00000000, 0x04000032,
8092 0x591c0202, 0x82000d80, 0x0000ffff, 0x04000004,
8093 0x59301a19, 0x800c0580, 0x0402002b, 0x83380580,
8094 0x00000015, 0x04000026, 0x4d300000, 0x4d2c0000,
8095 0x411e6000, 0x59325808, 0x0201f800, 0x00109037,
8096 0x02000800, 0x001005d8, 0x592c0204, 0x82000500,
8097 0x000000ff, 0x82000580, 0x00000014, 0x04000003,
8098 0x4a02621d, 0x00000003, 0x42028000, 0x00000003,
8099 0x592c0a08, 0x0201f800, 0x00104e70, 0x0201f800,
8100 0x000202da, 0x5c025800, 0x497a6008, 0x4a026403,
8101 0x00000085, 0x4a026203, 0x00000009, 0x4a026406,
8102 0x00000002, 0x42000800, 0x8000404b, 0x0201f800,
8103 0x00020721, 0x5c026000, 0x0401f003, 0x59a80039,
8104 0x48023a05, 0x497a381c, 0x0201f800, 0x0002077d,
8105 0x5c023800, 0x1c01f000, 0x4933c857, 0x4c580000,
8106 0x4d2c0000, 0x59325808, 0x83383580, 0x00000015,
8107 0x04000010, 0x59342200, 0x84102502, 0x48126a00,
8108 0x0201f800, 0x00109037, 0x04000066, 0x0201f800,
8109 0x00109597, 0x04020005, 0x4200b000, 0x00000002,
8110 0x0201f800, 0x0010957d, 0x0401fa0a, 0x0401f079,
8111 0x83cc1400, 0x00000008, 0x4200b000, 0x00000002,
8112 0x83341c00, 0x00000006, 0x0201f800, 0x0010855a,
8113 0x04020015, 0x83cc1400, 0x0000000a, 0x4200b000,
8114 0x00000002, 0x83341c00, 0x00000008, 0x0201f800,
8115 0x0010855a, 0x0402000c, 0x0201f800, 0x00102074,
8116 0x59342200, 0x59cc1007, 0x800811c0, 0x04000003,
8117 0x480a6801, 0x84102542, 0x8410251a, 0x48126a00,
8118 0x0401f05f, 0x4d3c0000, 0x417a7800, 0x0201f800,
8119 0x0010203c, 0x5c027800, 0x42000000, 0x0010b864,
8120 0x0201f800, 0x0010aa47, 0x59340200, 0x84000558,
8121 0x48026a00, 0x4d300000, 0x0201f800, 0x0002075a,
8122 0x02000800, 0x001005d8, 0x49366009, 0x497a6008,
8123 0x4a026406, 0x00000001, 0x4a026403, 0x00000001,
8124 0x42003000, 0x00000003, 0x0201f800, 0x0010a942,
8125 0x0201f800, 0x00103b25, 0x04000011, 0x41782800,
8126 0x42003000, 0x00000001, 0x4d400000, 0x42028000,
8127 0x00000029, 0x0201f800, 0x0010a43e, 0x5c028000,
8128 0x4a026406, 0x00000004, 0x4a026203, 0x00000007,
8129 0x4a026420, 0x00000001, 0x0401f009, 0x4a026203,
8130 0x00000001, 0x42000800, 0x0000000b, 0x0201f800,
8131 0x00104571, 0x0201f800, 0x0010672b, 0x5c026000,
8132 0x0201f800, 0x00109037, 0x04000022, 0x0201f800,
8133 0x00109597, 0x04020022, 0x0401f9ae, 0x0401f01d,
8134 0x4d3c0000, 0x417a7800, 0x0201f800, 0x0010203c,
8135 0x42000000, 0x0010b864, 0x0201f800, 0x0010aa47,
8136 0x59340200, 0x84000558, 0x48026a00, 0x42003000,
8137 0x00000003, 0x41782800, 0x42002000, 0x00000005,
8138 0x4d400000, 0x4d440000, 0x59368c03, 0x42028000,
8139 0x00000029, 0x0201f800, 0x0010985e, 0x5c028800,
8140 0x5c028000, 0x5c027800, 0x0201f800, 0x00102074,
8141 0x0201f800, 0x0002077d, 0x0401f002, 0x0401fca9,
8142 0x5c025800, 0x5c00b000, 0x1c01f000, 0x4933c857,
8143 0x41380000, 0x83383480, 0x00000056, 0x02021800,
8144 0x001005d8, 0x0c01f001, 0x00107ef7, 0x00107ef2,
8145 0x00107ef7, 0x00107ef7, 0x00107ef7, 0x00107ef7,
8146 0x00107ef0, 0x00107ef0, 0x00107ef0, 0x00107ef0,
8147 0x00107ef0, 0x00107ef0, 0x00107ef0, 0x00107ef0,
8148 0x00107ef0, 0x00107ef0, 0x00107ef0, 0x00107ef0,
8149 0x00107ef0, 0x00107ef0, 0x00107ef0, 0x00107ef0,
8150 0x00107ef0, 0x00107ef0, 0x00107ef0, 0x00107ef0,
8151 0x00107ef0, 0x00107ef0, 0x00107ef0, 0x00107ef0,
8152 0x00107ef0, 0x00107ef7, 0x00107ef0, 0x00107ef7,
8153 0x00107ef7, 0x00107ef0, 0x00107ef0, 0x00107ef0,
8154 0x00107ef0, 0x00107ef0, 0x00107ef7, 0x00107ef0,
8155 0x00107ef0, 0x00107ef0, 0x00107ef0, 0x00107ef0,
8156 0x00107ef0, 0x00107ef0, 0x00107ef0, 0x00107ef0,
8157 0x00107ef7, 0x00107ef7, 0x00107ef0, 0x00107ef0,
8158 0x00107ef0, 0x00107ef0, 0x00107ef0, 0x00107ef0,
8159 0x00107ef0, 0x00107ef0, 0x00107ef0, 0x00107ef7,
8160 0x00107ef0, 0x00107ef0, 0x00107ef7, 0x00107ef7,
8161 0x00107ef0, 0x00107ef7, 0x00107ef7, 0x00107ef0,
8162 0x00107ef0, 0x00107ef0, 0x00107ef0, 0x00107ef7,
8163 0x00107ef0, 0x00107ef0, 0x00107ef0, 0x00107ef7,
8164 0x00107ef0, 0x00107ef0, 0x00107ef0, 0x00107ef7,
8165 0x00107ef0, 0x00107ef0, 0x00107ef0, 0x00107ef7,
8166 0x0201f800, 0x001005d8, 0x4a026203, 0x00000001,
8167 0x493a6403, 0x0201f000, 0x0010672b, 0x4933c857,
8168 0x4a026203, 0x00000001, 0x493a6403, 0x0201f000,
8169 0x0010672b, 0x4933c857, 0x59300403, 0x82003480,
8170 0x00000056, 0x02021800, 0x001005d8, 0x83383580,
8171 0x00000013, 0x04000093, 0x83383580, 0x00000027,
8172 0x0402004b, 0x0201f800, 0x00106bbf, 0x0201f800,
8173 0x00109134, 0x0400000b, 0x0201f800, 0x0010914e,
8174 0x04000041, 0x59300403, 0x82000d80, 0x00000022,
8175 0x04020038, 0x0401fc61, 0x0400003a, 0x0401f03a,
8176 0x0201f800, 0x00102074, 0x42000800, 0x00000007,
8177 0x0201f800, 0x00104571, 0x0401f8fe, 0x4d440000,
8178 0x59368c03, 0x83440580, 0x000007fe, 0x04020008,
8179 0x59a81026, 0x84081540, 0x0201f800, 0x0010513b,
8180 0x04020002, 0x8408154a, 0x480b5026, 0x42028000,
8181 0x00000029, 0x4d3c0000, 0x417a7800, 0x0201f800,
8182 0x0010203c, 0x5c027800, 0x836c0580, 0x00000003,
8183 0x0400000c, 0x59326809, 0x59340008, 0x800001c0,
8184 0x04020008, 0x59368c03, 0x4933c857, 0x4937c857,
8185 0x4947c857, 0x0201f800, 0x001045fb, 0x0401f00c,
8186 0x42000000, 0x0010b864, 0x0201f800, 0x0010aa47,
8187 0x42003000, 0x00000015, 0x41782800, 0x42002000,
8188 0x00000003, 0x0201f800, 0x0010985e, 0x5c028800,
8189 0x0201f800, 0x00109326, 0x0201f000, 0x0002077d,
8190 0x1c01f000, 0x0401f8cb, 0x0401f7fa, 0x83380580,
8191 0x00000014, 0x0400000b, 0x0201f800, 0x00106f60,
8192 0x02020000, 0x00107974, 0x59300203, 0x82000580,
8193 0x00000002, 0x040000ed, 0x0201f800, 0x001005d8,
8194 0x0201f800, 0x00106bbf, 0x4d3c0000, 0x417a7800,
8195 0x0201f800, 0x0010203c, 0x5c027800, 0x42003000,
8196 0x00000016, 0x41782800, 0x4d400000, 0x4d440000,
8197 0x59368c03, 0x42002000, 0x00000009, 0x42028000,
8198 0x00000029, 0x0201f800, 0x0010985e, 0x5c028800,
8199 0x5c028000, 0x42000000, 0x0010b864, 0x0201f800,
8200 0x0010aa47, 0x0201f800, 0x00109134, 0x0402000c,
8201 0x0201f800, 0x00102074, 0x0401f89e, 0x59340c03,
8202 0x82040580, 0x000007fe, 0x040207ca, 0x59a80826,
8203 0x84040d40, 0x48075026, 0x0401f7c6, 0x0201f800,
8204 0x0010914e, 0x04020003, 0x0401f892, 0x0401f7c1,
8205 0x59300403, 0x82000d80, 0x00000032, 0x04020004,
8206 0x0201f800, 0x0010230c, 0x0401f7ba, 0x59300403,
8207 0x82000d80, 0x00000022, 0x04000886, 0x0401f7b5,
8208 0x4803c857, 0x0c01f001, 0x00108016, 0x00108016,
8209 0x00108016, 0x00108016, 0x00108016, 0x00108016,
8210 0x00107ff0, 0x00107ff0, 0x00107ff0, 0x00107ff0,
8211 0x00107ff0, 0x00107ff0, 0x00107ff0, 0x00107ff0,
8212 0x00107ff0, 0x00107ff0, 0x00107ff0, 0x00107ff0,
8213 0x00107ff0, 0x00107ff0, 0x00107ff0, 0x00107ff0,
8214 0x00107ff0, 0x00107ff0, 0x00107ff0, 0x00107ff0,
8215 0x00107ff0, 0x00107ff0, 0x00107ff0, 0x00107ff0,
8216 0x00107ff9, 0x00108016, 0x00107ff0, 0x00108016,
8217 0x00108016, 0x00107ff0, 0x00107ff0, 0x00107ff0,
8218 0x00107ff0, 0x00107ff0, 0x00108016, 0x00108016,
8219 0x00107ff0, 0x00107ff0, 0x00107ff0, 0x00107ff0,
8220 0x00107ff0, 0x00107ff0, 0x00107ff0, 0x00107ff0,
8221 0x00108007, 0x00108016, 0x00107ff0, 0x00108000,
8222 0x00107ff0, 0x00107ff0, 0x00107ff0, 0x00108000,
8223 0x00107ff0, 0x00107ff0, 0x00107ff0, 0x00108016,
8224 0x00108003, 0x00107ff0, 0x00107ff2, 0x00108016,
8225 0x00107ff0, 0x00108016, 0x00108016, 0x00107ff0,
8226 0x00107ff0, 0x00107ff0, 0x00107ff0, 0x00108016,
8227 0x00107ff0, 0x00107ff0, 0x00107ff0, 0x00108016,
8228 0x00107ff0, 0x00107ff0, 0x00107ff0, 0x00108016,
8229 0x00107ff0, 0x00107ff0, 0x00107ff0, 0x00108016,
8230 0x0201f800, 0x001005d8, 0x4d2c0000, 0x59325808,
8231 0x0201f800, 0x000202da, 0x5c025800, 0x0201f000,
8232 0x0002077d, 0x4a026203, 0x00000005, 0x59a80039,
8233 0x48026205, 0x59a80037, 0x48026206, 0x1c01f000,
8234 0x5930081e, 0x49780a05, 0x0401f014, 0x0201f800,
8235 0x00109326, 0x0201f000, 0x0002077d, 0x0201f800,
8236 0x0010230c, 0x0201f800, 0x00106c55, 0x04000005,
8237 0x0201f800, 0x00106bbf, 0x0201f000, 0x0002077d,
8238 0x0201f800, 0x00106bbf, 0x0201f800, 0x0002077d,
8239 0x0201f000, 0x00106c4b, 0x4933c857, 0x4a026203,
8240 0x00000002, 0x59a80037, 0x48026206, 0x1c01f000,
8241 0x4933c857, 0x0201f800, 0x00109037, 0x0400002a,
8242 0x4d2c0000, 0x0201f800, 0x00109597, 0x0402000a,
8243 0x4d400000, 0x42028000, 0x00000031, 0x42000800,
8244 0x00000004, 0x0201f800, 0x0010943b, 0x5c028000,
8245 0x0401f01c, 0x59300c06, 0x82040580, 0x00000010,
8246 0x04000004, 0x82040580, 0x00000011, 0x0402000a,
8247 0x4a025a06, 0x00000031, 0x4a02580d, 0x00000004,
8248 0x4a02580e, 0x000000ff, 0x0201f800, 0x000202da,
8249 0x0401f00c, 0x592c0404, 0x8c00051e, 0x04000009,
8250 0x4a025a04, 0x00000103, 0x4a025805, 0x01000000,
8251 0x5931d821, 0x58ef400b, 0x58ec0009, 0x0801f800,
8252 0x5c025800, 0x1c01f000, 0x4933c857, 0x59340400,
8253 0x82000500, 0x000000ff, 0x82003480, 0x0000000c,
8254 0x02021800, 0x001005d8, 0x59303403, 0x82180d80,
8255 0x0000004d, 0x02000000, 0x0010938b, 0x82180d80,
8256 0x00000033, 0x02000000, 0x00109349, 0x82180d80,
8257 0x00000028, 0x02000000, 0x0010918f, 0x82180d80,
8258 0x00000029, 0x02000000, 0x001091a3, 0x82180d80,
8259 0x0000001f, 0x02000000, 0x00107b28, 0x82180d80,
8260 0x00000055, 0x02000000, 0x00107b01, 0x82180d80,
8261 0x00000000, 0x04000591, 0x82180d80, 0x00000022,
8262 0x02000000, 0x00107b55, 0x82180d80, 0x00000035,
8263 0x02000000, 0x00107c50, 0x82180d80, 0x00000039,
8264 0x04000539, 0x82180d80, 0x0000003d, 0x02000000,
8265 0x00107b85, 0x82180d80, 0x00000044, 0x02000000,
8266 0x00107bc2, 0x82180d80, 0x00000049, 0x02000000,
8267 0x00107c17, 0x82180d80, 0x00000041, 0x02000000,
8268 0x00107c03, 0x82180d80, 0x00000043, 0x02000000,
8269 0x001094dc, 0x82180d80, 0x00000051, 0x02000000,
8270 0x00109542, 0x82180d80, 0x00000004, 0x04020003,
8271 0x42000000, 0x00000001, 0x83380d80, 0x00000015,
8272 0x04000006, 0x83380d80, 0x00000016, 0x02020000,
8273 0x00107974, 0x0401f20f, 0x4d2c0000, 0x4d3c0000,
8274 0x0c01f804, 0x5c027800, 0x5c025800, 0x1c01f000,
8275 0x001080b8, 0x001080bc, 0x001080b8, 0x00108131,
8276 0x001080b8, 0x00108226, 0x001082bf, 0x001080b8,
8277 0x001080b8, 0x00108288, 0x001080b8, 0x0010829a,
8278 0x4933c857, 0x497a6007, 0x59300808, 0x58040000,
8279 0x4a000a04, 0x00000103, 0x0201f000, 0x0002077d,
8280 0x4933c857, 0x40000000, 0x40000000, 0x1c01f000,
8281 0x4933c857, 0x59a80016, 0x82000580, 0x00000074,
8282 0x0402005c, 0x0201f800, 0x0010a2c8, 0x04020016,
8283 0x0401f85c, 0x0201f800, 0x00109037, 0x0400000c,
8284 0x0201f800, 0x00109597, 0x04020009, 0x41780800,
8285 0x4d400000, 0x42028000, 0x00000000, 0x0201f800,
8286 0x0010943b, 0x5c028000, 0x0401f003, 0x0201f800,
8287 0x00102074, 0x0201f800, 0x001048c1, 0x0201f000,
8288 0x0002077d, 0x0201f800, 0x00109037, 0x04000007,
8289 0x0201f800, 0x00109597, 0x04020004, 0x0401ff3d,
8290 0x0201f000, 0x0002077d, 0x417a7800, 0x0201f800,
8291 0x0010203c, 0x42000000, 0x0010b864, 0x0201f800,
8292 0x0010aa47, 0x59340200, 0x84000558, 0x48026a00,
8293 0x42003000, 0x00000003, 0x0201f800, 0x0010a942,
8294 0x4d300000, 0x0201f800, 0x0002075a, 0x02000800,
8295 0x001005d8, 0x49366009, 0x497a6008, 0x4a026406,
8296 0x00000001, 0x4a026403, 0x00000001, 0x0201f800,
8297 0x00103b25, 0x04000011, 0x4a026406, 0x00000004,
8298 0x4a026203, 0x00000007, 0x4a026420, 0x00000001,
8299 0x42003000, 0x00000001, 0x4d400000, 0x42028000,
8300 0x00000029, 0x41782800, 0x0201f800, 0x0010a43e,
8301 0x5c028000, 0x0401f009, 0x42000800, 0x0000000b,
8302 0x0201f800, 0x00104571, 0x4a026203, 0x00000001,
8303 0x0201f800, 0x0010672b, 0x5c026000, 0x0401ff05,
8304 0x0201f800, 0x00102074, 0x0201f000, 0x0002077d,
8305 0x0401ff00, 0x42000000, 0x00000001, 0x0401f0c7,
8306 0x4933c857, 0x59340200, 0x8c000500, 0x0400000d,
8307 0x4d3c0000, 0x417a7800, 0x0201f800, 0x00104567,
8308 0x5c027800, 0x0201f800, 0x00103b25, 0x04000005,
8309 0x42000800, 0x00000006, 0x0201f800, 0x00104571,
8310 0x1c01f000, 0x4933c857, 0x59a80816, 0x82040580,
8311 0x00000074, 0x0400000e, 0x4807c857, 0x82040580,
8312 0x00000100, 0x040200a0, 0x59cc0408, 0x4803c857,
8313 0x8c000500, 0x0400009c, 0x59341403, 0x82080580,
8314 0x000007fe, 0x04000006, 0x0401f097, 0x59341403,
8315 0x82080580, 0x000007fe, 0x04020003, 0x0401fa9c,
8316 0x0401f04c, 0x0201f800, 0x0010462a, 0x59341403,
8317 0x82080580, 0x000007fc, 0x0402001f, 0x4a026802,
8318 0x00fffffc, 0x0201f800, 0x00109037, 0x04000012,
8319 0x0201f800, 0x00109597, 0x0402000f, 0x0401f8a9,
8320 0x41780800, 0x4d400000, 0x42028000, 0x00000000,
8321 0x0201f800, 0x0010943b, 0x5c028000, 0x42000800,
8322 0x00000004, 0x0201f800, 0x00104571, 0x0201f000,
8323 0x0002077d, 0x42000800, 0x00000004, 0x0201f800,
8324 0x00104571, 0x0201f800, 0x00102074, 0x0201f000,
8325 0x0002077d, 0x59a80005, 0x8c000514, 0x04000011,
8326 0x0201f800, 0x0010513b, 0x42001000, 0x00000010,
8327 0x04020009, 0x59340002, 0x82000500, 0x00ff0000,
8328 0x82000580, 0x00ff0000, 0x04000006, 0x42001000,
8329 0x00000008, 0x0201f800, 0x00104c6d, 0x0402005a,
8330 0x0201f800, 0x00109037, 0x0400005b, 0x0201f800,
8331 0x00109597, 0x04020005, 0x592c0404, 0x8c00051c,
8332 0x040207c9, 0x0401f877, 0x42000800, 0x00000005,
8333 0x0201f800, 0x00104571, 0x4a026203, 0x00000001,
8334 0x4a026403, 0x00000003, 0x0201f000, 0x0010672b,
8335 0x59cc0408, 0x8c000518, 0x04000010, 0x0201f800,
8336 0x001092e5, 0x0201f800, 0x0010513b, 0x04000004,
8337 0x59cc0408, 0x8c000516, 0x040207b3, 0x59a80026,
8338 0x8400054a, 0x48035026, 0x59a80010, 0x84000570,
8339 0x48038832, 0x0401f7ac, 0x42001000, 0x000000ef,
8340 0x480b5010, 0x497b8830, 0x84081570, 0x480b8832,
8341 0x59c40802, 0x84040d4c, 0x48078802, 0x0201f800,
8342 0x0010930f, 0x59a80026, 0x84000548, 0x48035026,
8343 0x0201f800, 0x0010a3da, 0x0402079b, 0x59a80026,
8344 0x8400054c, 0x48035026, 0x42000800, 0x00000006,
8345 0x0201f800, 0x00104571, 0x417a7800, 0x0201f800,
8346 0x00104567, 0x42000000, 0x000000e8, 0x0201f800,
8347 0x00105c9a, 0x02000800, 0x001045a6, 0x02020800,
8348 0x001005d8, 0x49366009, 0x59340200, 0x8400051a,
8349 0x48026a00, 0x42000800, 0x00000003, 0x0201f800,
8350 0x00104571, 0x4a026406, 0x00000001, 0x4a026203,
8351 0x00000001, 0x4a026403, 0x00000002, 0x0201f000,
8352 0x0010672b, 0x0401fe43, 0x42000000, 0x00000001,
8353 0x0401f00a, 0x599c0017, 0x8c00050a, 0x040007ab,
8354 0x42000800, 0x00000004, 0x0201f800, 0x00104571,
8355 0x0201f000, 0x0002077d, 0x4933c857, 0x80003540,
8356 0x04000005, 0x42000800, 0x00000007, 0x0201f800,
8357 0x00104571, 0x801831c0, 0x0402000e, 0x59302008,
8358 0x801021c0, 0x04000004, 0x58100404, 0x8c00051e,
8359 0x04020008, 0x59341c03, 0x42002000, 0x00000004,
8360 0x42003000, 0x00000012, 0x0201f800, 0x00103aae,
8361 0x0201f800, 0x00102074, 0x0201f000, 0x0002077d,
8362 0x4c5c0000, 0x4d2c0000, 0x59325808, 0x0201f800,
8363 0x00105755, 0x5c025800, 0x59cc0008, 0x48002805,
8364 0x59cc0009, 0x48002806, 0x49782807, 0x49782808,
8365 0x49782809, 0x4978280a, 0x59cc0013, 0x8c00053e,
8366 0x04000009, 0x59cc0414, 0x900001c0, 0x59ccbc15,
8367 0x805c0540, 0x48002807, 0x59cc0416, 0x900001c0,
8368 0x48002808, 0x59cc0017, 0x8c00053e, 0x04000009,
8369 0x59cc0418, 0x900001c0, 0x59ccbc19, 0x805c0540,
8370 0x48002809, 0x59cc041a, 0x900001c0, 0x4800280a,
8371 0x5c00b800, 0x1c01f000, 0x4933c857, 0x59a80016,
8372 0x82000580, 0x00000014, 0x04020048, 0x59a80005,
8373 0x8c000514, 0x04000015, 0x0201f800, 0x0010513b,
8374 0x42001000, 0x00000010, 0x04020009, 0x59340002,
8375 0x82000500, 0x00ff0000, 0x82000580, 0x00ff0000,
8376 0x0400000a, 0x42001000, 0x00000008, 0x0201f800,
8377 0x00104c6d, 0x04000005, 0x59a80005, 0x84000556,
8378 0x48035005, 0x0401f031, 0x836c0580, 0x00000003,
8379 0x0402000b, 0x59300008, 0x80000540, 0x04020008,
8380 0x59341c03, 0x42002000, 0x00000006, 0x42003000,
8381 0x00000013, 0x0201f800, 0x00103aae, 0x0201f800,
8382 0x0010468d, 0x0401fecf, 0x0401fa1d, 0x0402001f,
8383 0x59340404, 0x80000540, 0x0400001c, 0x42000800,
8384 0x00000006, 0x0201f800, 0x00104571, 0x0201f800,
8385 0x00109037, 0x04000011, 0x0201f800, 0x00109597,
8386 0x0402000a, 0x41780800, 0x4d400000, 0x42028000,
8387 0x00000000, 0x0201f800, 0x0010943b, 0x5c028000,
8388 0x0201f000, 0x0002077d, 0x4a025a04, 0x00000103,
8389 0x4a025805, 0x02000000, 0x0201f800, 0x00102074,
8390 0x0201f000, 0x0002077d, 0x0201f800, 0x00104c19,
8391 0x0201f800, 0x00109037, 0x04000007, 0x0201f800,
8392 0x00109597, 0x04020004, 0x0401fda2, 0x0201f000,
8393 0x0002077d, 0x0401fd9f, 0x80000580, 0x59a80005,
8394 0x8c000516, 0x04000005, 0x84000516, 0x48035005,
8395 0x82000540, 0x00000001, 0x0401ff60, 0x1c01f000,
8396 0x4933c857, 0x59a80016, 0x82000580, 0x00000014,
8397 0x0402000b, 0x42000800, 0x0000000b, 0x0201f800,
8398 0x00104571, 0x4a026203, 0x00000001, 0x4a026403,
8399 0x00000001, 0x0201f000, 0x0010672b, 0x42000000,
8400 0x00000001, 0x0401f74d, 0x4933c857, 0x40003000,
8401 0x59a80016, 0x82000580, 0x00000004, 0x0402000a,
8402 0x82183580, 0x0000000b, 0x04020005, 0x42000800,
8403 0x00000007, 0x0201f800, 0x00104571, 0x0201f000,
8404 0x0002077d, 0x42000000, 0x00000001, 0x0401f73b,
8405 0x4803c857, 0x4d2c0000, 0x4d3c0000, 0x0c01f804,
8406 0x5c027800, 0x5c025800, 0x1c01f000, 0x001080b8,
8407 0x001082ce, 0x001080b8, 0x00108323, 0x001080b8,
8408 0x00108391, 0x001082bf, 0x001080b8, 0x001080b8,
8409 0x001083b1, 0x001080b8, 0x001083c1, 0x4933c857,
8410 0x4d1c0000, 0x59301403, 0x82080580, 0x00000003,
8411 0x04000008, 0x82081580, 0x0000001e, 0x04020003,
8412 0x0201f800, 0x0002077d, 0x5c023800, 0x1c01f000,
8413 0x0401ff5a, 0x0401f7fd, 0x4933c857, 0x0201f800,
8414 0x00109037, 0x0400000b, 0x0201f800, 0x00109597,
8415 0x04020008, 0x4200b000, 0x00000002, 0x0201f800,
8416 0x0010957d, 0x0401fd43, 0x0201f000, 0x0002077d,
8417 0x0401f8f5, 0x04020030, 0x417a7800, 0x0201f800,
8418 0x00104567, 0x417a7800, 0x0201f800, 0x0010203c,
8419 0x42000000, 0x0010b864, 0x0201f800, 0x0010aa47,
8420 0x59340200, 0x84000558, 0x48026a00, 0x4a026403,
8421 0x00000002, 0x42003000, 0x00000003, 0x0201f800,
8422 0x0010a942, 0x0201f800, 0x00103b25, 0x04000011,
8423 0x4d400000, 0x41782800, 0x42003000, 0x00000005,
8424 0x42028000, 0x00000029, 0x0201f800, 0x0010a43e,
8425 0x5c028000, 0x4a026203, 0x00000007, 0x4a026406,
8426 0x00000004, 0x4a026420, 0x00000001, 0x1c01f000,
8427 0x42000800, 0x00000003, 0x0201f800, 0x00104571,
8428 0x4a026203, 0x00000001, 0x0201f800, 0x0010672b,
8429 0x0401f7f7, 0x59cc0407, 0x82000580, 0x00000009,
8430 0x0402000a, 0x59340412, 0x82000500, 0x000000ff,
8431 0x0400000c, 0x80000040, 0x48026c12, 0x4a026206,
8432 0x0000000a, 0x0401f7ea, 0x59cc0207, 0x82000500,
8433 0x0000ff00, 0x82000580, 0x00001900, 0x040007c2,
8434 0x0401fcfc, 0x80000580, 0x0401f6c4, 0x4933c857,
8435 0x59a80032, 0x80000540, 0x04000015, 0x59340403,
8436 0x82000580, 0x000007fe, 0x04020011, 0x59a80010,
8437 0x80000000, 0x48035010, 0x417a7800, 0x0201f800,
8438 0x00104567, 0x42000800, 0x00000003, 0x0201f800,
8439 0x00104571, 0x4a026203, 0x00000001, 0x4a026403,
8440 0x00000002, 0x0201f000, 0x0010672b, 0x0201f800,
8441 0x00109037, 0x04000011, 0x0201f800, 0x00109597,
8442 0x0402000e, 0x4c580000, 0x4200b000, 0x00000002,
8443 0x0201f800, 0x0010957d, 0x5c00b000, 0x0401fcd5,
8444 0x42000800, 0x00000007, 0x0201f800, 0x00104571,
8445 0x0201f000, 0x0002077d, 0x0401fcce, 0x59cc3407,
8446 0x82183500, 0x000000ff, 0x82180580, 0x00000005,
8447 0x0400001c, 0x82180580, 0x0000000b, 0x04000016,
8448 0x59cc0207, 0x82000500, 0x0000ff00, 0x04020004,
8449 0x82180580, 0x00000009, 0x04000012, 0x82000580,
8450 0x00001900, 0x0402000c, 0x82180580, 0x00000009,
8451 0x0400000c, 0x42000800, 0x00000004, 0x0201f800,
8452 0x00104571, 0x0201f800, 0x00102074, 0x0201f000,
8453 0x0002077d, 0x42000000, 0x00000001, 0x0401f677,
8454 0x0201f800, 0x00109037, 0x59325808, 0x04000008,
8455 0x592c0204, 0x82000580, 0x00000139, 0x040007f6,
8456 0x592c0404, 0x8c00051e, 0x040207f3, 0x59340403,
8457 0x82000580, 0x000007fe, 0x04020007, 0x59a80026,
8458 0x84000540, 0x48035026, 0x0201f800, 0x00104229,
8459 0x0401f7e9, 0x417a7800, 0x0201f800, 0x0010203c,
8460 0x42003000, 0x00000005, 0x0201f800, 0x0010a942,
8461 0x42000000, 0x0010b864, 0x0201f800, 0x0010aa47,
8462 0x0401f7dd, 0x4933c857, 0x0401f84d, 0x0402000b,
8463 0x42000800, 0x00000005, 0x0201f800, 0x00104571,
8464 0x4a026203, 0x00000001, 0x4a026403, 0x00000003,
8465 0x0201f000, 0x0010672b, 0x42000800, 0x00000004,
8466 0x0201f800, 0x00104571, 0x0201f800, 0x00109597,
8467 0x0402000a, 0x4c580000, 0x4200b000, 0x00000002,
8468 0x0201f800, 0x0010957d, 0x5c00b000, 0x0401fc71,
8469 0x0201f000, 0x0002077d, 0x0401fc6e, 0x80000580,
8470 0x0401f636, 0x4933c857, 0x0401f82d, 0x0402000b,
8471 0x42000800, 0x00000009, 0x0201f800, 0x00104571,
8472 0x4a026203, 0x00000001, 0x4a026403, 0x00000005,
8473 0x0201f000, 0x0010672b, 0x42000000, 0x00000001,
8474 0x0401f626, 0x4933c857, 0x0401f81d, 0x0402000b,
8475 0x42000800, 0x0000000b, 0x0201f800, 0x00104571,
8476 0x4a026203, 0x00000001, 0x4a026403, 0x00000001,
8477 0x0201f000, 0x0010672b, 0x42000000, 0x00000001,
8478 0x0401f616, 0x4933c857, 0x59cc0407, 0x82000580,
8479 0x00000003, 0x04020009, 0x59cc0207, 0x82000500,
8480 0x0000ff00, 0x82000d80, 0x00002a00, 0x04000003,
8481 0x82000d80, 0x00001e00, 0x1c01f000, 0x4933c857,
8482 0x82000540, 0x00000001, 0x1c01f000, 0x4933c857,
8483 0x4d400000, 0x4c580000, 0x59a80026, 0x82000540,
8484 0x00000003, 0x48035026, 0x0401f85c, 0x04000038,
8485 0x4d340000, 0x4d440000, 0x59a80026, 0x84000552,
8486 0x48035026, 0x0201f800, 0x00103b25, 0x0400000c,
8487 0x42028000, 0x0000002a, 0x42028800, 0x0000ffff,
8488 0x42003000, 0x00000002, 0x0201f800, 0x0010a446,
8489 0x59a80805, 0x84040d44, 0x48075005, 0x42028000,
8490 0x0000002a, 0x4d3c0000, 0x42027800, 0x00000204,
8491 0x0201f800, 0x00101fe5, 0x5c027800, 0x42000000,
8492 0x0010b864, 0x0201f800, 0x0010aa47, 0x0201f800,
8493 0x00101e45, 0x4200b000, 0x00000010, 0x42028800,
8494 0x000007f0, 0x4d2c0000, 0x83440580, 0x000007fe,
8495 0x04000003, 0x0201f800, 0x001045fb, 0x81468800,
8496 0x8058b040, 0x040207f9, 0x5c025800, 0x59cc0408,
8497 0x8c00051e, 0x04000004, 0x59a80026, 0x84000512,
8498 0x48035026, 0x5c028800, 0x5c026800, 0x0201f800,
8499 0x0010462a, 0x4a026802, 0x00fffffe, 0x59a80826,
8500 0x84040d50, 0x59cc0013, 0x8c00053e, 0x04000003,
8501 0x8c000536, 0x04000004, 0x59cc0017, 0x8c000536,
8502 0x04020002, 0x84040d10, 0x48075026, 0x59cc0800,
8503 0x82040d00, 0x00ffffff, 0x48075010, 0x80040110,
8504 0x4803501d, 0x48038881, 0x0201f800, 0x0010513b,
8505 0x04000007, 0x59cc0009, 0x48035035, 0x59cc000a,
8506 0x48035036, 0x0201f800, 0x001092e5, 0x5c00b000,
8507 0x5c028000, 0x1c01f000, 0x4933c857, 0x4c580000,
8508 0x59a80010, 0x82000500, 0x00ffff00, 0x04000022,
8509 0x59cc1000, 0x82081500, 0x00ffff00, 0x80080580,
8510 0x04000004, 0x42000000, 0x0010b83b, 0x0401f016,
8511 0x83cc1400, 0x0000000b, 0x4200b000, 0x00000002,
8512 0x83341c00, 0x00000006, 0x0401f900, 0x04000004,
8513 0x42000000, 0x0010b83c, 0x0401f00b, 0x83cc1400,
8514 0x0000000d, 0x4200b000, 0x00000002, 0x83341c00,
8515 0x00000008, 0x0401f8f5, 0x04000007, 0x42000000,
8516 0x0010b83d, 0x0201f800, 0x0010aa47, 0x82000540,
8517 0x00000001, 0x5c00b000, 0x1c01f000, 0x4933c857,
8518 0x59cc0206, 0x82000580, 0x00000014, 0x04020016,
8519 0x59cc0407, 0x82000580, 0x00000800, 0x04020012,
8520 0x59cc0207, 0x8c00051a, 0x0400000d, 0x82000500,
8521 0x00000f00, 0x82000580, 0x00000100, 0x04020008,
8522 0x59cc020a, 0x8c000508, 0x04020003, 0x8c00050a,
8523 0x04000003, 0x80000580, 0x1c01f000, 0x82000540,
8524 0x00000001, 0x1c01f000, 0x4933c857, 0x4943c857,
8525 0x493fc857, 0x4c5c0000, 0x4d300000, 0x4d340000,
8526 0x4d2c0000, 0x4d380000, 0x4130b800, 0x42026000,
8527 0x0010d1c0, 0x59a8000e, 0x81640480, 0x040210bd,
8528 0x8d3e7d12, 0x04000004, 0x405c0000, 0x81300580,
8529 0x040000b3, 0x59300406, 0x82000c80, 0x00000012,
8530 0x04021015, 0x59326809, 0x0c01f001, 0x0010854f,
8531 0x001084bc, 0x001084d3, 0x001084de, 0x001084b7,
8532 0x001084ce, 0x00108507, 0x0010854f, 0x001084b5,
8533 0x0010851b, 0x0010852a, 0x001084b5, 0x001084b5,
8534 0x001084b5, 0x001084b5, 0x0010854f, 0x00108540,
8535 0x00108538, 0x0201f800, 0x001005d8, 0x8d3e7d18,
8536 0x04000004, 0x59300420, 0x8c000500, 0x04020094,
8537 0x59300403, 0x82000580, 0x00000043, 0x04000090,
8538 0x0201f800, 0x00109134, 0x02000800, 0x00102074,
8539 0x0201f800, 0x0010914e, 0x02000800, 0x0010801c,
8540 0x8d3e7d06, 0x04000084, 0x0201f800, 0x001092d7,
8541 0x04000083, 0x0401f080, 0x8d3e7d16, 0x04000004,
8542 0x59300420, 0x8c000500, 0x0402007d, 0x59325808,
8543 0x0201f800, 0x00109037, 0x04000077, 0x49425a06,
8544 0x497a5c09, 0x0201f800, 0x000202da, 0x0201f800,
8545 0x0010912a, 0x0401f070, 0x813669c0, 0x02000800,
8546 0x001005d8, 0x8d3e7d06, 0x04000004, 0x59340200,
8547 0x8c00050e, 0x0402006a, 0x59300004, 0x8400055c,
8548 0x48026004, 0x59300203, 0x82000580, 0x00000004,
8549 0x02000800, 0x00100e99, 0x59325808, 0x0201f800,
8550 0x00109037, 0x0400005c, 0x4a025a04, 0x00000103,
8551 0x59300402, 0x48025c06, 0x592c0408, 0x8c000512,
8552 0x04000006, 0x4d2c0000, 0x592e5809, 0x0201f800,
8553 0x001007fd, 0x5c025800, 0x49425a06, 0x497a5c09,
8554 0x0201f800, 0x0010959c, 0x0201f800, 0x000202da,
8555 0x0201f800, 0x0010912a, 0x0401f047, 0x8c000518,
8556 0x04000047, 0x59300203, 0x82000580, 0x00000004,
8557 0x02000800, 0x00100e99, 0x59325808, 0x0201f800,
8558 0x00109037, 0x0400003c, 0x49425a06, 0x497a5c09,
8559 0x0201f800, 0x0010a693, 0x0201f800, 0x0010959c,
8560 0x0201f800, 0x000202da, 0x0401f033, 0x0201f800,
8561 0x001062d5, 0x04000032, 0x59300203, 0x82000580,
8562 0x00000004, 0x04020004, 0x0201f800, 0x00100e99,
8563 0x0401f02b, 0x42027000, 0x00000047, 0x0201f800,
8564 0x000207a1, 0x0401f026, 0x59300203, 0x82000580,
8565 0x00000004, 0x02000800, 0x00100e99, 0x59325808,
8566 0x0201f800, 0x00109037, 0x0400001b, 0x49425a06,
8567 0x497a5c09, 0x0201f800, 0x000202da, 0x0401f016,
8568 0x833c0500, 0x00001800, 0x04000015, 0x8d3e7d16,
8569 0x04020013, 0x59325817, 0x0201f800, 0x001007fd,
8570 0x59300203, 0x82000580, 0x00000004, 0x02000800,
8571 0x00100e99, 0x59325808, 0x0201f800, 0x00109037,
8572 0x04000005, 0x49425a06, 0x497a5c09, 0x0201f800,
8573 0x000202da, 0x0201f800, 0x00107911, 0x83326400,
8574 0x00000024, 0x41580000, 0x81300480, 0x04001742,
8575 0x5c027000, 0x5c025800, 0x5c026800, 0x5c026000,
8576 0x5c00b800, 0x1c01f000, 0x5c000000, 0x4c000000,
8577 0x4803c857, 0x480bc857, 0x480fc857, 0x485bc857,
8578 0x50080800, 0x500c0000, 0x80042580, 0x04020007,
8579 0x80081000, 0x800c1800, 0x8058b040, 0x040207f9,
8580 0x80000580, 0x1c01f000, 0x4803c857, 0x4807c857,
8581 0x480bc857, 0x480fc857, 0x80040480, 0x04001006,
8582 0x42000000, 0x00000001, 0x82040d40, 0x00000001,
8583 0x1c01f000, 0x41780000, 0x0401f7fc, 0x83380480,
8584 0x00000053, 0x02021800, 0x001005d8, 0x83380480,
8585 0x0000004b, 0x02001800, 0x001005d8, 0x0c01f001,
8586 0x0010858a, 0x0010858a, 0x0010858a, 0x0010858a,
8587 0x00108588, 0x00108588, 0x00108588, 0x0010858a,
8588 0x0201f800, 0x001005d8, 0x493bc857, 0x4a026203,
8589 0x0000000d, 0x493a6403, 0x42000800, 0x80000000,
8590 0x0201f000, 0x00020721, 0x83380580, 0x00000013,
8591 0x04020008, 0x59300403, 0x82000580, 0x00000050,
8592 0x02020800, 0x001005d8, 0x0201f000, 0x0002077d,
8593 0x4933c857, 0x83380580, 0x00000027, 0x04020030,
8594 0x4933c857, 0x0201f800, 0x00106bbf, 0x4d3c0000,
8595 0x417a7800, 0x0201f800, 0x0010203c, 0x5c027800,
8596 0x42000000, 0x0010b864, 0x0201f800, 0x0010aa47,
8597 0x4d2c0000, 0x59325808, 0x0201f800, 0x00109037,
8598 0x492fc857, 0x0400000d, 0x4a025a04, 0x00000103,
8599 0x59300c02, 0x48065c06, 0x4a025a06, 0x00000029,
8600 0x497a5c09, 0x592c0c08, 0x84040d50, 0x48065c08,
8601 0x0201f800, 0x000202da, 0x5c025800, 0x42003000,
8602 0x00000015, 0x41782800, 0x42002000, 0x00000003,
8603 0x4d400000, 0x4d440000, 0x59368c03, 0x42028000,
8604 0x00000029, 0x0201f800, 0x0010985e, 0x5c028800,
8605 0x5c028000, 0x0201f000, 0x0002077d, 0x83380580,
8606 0x00000014, 0x0402000c, 0x59300403, 0x82000c80,
8607 0x00000053, 0x02021800, 0x001005d8, 0x82000480,
8608 0x00000040, 0x02001800, 0x001005d8, 0x4803c857,
8609 0x0c01f00e, 0x83380580, 0x00000053, 0x0400000a,
8610 0x83380580, 0x00000048, 0x02020800, 0x001005d8,
8611 0x59300403, 0x82000580, 0x00000050, 0x02020800,
8612 0x001005d8, 0x1c01f000, 0x001085ff, 0x001085fd,
8613 0x001085fd, 0x001085fd, 0x001085fd, 0x001085fd,
8614 0x001085fd, 0x001085fd, 0x001085fd, 0x001085fd,
8615 0x001085fd, 0x00108616, 0x00108616, 0x00108616,
8616 0x00108616, 0x001085fd, 0x00108616, 0x001085fd,
8617 0x00108616, 0x0201f800, 0x001005d8, 0x4933c857,
8618 0x0201f800, 0x00106bbf, 0x0201f800, 0x00109037,
8619 0x02000000, 0x0002077d, 0x4d2c0000, 0x59325808,
8620 0x4a025a04, 0x00000103, 0x59300402, 0x48025c06,
8621 0x4a025a06, 0x00000006, 0x497a5c09, 0x0201f800,
8622 0x000202da, 0x5c025800, 0x0201f800, 0x0010912a,
8623 0x0201f000, 0x0002077d, 0x4933c857, 0x0201f800,
8624 0x00106bbf, 0x0201f000, 0x0002077d, 0x0201f800,
8625 0x001005d8, 0x5930001c, 0x800001c0, 0x02020800,
8626 0x0010984e, 0x59300004, 0x8c00053e, 0x04020029,
8627 0x59325808, 0x592c0c08, 0x59cc2a08, 0x82141d00,
8628 0x00000c00, 0x04000002, 0x59cc1809, 0x84040d58,
8629 0x48065c08, 0x82143500, 0x00000fff, 0x04020027,
8630 0x59340200, 0x8c00050e, 0x04020080, 0x0201f800,
8631 0x0002082b, 0x04020006, 0x4a025a06, 0x00000000,
8632 0x59300811, 0x800409c0, 0x0402094b, 0x4a025a04,
8633 0x00000103, 0x48065807, 0x480e580a, 0x48165c09,
8634 0x59300c02, 0x48065c06, 0x0201f800, 0x000202c1,
8635 0x0201f800, 0x001049b2, 0x59cc0208, 0x8c000518,
8636 0x02020000, 0x001091d1, 0x0201f000, 0x0002077d,
8637 0x0201f800, 0x00106f60, 0x040007d6, 0x4d3c0000,
8638 0x42027800, 0x00000002, 0x0201f800, 0x00108be3,
8639 0x5c027800, 0x0401f7cf, 0x4817c857, 0x480fc857,
8640 0x82180500, 0x000000ff, 0x0400000e, 0x592c0204,
8641 0x82000500, 0x000000ff, 0x82000580, 0x00000048,
8642 0x04020008, 0x592c0407, 0x800001c0, 0x04000005,
8643 0x0201f800, 0x0010973f, 0x0201f000, 0x00109787,
8644 0x82180d00, 0x00000c00, 0x04000004, 0x59340200,
8645 0x8c00050e, 0x04020032, 0x4a025a06, 0x00000000,
8646 0x41782000, 0x8c183510, 0x04000007, 0x59cc000c,
8647 0x82000500, 0x000000ff, 0x04000002, 0x4803c857,
8648 0x59cc200b, 0x4812580c, 0x41780000, 0x8c183512,
8649 0x04000002, 0x59cc000a, 0x4802580b, 0x80100c00,
8650 0x040007b8, 0x82041480, 0x0000001d, 0x04001006,
8651 0x592c0404, 0x8c00051e, 0x0400000e, 0x42000800,
8652 0x0000001c, 0x4c500000, 0x4c540000, 0x83cca400,
8653 0x0000000c, 0x832cac00, 0x0000000d, 0x0201f800,
8654 0x00108b9f, 0x5c00a800, 0x5c00a000, 0x0401f7a5,
8655 0x59300011, 0x59301402, 0x480a5c06, 0x48025807,
8656 0x480e580a, 0x48165c09, 0x0201f800, 0x00108b48,
8657 0x0201f800, 0x00108b84, 0x0401f7a6, 0x592c020a,
8658 0x8c000502, 0x040007cd, 0x592c0208, 0x8c00050e,
8659 0x040207ca, 0x59300011, 0x800c0d80, 0x040007c7,
8660 0x4803c857, 0x480fc857, 0x8c183514, 0x02000000,
8661 0x0010920f, 0x80000540, 0x040007c0, 0x4807c856,
8662 0x0201f000, 0x0010920f, 0x592c020a, 0x8c000502,
8663 0x04000782, 0x59300011, 0x800001c0, 0x0400077f,
8664 0x592c0208, 0x8c00050e, 0x0402077c, 0x0201f000,
8665 0x0010920f, 0x59cc2006, 0x59cc2807, 0x0401f035,
8666 0x0401f034, 0x1c01f000, 0x4933c857, 0x5930001c,
8667 0x800001c0, 0x02020800, 0x0010984e, 0x59325808,
8668 0x592c0c08, 0x41782800, 0x41781800, 0x84040d58,
8669 0x48065c08, 0x41783000, 0x59340200, 0x8c00050e,
8670 0x04020018, 0x0201f800, 0x0002082b, 0x04020007,
8671 0x4a025a06, 0x00000000, 0x59300811, 0x4807c857,
8672 0x800409c0, 0x040208ac, 0x4a025a04, 0x00000103,
8673 0x48065807, 0x480e580a, 0x48165c09, 0x4933c857,
8674 0x59300c02, 0x48065c06, 0x0201f800, 0x000202c1,
8675 0x0201f800, 0x001049b2, 0x0201f000, 0x0002077d,
8676 0x592c020a, 0x8c000502, 0x040007ea, 0x59300011,
8677 0x4803c857, 0x800001c0, 0x040007e6, 0x592c0208,
8678 0x8c00050e, 0x040207e3, 0x0201f000, 0x0010920f,
8679 0x5930001c, 0x800001c0, 0x4c100000, 0x4c140000,
8680 0x02020800, 0x0010984e, 0x5c002800, 0x5c002000,
8681 0x4a026203, 0x00000002, 0x4a026403, 0x00000043,
8682 0x59325808, 0x592c020a, 0x8c000502, 0x04020018,
8683 0x40100000, 0x592c080f, 0x80040c80, 0x40140000,
8684 0x80040480, 0x04001014, 0x48126013, 0x48166011,
8685 0x59300004, 0x8c00053e, 0x04020008, 0x497a6205,
8686 0x0201f800, 0x00100f93, 0x04020009, 0x59300804,
8687 0x0201f000, 0x00106721, 0x0201f800, 0x00106f60,
8688 0x040007f7, 0x0201f000, 0x00107974, 0x4933c857,
8689 0x1c01f000, 0x4807c857, 0x40042800, 0x0401f7eb,
8690 0x83380480, 0x00000058, 0x04021005, 0x83380480,
8691 0x00000040, 0x04001002, 0x0c01f002, 0x1c01f000,
8692 0x00108740, 0x00108740, 0x00108740, 0x00108740,
8693 0x00108740, 0x00108740, 0x00108740, 0x00108740,
8694 0x00108740, 0x00108740, 0x00108742, 0x00108740,
8695 0x00108740, 0x00108740, 0x00108740, 0x0010874f,
8696 0x00108740, 0x00108740, 0x00108740, 0x00108740,
8697 0x0010877d, 0x00108740, 0x00108740, 0x00108740,
8698 0x0201f800, 0x001005d8, 0x4933c857, 0x0201f800,
8699 0x00106dc3, 0x4a026203, 0x00000002, 0x59a80039,
8700 0x48026205, 0x59300011, 0x59300815, 0x80040c80,
8701 0x48066015, 0x0201f000, 0x00106b8a, 0x4933c857,
8702 0x0201f800, 0x00106b8a, 0x4d3c0000, 0x417a7800,
8703 0x0201f800, 0x0010203c, 0x5c027800, 0x42000000,
8704 0x0010b864, 0x0201f800, 0x0010aa47, 0x0201f800,
8705 0x00109037, 0x04000010, 0x4d2c0000, 0x59325808,
8706 0x4a025a04, 0x00000103, 0x59300402, 0x48025c06,
8707 0x4a025a06, 0x00000029, 0x497a5c09, 0x592c0c08,
8708 0x84040d50, 0x48065c08, 0x0201f800, 0x000202da,
8709 0x5c025800, 0x42003000, 0x00000014, 0x41782800,
8710 0x4d400000, 0x4d440000, 0x59368c03, 0x42002000,
8711 0x00000002, 0x42028000, 0x00000029, 0x0201f800,
8712 0x0010985e, 0x5c028800, 0x5c028000, 0x0201f000,
8713 0x0002077d, 0x4933c857, 0x59300808, 0x49780c09,
8714 0x4978080a, 0x58041408, 0x84081558, 0x48080c08,
8715 0x1c01f000, 0x4807c857, 0x8c040d3e, 0x04020023,
8716 0x497a5a06, 0x5930001f, 0x80000540, 0x04000017,
8717 0x497a5a06, 0x4c040000, 0x4c080000, 0x4c0c0000,
8718 0x4c100000, 0x4c140000, 0x58f41003, 0x40040000,
8719 0x80081480, 0x5930001f, 0x4809e803, 0x0201f800,
8720 0x00100d56, 0x5c002800, 0x5c002000, 0x5c001800,
8721 0x5c001000, 0x5c000800, 0x592c0206, 0x80000540,
8722 0x04020009, 0x0401f005, 0x592c0408, 0x8c00051c,
8723 0x04000002, 0x592c0803, 0x4807c857, 0x4a025a06,
8724 0x00000015, 0x1c01f000, 0x5930001f, 0x80000540,
8725 0x04000009, 0x4a025a06, 0x00000011, 0x5930001f,
8726 0x4c040000, 0x0201f800, 0x00100d56, 0x5c000800,
8727 0x0401f7f5, 0x4807c856, 0x4a025a06, 0x00000007,
8728 0x1c01f000, 0x83380480, 0x00000058, 0x04021007,
8729 0x83380480, 0x00000040, 0x04001004, 0x4d2c0000,
8730 0x0c01f803, 0x5c025800, 0x1c01f000, 0x001087db,
8731 0x001087db, 0x001087db, 0x001087db, 0x001087db,
8732 0x001087dd, 0x001087db, 0x001087db, 0x00108860,
8733 0x001087db, 0x001087db, 0x001087db, 0x001087db,
8734 0x001087db, 0x001087db, 0x001087db, 0x001087db,
8735 0x001087db, 0x001087db, 0x00108910, 0x00108939,
8736 0x00108918, 0x001087db, 0x00108945, 0x0201f800,
8737 0x001005d8, 0x5930001c, 0x800001c0, 0x02020800,
8738 0x0010984e, 0x59300007, 0x8c00050e, 0x0400007c,
8739 0x8c000500, 0x0400006e, 0x8c00051c, 0x04000009,
8740 0x84000500, 0x48026007, 0x59325808, 0x592c3c08,
8741 0x841c3d58, 0x481e5c08, 0x0201f000, 0x000207dd,
8742 0x59325808, 0x592c3c08, 0x841c3d58, 0x59300007,
8743 0x8c00051c, 0x040207f3, 0x481e5c08, 0x42000000,
8744 0x00000005, 0x40000000, 0x80000040, 0x040207fe,
8745 0x59300007, 0x8c00051c, 0x040207ea, 0x59cc0a08,
8746 0x592c0204, 0x82000500, 0x000000ff, 0x82000580,
8747 0x00000048, 0x0402000c, 0x497a580b, 0x82040500,
8748 0x000000ff, 0x04000008, 0x592c0407, 0x800001c0,
8749 0x04000005, 0x0201f800, 0x0010973f, 0x0201f000,
8750 0x00100e56, 0x48065c09, 0x41782000, 0x82040500,
8751 0x00000c00, 0x04000002, 0x59cc2009, 0x82043500,
8752 0x00000fff, 0x04020027, 0x481e5c08, 0x4a025a06,
8753 0x00000000, 0x801831c0, 0x02000000, 0x00100e56,
8754 0x41782000, 0x8c183510, 0x04000002, 0x59cc200b,
8755 0x4812580c, 0x41780000, 0x8c183512, 0x04000002,
8756 0x59cc000a, 0x4802580b, 0x80100c00, 0x02001800,
8757 0x001005d8, 0x02000000, 0x00100e56, 0x82041480,
8758 0x0000001d, 0x0402100c, 0x4c500000, 0x4c540000,
8759 0x83cca400, 0x0000000c, 0x832cac00, 0x0000000d,
8760 0x0401fb67, 0x5c00a800, 0x5c00a000, 0x0201f000,
8761 0x00100e56, 0x0401fb0b, 0x0201f000, 0x00100e56,
8762 0x412c7800, 0x0201f800, 0x001007e4, 0x02000800,
8763 0x001005d8, 0x492c7809, 0x841c3d52, 0x481c7c08,
8764 0x4a025a04, 0x00000103, 0x4812580a, 0x48065c09,
8765 0x583c0404, 0x583c1005, 0x583c2208, 0x48025c04,
8766 0x480a5805, 0x48125a08, 0x0401f7c8, 0x8c000524,
8767 0x04000794, 0x59325808, 0x4c000000, 0x592c0408,
8768 0x8c00051c, 0x5c000000, 0x04020003, 0x4a026011,
8769 0xffffffff, 0x84000524, 0x0401f78a, 0x1c01f000,
8770 0x59a80039, 0x48026205, 0x59325808, 0x4a026203,
8771 0x00000002, 0x592c2408, 0x59300807, 0x4933c857,
8772 0x4807c857, 0x592c0204, 0x82000500, 0x000000ff,
8773 0x82000580, 0x00000048, 0x04020004, 0x8c102500,
8774 0x02020000, 0x00109787, 0x4a025a06, 0x00000000,
8775 0x8c040d1e, 0x04000027, 0x41780800, 0x497a5c09,
8776 0x592c1c09, 0x59300011, 0x59341200, 0x497a6205,
8777 0x8c08150e, 0x0402006e, 0x4807c857, 0x4806580a,
8778 0x80000d40, 0x04020f04, 0x59300402, 0x48025c06,
8779 0x48065807, 0x4a025a04, 0x00000103, 0x4c040000,
8780 0x4c0c0000, 0x4c100000, 0x0201f800, 0x0010959c,
8781 0x5c002000, 0x5c001800, 0x5c000800, 0x8c102512,
8782 0x0402001a, 0x4c0c0000, 0x0201f800, 0x000202c1,
8783 0x0201f800, 0x001049b2, 0x5c001800, 0x8c0c1d18,
8784 0x02000000, 0x0002077d, 0x0201f000, 0x001091d1,
8785 0x4813c857, 0x8c102518, 0x0400004b, 0x41780800,
8786 0x592c1c09, 0x820c0580, 0x00001000, 0x040007d6,
8787 0x8c102512, 0x040007d4, 0x592c7809, 0x583c080a,
8788 0x583c1c09, 0x0401f7d0, 0x4807c857, 0x592c7809,
8789 0x59300402, 0x592c1404, 0x8c08151e, 0x0402000d,
8790 0x592c1206, 0x48007c06, 0x48047807, 0x48087a06,
8791 0x84102512, 0x48107c08, 0x4c0c0000, 0x0201f800,
8792 0x001007fd, 0x403e5800, 0x0401faca, 0x0401f7d9,
8793 0x48025c06, 0x48065807, 0x583c080c, 0x583c000b,
8794 0x80040c00, 0x82041480, 0x0000001d, 0x04001006,
8795 0x583c1001, 0x480a5801, 0x49787801, 0x42000800,
8796 0x0000001c, 0x82040c00, 0x00000014, 0x4c0c0000,
8797 0x4c500000, 0x4c540000, 0x823ca400, 0x00000008,
8798 0x832cac00, 0x00000008, 0x4c100000, 0x4c3c0000,
8799 0x0401facb, 0x5c007800, 0x5c002000, 0x5c00a800,
8800 0x5c00a000, 0x84102512, 0x48125c08, 0x403e5800,
8801 0x0201f800, 0x001007fd, 0x42034000, 0x0010b4a4,
8802 0x59a1d81e, 0x80edd9c0, 0x02000800, 0x001005d8,
8803 0x48efc857, 0x58ec0009, 0x4803c857, 0x0801f800,
8804 0x0401f7ac, 0x4933c857, 0x1c01f000, 0x59301414,
8805 0x480bc857, 0x8c08151c, 0x0402000e, 0x80000540,
8806 0x4803c857, 0x0400078d, 0x80042c80, 0x0402178b,
8807 0x8c081514, 0x04020005, 0x592c080f, 0x4807c857,
8808 0x80040480, 0x48026016, 0x8408155c, 0x480a6414,
8809 0x59301007, 0x8408151e, 0x480a6007, 0x4a025c09,
8810 0x00000001, 0x0201f800, 0x0010959c, 0x497a5c09,
8811 0x8c102512, 0x04000006, 0x4d2c0000, 0x403e5800,
8812 0x0201f800, 0x001007fd, 0x5c025800, 0x82102500,
8813 0xffffedff, 0x48125c08, 0x0201f000, 0x0010920f,
8814 0x59325808, 0x592c0408, 0x8c000518, 0x04000004,
8815 0x412df800, 0x0201f000, 0x00100e6f, 0x1c01f000,
8816 0x4933c857, 0x59325808, 0x497a5c09, 0x4a025a06,
8817 0x00000000, 0x4a025a04, 0x00000103, 0x59300811,
8818 0x4807c857, 0x800409c0, 0x0402000a, 0x48065807,
8819 0x59300c02, 0x48065c06, 0x0201f800, 0x000202c1,
8820 0x0201f800, 0x001049b2, 0x0201f000, 0x0002077d,
8821 0x59340200, 0x8c00050e, 0x04020005, 0x59300811,
8822 0x0401fe55, 0x48065807, 0x0401f7f2, 0x592c0208,
8823 0x8c00050e, 0x040207fa, 0x4933c857, 0x0201f000,
8824 0x0010920f, 0x4933c857, 0x59325808, 0x812e59c0,
8825 0x02000800, 0x001005d8, 0x592c020a, 0x8c000502,
8826 0x02000800, 0x001005d8, 0x4a026206, 0x00000002,
8827 0x1c01f000, 0x5930001c, 0x800001c0, 0x02020800,
8828 0x0010984e, 0x59300007, 0x4933c857, 0x4803c857,
8829 0x8c00050e, 0x04000037, 0x8c000500, 0x04000029,
8830 0x8c00051c, 0x0400000a, 0x84000500, 0x48026007,
8831 0x59325808, 0x592c3c08, 0x481fc857, 0x841c3d58,
8832 0x481e5c08, 0x0201f000, 0x000207dd, 0x59325808,
8833 0x592c3c08, 0x841c3d58, 0x59300007, 0x8c00051c,
8834 0x040207f2, 0x481e5c08, 0x42000000, 0x00000005,
8835 0x40000000, 0x80000040, 0x040207fe, 0x59300007,
8836 0x8c00051c, 0x040207e9, 0x592c0204, 0x82000500,
8837 0x000000ff, 0x82000580, 0x00000048, 0x04020003,
8838 0x497a580b, 0x0401f002, 0x497a5c09, 0x481e5c08,
8839 0x4a025a06, 0x00000000, 0x0201f000, 0x00100e56,
8840 0x8c000524, 0x040007d9, 0x59325808, 0x4c000000,
8841 0x592c0408, 0x8c00051c, 0x5c000000, 0x04020003,
8842 0x4a026011, 0xffffffff, 0x84000524, 0x0401f7cf,
8843 0x1c01f000, 0x4933c857, 0x41780800, 0x83380480,
8844 0x00000058, 0x0402100b, 0x83380480, 0x00000040,
8845 0x04001008, 0x4d2c0000, 0x59325808, 0x812e59c0,
8846 0x0c020806, 0x5c025800, 0x0201f000, 0x0002077d,
8847 0x493bc857, 0x1c01f000, 0x001089ae, 0x001089ae,
8848 0x001089ae, 0x001089ae, 0x001089ae, 0x001089b0,
8849 0x001089ae, 0x001089ae, 0x001089ae, 0x001089ae,
8850 0x001089ae, 0x001089ae, 0x001089ae, 0x001089ae,
8851 0x001089ae, 0x001089ae, 0x001089ae, 0x001089ae,
8852 0x001089ae, 0x001089ae, 0x001089b5, 0x001089ae,
8853 0x001089ae, 0x001089ae, 0x0201f800, 0x001005d8,
8854 0x59cc0a08, 0x497a5807, 0x4807c857, 0x82040d00,
8855 0x00000fff, 0x59300402, 0x48025c06, 0x4a025a04,
8856 0x00000103, 0x48065c09, 0x4a025a06, 0x00000000,
8857 0x800409c0, 0x02000000, 0x000202c1, 0x59cc0009,
8858 0x4802580a, 0x82042500, 0x00000100, 0x04000002,
8859 0x59cc200b, 0x4812580c, 0x82040500, 0x00000200,
8860 0x04000002, 0x59cc000a, 0x4802580b, 0x80100c00,
8861 0x02001800, 0x001005d8, 0x02000000, 0x000202da,
8862 0x82041480, 0x0000001d, 0x04001006, 0x592c0404,
8863 0x8c00051e, 0x0400000e, 0x42000800, 0x0000001c,
8864 0x4c500000, 0x4c540000, 0x83cca400, 0x0000000c,
8865 0x832cac00, 0x0000000d, 0x0401f9c1, 0x5c00a800,
8866 0x5c00a000, 0x0201f000, 0x000202da, 0x0401f965,
8867 0x0401f1a0, 0x83380480, 0x00000093, 0x02021800,
8868 0x001005d8, 0x83380480, 0x00000085, 0x02001800,
8869 0x001005d8, 0x0c01f001, 0x001089fd, 0x001089fb,
8870 0x001089fb, 0x00108a04, 0x001089fb, 0x001089fb,
8871 0x001089fb, 0x001089fb, 0x001089fb, 0x001089fb,
8872 0x001089fb, 0x001089fb, 0x001089fb, 0x0201f800,
8873 0x001005d8, 0x4a026203, 0x00000001, 0x493a6403,
8874 0x42000800, 0x80000040, 0x0201f000, 0x00020721,
8875 0x4933c857, 0x59cc1204, 0x480a601c, 0x59cc1404,
8876 0x0201f800, 0x00109410, 0x0400001b, 0x591c0203,
8877 0x82000580, 0x00000000, 0x04000017, 0x591c0009,
8878 0x81340580, 0x04020014, 0x4d300000, 0x4d1c0000,
8879 0x411e6000, 0x0401f9c2, 0x5c023800, 0x5c026000,
8880 0x0400000b, 0x59cc0005, 0x8c000500, 0x04020003,
8881 0x0401f98c, 0x0401f003, 0x4a023a03, 0x00000002,
8882 0x4a026403, 0x00000086, 0x0401f005, 0x0401f9a6,
8883 0x040007f5, 0x4a026403, 0x00000087, 0x4a026203,
8884 0x00000001, 0x42000800, 0x80000040, 0x0201f800,
8885 0x00020721, 0x59340200, 0x8c00050e, 0x0400000d,
8886 0x59cc1404, 0x0201f800, 0x00109410, 0x04000009,
8887 0x591c0414, 0x8c00051a, 0x04000006, 0x4d300000,
8888 0x411e6000, 0x0201f800, 0x0010921e, 0x5c026000,
8889 0x1c01f000, 0x83380580, 0x00000013, 0x0402000a,
8890 0x59300403, 0x82000d80, 0x00000086, 0x04000012,
8891 0x82000d80, 0x00000087, 0x02020800, 0x001005d8,
8892 0x0401f00d, 0x83380580, 0x00000027, 0x04000005,
8893 0x83380580, 0x00000014, 0x02020800, 0x001005d8,
8894 0x493bc857, 0x0201f800, 0x00106bbf, 0x0201f000,
8895 0x00107911, 0x4933c857, 0x0201f000, 0x00107911,
8896 0x83380580, 0x00000013, 0x04020005, 0x59300403,
8897 0x82000480, 0x00000085, 0x0c01f04d, 0x83380580,
8898 0x00000027, 0x04020041, 0x4933c857, 0x0201f800,
8899 0x00106bbf, 0x4d3c0000, 0x417a7800, 0x0201f800,
8900 0x0010203c, 0x5c027800, 0x42003000, 0x00000015,
8901 0x41782800, 0x42002000, 0x00000003, 0x42028000,
8902 0x00000029, 0x4d400000, 0x4d440000, 0x59368c03,
8903 0x0201f800, 0x0010985e, 0x5c028800, 0x5c028000,
8904 0x42000000, 0x0010b864, 0x0201f800, 0x0010aa47,
8905 0x0201f800, 0x00109037, 0x0400000c, 0x4d2c0000,
8906 0x59325808, 0x4a025a04, 0x00000103, 0x59300402,
8907 0x48025c06, 0x497a5c09, 0x49425a06, 0x0201f800,
8908 0x000202da, 0x5c025800, 0x0201f800, 0x0010912a,
8909 0x0201f000, 0x0002077d, 0x83380580, 0x00000089,
8910 0x04000005, 0x83380580, 0x0000008a, 0x02020000,
8911 0x00107974, 0x0201f800, 0x00106f60, 0x02020000,
8912 0x00107974, 0x59300a03, 0x82040580, 0x0000000a,
8913 0x0400002a, 0x82040580, 0x0000000c, 0x04000027,
8914 0x0201f800, 0x001005d8, 0x83380580, 0x00000014,
8915 0x040207ea, 0x4933c857, 0x0201f800, 0x00106bbf,
8916 0x42028000, 0x00000006, 0x0401f7d2, 0x00108aba,
8917 0x00108ab8, 0x00108ab8, 0x00108ab8, 0x00108ab8,
8918 0x00108ab8, 0x00108ac0, 0x00108ab8, 0x00108ab8,
8919 0x00108ab8, 0x00108ab8, 0x00108ab8, 0x00108ab8,
8920 0x0201f800, 0x001005d8, 0x4933c857, 0x59a80037,
8921 0x48026206, 0x4a026203, 0x0000000a, 0x1c01f000,
8922 0x4933c857, 0x59a80037, 0x48026206, 0x4a026203,
8923 0x0000000c, 0x1c01f000, 0x83380580, 0x00000089,
8924 0x04000008, 0x83380580, 0x0000008a, 0x04000032,
8925 0x4933c857, 0x493bc857, 0x0201f000, 0x00107974,
8926 0x4933c857, 0x59325808, 0x59300a1d, 0x82040580,
8927 0x00000003, 0x04020004, 0x0201f800, 0x001049b2,
8928 0x0401f00c, 0x5930021d, 0x82000580, 0x00000001,
8929 0x04020008, 0x59300c16, 0x82040580, 0x00000039,
8930 0x0400002c, 0x82040580, 0x00000035, 0x04000029,
8931 0x4c340000, 0x41306800, 0x0201f800, 0x0002075a,
8932 0x04000010, 0x4a026203, 0x00000001, 0x4a026403,
8933 0x0000001e, 0x59cc0c07, 0x48066419, 0x59cc0a07,
8934 0x48066219, 0x49366009, 0x4a026406, 0x00000001,
8935 0x42000800, 0x80000040, 0x0201f800, 0x00020721,
8936 0x40366000, 0x0201f800, 0x0002077d, 0x5c006800,
8937 0x1c01f000, 0x4933c857, 0x5930021d, 0x82000580,
8938 0x00000001, 0x04020040, 0x59300c16, 0x82040580,
8939 0x00000035, 0x04000007, 0x82040580, 0x0000001e,
8940 0x04000004, 0x82040580, 0x00000039, 0x04020036,
8941 0x4933c857, 0x4c500000, 0x4d1c0000, 0x4130a000,
8942 0x40067000, 0x0201f800, 0x001093ba, 0x04020029,
8943 0x0201f800, 0x0002075a, 0x04000026, 0x491fc857,
8944 0x4933c857, 0x83380580, 0x00000035, 0x04000004,
8945 0x83380580, 0x00000039, 0x04020002, 0x4932381c,
8946 0x493a6403, 0x4a026203, 0x00000001, 0x4a026406,
8947 0x00000001, 0x58500809, 0x4807c857, 0x48066009,
8948 0x58500c15, 0x4807c857, 0x48066415, 0x58500a15,
8949 0x4807c857, 0x48066215, 0x58500a16, 0x4807c857,
8950 0x48066216, 0x58500c19, 0x4807c857, 0x48066419,
8951 0x58500a19, 0x4807c857, 0x48066219, 0x491e601e,
8952 0x42000800, 0x80000040, 0x0201f800, 0x00020721,
8953 0x40526000, 0x5c023800, 0x5c00a000, 0x0201f000,
8954 0x0002077d, 0x5930021d, 0x82000580, 0x00000003,
8955 0x02000800, 0x001049b2, 0x0201f000, 0x0002077d,
8956 0x4803c856, 0x4c500000, 0x4c540000, 0x412c7800,
8957 0x4c3c0000, 0x42002800, 0x00000001, 0x82040480,
8958 0x00000101, 0x04001003, 0x42000800, 0x00000100,
8959 0x40043000, 0x42000800, 0x0000001c, 0x83cca400,
8960 0x0000000c, 0x832cac00, 0x0000000d, 0x0401f844,
8961 0x82183480, 0x0000001c, 0x592e5801, 0x812e59c0,
8962 0x02020800, 0x001007fd, 0x0201f800, 0x001007e4,
8963 0x04000017, 0x80142800, 0x4a025a04, 0x00000110,
8964 0x497a5c04, 0x492c7801, 0x82180c80, 0x0000003d,
8965 0x04021006, 0x40180800, 0x832cac00, 0x00000005,
8966 0x0401f82f, 0x0401f00a, 0x82183480, 0x0000003c,
8967 0x42000800, 0x0000003c, 0x412c7800, 0x832cac00,
8968 0x00000005, 0x0401f826, 0x0401f7e8, 0x5c007800,
8969 0x841429c0, 0x82142d40, 0x00000003, 0x48147a04,
8970 0x403e5800, 0x5c00a800, 0x5c00a000, 0x1c01f000,
8971 0x492fc857, 0x812e59c0, 0x0400000f, 0x4d2c0000,
8972 0x4c3c0000, 0x592c7801, 0x803c79c0, 0x04000006,
8973 0x497a5801, 0x0201f800, 0x000202da, 0x403e5800,
8974 0x0401f7f9, 0x5c007800, 0x0201f800, 0x000202da,
8975 0x5c025800, 0x1c01f000, 0x4803c856, 0x4c580000,
8976 0x82040c00, 0x00000003, 0x8004b104, 0x0201f800,
8977 0x0010ab17, 0x5c00b000, 0x1c01f000, 0x4803c856,
8978 0x4c580000, 0x82040c00, 0x00000003, 0x8004b104,
8979 0x0201f800, 0x0010ab17, 0x5c00b000, 0x1c01f000,
8980 0x591c0c06, 0x82040580, 0x00000003, 0x04000004,
8981 0x82040580, 0x00000002, 0x0402001a, 0x4d300000,
8982 0x4d2c0000, 0x411e6000, 0x59325808, 0x0201f800,
8983 0x00109037, 0x0400000f, 0x4d400000, 0x42028000,
8984 0x00000013, 0x592c0a08, 0x84040d54, 0x0201f800,
8985 0x00104e70, 0x5c028000, 0x0201f800, 0x0010959c,
8986 0x0201f800, 0x000202da, 0x0201f800, 0x0010912a,
8987 0x0201f800, 0x00107911, 0x5c025800, 0x5c026000,
8988 0x1c01f000, 0x59cc0005, 0x8c000500, 0x0402000b,
8989 0x591c0406, 0x82000580, 0x00000002, 0x04020007,
8990 0x591c0c03, 0x82040580, 0x00000085, 0x04000003,
8991 0x82040580, 0x0000008b, 0x1c01f000, 0x4933c857,
8992 0x4d3c0000, 0x42027800, 0x00000002, 0x59300406,
8993 0x82000c80, 0x00000012, 0x02021800, 0x001005d8,
8994 0x0c01f80a, 0x5c027800, 0x1c01f000, 0x4933c857,
8995 0x59300406, 0x82000c80, 0x00000012, 0x02021800,
8996 0x001005d8, 0x0c01f001, 0x00108c01, 0x00108bfe,
8997 0x00108bfe, 0x00108c29, 0x00108bfc, 0x00108bfe,
8998 0x00108c1a, 0x00108bfe, 0x00108bfc, 0x001065f4,
8999 0x00108bfe, 0x00108bfe, 0x00108bfe, 0x00108bfc,
9000 0x00108bfc, 0x00108bfc, 0x00108cf9, 0x00108bfe,
9001 0x0201f800, 0x001005d8, 0x4803c856, 0x80000580,
9002 0x1c01f000, 0x4803c856, 0x8d3e7d02, 0x04020016,
9003 0x0201f800, 0x00109037, 0x0400000f, 0x59325808,
9004 0x41780800, 0x4d400000, 0x42028000, 0x00000005,
9005 0x0201f800, 0x00104e70, 0x5c028000, 0x0201f800,
9006 0x0010959c, 0x0201f800, 0x001091cc, 0x0201f800,
9007 0x000202da, 0x0201f800, 0x00107911, 0x82000540,
9008 0x00000001, 0x1c01f000, 0x4933c857, 0x0201f800,
9009 0x001048d9, 0x0402000c, 0x4d400000, 0x42028000,
9010 0x00000010, 0x0201f800, 0x0010a1d1, 0x4a026406,
9011 0x00000006, 0x4a026203, 0x00000007, 0x5c028000,
9012 0x1c01f000, 0x4933c857, 0x0201f800, 0x00106c55,
9013 0x4df00000, 0x0401f8b8, 0x82000c80, 0x0000000e,
9014 0x02021800, 0x001005d8, 0x0c01f001, 0x00108c43,
9015 0x00108cb0, 0x00108c5a, 0x00108cc3, 0x00108cab,
9016 0x00108c41, 0x00108c43, 0x00108c43, 0x00108c47,
9017 0x00108c43, 0x00108c43, 0x00108c43, 0x00108c43,
9018 0x00108c5a, 0x0201f800, 0x001005d8, 0x5c03e000,
9019 0x02000800, 0x00106c4b, 0x0401f7b8, 0x5c03e000,
9020 0x02000800, 0x00106c4b, 0x59300406, 0x82000580,
9021 0x00000003, 0x040207b4, 0x59300203, 0x82000580,
9022 0x0000000d, 0x040007b0, 0x8d3e7d02, 0x040207ae,
9023 0x4d340000, 0x59326809, 0x0201f800, 0x001049b2,
9024 0x5c026800, 0x0401f7a8, 0x59300004, 0x8400055c,
9025 0x48026004, 0x0201f800, 0x00106c4b, 0x59300406,
9026 0x82000580, 0x00000006, 0x04000043, 0x8d3e7d02,
9027 0x04020041, 0x497a621d, 0x59300203, 0x82000580,
9028 0x0000000d, 0x04000003, 0x4a02621d, 0x00000003,
9029 0x0401fbcb, 0x04000024, 0x4d2c0000, 0x4d400000,
9030 0x59325808, 0x0201f800, 0x001091cc, 0x592c0408,
9031 0x8c000512, 0x04000009, 0x4d2c0000, 0x84000512,
9032 0x48025c08, 0x592c0809, 0x40065800, 0x0201f800,
9033 0x001007fd, 0x5c025800, 0x4d400000, 0x42028000,
9034 0x00000005, 0x592c0a08, 0x8c040d0e, 0x04000004,
9035 0x42028000, 0x00000002, 0x0401f001, 0x0201f800,
9036 0x00104e70, 0x5c028000, 0x0201f800, 0x0010959c,
9037 0x0201f800, 0x000202da, 0x497a6008, 0x5c028000,
9038 0x5c025800, 0x8d3e7d00, 0x04000009, 0x4d340000,
9039 0x59326809, 0x0201f800, 0x001049b2, 0x5c026800,
9040 0x0201f800, 0x00107911, 0x0401f00b, 0x4a026403,
9041 0x00000085, 0x4a026203, 0x00000009, 0x4a026406,
9042 0x00000002, 0x42000800, 0x8000404b, 0x0201f800,
9043 0x00020721, 0x5c03e000, 0x02020800, 0x00106c55,
9044 0x82000540, 0x00000001, 0x1c01f000, 0x0201f800,
9045 0x00106c4b, 0x0201f800, 0x00100e99, 0x0401f7ab,
9046 0x598c000d, 0x81300580, 0x04020004, 0x0201f800,
9047 0x00106e8e, 0x0402001b, 0x0201f800, 0x001068d3,
9048 0x04020006, 0x59300c03, 0x82040580, 0x00000040,
9049 0x0400078b, 0x0401f79d, 0x0201f800, 0x00106b6c,
9050 0x04000010, 0x0201f800, 0x001005d8, 0x0401f813,
9051 0x04020004, 0x0201f800, 0x00106e62, 0x04020009,
9052 0x0201f800, 0x001067ae, 0x040207f4, 0x59300c03,
9053 0x82040580, 0x00000040, 0x04000779, 0x0401f78b,
9054 0x59300203, 0x82000c80, 0x0000000e, 0x02021800,
9055 0x001005d8, 0x0c01f75e, 0x417a3000, 0x42032000,
9056 0x0000bf32, 0x59900004, 0x81300580, 0x04000009,
9057 0x83932400, 0x00000010, 0x811a3000, 0x83180480,
9058 0x00000005, 0x040017f8, 0x82000540, 0x00000001,
9059 0x1c01f000, 0x59300004, 0x8c00053e, 0x04000010,
9060 0x8c00050c, 0x0402000e, 0x8c000516, 0x04020006,
9061 0x82000d00, 0x0000001f, 0x82040580, 0x00000005,
9062 0x04020004, 0x42000000, 0x00000003, 0x0401f005,
9063 0x42000000, 0x00000001, 0x0401f002, 0x59300203,
9064 0x1c01f000, 0x4933c857, 0x0201f800, 0x00106c55,
9065 0x4df00000, 0x59300203, 0x82000c80, 0x0000000e,
9066 0x02021800, 0x001005d8, 0x0c01f001, 0x00108d13,
9067 0x00108d30, 0x00108d17, 0x00108d11, 0x00108d11,
9068 0x00108d11, 0x00108d11, 0x00108d11, 0x00108d11,
9069 0x00108d11, 0x00108d11, 0x00108d11, 0x00108d11,
9070 0x00108d11, 0x0201f800, 0x001005d8, 0x5c03e000,
9071 0x02000800, 0x00106c4b, 0x0401f6e8, 0x5c03e000,
9072 0x02000800, 0x00106c4b, 0x4d2c0000, 0x59325808,
9073 0x59300403, 0x82000580, 0x00000052, 0x02000800,
9074 0x00101231, 0x0401fb16, 0x02000800, 0x001005d8,
9075 0x4a025a06, 0x00000005, 0x0201f800, 0x000202da,
9076 0x0201f800, 0x00104c19, 0x0201f800, 0x00107911,
9077 0x5c025800, 0x82000540, 0x00000001, 0x1c01f000,
9078 0x598c000d, 0x81300580, 0x0402001a, 0x59300004,
9079 0x8c000520, 0x04000004, 0x84000520, 0x48026004,
9080 0x0401f01a, 0x42001000, 0x0010b7f6, 0x50081000,
9081 0x58080002, 0x82000580, 0x00000100, 0x0400000a,
9082 0x5808000c, 0x81300580, 0x02020800, 0x001005d8,
9083 0x0201f800, 0x001068d3, 0x02020800, 0x001005d8,
9084 0x0401f7cf, 0x0201f800, 0x00106e8e, 0x0402000c,
9085 0x59300004, 0x8c000520, 0x04000004, 0x84000520,
9086 0x48026004, 0x0401f7c6, 0x0201f800, 0x001068d3,
9087 0x040007c3, 0x0201f800, 0x001005d8, 0x59300203,
9088 0x82000c80, 0x0000000e, 0x02021800, 0x001005d8,
9089 0x0c01f7a7, 0x59300406, 0x4933c857, 0x4803c857,
9090 0x82000c80, 0x00000012, 0x02021800, 0x001005d8,
9091 0x0c01f001, 0x00108d7c, 0x00108e41, 0x00108f79,
9092 0x00108d88, 0x00107911, 0x00108d7c, 0x0010a1c0,
9093 0x0002077d, 0x00108e41, 0x001065ce, 0x00108fda,
9094 0x00108d77, 0x00108d77, 0x00108d77, 0x00108d77,
9095 0x00108d77, 0x001096eb, 0x001096eb, 0x0201f800,
9096 0x001005d8, 0x0401fbd5, 0x02000000, 0x0010801c,
9097 0x1c01f000, 0x0201f800, 0x00106c55, 0x0201f800,
9098 0x00106bbf, 0x0201f800, 0x00106c4b, 0x0201f000,
9099 0x0002077d, 0x4a026206, 0x00000001, 0x1c01f000,
9100 0x42000000, 0x0010b872, 0x0201f800, 0x0010aa47,
9101 0x4d2c0000, 0x4d400000, 0x417a5800, 0x0401faa8,
9102 0x04000007, 0x59325808, 0x592c0208, 0x8400054c,
9103 0x48025a08, 0x42028000, 0x00000006, 0x0201f800,
9104 0x00106c55, 0x0401ff4c, 0x4803c857, 0x82000c80,
9105 0x0000000e, 0x02021800, 0x001005d8, 0x0c01f806,
9106 0x0201f800, 0x00106c4b, 0x5c028000, 0x5c025800,
9107 0x1c01f000, 0x00108e40, 0x00108db5, 0x00108dc3,
9108 0x00108de5, 0x00108e11, 0x00108db3, 0x00108d7c,
9109 0x00108d7c, 0x00108d7c, 0x00108db3, 0x00108db3,
9110 0x00108db3, 0x00108db3, 0x00108dc3, 0x0201f800,
9111 0x001005d8, 0x598c000d, 0x81300580, 0x04020004,
9112 0x0201f800, 0x00106e8e, 0x04020038, 0x0201f800,
9113 0x001068d3, 0x0400003b, 0x0201f800, 0x00106b6c,
9114 0x04000032, 0x0201f800, 0x001005d8, 0x497a621d,
9115 0x812e59c0, 0x02000800, 0x001005d8, 0x592c0204,
9116 0x82000500, 0x000000ff, 0x82000580, 0x00000014,
9117 0x04000003, 0x4a02621d, 0x00000003, 0x592c0a08,
9118 0x0201f800, 0x00104e70, 0x0201f800, 0x0010959c,
9119 0x0201f800, 0x000202da, 0x497a6008, 0x4a026403,
9120 0x00000085, 0x4a026203, 0x00000009, 0x4a026406,
9121 0x00000002, 0x4a026004, 0x8000404b, 0x0201f800,
9122 0x00106c4b, 0x42000800, 0x8000404b, 0x0201f000,
9123 0x00020721, 0x0401fef1, 0x04020004, 0x0201f800,
9124 0x00106e62, 0x04020009, 0x0201f800, 0x001067ae,
9125 0x040207d2, 0x59300c03, 0x82040580, 0x00000040,
9126 0x04000008, 0x0401f7d2, 0x59300203, 0x82000c80,
9127 0x0000000e, 0x02021800, 0x001005d8, 0x0c01f7ae,
9128 0x0201f800, 0x00106c4b, 0x812e59c0, 0x04000013,
9129 0x592c0a08, 0x0201f800, 0x00104e70, 0x0201f800,
9130 0x0010959c, 0x0201f800, 0x000202da, 0x59300203,
9131 0x82000580, 0x0000000d, 0x04000008, 0x0201f800,
9132 0x00106c4b, 0x4d340000, 0x59326809, 0x0201f800,
9133 0x001049b2, 0x5c026800, 0x0201f800, 0x00107911,
9134 0x0401f030, 0x812e59c0, 0x02000800, 0x001005d8,
9135 0x0201f800, 0x0010940a, 0x04020004, 0x0201f800,
9136 0x00100e99, 0x0401f7aa, 0x0201f800, 0x00106c4b,
9137 0x592c0208, 0x8400050c, 0x48025a08, 0x592c0406,
9138 0x800000c2, 0x800008c4, 0x80040c00, 0x48066206,
9139 0x42000000, 0x10000000, 0x41300800, 0x0201f800,
9140 0x00100b94, 0x0400000d, 0x592c0208, 0x8c00051c,
9141 0x04020006, 0x8400055c, 0x48025a08, 0x4a026206,
9142 0x00000002, 0x0401f00f, 0x4d300000, 0x0201f800,
9143 0x001012e5, 0x5c026000, 0x59300203, 0x82000580,
9144 0x00000004, 0x04020007, 0x4d380000, 0x42027000,
9145 0x00000048, 0x0201f800, 0x000207a1, 0x5c027000,
9146 0x1c01f000, 0x42000000, 0x0010b86e, 0x0201f800,
9147 0x0010aa47, 0x59300203, 0x82000c80, 0x0000000e,
9148 0x02021800, 0x001005d8, 0x4803c857, 0x0c01f001,
9149 0x00108e5a, 0x00108d85, 0x00108e5c, 0x00108e5a,
9150 0x00108e5c, 0x00108e5c, 0x00108d7d, 0x00108e5a,
9151 0x00108d79, 0x00108e5a, 0x00108e5a, 0x00108e5a,
9152 0x00108e5a, 0x00108e5a, 0x0201f800, 0x001005d8,
9153 0x4d340000, 0x4d2c0000, 0x59326809, 0x59340400,
9154 0x82000500, 0x000000ff, 0x82000c80, 0x0000000c,
9155 0x02021800, 0x001005d8, 0x59303403, 0x82180d80,
9156 0x00000004, 0x04020004, 0x42000000, 0x00000001,
9157 0x0401f006, 0x82180d80, 0x00000000, 0x04020003,
9158 0x42000000, 0x00000001, 0x4803c857, 0x0c01f804,
9159 0x5c025800, 0x5c026800, 0x1c01f000, 0x00108e83,
9160 0x00108f22, 0x00108e85, 0x00108eba, 0x00108e85,
9161 0x00108f3f, 0x00108e85, 0x00108e8f, 0x00108e83,
9162 0x00108f3f, 0x00108e83, 0x00108e9e, 0x0201f800,
9163 0x001005d8, 0x59300403, 0x82000d80, 0x00000016,
9164 0x0400002e, 0x82000d80, 0x00000004, 0x0400002b,
9165 0x82000d80, 0x00000002, 0x04000028, 0x0401fabf,
9166 0x04000079, 0x59300403, 0x82000d80, 0x00000022,
9167 0x040000ae, 0x82000d80, 0x00000039, 0x040000b3,
9168 0x82000d80, 0x00000035, 0x040000b0, 0x82000d80,
9169 0x0000001e, 0x0400001b, 0x0401f999, 0x04000007,
9170 0x0201f800, 0x00109597, 0x04020004, 0x0201f800,
9171 0x00104a14, 0x0401f011, 0x59300403, 0x82000d80,
9172 0x00000001, 0x04020004, 0x0201f800, 0x001049e7,
9173 0x0400000a, 0x4d3c0000, 0x417a7800, 0x0201f800,
9174 0x0010203c, 0x5c027800, 0x42000000, 0x0010b864,
9175 0x0201f800, 0x0010aa47, 0x0201f800, 0x0010801c,
9176 0x0201f000, 0x00107911, 0x0401f97d, 0x04000004,
9177 0x0201f800, 0x00109597, 0x040000a9, 0x59300c03,
9178 0x82040580, 0x00000016, 0x04000056, 0x82040580,
9179 0x00000002, 0x04020034, 0x59a80026, 0x8c000502,
9180 0x04020013, 0x0201f800, 0x0010513b, 0x04020010,
9181 0x0201f800, 0x00105151, 0x04020006, 0x42000000,
9182 0x00000001, 0x0201f800, 0x00105113, 0x0401f094,
9183 0x4a035033, 0x00000001, 0x4202d800, 0x00000001,
9184 0x0201f800, 0x001050a2, 0x0401f08d, 0x59340403,
9185 0x82000580, 0x000007fc, 0x04000008, 0x59a80026,
9186 0x8c00050a, 0x04020084, 0x59340212, 0x82000500,
9187 0x0000ff00, 0x04000082, 0x59340412, 0x82000500,
9188 0x000000ff, 0x04000010, 0x80000040, 0x48026c12,
9189 0x497a6008, 0x4a026406, 0x00000007, 0x4a026206,
9190 0x00000398, 0x497a6205, 0x0201f800, 0x0002075a,
9191 0x04000005, 0x49366009, 0x4a026406, 0x00000001,
9192 0x0401f020, 0x59300403, 0x82000d80, 0x00000002,
9193 0x0402000d, 0x59340403, 0x82000580, 0x000007fe,
9194 0x04020009, 0x59a80026, 0x84000540, 0x48035026,
9195 0x0201f800, 0x00104237, 0x0201f800, 0x0010801c,
9196 0x0401f00c, 0x0201f800, 0x0010801c, 0x4d3c0000,
9197 0x417a7800, 0x0201f800, 0x0010203c, 0x5c027800,
9198 0x42000000, 0x0010b864, 0x0201f800, 0x0010aa47,
9199 0x0201f800, 0x00102074, 0x0201f000, 0x00107911,
9200 0x42000800, 0x00000003, 0x0201f800, 0x00104571,
9201 0x4a026203, 0x00000001, 0x4a026403, 0x00000002,
9202 0x0201f000, 0x0010672b, 0x0401f915, 0x04020793,
9203 0x0201f800, 0x00102074, 0x4d3c0000, 0x417a7800,
9204 0x0201f800, 0x0010203c, 0x5c027800, 0x42000000,
9205 0x0010b864, 0x0201f800, 0x0010aa47, 0x42003000,
9206 0x00000018, 0x41782800, 0x42002000, 0x00000000,
9207 0x4d400000, 0x4d440000, 0x59368c03, 0x42028000,
9208 0x00000029, 0x0201f800, 0x0010985e, 0x5c028800,
9209 0x5c028000, 0x0201f000, 0x00107911, 0x0201f800,
9210 0x00104a14, 0x0401f7c8, 0x42000000, 0x0010b86d,
9211 0x0201f800, 0x0010aa47, 0x0201f800, 0x00107b76,
9212 0x040207c1, 0x1c01f000, 0x4d380000, 0x59327403,
9213 0x0201f800, 0x001093ba, 0x5c027000, 0x02020000,
9214 0x0002077d, 0x836c0580, 0x00000003, 0x04000004,
9215 0x4a026206, 0x00000002, 0x1c01f000, 0x59300403,
9216 0x48026416, 0x4a02621d, 0x00000001, 0x4a026403,
9217 0x00000085, 0x4a026203, 0x00000009, 0x4a026406,
9218 0x00000002, 0x42000800, 0x8000004b, 0x0201f000,
9219 0x00020721, 0x0201f800, 0x00102074, 0x0201f800,
9220 0x0010801c, 0x4d3c0000, 0x417a7800, 0x0201f800,
9221 0x0010203c, 0x5c027800, 0x42000000, 0x0010b864,
9222 0x0201f800, 0x0010aa47, 0x497a6008, 0x4a026406,
9223 0x00000007, 0x4a026206, 0x00000398, 0x497a6205,
9224 0x1c01f000, 0x42000000, 0x0010b870, 0x0201f800,
9225 0x0010aa47, 0x4d340000, 0x59326809, 0x59300203,
9226 0x82000c80, 0x0000000e, 0x02021800, 0x001005d8,
9227 0x4803c857, 0x0c01f803, 0x5c026800, 0x1c01f000,
9228 0x00108f96, 0x00108d85, 0x00108f96, 0x00108f96,
9229 0x00108f96, 0x00108f96, 0x00108f96, 0x00108f96,
9230 0x00108f96, 0x00108d85, 0x00108f98, 0x00108d85,
9231 0x00108fa0, 0x00108f96, 0x0201f800, 0x001005d8,
9232 0x4a026403, 0x0000008b, 0x4a026203, 0x0000000b,
9233 0x42000800, 0x8000404b, 0x0201f000, 0x00020721,
9234 0x59300a1d, 0x4d3c0000, 0x417a7800, 0x0201f800,
9235 0x0010203c, 0x5c027800, 0x42003000, 0x00000011,
9236 0x0201f800, 0x0010a942, 0x42000000, 0x0010b864,
9237 0x0201f800, 0x0010aa47, 0x41306800, 0x0201f800,
9238 0x0002075a, 0x04000008, 0x49366009, 0x4d300000,
9239 0x40366000, 0x0201f800, 0x00107911, 0x5c026000,
9240 0x0401f002, 0x40366000, 0x497a6008, 0x4a026406,
9241 0x00000001, 0x4a026403, 0x00000001, 0x0201f800,
9242 0x00103b25, 0x04000011, 0x4a026406, 0x00000004,
9243 0x4a026203, 0x00000007, 0x4a026420, 0x00000001,
9244 0x42003000, 0x00000004, 0x4d400000, 0x42028000,
9245 0x00000029, 0x41782800, 0x0201f800, 0x0010a43e,
9246 0x5c028000, 0x1c01f000, 0x42000800, 0x0000000b,
9247 0x0201f800, 0x00104571, 0x4a026203, 0x00000001,
9248 0x0201f000, 0x0010672b, 0x42000000, 0x0010b876,
9249 0x0201f800, 0x0010aa47, 0x59300203, 0x82000c80,
9250 0x0000000e, 0x02021800, 0x001005d8, 0x4803c857,
9251 0x0c01f001, 0x0010900b, 0x00108ff3, 0x00108ff7,
9252 0x0010900c, 0x00108ff5, 0x00108ff3, 0x00108ff3,
9253 0x00108ff3, 0x00108ff3, 0x00108ff3, 0x00108ff3,
9254 0x00108ff3, 0x00108ff3, 0x00108ff3, 0x0201f800,
9255 0x001005d8, 0x0201f800, 0x00100e99, 0x4d2c0000,
9256 0x59325808, 0x4a025a06, 0x00000006, 0x0201f800,
9257 0x000202da, 0x5c025800, 0x497a6008, 0x4a02621d,
9258 0x0000000a, 0x4a026403, 0x00000085, 0x4a026203,
9259 0x00000009, 0x4a026406, 0x00000002, 0x42000800,
9260 0x8000404b, 0x0201f000, 0x00020721, 0x1c01f000,
9261 0x0201f800, 0x00106c55, 0x4df00000, 0x0401fcc7,
9262 0x04020004, 0x0201f800, 0x00106e62, 0x0402000c,
9263 0x0201f800, 0x001067ae, 0x04020005, 0x5c03e000,
9264 0x0201f800, 0x00106c4b, 0x0401f7dd, 0x0201f800,
9265 0x00106b6c, 0x02020800, 0x001005d8, 0x5c03e000,
9266 0x0201f800, 0x00106c4b, 0x59300203, 0x82000d80,
9267 0x00000003, 0x02000800, 0x001005d8, 0x82000c80,
9268 0x0000000e, 0x02021800, 0x001005d8, 0x0c01f7ba,
9269 0x4803c856, 0x59a8000e, 0x59a80867, 0x80040400,
9270 0x80080480, 0x04021004, 0x82000540, 0x00000001,
9271 0x1c01f000, 0x80000580, 0x1c01f000, 0x4803c856,
9272 0x4c080000, 0x59301008, 0x82081500, 0xfff00000,
9273 0x5c001000, 0x1c01f000, 0x4803c856, 0x4d300000,
9274 0x0201f800, 0x0002075a, 0x0400000a, 0x0401f82f,
9275 0x4d380000, 0x42027000, 0x0000004b, 0x0201f800,
9276 0x000207a1, 0x5c027000, 0x82000540, 0x00000001,
9277 0x5c026000, 0x1c01f000, 0x4803c856, 0x4d300000,
9278 0x0201f800, 0x00107942, 0x0400001b, 0x0401f81f,
9279 0x4d300000, 0x0201f800, 0x00106c55, 0x4d3c0000,
9280 0x417a7800, 0x0201f800, 0x00106ab4, 0x0201f800,
9281 0x001067fd, 0x5c027800, 0x0201f800, 0x0010a2ff,
9282 0x0201f800, 0x00106c4b, 0x5c026000, 0x8d3e7d3e,
9283 0x0402000b, 0x4d380000, 0x42027000, 0x0000004c,
9284 0x0201f800, 0x000207a1, 0x5c027000, 0x82000540,
9285 0x00000001, 0x5c026000, 0x1c01f000, 0x0201f800,
9286 0x0002077d, 0x0401f7fa, 0x592c0407, 0x494a6017,
9287 0x494e6018, 0x49366009, 0x492e6008, 0x4a026406,
9288 0x00000003, 0x800000c2, 0x800008c4, 0x80040400,
9289 0x48026206, 0x1c01f000, 0x493bc857, 0x4d300000,
9290 0x0201f800, 0x0002075a, 0x0400000d, 0x0401ffef,
9291 0x4d400000, 0x42028000, 0x00000005, 0x0401f80d,
9292 0x5c028000, 0x8d3e7d3e, 0x04020007, 0x0201f800,
9293 0x000207a1, 0x82000540, 0x00000001, 0x5c026000,
9294 0x1c01f000, 0x0201f800, 0x0002077d, 0x0401f7fa,
9295 0x4803c856, 0x0201f800, 0x00106c55, 0x4d3c0000,
9296 0x4d440000, 0x59368c03, 0x42027800, 0x00000001,
9297 0x0201f800, 0x001069b6, 0x0201f800, 0x0010692e,
9298 0x0201f800, 0x001067fd, 0x0201f800, 0x0010a2ff,
9299 0x5c028800, 0x5c027800, 0x0201f000, 0x00106c4b,
9300 0x4803c856, 0x4d300000, 0x0201f800, 0x0002075a,
9301 0x0400000f, 0x481a601c, 0x48ee6021, 0x49366009,
9302 0x4a026406, 0x00000001, 0x492e6008, 0x4d380000,
9303 0x42027000, 0x0000001f, 0x0201f800, 0x000207a1,
9304 0x5c027000, 0x82000540, 0x00000001, 0x5c026000,
9305 0x1c01f000, 0x4803c856, 0x4d300000, 0x0201f800,
9306 0x0002075a, 0x0400000e, 0x48ee6021, 0x49366009,
9307 0x4a026406, 0x00000001, 0x492e6008, 0x4d380000,
9308 0x42027000, 0x00000055, 0x0201f800, 0x000207a1,
9309 0x5c027000, 0x82000540, 0x00000001, 0x5c026000,
9310 0x1c01f000, 0x4803c856, 0x4d300000, 0x0201f800,
9311 0x0002075a, 0x0400000f, 0x481a601c, 0x48ee6021,
9312 0x49366009, 0x4a026406, 0x00000001, 0x492e6008,
9313 0x4d380000, 0x42027000, 0x0000003d, 0x0201f800,
9314 0x000207a1, 0x5c027000, 0x82000540, 0x00000001,
9315 0x5c026000, 0x1c01f000, 0x4803c856, 0x4d300000,
9316 0x0201f800, 0x00107942, 0x04000014, 0x49366009,
9317 0x492fc857, 0x4933c857, 0x592c0404, 0x8c00051e,
9318 0x04000003, 0x48efc857, 0x48ee6021, 0x4a026406,
9319 0x00000001, 0x492e6008, 0x4d380000, 0x42027000,
9320 0x00000000, 0x0201f800, 0x000207a1, 0x5c027000,
9321 0x82000540, 0x00000001, 0x5c026000, 0x1c01f000,
9322 0x4803c856, 0x4d300000, 0x0201f800, 0x0002075a,
9323 0x0400000f, 0x48ee6021, 0x481a601c, 0x49366009,
9324 0x4a026406, 0x00000001, 0x492e6008, 0x4d380000,
9325 0x42027000, 0x00000044, 0x0201f800, 0x000207a1,
9326 0x5c027000, 0x82000540, 0x00000001, 0x5c026000,
9327 0x1c01f000, 0x4803c856, 0x4d300000, 0x0201f800,
9328 0x0002075a, 0x0400000f, 0x481a601c, 0x48ee6021,
9329 0x49366009, 0x4a026406, 0x00000001, 0x492e6008,
9330 0x4d380000, 0x42027000, 0x00000049, 0x0201f800,
9331 0x000207a1, 0x5c027000, 0x82000540, 0x00000001,
9332 0x5c026000, 0x1c01f000, 0x59300009, 0x80001540,
9333 0x02000800, 0x001005d8, 0x5808040b, 0x4803c856,
9334 0x80000040, 0x04001002, 0x4800140b, 0x1c01f000,
9335 0x4803c856, 0x59300403, 0x82000d80, 0x00000002,
9336 0x04000015, 0x82000d80, 0x00000003, 0x04000012,
9337 0x82000d80, 0x00000004, 0x0400000f, 0x82000d80,
9338 0x00000008, 0x0400000c, 0x82000d80, 0x0000000a,
9339 0x04000009, 0x599c0819, 0x8c040d0e, 0x04000004,
9340 0x82000d80, 0x00000000, 0x04000003, 0x82000540,
9341 0x00000001, 0x1c01f000, 0x4803c856, 0x4c000000,
9342 0x4d2c0000, 0x59300406, 0x82000580, 0x00000004,
9343 0x0400001d, 0x59300008, 0x80025d40, 0x800001c0,
9344 0x04000019, 0x0201f800, 0x00109597, 0x04000014,
9345 0x59300406, 0x82004580, 0x00000010, 0x04000010,
9346 0x82004580, 0x00000011, 0x0400000d, 0x82004580,
9347 0x00000003, 0x0400000c, 0x82004580, 0x00000002,
9348 0x04000009, 0x82004580, 0x0000000a, 0x04000006,
9349 0x592c0404, 0x8c00051e, 0x04000003, 0x80000580,
9350 0x0401f003, 0x82000540, 0x00000001, 0x5c025800,
9351 0x5c000000, 0x1c01f000, 0x4803c856, 0x4d300000,
9352 0x0201f800, 0x00107942, 0x04000013, 0x49366009,
9353 0x48ee6021, 0x4a026406, 0x00000001, 0x492e6008,
9354 0x4d3c0000, 0x417a7800, 0x0201f800, 0x0010203c,
9355 0x5c027800, 0x4d380000, 0x42027000, 0x00000028,
9356 0x0201f800, 0x000207a1, 0x5c027000, 0x82000540,
9357 0x00000001, 0x5c026000, 0x1c01f000, 0x4803c856,
9358 0x83380580, 0x00000015, 0x0402000d, 0x59a80016,
9359 0x82000580, 0x00000074, 0x04020009, 0x0201f800,
9360 0x0010462a, 0x4a026203, 0x00000001, 0x4a026403,
9361 0x00000029, 0x0201f000, 0x0010672b, 0x0201f800,
9362 0x0010801c, 0x0201f000, 0x0002077d, 0x4803c856,
9363 0x83380580, 0x00000016, 0x04020007, 0x42000800,
9364 0x00000004, 0x0201f800, 0x00104571, 0x0201f000,
9365 0x00107b38, 0x83380580, 0x00000015, 0x04020013,
9366 0x59a80016, 0x82000580, 0x00000014, 0x0402000f,
9367 0x0201f800, 0x0010468d, 0x0201f800, 0x0010846f,
9368 0x0402000a, 0x59340404, 0x80000540, 0x04000007,
9369 0x42000800, 0x00000006, 0x0201f800, 0x00104571,
9370 0x0201f000, 0x00107b38, 0x0201f800, 0x0010801c,
9371 0x0201f000, 0x0002077d, 0x4803c856, 0x592c0206,
9372 0x82000580, 0x00000005, 0x04000002, 0x1c01f000,
9373 0x4803c856, 0x592c0208, 0x8400054a, 0x48025a08,
9374 0x1c01f000, 0x497a6205, 0x497a6008, 0x4a026203,
9375 0x00000001, 0x4a026403, 0x00000050, 0x42000800,
9376 0x80000043, 0x0201f000, 0x00020721, 0x4933c857,
9377 0x4d340000, 0x59326809, 0x59340200, 0x8c00050e,
9378 0x04000006, 0x59300406, 0x82000c80, 0x00000012,
9379 0x04021004, 0x0c01f806, 0x5c026800, 0x1c01f000,
9380 0x0201f800, 0x00108d7c, 0x0401f7fc, 0x00108d7c,
9381 0x001091fd, 0x00109201, 0x00109204, 0x0010a49b,
9382 0x0010a4b8, 0x0010a4bc, 0x00108d7c, 0x00108d7c,
9383 0x00108d7c, 0x00108d7c, 0x00108d7c, 0x00108d7c,
9384 0x00108d7c, 0x00108d7c, 0x00108d7c, 0x00108d7c,
9385 0x00108d7c, 0x4803c856, 0x40000000, 0x40000000,
9386 0x1c01f000, 0x40000000, 0x40000000, 0x1c01f000,
9387 0x5930001c, 0x4803c857, 0x59300414, 0x4933c857,
9388 0x4803c857, 0x8c000502, 0x04000005, 0x84000502,
9389 0x84000540, 0x48026414, 0x1c01f000, 0x42000000,
9390 0xd0000000, 0x41300800, 0x0201f800, 0x00100b94,
9391 0x0401f80a, 0x04020008, 0x59a80037, 0x82000400,
9392 0x0000000a, 0x48026205, 0x59300414, 0x84000542,
9393 0x48026414, 0x1c01f000, 0x4933c857, 0x4d340000,
9394 0x59326809, 0x59340200, 0x8c00050e, 0x02000800,
9395 0x001005d8, 0x5930001c, 0x80000540, 0x0402002f,
9396 0x59a80021, 0x80000540, 0x0402002a, 0x4d1c0000,
9397 0x41323800, 0x0201f800, 0x0002075a, 0x04000023,
9398 0x4932381c, 0x591c0414, 0x84000542, 0x48023c14,
9399 0x49366009, 0x591c0406, 0x82000580, 0x00000003,
9400 0x04000006, 0x591c0202, 0x48026419, 0x591c0402,
9401 0x48026219, 0x0401f005, 0x591c0202, 0x48026219,
9402 0x591c0402, 0x48026419, 0x491e601e, 0x4a026406,
9403 0x00000001, 0x4a026403, 0x00000035, 0x4a026203,
9404 0x00000001, 0x42000800, 0x80000040, 0x0201f800,
9405 0x00020721, 0x411e6000, 0x5c023800, 0x80000580,
9406 0x5c026800, 0x1c01f000, 0x411e6000, 0x5c023800,
9407 0x59a80039, 0x48026205, 0x82000540, 0x00000001,
9408 0x0401f7f8, 0x4933c857, 0x4d2c0000, 0x4932381c,
9409 0x4a026202, 0x0000ffff, 0x591e5808, 0x591c0007,
9410 0x8c00051e, 0x04000005, 0x8400051e, 0x48023807,
9411 0x497a5c09, 0x0401f014, 0x592c0408, 0x8c000518,
9412 0x04000011, 0x84000518, 0x48025c08, 0x4a025c09,
9413 0x00000001, 0x0401fb2f, 0x497a5c09, 0x592c0408,
9414 0x8c000512, 0x04000008, 0x4d2c0000, 0x84000512,
9415 0x48025c08, 0x592e5809, 0x0201f800, 0x001007fd,
9416 0x5c025800, 0x59a80039, 0x48026205, 0x591c0214,
9417 0x48026216, 0x82000d80, 0x00000001, 0x04000008,
9418 0x4a023a03, 0x00000002, 0x82000580, 0x00000005,
9419 0x04000008, 0x497a6015, 0x0401f01e, 0x591c0007,
9420 0x84000540, 0x48023807, 0x4a023a03, 0x00000004,
9421 0x591c0414, 0x4803c857, 0x8400051c, 0x84000554,
9422 0x48023c14, 0x592c000f, 0x40001000, 0x591c0816,
9423 0x80040480, 0x040217f0, 0x591c0016, 0x82000500,
9424 0xfffffffc, 0x48026015, 0x48023816, 0x591c0a14,
9425 0x4807c857, 0x82040d80, 0x00000005, 0x04020005,
9426 0x480bc857, 0x4803c857, 0x4a023812, 0xffffffff,
9427 0x591c0402, 0x48026419, 0x591c0202, 0x48026219,
9428 0x591e6809, 0x49366009, 0x4a026406, 0x00000001,
9429 0x4a026403, 0x00000039, 0x4a026203, 0x00000001,
9430 0x42000800, 0x80000040, 0x0201f800, 0x00020721,
9431 0x5c025800, 0x1c01f000, 0x4933c857, 0x59300414,
9432 0x8c000514, 0x04000015, 0x8c00051c, 0x04020012,
9433 0x59300016, 0x80100480, 0x04001006, 0x04000005,
9434 0x59300414, 0x84000514, 0x8400055c, 0x0401f009,
9435 0x48126016, 0x48126012, 0x40100000, 0x592c180f,
9436 0x800c0480, 0x48026011, 0x59300414, 0x84000514,
9437 0x48026414, 0x1c01f000, 0x4933c857, 0x8c00051c,
9438 0x04020006, 0x59300012, 0x48026016, 0x59300414,
9439 0x8400055c, 0x48026414, 0x1c01f000, 0x59300c03,
9440 0x4933c857, 0x4807c857, 0x82040480, 0x00000034,
9441 0x04001006, 0x82040480, 0x0000003c, 0x04021003,
9442 0x80000580, 0x1c01f000, 0x82000540, 0x00000001,
9443 0x0401f7fd, 0x41780800, 0x59a81035, 0x42000000,
9444 0x00000032, 0x0201f800, 0x001066a0, 0x800811c0,
9445 0x04020003, 0x42001000, 0x00000014, 0x480b5037,
9446 0x59a81036, 0x480b502d, 0x41780800, 0x42000000,
9447 0x00000064, 0x0201f800, 0x001066a0, 0x800811c0,
9448 0x04020003, 0x42001000, 0x00000014, 0x480b5038,
9449 0x82081400, 0x0000000a, 0x480b5039, 0x42000800,
9450 0x00000001, 0x0201f800, 0x00106c78, 0x42000000,
9451 0x30000000, 0x40080800, 0x0201f800, 0x00100b68,
9452 0x42000800, 0x00000003, 0x59a81010, 0x0201f800,
9453 0x00106c78, 0x0201f000, 0x00104906, 0x4a035037,
9454 0x00000028, 0x4a035038, 0x00000014, 0x4a03502d,
9455 0x000007d0, 0x42001000, 0x0000001e, 0x480b5039,
9456 0x42000800, 0x00000001, 0x0201f800, 0x00106c78,
9457 0x42000000, 0x30000000, 0x40080800, 0x0201f800,
9458 0x00100b68, 0x42000800, 0x00000003, 0x59a81010,
9459 0x0201f000, 0x00106c78, 0x4933c857, 0x4d2c0000,
9460 0x59300403, 0x82000580, 0x0000003e, 0x04020005,
9461 0x59325817, 0x812e59c0, 0x02020800, 0x001007f4,
9462 0x5c025800, 0x1c01f000, 0x4937c857, 0x4d300000,
9463 0x0201f800, 0x0002075a, 0x04000011, 0x49366009,
9464 0x4a026406, 0x00000001, 0x492e6008, 0x42000800,
9465 0x00000009, 0x0201f800, 0x00104571, 0x4d380000,
9466 0x42027000, 0x00000033, 0x0201f800, 0x000207a1,
9467 0x5c027000, 0x82000540, 0x00000001, 0x5c026000,
9468 0x1c01f000, 0x4933c857, 0x4d2c0000, 0x4c580000,
9469 0x4d3c0000, 0x59325808, 0x83380580, 0x00000015,
9470 0x04020022, 0x59a8b016, 0x82580c80, 0x00000019,
9471 0x04001003, 0x4200b000, 0x00000018, 0x8058b104,
9472 0x0401fa07, 0x80000580, 0x0401fa17, 0x832cac00,
9473 0x00000009, 0x83cca400, 0x00000006, 0x0201f800,
9474 0x0010ab17, 0x42027800, 0x00000001, 0x592c100a,
9475 0x8c081518, 0x04020006, 0x59a80010, 0x592c100d,
9476 0x80080580, 0x04020006, 0x417a7800, 0x59301009,
9477 0x58081403, 0x0201f800, 0x001020a1, 0x0201f800,
9478 0x00107b38, 0x0401f008, 0x4200b000, 0x00000002,
9479 0x0401fa09, 0x0201f800, 0x0010801c, 0x0201f800,
9480 0x0002077d, 0x5c027800, 0x5c00b000, 0x5c025800,
9481 0x1c01f000, 0x4933c856, 0x49366009, 0x4a026406,
9482 0x00000001, 0x492e6008, 0x4d380000, 0x42027000,
9483 0x0000004d, 0x0201f800, 0x000207a1, 0x5c027000,
9484 0x82000540, 0x00000001, 0x1c01f000, 0x4803c856,
9485 0x4d2c0000, 0x83380580, 0x00000015, 0x04020027,
9486 0x59a80816, 0x59325808, 0x5930040b, 0x800000c4,
9487 0x80040580, 0x04020021, 0x4c500000, 0x4c540000,
9488 0x4c580000, 0x83cca400, 0x00000006, 0x4050a800,
9489 0x5930b40b, 0x0201f800, 0x0010ab28, 0x83cca400,
9490 0x00000006, 0x592cb205, 0x832cac00, 0x00000006,
9491 0x0201f800, 0x0010ab17, 0x592e5801, 0x812e59c0,
9492 0x040207f9, 0x5931d821, 0x58ef400b, 0x58ee580d,
9493 0x4a025a04, 0x00000103, 0x58ec0009, 0x0801f800,
9494 0x59300402, 0x5c00b000, 0x5c00a800, 0x5c00a000,
9495 0x5c025800, 0x1c01f000, 0x0201f800, 0x0010801c,
9496 0x5c025800, 0x1c01f000, 0x4933c857, 0x83380580,
9497 0x00000035, 0x04000005, 0x59301419, 0x0401f851,
9498 0x04000027, 0x0401f006, 0x4d300000, 0x5932601e,
9499 0x0401f856, 0x5c026000, 0x04000020, 0x591c0c06,
9500 0x82040580, 0x00000003, 0x04000004, 0x82040580,
9501 0x00000006, 0x0402001c, 0x591c0c02, 0x59300419,
9502 0x80040580, 0x04000009, 0x59300219, 0x80040580,
9503 0x04020015, 0x591c0a02, 0x59300419, 0x80040580,
9504 0x04020011, 0x0401f009, 0x59300a19, 0x82040580,
9505 0x0000ffff, 0x04000005, 0x591c0202, 0x59300a19,
9506 0x80040580, 0x04020008, 0x591c0009, 0x59300809,
9507 0x80040580, 0x1c01f000, 0x417a3800, 0x82000540,
9508 0x00000001, 0x1c01f000, 0x4803c856, 0x59b800e4,
9509 0x8c000538, 0x02020800, 0x001005d8, 0x42000800,
9510 0x0000012c, 0x4a0370e4, 0x20000000, 0x59b800e4,
9511 0x80040840, 0x02000800, 0x001005d8, 0x8c00053c,
9512 0x040207f9, 0x4a0370e4, 0x30000000, 0x40000000,
9513 0x40000000, 0x40000000, 0x59b800e4, 0x8c00053c,
9514 0x040207f1, 0x1c01f000, 0x4803c856, 0x4a0370e4,
9515 0x20000000, 0x40000000, 0x59b800e4, 0x8c000538,
9516 0x040207fb, 0x1c01f000, 0x59300807, 0x8c040d1e,
9517 0x592c0c08, 0x04020002, 0x8c040d18, 0x1c01f000,
9518 0x0401fc1c, 0x04000008, 0x42000800, 0x00000024,
9519 0x0201f800, 0x00106681, 0x82063c00, 0x0010d1c0,
9520 0x491fc857, 0x1c01f000, 0x83300480, 0x0010d1c0,
9521 0x0400100a, 0x59a8000b, 0x81300480, 0x04021007,
9522 0x59301402, 0x0401ffef, 0x04000007, 0x411c0000,
9523 0x81300580, 0x04000003, 0x81780500, 0x0401f002,
9524 0x81300540, 0x1c01f000, 0x4947c857, 0x4d300000,
9525 0x0201f800, 0x00020245, 0x0402000a, 0x42026000,
9526 0x0010bde9, 0x49366009, 0x492e6008, 0x0201f800,
9527 0x0010203c, 0x80000580, 0x5c026000, 0x1c01f000,
9528 0x82000540, 0x00000001, 0x0401f7fc, 0x4933c857,
9529 0x0201f800, 0x00109037, 0x02000800, 0x001005d8,
9530 0x4d2c0000, 0x4d340000, 0x4d440000, 0x4c580000,
9531 0x59325808, 0x59326809, 0x49425a06, 0x0201f800,
9532 0x00105755, 0x592e8c06, 0x592c4207, 0x82200500,
9533 0x0000000f, 0x0c01f806, 0x5c00b000, 0x5c028800,
9534 0x5c026800, 0x5c025800, 0x1c01f000, 0x00109466,
9535 0x00109488, 0x0010948f, 0x00109493, 0x0010949c,
9536 0x00109463, 0x00109463, 0x00109463, 0x001094a0,
9537 0x001094ac, 0x001094ac, 0x00109463, 0x00109463,
9538 0x00109463, 0x00109463, 0x00109463, 0x4803c857,
9539 0x0201f800, 0x001005d8, 0x814281c0, 0x04020012,
9540 0x41785800, 0x592c0404, 0x8c00051c, 0x04020002,
9541 0x59345c05, 0x442c2800, 0x59340008, 0x48002802,
9542 0x59340009, 0x48002801, 0x59340006, 0x48002804,
9543 0x59340007, 0x48002803, 0x4200b000, 0x0000000b,
9544 0x0401f037, 0x592c0207, 0x8c00051e, 0x4200b000,
9545 0x00000002, 0x04020032, 0x8204b540, 0x00000000,
9546 0x0400002f, 0x44042800, 0x59326809, 0x59340400,
9547 0x48002801, 0x4200b000, 0x00000002, 0x0401f028,
9548 0x814281c0, 0x04020030, 0x59345c05, 0x442c2800,
9549 0x4200b000, 0x00000001, 0x0401f021, 0x8340b540,
9550 0x00000000, 0x0400001e, 0x0401f027, 0x814281c0,
9551 0x04020025, 0x59340200, 0x44002800, 0x59340001,
9552 0x48002801, 0x4200b000, 0x00000002, 0x0401f014,
9553 0x8340b540, 0x00000000, 0x0402001b, 0x0401f010,
9554 0x8340b540, 0x00000000, 0x0400000d, 0x0201f800,
9555 0x00104a1f, 0x04000014, 0x8c20450e, 0x04000002,
9556 0x497a6009, 0x4178b000, 0x497a5a06, 0x0401f004,
9557 0x8340b540, 0x00000000, 0x0402000b, 0x592c0404,
9558 0x8400051c, 0x48025c04, 0x592c0207, 0x8400051e,
9559 0x48025a07, 0x0401f8aa, 0x497a6008, 0x0201f000,
9560 0x000202da, 0x592c0207, 0x8c00051e, 0x4200b000,
9561 0x00000002, 0x040207f2, 0x8204b540, 0x00000000,
9562 0x040007ef, 0x44042800, 0x4200b000, 0x00000001,
9563 0x0401f7eb, 0x4937c857, 0x4d300000, 0x0201f800,
9564 0x0002075a, 0x04000011, 0x49366009, 0x4a026406,
9565 0x00000001, 0x492e6008, 0x42000800, 0x0000000b,
9566 0x0201f800, 0x00104571, 0x4d380000, 0x42027000,
9567 0x00000043, 0x0201f800, 0x000207a1, 0x5c027000,
9568 0x82000540, 0x00000001, 0x5c026000, 0x1c01f000,
9569 0x4937c857, 0x4d2c0000, 0x59325808, 0x83380580,
9570 0x00000015, 0x04020025, 0x59a80016, 0x82000580,
9571 0x00000004, 0x04020021, 0x59a80010, 0x592c1009,
9572 0x80080580, 0x04020010, 0x4d440000, 0x592e8c06,
9573 0x592c0207, 0x4803c856, 0x82000500, 0x00000080,
9574 0x84000548, 0x4d3c0000, 0x42027800, 0x00001000,
9575 0x0201f800, 0x001049bb, 0x5c027800, 0x5c028800,
9576 0x0401f004, 0x4803c856, 0x0201f800, 0x00104a1f,
9577 0x0201f800, 0x00109037, 0x04000017, 0x4d400000,
9578 0x42028000, 0x00000000, 0x41780800, 0x0401ff38,
9579 0x5c028000, 0x0401f00e, 0x0201f800, 0x00104a1f,
9580 0x040207f4, 0x0201f800, 0x00109037, 0x0400000a,
9581 0x4c580000, 0x4200b000, 0x00000002, 0x0401f86e,
9582 0x5c00b000, 0x0201f800, 0x0010801c, 0x0201f800,
9583 0x0002077d, 0x5c025800, 0x1c01f000, 0x4937c857,
9584 0x4d300000, 0x0201f800, 0x0002075a, 0x04000012,
9585 0x49366009, 0x4a026406, 0x00000001, 0x4d3c0000,
9586 0x4d380000, 0x417a7800, 0x0201f800, 0x00104567,
9587 0x492e6008, 0x42027000, 0x00000004, 0x0201f800,
9588 0x000207a1, 0x5c027000, 0x5c027800, 0x82000540,
9589 0x00000001, 0x5c026000, 0x1c01f000, 0x4937c857,
9590 0x4d300000, 0x0201f800, 0x00107942, 0x0400000d,
9591 0x49366009, 0x4a026406, 0x00000001, 0x492e6008,
9592 0x4d380000, 0x42027000, 0x00000051, 0x0201f800,
9593 0x000207a1, 0x5c027000, 0x82000540, 0x00000001,
9594 0x5c026000, 0x1c01f000, 0x4933c857, 0x4c580000,
9595 0x59325808, 0x83383580, 0x00000015, 0x04020011,
9596 0x592c0008, 0x82000500, 0x00ffffff, 0x0402000a,
9597 0x0201f800, 0x00105755, 0x59cc0000, 0x82000500,
9598 0x00ffffff, 0x44002800, 0x4200b000, 0x00000001,
9599 0x0401f80b, 0x0201f800, 0x00107b38, 0x0401f006,
9600 0x4200b000, 0x00000002, 0x0401f823, 0x0201f800,
9601 0x0010801c, 0x5c00b000, 0x1c01f000, 0x492fc857,
9602 0x4c580000, 0x4c000000, 0x8058b1c0, 0x0400000b,
9603 0x82580500, 0xfffffff0, 0x02020800, 0x001005d8,
9604 0x8058b0d0, 0x592c0408, 0x82000500, 0xfffff0ff,
9605 0x80580540, 0x48025c08, 0x5c000000, 0x5c00b000,
9606 0x1c01f000, 0x492fc857, 0x4c000000, 0x4c040000,
9607 0x800000d8, 0x592c0c08, 0x82040d00, 0xffff0fff,
9608 0x80040540, 0x48025c08, 0x5c000800, 0x5c000000,
9609 0x1c01f000, 0x4933c857, 0x4d2c0000, 0x59325808,
9610 0x592c0207, 0x8400055e, 0x48025a07, 0x4c500000,
9611 0x4c540000, 0x4c580000, 0x0401ffd9, 0x0201f800,
9612 0x00105755, 0x46002800, 0x00000018, 0x80142800,
9613 0x8058b040, 0x83cca400, 0x00000007, 0x4014a800,
9614 0x0201f800, 0x0010ab17, 0x5c00b000, 0x5c00a800,
9615 0x5c00a000, 0x5c025800, 0x1c01f000, 0x59325808,
9616 0x592c0204, 0x82000580, 0x00000152, 0x1c01f000,
9617 0x5930001f, 0x80000540, 0x02020800, 0x00100d56,
9618 0x1c01f000, 0x4d2c0000, 0x59325808, 0x59300203,
9619 0x4933c857, 0x492fc857, 0x493bc857, 0x4803c857,
9620 0x82003480, 0x0000000e, 0x02021800, 0x001005d8,
9621 0x0c01f803, 0x5c025800, 0x1c01f000, 0x001095bd,
9622 0x001095c8, 0x00109603, 0x001095bd, 0x001095bd,
9623 0x001095bd, 0x001095bd, 0x001095bd, 0x001095bf,
9624 0x001095bd, 0x001095bd, 0x001095bd, 0x001095bd,
9625 0x001095bd, 0x0201f800, 0x001005d8, 0x83383480,
9626 0x00000056, 0x02021800, 0x001005d8, 0x493a6403,
9627 0x4a026203, 0x00000001, 0x0201f000, 0x0010672b,
9628 0x83380580, 0x00000013, 0x0402000f, 0x592c000c,
9629 0x800001c0, 0x04000006, 0x4a026203, 0x00000002,
9630 0x59a80037, 0x48026206, 0x1c01f000, 0x4a025a06,
9631 0x00000000, 0x0201f800, 0x000202da, 0x0201f000,
9632 0x0002077d, 0x83380580, 0x00000027, 0x0400001a,
9633 0x83380580, 0x00000014, 0x04000012, 0x83380580,
9634 0x00000015, 0x04000005, 0x83380580, 0x00000016,
9635 0x02020800, 0x001005d8, 0x0201f800, 0x00106f60,
9636 0x02020000, 0x00107974, 0x59300203, 0x82000580,
9637 0x00000002, 0x02020800, 0x001005d8, 0x0401f014,
9638 0x0201f800, 0x00106bbf, 0x4a02580e, 0x00000011,
9639 0x0401f005, 0x0201f800, 0x00106bbf, 0x4a02580e,
9640 0x00000010, 0x4a025a06, 0x00000031, 0x4a02580d,
9641 0x00000004, 0x0201f800, 0x000202da, 0x0201f800,
9642 0x00104c19, 0x0201f000, 0x00107911, 0x59341400,
9643 0x82081d00, 0x000000ff, 0x59300c03, 0x480bc857,
9644 0x4807c857, 0x82040580, 0x00000053, 0x0400002e,
9645 0x82040580, 0x00000002, 0x04000016, 0x82040580,
9646 0x00000001, 0x04000017, 0x82040580, 0x00000003,
9647 0x0400001c, 0x82040580, 0x00000005, 0x0400001d,
9648 0x82040580, 0x00000033, 0x0400001a, 0x82040580,
9649 0x00000000, 0x0400001b, 0x82040580, 0x00000004,
9650 0x02020800, 0x001005d8, 0x0401f8a1, 0x0401f016,
9651 0x820c0580, 0x00000003, 0x0400084c, 0x0401f012,
9652 0x820c0580, 0x0000000b, 0x0402000f, 0x42000800,
9653 0x00000007, 0x0201f800, 0x00104571, 0x0401f00a,
9654 0x820c0580, 0x00000005, 0x04000864, 0x0401f006,
9655 0x820c0580, 0x00000009, 0x04000889, 0x0401f002,
9656 0x0401f893, 0x4a026403, 0x00000052, 0x59a81016,
9657 0x592c040b, 0x8c000500, 0x04000003, 0x42001000,
9658 0x00000008, 0x592c040b, 0x8c000516, 0x04000003,
9659 0x82081400, 0x00000018, 0x592c000c, 0x497a580d,
9660 0x497a580e, 0x80080c80, 0x04000009, 0x04001005,
9661 0x4a025a06, 0x00000007, 0x40001000, 0x0401f006,
9662 0x4a025a06, 0x00000015, 0x0401f003, 0x4a025a06,
9663 0x00000000, 0x480a580c, 0x82081400, 0x00000003,
9664 0x80081104, 0x0201f800, 0x00107ab5, 0x04000010,
9665 0x592c1001, 0x480a600b, 0x58080800, 0x82080400,
9666 0x00000002, 0x592c1011, 0x592c1812, 0x42003000,
9667 0x00000000, 0x42002000, 0x00101200, 0x0201f800,
9668 0x00107c32, 0x04000002, 0x1c01f000, 0x4a025a06,
9669 0x0000002c, 0x497a580c, 0x0201f800, 0x000202da,
9670 0x0201f000, 0x0002077d, 0x83380580, 0x00000015,
9671 0x0402000a, 0x59a80005, 0x8c000514, 0x0402000b,
9672 0x0201f800, 0x0010462a, 0x42000800, 0x00000004,
9673 0x0201f000, 0x00104571, 0x42000800, 0x00000007,
9674 0x0201f000, 0x00104571, 0x0201f800, 0x0010513b,
9675 0x42001000, 0x00000010, 0x04020009, 0x59340002,
9676 0x82000500, 0x00ff0000, 0x82000580, 0x00ff0000,
9677 0x040007ec, 0x42001000, 0x00000008, 0x0201f800,
9678 0x00104c6d, 0x040007e7, 0x592c040b, 0x84000540,
9679 0x48025c0b, 0x0401f7e9, 0x83380580, 0x00000015,
9680 0x0402000f, 0x59a80005, 0x8c000514, 0x04020010,
9681 0x0201f800, 0x0010468d, 0x4d3c0000, 0x417a7800,
9682 0x0201f800, 0x00104567, 0x5c027800, 0x42000800,
9683 0x00000006, 0x0201f000, 0x00104571, 0x42000800,
9684 0x00000004, 0x0201f000, 0x00104571, 0x0201f800,
9685 0x0010513b, 0x42001000, 0x00000010, 0x04020009,
9686 0x59340002, 0x82000500, 0x00ff0000, 0x82000580,
9687 0x00ff0000, 0x040007e7, 0x42001000, 0x00000008,
9688 0x0201f800, 0x00104c6d, 0x040007e2, 0x592c040b,
9689 0x84000540, 0x48025c0b, 0x0401f7e9, 0x42000800,
9690 0x00000004, 0x0201f000, 0x00104571, 0x83380580,
9691 0x00000015, 0x04020005, 0x0201f800, 0x0010a2c8,
9692 0x02000800, 0x001048c1, 0x1c01f000, 0x83380580,
9693 0x00000015, 0x0402001d, 0x4c580000, 0x83cc1400,
9694 0x00000008, 0x4200b000, 0x00000002, 0x83341c00,
9695 0x00000006, 0x0201f800, 0x0010855a, 0x04020012,
9696 0x83cc1400, 0x0000000a, 0x4200b000, 0x00000002,
9697 0x83341c00, 0x00000008, 0x0201f800, 0x0010855a,
9698 0x04020009, 0x59342200, 0x59cc1007, 0x800811c0,
9699 0x04000003, 0x480a6801, 0x84102542, 0x8410251a,
9700 0x48126a00, 0x5c00b000, 0x1c01f000, 0x42000000,
9701 0x0010b87b, 0x0201f800, 0x0010aa47, 0x0201f800,
9702 0x00106c55, 0x59300203, 0x4933c857, 0x4803c857,
9703 0x82000c80, 0x0000000e, 0x02021800, 0x001005d8,
9704 0x0c01f803, 0x0201f000, 0x00106c4b, 0x0010970b,
9705 0x0010971a, 0x0010970c, 0x00109709, 0x00109709,
9706 0x00109709, 0x00109709, 0x00109709, 0x00109709,
9707 0x00109709, 0x00109709, 0x00109709, 0x00109709,
9708 0x00109709, 0x0201f800, 0x001005d8, 0x1c01f000,
9709 0x59300403, 0x82000580, 0x00000052, 0x02000000,
9710 0x00108d85, 0x0201f800, 0x00104c19, 0x59325808,
9711 0x4a025a06, 0x00000006, 0x0201f800, 0x000202da,
9712 0x0201f000, 0x00107911, 0x59301804, 0x840c0520,
9713 0x48026004, 0x598c000d, 0x81300580, 0x04020010,
9714 0x8c0c1d20, 0x04020010, 0x42001000, 0x0010b7f6,
9715 0x50081000, 0x58080002, 0x82000580, 0x00000100,
9716 0x0400000e, 0x5808000c, 0x81300580, 0x02020800,
9717 0x001005d8, 0x4978100c, 0x0401f003, 0x8c0c1d20,
9718 0x040207dc, 0x0201f800, 0x001068d3, 0x040007d9,
9719 0x0201f800, 0x001005d8, 0x0201f800, 0x00106e8e,
9720 0x040007f9, 0x59300203, 0x82000c80, 0x0000000e,
9721 0x02021800, 0x001005d8, 0x0c01f7bd, 0x4933c857,
9722 0x4c500000, 0x4c540000, 0x4c580000, 0x592c0c07,
9723 0x4806580a, 0x59cc0809, 0x48065807, 0x59cc0a08,
9724 0x4806580b, 0x59c80817, 0x82040500, 0x000003ff,
9725 0x800010c4, 0x8c040d14, 0x04000005, 0x59cc0002,
9726 0x82000500, 0x00000003, 0x80081480, 0x82080480,
9727 0x000000f1, 0x02021800, 0x001005d8, 0x480a621a,
9728 0x412c0800, 0x0201f800, 0x001007d3, 0x02000800,
9729 0x001005d8, 0x492c0809, 0x58040408, 0x84000552,
9730 0x84000540, 0x48000c08, 0x82081400, 0x00000003,
9731 0x80081104, 0x83cca400, 0x00000006, 0x832cac00,
9732 0x00000004, 0x42000800, 0x00000010, 0x82080480,
9733 0x00000010, 0x04021003, 0x40080800, 0x80000580,
9734 0x4004b000, 0x4c000000, 0x0201f800, 0x0010ab28,
9735 0x5c000000, 0x800001c0, 0x0400000d, 0x412c1000,
9736 0x4c000000, 0x0201f800, 0x001007d3, 0x02000800,
9737 0x001005d8, 0x492c1001, 0x832cac00, 0x00000004,
9738 0x5c000000, 0x40001000, 0x0401f7e9, 0x5c00b000,
9739 0x5c00a800, 0x5c00a000, 0x1c01f000, 0x4933c857,
9740 0x4d2c0000, 0x4c380000, 0x59325808, 0x5930021a,
9741 0x48025a08, 0x59301011, 0x800811c0, 0x04020008,
9742 0x4a025a06, 0x00000000, 0x592c000b, 0x82000500,
9743 0x00000c00, 0x0400000b, 0x0401f00b, 0x8c08153e,
9744 0x04000006, 0x4a025a06, 0x00000007, 0x80081080,
9745 0x80081000, 0x0401f003, 0x4a025a06, 0x00000015,
9746 0x480a5807, 0x42000000, 0x0010bed9, 0x50007000,
9747 0x5838000b, 0x80000540, 0x04020008, 0x4930700c,
9748 0x4930700b, 0x58380002, 0x82000580, 0x00000000,
9749 0x04020809, 0x0401f005, 0x82001400, 0x00000000,
9750 0x45301000, 0x4930700b, 0x5c007000, 0x5c025800,
9751 0x1c01f000, 0x4933c857, 0x592c0009, 0x40001000,
9752 0x4800700a, 0x82080400, 0x00000004, 0x48007003,
9753 0x592c000d, 0x592c100e, 0x48007007, 0x48087008,
9754 0x592c000a, 0x592c1208, 0x80080c80, 0x04001002,
9755 0x40001000, 0x82081400, 0x00000003, 0x80081104,
9756 0x82080480, 0x00000010, 0x04021003, 0x80000580,
9757 0x0401f003, 0x42001000, 0x00000010, 0x4800700d,
9758 0x48087004, 0x800810c4, 0x48087005, 0x40381000,
9759 0x0201f800, 0x00100858, 0x1c01f000, 0x4d2c0000,
9760 0x0201f800, 0x001007d3, 0x02000800, 0x001005d8,
9761 0x42000800, 0x0010bed9, 0x452c0800, 0x497a580b,
9762 0x497a580c, 0x497a580d, 0x4a025809, 0x001097ea,
9763 0x4a025802, 0x00000100, 0x4a025801, 0x00000000,
9764 0x5c025800, 0x1c01f000, 0x4833c857, 0x4d300000,
9765 0x4d2c0000, 0x4c5c0000, 0x4030b800, 0x585c000a,
9766 0x80025d40, 0x04020004, 0x585c000c, 0x4c000000,
9767 0x0401f044, 0x585c0002, 0x82000580, 0x00000100,
9768 0x04020022, 0x592c0801, 0x4c040000, 0x0201f800,
9769 0x001007f4, 0x5c000800, 0x800409c0, 0x0400001c,
9770 0x4804b80a, 0x585c100d, 0x800811c0, 0x04020005,
9771 0x40065800, 0x0201f800, 0x001007fd, 0x0401f014,
9772 0x82080480, 0x00000010, 0x04021003, 0x80000580,
9773 0x0401f003, 0x42001000, 0x00000010, 0x4800b80d,
9774 0x4808b804, 0x800810c4, 0x4808b805, 0x82040400,
9775 0x00000004, 0x4800b803, 0x405c1000, 0x0201f800,
9776 0x00100858, 0x0401f025, 0x0401f828, 0x585c000c,
9777 0x80026540, 0x59300000, 0x80000d40, 0x04020002,
9778 0x4800b80b, 0x4800b80c, 0x497a6000, 0x4c000000,
9779 0x4978b80a, 0x59325808, 0x4a025a04, 0x00000103,
9780 0x59300402, 0x48025c06, 0x592c100b, 0x4c080000,
9781 0x0201f800, 0x000202c1, 0x0201f800, 0x0010912a,
9782 0x5c001000, 0x8c081518, 0x04000004, 0x0201f800,
9783 0x001091d1, 0x0401f003, 0x0201f800, 0x0002077d,
9784 0x405c7000, 0x5c000000, 0x80026540, 0x04000003,
9785 0x59325808, 0x0401ff78, 0x5c00b800, 0x5c025800,
9786 0x5c026000, 0x1c01f000, 0x483bc857, 0x5838000a,
9787 0x40025800, 0x0201f800, 0x001007fd, 0x5838000c,
9788 0x80026540, 0x59300008, 0x80025d40, 0x4a025a06,
9789 0x00000002, 0x1c01f000, 0x4803c857, 0x4d1c0000,
9790 0x497a601c, 0x41323800, 0x40026000, 0x4d3c0000,
9791 0x42027800, 0x00000005, 0x0401f83c, 0x5c027800,
9792 0x411e6000, 0x59300414, 0x84000502, 0x48026414,
9793 0x5c023800, 0x1c01f000, 0x481bc857, 0x4933c857,
9794 0x4c5c0000, 0x4c600000, 0x4010b800, 0x4014c000,
9795 0x0201f800, 0x0010a942, 0x0201f800, 0x00103b25,
9796 0x04000008, 0x40602800, 0x405c3000, 0x0201f800,
9797 0x0010a446, 0x82000540, 0x00000001, 0x0401f002,
9798 0x80000580, 0x5c00c000, 0x5c00b800, 0x1c01f000,
9799 0x4803c856, 0x4d300000, 0x42026000, 0x0010d1c0,
9800 0x59a8000e, 0x81640580, 0x04000016, 0x59300c06,
9801 0x82040580, 0x00000001, 0x04000009, 0x82040580,
9802 0x00000004, 0x04000006, 0x82040580, 0x00000010,
9803 0x02000800, 0x00108cf9, 0x0401f005, 0x4807c857,
9804 0x0201f800, 0x001092d7, 0x04020808, 0x83326400,
9805 0x00000024, 0x41580000, 0x81300480, 0x040017e9,
9806 0x5c026000, 0x1c01f000, 0x4933c857, 0x59300403,
9807 0x4803c857, 0x0201f800, 0x00106c55, 0x4df00000,
9808 0x59300406, 0x4803c857, 0x82000d80, 0x00000002,
9809 0x04000018, 0x82000d80, 0x00000001, 0x04000009,
9810 0x82000d80, 0x00000004, 0x04000006, 0x4933c856,
9811 0x5c03e000, 0x02000800, 0x00106c4b, 0x0401f03c,
9812 0x59300203, 0x82000d80, 0x00000001, 0x04000018,
9813 0x82000d80, 0x00000002, 0x04000026, 0x82000d80,
9814 0x00000005, 0x04000023, 0x0201f800, 0x001005d8,
9815 0x59300203, 0x82000d80, 0x00000009, 0x0400000c,
9816 0x82000d80, 0x0000000b, 0x04000009, 0x82000d80,
9817 0x0000000a, 0x04000017, 0x82000d80, 0x0000000c,
9818 0x04000014, 0x0201f800, 0x001005d8, 0x598c000d,
9819 0x81300580, 0x04020004, 0x0201f800, 0x00106e8e,
9820 0x0402000c, 0x59300004, 0x4803c857, 0x8c000520,
9821 0x04000004, 0x84000520, 0x48026004, 0x0401f005,
9822 0x0201f800, 0x001068d3, 0x02020800, 0x001005d8,
9823 0x5c03e000, 0x02000800, 0x00106c4b, 0x59300406,
9824 0x82000d80, 0x00000002, 0x04000009, 0x0201f800,
9825 0x00104c19, 0x0201f800, 0x0010914e, 0x02000800,
9826 0x0010801c, 0x8d3e7d00, 0x04000003, 0x0201f000,
9827 0x00107911, 0x4a02621d, 0x00000001, 0x4a026403,
9828 0x00000085, 0x4a026203, 0x00000009, 0x4a026406,
9829 0x00000002, 0x42000800, 0x8000004b, 0x0201f000,
9830 0x00020721, 0x4933c857, 0x59368c03, 0x4c180000,
9831 0x59300203, 0x82003480, 0x0000000e, 0x02021800,
9832 0x001005d8, 0x0c01f803, 0x5c003000, 0x1c01f000,
9833 0x0010990a, 0x00109dcf, 0x00109edb, 0x0010990a,
9834 0x0010990a, 0x0010990a, 0x0010990a, 0x0010990a,
9835 0x0010992d, 0x0010990a, 0x0010990a, 0x0010990a,
9836 0x0010990a, 0x0010990a, 0x0201f800, 0x001005d8,
9837 0x4933c857, 0x42028800, 0x0000ffff, 0x813669c0,
9838 0x04000002, 0x59368c03, 0x4c180000, 0x59300203,
9839 0x82003480, 0x0000000e, 0x02021800, 0x001005d8,
9840 0x0c01f803, 0x5c003000, 0x1c01f000, 0x00109929,
9841 0x0010a180, 0x00109929, 0x00109929, 0x00109929,
9842 0x00109929, 0x00109929, 0x0010a952, 0x0010a0ed,
9843 0x0010a52c, 0x0010a562, 0x0010a52c, 0x0010a562,
9844 0x00109929, 0x0201f800, 0x001005d8, 0x0201f800,
9845 0x001005d8, 0x83383480, 0x00000051, 0x02021800,
9846 0x001005d8, 0x41380000, 0x493bc857, 0x4d1c0000,
9847 0x4d400000, 0x0c01f804, 0x5c028000, 0x5c023800,
9848 0x1c01f000, 0x0010998a, 0x00109b69, 0x0010998a,
9849 0x0010998a, 0x0010998a, 0x00109b74, 0x0010998a,
9850 0x0010998a, 0x0010998a, 0x0010998a, 0x0010998a,
9851 0x0010998a, 0x0010998a, 0x0010998a, 0x0010998a,
9852 0x0010998a, 0x0010998a, 0x0010998a, 0x0010998a,
9853 0x0010998a, 0x0010998a, 0x0010998a, 0x0010998a,
9854 0x001099ac, 0x001099f5, 0x00109a0c, 0x00109a62,
9855 0x00109ac6, 0x00109b04, 0x00109b34, 0x0010998a,
9856 0x0010998a, 0x00109b7c, 0x0010998a, 0x0010998a,
9857 0x00109b8a, 0x00109b93, 0x0010998a, 0x0010998a,
9858 0x0010998a, 0x0010998a, 0x0010998a, 0x00109c15,
9859 0x0010998a, 0x0010998a, 0x00109a9a, 0x0010998a,
9860 0x0010998a, 0x00109bec, 0x0010998a, 0x0010998a,
9861 0x0010998a, 0x00109c23, 0x0010998a, 0x0010998a,
9862 0x0010998a, 0x00109c6c, 0x0010998a, 0x0010998a,
9863 0x0010998a, 0x0010998a, 0x0010998a, 0x0010998a,
9864 0x00109cb9, 0x0010998a, 0x00109ce5, 0x00109cf0,
9865 0x0010998a, 0x0010998a, 0x0010998c, 0x00109cfb,
9866 0x0010998a, 0x0010998a, 0x0010998a, 0x0010999b,
9867 0x0010998a, 0x0010998a, 0x0010998a, 0x00109d02,
9868 0x00109d0a, 0x00109d28, 0x0201f800, 0x001005d8,
9869 0x4933c857, 0x0201f800, 0x0010a592, 0x040203a4,
9870 0x0201f800, 0x0010210a, 0x040203a1, 0x59cc0407,
9871 0x4802601c, 0x4a026403, 0x00000045, 0x4a026203,
9872 0x00000001, 0x0201f000, 0x0010672b, 0x4933c857,
9873 0x0201f800, 0x0010a592, 0x04020395, 0x0201f800,
9874 0x0010210a, 0x04020392, 0x0401fbce, 0x040201a0,
9875 0x59cc0007, 0x4802601c, 0x4a026403, 0x0000004a,
9876 0x4a026203, 0x00000001, 0x0201f000, 0x0010672b,
9877 0x4933c857, 0x0201f800, 0x0010210a, 0x04020009,
9878 0x0201f800, 0x001048ec, 0x04020006, 0x82000500,
9879 0x00000009, 0x82000580, 0x00000008, 0x04020008,
9880 0x4a026403, 0x00000009, 0x4a02641a, 0x00000009,
9881 0x4a02621a, 0x00000000, 0x0401f1b2, 0x0201f800,
9882 0x001048c1, 0x0201f800, 0x00104a09, 0x04000021,
9883 0x0201f800, 0x001049ed, 0x0400001e, 0x0201f800,
9884 0x0010a252, 0x04020025, 0x42028000, 0x00000029,
9885 0x4d3c0000, 0x417a7800, 0x0201f800, 0x0010203c,
9886 0x5c027800, 0x0201f800, 0x0010462a, 0x836c0580,
9887 0x00000002, 0x04020004, 0x59a8001b, 0x80000000,
9888 0x4803501b, 0x4a026403, 0x00000008, 0x42003000,
9889 0x00000003, 0x0201f800, 0x00103b25, 0x04000191,
9890 0x4a026203, 0x00000007, 0x41782800, 0x0401f180,
9891 0x0201f800, 0x0010a3da, 0x040207e1, 0x4a026403,
9892 0x00000009, 0x4a02641a, 0x0000000e, 0x4a02621a,
9893 0x00001900, 0x0401f183, 0x4a026403, 0x00000009,
9894 0x4a02641a, 0x00000003, 0x4a02621a, 0x00000f00,
9895 0x0401f17c, 0x4933c857, 0x0201f800, 0x0010210a,
9896 0x0402033b, 0x0201f800, 0x001048ec, 0x04020338,
9897 0x493a6403, 0x0201f800, 0x0010a22d, 0x04020006,
9898 0x42003000, 0x00000005, 0x4a026403, 0x00000006,
9899 0x0401f7d9, 0x4a026403, 0x00000007, 0x4a02641a,
9900 0x00000009, 0x4a02621a, 0x00000000, 0x0401f165,
9901 0x4933c857, 0x0201f800, 0x001048ec, 0x04020324,
9902 0x0201f800, 0x0010a592, 0x02000800, 0x0010210a,
9903 0x0402031f, 0x0201f800, 0x00104a09, 0x04020005,
9904 0x42027800, 0x00000001, 0x0201f800, 0x00104567,
9905 0x0201f800, 0x001049fc, 0x0402002b, 0x59cc0206,
9906 0x82003500, 0x00000003, 0x0402002e, 0x82003480,
9907 0x00000014, 0x0400102b, 0x5934300a, 0x84183516,
9908 0x82000580, 0x00000014, 0x04020002, 0x84183556,
9909 0x481a680a, 0x59cc0406, 0x82000500, 0x00000003,
9910 0x04020020, 0x0201f800, 0x0010a29f, 0x04020028,
9911 0x0201f800, 0x001049e7, 0x0402000c, 0x417a7800,
9912 0x0201f800, 0x001020a1, 0x42003000, 0x00000006,
9913 0x0201f800, 0x0010a93a, 0x42000000, 0x0010b865,
9914 0x0201f800, 0x0010aa47, 0x0201f800, 0x0010468d,
9915 0x4a026403, 0x0000000a, 0x42003000, 0x00000020,
9916 0x0401f795, 0x4a026403, 0x0000000b, 0x4a02641a,
9917 0x00000009, 0x4a02621a, 0x00001e00, 0x0401f121,
9918 0x42000000, 0x0010b860, 0x0201f800, 0x0010aa47,
9919 0x4a026403, 0x0000000b, 0x4a02641a, 0x00000007,
9920 0x4a02621a, 0x00000000, 0x0401f116, 0x4a026403,
9921 0x0000000b, 0x4a02641a, 0x00000003, 0x4a02621a,
9922 0x00000000, 0x0401f10f, 0x4933c857, 0x0201f800,
9923 0x001048ec, 0x040202ce, 0x0201f800, 0x0010a592,
9924 0x040202cb, 0x0201f800, 0x0010210a, 0x040202c8,
9925 0x59cc0206, 0x82003500, 0x00000003, 0x0402001d,
9926 0x82003480, 0x00000014, 0x0400101a, 0x59cc0406,
9927 0x82000500, 0x00000003, 0x04020016, 0x59340400,
9928 0x82000580, 0x00000707, 0x04000019, 0x417a7800,
9929 0x0201f800, 0x001020a1, 0x42003000, 0x0000000a,
9930 0x0201f800, 0x0010a93a, 0x42000000, 0x0010b862,
9931 0x0201f800, 0x0010aa47, 0x4a026403, 0x0000000c,
9932 0x41782800, 0x42003000, 0x00000021, 0x0401f752,
9933 0x4a026403, 0x0000000d, 0x4a02641a, 0x00000007,
9934 0x4a02621a, 0x00000000, 0x0401f0de, 0x4a026403,
9935 0x0000000d, 0x4a02641a, 0x00000009, 0x4a02621a,
9936 0x00001e00, 0x0401f0d7, 0x4933c857, 0x0201f800,
9937 0x001048ec, 0x04020296, 0x0201f800, 0x0010a592,
9938 0x04020293, 0x0201f800, 0x0010210a, 0x04020290,
9939 0x0401facc, 0x0402001a, 0x493a6403, 0x4c5c0000,
9940 0x0401fad2, 0x0402000e, 0x4a026403, 0x0000002e,
9941 0x405c2800, 0x42003000, 0x00000024, 0x0201f800,
9942 0x00103b25, 0x0400000c, 0x4a026203, 0x00000007,
9943 0x405c2800, 0x5c00b800, 0x0401f0ad, 0x4a026403,
9944 0x0000000d, 0x4a02641a, 0x00000007, 0x4a02621a,
9945 0x00000000, 0x5c00b800, 0x0401f0b2, 0x4a026403,
9946 0x0000000d, 0x4a02641a, 0x00000009, 0x4a02621a,
9947 0x00001e00, 0x0401f0ab, 0x4933c857, 0x0201f800,
9948 0x001048ec, 0x040206ef, 0x59a80026, 0x82000500,
9949 0x00000009, 0x82000580, 0x00000008, 0x040006e9,
9950 0x0201f800, 0x001049fc, 0x0402002d, 0x0201f800,
9951 0x0010a2a7, 0x04020007, 0x4a026403, 0x0000000e,
9952 0x41782800, 0x42003000, 0x00000052, 0x0401f702,
9953 0x4933c857, 0x42003000, 0x00000003, 0x0201f800,
9954 0x0010a942, 0x4d3c0000, 0x417a7800, 0x0201f800,
9955 0x0010203c, 0x5c027800, 0x42000000, 0x0010b864,
9956 0x0201f800, 0x0010aa47, 0x59340200, 0x84000558,
9957 0x48026a00, 0x42000800, 0x0000000b, 0x0201f800,
9958 0x00104571, 0x0201f800, 0x00103b25, 0x04000076,
9959 0x42003000, 0x00000007, 0x0401f062, 0x4933c857,
9960 0x4a026403, 0x0000000f, 0x4a02641a, 0x00000003,
9961 0x4a02621a, 0x00001e00, 0x0401f072, 0x59340400,
9962 0x82000580, 0x00000703, 0x040007f5, 0x0401f040,
9963 0x4933c857, 0x0201f800, 0x001048ec, 0x0402022c,
9964 0x59a80026, 0x82000500, 0x00000009, 0x82000580,
9965 0x00000008, 0x04000226, 0x0201f800, 0x001049f3,
9966 0x0402002f, 0x0201f800, 0x0010a2c8, 0x02000800,
9967 0x0010a252, 0x04020007, 0x4a026403, 0x00000010,
9968 0x41782800, 0x42003000, 0x00000050, 0x0401f6c2,
9969 0x4d3c0000, 0x417a7800, 0x0201f800, 0x0010203c,
9970 0x5c027800, 0x42003000, 0x00000003, 0x0201f800,
9971 0x0010a942, 0x42000000, 0x0010b864, 0x0201f800,
9972 0x0010aa47, 0x59340200, 0x84000558, 0x48026a00,
9973 0x0401f7c5, 0x4a026403, 0x00000011, 0x4a02641a,
9974 0x00000003, 0x4a02621a, 0x00001e00, 0x0401f03d,
9975 0x4933c857, 0x0201f800, 0x0010210a, 0x02000800,
9976 0x0010a592, 0x040201fa, 0x0401fa36, 0x04020008,
9977 0x4a026403, 0x00000012, 0x0401f032, 0x59340400,
9978 0x82000580, 0x00000703, 0x040007eb, 0x4d3c0000,
9979 0x417a7800, 0x42028000, 0x00000029, 0x0201f800,
9980 0x0010203c, 0x5c027800, 0x42003000, 0x00000017,
9981 0x0201f800, 0x0010a942, 0x42000000, 0x0010b864,
9982 0x0201f800, 0x0010aa47, 0x0201f800, 0x00103b25,
9983 0x04000015, 0x42003000, 0x00000006, 0x41782800,
9984 0x42028000, 0x00000029, 0x4933c857, 0x4a026403,
9985 0x00000001, 0x4a026203, 0x00000007, 0x0201f800,
9986 0x0010a974, 0x0201f000, 0x0010a43e, 0x42028000,
9987 0x00000046, 0x0201f800, 0x0010a974, 0x0201f000,
9988 0x0010a43e, 0x4933c857, 0x4a026403, 0x00000001,
9989 0x42000800, 0x0000000b, 0x0201f800, 0x00104571,
9990 0x4a026203, 0x00000001, 0x0201f000, 0x0010672b,
9991 0x4933c857, 0x42000800, 0x00000009, 0x0201f800,
9992 0x00104571, 0x4a026403, 0x00000005, 0x0401f7f5,
9993 0x0201f800, 0x0010a592, 0x040201b5, 0x0201f800,
9994 0x0010210a, 0x040201b2, 0x0401f9ee, 0x040207c0,
9995 0x4a026403, 0x00000020, 0x4a026203, 0x00000001,
9996 0x0201f000, 0x0010672b, 0x0201f800, 0x0010210a,
9997 0x040201a7, 0x4a026403, 0x00000023, 0x4a026203,
9998 0x00000001, 0x0201f000, 0x0010672b, 0x0201f800,
9999 0x0010a592, 0x02000800, 0x0010210a, 0x0402019c,
10000 0x0401f9d8, 0x040207aa, 0x40300800, 0x59a81010,
10001 0x59cc0007, 0x82000500, 0x00ffffff, 0x80080580,
10002 0x04000019, 0x59cc1408, 0x0201f800, 0x0010902c,
10003 0x0400002d, 0x59cc0c08, 0x4d300000, 0x0201f800,
10004 0x00105dd7, 0x41323800, 0x5c026000, 0x04000026,
10005 0x591c0202, 0x82000580, 0x0000ffff, 0x04000005,
10006 0x59cc1208, 0x591c0202, 0x80080580, 0x0402001e,
10007 0x591c0406, 0x82000580, 0x00000007, 0x0402001a,
10008 0x0401f02c, 0x59cc1208, 0x82080580, 0x0000ffff,
10009 0x0400000c, 0x0201f800, 0x00109410, 0x04000012,
10010 0x59cc1408, 0x591c0202, 0x80080580, 0x0402000e,
10011 0x591c0009, 0x81340580, 0x04000016, 0x0401f00a,
10012 0x59cc1408, 0x417a7800, 0x0201f800, 0x0010a405,
10013 0x04020010, 0x59cc1208, 0x82080580, 0x0000ffff,
10014 0x04000019, 0x4a026403, 0x00000026, 0x4a02621a,
10015 0x00001700, 0x59cc1204, 0x82081580, 0x0000ffff,
10016 0x04020798, 0x4a026403, 0x00000025, 0x0401f795,
10017 0x591c0406, 0x82000580, 0x00000007, 0x040207f2,
10018 0x591c0403, 0x82000580, 0x00000024, 0x04020006,
10019 0x4d300000, 0x411e6000, 0x0201f800, 0x0002077d,
10020 0x5c026000, 0x4a026403, 0x00000025, 0x0401f785,
10021 0x4933c857, 0x4d3c0000, 0x42027800, 0x00000001,
10022 0x0201f800, 0x00104567, 0x5c027800, 0x4c580000,
10023 0x4200b000, 0x00000002, 0x83a81c00, 0x00000002,
10024 0x83cc1400, 0x0000000b, 0x0201f800, 0x0010855a,
10025 0x5c00b000, 0x04000004, 0x4a026403, 0x00000031,
10026 0x0401f770, 0x0201f800, 0x00107911, 0x0201f800,
10027 0x0010513b, 0x0402000f, 0x0201f800, 0x00105149,
10028 0x04020008, 0x4a035033, 0x00000001, 0x4202d800,
10029 0x00000001, 0x0201f800, 0x001050a2, 0x0401f005,
10030 0x42000000, 0x00000001, 0x0201f800, 0x00105113,
10031 0x1c01f000, 0x0201f800, 0x0010210a, 0x0402011c,
10032 0x0401f958, 0x0402072a, 0x493a6403, 0x0401f996,
10033 0x04020004, 0x4a026403, 0x0000002b, 0x0401f751,
10034 0x4a026403, 0x0000002c, 0x0401f74e, 0x4933c857,
10035 0x0201f800, 0x0010210a, 0x0402010d, 0x0201f800,
10036 0x001049e7, 0x04020740, 0x0201f800, 0x001048d9,
10037 0x0400003c, 0x59cc0408, 0x48026419, 0x59cc0208,
10038 0x48026219, 0x59cc0807, 0x59340002, 0x82000500,
10039 0x00ffffff, 0x80040580, 0x04000012, 0x59a80010,
10040 0x80040580, 0x04020021, 0x59cc1408, 0x0201f800,
10041 0x00109410, 0x04000023, 0x0201f800, 0x0010a4ca,
10042 0x04000020, 0x0201f800, 0x0010a921, 0x0400001d,
10043 0x491e601e, 0x4a026403, 0x00000036, 0x0401f0e6,
10044 0x59cc1208, 0x82080580, 0x0000ffff, 0x04000009,
10045 0x0201f800, 0x00109410, 0x04000012, 0x591c0202,
10046 0x59cc0c08, 0x80040580, 0x0402000e, 0x0401f7eb,
10047 0x59cc1408, 0x41327800, 0x0201f800, 0x0010a405,
10048 0x04000008, 0x0401f7e5, 0x4803c856, 0x4a02641a,
10049 0x00000009, 0x4a02621a, 0x00001500, 0x0401f006,
10050 0x4803c856, 0x4a02641a, 0x00000003, 0x4a02621a,
10051 0x00001700, 0x4a026403, 0x00000037, 0x0401f0c6,
10052 0x4803c856, 0x4a026403, 0x00000012, 0x0401f0c2,
10053 0x4933c857, 0x0201f800, 0x0010210a, 0x040200c4,
10054 0x0201f800, 0x001049e7, 0x040206f7, 0x0201f800,
10055 0x001048d9, 0x0400003e, 0x59cc0407, 0x48026419,
10056 0x59cc1207, 0x480a6219, 0x82080580, 0x0000ffff,
10057 0x04000005, 0x0201f800, 0x00109410, 0x0400002c,
10058 0x0401f006, 0x59cc1407, 0x41327800, 0x0201f800,
10059 0x0010a405, 0x04000026, 0x59cc0c07, 0x591c0202,
10060 0x80040580, 0x04020022, 0x4d300000, 0x411e6000,
10061 0x0201f800, 0x00108bd7, 0x5c026000, 0x59cc0c09,
10062 0x82040d00, 0x0000ff00, 0x840409c0, 0x0201f800,
10063 0x0010a921, 0x04000016, 0x82040580, 0x00000001,
10064 0x0400000a, 0x82040580, 0x00000005, 0x04000004,
10065 0x82040580, 0x00000007, 0x04020007, 0x591c0008,
10066 0x80000540, 0x04000004, 0x59cc2808, 0x0201f000,
10067 0x0010a4de, 0x4803c856, 0x4a02641a, 0x00000009,
10068 0x4a02621a, 0x00002a00, 0x0401f006, 0x4803c856,
10069 0x4a02641a, 0x00000003, 0x4a02621a, 0x00000300,
10070 0x4a026403, 0x0000003b, 0x0401f07b, 0x4803c856,
10071 0x4a02641a, 0x0000000b, 0x4a02621a, 0x00000000,
10072 0x0401f7f8, 0x4c080000, 0x0201f800, 0x001048ec,
10073 0x04000026, 0x0201f800, 0x001048c1, 0x0201f800,
10074 0x0010a601, 0x0402001e, 0x59a80026, 0x82000540,
10075 0x00000003, 0x48035026, 0x59a8001d, 0x800000d0,
10076 0x59a80810, 0x82040d00, 0x000000ff, 0x80041540,
10077 0x480b5010, 0x42000800, 0x00000003, 0x0201f800,
10078 0x00106c78, 0x497b5028, 0x0201f800, 0x00103b25,
10079 0x04000003, 0x4a032804, 0x000007d0, 0x8c00050a,
10080 0x0402000a, 0x0201f800, 0x0002077d, 0x0201f800,
10081 0x00101e45, 0x5c001000, 0x1c01f000, 0x0201f800,
10082 0x0010a623, 0x0401f7fc, 0x5c001000, 0x0201f000,
10083 0x0002077d, 0x0201f800, 0x0010210a, 0x0402004c,
10084 0x0201f800, 0x0010a628, 0x4a026403, 0x00000047,
10085 0x4a026203, 0x00000001, 0x0201f000, 0x0010672b,
10086 0x0201f800, 0x0010210a, 0x04020041, 0x0201f800,
10087 0x0010a628, 0x4a026403, 0x00000047, 0x4a026203,
10088 0x00000001, 0x0201f000, 0x0010672b, 0x0201f800,
10089 0x0010210a, 0x04020036, 0x0201f800, 0x0010a628,
10090 0x0201f000, 0x0002077d, 0x0401f834, 0x04000030,
10091 0x4a026403, 0x0000004e, 0x4a026203, 0x00000001,
10092 0x0201f000, 0x0010672b, 0x4a026403, 0x0000004f,
10093 0x497a601c, 0x59cc0a06, 0x82040d00, 0x000000ff,
10094 0x800409c0, 0x0400065f, 0x82040580, 0x00000001,
10095 0x04020005, 0x59cc0808, 0x59a80005, 0x80040580,
10096 0x04000658, 0x82040580, 0x00000002, 0x0402000a,
10097 0x83cc1400, 0x0000000b, 0x4200b000, 0x00000002,
10098 0x83341c00, 0x00000006, 0x0201f800, 0x0010855a,
10099 0x0400064c, 0x4a02601c, 0x00000001, 0x0401f649,
10100 0x4a026403, 0x00000050, 0x59cc0207, 0x4802601c,
10101 0x0401f644, 0x4a026203, 0x00000001, 0x42000800,
10102 0x80000040, 0x0201f000, 0x00020721, 0x4803c857,
10103 0x0201f000, 0x0002077d, 0x4d2c0000, 0x4c500000,
10104 0x4c580000, 0x4c540000, 0x59a80016, 0x82000c80,
10105 0x00000829, 0x04021029, 0x0201f800, 0x001007d3,
10106 0x04000026, 0x492e6008, 0x59a80016, 0x80000104,
10107 0x48025802, 0x83cca400, 0x00000006, 0x82000c80,
10108 0x0000000b, 0x04001013, 0x4a025811, 0x0000000b,
10109 0x4200b000, 0x0000000b, 0x832c0400, 0x00000005,
10110 0x4000a800, 0x0201f800, 0x0010ab17, 0x412c7000,
10111 0x0201f800, 0x001007d3, 0x04000010, 0x492c7001,
10112 0x40040000, 0x800409c0, 0x04000009, 0x0401f7ec,
10113 0x48025811, 0x4000b000, 0x832c0400, 0x00000005,
10114 0x4000a800, 0x0201f800, 0x0010ab17, 0x82000540,
10115 0x00000001, 0x0401f006, 0x497b5016, 0x59325808,
10116 0x0201f800, 0x001007fd, 0x80000580, 0x5c00a800,
10117 0x5c00b000, 0x5c00a000, 0x5c025800, 0x1c01f000,
10118 0x4d340000, 0x59326809, 0x59343400, 0x4933c857,
10119 0x4937c857, 0x481bc857, 0x0201f800, 0x001049f3,
10120 0x5c026800, 0x1c01f000, 0x4933c857, 0x4c5c0000,
10121 0x4d3c0000, 0x0401f840, 0x0402002c, 0x59cc0207,
10122 0x82000d00, 0x0000ff00, 0x900411c0, 0x59cc000a,
10123 0x82000500, 0x00ffffff, 0x80081540, 0x480a601c,
10124 0x8c040d18, 0x0400000e, 0x42003000, 0x00000008,
10125 0x0201f800, 0x0010a932, 0x42000000, 0x0010b863,
10126 0x0201f800, 0x0010aa47, 0x4200b800, 0x00000002,
10127 0x42027800, 0x00000001, 0x0401f011, 0x4178b800,
10128 0x8c040d1a, 0x04000011, 0x59cc000a, 0x0201f800,
10129 0x00105c9a, 0x0402000d, 0x42003000, 0x00000009,
10130 0x0201f800, 0x0010a93a, 0x42000000, 0x0010b863,
10131 0x0201f800, 0x0010aa47, 0x417a7800, 0x0201f800,
10132 0x001020a1, 0x0401f004, 0x82000540, 0x00000001,
10133 0x0401f002, 0x80000580, 0x5c027800, 0x5c00b800,
10134 0x1c01f000, 0x4933c857, 0x59cc0206, 0x82000480,
10135 0x00000010, 0x04021006, 0x4a02621a, 0x00000000,
10136 0x82000540, 0x00000001, 0x0401f002, 0x80000580,
10137 0x1c01f000, 0x4933c857, 0x4a02621a, 0x00000000,
10138 0x59cc0407, 0x82000500, 0x0000ff00, 0x82000580,
10139 0x00000800, 0x04020009, 0x59cc0006, 0x82000500,
10140 0x00ff0000, 0x82000d80, 0x00140000, 0x04000003,
10141 0x82000d80, 0x00100000, 0x1c01f000, 0x4933c857,
10142 0x59300403, 0x82003480, 0x00000051, 0x02021800,
10143 0x001005d8, 0x83383580, 0x00000013, 0x04020003,
10144 0x4803c857, 0x0c01f012, 0x83383580, 0x00000027,
10145 0x04000005, 0x83383580, 0x00000014, 0x02020800,
10146 0x001005d8, 0x0201f800, 0x001048c1, 0x42000800,
10147 0x00000007, 0x0201f800, 0x00104571, 0x0201f800,
10148 0x00106bbf, 0x0201f000, 0x00107911, 0x00109e3c,
10149 0x00109e45, 0x00109e3c, 0x00109e3c, 0x00109e3c,
10150 0x00109e45, 0x00109e50, 0x00109ecd, 0x00109e95,
10151 0x00109ecd, 0x00109ead, 0x00109ecd, 0x00109ebe,
10152 0x00109ecd, 0x00109ec6, 0x00109ecd, 0x00109ec6,
10153 0x00109ecd, 0x00109ecd, 0x00109e3c, 0x00109e3c,
10154 0x00109e3c, 0x00109e3c, 0x00109e3c, 0x00109e3c,
10155 0x00109e3c, 0x00109e3c, 0x00109e3c, 0x00109e3c,
10156 0x00109e3c, 0x00109e45, 0x00109e3c, 0x00109ecd,
10157 0x00109e3c, 0x00109e3c, 0x00109ecd, 0x00109e3c,
10158 0x00109eca, 0x00109ecd, 0x00109e3c, 0x00109e3c,
10159 0x00109e3c, 0x00109e3c, 0x00109ecd, 0x00109ecd,
10160 0x00109e3c, 0x00109ec3, 0x00109ecd, 0x00109e3c,
10161 0x00109e4a, 0x00109e3c, 0x00109e3c, 0x00109e3c,
10162 0x00109e3c, 0x00109ec9, 0x00109ecd, 0x00109e3c,
10163 0x00109e3c, 0x00109ecd, 0x00109ecd, 0x00109e3c,
10164 0x00109e3c, 0x00109e3c, 0x00109e3c, 0x00109e3c,
10165 0x00109e3c, 0x00109e3c, 0x00109e3c, 0x00109e3c,
10166 0x00109e3e, 0x00109e3c, 0x00109e3e, 0x00109e3c,
10167 0x00109e3c, 0x00109e3e, 0x00109e3c, 0x00109e3c,
10168 0x00109e3c, 0x00109e3e, 0x00109e3e, 0x00109e3e,
10169 0x0201f800, 0x001005d8, 0x4d2c0000, 0x59325808,
10170 0x0201f800, 0x001007fd, 0x5c025800, 0x0201f000,
10171 0x0002077d, 0x59a80037, 0x48026206, 0x4a026203,
10172 0x00000002, 0x1c01f000, 0x4d3c0000, 0x417a7800,
10173 0x0201f800, 0x00104567, 0x5c027800, 0x0401f07e,
10174 0x42000800, 0x00000007, 0x0201f800, 0x00104571,
10175 0x59a80026, 0x8c000508, 0x04000012, 0x59326809,
10176 0x4c580000, 0x4200b000, 0x00000002, 0x83a81c00,
10177 0x00000002, 0x83341400, 0x00000006, 0x0201f800,
10178 0x0010855a, 0x80000540, 0x5c00b000, 0x0402006a,
10179 0x59340200, 0x8400051a, 0x48026a00, 0x0401f01b,
10180 0x599c0017, 0x8c00050a, 0x04020063, 0x4d3c0000,
10181 0x417a7800, 0x0201f800, 0x00104567, 0x5c027800,
10182 0x42000800, 0x00000007, 0x0201f800, 0x00104571,
10183 0x59340212, 0x82000500, 0x0000ff00, 0x04000056,
10184 0x599c0019, 0x8c00050e, 0x04020053, 0x416c0000,
10185 0x82000580, 0x00000002, 0x04020004, 0x59a8001b,
10186 0x80000000, 0x4803501b, 0x42000800, 0x00000003,
10187 0x0201f800, 0x00104571, 0x4a026406, 0x00000001,
10188 0x4a026203, 0x00000001, 0x4a026403, 0x00000002,
10189 0x0201f800, 0x0010672b, 0x4ce80000, 0x4201d000,
10190 0x00000001, 0x0201f800, 0x00105fae, 0x5c01d000,
10191 0x1c01f000, 0x0201f800, 0x001049f3, 0x04000036,
10192 0x0201f800, 0x0010645e, 0x42000800, 0x00000004,
10193 0x0201f800, 0x00104571, 0x0201f800, 0x0010a96a,
10194 0x0402002d, 0x42000800, 0x00000005, 0x0201f800,
10195 0x00104571, 0x4a026406, 0x00000001, 0x4a026203,
10196 0x00000001, 0x4a026403, 0x00000003, 0x0201f000,
10197 0x0010672b, 0x42000800, 0x00000006, 0x0401f820,
10198 0x59303009, 0x599c0017, 0x8c00050a, 0x0402001a,
10199 0x59a80026, 0x8c000508, 0x04000017, 0x0201f800,
10200 0x001049e7, 0x04000014, 0x59a8001b, 0x80000000,
10201 0x4803501b, 0x0401f7c5, 0x42000800, 0x00000004,
10202 0x0201f800, 0x00104571, 0x0401f792, 0x42000800,
10203 0x00000004, 0x0401f006, 0x0201f800, 0x001048c1,
10204 0x0401f005, 0x0401f004, 0x0401f003, 0x0201f800,
10205 0x00104571, 0x0201f000, 0x0002077d, 0x4933c857,
10206 0x4807c857, 0x0201f800, 0x00104571, 0x4d3c0000,
10207 0x417a7800, 0x0201f800, 0x00104567, 0x5c027800,
10208 0x0201f800, 0x00102074, 0x1c01f000, 0x4933c857,
10209 0x59340400, 0x80000110, 0x82003480, 0x0000000c,
10210 0x02021800, 0x001005d8, 0x83383580, 0x00000015,
10211 0x04020002, 0x0c01f006, 0x83383580, 0x00000016,
10212 0x02020800, 0x001005d8, 0x0c01f00d, 0x001080b8,
10213 0x001080b8, 0x001080b8, 0x001080b8, 0x001080b8,
10214 0x001080b8, 0x00109f30, 0x00109f03, 0x001080b8,
10215 0x001080b8, 0x001080b8, 0x001080b8, 0x001080b8,
10216 0x001080b8, 0x001080b8, 0x001080b8, 0x001080b8,
10217 0x001080b8, 0x00109f30, 0x00109f37, 0x001080b8,
10218 0x001080b8, 0x001080b8, 0x001080b8, 0x4933c857,
10219 0x599c0017, 0x8c00050a, 0x0402001b, 0x813669c0,
10220 0x04000019, 0x59340212, 0x82000500, 0x0000ff00,
10221 0x04000015, 0x599c0019, 0x8c00050e, 0x04020012,
10222 0x4d3c0000, 0x417a7800, 0x0201f800, 0x00104567,
10223 0x5c027800, 0x42000800, 0x00000003, 0x0201f800,
10224 0x00104571, 0x4a026406, 0x00000001, 0x4a026203,
10225 0x00000001, 0x4a026403, 0x00000002, 0x0201f000,
10226 0x0010672b, 0x59cc0001, 0x0201f800, 0x00105c9a,
10227 0x0402000b, 0x0201f800, 0x00020245, 0x02020000,
10228 0x0002077d, 0x59345002, 0x0201f800, 0x001042b4,
10229 0x482a6802, 0x0201f000, 0x0002077d, 0x1c01f000,
10230 0x4933c857, 0x59303403, 0x82183580, 0x0000001e,
10231 0x02000000, 0x0002077d, 0x1c01f000, 0x4933c857,
10232 0x0201f800, 0x001083df, 0x02020000, 0x0002077d,
10233 0x4a026203, 0x00000001, 0x4a026403, 0x00000001,
10234 0x0201f000, 0x0010672b, 0x493bc857, 0x83380580,
10235 0x00000051, 0x0402000b, 0x0201f800, 0x00106f60,
10236 0x02020000, 0x00107974, 0x59300203, 0x82000580,
10237 0x00000002, 0x0400006d, 0x0201f800, 0x001005d8,
10238 0x83380580, 0x00000027, 0x04000014, 0x83380580,
10239 0x00000048, 0x04000006, 0x83380580, 0x00000014,
10240 0x0400000e, 0x02020800, 0x001005d8, 0x0201f800,
10241 0x00106f60, 0x02020000, 0x00107974, 0x59300203,
10242 0x82000580, 0x00000004, 0x02000000, 0x0002086e,
10243 0x0201f800, 0x001005d8, 0x59300403, 0x82000c80,
10244 0x00000044, 0x02021800, 0x001005d8, 0x82000480,
10245 0x00000040, 0x02001800, 0x001005d8, 0x40027000,
10246 0x4803c857, 0x0c01f001, 0x00109f76, 0x00109f78,
10247 0x00109f78, 0x00109f93, 0x0201f800, 0x001005d8,
10248 0x0201f800, 0x00106bbf, 0x59325808, 0x812e59c0,
10249 0x04000016, 0x832c0500, 0x00ff0000, 0x04000013,
10250 0x4a026203, 0x00000002, 0x59326809, 0x59340200,
10251 0x8c00050e, 0x0402000d, 0x42028000, 0x00000004,
10252 0x0201f800, 0x0010a3ef, 0x497a6008, 0x59300206,
10253 0x80000540, 0x04020003, 0x59a80038, 0x48026206,
10254 0x4a026203, 0x00000007, 0x1c01f000, 0x0201f800,
10255 0x00106bbf, 0x0201f800, 0x00109037, 0x02000000,
10256 0x00107911, 0x59325808, 0x0201f800, 0x001007f4,
10257 0x0201f000, 0x00107911, 0x0201f800, 0x001005d8,
10258 0x59325808, 0x592c040a, 0x8c000502, 0x04000007,
10259 0x4a026203, 0x00000007, 0x42027000, 0x00000043,
10260 0x0201f000, 0x000207a1, 0x4a026203, 0x00000004,
10261 0x1c01f000, 0x0201f800, 0x0010a597, 0x02000000,
10262 0x0002086c, 0x1c01f000, 0x4a026203, 0x00000001,
10263 0x4a026403, 0x00000041, 0x42027800, 0x80002042,
10264 0x0201f000, 0x00020721, 0x83380580, 0x00000051,
10265 0x04000006, 0x83380580, 0x00000041, 0x02020800,
10266 0x001005d8, 0x1c01f000, 0x0201f800, 0x000206fd,
10267 0x0201f800, 0x0010a5df, 0x0201f000, 0x0002077d,
10268 0x83380480, 0x00000050, 0x02021800, 0x001005d8,
10269 0x83380480, 0x00000049, 0x02001800, 0x001005d8,
10270 0x0c01f001, 0x00109fda, 0x00109ffb, 0x00109fd8,
10271 0x00109fd8, 0x00109fd8, 0x00109fd8, 0x00109ffb,
10272 0x0201f800, 0x001005d8, 0x59325808, 0x592c040a,
10273 0x8c00051e, 0x0400000d, 0x82000d00, 0x000000c0,
10274 0x82040d80, 0x00000080, 0x0400000d, 0x59300804,
10275 0x8c040d18, 0x0402000a, 0x42027000, 0x00000041,
10276 0x0201f000, 0x0002088d, 0x4a026203, 0x00000007,
10277 0x497a6206, 0x0201f000, 0x000206fd, 0x59325808,
10278 0x592c0c0a, 0x8c040d1a, 0x04020005, 0x0201f800,
10279 0x000206fd, 0x0201f000, 0x0002077d, 0x0201f800,
10280 0x0010a597, 0x040007fa, 0x1c01f000, 0x0201f800,
10281 0x00106b8a, 0x59325808, 0x59326809, 0x59340200,
10282 0x8c00050e, 0x0400000e, 0x592c040a, 0x82000500,
10283 0x000000c0, 0x82000580, 0x00000080, 0x04000005,
10284 0x592c000f, 0x59301815, 0x800c1c80, 0x480e6015,
10285 0x4a026203, 0x00000002, 0x0401f00d, 0x42028000,
10286 0x00000004, 0x0401fbde, 0x59300206, 0x80000540,
10287 0x04020004, 0x59a80038, 0x800000c2, 0x48026206,
10288 0x497a6008, 0x4a026203, 0x00000007, 0x1c01f000,
10289 0x4a026203, 0x00000007, 0x497a6206, 0x0201f000,
10290 0x000206fd, 0x4a026203, 0x00000007, 0x497a6206,
10291 0x0201f000, 0x000206f8, 0x59300414, 0x8c00051c,
10292 0x02020000, 0x0002087e, 0x59325808, 0x592c200f,
10293 0x40080000, 0x80102480, 0x59300015, 0x80102400,
10294 0x48126015, 0x0201f000, 0x0002087e, 0x8c040d0e,
10295 0x0402000a, 0x4a026203, 0x00000006, 0x0401f823,
10296 0x5930001f, 0x80000540, 0x02020800, 0x00100d7c,
10297 0x0201f000, 0x000206f8, 0x4a026203, 0x00000002,
10298 0x1c01f000, 0x42000800, 0x00000001, 0x0201f800,
10299 0x00100d7c, 0x82040580, 0x00000001, 0x02000000,
10300 0x00020885, 0x0401f7d8, 0x59300414, 0x8c00051c,
10301 0x04000006, 0x0201f800, 0x00100b63, 0x02000000,
10302 0x00020877, 0x1c01f000, 0x59300011, 0x80000540,
10303 0x04020005, 0x0201f800, 0x00100b63, 0x02000000,
10304 0x00020877, 0x1c01f000, 0x492fc857, 0x480bc857,
10305 0x8c08153e, 0x04000006, 0x80081080, 0x80081000,
10306 0x42000800, 0x00000009, 0x0401f003, 0x42000800,
10307 0x00000015, 0x480a580b, 0x1c01f000, 0x83380580,
10308 0x00000013, 0x04000005, 0x83380580, 0x00000014,
10309 0x02020800, 0x001005d8, 0x59300414, 0x8c000516,
10310 0x02000800, 0x001005d8, 0x1c01f000, 0x0201f800,
10311 0x001005d8, 0x59300008, 0x80000540, 0x02020800,
10312 0x001005d8, 0x1c01f000, 0x59300414, 0x8c000516,
10313 0x02000800, 0x001005d8, 0x1c01f000, 0x4a026203,
10314 0x00000004, 0x493a6403, 0x42000800, 0x80002001,
10315 0x0201f000, 0x00020721, 0x4a026203, 0x00000003,
10316 0x493a6403, 0x0201f800, 0x000200c9, 0x59325808,
10317 0x592c040a, 0x8c00051e, 0x04000012, 0x82000500,
10318 0x000000c0, 0x82000580, 0x00000080, 0x04000011,
10319 0x59300414, 0x8c000512, 0x0402000a, 0x8c000510,
10320 0x04020008, 0x592c040c, 0x80000540, 0x04020005,
10321 0x82080d40, 0x80003065, 0x0201f000, 0x00106721,
10322 0x82080d40, 0x80002065, 0x0201f000, 0x00106721,
10323 0x82080d40, 0x80002042, 0x0201f000, 0x00106721,
10324 0x4933c857, 0x493bc857, 0x83380480, 0x00000044,
10325 0x02021800, 0x001005d8, 0x83380480, 0x00000041,
10326 0x02001800, 0x001005d8, 0x0c01f001, 0x0010a0b6,
10327 0x0010a0c6, 0x0010a0db, 0x59325808, 0x592c040a,
10328 0x8c00051e, 0x0400001d, 0x82001d00, 0x000000c0,
10329 0x820c1d80, 0x000000c0, 0x04000018, 0x4a026203,
10330 0x00000001, 0x493a6403, 0x42000800, 0x80002042,
10331 0x0201f000, 0x00020721, 0x59325808, 0x592c040a,
10332 0x8c00051e, 0x0400000d, 0x82001d00, 0x000000c0,
10333 0x820c1d80, 0x000000c0, 0x04000008, 0x4a026203,
10334 0x00000001, 0x493a6403, 0x42000800, 0x80002001,
10335 0x0201f000, 0x00020721, 0x497a6008, 0x497a6206,
10336 0x42028000, 0x00000004, 0x0401f315, 0x59325808,
10337 0x592c040a, 0x8c00051e, 0x040007f8, 0x82001d00,
10338 0x000000c0, 0x820c1d80, 0x000000c0, 0x040007f3,
10339 0x4a026203, 0x00000003, 0x493a6403, 0x0201f800,
10340 0x000200c9, 0x82080d40, 0x80002065, 0x0201f000,
10341 0x00106721, 0x4933c857, 0x493bc857, 0x83380580,
10342 0x00000085, 0x04000006, 0x83380580, 0x00000088,
10343 0x0400000a, 0x0201f800, 0x001005d8, 0x4a026203,
10344 0x00000009, 0x493a6403, 0x42000800, 0x8000004b,
10345 0x0201f000, 0x00020721, 0x4d1c0000, 0x813669c0,
10346 0x04000004, 0x0201f800, 0x0010a592, 0x04020044,
10347 0x59cc1404, 0x0401f846, 0x04000018, 0x591c0406,
10348 0x82000500, 0x0000001f, 0x82002580, 0x00000006,
10349 0x04000007, 0x82002580, 0x00000004, 0x0400002e,
10350 0x82002580, 0x00000011, 0x0402000c, 0x497a3a05,
10351 0x42002000, 0x00000054, 0x0201f800, 0x00107a4a,
10352 0x4a026203, 0x00000007, 0x493a6403, 0x0201f800,
10353 0x0010a974, 0x0401f02c, 0x0201f800, 0x00103b25,
10354 0x04000004, 0x42023800, 0xffffffff, 0x0401f7f1,
10355 0x813669c0, 0x04020009, 0x59cc0001, 0x0201f800,
10356 0x00105c9a, 0x0402001e, 0x0201f800, 0x001045a6,
10357 0x0402001b, 0x49366009, 0x4a026403, 0x00000087,
10358 0x59cc1204, 0x82081580, 0x0000ffff, 0x04020003,
10359 0x4a026403, 0x00000086, 0x4a026203, 0x00000001,
10360 0x42000800, 0x80000040, 0x0201f800, 0x00020721,
10361 0x0401f00d, 0x591c0203, 0x82000580, 0x00000007,
10362 0x040207de, 0x4d300000, 0x411e6000, 0x0201f800,
10363 0x00107911, 0x5c026000, 0x0401f7d8, 0x0201f800,
10364 0x00107911, 0x5c023800, 0x1c01f000, 0x4933c857,
10365 0x480bc857, 0x42002800, 0x0010d1c0, 0x41300000,
10366 0x80140580, 0x04000017, 0x58140203, 0x82000580,
10367 0x00000000, 0x04000013, 0x58140202, 0x80080580,
10368 0x04020010, 0x58141c06, 0x820c0580, 0x00000005,
10369 0x0400000c, 0x820c0580, 0x00000009, 0x0400001d,
10370 0x59302009, 0x58140009, 0x800001c0, 0x0400000b,
10371 0x801021c0, 0x04000003, 0x80100580, 0x04000010,
10372 0x82142c00, 0x00000024, 0x41540000, 0x80140480,
10373 0x0402100e, 0x0401f7e2, 0x5814001e, 0x801021c0,
10374 0x04000005, 0x58102002, 0x82102500, 0x00ffffff,
10375 0x0401f7f2, 0x5810201e, 0x0401f7f0, 0x40163800,
10376 0x81300540, 0x0401f002, 0x80000580, 0x1c01f000,
10377 0x58141807, 0x8c0c1d10, 0x040207ea, 0x0401f7e1,
10378 0x4933c857, 0x493bc857, 0x83380580, 0x00000013,
10379 0x0402000e, 0x59300403, 0x82000c80, 0x00000085,
10380 0x02001800, 0x001005d8, 0x82000c80, 0x00000093,
10381 0x02021800, 0x001005d8, 0x82000480, 0x00000085,
10382 0x4803c857, 0x0c01f018, 0x83380580, 0x00000027,
10383 0x04000005, 0x83380580, 0x00000014, 0x02020000,
10384 0x00107974, 0x0201f800, 0x00106bbf, 0x59325808,
10385 0x812e59c0, 0x02000000, 0x00107911, 0x4a025a06,
10386 0x00000031, 0x4a025811, 0x00000004, 0x4a025812,
10387 0x000000ff, 0x0201f800, 0x000202da, 0x0201f000,
10388 0x00107911, 0x0010a1b7, 0x0010a1be, 0x0010a1be,
10389 0x0010a1b7, 0x0010a1b7, 0x0010a1b7, 0x0010a1b7,
10390 0x0010a1b7, 0x0010a1b7, 0x0010a1b7, 0x0010a1b7,
10391 0x0010a1b7, 0x0010a1b7, 0x0010a1b9, 0x0201f800,
10392 0x001005d8, 0x59325808, 0x4a025a06, 0x00000000,
10393 0x0201f800, 0x000202da, 0x0201f000, 0x00107911,
10394 0x4933c857, 0x42000000, 0x0010b873, 0x0201f800,
10395 0x0010aa47, 0x0201f800, 0x0010a5df, 0x497a6205,
10396 0x42028000, 0x0000000b, 0x0401f807, 0x4a026406,
10397 0x00000006, 0x4a026203, 0x00000007, 0x497a6206,
10398 0x1c01f000, 0x4933c857, 0x4943c857, 0x59300406,
10399 0x82000580, 0x00000007, 0x04020002, 0x1c01f000,
10400 0x0201f800, 0x00106c55, 0x4df00000, 0x0201f800,
10401 0x00108ce5, 0x82000c80, 0x0000000e, 0x02021800,
10402 0x001005d8, 0x0c01f001, 0x0010a205, 0x0010a209,
10403 0x0010a1f0, 0x0010a217, 0x0010a22a, 0x0010a1f0,
10404 0x0010a1f0, 0x0010a1f0, 0x0010a1f0, 0x0010a1f0,
10405 0x0010a1f0, 0x0010a1f0, 0x0010a1f0, 0x0010a1f0,
10406 0x4d400000, 0x5930001f, 0x80000540, 0x04000005,
10407 0x41400800, 0x0201f800, 0x00100d7c, 0x40068000,
10408 0x4d2c0000, 0x59325808, 0x0201f800, 0x00109037,
10409 0x040209f3, 0x4c5c0000, 0x5930b809, 0x0201f800,
10410 0x00107911, 0x485e6009, 0x5c00b800, 0x5c025800,
10411 0x5c028000, 0x5c03e000, 0x02000000, 0x00106c4b,
10412 0x1c01f000, 0x598c000d, 0x81300580, 0x04020004,
10413 0x0201f800, 0x00106e8e, 0x04020016, 0x0201f800,
10414 0x001068d3, 0x040007df, 0x0201f800, 0x00106b6c,
10415 0x04000010, 0x0201f800, 0x001005d8, 0x0201f800,
10416 0x00108cd6, 0x04020004, 0x0201f800, 0x00106e62,
10417 0x04020008, 0x0201f800, 0x001067ae, 0x040007d1,
10418 0x0201f800, 0x00106b6c, 0x02020800, 0x001005d8,
10419 0x59300203, 0x82000c80, 0x0000000e, 0x02021800,
10420 0x001005d8, 0x0c01f7b9, 0x0201f800, 0x00100e99,
10421 0x0401f7c4, 0x4933c857, 0x4d440000, 0x4d340000,
10422 0x59cc0007, 0x0201f800, 0x00105c9a, 0x02000800,
10423 0x00020245, 0x0402001a, 0x59300009, 0x4c000000,
10424 0x49366009, 0x42003000, 0x0000000b, 0x0201f800,
10425 0x0010a942, 0x42000000, 0x0010b861, 0x0201f800,
10426 0x0010aa47, 0x4d3c0000, 0x4d400000, 0x42028000,
10427 0x00000029, 0x417a7800, 0x0201f800, 0x0010203c,
10428 0x5c028000, 0x5c027800, 0x5c000000, 0x48026009,
10429 0x59cc0007, 0x48026802, 0x80000580, 0x5c026800,
10430 0x5c028800, 0x1c01f000, 0x4933c857, 0x4c040000,
10431 0x59a80016, 0x82000580, 0x00000074, 0x04020040,
10432 0x59cc0a08, 0x82040480, 0x00000100, 0x04001033,
10433 0x59cc0c08, 0x82040500, 0x00008000, 0x04000035,
10434 0x59a80032, 0x80000540, 0x04020009, 0x59301009,
10435 0x58080212, 0x82000500, 0x0000ff00, 0x04000004,
10436 0x82040500, 0x00000800, 0x0400002a, 0x59cc0c09,
10437 0x80040840, 0x04001024, 0x59a80826, 0x8c040d06,
10438 0x04000004, 0x59cc0c0f, 0x8c040d1e, 0x04020012,
10439 0x59cc0a17, 0x800409c0, 0x04020012, 0x59cc0a18,
10440 0x82040480, 0x00000100, 0x04001014, 0x59cc0c18,
10441 0x800409c0, 0x0402000e, 0x59cc0c19, 0x80040840,
10442 0x04001011, 0x59cc0c1a, 0x80040840, 0x04001011,
10443 0x0401f018, 0x4a02621a, 0x00000100, 0x0401f012,
10444 0x4a02621a, 0x00000300, 0x0401f00f, 0x4a02621a,
10445 0x00000500, 0x0401f00c, 0x4a02621a, 0x00000700,
10446 0x0401f009, 0x4a02621a, 0x00000900, 0x0401f006,
10447 0x4a02621a, 0x00000f00, 0x0401f003, 0x4a02621a,
10448 0x00002d00, 0x82000540, 0x00000001, 0x0401f002,
10449 0x80000580, 0x5c000800, 0x1c01f000, 0x59cc0407,
10450 0x4803c857, 0x82000580, 0x00000800, 0x04000003,
10451 0x4a02621a, 0x00000000, 0x1c01f000, 0x4933c857,
10452 0x4c040000, 0x4c080000, 0x4c0c0000, 0x4c580000,
10453 0x59cc000c, 0x0201f800, 0x00105c9a, 0x02000800,
10454 0x00020245, 0x04020012, 0x83cc1400, 0x00000008,
10455 0x4200b000, 0x00000002, 0x83341c00, 0x00000006,
10456 0x0201f800, 0x0010855a, 0x04020009, 0x83cc1400,
10457 0x0000000a, 0x4200b000, 0x00000002, 0x83341c00,
10458 0x00000008, 0x0201f800, 0x0010855a, 0x5c00b000,
10459 0x5c001800, 0x5c001000, 0x5c000800, 0x1c01f000,
10460 0x4933c857, 0x4c000000, 0x4c040000, 0x4c080000,
10461 0x4c0c0000, 0x4c580000, 0x59cc0001, 0x0201f800,
10462 0x00105c9a, 0x02000800, 0x00020245, 0x04020014,
10463 0x83cc1400, 0x0000000b, 0x4200b000, 0x00000002,
10464 0x83341c00, 0x00000006, 0x0201f800, 0x0010855a,
10465 0x0402000c, 0x83cc1400, 0x0000000d, 0x4200b000,
10466 0x00000002, 0x83341c00, 0x00000008, 0x0201f800,
10467 0x0010855a, 0x04000014, 0x4933c856, 0x4933c856,
10468 0x4933c857, 0x59340009, 0x4803c857, 0x5934000e,
10469 0x4803c857, 0x59340008, 0x4803c857, 0x5934000d,
10470 0x4803c857, 0x59340007, 0x4803c857, 0x5934000c,
10471 0x4803c857, 0x59340006, 0x4803c857, 0x5934000b,
10472 0x4803c857, 0x5c00b000, 0x5c001800, 0x5c001000,
10473 0x5c000800, 0x5c000000, 0x1c01f000, 0x4933c857,
10474 0x4947c857, 0x4943c857, 0x4c600000, 0x0201f800,
10475 0x00106c55, 0x4df00000, 0x4d2c0000, 0x4d300000,
10476 0x4d340000, 0x4130c000, 0x42026000, 0x0010d1c0,
10477 0x59a8000e, 0x8060c1c0, 0x04000005, 0x82601580,
10478 0x0010bde9, 0x04000002, 0x80000040, 0x81640480,
10479 0x040210be, 0x40600000, 0x81300580, 0x040000b6,
10480 0x0401f97a, 0x040200b4, 0x59326809, 0x59300406,
10481 0x82000c80, 0x00000012, 0x02021800, 0x001005d8,
10482 0x0c01f001, 0x0010a3cd, 0x0010a338, 0x0010a351,
10483 0x0010a35c, 0x0010a335, 0x0010a34c, 0x0010a387,
10484 0x0010a3cd, 0x0010a333, 0x0010a39a, 0x0010a3ae,
10485 0x0010a333, 0x0010a333, 0x0010a333, 0x0010a333,
10486 0x0010a3cd, 0x0010a3c4, 0x0010a3bc, 0x0201f800,
10487 0x001005d8, 0x59300420, 0x8c000500, 0x04020096,
10488 0x59300403, 0x82000580, 0x00000043, 0x04000092,
10489 0x0201f800, 0x00109134, 0x04000007, 0x0201f800,
10490 0x0010914e, 0x0402008a, 0x0201f800, 0x0010801c,
10491 0x0401f087, 0x0201f800, 0x00102074, 0x0201f800,
10492 0x0010914e, 0x02000800, 0x0010801c, 0x0401f080,
10493 0x8d3e7d18, 0x04000004, 0x59300420, 0x8c000500,
10494 0x0402007d, 0x59325808, 0x0201f800, 0x00109037,
10495 0x04000077, 0x49425a06, 0x497a5c09, 0x0201f800,
10496 0x000202da, 0x0201f800, 0x0010912a, 0x0401f070,
10497 0x8d3e7d00, 0x04000007, 0x59300017, 0x81480580,
10498 0x0402006d, 0x59300018, 0x814c0580, 0x0402006a,
10499 0x59300203, 0x82000580, 0x00000004, 0x02000800,
10500 0x00100e99, 0x59325808, 0x0201f800, 0x00109037,
10501 0x0400005f, 0x4a025a04, 0x00000103, 0x59300004,
10502 0x8400055c, 0x48026004, 0x592c0408, 0x8c000512,
10503 0x04000007, 0x4d2c0000, 0x592c0009, 0x40025800,
10504 0x0201f800, 0x001007fd, 0x5c025800, 0x49425a06,
10505 0x497a5c09, 0x0401fb16, 0x0201f800, 0x0010959c,
10506 0x0201f800, 0x001091c6, 0x0201f800, 0x000202da,
10507 0x0201f800, 0x0010912a, 0x0401f045, 0x8d3e7d18,
10508 0x04000045, 0x59300203, 0x82000580, 0x00000004,
10509 0x02000800, 0x00100e99, 0x59325808, 0x0201f800,
10510 0x00109037, 0x0400003a, 0x49425a06, 0x497a5c09,
10511 0x0401faff, 0x0201f800, 0x0010959c, 0x0201f800,
10512 0x000202da, 0x0401f032, 0x0201f800, 0x001062d5,
10513 0x04000031, 0x59300203, 0x82000580, 0x00000004,
10514 0x0400002d, 0x59300203, 0x82000580, 0x00000003,
10515 0x04020029, 0x0201f800, 0x00106b8a, 0x59325808,
10516 0x0201f800, 0x00109037, 0x04000021, 0x0201f800,
10517 0x000202da, 0x0401f01e, 0x59300203, 0x82000580,
10518 0x00000004, 0x02000800, 0x00100e99, 0x59325808,
10519 0x0201f800, 0x00109037, 0x04000015, 0x49425a06,
10520 0x497a5c09, 0x0201f800, 0x000202da, 0x0401f010,
10521 0x833c0500, 0x00001800, 0x0400000f, 0x8d3e7d16,
10522 0x0402000d, 0x59325817, 0x0201f800, 0x001007fd,
10523 0x59325808, 0x0201f800, 0x00109037, 0x04000004,
10524 0x49425a06, 0x0201f800, 0x000202da, 0x0201f800,
10525 0x00107911, 0x83326400, 0x00000024, 0x41580000,
10526 0x81300480, 0x0400173b, 0x5c026800, 0x5c026000,
10527 0x5c025800, 0x5c03e000, 0x02000800, 0x00106c4b,
10528 0x5c00c000, 0x1c01f000, 0x5c000000, 0x4c000000,
10529 0x4803c857, 0x4d3c0000, 0x42027800, 0x00000001,
10530 0x0201f800, 0x00104567, 0x5c027800, 0x4c580000,
10531 0x4200b000, 0x00000002, 0x83a81c00, 0x00000002,
10532 0x83cc1400, 0x0000000b, 0x0201f800, 0x0010855a,
10533 0x5c00b000, 0x80000540, 0x1c01f000, 0x492fc857,
10534 0x4943c857, 0x59a8000c, 0x812c0480, 0x04001011,
10535 0x59a8000d, 0x812c0480, 0x0402100e, 0x592c0000,
10536 0x80005d40, 0x04000008, 0x497a5800, 0x49425a06,
10537 0x4c2c0000, 0x0201f800, 0x000202da, 0x5c025800,
10538 0x0401f7f7, 0x49425a06, 0x0201f000, 0x000202da,
10539 0x1c01f000, 0x493fc857, 0x4933c857, 0x480bc857,
10540 0x0201f800, 0x00103b25, 0x0400002e, 0x41502800,
10541 0x813e79c0, 0x04020006, 0x59a80066, 0x80000000,
10542 0x59a8086a, 0x80040580, 0x04000026, 0x41300000,
10543 0x80140580, 0x0400001a, 0x58140203, 0x82000580,
10544 0x00000000, 0x04000016, 0x58140202, 0x80080580,
10545 0x04020013, 0x58141c06, 0x820c0580, 0x00000005,
10546 0x0400000f, 0x820c0580, 0x00000009, 0x04000017,
10547 0x59300009, 0x58142009, 0x801021c0, 0x04020006,
10548 0x5814201e, 0x59301809, 0x580c0002, 0x82000500,
10549 0x00ffffff, 0x80100580, 0x04000007, 0x82142c00,
10550 0x00000024, 0x41540000, 0x80140480, 0x04021005,
10551 0x0401f7df, 0x40163800, 0x81300540, 0x0401f002,
10552 0x80000580, 0x1c01f000, 0x58141807, 0x8c0c1d10,
10553 0x040207f3, 0x0401f7e7, 0x42002000, 0x0000ffff,
10554 0x59301009, 0x800811c0, 0x04000002, 0x58082403,
10555 0x41301000, 0x0401f007, 0x41781000, 0x41442000,
10556 0x0401f004, 0x41781000, 0x42002000, 0x0000ffff,
10557 0x5c000000, 0x4c000000, 0x4803c857, 0x480bc857,
10558 0x4813c857, 0x492fc857, 0x4943c857, 0x4d2c0000,
10559 0x0201f800, 0x001007e4, 0x02000800, 0x001005d8,
10560 0x4a025a04, 0x0000010d, 0x800811c0, 0x04000017,
10561 0x83400580, 0x00000029, 0x04020010, 0x82180580,
10562 0x00000002, 0x0400000a, 0x82180580, 0x00000003,
10563 0x04000007, 0x82180580, 0x00000008, 0x04000004,
10564 0x82180580, 0x00000009, 0x04020004, 0x4a025809,
10565 0xffffffff, 0x0401f002, 0x480a5809, 0x58080202,
10566 0x48025c13, 0x0401f005, 0x4a025809, 0xffffffff,
10567 0x4a025c13, 0x0000ffff, 0x49425a08, 0x48125a06,
10568 0x82100580, 0x0000ffff, 0x0400000e, 0x4d440000,
10569 0x4d340000, 0x40128800, 0x0201f800, 0x00020245,
10570 0x02020800, 0x001005d8, 0x59340002, 0x82000500,
10571 0x00ffffff, 0x48025812, 0x5c026800, 0x5c028800,
10572 0x497a5800, 0x497a5c04, 0x83400580, 0x00000046,
10573 0x04020002, 0x48165a07, 0x481a5c08, 0x0401fbed,
10574 0x5c025800, 0x1c01f000, 0x59300809, 0x800409c0,
10575 0x04000004, 0x58040403, 0x81440580, 0x1c01f000,
10576 0x82000540, 0x00000001, 0x0401f7fd, 0x4933c857,
10577 0x4c040000, 0x59300403, 0x82000d80, 0x0000001e,
10578 0x04020016, 0x800000d0, 0x59300a16, 0x82040d00,
10579 0x000000ff, 0x80040540, 0x4803c857, 0x48026416,
10580 0x4a026403, 0x00000085, 0x4a026203, 0x00000009,
10581 0x4a026406, 0x00000005, 0x4a02621d, 0x00000004,
10582 0x59a80038, 0x48026206, 0x42000800, 0x8000004b,
10583 0x0201f800, 0x00020721, 0x5c000800, 0x1c01f000,
10584 0x4933c857, 0x40000000, 0x40000000, 0x1c01f000,
10585 0x59300414, 0x4933c857, 0x4803c857, 0x8c000518,
10586 0x04000009, 0x8c000512, 0x02020000, 0x0010921e,
10587 0x0401f91b, 0x0201f800, 0x000206fd, 0x0201f800,
10588 0x0002077d, 0x1c01f000, 0x591c0406, 0x4803c857,
10589 0x82000c80, 0x00000009, 0x0402100b, 0x0c01f001,
10590 0x0010a4d9, 0x0010a4d9, 0x0010a4d9, 0x0010a4db,
10591 0x0010a4d9, 0x0010a4db, 0x0010a4db, 0x0010a4d9,
10592 0x0010a4db, 0x80000580, 0x1c01f000, 0x82000540,
10593 0x00000001, 0x1c01f000, 0x591c0406, 0x82000500,
10594 0x0000001f, 0x82000580, 0x00000006, 0x0400000e,
10595 0x4803c857, 0x4a026403, 0x0000003b, 0x4a02641a,
10596 0x00000009, 0x4a02621a, 0x00002a00, 0x4a026203,
10597 0x00000001, 0x42000800, 0x80000040, 0x0201f000,
10598 0x00020721, 0x4803c856, 0x4c040000, 0x4c140000,
10599 0x4d300000, 0x411e6000, 0x0401f8e9, 0x497a6205,
10600 0x59300414, 0x4803c857, 0x82000500, 0xffffadff,
10601 0x48026414, 0x497a6405, 0x5c026000, 0x0201f800,
10602 0x001007e4, 0x02000800, 0x001005d8, 0x5c002800,
10603 0x5c000800, 0x4a025a04, 0x0000010d, 0x497a5800,
10604 0x497a5c04, 0x4a025a08, 0x00000045, 0x491e5809,
10605 0x59300402, 0x48025c07, 0x59300419, 0x48025c0b,
10606 0x591c0414, 0x84000556, 0x48023c14, 0x591c1809,
10607 0x580c0403, 0x48025a06, 0x4816580a, 0x48065a0b,
10608 0x0401f99d, 0x4d400000, 0x42028000, 0x00000045,
10609 0x591c0202, 0x4c000000, 0x4d300000, 0x411e6000,
10610 0x0401fcb1, 0x5c026000, 0x5c000000, 0x48023a02,
10611 0x5c028000, 0x4a023c06, 0x00000006, 0x4a023a03,
10612 0x00000007, 0x497a3a06, 0x497a3a05, 0x1c01f000,
10613 0x4933c857, 0x83380580, 0x00000013, 0x0402000b,
10614 0x59300403, 0x4803c857, 0x82000d80, 0x00000085,
10615 0x0400002b, 0x82000d80, 0x0000008b, 0x04000028,
10616 0x0201f800, 0x001005d8, 0x83380580, 0x00000027,
10617 0x0402000c, 0x0201f800, 0x00106bbf, 0x4d2c0000,
10618 0x4d400000, 0x59325808, 0x42028000, 0x00000004,
10619 0x0401feab, 0x5c028000, 0x5c025800, 0x1c01f000,
10620 0x83380580, 0x00000014, 0x040007f3, 0x83380580,
10621 0x00000089, 0x04000005, 0x83380580, 0x0000008a,
10622 0x02020000, 0x00107974, 0x0201f800, 0x00106f60,
10623 0x02020000, 0x00107974, 0x59300a03, 0x82040580,
10624 0x0000000a, 0x04000009, 0x82040580, 0x0000000c,
10625 0x04000006, 0x0201f800, 0x001005d8, 0x4a026203,
10626 0x0000000a, 0x1c01f000, 0x83380480, 0x00000093,
10627 0x0402100c, 0x83380480, 0x00000085, 0x04001009,
10628 0x83380580, 0x00000089, 0x0400000a, 0x83380580,
10629 0x0000008a, 0x04000022, 0x0201f800, 0x001005d8,
10630 0x493bc857, 0x4933c857, 0x0201f000, 0x00107974,
10631 0x4933c857, 0x4c340000, 0x41306800, 0x0201f800,
10632 0x0002075a, 0x04000011, 0x4a026203, 0x00000001,
10633 0x4a026403, 0x0000001e, 0x59cc0c07, 0x48066419,
10634 0x59cc0a07, 0x48066219, 0x58340809, 0x48066009,
10635 0x4a026406, 0x00000004, 0x42000800, 0x80000040,
10636 0x0201f800, 0x00020721, 0x40366000, 0x0201f800,
10637 0x0002077d, 0x5c006800, 0x1c01f000, 0x4933c857,
10638 0x0201f000, 0x0002077d, 0x4933c857, 0x59300809,
10639 0x58040200, 0x8c00051a, 0x1c01f000, 0x0201f800,
10640 0x001048df, 0x0400001e, 0x4a026203, 0x00000002,
10641 0x59300414, 0x84000558, 0x48026414, 0x8c000512,
10642 0x04000004, 0x59a80039, 0x48026205, 0x0401f007,
10643 0x59a80839, 0x59a80037, 0x80040400, 0x82000400,
10644 0x0000000a, 0x48026205, 0x59300009, 0x82000c00,
10645 0x00000011, 0x50040000, 0x80000540, 0x04000004,
10646 0x82000c00, 0x00000000, 0x0401f7fb, 0x45300800,
10647 0x497a6000, 0x82000540, 0x00000001, 0x1c01f000,
10648 0x82100500, 0xfffffeef, 0x04020020, 0x4d2c0000,
10649 0x4937c857, 0x59340811, 0x83341400, 0x00000011,
10650 0x800409c0, 0x0400000e, 0x40040000, 0x81300580,
10651 0x04000005, 0x58040800, 0x82041400, 0x00000000,
10652 0x0401f7f8, 0x59300800, 0x497a6000, 0x44041000,
10653 0x0201f800, 0x000206fd, 0x0401f002, 0x4933c857,
10654 0x592c0000, 0x80000540, 0x02020800, 0x001005d8,
10655 0x5c025800, 0x492e6008, 0x0201f800, 0x000206fd,
10656 0x0201f000, 0x0002077d, 0x492fc857, 0x4a025a06,
10657 0x00000006, 0x0201f000, 0x000202da, 0x4c340000,
10658 0x59300009, 0x800001c0, 0x04000010, 0x82006c00,
10659 0x00000011, 0x50340000, 0x80000540, 0x04000009,
10660 0x81300580, 0x04000005, 0x50340000, 0x82006c00,
10661 0x00000000, 0x0401f7f8, 0x59300000, 0x44006800,
10662 0x5c006800, 0x1c01f000, 0x59300c06, 0x82040580,
10663 0x00000005, 0x040007fb, 0x82040580, 0x00000011,
10664 0x040007f8, 0x82040580, 0x00000006, 0x040007f5,
10665 0x82040580, 0x00000001, 0x040007f2, 0x0201f800,
10666 0x001005d8, 0x4933c857, 0x4c080000, 0x4c0c0000,
10667 0x4c580000, 0x59a8101d, 0x59cc1807, 0x820c1d00,
10668 0x00ffffff, 0x800c0110, 0x80083580, 0x04020014,
10669 0x83cc1400, 0x00000008, 0x4200b000, 0x00000002,
10670 0x59300009, 0x82001c00, 0x00000006, 0x0201f800,
10671 0x0010855a, 0x0402000a, 0x83cc1400, 0x0000000a,
10672 0x4200b000, 0x00000002, 0x59300009, 0x82001c00,
10673 0x00000008, 0x0201f800, 0x0010855a, 0x5c00b000,
10674 0x5c001800, 0x5c001000, 0x1c01f000, 0x4933c856,
10675 0x0201f800, 0x0010421b, 0x0201f000, 0x00101e45,
10676 0x493bc857, 0x4d2c0000, 0x0201f800, 0x001007e4,
10677 0x02000800, 0x001005d8, 0x832cac00, 0x00000005,
10678 0x4c580000, 0x4c540000, 0x4200b000, 0x00000006,
10679 0x4578a800, 0x8054a800, 0x8058b040, 0x040207fd,
10680 0x83380580, 0x00000046, 0x04020004, 0x4a025a04,
10681 0x00000144, 0x0401f008, 0x4a025a04, 0x00000146,
10682 0x83380580, 0x00000041, 0x04000003, 0x4a025a06,
10683 0x00000001, 0x59cc0007, 0x82000500, 0xff000000,
10684 0x80000110, 0x59cc1008, 0x82081500, 0xff000000,
10685 0x80081540, 0x480a580a, 0x83380580, 0x00000046,
10686 0x04020006, 0x59cc0007, 0x82000500, 0x00ffffff,
10687 0x4802580b, 0x0401f005, 0x59cc0008, 0x82000500,
10688 0x00ffffff, 0x4802580b, 0x83380580, 0x00000046,
10689 0x04020004, 0x83cc1400, 0x00000009, 0x0401f003,
10690 0x83cc1400, 0x0000000d, 0x50080000, 0x9c0001c0,
10691 0x4802580c, 0x80081000, 0x50080000, 0x9c0001c0,
10692 0x4802580d, 0x83380580, 0x00000046, 0x04020008,
10693 0x59cc000b, 0x9c0001c0, 0x4802580e, 0x59cc000c,
10694 0x9c0001c0, 0x4802580f, 0x0401f007, 0x59cc000f,
10695 0x9c0001c0, 0x4802580e, 0x59cc0010, 0x9c0001c0,
10696 0x4802580f, 0x83380580, 0x00000046, 0x04020004,
10697 0x83cc1400, 0x00000011, 0x0401f003, 0x83cc1400,
10698 0x00000015, 0x412c3000, 0x82183400, 0x00000010,
10699 0x4200b000, 0x00000004, 0x50080000, 0x9c0001c0,
10700 0x44003000, 0x80081000, 0x80183000, 0x8058b040,
10701 0x040207fa, 0x5c00a800, 0x5c00b000, 0x0201f800,
10702 0x000202da, 0x5c025800, 0x1c01f000, 0x4933c857,
10703 0x492fc857, 0x59300809, 0x58040200, 0x8c00051e,
10704 0x04000004, 0x592c0208, 0x84000558, 0x48025a08,
10705 0x1c01f000, 0x59e0180f, 0x599c0413, 0x800c1000,
10706 0x80080580, 0x04020002, 0x41781000, 0x59e00010,
10707 0x59e00810, 0x80040d80, 0x040207fd, 0x80080580,
10708 0x0400000b, 0x4c080000, 0x599c0814, 0x599c1015,
10709 0x800c00cc, 0x80040c00, 0x82081440, 0x00000000,
10710 0x5c001800, 0x82000540, 0x00000001, 0x4803c857,
10711 0x1c01f000, 0x492fc857, 0x42007000, 0x0010b7f8,
10712 0x58380807, 0x800409c0, 0x04020005, 0x492c7008,
10713 0x492c7007, 0x0201f000, 0x00100875, 0x492c0800,
10714 0x492c7007, 0x1c01f000, 0x59300203, 0x4933c857,
10715 0x4937c857, 0x493bc857, 0x4803c857, 0x82003480,
10716 0x0000000e, 0x02021800, 0x001005d8, 0x0c01f001,
10717 0x0010a6da, 0x0010a82c, 0x0010a6da, 0x0010a6da,
10718 0x0010a6da, 0x0010a6da, 0x0010a6da, 0x0010a791,
10719 0x0010a6dc, 0x0010a6da, 0x0010a6da, 0x0010a6da,
10720 0x0010a6da, 0x0010a6da, 0x0201f800, 0x001005d8,
10721 0x83380580, 0x0000004c, 0x02020800, 0x001005d8,
10722 0x0201f800, 0x001048ec, 0x04020020, 0x59a80826,
10723 0x82040500, 0x00000009, 0x82000580, 0x00000008,
10724 0x0400001a, 0x8c040d12, 0x0400003d, 0x59cc0806,
10725 0x82040d00, 0xff000000, 0x82040580, 0x03000000,
10726 0x0400001f, 0x82040580, 0x50000000, 0x04000005,
10727 0x82040580, 0x52000000, 0x02020000, 0x0002077d,
10728 0x813669c0, 0x04000006, 0x4d3c0000, 0x417a7800,
10729 0x0201f800, 0x0010203c, 0x5c027800, 0x4a026403,
10730 0x00000001, 0x0401f014, 0x59cc0806, 0x82040d00,
10731 0xff000000, 0x82040580, 0x03000000, 0x04000008,
10732 0x82040580, 0x50000000, 0x04000005, 0x82040580,
10733 0x52000000, 0x02020000, 0x0002077d, 0x4a026403,
10734 0x00000009, 0x4a02641a, 0x00000009, 0x4a02621a,
10735 0x00000000, 0x813669c0, 0x0402000b, 0x59cc0001,
10736 0x0201f800, 0x00105c9a, 0x02020000, 0x0002077d,
10737 0x0201f800, 0x001045a6, 0x02020000, 0x0002077d,
10738 0x49366009, 0x4a026406, 0x00000004, 0x4a026203,
10739 0x00000001, 0x0201f000, 0x0010672b, 0x0201f800,
10740 0x00103b25, 0x04000023, 0x59cc0806, 0x4807c857,
10741 0x82040d00, 0xff000000, 0x82040580, 0x03000000,
10742 0x04000033, 0x82040580, 0x20000000, 0x04000041,
10743 0x82040580, 0x21000000, 0x04000052, 0x82040580,
10744 0x24000000, 0x0400004f, 0x82040580, 0x50000000,
10745 0x0400004c, 0x82040580, 0x52000000, 0x04000049,
10746 0x82040580, 0x05000000, 0x0402000d, 0x59cc0806,
10747 0x82040d00, 0xff000000, 0x9c0431c0, 0x42028000,
10748 0x00000046, 0x42002800, 0x00000001, 0x0401fcf3,
10749 0x0401f93c, 0x02000800, 0x001005d8, 0x42002000,
10750 0x00000051, 0x0201f800, 0x00107a4a, 0x59cc0000,
10751 0x82000500, 0x00ffffff, 0x82000580, 0x00ffffff,
10752 0x04000005, 0x4a026203, 0x00000007, 0x493a6403,
10753 0x1c01f000, 0x59325817, 0x812e59c0, 0x02020800,
10754 0x001007fd, 0x0201f000, 0x0002077d, 0x813669c0,
10755 0x040007df, 0x59340400, 0x82000500, 0x000000ff,
10756 0x82000580, 0x00000003, 0x040207d9, 0x0401fc6f,
10757 0x040207d7, 0x4a026403, 0x00000009, 0x4a02641a,
10758 0x0000000e, 0x4a02621a, 0x00001900, 0x0401f7a2,
10759 0x813669c0, 0x0400000c, 0x59340c00, 0x82040500,
10760 0x000000ff, 0x82000580, 0x00000009, 0x04000794,
10761 0x82040500, 0x0000ff00, 0x82000580, 0x00000700,
10762 0x040207c3, 0x4a026403, 0x00000009, 0x4a02641a,
10763 0x00000009, 0x4a02621a, 0x00001e00, 0x0401f78e,
10764 0x813669c0, 0x040007f8, 0x59340c00, 0x82040500,
10765 0x0000ff00, 0x82000580, 0x00000700, 0x040007f2,
10766 0x0401f7b3, 0x4d2c0000, 0x4c580000, 0x4c500000,
10767 0x4c540000, 0x41385000, 0x83380580, 0x00000054,
10768 0x02020800, 0x001005d8, 0x59325808, 0x592c0c0b,
10769 0x82040d00, 0x0000e000, 0x82040580, 0x00002000,
10770 0x04020076, 0x59300817, 0x800409c0, 0x04000014,
10771 0x58041404, 0x41cca800, 0x8204a400, 0x00000005,
10772 0x82080480, 0x00000010, 0x04021004, 0x4008b000,
10773 0x0401fb6b, 0x0401f00a, 0x40001000, 0x4200b000,
10774 0x0000000f, 0x0401fb66, 0x58040801, 0x800409c0,
10775 0x040207f2, 0x0201f800, 0x001005d8, 0x813669c0,
10776 0x0400005e, 0x59344c00, 0x592c0c09, 0x4807c857,
10777 0x4827c857, 0x82040d00, 0x000000ff, 0x82040580,
10778 0x00000003, 0x0400002a, 0x82040580, 0x00000005,
10779 0x04000032, 0x82040580, 0x00000020, 0x04000036,
10780 0x82040580, 0x00000052, 0x04000042, 0x82040580,
10781 0x00000050, 0x04000042, 0x82040580, 0x00000021,
10782 0x04000004, 0x82040580, 0x00000024, 0x04020043,
10783 0x82240500, 0x0000ff00, 0x82000580, 0x00000007,
10784 0x04000008, 0x42000800, 0x00000009, 0x0201f800,
10785 0x00104571, 0x42005000, 0x0000000c, 0x0401f037,
10786 0x4a025a06, 0x00000031, 0x4a02580d, 0x00000009,
10787 0x59340400, 0x4802580e, 0x0201f800, 0x000202da,
10788 0x0201f800, 0x00107911, 0x0401f03d, 0x0201f800,
10789 0x001042b4, 0x0201f800, 0x0010462a, 0x42000800,
10790 0x00000003, 0x0201f800, 0x00104571, 0x42005000,
10791 0x00000008, 0x0401f021, 0x59cc0007, 0x0201f800,
10792 0x00105eec, 0x0402001d, 0x0201f800, 0x001042b4,
10793 0x0401f01a, 0x82240500, 0x0000ff00, 0x82000580,
10794 0x00000007, 0x040007df, 0x82240500, 0x000000ff,
10795 0x82000580, 0x00000009, 0x040007da, 0x0201f800,
10796 0x0010468d, 0x42005000, 0x0000000a, 0x0401f00b,
10797 0x42005000, 0x0000000e, 0x0401f003, 0x42005000,
10798 0x00000010, 0x82240500, 0x0000ff00, 0x82000580,
10799 0x00000007, 0x040007cb, 0x482a6403, 0x4a026203,
10800 0x00000001, 0x592c000d, 0x48026011, 0x497a6013,
10801 0x59a80038, 0x48026206, 0x417a7800, 0x0201f800,
10802 0x0010672b, 0x59325817, 0x812e59c0, 0x04000004,
10803 0x0201f800, 0x001007fd, 0x497a6017, 0x5c00a800,
10804 0x5c00a000, 0x5c00b000, 0x5c025800, 0x1c01f000,
10805 0x4d2c0000, 0x59325808, 0x83380580, 0x00000013,
10806 0x04020029, 0x59300c03, 0x82040580, 0x00000054,
10807 0x0400001e, 0x82040580, 0x00000010, 0x04000018,
10808 0x82040580, 0x0000000e, 0x04000015, 0x82040580,
10809 0x00000008, 0x0400000d, 0x82040580, 0x0000000c,
10810 0x0400000a, 0x82040580, 0x0000000a, 0x02020800,
10811 0x001005d8, 0x42000800, 0x00000006, 0x0201f800,
10812 0x00104571, 0x0401f009, 0x42000800, 0x00000004,
10813 0x0201f800, 0x00104571, 0x0401f004, 0x59340200,
10814 0x8400051a, 0x48026a00, 0x4a025a06, 0x00000000,
10815 0x0201f800, 0x000202da, 0x0201f800, 0x0002077d,
10816 0x0401f022, 0x83380580, 0x00000027, 0x0400000e,
10817 0x83380580, 0x00000014, 0x02020800, 0x001005d8,
10818 0x0201f800, 0x00106bbf, 0x42028000, 0x00000031,
10819 0x42000800, 0x00000004, 0x42001000, 0x000000ff,
10820 0x0401f009, 0x0201f800, 0x00106bbf, 0x42028000,
10821 0x00000031, 0x42000800, 0x00000004, 0x42001000,
10822 0x00000010, 0x49425a06, 0x4806580d, 0x480a580e,
10823 0x0201f800, 0x000202da, 0x0201f800, 0x00104c19,
10824 0x0201f800, 0x00107911, 0x5c025800, 0x1c01f000,
10825 0x42007000, 0x0010b7f8, 0x58380807, 0x800409c0,
10826 0x04020005, 0x492c7008, 0x492c7007, 0x0201f000,
10827 0x00100875, 0x492c0800, 0x492c7007, 0x1c01f000,
10828 0x4d2c0000, 0x4c580000, 0x4c500000, 0x4c540000,
10829 0x4933c857, 0x4937c857, 0x59cc0806, 0x4807c857,
10830 0x82040d00, 0xff000000, 0x82040580, 0x03000000,
10831 0x0400000d, 0x82040580, 0x05000000, 0x0400000a,
10832 0x82040580, 0x21000000, 0x04000030, 0x82040580,
10833 0x24000000, 0x0400002d, 0x82040580, 0x20000000,
10834 0x0402002f, 0x0201f800, 0x001007e4, 0x0400002c,
10835 0x492fc857, 0x492e6017, 0x59a8b016, 0x8258b400,
10836 0x0000001b, 0x8258b500, 0xfffffffc, 0x8058b104,
10837 0x485a5c04, 0x412c7800, 0x41cca000, 0x82580480,
10838 0x00000010, 0x04021005, 0x832cac00, 0x00000005,
10839 0x0401fa63, 0x0401f015, 0x40580800, 0x4200b000,
10840 0x0000000f, 0x832cac00, 0x00000005, 0x0401fa5c,
10841 0x8204b480, 0x0000000f, 0x0201f800, 0x001007e4,
10842 0x04000004, 0x492c7801, 0x412c7800, 0x0401f7ec,
10843 0x59325817, 0x0201f800, 0x001007fd, 0x497a6017,
10844 0x80000580, 0x0401f006, 0x59340200, 0x84000554,
10845 0x48026a00, 0x82000540, 0x00000001, 0x5c00a800,
10846 0x5c00a000, 0x5c00b000, 0x5c025800, 0x1c01f000,
10847 0x4933c857, 0x492fc857, 0x4d2c0000, 0x59300a03,
10848 0x82040580, 0x00000007, 0x04000036, 0x82040580,
10849 0x00000001, 0x02020800, 0x001005d8, 0x0201f800,
10850 0x00106c55, 0x4df00000, 0x598c000d, 0x81300580,
10851 0x04020016, 0x59300004, 0x8c000520, 0x04000004,
10852 0x84000520, 0x48026004, 0x0401f016, 0x42001000,
10853 0x0010b7f6, 0x50081000, 0x58080002, 0x82000580,
10854 0x00000100, 0x04000006, 0x5808000c, 0x81300580,
10855 0x02020800, 0x001005d8, 0x0401f00a, 0x0201f800,
10856 0x00106e8e, 0x04020020, 0x59300004, 0x8c000520,
10857 0x04000004, 0x84000520, 0x48026004, 0x0401f003,
10858 0x0201f800, 0x001068d3, 0x5c03e000, 0x02000800,
10859 0x00106c4b, 0x0201f800, 0x00109037, 0x02000800,
10860 0x001005d8, 0x59325808, 0x4a025a06, 0x00000005,
10861 0x0201f800, 0x000202da, 0x0201f800, 0x00104c19,
10862 0x59325817, 0x812e59c0, 0x02020800, 0x001007fd,
10863 0x0201f800, 0x00107911, 0x80000580, 0x5c025800,
10864 0x1c01f000, 0x5c03e000, 0x02000800, 0x00106c4b,
10865 0x59300406, 0x82000580, 0x00000011, 0x040007b8,
10866 0x0401f7f7, 0x4c040000, 0x59340200, 0x4803c857,
10867 0x8c00051c, 0x04000009, 0x59cc0805, 0x591c0019,
10868 0x4803c857, 0x80040580, 0x04000004, 0x80000580,
10869 0x4803c856, 0x0401f003, 0x82000540, 0x00000001,
10870 0x5c000800, 0x1c01f000, 0x4c000000, 0x4c0c0000,
10871 0x4c100000, 0x42001800, 0x0000ffff, 0x42002000,
10872 0x00000004, 0x0401f010, 0x4c000000, 0x4c0c0000,
10873 0x4c100000, 0x59302009, 0x58101c03, 0x42002000,
10874 0x00000004, 0x0401f008, 0x4c000000, 0x4c0c0000,
10875 0x4c100000, 0x59302009, 0x58101c03, 0x42002000,
10876 0x00000007, 0x480fc857, 0x4813c857, 0x481bc857,
10877 0x0201f800, 0x00103aae, 0x5c002000, 0x5c001800,
10878 0x5c000000, 0x1c01f000, 0x83380580, 0x00000092,
10879 0x02020800, 0x001005d8, 0x42000800, 0x80000040,
10880 0x4a026203, 0x00000001, 0x493a6403, 0x0201f000,
10881 0x00020721, 0x4d400000, 0x0201f800, 0x00103b25,
10882 0x04000008, 0x59a80005, 0x84000544, 0x48035005,
10883 0x42028000, 0x0000002a, 0x0201f800, 0x0010a449,
10884 0x5c028000, 0x1c01f000, 0x59a80026, 0x8c000508,
10885 0x04000005, 0x599c0017, 0x8c00050a, 0x04020002,
10886 0x1c01f000, 0x82000540, 0x00000001, 0x1c01f000,
10887 0x59300420, 0x84000540, 0x48026420, 0x1c01f000,
10888 0x4817c857, 0x4c000000, 0x4c040000, 0x8c142d2a,
10889 0x04000004, 0x598800b8, 0x80000000, 0x480310b8,
10890 0x8c142d2e, 0x04000004, 0x598800b9, 0x80000000,
10891 0x480310b9, 0x8c142d2c, 0x04000013, 0x40140000,
10892 0x82000500, 0x00070000, 0x82000d80, 0x00030000,
10893 0x0400000d, 0x82000d80, 0x00040000, 0x0400000a,
10894 0x82000d80, 0x00050000, 0x04000007, 0x59880005,
10895 0x80000000, 0x48031005, 0x598800ba, 0x80000000,
10896 0x480310ba, 0x5c000800, 0x5c000000, 0x1c01f000,
10897 0x4817c857, 0x4c000000, 0x4c040000, 0x8c142d2a,
10898 0x04000004, 0x598800bb, 0x80000000, 0x480310bb,
10899 0x8c142d2e, 0x04000004, 0x598800bc, 0x80000000,
10900 0x480310bc, 0x8c142d2c, 0x04000013, 0x40140000,
10901 0x82000500, 0x00070000, 0x82000d80, 0x00030000,
10902 0x0400000d, 0x82000d80, 0x00040000, 0x0400000a,
10903 0x82000d80, 0x00050000, 0x04000007, 0x59880005,
10904 0x80000000, 0x48031005, 0x598800bd, 0x80000000,
10905 0x480310bd, 0x5c000800, 0x5c000000, 0x1c01f000,
10906 0x4c000000, 0x59880001, 0x80000000, 0x4803c857,
10907 0x48031001, 0x5c000000, 0x1c01f000, 0x4c000000,
10908 0x59880000, 0x80000000, 0x4803c857, 0x48031000,
10909 0x5c000000, 0x1c01f000, 0x4c000000, 0x59880002,
10910 0x80000000, 0x4803c857, 0x48031002, 0x5c000000,
10911 0x1c01f000, 0x4807c857, 0x4c000000, 0x8c040d2c,
10912 0x04000004, 0x598800a6, 0x80000000, 0x480310a6,
10913 0x8c040d2a, 0x04000004, 0x598800a7, 0x80000000,
10914 0x480310a7, 0x8c040d28, 0x04000004, 0x598800a8,
10915 0x80000000, 0x480310a8, 0x8c040d26, 0x04000004,
10916 0x598800a9, 0x80000000, 0x480310a9, 0x8c040d24,
10917 0x04000004, 0x598800aa, 0x80000000, 0x480310aa,
10918 0x8c040d22, 0x04000004, 0x598800ab, 0x80000000,
10919 0x480310ab, 0x8c040d20, 0x04000004, 0x598800ac,
10920 0x80000000, 0x480310ac, 0x5c000000, 0x1c01f000,
10921 0x4807c857, 0x4c000000, 0x598800ad, 0x80000000,
10922 0x480310ad, 0x5c000000, 0x1c01f000, 0x4807c857,
10923 0x4c000000, 0x8c040d1c, 0x04000004, 0x598800ae,
10924 0x80000000, 0x480310ae, 0x8c040d1a, 0x04000004,
10925 0x598800af, 0x80000000, 0x480310af, 0x5c000000,
10926 0x1c01f000, 0x4807c857, 0x4c000000, 0x8c040d18,
10927 0x04000004, 0x598800b0, 0x80000000, 0x480310b0,
10928 0x8c040d16, 0x04000004, 0x598800b1, 0x80000000,
10929 0x480310b1, 0x8c040d14, 0x04000004, 0x598800b2,
10930 0x80000000, 0x480310b2, 0x5c000000, 0x1c01f000,
10931 0x4807c857, 0x4c000000, 0x8c040d10, 0x04000004,
10932 0x598800b3, 0x80000000, 0x480310b3, 0x8c040d0c,
10933 0x04000004, 0x598800b4, 0x80000000, 0x480310b4,
10934 0x5c000000, 0x1c01f000, 0x4807c857, 0x4c000000,
10935 0x8c040d08, 0x04000004, 0x598800b5, 0x80000000,
10936 0x480310b5, 0x8c040d04, 0x04000004, 0x598800b6,
10937 0x80000000, 0x480310b6, 0x5c000000, 0x1c01f000,
10938 0x4807c856, 0x4c000000, 0x5988007f, 0x80000000,
10939 0x4803107f, 0x5c000000, 0x1c01f000, 0x4803c857,
10940 0x4c040000, 0x50000800, 0x80040800, 0x4807c857,
10941 0x44040000, 0x5c000800, 0x1c01f000, 0x480fc857,
10942 0x4c000000, 0x820c0580, 0x00000000, 0x04020004,
10943 0x42000000, 0x0010b819, 0x0401f014, 0x820c0580,
10944 0x00001001, 0x04020004, 0x42000000, 0x0010b81a,
10945 0x0401f00e, 0x820c0580, 0x00001002, 0x04020004,
10946 0x42000000, 0x0010b81b, 0x0401f008, 0x820c0c80,
10947 0x0000201c, 0x02021800, 0x001005d8, 0x820c0500,
10948 0x0000001f, 0x0c01f804, 0x0401ffdd, 0x5c000000,
10949 0x1c01f000, 0x0010aa89, 0x0010aa8c, 0x0010aa8f,
10950 0x0010aa92, 0x0010aa95, 0x0010aa98, 0x0010aa9b,
10951 0x0010aa9e, 0x0010aaa1, 0x0010aaa4, 0x0010aaa7,
10952 0x0010aaaa, 0x0010aaad, 0x0010aab0, 0x0010aab3,
10953 0x0010aab6, 0x0010aab9, 0x0010aabc, 0x0010aabf,
10954 0x0010aac2, 0x0010aac5, 0x0010aac8, 0x0010aacb,
10955 0x0010aace, 0x0010aad1, 0x0010aad4, 0x0010aad7,
10956 0x0010aada, 0x42000000, 0x0010b81c, 0x1c01f000,
10957 0x42000000, 0x0010b81d, 0x1c01f000, 0x42000000,
10958 0x0010b81e, 0x1c01f000, 0x42000000, 0x0010b81f,
10959 0x1c01f000, 0x42000000, 0x0010b820, 0x1c01f000,
10960 0x42000000, 0x0010b821, 0x1c01f000, 0x42000000,
10961 0x0010b822, 0x1c01f000, 0x42000000, 0x0010b823,
10962 0x1c01f000, 0x42000000, 0x0010b824, 0x1c01f000,
10963 0x42000000, 0x0010b825, 0x1c01f000, 0x42000000,
10964 0x0010b826, 0x1c01f000, 0x42000000, 0x0010b827,
10965 0x1c01f000, 0x42000000, 0x0010b828, 0x1c01f000,
10966 0x42000000, 0x0010b829, 0x1c01f000, 0x42000000,
10967 0x0010b82a, 0x1c01f000, 0x42000000, 0x0010b82b,
10968 0x1c01f000, 0x42000000, 0x0010b82c, 0x1c01f000,
10969 0x42000000, 0x0010b82d, 0x1c01f000, 0x42000000,
10970 0x0010b82e, 0x1c01f000, 0x42000000, 0x0010b82f,
10971 0x1c01f000, 0x42000000, 0x0010b830, 0x1c01f000,
10972 0x42000000, 0x0010b831, 0x1c01f000, 0x42000000,
10973 0x0010b832, 0x1c01f000, 0x42000000, 0x0010b833,
10974 0x1c01f000, 0x42000000, 0x0010b834, 0x1c01f000,
10975 0x42000000, 0x0010b835, 0x1c01f000, 0x42000000,
10976 0x0010b836, 0x1c01f000, 0x42000000, 0x0010b837,
10977 0x1c01f000, 0x480fc857, 0x4c000000, 0x820c0580,
10978 0x00000001, 0x04020004, 0x42000000, 0x0010b80e,
10979 0x0401f012, 0x820c0580, 0x00000002, 0x04020004,
10980 0x42000000, 0x0010b80f, 0x0401f00c, 0x820c0580,
10981 0x00000003, 0x04020004, 0x42000000, 0x0010b810,
10982 0x0401f006, 0x820c0580, 0x00000004, 0x04020004,
10983 0x42000000, 0x0010b811, 0x0401ff51, 0x5c000000,
10984 0x1c01f000, 0x4c000000, 0x59a80026, 0x4803c857,
10985 0x8c000502, 0x04000010, 0x8c000506, 0x04000004,
10986 0x42000000, 0x0010b841, 0x0401f012, 0x8c00050a,
10987 0x04000004, 0x42000000, 0x0010b840, 0x0401f00d,
10988 0x8c000508, 0x04000004, 0x42000000, 0x0010b843,
10989 0x0401f008, 0x0201f800, 0x0010513b, 0x04000006,
10990 0x8c000506, 0x04020004, 0x42000000, 0x0010b842,
10991 0x0401ff33, 0x5c000000, 0x1c01f000, 0x8058b1c0,
10992 0x02000800, 0x001005d8, 0x5450a800, 0x8050a000,
10993 0x8054a800, 0x8058b040, 0x040207fc, 0x1c01f000,
10994 0x8058b1c0, 0x02000800, 0x001005d8, 0x4450a800,
10995 0x8054a800, 0x8058b040, 0x040207fd, 0x1c01f000,
10996 0x8058b1c0, 0x02000800, 0x001005d8, 0x50500000,
10997 0x9c0001c0, 0x4400a800, 0x8050a000, 0x8054a800,
10998 0x8058b040, 0x040207fa, 0x1c01f000, 0x4c000000,
10999 0x59a80008, 0x8c00051c, 0x5c000000, 0x1c01f000,
11000 0x00000001, 0x00000002, 0x00000004, 0x00000008,
11001 0x00000010, 0x00000020, 0x00000040, 0x00000080,
11002 0x00000100, 0x00000200, 0x00000400, 0x00000800,
11003 0x00001000, 0x00002000, 0x00004000, 0x00008000,
11004 0x00010000, 0xa5f2b3ac
11005};
11006
11007#ifdef UNIQUE_FW_NAME
11008uint32_t fw2400_length01 = 0x0000ab4a ;
11009#else
11010uint32_t risc_code_length01 = 0x0000ab4a ;
11011#endif
11012
11013
11014#ifdef UNIQUE_FW_NAME
11015uint32_t fw2400_addr02 = 0x0010e000 ;
11016#else
11017uint32_t risc_code_addr02 = 0x0010e000 ;
11018#endif
11019
11020#ifdef UNIQUE_FW_NAME
11021uint32_t fw2400_code02[] = {
11022#else
11023uint32_t risc_code02[] = {
11024#endif
11025 0x00000000, 0x00000000, 0x0010e000, 0x000014ff,
11026 0x00000000, 0x00000000, 0x00020000, 0x000008c0,
11027 0x836c0580, 0x00000003, 0x02020000, 0x001002e3,
11028 0x42000000, 0x0010b4bb, 0x50000000, 0x800001c0,
11029 0x04020956, 0x0401f923, 0x0401fbe3, 0x0401fb5c,
11030 0x0201f800, 0x00020718, 0x0201f800, 0x0002057b,
11031 0x0401f7f0, 0x59b800ea, 0x82000d00, 0xf0000038,
11032 0x02020000, 0x00100a7a, 0x8c000510, 0x02000000,
11033 0x00100a79, 0x59ba60e0, 0x81300182, 0x0402104e,
11034 0x04002030, 0x8532653e, 0x59300406, 0x82000580,
11035 0x00000003, 0x04020028, 0x59300203, 0x82000580,
11036 0x00000004, 0x04020024, 0x59325808, 0x59300402,
11037 0x4a025a04, 0x00000103, 0x900001c0, 0x48025806,
11038 0x497a5807, 0x497a5c09, 0x5930001f, 0x80000540,
11039 0x02020800, 0x00100d56, 0x59300004, 0x8c00053e,
11040 0x04020010, 0x0401fa88, 0x59326809, 0x0201f800,
11041 0x0002077d, 0x5934000f, 0x5934140b, 0x80081040,
11042 0x04001002, 0x480a6c0b, 0x80000540, 0x04020a10,
11043 0x59b800ea, 0x8c000510, 0x040207d7, 0x1c01f000,
11044 0x0201f800, 0x00106f60, 0x040007ef, 0x0201f000,
11045 0x00100a65, 0x42027000, 0x00000055, 0x0401f027,
11046 0x83326500, 0x3fffffff, 0x59300406, 0x82000580,
11047 0x00000003, 0x04020015, 0x59325808, 0x59326809,
11048 0x59301402, 0x4a025a04, 0x00000103, 0x900811c0,
11049 0x480a5806, 0x497a5c09, 0x497a5807, 0x0401fa62,
11050 0x0201f800, 0x0002077d, 0x5934000f, 0x5934140b,
11051 0x80081040, 0x04001002, 0x480a6c0b, 0x80000540,
11052 0x040209eb, 0x0401f7db, 0x42027000, 0x00000054,
11053 0x0401f00a, 0x83300500, 0x60000000, 0x02000000,
11054 0x00100a68, 0x81326580, 0x8000013a, 0x82000400,
11055 0x00100a80, 0x50027000, 0x59300c06, 0x82040580,
11056 0x00000002, 0x02000000, 0x00100a65, 0x59300004,
11057 0x8c00053e, 0x04020004, 0x0201f800, 0x000207a1,
11058 0x0401f7c4, 0x0201f800, 0x00106f60, 0x040007fb,
11059 0x0201f000, 0x00100a65, 0x59325808, 0x412c7000,
11060 0x58380a04, 0x82040500, 0x0000000f, 0x82000c00,
11061 0x001010bd, 0x50044000, 0x0c01f001, 0x00100dd9,
11062 0x00100dd9, 0x0002009f, 0x00100dd9, 0x00100dd9,
11063 0x00100dd9, 0x00100dd9, 0x00100dd9, 0x000200af,
11064 0x00100ded, 0x00100dd9, 0x00100dd9, 0x00100ddb,
11065 0x00100dd9, 0x00100dd9, 0x00100dd9, 0x5838040a,
11066 0x8c000500, 0x02000800, 0x001005d8, 0x50200000,
11067 0x80387c00, 0x583c1002, 0x583c2800, 0x583c2001,
11068 0x58380a07, 0x5838300f, 0x59303807, 0x58384c08,
11069 0x5838000d, 0x48026012, 0x0401f010, 0x5838020a,
11070 0x8c000502, 0x02000000, 0x00100dd9, 0x50200000,
11071 0x80387c00, 0x583c2800, 0x583c2001, 0x583c1002,
11072 0x592c0a07, 0x592c4c08, 0x592c300f, 0x59303807,
11073 0x497a6012, 0x497a6013, 0x4816600e, 0x4812600f,
11074 0x480a6010, 0x481a6011, 0x80040840, 0x4806600d,
11075 0x02020000, 0x00100e1a, 0x841c3d40, 0x481e6007,
11076 0x1c01f000, 0x41787800, 0x59325808, 0x592c0c0a,
11077 0x8c040d02, 0x02000000, 0x00100f8c, 0x592c000d,
11078 0x592c100f, 0x592c0a04, 0x480a6011, 0x48026012,
11079 0x48026013, 0x412c3000, 0x82040500, 0x0000000f,
11080 0x82000400, 0x001010bd, 0x50003800, 0x501c0000,
11081 0x401c1000, 0x592c1a07, 0x4802600a, 0x481a600b,
11082 0x480a600c, 0x480e600d, 0x843c7d4a, 0x403c1000,
11083 0x1c01f000, 0x41787800, 0x497a6012, 0x592c0a04,
11084 0x412c3000, 0x592c1a07, 0x82040500, 0x0000000f,
11085 0x82000400, 0x001010bd, 0x50004000, 0x50200000,
11086 0x40201000, 0x4802600a, 0x481a600b, 0x480a600c,
11087 0x480e600d, 0x80000580, 0x483e6004, 0x1c01f000,
11088 0x4c000000, 0x4df00000, 0x0201f800, 0x00020729,
11089 0x0401f005, 0x4c000000, 0x4df00000, 0x0401ff16,
11090 0x0401f001, 0x5c03e000, 0x5c000000, 0x1801f000,
11091 0x4203e000, 0xb0100000, 0x41fc0000, 0x82000500,
11092 0x00000011, 0x0c01f001, 0x0002012a, 0x00020697,
11093 0x0002012a, 0x0002012a, 0x0002012a, 0x0002012a,
11094 0x0002012a, 0x0002012a, 0x0002012a, 0x0002012a,
11095 0x0002012a, 0x0002012a, 0x0002012a, 0x0002012a,
11096 0x0002012a, 0x0002012a, 0x0010115a, 0x0002012c,
11097 0x0002012a, 0x0002012a, 0x0002012a, 0x0002012a,
11098 0x0002012a, 0x0002012a, 0x0002012a, 0x0002012a,
11099 0x0002012a, 0x0002012a, 0x0002012a, 0x0002012a,
11100 0x0002012a, 0x0002012a, 0x0201f800, 0x001005d8,
11101 0x0201f800, 0x00020697, 0x0201f000, 0x0010115a,
11102 0x42000000, 0x0010b4c1, 0x50000000, 0x8c000504,
11103 0x04000014, 0x42000000, 0x0010b4c1, 0x50000000,
11104 0x8c000502, 0x04020002, 0x1c01f000, 0x4df00000,
11105 0x4203e000, 0x50000000, 0x42034000, 0x0010b4a4,
11106 0x59a0001d, 0x59a1d81e, 0x84000502, 0x4803401d,
11107 0x58ec0009, 0x0801f800, 0x5c03e000, 0x1c01f000,
11108 0x04027002, 0x04026002, 0x1c01f000, 0x4df00000,
11109 0x4203e000, 0x50000000, 0x0201f800, 0x001007e4,
11110 0x04000010, 0x412dd800, 0x48efc857, 0x0201f800,
11111 0x00103b28, 0x42034000, 0x0010b4a4, 0x49a1d80b,
11112 0x48ef401e, 0x59a0001d, 0x84000544, 0x4803401d,
11113 0x0201f800, 0x00102214, 0x0201f800, 0x00102233,
11114 0x5c03e000, 0x1c01f000, 0x4da00000, 0x4df00000,
11115 0x4203e000, 0x50000000, 0x04006051, 0x40001000,
11116 0x42034000, 0x0010b4a4, 0x59a01818, 0x800c19c0,
11117 0x04020008, 0x59a0381b, 0x801c39c0, 0x02000800,
11118 0x001005d8, 0x59a0041c, 0x801c3c00, 0x0401f00c,
11119 0x59a00419, 0x82000400, 0x00000002, 0x48034419,
11120 0x82000c80, 0x00000013, 0x04001003, 0x497b4419,
11121 0x41780000, 0x59a03816, 0x801c3c00, 0x80081040,
11122 0x480b4017, 0x581c0200, 0x4803c021, 0x581c0401,
11123 0x4803c022, 0x581c0201, 0x4803c023, 0x581c0400,
11124 0x4803c020, 0x900001c0, 0x82000540, 0x00000012,
11125 0x4803c011, 0x59e00017, 0x8c000508, 0x04000003,
11126 0x4a03c017, 0x00000002, 0x4203e000, 0x30000001,
11127 0x800c19c0, 0x04000007, 0x800c1840, 0x480f4018,
11128 0x0402001f, 0x497b4419, 0x497b4219, 0x0401f01c,
11129 0x800811c0, 0x0402000b, 0x4d2c0000, 0x59a2581b,
11130 0x0201f800, 0x001007f4, 0x5c025800, 0x497b401b,
11131 0x497b401a, 0x497b441c, 0x497b421c, 0x0401f010,
11132 0x59a0041c, 0x82000400, 0x00000002, 0x82000c80,
11133 0x00000012, 0x4803441c, 0x04001009, 0x4d2c0000,
11134 0x59a2581b, 0x592c3813, 0x481f401b, 0x497b441c,
11135 0x0201f800, 0x001007f4, 0x5c025800, 0x5c03e000,
11136 0x5c034000, 0x1c01f000, 0x59a80005, 0x82000500,
11137 0x00000003, 0x02020000, 0x00104315, 0x59340400,
11138 0x82000580, 0x00000606, 0x02020000, 0x001042e6,
11139 0x5934000d, 0x80027d40, 0x02020000, 0x00104321,
11140 0x0401f803, 0x80000580, 0x1c01f000, 0x5934000f,
11141 0x59341203, 0x80080540, 0x0402006f, 0x5934020b,
11142 0x5934140b, 0x80080480, 0x0402106b, 0x0201f800,
11143 0x0002075a, 0x04000064, 0x80081000, 0x592c0406,
11144 0x480a6c0b, 0x49366009, 0x492e6008, 0x4a026406,
11145 0x00000003, 0x4a026403, 0x00000040, 0x800000c2,
11146 0x800018c4, 0x800c0400, 0x48026206, 0x592c0808,
11147 0x592c1809, 0x592c020a, 0x48066017, 0x480e6018,
11148 0x8c000502, 0x04000030, 0x4a026203, 0x00000004,
11149 0x592c0207, 0x80000040, 0x04020020, 0x59a80005,
11150 0x8c000514, 0x42000000, 0x00000055, 0x04020003,
11151 0x42000000, 0x00000033, 0x80000040, 0x040207ff,
11152 0x592c0204, 0x82000500, 0x000000ff, 0x82000580,
11153 0x00000018, 0x04020011, 0x592c180f, 0x59300007,
11154 0x82000540, 0x00000091, 0x480e6011, 0x48026007,
11155 0x42000000, 0x80000004, 0x48026004, 0x59bc00ea,
11156 0x8c000516, 0x040207fe, 0x83300400, 0x20000000,
11157 0x480378e1, 0x1c01f000, 0x0401fe78, 0x59300007,
11158 0x8400054e, 0x48026007, 0x592c1a04, 0x820c1d00,
11159 0x000000ff, 0x820c0580, 0x00000048, 0x04000017,
11160 0x0401f7ec, 0x8c000500, 0x04020ecb, 0x4a026203,
11161 0x00000002, 0x59a80805, 0x82040500, 0x00000600,
11162 0x04020012, 0x42000000, 0x00000030, 0x80000040,
11163 0x040207ff, 0x592c1a04, 0x820c1d00, 0x000000ff,
11164 0x820c0580, 0x00000018, 0x040007da, 0x820c0580,
11165 0x00000048, 0x040207d7, 0x42000800, 0x80000804,
11166 0x0201f000, 0x00106721, 0x8c040d12, 0x42000000,
11167 0x00000010, 0x040207ee, 0x42000000, 0x00000051,
11168 0x0401f7eb, 0x800811c0, 0x04020003, 0x4a026a03,
11169 0x00000001, 0x59340010, 0x492e6810, 0x80000d40,
11170 0x04020003, 0x492e680f, 0x1c01f000, 0x492c0800,
11171 0x1c01f000, 0x83440c80, 0x00000800, 0x04021009,
11172 0x83440400, 0x0010ac00, 0x50000000, 0x80000540,
11173 0x04000004, 0x40026800, 0x80000580, 0x1c01f000,
11174 0x82000540, 0x00000001, 0x1c01f000, 0x59340203,
11175 0x80000540, 0x0402004b, 0x4d300000, 0x4d2c0000,
11176 0x5934000f, 0x80025d40, 0x04000044, 0x0201f800,
11177 0x0002075a, 0x0400003f, 0x592c0000, 0x4802680f,
11178 0x80000540, 0x04020002, 0x48026810, 0x592c2a04,
11179 0x80081000, 0x480a6c0b, 0x49366009, 0x492e6008,
11180 0x82142d00, 0x000000ff, 0x82140580, 0x00000012,
11181 0x04000035, 0x4a026406, 0x00000003, 0x4a026403,
11182 0x00000040, 0x592c0406, 0x800000c2, 0x800018c4,
11183 0x800c0400, 0x48026206, 0x592c0808, 0x592c1809,
11184 0x592c020a, 0x48066017, 0x480e6018, 0x8c000502,
11185 0x02000000, 0x0010474d, 0x4a026203, 0x00000004,
11186 0x592c0207, 0x80000040, 0x02020000, 0x00104740,
11187 0x82140580, 0x00000018, 0x02020000, 0x00104740,
11188 0x592c180f, 0x59300007, 0x82000540, 0x00000091,
11189 0x480e6011, 0x48026007, 0x42000000, 0x80000004,
11190 0x48026004, 0x59bc00ea, 0x8c000516, 0x040207fe,
11191 0x83300400, 0x20000000, 0x480378e1, 0x5934020b,
11192 0x5934140b, 0x80080480, 0x040017be, 0x0401f003,
11193 0x4a026a03, 0x00000001, 0x5c025800, 0x5c026000,
11194 0x1c01f000, 0x497a5800, 0x49325809, 0x4a026406,
11195 0x00000006, 0x4a026203, 0x00000007, 0x0401f802,
11196 0x0401f7ef, 0x59a80021, 0x800001c0, 0x02020000,
11197 0x0010476f, 0x59a80005, 0x8c000504, 0x02020000,
11198 0x0010476b, 0x59340200, 0x8c000518, 0x02020000,
11199 0x00104767, 0x592c0a0c, 0x48066202, 0x4a025a06,
11200 0x00000000, 0x8c000508, 0x02020000, 0x00104763,
11201 0x4d3c0000, 0x417a7800, 0x0401fbdf, 0x5c027800,
11202 0x1c01f000, 0x592c0404, 0x8c00051e, 0x02020000,
11203 0x00104ce4, 0x59980022, 0x80000540, 0x04000017,
11204 0x592c0a06, 0x592c0409, 0x80040540, 0x04020013,
11205 0x0201f000, 0x00104cfa, 0x592c0404, 0x8c00051e,
11206 0x02020000, 0x00104cf3, 0x59980022, 0x80000540,
11207 0x0400000a, 0x82040580, 0x00000001, 0x04020007,
11208 0x0201f000, 0x00104cfa, 0x592c0404, 0x8c00051e,
11209 0x02020000, 0x00104dca, 0x59980026, 0x497a5800,
11210 0x80000540, 0x02020000, 0x00104e1d, 0x59d80105,
11211 0x82000d00, 0x00018780, 0x02020000, 0x00104edb,
11212 0x80000106, 0x82000500, 0x00000003, 0x0c01f001,
11213 0x000202f0, 0x00104e1d, 0x000202f6, 0x00020341,
11214 0x592c0001, 0x492fb107, 0x80000d40, 0x02020000,
11215 0x00104ddb, 0x1c01f000, 0x592c0001, 0x492fb107,
11216 0x80000d40, 0x02020000, 0x00104de8, 0x59da5908,
11217 0x835c0480, 0x00000020, 0x0400102c, 0x0402b034,
11218 0x492fb007, 0x0400e7fa, 0x59d80105, 0x82000500,
11219 0x00018780, 0x02020000, 0x00104edb, 0x0400601f,
11220 0x59d8010a, 0x59d8090a, 0x80040580, 0x040207fd,
11221 0x800408e0, 0x599c1017, 0x8c081508, 0x04020028,
11222 0x82040d40, 0x00000013, 0x5998002b, 0x4807c011,
11223 0x84000500, 0x4803302b, 0x59e00017, 0x8c000508,
11224 0x04020004, 0x4203e000, 0x30000001, 0x1c01f000,
11225 0x4a03c017, 0x00000003, 0x82040500, 0x000000ff,
11226 0x82000580, 0x0000001d, 0x040207f7, 0x4a03c017,
11227 0x0000000d, 0x0401f7f4, 0x5998082b, 0x84040d40,
11228 0x4807302b, 0x1c01f000, 0x496a5800, 0x412ed000,
11229 0x815eb800, 0x59c80000, 0x82000540, 0x00001200,
11230 0x48039000, 0x0400e7ca, 0x0401f7d0, 0x0402f7f7,
11231 0x492fa807, 0x0400e7c6, 0x0401f7cc, 0x59e0000f,
11232 0x59e0100f, 0x80081580, 0x040207fd, 0x81281580,
11233 0x040007d4, 0x40025000, 0x82040d40, 0x0000001d,
11234 0x0401f7d2, 0x59d80908, 0x45680800, 0x4006d000,
11235 0x815eb800, 0x0400e7fc, 0x59c80000, 0x82000540,
11236 0x00001200, 0x48039000, 0x02006000, 0x00104df8,
11237 0x59d8010a, 0x59d8090a, 0x80040d80, 0x040207fd,
11238 0x900001c0, 0x82000540, 0x00000013, 0x4803c011,
11239 0x5998002b, 0x84000500, 0x4803302b, 0x59e00017,
11240 0x8c000508, 0x04000003, 0x4a03c017, 0x00000003,
11241 0x4203e000, 0x30000001, 0x59d80105, 0x82000500,
11242 0x00018780, 0x02020000, 0x00104edb, 0x0202d000,
11243 0x00104dfd, 0x592c0001, 0x492fb107, 0x80000d40,
11244 0x02020000, 0x00104e10, 0x1c01f000, 0x59980020,
11245 0x0c01f001, 0x00020370, 0x00020371, 0x00104e88,
11246 0x1c01f000, 0x4df00000, 0x4203e000, 0x50000000,
11247 0x0402681e, 0x04006004, 0x599c0017, 0x8c000508,
11248 0x04020865, 0x59980029, 0x80025d40, 0x0400000a,
11249 0x0402d00b, 0x59980026, 0x80000040, 0x48033026,
11250 0x592c0000, 0x492fb107, 0x48033029, 0x04020002,
11251 0x48033028, 0x5c03e000, 0x1c01f000, 0x59d80105,
11252 0x82000500, 0x00018780, 0x02020000, 0x00104edb,
11253 0x42000000, 0x0010b855, 0x0201f800, 0x0010aa47,
11254 0x5c03e000, 0x1c01f000, 0x5998002b, 0x8c000500,
11255 0x0402003b, 0x0400e007, 0x59d80105, 0x82000500,
11256 0x00018780, 0x02020000, 0x00104edb, 0x1c01f000,
11257 0x59da5908, 0x835c0c80, 0x00000020, 0x04001003,
11258 0x0400b029, 0x0400f02b, 0x496a5800, 0x412ed000,
11259 0x815eb800, 0x59c80000, 0x82000540, 0x00001200,
11260 0x48039000, 0x0400e7f3, 0x59d8010a, 0x59d8090a,
11261 0x80040580, 0x040207fd, 0x800408e0, 0x599c1017,
11262 0x8c081508, 0x04020022, 0x82040d40, 0x00000013,
11263 0x4807c011, 0x59e00017, 0x8c000508, 0x0400000a,
11264 0x4a03c017, 0x00000003, 0x82040500, 0x000000ff,
11265 0x82000580, 0x0000001d, 0x04020003, 0x4a03c017,
11266 0x0000000d, 0x4203e000, 0x30000001, 0x59d80105,
11267 0x82000500, 0x00018780, 0x02020000, 0x00104edb,
11268 0x1c01f000, 0x492fb007, 0x0400e7d2, 0x0401f7df,
11269 0x492fa807, 0x0400e7cf, 0x0401f7dc, 0x84000500,
11270 0x4803302b, 0x0400e7cb, 0x0401f7d8, 0x59e0000f,
11271 0x59e0100f, 0x80081580, 0x040207fd, 0x81281580,
11272 0x040007da, 0x40025000, 0x82040d40, 0x0000001d,
11273 0x0401f7d8, 0x59e0000f, 0x59e0100f, 0x80080d80,
11274 0x040207fd, 0x81280580, 0x04020002, 0x1c01f000,
11275 0x400a5000, 0x900811c0, 0x82081540, 0x0000001c,
11276 0x480bc011, 0x59e00017, 0x8c000508, 0x04000003,
11277 0x4a03c017, 0x0000000c, 0x4203e000, 0x30000001,
11278 0x1c01f000, 0x41700000, 0x0c01f001, 0x00105420,
11279 0x000203fc, 0x00105420, 0x00105421, 0x0010541e,
11280 0x0010541e, 0x0010541e, 0x0010541e, 0x001058b0,
11281 0x04010037, 0x59980006, 0x80000540, 0x0402003c,
11282 0x0402c01c, 0x4202f800, 0x00000010, 0x4df00000,
11283 0x4203e000, 0x50000000, 0x49db3005, 0x59da5808,
11284 0x592c0204, 0x497a5800, 0x497a5801, 0x82000500,
11285 0x000000ff, 0x82000c80, 0x00000079, 0x04021036,
11286 0x0c01f839, 0x5c03e000, 0x817ef840, 0x04000009,
11287 0x836c0580, 0x00000003, 0x04020006, 0x83700580,
11288 0x00000001, 0x04020010, 0x0401001b, 0x0400c7e8,
11289 0x0400f94a, 0x0400b134, 0x59d40005, 0x82000500,
11290 0x43018780, 0x02020000, 0x0010583f, 0x59d80005,
11291 0x82000500, 0x43018780, 0x02020000, 0x00105846,
11292 0x1c01f000, 0x83700580, 0x00000003, 0x02000800,
11293 0x00105421, 0x83700580, 0x00000001, 0x040207ed,
11294 0x04010005, 0x0400c7d2, 0x0401f7ea, 0x4202f800,
11295 0x00000010, 0x4df00000, 0x4203e000, 0x50000000,
11296 0x49d73005, 0x59d65808, 0x0401f7ce, 0x4df00000,
11297 0x4203e000, 0x50000000, 0x40025800, 0x592c0204,
11298 0x497b3005, 0x497b3006, 0x4202f800, 0x00000010,
11299 0x0401f7c7, 0x0201f800, 0x00105491, 0x5c03e000,
11300 0x0401f7d4, 0x00105491, 0x00105491, 0x00105491,
11301 0x00105491, 0x00105527, 0x00105491, 0x00105491,
11302 0x00105491, 0x00105491, 0x00105491, 0x001054a1,
11303 0x00105491, 0x00105491, 0x00105491, 0x00105551,
11304 0x00105491, 0x00105491, 0x00105491, 0x000204ef,
11305 0x00105491, 0x001056b4, 0x00105491, 0x00105491,
11306 0x00105491, 0x000204c2, 0x00105491, 0x00105491,
11307 0x00105491, 0x00105491, 0x00105491, 0x00105491,
11308 0x00105491, 0x00105491, 0x00105491, 0x00105491,
11309 0x00105491, 0x00105491, 0x00105491, 0x00105491,
11310 0x00105491, 0x00105491, 0x001054c9, 0x00105491,
11311 0x00105491, 0x00105491, 0x00105491, 0x00105491,
11312 0x00105491, 0x00105491, 0x00105491, 0x00105491,
11313 0x001057d3, 0x00105491, 0x00105491, 0x00105491,
11314 0x00105491, 0x00105491, 0x0010581e, 0x00105491,
11315 0x001054bb, 0x00105491, 0x00105797, 0x00105491,
11316 0x00105491, 0x00105491, 0x00105491, 0x00105491,
11317 0x00105491, 0x00105491, 0x00105765, 0x00105491,
11318 0x00105765, 0x00105872, 0x00105491, 0x00105491,
11319 0x00105491, 0x00105491, 0x00105491, 0x00105491,
11320 0x00105491, 0x00105491, 0x00105491, 0x00105725,
11321 0x00105855, 0x00105491, 0x00105865, 0x00105491,
11322 0x00105491, 0x00105491, 0x00105491, 0x00105491,
11323 0x00105491, 0x00105491, 0x00105491, 0x00105491,
11324 0x00105491, 0x00105491, 0x00105491, 0x00105491,
11325 0x00105491, 0x00105491, 0x00105491, 0x00105491,
11326 0x00105491, 0x00105491, 0x00105491, 0x00105491,
11327 0x00105491, 0x00105491, 0x00105491, 0x00105491,
11328 0x00105491, 0x00105491, 0x00105491, 0x00105491,
11329 0x00105491, 0x00105491, 0x00105491, 0x00105491,
11330 0x00105491, 0x00105491, 0x592c0204, 0x80000110,
11331 0x02000000, 0x00105499, 0x80000040, 0x04000009,
11332 0x48033002, 0x492f3003, 0x492f3004, 0x4a033008,
11333 0x000204d0, 0x4202e000, 0x00000003, 0x1c01f000,
11334 0x592c0406, 0x82000c80, 0x0000199a, 0x02021000,
11335 0x001054a9, 0x59a80021, 0x80000540, 0x02020000,
11336 0x001054d7, 0x592e8a06, 0x83440c80, 0x000007f0,
11337 0x02021000, 0x001054a9, 0x83440400, 0x0010ac00,
11338 0x50000000, 0x80026d40, 0x02000000, 0x001054db,
11339 0x59340002, 0x592c0810, 0x80040580, 0x82000500,
11340 0x00ffffff, 0x02020000, 0x001054a9, 0x0401fccf,
11341 0x02020000, 0x001054de, 0x1c01f000, 0x592c0204,
11342 0x80000110, 0x02000000, 0x00105499, 0x80000040,
11343 0x0402000b, 0x592c040a, 0x8c000504, 0x04000010,
11344 0x592c0207, 0x82000c80, 0x00001001, 0x02021000,
11345 0x001054a9, 0x0201f000, 0x0010588a, 0x48033002,
11346 0x492f3003, 0x492f3004, 0x4a033008, 0x00020507,
11347 0x4202e000, 0x00000003, 0x1c01f000, 0x592c0406,
11348 0x82000c80, 0x0000199a, 0x02021000, 0x001054a9,
11349 0x592e8a06, 0x417a7800, 0x0401fd37, 0x02020000,
11350 0x00105658, 0x59340002, 0x592c0808, 0x80040580,
11351 0x82000500, 0x00ffffff, 0x02020000, 0x001054a9,
11352 0x497a5808, 0x592e6009, 0x83300580, 0xffffffff,
11353 0x02000000, 0x00105618, 0x83300480, 0x0010d1c0,
11354 0x02001000, 0x00105675, 0x59a8000b, 0x81300480,
11355 0x02021000, 0x00105675, 0x592c240a, 0x49366009,
11356 0x8c10251c, 0x02020000, 0x00105606, 0x59a80068,
11357 0x8c000510, 0x02020000, 0x0010568e, 0x59a80821,
11358 0x800409c0, 0x02020000, 0x001055ec, 0x59a80805,
11359 0x8c040d04, 0x02020000, 0x0010567f, 0x59340200,
11360 0x8c000518, 0x02020000, 0x00105670, 0x59300c06,
11361 0x82040580, 0x00000006, 0x02020000, 0x00105610,
11362 0x59300414, 0x8c000516, 0x02020000, 0x0010567a,
11363 0x8c102508, 0x02020000, 0x0010a5b8, 0x59300808,
11364 0x4a025a06, 0x00000000, 0x800409c0, 0x02020000,
11365 0x001055e7, 0x592c0a0c, 0x48066202, 0x492e6008,
11366 0x0401f14d, 0x4df00000, 0x4203e000, 0x50000000,
11367 0x0402b00b, 0x835c0480, 0x00000020, 0x0400100d,
11368 0x815eb840, 0x416a5800, 0x592ed000, 0x492fb007,
11369 0x497a5800, 0x497a5801, 0x0400b7f7, 0x59d80005,
11370 0x82000500, 0x43018780, 0x02020000, 0x00105846,
11371 0x5c03e000, 0x1c01f000, 0x4df00000, 0x4203e000,
11372 0x50000000, 0x0402f00b, 0x835c0480, 0x00000020,
11373 0x0400100d, 0x815eb840, 0x416a5800, 0x592ed000,
11374 0x492fa807, 0x497a5800, 0x497a5801, 0x0400f7f7,
11375 0x59d40005, 0x82000500, 0x43018780, 0x02020000,
11376 0x0010583f, 0x5c03e000, 0x1c01f000, 0x4df00000,
11377 0x4203e000, 0x50000000, 0x59940024, 0x80000540,
11378 0x04000112, 0x4c000000, 0x42000000, 0x00001000,
11379 0x50000000, 0x82000480, 0x24320001, 0x04020015,
11380 0x42000800, 0x00000064, 0x80040840, 0x04000007,
11381 0x4a030000, 0x00000001, 0x40000000, 0x59800000,
11382 0x8c000500, 0x040007f9, 0x04000008, 0x42000800,
11383 0x00007a01, 0x50040000, 0x8c000510, 0x04000003,
11384 0x84000510, 0x44000800, 0x4a030000, 0x00000000,
11385 0x59e00002, 0x8c00051e, 0x0402001b, 0x42000000,
11386 0x00001000, 0x50000000, 0x82000480, 0x24320002,
11387 0x04020015, 0x42000800, 0x00000064, 0x80040840,
11388 0x04000007, 0x4a030000, 0x00000001, 0x40000000,
11389 0x59800000, 0x8c000500, 0x040007f9, 0x04000008,
11390 0x42000800, 0x00007a17, 0x50040000, 0x8c00050e,
11391 0x04020003, 0x8400054e, 0x44000800, 0x4a030000,
11392 0x00000000, 0x5c000000, 0x5994781a, 0x48032825,
11393 0x803c0480, 0x04001004, 0x04000003, 0x4803281a,
11394 0x0401f022, 0x41787800, 0x803c7800, 0x82000400,
11395 0x000003e8, 0x040027fd, 0x4803281a, 0x59a80024,
11396 0x803c1400, 0x480b5024, 0x803c0040, 0x04000002,
11397 0x483fc857, 0x59e40852, 0x59a80025, 0x80040580,
11398 0x04000004, 0x480bc857, 0x59e40052, 0x48035025,
11399 0x59940026, 0x803c0400, 0x48032826, 0x0201f800,
11400 0x00106021, 0x59940000, 0x82000580, 0x00000000,
11401 0x04020006, 0x59940026, 0x48032827, 0x497b2826,
11402 0x4a032800, 0x00000001, 0x4c0c0000, 0x59940007,
11403 0x80000d40, 0x0400001d, 0x59941006, 0x59940025,
11404 0x80081c80, 0x04001004, 0x04000003, 0x480f2806,
11405 0x0401f016, 0x80040840, 0x48072807, 0x82040580,
11406 0x000003e8, 0x04020007, 0x4c040000, 0x4c0c0000,
11407 0x59940008, 0x0801f800, 0x5c001800, 0x5c000800,
11408 0x800409c0, 0x04020004, 0x59940008, 0x0801f800,
11409 0x0401f006, 0x400c0000, 0x820c1c00, 0x0000000a,
11410 0x040027ed, 0x480f2806, 0x5c001800, 0x4d180000,
11411 0x59c40008, 0x8c000534, 0x04020025, 0x417a3000,
11412 0x83947c00, 0x00000009, 0x583c0001, 0x80000d40,
11413 0x04020008, 0x823c7c00, 0x00000003, 0x811a3000,
11414 0x83180580, 0x00000005, 0x040207f8, 0x0401f018,
11415 0x583c1000, 0x59940025, 0x80080480, 0x04001005,
11416 0x04000004, 0x48007800, 0x80000040, 0x04021010,
11417 0x80040840, 0x48047801, 0x04000008, 0x82000400,
11418 0x0000000a, 0x48007800, 0x040027fa, 0x82040500,
11419 0x0000007f, 0x0401f7e8, 0x583c0002, 0x4c3c0000,
11420 0x0801f800, 0x5c007800, 0x0401f7e3, 0x5c023000,
11421 0x59940019, 0x80001540, 0x04000008, 0x04002007,
11422 0x59940025, 0x80080480, 0x497b2819, 0x04001003,
11423 0x04000002, 0x48032819, 0x59940004, 0x80000d40,
11424 0x0400002a, 0x4c040000, 0x5994001c, 0x80000d40,
11425 0x04000013, 0x5994101b, 0x59940025, 0x80080480,
11426 0x04001005, 0x04000004, 0x4803281b, 0x80000040,
11427 0x0402100b, 0x80040840, 0x4807281c, 0x04020004,
11428 0x5994001d, 0x0801f800, 0x0401f005, 0x82000400,
11429 0x0000000a, 0x4803281b, 0x040027f7, 0x5c000800,
11430 0x59941003, 0x59940025, 0x80080480, 0x04001005,
11431 0x04000004, 0x48032803, 0x80000040, 0x0402100b,
11432 0x80040840, 0x48072804, 0x04020004, 0x59940005,
11433 0x0801f800, 0x0401f005, 0x82000400, 0x0000000a,
11434 0x48032803, 0x040027f7, 0x5994001f, 0x80000d40,
11435 0x04000013, 0x5994101e, 0x59940025, 0x80080480,
11436 0x04001005, 0x04000004, 0x4803281e, 0x80000040,
11437 0x0402100b, 0x80040840, 0x4807281f, 0x04020004,
11438 0x59940020, 0x0801f800, 0x0401f005, 0x82000400,
11439 0x00000001, 0x4803281e, 0x040027f7, 0x59940022,
11440 0x80000d40, 0x04000013, 0x59941021, 0x59940025,
11441 0x80080480, 0x04001005, 0x04000004, 0x48032821,
11442 0x80000040, 0x0402100b, 0x80040840, 0x48072822,
11443 0x04020004, 0x59940023, 0x0801f800, 0x0401f005,
11444 0x82000400, 0x0000000a, 0x48032821, 0x040027f7,
11445 0x59940824, 0x59940025, 0x80040480, 0x02001800,
11446 0x001005d8, 0x48032824, 0x59940000, 0x0c01f001,
11447 0x00105fb5, 0x00105fb7, 0x00105fdd, 0x59940024,
11448 0x80000000, 0x48032824, 0x4203e000, 0x70000000,
11449 0x1c01f000, 0x592c0406, 0x800000c2, 0x800008c4,
11450 0x80040c00, 0x592c040a, 0x48066206, 0x82000d00,
11451 0x00000003, 0x02000000, 0x0010615e, 0x8c000500,
11452 0x04020029, 0x8c00051e, 0x02000000, 0x00106139,
11453 0x82000d00, 0x000000c0, 0x02020000, 0x0010612f,
11454 0x82000d00, 0x00002020, 0x02020000, 0x0010612c,
11455 0x813e79c0, 0x02020000, 0x0010612c, 0x592c0c0c,
11456 0x800409c0, 0x02020000, 0x0010612c, 0x59300a03,
11457 0x82040d80, 0x00000007, 0x02020000, 0x0010612c,
11458 0x4a026203, 0x00000003, 0x4a026403, 0x00000043,
11459 0x0201f800, 0x000200c9, 0x82080d40, 0x80003465,
11460 0x48066004, 0x497a6000, 0x59bc00ea, 0x8c000516,
11461 0x040207fe, 0x83300400, 0xa0000000, 0x480378e1,
11462 0x1c01f000, 0x8c000502, 0x02020000, 0x00106181,
11463 0x8c00051e, 0x0400000e, 0x82000d00, 0x000000c0,
11464 0x04000005, 0x82040d80, 0x000000c0, 0x02020000,
11465 0x00106186, 0x82000d00, 0x00002020, 0x82040d80,
11466 0x00002020, 0x02000000, 0x0010614d, 0x592c0207,
11467 0x80000040, 0x02020000, 0x00106157, 0x592c180d,
11468 0x800c19c0, 0x02020000, 0x00106157, 0x592c180f,
11469 0x59300007, 0x82000540, 0x00000011, 0x480e6011,
11470 0x48026007, 0x4a026203, 0x00000004, 0x4a026403,
11471 0x00000042, 0x42000800, 0x80002001, 0x0401f02a,
11472 0x5c000000, 0x4c000000, 0x4803c857, 0x4807c857,
11473 0x0401f003, 0x42000800, 0x00000001, 0x59325808,
11474 0x832c0500, 0x00ff0000, 0x0400000d, 0x592c0000,
11475 0x48065a06, 0x48026008, 0x592c040a, 0x8c000510,
11476 0x04020008, 0x0201f800, 0x000202ce, 0x417a7800,
11477 0x59300008, 0x80025d40, 0x0402078f, 0x1c01f000,
11478 0x456a5800, 0x412ed000, 0x815eb800, 0x59c80000,
11479 0x82000540, 0x00001200, 0x48039000, 0x0401f7f4,
11480 0x59840000, 0x80000540, 0x04020002, 0x1c01f000,
11481 0x59840003, 0x80000540, 0x02020000, 0x001061fe,
11482 0x1c01f000, 0x48066004, 0x59bc00ea, 0x8c000516,
11483 0x040207fe, 0x83300400, 0x40000000, 0x480378e1,
11484 0x1c01f000, 0x59bc00ea, 0x82001500, 0xb0000018,
11485 0x02020000, 0x00106c81, 0x8c000510, 0x0400002a,
11486 0x59bc10e0, 0x82080500, 0xfffff000, 0x0402000a,
11487 0x80080108, 0x820a3500, 0x0000000f, 0x4803c857,
11488 0x1201f000, 0x00106c87, 0x84000510, 0x48026004,
11489 0x0401f016, 0x840a653e, 0x59300004, 0x8c000520,
11490 0x040007fa, 0x82000500, 0xfffefeff, 0x48026004,
11491 0x8c08153e, 0x04020005, 0x42027000, 0x00000013,
11492 0x0401f859, 0x0401f009, 0x59300004, 0x8c000514,
11493 0x04000003, 0x0401ffb0, 0x0401f02f, 0x42027000,
11494 0x00000049, 0x0401f850, 0x59bc00ea, 0x82001500,
11495 0xb0000018, 0x02020000, 0x00106c81, 0x8c000510,
11496 0x040207d8, 0x1c01f000, 0x83640480, 0x00000010,
11497 0x0400101a, 0x41626000, 0x41580000, 0x59300a03,
11498 0x82040d80, 0x00000000, 0x04000008, 0x83326400,
11499 0x00000024, 0x81300c80, 0x040017f9, 0x42026000,
11500 0x0010d1c0, 0x0401f7f6, 0x8166c840, 0x83300c00,
11501 0x00000024, 0x80040480, 0x04021005, 0x4006c000,
11502 0x4a026203, 0x00000008, 0x1c01f000, 0x837ac540,
11503 0x0010d1c0, 0x0401f7fb, 0x42000000, 0x0010b854,
11504 0x0201f800, 0x0010aa47, 0x4967c857, 0x80026580,
11505 0x1c01f000, 0x83300480, 0x0010d1c0, 0x02001800,
11506 0x001005d8, 0x41580000, 0x81300480, 0x0402100c,
11507 0x04011000, 0x457a6000, 0x4a026202, 0x0000ffff,
11508 0x83300400, 0x00000003, 0x4803c840, 0x4a03c842,
11509 0x00000021, 0x8166c800, 0x1c01f000, 0x41540000,
11510 0x81300480, 0x02021800, 0x001005d8, 0x04011000,
11511 0x457a6000, 0x4a026202, 0x0000ffff, 0x83300400,
11512 0x00000003, 0x4803c840, 0x4a03c842, 0x00000021,
11513 0x59a80066, 0x49335065, 0x80000000, 0x48035066,
11514 0x1c01f000, 0x4d340000, 0x59326809, 0x59300406,
11515 0x82000500, 0x0000001f, 0x0c01f803, 0x5c026800,
11516 0x1c01f000, 0x00107966, 0x00107979, 0x00107993,
11517 0x000207c9, 0x001098f1, 0x0010990c, 0x0002083e,
11518 0x00107966, 0x00107979, 0x001064ee, 0x001079ac,
11519 0x00107966, 0x00107966, 0x00107966, 0x00107966,
11520 0x00107966, 0x001095a1, 0x0010a6c2, 0x00107966,
11521 0x00107966, 0x00107966, 0x00107966, 0x00107966,
11522 0x00107966, 0x00107966, 0x00107966, 0x00107966,
11523 0x00107966, 0x00107966, 0x00107966, 0x00107966,
11524 0x00107966, 0x59300203, 0x82000c80, 0x0000000e,
11525 0x02021800, 0x001005d8, 0x0c01f001, 0x001079aa,
11526 0x00108592, 0x000207dd, 0x00108720, 0x001087b9,
11527 0x001079aa, 0x001079aa, 0x001079aa, 0x00108577,
11528 0x001079aa, 0x001079aa, 0x001079aa, 0x001079aa,
11529 0x00108985, 0x83380480, 0x00000058, 0x04021007,
11530 0x83380480, 0x00000040, 0x04001004, 0x4d2c0000,
11531 0x0c01f803, 0x5c025800, 0x1c01f000, 0x0010861b,
11532 0x0010861b, 0x0010861b, 0x0010861b, 0x0010861b,
11533 0x0010861d, 0x001086bd, 0x0010861b, 0x0010861b,
11534 0x0010861b, 0x0010861b, 0x0010861b, 0x0010861b,
11535 0x0010861b, 0x0010861b, 0x0010861b, 0x0010861b,
11536 0x0010861b, 0x0010861b, 0x001086c1, 0x000207ff,
11537 0x0010861b, 0x001086c0, 0x001086c2, 0x59325808,
11538 0x59300811, 0x59301402, 0x59340200, 0x8c00050e,
11539 0x0402001c, 0x0401f826, 0x04000005, 0x4a025a04,
11540 0x00000103, 0x497a5c09, 0x0401f009, 0x4a025a04,
11541 0x00000103, 0x4a025a06, 0x00000000, 0x497a5c09,
11542 0x800409c0, 0x02020800, 0x00108785, 0x48065807,
11543 0x480a5c06, 0x0201f800, 0x000202c1, 0x5934000f,
11544 0x5934140b, 0x80081040, 0x04001002, 0x480a6c0b,
11545 0x80000540, 0x02020800, 0x00020253, 0x0401f75e,
11546 0x592c020a, 0x8c000502, 0x040007e9, 0x800409c0,
11547 0x040007e7, 0x592c0208, 0x8c00050e, 0x040207e4,
11548 0x4933c857, 0x0201f000, 0x0010920f, 0x592c020a,
11549 0x8c000500, 0x04000010, 0x59300015, 0x592c380f,
11550 0x801c3c80, 0x0400000c, 0x4a025a06, 0x00000015,
11551 0x8c1c3d3e, 0x04000005, 0x4a025a06, 0x00000007,
11552 0x801c3880, 0x801c3800, 0x481fc857, 0x821c0d40,
11553 0x00000000, 0x1c01f000, 0x59300203, 0x82003480,
11554 0x0000000e, 0x02021800, 0x001005d8, 0x0c01f001,
11555 0x0010992b, 0x00020852, 0x00109fba, 0x00109fc8,
11556 0x0002086e, 0x0010992b, 0x0010a0a8, 0x0002088d,
11557 0x0010992b, 0x0010992b, 0x0010992b, 0x0010992b,
11558 0x0010992b, 0x0010992b, 0x83380580, 0x00000013,
11559 0x02020000, 0x00109f42, 0x59300403, 0x82027480,
11560 0x00000044, 0x02021800, 0x001005d8, 0x82000480,
11561 0x00000040, 0x02001800, 0x001005d8, 0x0c01f001,
11562 0x00109f9e, 0x00020864, 0x00109fa0, 0x00109fb2,
11563 0x59325808, 0x832c0500, 0x00ff0000, 0x04000005,
11564 0x592c0c0a, 0x8c040d1a, 0x02020000, 0x00109fad,
11565 0x0401fe91, 0x0401f710, 0x83380580, 0x00000048,
11566 0x04000007, 0x83380580, 0x00000053, 0x02000000,
11567 0x0010a04a, 0x0201f800, 0x001005d8, 0x5930001f,
11568 0x59301011, 0x59300809, 0x58040a00, 0x8c040d0e,
11569 0x02020000, 0x0010a026, 0x800811c0, 0x02020000,
11570 0x0010a033, 0x5930001f, 0x80000540, 0x02020000,
11571 0x0010a041, 0x59325808, 0x592c040a, 0x8c00051e,
11572 0x02000000, 0x0010a01c, 0x42027000, 0x00000041,
11573 0x0401f001, 0x83380480, 0x00000054, 0x02021800,
11574 0x001005d8, 0x83380480, 0x00000040, 0x02001000,
11575 0x0010a067, 0x0c01f001, 0x0010a073, 0x000208aa,
11576 0x0010a07f, 0x0010a086, 0x0010a073, 0x0010a073,
11577 0x0010a073, 0x0010a073, 0x0010a075, 0x0010a07a,
11578 0x0010a07a, 0x0010a073, 0x0010a073, 0x0010a073,
11579 0x0010a073, 0x0010a07a, 0x0010a073, 0x0010a07a,
11580 0x0010a073, 0x0010a075, 0x4a026203, 0x00000001,
11581 0x493a6403, 0x42000800, 0x80002042, 0x0401f672,
11582 0x00000000, 0x00000000, 0x00000000, 0x00000000,
11583 0x00000000, 0x00000000, 0x00000000, 0x00000000,
11584 0x00000000, 0x00000000, 0x00000000, 0x00000000,
11585 0x00000000, 0x00000000, 0x00000000, 0x14aa62b1,
11586 0x00000000, 0x00000000, 0x00000000, 0x00000005,
11587 0xfffffffb, 0x02800004, 0x00000000, 0x0000c000,
11588 0x0000071d, 0x073fca5a, 0x0705a5a5, 0x01928009,
11589 0x070ff0e1, 0x03800006, 0x04958010, 0x05308000,
11590 0x05008000, 0x0600902f, 0x04a004dc, 0x0202f051,
11591 0x042e4020, 0x018f021b, 0x033e5000, 0x03020000,
11592 0x078d0018, 0x0493041a, 0x0092041c, 0x038a0305,
11593 0x078b0303, 0x048e8010, 0x0678aae5, 0x06000001,
11594 0x07818174, 0x040010e6, 0x0448e0e6, 0x04818010,
11595 0x002fb008, 0x0448e0e6, 0x04818010, 0x060ff0e6,
11596 0x00580401, 0x054880ff, 0x04818010, 0x022a5001,
11597 0x030430d4, 0x06780043, 0x030e0000, 0x030450ff,
11598 0x06780043, 0x03019000, 0x058185c6, 0x027c0045,
11599 0x03020000, 0x06810037, 0x027c0045, 0x03040000,
11600 0x068100c7, 0x027c0045, 0x03080000, 0x0781061e,
11601 0x04908037, 0x029105c4, 0x010410a6, 0x0379ff41,
11602 0x037fffff, 0x072d6000, 0x07601241, 0x050f80ff,
11603 0x032fa009, 0x05600400, 0x050f80ff, 0x056c04ff,
11604 0x068105dc, 0x073fa009, 0x06000001, 0x0279ff02,
11605 0x0700ffff, 0x070ff0d1, 0x0179feff, 0x0700ffff,
11606 0x045c0402, 0x048185dc, 0x060ff0d0, 0x0179feff,
11607 0x0700ffff, 0x057dfeff, 0x0700ffff, 0x078105be,
11608 0x05600e41, 0x050f80ff, 0x032fa069, 0x07480000,
11609 0x068105d0, 0x06780043, 0x070000f0, 0x0781005f,
11610 0x037c00ff, 0x06000010, 0x0781005f, 0x038005cc,
11611 0x0379ff00, 0x070fffff, 0x06780043, 0x07f00000,
11612 0x075a0000, 0x020ef001, 0x028605ce, 0x05484000,
11613 0x02a1819e, 0x062d6001, 0x002fb001, 0x070ff069,
11614 0x01868072, 0x060ff079, 0x055c0441, 0x06810010,
11615 0x012fb000, 0x060560fb, 0x03800078, 0x060ff079,
11616 0x02868198, 0x070ff069, 0x055c0441, 0x06810010,
11617 0x060560fb, 0x0400d0d0, 0x062d6002, 0x0648300d,
11618 0x06810086, 0x070ff0d1, 0x062d6001, 0x045c040b,
11619 0x06810089, 0x05488000, 0x04818086, 0x072e500c,
11620 0x00208001, 0x05a004e1, 0x02800010, 0x062d6001,
11621 0x07f00000, 0x07f00000, 0x070ff0d1, 0x0179feff,
11622 0x070000ff, 0x055c040c, 0x058180bb, 0x0007b001,
11623 0x03079041, 0x0307a000, 0x06600a79, 0x050f80ff,
11624 0x053fa80a, 0x06000010, 0x072d5003, 0x078d0096,
11625 0x0307c003, 0x0007d004, 0x0107e005, 0x0307f006,
11626 0x02080007, 0x00081008, 0x01082009, 0x0308300a,
11627 0x0008400b, 0x0308500c, 0x068d00a1, 0x0678007a,
11628 0x07f00000, 0x010880ff, 0x03386000, 0x03010000,
11629 0x072e6300, 0x020ef07f, 0x02860010, 0x070ff07d,
11630 0x0450047c, 0x050f80ff, 0x002fa819, 0x068d00ae,
11631 0x02080001, 0x00081002, 0x0448807a, 0x068100b5,
11632 0x0379ff03, 0x070000ff, 0x01082003, 0x068d00b6,
11633 0x02386004, 0x03010000, 0x072e6c00, 0x02800010,
11634 0x06780043, 0x070000f0, 0x078105d7, 0x050020ff,
11635 0x027c0002, 0x06000010, 0x078100c3, 0x038005d7,
11636 0x0700c0d1, 0x0379ff0c, 0x070000ff, 0x0380008e,
11637 0x0204a051, 0x06780043, 0x070000f0, 0x037c00ff,
11638 0x06000010, 0x0781816a, 0x072d6000, 0x019485c0,
11639 0x050fb056, 0x044880e6, 0x04818010, 0x060ff0d0,
11640 0x0179feff, 0x0700ffff, 0x057dfeff, 0x0700ffff,
11641 0x078105be, 0x05a00212, 0x0349c0e4, 0x0781811d,
11642 0x070ff093, 0x050010ff, 0x070ff093, 0x045c0401,
11643 0x058180db, 0x02046092, 0x04002046, 0x04600202,
11644 0x00540401, 0x048280e6, 0x04500425, 0x070060ff,
11645 0x0730ffff, 0x0700000f, 0x0742000f, 0x05810190,
11646 0x07a005a6, 0x0648a002, 0x048180e9, 0x00047089,
11647 0x070ff047, 0x045c0443, 0x077800ff, 0x07f00000,
11648 0x0781818e, 0x07780047, 0x0500e000, 0x048185ad,
11649 0x070ff006, 0x01860117, 0x0179fe47, 0x0700000f,
11650 0x010480ff, 0x056c7048, 0x06818102, 0x007a0d4a,
11651 0x04003801, 0x0220f001, 0x0180010f, 0x07608e48,
11652 0x034a60ff, 0x0700f0ff, 0x074b88ff, 0x037000ff,
11653 0x07000600, 0x05500448, 0x074d00ff, 0x045a044a,
11654 0x0304a0ff, 0x070ff00f, 0x01540406, 0x05820117,
11655 0x04950120, 0x05a001bd, 0x02868123, 0x0134bfff,
11656 0x070fffff, 0x0104102e, 0x050fd041, 0x00800126,
11657 0x0595011d, 0x05a001bd, 0x0186011d, 0x0202f00e,
11658 0x052e4030, 0x040fd02f, 0x070fc0ff, 0x05a00218,
11659 0x02800010, 0x0400e02f, 0x042e4020, 0x0202f051,
11660 0x0004100e, 0x0004b00e, 0x050fd041, 0x024a6c46,
11661 0x04500423, 0x050070ff, 0x03620024, 0x050080ff,
11662 0x04004046, 0x0700500f, 0x03206000, 0x05601048,
11663 0x0700a0ff, 0x0700900a, 0x070ff005, 0x04500446,
11664 0x00540425, 0x04820157, 0x05601622, 0x050f80ff,
11665 0x063fa032, 0x06000002, 0x03203000, 0x01204000,
11666 0x03205000, 0x0120b000, 0x0320c000, 0x07601441,
11667 0x050f80ff, 0x043fa852, 0x06000001, 0x070ff056,
11668 0x056c02ff, 0x050fb0ff, 0x070560ff, 0x03079041,
11669 0x05600e41, 0x050f80ff, 0x073fa011, 0x0600003d,
11670 0x06780043, 0x07f00000, 0x065a007a, 0x010880ff,
11671 0x04a001b6, 0x058d0150, 0x0208a04a, 0x0108b04b,
11672 0x02386001, 0x03010000, 0x072e6300, 0x028000a8,
11673 0x0500d00a, 0x05500405, 0x014a68ff, 0x070090ff,
11674 0x0154040a, 0x0700c0ff, 0x0600a023, 0x0500b024,
11675 0x02206001, 0x05601622, 0x050f80ff, 0x063fa04a,
11676 0x06000002, 0x05601022, 0x050f80ff, 0x043fa819,
11677 0x06000001, 0x0600a00d, 0x0180013c, 0x06780043,
11678 0x070000f0, 0x050010ff, 0x027c0001, 0x07000030,
11679 0x078105b4, 0x027c0001, 0x06000020, 0x078105b4,
11680 0x038005cc, 0x054880ff, 0x06810010, 0x070ff056,
11681 0x050fb0ff, 0x044880e5, 0x0581017d, 0x044880e6,
11682 0x04818010, 0x00800183, 0x056c02ff, 0x050fb0ff,
11683 0x070560ff, 0x072e5300, 0x044880e6, 0x04818010,
11684 0x072d5003, 0x06780043, 0x07f00000, 0x010880ff,
11685 0x058d0187, 0x03386005, 0x03010000, 0x033e6000,
11686 0x0700000c, 0x052e5200, 0x02800010, 0x0120918e,
11687 0x018004e4, 0x01209190, 0x018004e4, 0x00209192,
11688 0x018004e4, 0x03209000, 0x018004e4, 0x01209196,
11689 0x018004e4, 0x00209198, 0x018004e4, 0x02493075,
11690 0x06810510, 0x0120919a, 0x018004e4, 0x06601e01,
11691 0x050f80ff, 0x063fa029, 0x06000008, 0x02015010,
11692 0x02016051, 0x00017051, 0x00011051, 0x05601a41,
11693 0x050f80ff, 0x053fa83a, 0x06000008, 0x05600e41,
11694 0x050f80ff, 0x01464000, 0x032fa00a, 0x07006011,
11695 0x05007012, 0x04008013, 0x07009014, 0x0600a015,
11696 0x0400b016, 0x0700c017, 0x07c00000, 0x072d5003,
11697 0x06601479, 0x050f80ff, 0x048d01b9, 0x063fa051,
11698 0x0600003e, 0x07c00000, 0x06005051, 0x0400e02c,
11699 0x0660060e, 0x050f80ff, 0x032fa009, 0x0379ff00,
11700 0x070000ff, 0x076c0000, 0x058101dd, 0x0660480e,
11701 0x0500e0ff, 0x034000ff, 0x01540427, 0x0582020a,
11702 0x03400005, 0x070ff005, 0x055c0428, 0x0481020e,
11703 0x01680e05, 0x056c0405, 0x068181bf, 0x040f8029,
11704 0x053fa809, 0x07000024, 0x06600649, 0x050f80ff,
11705 0x032fa009, 0x0379ff00, 0x070000ff, 0x076c0000,
11706 0x068181bf, 0x0400e049, 0x0340002d, 0x050f802b,
11707 0x053fa80a, 0x06000016, 0x0660480e, 0x0302c0ff,
11708 0x034000ff, 0x01540427, 0x0582020c, 0x072d6000,
11709 0x0460040e, 0x050f80ff, 0x0104e0d1, 0x0379ff4e,
11710 0x0700ffff, 0x062d6002, 0x032fa009, 0x0004d0d0,
11711 0x074b004d, 0x07780000, 0x07ffff00, 0x055a044d,
11712 0x070000ff, 0x00201008, 0x04002051, 0x06003051,
11713 0x05304000, 0x07000060, 0x03205009, 0x07006022,
11714 0x0460040e, 0x050f80ff, 0x032fa03a, 0x06603c0e,
11715 0x050f80ff, 0x073fa00a, 0x07000027, 0x050010d1,
11716 0x0460320e, 0x050f80ff, 0x012fa80a, 0x060ff00e,
11717 0x055c042e, 0x04810210, 0x07c00000, 0x0400e026,
11718 0x008001cb, 0x0202c026, 0x008001e6, 0x0500e02e,
11719 0x008001e6, 0x0400e051, 0x01800209, 0x0349c0e4,
11720 0x04810215, 0x07c00000, 0x013e4000, 0x070c0000,
11721 0x07c00000, 0x013e4000, 0x03080000, 0x07c00000,
11722 0x009702f4, 0x022a5002, 0x0790821d, 0x00910291,
11723 0x030400a6, 0x0678aae5, 0x06000001, 0x00a1860e,
11724 0x06600c40, 0x050f80ff, 0x032fa021, 0x074b0000,
11725 0x076c0600, 0x07818293, 0x05600403, 0x050f80ff,
11726 0x073fa009, 0x06000002, 0x0279ff04, 0x0700ffff,
11727 0x010440d7, 0x0179fe44, 0x0700ffff, 0x045c0404,
11728 0x07818295, 0x0349f044, 0x0681829e, 0x02495001,
11729 0x06818297, 0x060ff079, 0x045c0440, 0x0781823c,
11730 0x0644f07a, 0x002fb008, 0x060ff079, 0x045c0440,
11731 0x07818241, 0x0644f07a, 0x002fb008, 0x0648f001,
11732 0x07818288, 0x04600e40, 0x050f80ff, 0x06480001,
11733 0x04810257, 0x0448e001, 0x04810273, 0x02460001,
11734 0x0644f001, 0x012fa80a, 0x04008040, 0x05a004ee,
11735 0x0286828c, 0x05a004d8, 0x062da001, 0x013e4000,
11736 0x06000080, 0x06930013, 0x02920013, 0x02800010,
11737 0x0644f001, 0x012fa80a, 0x020ef002, 0x00860275,
11738 0x04600840, 0x050f80ff, 0x053fa809, 0x06000002,
11739 0x05780105, 0x00800440, 0x017c0105, 0x05000400,
11740 0x06818275, 0x06601e02, 0x050f80ff, 0x053fa809,
11741 0x06000002, 0x04602a40, 0x050f80ff, 0x070ff005,
11742 0x053fa809, 0x06000002, 0x055c0405, 0x06818275,
11743 0x04008040, 0x0045e008, 0x05a004d8, 0x00800251,
11744 0x0644f001, 0x012fa80a, 0x050020d8, 0x04600440,
11745 0x050f80ff, 0x073fa00a, 0x06000001, 0x06480001,
11746 0x07818281, 0x05308000, 0x03040000, 0x06009040,
11747 0x04a004dc, 0x00800251, 0x06a0060e, 0x054b0800,
11748 0x056a0700, 0x06600c40, 0x050f80ff, 0x032fa00a,
11749 0x00800251, 0x013e4000, 0x06000080, 0x01209288,
11750 0x018004e4, 0x06009008, 0x05308000, 0x05004000,
11751 0x04a004dc, 0x00800251, 0x02209002, 0x008002e5,
11752 0x03209000, 0x008002e5, 0x02209004, 0x008002e5,
11753 0x04a002fd, 0x062da001, 0x05308000, 0x05002000,
11754 0x06009040, 0x04a004dc, 0x02800013, 0x013e4000,
11755 0x06000080, 0x02495001, 0x078182db, 0x04600840,
11756 0x050f80ff, 0x053fa809, 0x06000001, 0x0721f000,
11757 0x0349f003, 0x058102aa, 0x0245f01f, 0x06000002,
11758 0x018602db, 0x07601400, 0x050f80ff, 0x012fa809,
11759 0x06480001, 0x058102db, 0x06602440, 0x050f80ff,
11760 0x012fa809, 0x020ef001, 0x038682db, 0x019b02db,
11761 0x050020d8, 0x062da001, 0x06303002, 0x05000430,
11762 0x04600440, 0x050f80ff, 0x073fa012, 0x06000001,
11763 0x028f82bf, 0x050040d8, 0x062da001, 0x07601e00,
11764 0x050f80ff, 0x073fa009, 0x06000001, 0x060ff004,
11765 0x00540402, 0x048202d9, 0x06005051, 0x06006051,
11766 0x06602240, 0x050f80ff, 0x063fa01a, 0x06000002,
11767 0x06600a40, 0x050f80ff, 0x073fa00a, 0x07000003,
11768 0x060ff040, 0x045a041f, 0x010eb0ff, 0x06930013,
11769 0x02920013, 0x02800010, 0x04004002, 0x018002c9,
11770 0x04a002fd, 0x062da001, 0x05308000, 0x07005000,
11771 0x06009040, 0x04a004dc, 0x050080d8, 0x05a004e1,
11772 0x062da001, 0x02800013, 0x050fd009, 0x050fd041,
11773 0x013e4000, 0x06000080, 0x05308000, 0x03013000,
11774 0x04a004dc, 0x010440d7, 0x0349f044, 0x048102f2,
11775 0x062da001, 0x008f02f2, 0x03e00000, 0x062da001,
11776 0x02800013, 0x0249c0e5, 0x06810013, 0x062da001,
11777 0x07f00000, 0x07f00000, 0x033e5000, 0x070c0000,
11778 0x018f02f6, 0x03800011, 0x050020d8, 0x04600440,
11779 0x050f80ff, 0x073fa00a, 0x06000001, 0x07c00000,
11780 0x002fb001, 0x03800306, 0x012fb000, 0x03075087,
11781 0x068d0307, 0x03386000, 0x03020000, 0x04482075,
11782 0x06810352, 0x0648a0e6, 0x07810347, 0x0642007f,
11783 0x06810345, 0x0340007e, 0x060ff038, 0x0154047e,
11784 0x02d00334, 0x0560027d, 0x050f80ff, 0x032fa009,
11785 0x030ef000, 0x02860504, 0x0107d000, 0x05600800,
11786 0x050f80ff, 0x032fa009, 0x03681e00, 0x04500420,
11787 0x050f80ff, 0x073fa009, 0x0700003f, 0x03800311,
11788 0x070ff07d, 0x0450047c, 0x050f80ff, 0x002fa819,
11789 0x078d0327, 0x02080001, 0x00081002, 0x0448807a,
11790 0x0781032e, 0x0379ff03, 0x070000ff, 0x01082003,
11791 0x068d032f, 0x02386004, 0x03010000, 0x072e6c00,
11792 0x02800352, 0x0380033a, 0x0380033c, 0x0280033e,
11793 0x02800340, 0x03800342, 0x03800344, 0x0727c005,
11794 0x02800323, 0x0627c008, 0x02800323, 0x0627c00b,
11795 0x02800323, 0x0627c00e, 0x02800323, 0x0727c011,
11796 0x02800323, 0x03800314, 0x052e6800, 0x02800352,
11797 0x044880e6, 0x07810533, 0x052e6200, 0x070ff088,
11798 0x0179feff, 0x070fffff, 0x04818501, 0x060ff083,
11799 0x0086836d, 0x033e6000, 0x07000003, 0x068d0352,
11800 0x07286000, 0x07f00000, 0x078d0355, 0x038c0306,
11801 0x0648c0e6, 0x05818372, 0x0448e0e6, 0x0781036a,
11802 0x004920e6, 0x07810365, 0x07a0056f, 0x05001088,
11803 0x00700101, 0x03100000, 0x00088001, 0x033e6000,
11804 0x07000088, 0x03800560, 0x02386001, 0x07030000,
11805 0x033e6000, 0x06000008, 0x028003f1, 0x02799075,
11806 0x0500040f, 0x06810010, 0x06601479, 0x050080ff,
11807 0x06309052, 0x0600003e, 0x02800376, 0x06602279,
11808 0x050080ff, 0x05309812, 0x07000041, 0x0648007a,
11809 0x0781037e, 0x04488075, 0x0581837e, 0x040f8008,
11810 0x070fa009, 0x0049107a, 0x01a183f3, 0x00798075,
11811 0x06000507, 0x05818521, 0x0448b075, 0x06810385,
11812 0x02493075, 0x0681050e, 0x0249c0e6, 0x048183e0,
11813 0x0648c0e6, 0x0581839a, 0x068d0389, 0x02386001,
11814 0x07030000, 0x0049107a, 0x07810390, 0x020ef083,
11815 0x0386039a, 0x06483075, 0x068103ef, 0x0678007a,
11816 0x07000035, 0x03a184cf, 0x05308000, 0x07060000,
11817 0x06009079, 0x04a004dc, 0x028003ef, 0x0448807a,
11818 0x0681039e, 0x06483075, 0x058104f9, 0x0448d07a,
11819 0x068103a2, 0x06483075, 0x058104f9, 0x068d03a2,
11820 0x02386001, 0x07030000, 0x0444e07a, 0x0648307a,
11821 0x048183c7, 0x0448707a, 0x068103ea, 0x0648f07a,
11822 0x078103b2, 0x05a004cf, 0x04008079, 0x05a004ee,
11823 0x008683c2, 0x05a004d8, 0x028003ef, 0x0560107b,
11824 0x050f80ff, 0x032fa009, 0x0349c000, 0x058183c0,
11825 0x04600e79, 0x050f80ff, 0x073fa00a, 0x0600003d,
11826 0x06600a79, 0x050f80ff, 0x053fa80a, 0x06000010,
11827 0x028003ef, 0x0046e07a, 0x028003ea, 0x06009008,
11828 0x05308000, 0x05004000, 0x04a004dc, 0x028003ef,
11829 0x0560167b, 0x050f80ff, 0x032fa011, 0x070ff000,
11830 0x04500401, 0x030460ff, 0x060ff025, 0x00540446,
11831 0x078203d1, 0x030460ff, 0x04092046, 0x05a00218,
11832 0x06600679, 0x050f80ff, 0x00201007, 0x012fa80a,
11833 0x0046047a, 0x034630ff, 0x050020ff, 0x06003051,
11834 0x04600e79, 0x050f80ff, 0x073fa012, 0x06000001,
11835 0x028003ef, 0x033e6a00, 0x0202000e, 0x02079051,
11836 0x07000088, 0x078d03e4, 0x0744c000, 0x01088000,
11837 0x03386006, 0x03010000, 0x02800010, 0x05a004cf,
11838 0x05308000, 0x03020000, 0x06009079, 0x04a004dc,
11839 0x033e6a00, 0x0302000a, 0x02079051, 0x02800010,
11840 0x04603e79, 0x050f80ff, 0x032fa009, 0x070ff000,
11841 0x0186040c, 0x057dfeff, 0x07ffffff, 0x0581040c,
11842 0x050f8000, 0x012fa811, 0x0079fe02, 0x070000ff,
11843 0x077d66ff, 0x060000dc, 0x0781840c, 0x060ff001,
11844 0x0286840d, 0x064b0002, 0x06420002, 0x060ff002,
11845 0x05500400, 0x050f80ff, 0x05004084, 0x073fa00a,
11846 0x06000002, 0x07c00000, 0x04600201, 0x050f80ff,
11847 0x073fa009, 0x06000001, 0x0079fe02, 0x070000ff,
11848 0x077d72ff, 0x070000dd, 0x0781840c, 0x064b0002,
11849 0x06420002, 0x06000001, 0x01800406, 0x0605004c,
11850 0x0180041e, 0x0493041a, 0x04a004d5, 0x054bc450,
11851 0x05810421, 0x01d00422, 0x01800421, 0x00800432,
11852 0x00800434, 0x00800432, 0x008004a7, 0x0180043f,
11853 0x00800434, 0x01800471, 0x00800432, 0x00800432,
11854 0x008004ab, 0x00800432, 0x018004af, 0x008004c4,
11855 0x01800488, 0x00800432, 0x00800432, 0x00209432,
11856 0x018004e4, 0x0379ff50, 0x070fffff, 0x060ff079,
11857 0x055c0450, 0x048104a4, 0x002fb008, 0x060ff079,
11858 0x055c0450, 0x058104a3, 0x04a004c7, 0x0180049c,
11859 0x0179fe50, 0x070fffff, 0x070050ff, 0x060ff079,
11860 0x055c0405, 0x04810449, 0x002fb008, 0x060ff079,
11861 0x055c0405, 0x078184a0, 0x070ff087, 0x017980ff,
11862 0x06000507, 0x06818451, 0x02203040, 0x05002087,
11863 0x0049d002, 0x0481046b, 0x04930458, 0x01257000,
11864 0x073c3fff, 0x0700000f, 0x052e4003, 0x072e5030,
11865 0x0304c050, 0x02400057, 0x06740057, 0x06000002,
11866 0x06820016, 0x04002083, 0x07003084, 0x04004085,
11867 0x06602279, 0x050f80ff, 0x063fa01a, 0x06000001,
11868 0x05a004cf, 0x07a00578, 0x033e6a00, 0x0302000a,
11869 0x062e5020, 0x003e4002, 0x07000a00, 0x028003f1,
11870 0x07420003, 0x0781844e, 0x00798002, 0x06000507,
11871 0x06818451, 0x0180045c, 0x05930478, 0x01257000,
11872 0x073c3fff, 0x0700000f, 0x052e4003, 0x072e5030,
11873 0x0304c050, 0x067800e6, 0x07000041, 0x0581047d,
11874 0x07a00581, 0x04818016, 0x002fb008, 0x067800e6,
11875 0x07000041, 0x04810483, 0x07a00581, 0x04818016,
11876 0x062e5020, 0x003e4002, 0x07000a00, 0x03e00000,
11877 0x02800010, 0x0379ff50, 0x070fffff, 0x060ff079,
11878 0x055c0450, 0x0781848e, 0x0245507a, 0x002fb008,
11879 0x060ff079, 0x055c0450, 0x07818493, 0x0245507a,
11880 0x002fb008, 0x05600e50, 0x050f80ff, 0x012fa809,
11881 0x02455001, 0x05600e50, 0x050f80ff, 0x012fa80a,
11882 0x0080049d, 0x002fb008, 0x003e4002, 0x07000a00,
11883 0x02800016, 0x079384a3, 0x062e5020, 0x042e4002,
11884 0x002fb008, 0x013e4000, 0x05000e00, 0x02800016,
11885 0x0179fe50, 0x070fffff, 0x010210ff, 0x02800016,
11886 0x0179fe50, 0x070fffff, 0x050340ff, 0x0080049d,
11887 0x0179fe50, 0x070fffff, 0x0102e0ff, 0x0760282e,
11888 0x050f80ff, 0x05222000, 0x07223000, 0x05224000,
11889 0x07225000, 0x07226000, 0x05227000, 0x05228000,
11890 0x07229000, 0x0722a000, 0x0522b000, 0x063fa051,
11891 0x07000011, 0x0202c026, 0x0522d000, 0x052e400c,
11892 0x02800016, 0x030430d4, 0x062e5008, 0x00800176,
11893 0x05600e50, 0x050f80ff, 0x032fa009, 0x03460000,
11894 0x018004d2, 0x0246007a, 0x0045207a, 0x008004d0,
11895 0x0246007a, 0x0600007a, 0x04600e79, 0x050f80ff,
11896 0x032fa00a, 0x07c00000, 0x029284d5, 0x070500e1,
11897 0x07c00000, 0x0245f008, 0x048404d9, 0x020e0008,
11898 0x07c00000, 0x070ff009, 0x065a0008, 0x058404de,
11899 0x020e0008, 0x07c00000, 0x058404e1, 0x020e0008,
11900 0x07c00000, 0x05308000, 0x0500d000, 0x04a004dc,
11901 0x04a004e9, 0x02800010, 0x052e4300, 0x072e500c,
11902 0x073c3fff, 0x0700000f, 0x07c00000, 0x06602208,
11903 0x050f80ff, 0x032fa011, 0x076a0000, 0x068184f7,
11904 0x066a0001, 0x048104f7, 0x04002051, 0x07c00000,
11905 0x00202001, 0x07c00000, 0x0648307a, 0x00a18608,
11906 0x05a004cc, 0x05308000, 0x05001000, 0x06009079,
11907 0x04a004dc, 0x03800560, 0x0249c0e6, 0x058104f9,
11908 0x0280036d, 0x0648307a, 0x07818196, 0x05a004cf,
11909 0x05308000, 0x03013000, 0x03209006, 0x04a004dc,
11910 0x033e6000, 0x07030000, 0x02800345, 0x02490075,
11911 0x0781051e, 0x04002089, 0x04780102, 0x07f00000,
11912 0x05001088, 0x07a0056f, 0x04740101, 0x03100000,
11913 0x060ff002, 0x045c0401, 0x0481851f, 0x00088001,
11914 0x033e6000, 0x070000c0, 0x0380055c, 0x07f00000,
11915 0x0220951f, 0x018004e4, 0x0648307a, 0x07810527,
11916 0x06780075, 0x06000007, 0x0581852e, 0x06a00608,
11917 0x06486075, 0x06818194, 0x02490075, 0x0781819a,
11918 0x04487075, 0x05818536, 0x0280053d, 0x05308000,
11919 0x03010000, 0x06009079, 0x04a004dc, 0x02800010,
11920 0x0448e0e6, 0x04818352, 0x00800192, 0x05308000,
11921 0x0500e000, 0x06009079, 0x04a004dc, 0x04008089,
11922 0x05a004e1, 0x0380055c, 0x05a004cc, 0x05308000,
11923 0x0700f000, 0x06009079, 0x07000088, 0x06a00545,
11924 0x04a004dc, 0x02800010, 0x03386000, 0x07030000,
11925 0x07f00000, 0x078d0548, 0x033e6a00, 0x0202000e,
11926 0x02079051, 0x0448b075, 0x07810553, 0x02493075,
11927 0x07810553, 0x05301005, 0x03010000, 0x03800555,
11928 0x05301006, 0x03010000, 0x05002087, 0x06485002,
11929 0x05818555, 0x0744c000, 0x01088000, 0x02086001,
11930 0x07c00000, 0x05001088, 0x07a0056f, 0x0644c001,
11931 0x00088001, 0x033e6a00, 0x0202000e, 0x004920e6,
11932 0x05818565, 0x02079051, 0x078d0565, 0x060ff089,
11933 0x034990ff, 0x0781056c, 0x03386005, 0x03010000,
11934 0x02800010, 0x03386006, 0x03010000, 0x02800010,
11935 0x078d056f, 0x03386000, 0x07030000, 0x07f00000,
11936 0x068d0573, 0x070ff087, 0x074850ff, 0x05818574,
11937 0x07c00000, 0x078d0578, 0x02386001, 0x07030000,
11938 0x07f00000, 0x068d057c, 0x070ff087, 0x074850ff,
11939 0x0581857d, 0x07c00000, 0x05002087, 0x0049d002,
11940 0x05818590, 0x002fb008, 0x067800e6, 0x07000041,
11941 0x002fb008, 0x05818590, 0x07a005a6, 0x0448e002,
11942 0x07810593, 0x0648a002, 0x0481859d, 0x06486002,
11943 0x06810597, 0x02400057, 0x056a02ff, 0x07c00000,
11944 0x07a005a6, 0x06788102, 0x06000004, 0x05818590,
11945 0x04002089, 0x070ff0d4, 0x045c0402, 0x077800ff,
11946 0x07f00000, 0x05818590, 0x00202010, 0x038c0590,
11947 0x07f00000, 0x06420002, 0x0481859e, 0x07a00578,
11948 0x033e6a00, 0x0302000a, 0x07c00000, 0x07f00000,
11949 0x060ff0a2, 0x050020ff, 0x060ff0a2, 0x045c0402,
11950 0x048185a7, 0x07c00000, 0x05a00218, 0x03495047,
11951 0x078105b2, 0x0320901d, 0x02800604, 0x0220901f,
11952 0x02800604, 0x014980e4, 0x04818010, 0x013e4000,
11953 0x07003000, 0x05600e35, 0x050f80ff, 0x07a006fc,
11954 0x01208003, 0x05a004e1, 0x038005cc, 0x03209009,
11955 0x02800604, 0x03209011, 0x02800604, 0x02209007,
11956 0x02800604, 0x03209003, 0x02800604, 0x00498043,
11957 0x058185be, 0x00497043, 0x048185c2, 0x02209001,
11958 0x02800604, 0x0220900d, 0x02800604, 0x0320900f,
11959 0x02800604, 0x03493000, 0x068105d5, 0x027c0045,
11960 0x070a0000, 0x078105de, 0x0220900b, 0x02800604,
11961 0x02209013, 0x05308000, 0x01012000, 0x04a004dc,
11962 0x00800183, 0x03209005, 0x02800604, 0x072e500c,
11963 0x00208002, 0x05a004e1, 0x02800010, 0x02209015,
11964 0x02800604, 0x072d6000, 0x05308000, 0x05007000,
11965 0x07f00000, 0x070090d1, 0x0379ff09, 0x0700ffff,
11966 0x04a004dc, 0x03209017, 0x02800604, 0x033e5000,
11967 0x06000080, 0x02209019, 0x02800604, 0x072d6000,
11968 0x033e5000, 0x06000080, 0x07f00000, 0x060ff0d0,
11969 0x0179feff, 0x0700ffff, 0x057dfeff, 0x0700ffff,
11970 0x04818010, 0x02400058, 0x00642058, 0x06820010,
11971 0x033e5000, 0x06000080, 0x04058051, 0x0320901b,
11972 0x02800604, 0x05308000, 0x01012000, 0x04a004dc,
11973 0x00800176, 0x05a00218, 0x05308000, 0x05008000,
11974 0x06009079, 0x04a004dc, 0x07c00000, 0x034900e4,
11975 0x05818618, 0x013e4000, 0x070000c0, 0x07f00000,
11976 0x034900e4, 0x04818616, 0x07c00000, 0x013e4000,
11977 0x06000080, 0x07f00000, 0x07f00000, 0x07f00000,
11978 0x034900e4, 0x06810610, 0x03800618, 0x072d6000,
11979 0x00498043, 0x06810632, 0x060ff0d0, 0x0179feff,
11980 0x0700ffff, 0x057dfeff, 0x0700ffff, 0x058185e2,
11981 0x050f8030, 0x032fa009, 0x0379ff00, 0x0700ffff,
11982 0x070ff0d1, 0x0179feff, 0x0700ffff, 0x055c0400,
11983 0x078105e2, 0x04004051, 0x0280067a, 0x06a006dc,
11984 0x062d6001, 0x020ef004, 0x038605e4, 0x06600004,
11985 0x050f80ff, 0x032fa009, 0x074b0000, 0x05002000,
11986 0x0769ff00, 0x01640800, 0x078205e4, 0x01640e00,
11987 0x058285e4, 0x070ff036, 0x045c0404, 0x0581864d,
11988 0x072d6000, 0x050f8030, 0x032fa009, 0x0379ff00,
11989 0x0700ffff, 0x070ff0d1, 0x0179feff, 0x0700ffff,
11990 0x055c0400, 0x078105e2, 0x04482034, 0x078105ff,
11991 0x06483034, 0x058185ff, 0x070ff0d4, 0x077800ff,
11992 0x070000f0, 0x037c00ff, 0x06000010, 0x0681067a,
11993 0x06a006d6, 0x024900e5, 0x0681065d, 0x033e5000,
11994 0x06000080, 0x02800010, 0x04601c04, 0x050f80ff,
11995 0x053fa809, 0x06000020, 0x030ef041, 0x038605ee,
11996 0x062d6002, 0x05602a41, 0x050f80ff, 0x012fa809,
11997 0x060ff0d0, 0x074b00ff, 0x045c0401, 0x05818678,
11998 0x062d6001, 0x07602841, 0x050f80ff, 0x053fa809,
11999 0x06000001, 0x070ff0d1, 0x054b80ff, 0x074b0003,
12000 0x055c0403, 0x05818678, 0x033e5000, 0x06000080,
12001 0x0080070e, 0x07600041, 0x0280065e, 0x06a006d6,
12002 0x024900e5, 0x06810680, 0x033e5000, 0x06000080,
12003 0x02800010, 0x06a006c2, 0x030ef041, 0x028605f2,
12004 0x04058051, 0x072d6000, 0x05601041, 0x050f80ff,
12005 0x012fa809, 0x0600a0d0, 0x0500b0d1, 0x062d6001,
12006 0x07f00000, 0x07f00000, 0x0600c0d0, 0x0500d0d1,
12007 0x062d6002, 0x0279ff0d, 0x07ff0000, 0x044d800d,
12008 0x060ff0d0, 0x074b00ff, 0x065a000d, 0x06601201,
12009 0x050f80ff, 0x073fa022, 0x07000005, 0x0079fe0d,
12010 0x070000ff, 0x050020ff, 0x05602a41, 0x050f80ff,
12011 0x073fa00a, 0x06000001, 0x020ef004, 0x028606bf,
12012 0x04601c04, 0x050f80ff, 0x053fa809, 0x06000001,
12013 0x050f80ff, 0x053fa80a, 0x06000020, 0x07602841,
12014 0x050f80ff, 0x073fa009, 0x06000001, 0x0279ff02,
12015 0x070000ff, 0x0678000d, 0x0700ff00, 0x065a0002,
12016 0x07602841, 0x050f80ff, 0x073fa00a, 0x06000001,
12017 0x07600041, 0x050f80ff, 0x053fa80a, 0x06000001,
12018 0x07601241, 0x050f80ff, 0x073fa00a, 0x06000002,
12019 0x033e5000, 0x06000080, 0x0080070e, 0x040f8032,
12020 0x073fa011, 0x06000001, 0x060ff002, 0x055c0403,
12021 0x058186ca, 0x00041051, 0x07c00000, 0x04600402,
12022 0x04500432, 0x050f80ff, 0x053fa809, 0x06000020,
12023 0x00400402, 0x01680eff, 0x070030ff, 0x040f8032,
12024 0x053fa80a, 0x06000001, 0x07c00000, 0x024900e5,
12025 0x068106d9, 0x07c00000, 0x033e5000, 0x070000c0,
12026 0x07c00000, 0x05004036, 0x060000d0, 0x0179fe00,
12027 0x0700ffff, 0x057dfeff, 0x0700ffff, 0x068106fb,
12028 0x070000d1, 0x0379ff00, 0x0700ffff, 0x06005051,
12029 0x060ff031, 0x05500405, 0x050f80ff, 0x073fa009,
12030 0x06000002, 0x020ef004, 0x038606f5, 0x04600404,
12031 0x050f80ff, 0x012fa809, 0x0079fe01, 0x0700ffff,
12032 0x055c0400, 0x068106fb, 0x01400405, 0x070050ff,
12033 0x057de0ff, 0x06000007, 0x058186e7, 0x04004051,
12034 0x07c00000, 0x072d6000, 0x07f00000, 0x07f00000,
12035 0x000110d0, 0x010120d1, 0x062d6001, 0x07f00000,
12036 0x07f00000, 0x020130d0, 0x010140d1, 0x062d6002,
12037 0x010170d4, 0x07f00000, 0x020150d0, 0x030160d1,
12038 0x053fa83a, 0x06000008, 0x07c00000, 0x07600c41,
12039 0x050f80ff, 0x073fa009, 0x06000001, 0x04780102,
12040 0x07ffff00, 0x046a0702, 0x050f80ff, 0x073fa00a,
12041 0x06000001, 0x05600e41, 0x050f80ff, 0x032fa069,
12042 0x03800053, 0xba6b4e34, 0x02800004, 0x00000000,
12043 0x00008000, 0x00000518, 0x040f801f, 0x012fa8c9,
12044 0x040f801f, 0x073fa081, 0x06000010, 0x03200005,
12045 0x07420000, 0x050fb000, 0x040f801f, 0x073fa011,
12046 0x06000038, 0x040f801f, 0x053fa859, 0x0700003a,
12047 0x050fe000, 0x0581800a, 0x0684003d, 0x04958019,
12048 0x030e0011, 0x072e4200, 0x03800014, 0x0291001f,
12049 0x050010c0, 0x04482001, 0x058180e8, 0x06483001,
12050 0x0781814b, 0x02920029, 0x068b0029, 0x018a0150,
12051 0x050010c0, 0x06780001, 0x050007c0, 0x06818223,
12052 0x06780001, 0x0500f800, 0x07818263, 0x03910030,
12053 0x040fe029, 0x03860030, 0x076c001d, 0x04810294,
12054 0x076c0a1d, 0x048102b9, 0x0292003d, 0x040fe02f,
12055 0x0286003d, 0x06000013, 0x050fb000, 0x066c0073,
12056 0x068103c2, 0x0297003d, 0x014920e4, 0x0481803d,
12057 0x03400000, 0x076c0a00, 0x04818034, 0x0796003f,
12058 0x03b900b8, 0x05908014, 0x010170e1, 0x07780017,
12059 0x03e00000, 0x06810092, 0x050010ff, 0x0179fe17,
12060 0x031fffff, 0x070000ff, 0x05600800, 0x050f80ff,
12061 0x073fa009, 0x06000001, 0x06780002, 0x02800040,
12062 0x037c00ff, 0x03800000, 0x0681005e, 0x0249f002,
12063 0x068100ab, 0x0448e002, 0x0681005e, 0x07600c00,
12064 0x050f80ff, 0x073fa009, 0x06000001, 0x06780002,
12065 0x07ffff00, 0x037c00ff, 0x05000200, 0x048180ab,
12066 0x064bd401, 0x03d00060, 0x038000a9, 0x02800068,
12067 0x03800072, 0x0280007c, 0x02800086, 0x03800090,
12068 0x038000a9, 0x038000a9, 0x050fe027, 0x0186806c,
12069 0x01028000, 0x0380006f, 0x07600027, 0x050f80ff,
12070 0x032fa00a, 0x01027000, 0x02400029, 0x028000ab,
12071 0x040fe025, 0x00868076, 0x03026000, 0x02800079,
12072 0x06600025, 0x050f80ff, 0x032fa00a, 0x03025000,
12073 0x02400029, 0x028000ab, 0x050fe021, 0x00868080,
12074 0x01022000, 0x02800083, 0x07600021, 0x050f80ff,
12075 0x032fa00a, 0x01021000, 0x02400029, 0x028000ab,
12076 0x040fe023, 0x0086808a, 0x01024000, 0x0380008d,
12077 0x06600023, 0x050f80ff, 0x032fa00a, 0x03023000,
12078 0x02400029, 0x028000ab, 0x06a000c8, 0x028000ab,
12079 0x01640817, 0x058280a9, 0x070ff017, 0x03d00096,
12080 0x0280009e, 0x038000a0, 0x038000a3, 0x038000a6,
12081 0x038000a9, 0x038000a9, 0x038000a9, 0x038000a9,
12082 0x03e00000, 0x03800014, 0x059080a0, 0x030160e1,
12083 0x028000ab, 0x059080a3, 0x030150e1, 0x028000ab,
12084 0x059080a6, 0x010140e1, 0x028000ab, 0x060fc013,
12085 0x06a00510, 0x03800014, 0x072e4800, 0x07000012,
12086 0x038000bb, 0x0747f000, 0x05600800, 0x050f80ff,
12087 0x012fa809, 0x0249f001, 0x078100bb, 0x01012000,
12088 0x052e4c00, 0x07c00000, 0x070000eb, 0x0349f000,
12089 0x058180af, 0x05600800, 0x050f80ff, 0x012fa809,
12090 0x0448e001, 0x068100c1, 0x07c00000, 0x0079c101,
12091 0x07ffffff, 0x027a4b01, 0x03800000, 0x05600800,
12092 0x050f80ff, 0x012fa80a, 0x07600c00, 0x050f80ff,
12093 0x012fa821, 0x06780001, 0x07ffff00, 0x037c00ff,
12094 0x05000700, 0x078100dd, 0x06601804, 0x070030ff,
12095 0x050f80ff, 0x012fa809, 0x05002000, 0x050f8003,
12096 0x073fa00a, 0x06000001, 0x040fe001, 0x038600de,
12097 0x04600201, 0x050f80ff, 0x032fa00a, 0x07c00000,
12098 0x050fe02e, 0x008680e3, 0x0102e000, 0x0302f000,
12099 0x038000e7, 0x0760002e, 0x050f80ff, 0x032fa00a,
12100 0x0102e000, 0x07c00000, 0x022c0004, 0x056c041d,
12101 0x078100fc, 0x056c021d, 0x04810113, 0x056c081d,
12102 0x04810125, 0x076c061d, 0x0581013f, 0x0521d000,
12103 0x0202c013, 0x0202a013, 0x02020013, 0x0460021a,
12104 0x050f80ff, 0x053fa80a, 0x07000009, 0x03b600ac,
12105 0x0484801f, 0x0280003d, 0x040fe02a, 0x028600f2,
12106 0x06000013, 0x04001013, 0x0560102b, 0x050f80ff,
12107 0x032fa012, 0x06420029, 0x0660002a, 0x050f80ff,
12108 0x053fa809, 0x06000001, 0x050fe003, 0x00860110,
12109 0x01028003, 0x0660002a, 0x050f80ff, 0x053fa80a,
12110 0x07000009, 0x00800140, 0x00028013, 0x00027013,
12111 0x00800140, 0x040fe02a, 0x028600f1, 0x06420029,
12112 0x0660002a, 0x050f80ff, 0x053fa809, 0x06000001,
12113 0x050fe003, 0x01860122, 0x03026003, 0x0660002a,
12114 0x050f80ff, 0x053fa80a, 0x07000009, 0x00800140,
12115 0x02026013, 0x02025013, 0x00800140, 0x040fe02a,
12116 0x028600f1, 0x06420029, 0x0660002a, 0x050f80ff,
12117 0x053fa809, 0x06000001, 0x050fe003, 0x00860134,
12118 0x01022003, 0x0660002a, 0x050f80ff, 0x053fa80a,
12119 0x07000009, 0x01800136, 0x00022013, 0x00021013,
12120 0x0647f020, 0x007a0120, 0x04000101, 0x04a00285,
12121 0x0400802a, 0x05a004f5, 0x009480f1, 0x0521d005,
12122 0x028000f2, 0x038000fa, 0x0647f020, 0x06486020,
12123 0x06818145, 0x04a00285, 0x028000f1, 0x007a0120,
12124 0x04000101, 0x04a00285, 0x0400802a, 0x05a004f5,
12125 0x028000f1, 0x040fd02a, 0x052e4003, 0x00208010,
12126 0x05a004f5, 0x038000fa, 0x00018098, 0x07480018,
12127 0x06818161, 0x05481018, 0x0781815f, 0x05482018,
12128 0x0681815d, 0x07483018, 0x0681815b, 0x002fb004,
12129 0x00800162, 0x012fb003, 0x00800162, 0x002fb002,
12130 0x00800162, 0x002fb001, 0x00800162, 0x012fb000,
12131 0x0179fe78, 0x070000ff, 0x030190ff, 0x00017086,
12132 0x058b0166, 0x03385000, 0x03020000, 0x07780017,
12133 0x00430407, 0x078181ee, 0x046c0419, 0x048101a2,
12134 0x046c0219, 0x05810172, 0x07219000, 0x00800186,
12135 0x07219000, 0x07483017, 0x0481018c, 0x05482017,
12136 0x05810193, 0x0448b075, 0x06818186, 0x06601476,
12137 0x050f80ff, 0x073fa022, 0x0600003e, 0x06000080,
12138 0x05001081, 0x05002082, 0x06003083, 0x05004084,
12139 0x04601c76, 0x050f80ff, 0x022fa02a, 0x07219000,
12140 0x07780078, 0x07ffff00, 0x045a0419, 0x010780ff,
12141 0x0484801f, 0x0280003d, 0x040fe07f, 0x0086019b,
12142 0x05a001bb, 0x00920186, 0x040fe07f, 0x07a681bb,
12143 0x00800186, 0x0560107b, 0x050f80ff, 0x032fa009,
12144 0x0744f000, 0x0560107b, 0x050f80ff, 0x032fa00a,
12145 0x00800179, 0x052e400c, 0x040080fb, 0x046aa108,
12146 0x06009076, 0x04002075, 0x05a004fc, 0x00800186,
12147 0x06219001, 0x05482017, 0x058101af, 0x058b01a5,
12148 0x060ff086, 0x0349f0ff, 0x07818165, 0x07483017,
12149 0x058101ac, 0x050fd0ff, 0x040fe07f, 0x07a681bb,
12150 0x00800186, 0x05004084, 0x05a00205, 0x00920186,
12151 0x070ff07d, 0x0450047c, 0x056004ff, 0x050f80ff,
12152 0x032fa009, 0x070ff000, 0x00540479, 0x030790ff,
12153 0x01800193, 0x060ff079, 0x0054047a, 0x058201e7,
12154 0x058101e7, 0x070ff07d, 0x0450047c, 0x050f80ff,
12155 0x002fa819, 0x058b01c3, 0x02080001, 0x00081002,
12156 0x01082003, 0x048b01c7, 0x03385000, 0x03010000,
12157 0x02400019, 0x070ff003, 0x04500479, 0x030790ff,
12158 0x0340007e, 0x0642007f, 0x058101e7, 0x070ff07e,
12159 0x050f80ff, 0x032fa009, 0x050fe000, 0x028681e6,
12160 0x070ff07d, 0x056002ff, 0x050f80ff, 0x032fa009,
12161 0x0107d000, 0x018601e8, 0x0560087d, 0x050f80ff,
12162 0x032fa009, 0x0569fe00, 0x0550041b, 0x050f80ff,
12163 0x032fa009, 0x0107e000, 0x070ff07e, 0x018001d2,
12164 0x0307c000, 0x07c00000, 0x052e400c, 0x040080fb,
12165 0x046aa108, 0x06009076, 0x04002075, 0x018004fc,
12166 0x040fd076, 0x050fd017, 0x060ff086, 0x077800ff,
12167 0x07000060, 0x037c00ff, 0x07000060, 0x078181f0,
12168 0x07780078, 0x07ffff00, 0x045a0419, 0x010780ff,
12169 0x06601476, 0x050f80ff, 0x073fa022, 0x0600003e,
12170 0x052e400c, 0x040080fb, 0x066a8108, 0x06009076,
12171 0x04002075, 0x05a004fc, 0x02800029, 0x0240007f,
12172 0x0742007e, 0x050f807e, 0x032fa009, 0x050fe000,
12173 0x0286821f, 0x070ff07d, 0x055c047b, 0x05810214,
12174 0x0760007d, 0x050f80ff, 0x032fa009, 0x050fe000,
12175 0x03868214, 0x070ff07b, 0x0107d0ff, 0x0560087d,
12176 0x050f80ff, 0x032fa009, 0x03681e00, 0x0450041c,
12177 0x0107e0ff, 0x050f80ff, 0x032fa009, 0x050fe000,
12178 0x01860221, 0x0307c000, 0x07c00000, 0x040fd076,
12179 0x02800510, 0x010180c0, 0x0548e018, 0x0781823c,
12180 0x0748f018, 0x06818238, 0x03490018, 0x06818234,
12181 0x01491018, 0x07818230, 0x073c0000, 0x06000040,
12182 0x02200004, 0x0180023f, 0x073c0000, 0x06000020,
12183 0x03200003, 0x0180023f, 0x073c0000, 0x06000010,
12184 0x02200002, 0x0180023f, 0x073c0000, 0x06000008,
12185 0x02200001, 0x0180023f, 0x073c0000, 0x06000004,
12186 0x06000013, 0x050fb000, 0x040fe076, 0x00860258,
12187 0x046c0273, 0x04810268, 0x066c0073, 0x04810249,
12188 0x040fd076, 0x06a00510, 0x03800014, 0x040fd076,
12189 0x0080024c, 0x00452075, 0x00077013, 0x0647f075,
12190 0x06486075, 0x06818252, 0x05a0028b, 0x00800258,
12191 0x007a0175, 0x04000101, 0x05a0028b, 0x04008076,
12192 0x0245f008, 0x05a004f5, 0x07273000, 0x05600272,
12193 0x050f80ff, 0x053fa80a, 0x07000009, 0x0379ff78,
12194 0x070000ff, 0x02076013, 0x02075013, 0x0484801f,
12195 0x0280003d, 0x070fc0ff, 0x052e400c, 0x00208020,
12196 0x05a004f5, 0x00800261, 0x04600276, 0x050010ff,
12197 0x040f8001, 0x032fa009, 0x040f8001, 0x053fa80a,
12198 0x07000009, 0x070ff000, 0x0286827a, 0x06601276,
12199 0x050f80ff, 0x073fa009, 0x0700000c, 0x07601818,
12200 0x050f80ff, 0x053fa80a, 0x07000009, 0x0180027b,
12201 0x07a000de, 0x0448b075, 0x0581024b, 0x06000013,
12202 0x04001013, 0x0560107b, 0x050f80ff, 0x032fa012,
12203 0x0046b075, 0x03b600ac, 0x0080024c, 0x06000020,
12204 0x04001016, 0x0460082a, 0x050f80ff, 0x032fa012,
12205 0x07c00000, 0x06000075, 0x040010a2, 0x044b0801,
12206 0x060ff016, 0x065a0001, 0x04600876, 0x050f80ff,
12207 0x032fa012, 0x07c00000, 0x050fe022, 0x0186029a,
12208 0x0421d004, 0x0302a022, 0x04a002c1, 0x018002b1,
12209 0x040fe026, 0x008602b3, 0x0421d001, 0x0202a026,
12210 0x04a002c1, 0x0202c013, 0x00683e20, 0x070060ff,
12211 0x056c0206, 0x048102f4, 0x056c0406, 0x0781030a,
12212 0x076c0606, 0x06810379, 0x056c1606, 0x078182b1,
12213 0x04488020, 0x07810387, 0x040fd02a, 0x0521d000,
12214 0x0202a013, 0x02020013, 0x008002b3, 0x04a004ec,
12215 0x008002bf, 0x050fe028, 0x008602bf, 0x0302a028,
12216 0x0421d002, 0x04a002c1, 0x008002c8, 0x050fe022,
12217 0x008602bf, 0x0421d004, 0x0302a022, 0x04a002c1,
12218 0x04a004ec, 0x05848030, 0x0280003d, 0x0460082a,
12219 0x050f80ff, 0x022fa031, 0x03020000, 0x0002b004,
12220 0x01018005, 0x07c00000, 0x0400702a, 0x06a003ba,
12221 0x007a0101, 0x07060000, 0x07303000, 0x07008290,
12222 0x07600018, 0x050f80ff, 0x053fa809, 0x07000003,
12223 0x0448e007, 0x068182d6, 0x06006013, 0x018002dd,
12224 0x02400010, 0x048102d6, 0x06006010, 0x0460322a,
12225 0x050f80ff, 0x073fa00a, 0x07000003, 0x050f801e,
12226 0x032fa03a, 0x063aa020, 0x06000002, 0x013e4000,
12227 0x07000030, 0x009802e3, 0x070ff0f6, 0x036830ff,
12228 0x078182e4, 0x070f001e, 0x0560102b, 0x050f10ff,
12229 0x063f3c08, 0x0600000d, 0x013e4000, 0x06000020,
12230 0x040f801a, 0x0320000a, 0x022017d0, 0x032fa012,
12231 0x0202c013, 0x008002bf, 0x04007013, 0x06a003ba,
12232 0x007a0101, 0x07050000, 0x07303000, 0x07008890,
12233 0x074d0005, 0x06006013, 0x050f801e, 0x032fa03a,
12234 0x05601a2b, 0x050f80ff, 0x022fa019, 0x04001002,
12235 0x04002013, 0x040f801f, 0x022fa01a, 0x073aa00c,
12236 0x06000002, 0x07300c03, 0x0600000d, 0x028003a7,
12237 0x04007013, 0x06a003ba, 0x007a0101, 0x03070000,
12238 0x0660282a, 0x050f80ff, 0x073fa009, 0x06000004,
12239 0x02499008, 0x07810317, 0x07303000, 0x07008890,
12240 0x02800319, 0x07303000, 0x04008980, 0x05007003,
12241 0x074d0005, 0x06006013, 0x050f801e, 0x032fa03a,
12242 0x0760142b, 0x050f80ff, 0x032fa021, 0x064b0002,
12243 0x02499008, 0x06810325, 0x0644c002, 0x054b0400,
12244 0x050040ff, 0x06698104, 0x0581833a, 0x06000013,
12245 0x04001013, 0x04780102, 0x06000010, 0x06003013,
12246 0x04004013, 0x06005013, 0x06006013, 0x04007013,
12247 0x00644015, 0x07820336, 0x04448002, 0x02205008,
12248 0x040f801f, 0x032fa042, 0x04008015, 0x03800371,
12249 0x046c8004, 0x05818348, 0x01208018, 0x06780002,
12250 0x07000003, 0x0581834b, 0x06003001, 0x06000013,
12251 0x04001013, 0x04004013, 0x06005013, 0x040f801f,
12252 0x022fa032, 0x03800371, 0x040fd02a, 0x06a00510,
12253 0x03800014, 0x04488002, 0x07810350, 0x070ff003,
12254 0x04500408, 0x050080ff, 0x06489002, 0x06810357,
12255 0x0379ff00, 0x070000ff, 0x070ff000, 0x04500408,
12256 0x050080ff, 0x07005003, 0x05004000, 0x06003001,
12257 0x06000013, 0x04001013, 0x040f801f, 0x022fa032,
12258 0x05601c2b, 0x050f80ff, 0x022fa031, 0x06600c1f,
12259 0x050f80ff, 0x022fa032, 0x02680608, 0x07810371,
12260 0x016408ff, 0x057dfeff, 0x07ffffff, 0x034000ff,
12261 0x045a0407, 0x070000ff, 0x0760061e, 0x050f80ff,
12262 0x032fa00a, 0x06600908, 0x0669f908, 0x027a0008,
12263 0x06000020, 0x070aa0ff, 0x014a20ff, 0x037a00ff,
12264 0x060000dc, 0x070000ff, 0x028003a7, 0x04007013,
12265 0x06a003ba, 0x007a0101, 0x07030000, 0x07303000,
12266 0x07008190, 0x06006013, 0x050f801e, 0x032fa03a,
12267 0x073aa000, 0x06000002, 0x07300c00, 0x07000005,
12268 0x028003a7, 0x04007013, 0x06a003ba, 0x007a0101,
12269 0x07810000, 0x07303000, 0x07000090, 0x06006013,
12270 0x06600c2a, 0x050f80ff, 0x053fa809, 0x07000003,
12271 0x04780107, 0x07ffff00, 0x007c0107, 0x07000500,
12272 0x0581839a, 0x07303000, 0x05000890, 0x074d0005,
12273 0x0660282a, 0x050f80ff, 0x053fa809, 0x07000003,
12274 0x0049d007, 0x068103a1, 0x02206001, 0x050f801e,
12275 0x032fa03a, 0x073aa000, 0x06000002, 0x07300c00,
12276 0x07000005, 0x013e4000, 0x07000030, 0x039803a9,
12277 0x070ff0f6, 0x036830ff, 0x058183aa, 0x070f001e,
12278 0x040f101f, 0x070f3000, 0x013e4000, 0x06000020,
12279 0x040f801a, 0x0320000a, 0x022017d0, 0x032fa012,
12280 0x008002bf, 0x03200000, 0x06006076, 0x028003bc,
12281 0x03200011, 0x0600602a, 0x05a00441, 0x05600406,
12282 0x050f80ff, 0x053fa809, 0x06000002, 0x07c00000,
12283 0x0207602f, 0x04600876, 0x050f80ff, 0x022fa031,
12284 0x03075000, 0x0007b004, 0x01018005, 0x06600076,
12285 0x050020ff, 0x050f80ff, 0x012fa809, 0x0202f001,
12286 0x008683d0, 0x0002e013, 0x040f8002, 0x053fa80a,
12287 0x07000009, 0x06273001, 0x0448b075, 0x048183da,
12288 0x04602076, 0x050f80ff, 0x053fa811, 0x0700003c,
12289 0x0179fe78, 0x070000ff, 0x030190ff, 0x018683e2,
12290 0x07a003f6, 0x00078019, 0x039203f5, 0x0180043a,
12291 0x040fd076, 0x040fd019, 0x04600276, 0x050020ff,
12292 0x050f80ff, 0x032fa009, 0x040f8002, 0x053fa80a,
12293 0x07000009, 0x050fe000, 0x008683f2, 0x07601818,
12294 0x050f80ff, 0x053fa80a, 0x07000009, 0x038003f3,
12295 0x07a000de, 0x07273000, 0x02076013, 0x0280003d,
12296 0x078b03f6, 0x03385000, 0x07030000, 0x05600818,
12297 0x050f80ff, 0x032fa009, 0x054b0400, 0x0308a0ff,
12298 0x0179fe00, 0x070000ff, 0x010880ff, 0x0448b075,
12299 0x04810410, 0x0760147b, 0x050f80ff, 0x002fa819,
12300 0x064b0001, 0x02080002, 0x01081003, 0x00082001,
12301 0x02083001, 0x02079001, 0x0207a001, 0x00084013,
12302 0x0207f013, 0x00800432, 0x06485075, 0x05810428,
12303 0x02465075, 0x06601476, 0x050f80ff, 0x073fa021,
12304 0x0600003e, 0x070ff07d, 0x0450047c, 0x050f80ff,
12305 0x002fa819, 0x058b041b, 0x02080001, 0x00081002,
12306 0x01082003, 0x03079003, 0x0208307a, 0x0340007e,
12307 0x0642007f, 0x0581042d, 0x070ff07e, 0x05a001d2,
12308 0x0392842d, 0x01800439, 0x058b0428, 0x06601476,
12309 0x050f80ff, 0x073fa041, 0x0600003e, 0x06602476,
12310 0x050f80ff, 0x073fa009, 0x06000007, 0x0008400e,
12311 0x048b0432, 0x03385000, 0x03010000, 0x06219001,
12312 0x040fe07f, 0x01860439, 0x018001bb, 0x07c00000,
12313 0x00683e75, 0x0581043f, 0x0448d075, 0x05810465,
12314 0x01800493, 0x05a004f0, 0x038003f5, 0x0297844c,
12315 0x07602418, 0x050f80ff, 0x012fa809, 0x06780001,
12316 0x070000ff, 0x075a0000, 0x070ff014, 0x0569feff,
12317 0x054b08ff, 0x075a0000, 0x05600418, 0x050f80ff,
12318 0x012fa809, 0x040fe007, 0x03868453, 0x01204000,
12319 0x00800461, 0x00700101, 0x03010000, 0x06780001,
12320 0x07ff0000, 0x076c00ff, 0x0681845b, 0x00700101,
12321 0x03010000, 0x05600418, 0x050f80ff, 0x012fa80a,
12322 0x06780001, 0x07ff0000, 0x050040ff, 0x0279ff01,
12323 0x0700ffff, 0x05002014, 0x07c00000, 0x04007076,
12324 0x0448b075, 0x0481047f, 0x03200011, 0x06006076,
12325 0x06a003bc, 0x007a0101, 0x07060000, 0x07303000,
12326 0x07008290, 0x07600018, 0x050f80ff, 0x053fa809,
12327 0x07000003, 0x0448e007, 0x07818477, 0x06006013,
12328 0x0180048e, 0x02400010, 0x05810477, 0x06006010,
12329 0x04603276, 0x050f80ff, 0x073fa00a, 0x07000003,
12330 0x0180048e, 0x04602a76, 0x050f80ff, 0x032fa009,
12331 0x060ff07a, 0x05500400, 0x070000ff, 0x04602a76,
12332 0x050f80ff, 0x032fa00a, 0x07a003b7, 0x007a0101,
12333 0x03010000, 0x06303008, 0x05008000, 0x0600600e,
12334 0x050f8074, 0x032fa03a, 0x053079a0, 0x0700000c,
12335 0x008004d3, 0x00683e75, 0x076c0aff, 0x058104b2,
12336 0x04007013, 0x03200011, 0x06006076, 0x06a003bc,
12337 0x007a0101, 0x03070000, 0x06602876, 0x050f80ff,
12338 0x053fa809, 0x06000001, 0x03499003, 0x048104a7,
12339 0x07303000, 0x07008890, 0x053079a0, 0x0700000c,
12340 0x008004ab, 0x07303000, 0x04008980, 0x04307920,
12341 0x0700000c, 0x074d0005, 0x06006013, 0x050f8074,
12342 0x032fa03a, 0x04307920, 0x0700000c, 0x008004d3,
12343 0x04602a76, 0x050f80ff, 0x032fa009, 0x060ff07a,
12344 0x05500400, 0x070000ff, 0x04602a76, 0x050f80ff,
12345 0x032fa00a, 0x04007076, 0x07a003b7, 0x007a0101,
12346 0x03010000, 0x06303008, 0x07008800, 0x074d0005,
12347 0x06600a76, 0x050f80ff, 0x073fa009, 0x07000003,
12348 0x054b0406, 0x045a0404, 0x050040ff, 0x0600600e,
12349 0x050f8074, 0x032fa03a, 0x0648c075, 0x058104d1,
12350 0x06307d20, 0x0700000c, 0x008004d3, 0x04307920,
12351 0x0700000c, 0x013e4000, 0x07000030, 0x009804d5,
12352 0x070ff0f6, 0x074850ff, 0x068184d6, 0x050f2074,
12353 0x060a0007, 0x040070fb, 0x046a7007, 0x050f40ff,
12354 0x013e4000, 0x06000020, 0x0678007a, 0x07fff000,
12355 0x068184e6, 0x0320000a, 0x022017d0, 0x008004e9,
12356 0x0320000a, 0x06301b58, 0x06000001, 0x050f8072,
12357 0x032fa012, 0x038003f5, 0x01208060, 0x0600902a,
12358 0x04002020, 0x018004fc, 0x040080fb, 0x066ae108,
12359 0x06009076, 0x04002075, 0x018004fc, 0x03201100,
12360 0x078484fa, 0x06420001, 0x078184f6, 0x02800513,
12361 0x020e0008, 0x07c00000, 0x050fd009, 0x040fd008,
12362 0x03201100, 0x05848503, 0x06420001, 0x078184ff,
12363 0x02800513, 0x007a0102, 0x04000101, 0x05600809,
12364 0x050f80ff, 0x073fa00a, 0x06000001, 0x020e0008,
12365 0x0684050d, 0x030e0009, 0x07c00000, 0x01011009,
12366 0x052e4300, 0x07c00000, 0x052e400f, 0x01208090,
12367 0x018004f5, 0x070fc0ff, 0x040f8013, 0x032fa009,
12368 0x02800516, 0x15416ea9, 0xffef0b01
12369};
12370
12371#ifdef UNIQUE_FW_NAME
12372uint32_t fw2400_length02 = 0x000014ff ;
12373#else
12374uint32_t risc_code_length02 = 0x000014ff ;
12375#endif
12376
diff --git a/drivers/scsi/qla2xxx/qla_attr.c b/drivers/scsi/qla2xxx/qla_attr.c
index 48e460eef05a..2efca52dff50 100644
--- a/drivers/scsi/qla2xxx/qla_attr.c
+++ b/drivers/scsi/qla2xxx/qla_attr.c
@@ -232,7 +232,7 @@ static ssize_t
232qla2x00_isp_name_show(struct class_device *cdev, char *buf) 232qla2x00_isp_name_show(struct class_device *cdev, char *buf)
233{ 233{
234 scsi_qla_host_t *ha = to_qla_host(class_to_shost(cdev)); 234 scsi_qla_host_t *ha = to_qla_host(class_to_shost(cdev));
235 return snprintf(buf, PAGE_SIZE, "%s\n", ha->brd_info->isp_name); 235 return snprintf(buf, PAGE_SIZE, "ISP%04X\n", ha->pdev->device);
236} 236}
237 237
238static ssize_t 238static ssize_t
diff --git a/drivers/scsi/qla2xxx/qla_def.h b/drivers/scsi/qla2xxx/qla_def.h
index 7b3efd531297..79d8a914f9d0 100644
--- a/drivers/scsi/qla2xxx/qla_def.h
+++ b/drivers/scsi/qla2xxx/qla_def.h
@@ -22,6 +22,7 @@
22#include <linux/completion.h> 22#include <linux/completion.h>
23#include <linux/interrupt.h> 23#include <linux/interrupt.h>
24#include <linux/workqueue.h> 24#include <linux/workqueue.h>
25#include <linux/firmware.h>
25#include <asm/semaphore.h> 26#include <asm/semaphore.h>
26 27
27#include <scsi/scsi.h> 28#include <scsi/scsi.h>
@@ -29,6 +30,7 @@
29#include <scsi/scsi_device.h> 30#include <scsi/scsi_device.h>
30#include <scsi/scsi_cmnd.h> 31#include <scsi/scsi_cmnd.h>
31 32
33#if defined(CONFIG_SCSI_QLA2XXX_EMBEDDED_FIRMWARE)
32#if defined(CONFIG_SCSI_QLA21XX) || defined(CONFIG_SCSI_QLA21XX_MODULE) 34#if defined(CONFIG_SCSI_QLA21XX) || defined(CONFIG_SCSI_QLA21XX_MODULE)
33#define IS_QLA2100(ha) ((ha)->pdev->device == PCI_DEVICE_ID_QLOGIC_ISP2100) 35#define IS_QLA2100(ha) ((ha)->pdev->device == PCI_DEVICE_ID_QLOGIC_ISP2100)
34#else 36#else
@@ -79,9 +81,23 @@
79#define IS_QLA2522(ha) 0 81#define IS_QLA2522(ha) 0
80#endif 82#endif
81 83
84#else /* !defined(CONFIG_SCSI_QLA2XXX_EMBEDDED_FIRMWARE) */
85
86#define IS_QLA2100(ha) ((ha)->pdev->device == PCI_DEVICE_ID_QLOGIC_ISP2100)
87#define IS_QLA2200(ha) ((ha)->pdev->device == PCI_DEVICE_ID_QLOGIC_ISP2200)
88#define IS_QLA2300(ha) ((ha)->pdev->device == PCI_DEVICE_ID_QLOGIC_ISP2300)
89#define IS_QLA2312(ha) ((ha)->pdev->device == PCI_DEVICE_ID_QLOGIC_ISP2312)
90#define IS_QLA2322(ha) ((ha)->pdev->device == PCI_DEVICE_ID_QLOGIC_ISP2322)
91#define IS_QLA6312(ha) ((ha)->pdev->device == PCI_DEVICE_ID_QLOGIC_ISP6312)
92#define IS_QLA6322(ha) ((ha)->pdev->device == PCI_DEVICE_ID_QLOGIC_ISP6322)
93#define IS_QLA2422(ha) ((ha)->pdev->device == PCI_DEVICE_ID_QLOGIC_ISP2422)
94#define IS_QLA2432(ha) ((ha)->pdev->device == PCI_DEVICE_ID_QLOGIC_ISP2432)
95#define IS_QLA2512(ha) ((ha)->pdev->device == PCI_DEVICE_ID_QLOGIC_ISP2512)
96#define IS_QLA2522(ha) ((ha)->pdev->device == PCI_DEVICE_ID_QLOGIC_ISP2522)
97#endif
98
82#define IS_QLA23XX(ha) (IS_QLA2300(ha) || IS_QLA2312(ha) || IS_QLA2322(ha) || \ 99#define IS_QLA23XX(ha) (IS_QLA2300(ha) || IS_QLA2312(ha) || IS_QLA2322(ha) || \
83 IS_QLA6312(ha) || IS_QLA6322(ha)) 100 IS_QLA6312(ha) || IS_QLA6322(ha))
84
85#define IS_QLA24XX(ha) (IS_QLA2422(ha) || IS_QLA2432(ha)) 101#define IS_QLA24XX(ha) (IS_QLA2422(ha) || IS_QLA2432(ha))
86#define IS_QLA25XX(ha) (IS_QLA2512(ha) || IS_QLA2522(ha)) 102#define IS_QLA25XX(ha) (IS_QLA2512(ha) || IS_QLA2522(ha))
87 103
@@ -2124,6 +2140,12 @@ struct qla_board_info {
2124 struct scsi_host_template *sht; 2140 struct scsi_host_template *sht;
2125}; 2141};
2126 2142
2143struct fw_blob {
2144 char *name;
2145 uint32_t segs[4];
2146 const struct firmware *fw;
2147};
2148
2127/* Return data from MBC_GET_ID_LIST call. */ 2149/* Return data from MBC_GET_ID_LIST call. */
2128struct gid_list_info { 2150struct gid_list_info {
2129 uint8_t al_pa; 2151 uint8_t al_pa;
diff --git a/drivers/scsi/qla2xxx/qla_gbl.h b/drivers/scsi/qla2xxx/qla_gbl.h
index fedcb0d3fc72..bec81adcf4fd 100644
--- a/drivers/scsi/qla2xxx/qla_gbl.h
+++ b/drivers/scsi/qla2xxx/qla_gbl.h
@@ -33,8 +33,8 @@ extern int qla24xx_nvram_config(struct scsi_qla_host *);
33extern void qla2x00_update_fw_options(struct scsi_qla_host *); 33extern void qla2x00_update_fw_options(struct scsi_qla_host *);
34extern void qla24xx_update_fw_options(scsi_qla_host_t *); 34extern void qla24xx_update_fw_options(scsi_qla_host_t *);
35extern int qla2x00_load_risc(struct scsi_qla_host *, uint32_t *); 35extern int qla2x00_load_risc(struct scsi_qla_host *, uint32_t *);
36extern int qla24xx_load_risc(scsi_qla_host_t *, uint32_t *);
36extern int qla24xx_load_risc_flash(scsi_qla_host_t *, uint32_t *); 37extern int qla24xx_load_risc_flash(scsi_qla_host_t *, uint32_t *);
37extern int qla24xx_load_risc_hotplug(scsi_qla_host_t *, uint32_t *);
38 38
39extern fc_port_t *qla2x00_alloc_fcport(scsi_qla_host_t *, gfp_t); 39extern fc_port_t *qla2x00_alloc_fcport(scsi_qla_host_t *, gfp_t);
40 40
@@ -76,6 +76,8 @@ extern void qla2x00_blink_led(scsi_qla_host_t *);
76 76
77extern int qla2x00_down_timeout(struct semaphore *, unsigned long); 77extern int qla2x00_down_timeout(struct semaphore *, unsigned long);
78 78
79extern struct fw_blob *qla2x00_request_firmware(scsi_qla_host_t *);
80
79/* 81/*
80 * Global Function Prototypes in qla_iocb.c source file. 82 * Global Function Prototypes in qla_iocb.c source file.
81 */ 83 */
diff --git a/drivers/scsi/qla2xxx/qla_init.c b/drivers/scsi/qla2xxx/qla_init.c
index c46d2469b85f..7d973bd9022b 100644
--- a/drivers/scsi/qla2xxx/qla_init.c
+++ b/drivers/scsi/qla2xxx/qla_init.c
@@ -8,7 +8,6 @@
8 8
9#include <linux/delay.h> 9#include <linux/delay.h>
10#include <linux/vmalloc.h> 10#include <linux/vmalloc.h>
11#include <linux/firmware.h>
12#include <scsi/scsi_transport_fc.h> 11#include <scsi/scsi_transport_fc.h>
13 12
14#include "qla_devtbl.h" 13#include "qla_devtbl.h"
@@ -3484,17 +3483,16 @@ qla24xx_nvram_config(scsi_qla_host_t *ha)
3484 return (rval); 3483 return (rval);
3485} 3484}
3486 3485
3486#if defined(CONFIG_SCSI_QLA2XXX_EMBEDDED_FIRMWARE)
3487
3487int 3488int
3488qla2x00_load_risc(scsi_qla_host_t *ha, uint32_t *srisc_addr) 3489qla2x00_load_risc(scsi_qla_host_t *ha, uint32_t *srisc_addr)
3489{ 3490{
3490 int rval; 3491 int rval, num, i;
3491 uint16_t cnt; 3492 uint32_t cnt;
3492 uint16_t *risc_code; 3493 uint16_t *risc_code;
3493 unsigned long risc_address; 3494 uint32_t risc_addr, risc_size;
3494 unsigned long risc_code_size; 3495 uint16_t *req_ring;
3495 int num;
3496 int i;
3497 uint16_t *req_ring;
3498 struct qla_fw_info *fw_iter; 3496 struct qla_fw_info *fw_iter;
3499 3497
3500 rval = QLA_SUCCESS; 3498 rval = QLA_SUCCESS;
@@ -3504,37 +3502,29 @@ qla2x00_load_risc(scsi_qla_host_t *ha, uint32_t *srisc_addr)
3504 *srisc_addr = *ha->brd_info->fw_info->fwstart; 3502 *srisc_addr = *ha->brd_info->fw_info->fwstart;
3505 while (fw_iter->addressing != FW_INFO_ADDR_NOMORE) { 3503 while (fw_iter->addressing != FW_INFO_ADDR_NOMORE) {
3506 risc_code = fw_iter->fwcode; 3504 risc_code = fw_iter->fwcode;
3507 risc_code_size = *fw_iter->fwlen; 3505 risc_size = *fw_iter->fwlen;
3508 3506 if (fw_iter->addressing == FW_INFO_ADDR_NORMAL)
3509 if (fw_iter->addressing == FW_INFO_ADDR_NORMAL) { 3507 risc_addr = *fw_iter->fwstart;
3510 risc_address = *fw_iter->fwstart; 3508 else
3511 } else { 3509 risc_addr = *fw_iter->lfwstart;
3512 /* Extended address */
3513 risc_address = *fw_iter->lfwstart;
3514 }
3515 3510
3516 num = 0; 3511 num = 0;
3517 rval = 0; 3512 rval = 0;
3518 while (risc_code_size > 0 && !rval) { 3513 while (risc_size > 0 && !rval) {
3519 cnt = (uint16_t)(ha->fw_transfer_size >> 1); 3514 cnt = (uint16_t)(ha->fw_transfer_size >> 1);
3520 if (cnt > risc_code_size) 3515 if (cnt > risc_size)
3521 cnt = risc_code_size; 3516 cnt = risc_size;
3522 3517
3523 DEBUG7(printk("scsi(%ld): Loading risc segment@ " 3518 DEBUG7(printk("scsi(%ld): Loading risc segment@ "
3524 "addr %p, number of bytes 0x%x, offset 0x%lx.\n", 3519 "addr %p, number of bytes 0x%x, offset 0x%lx.\n",
3525 ha->host_no, risc_code, cnt, risc_address)); 3520 ha->host_no, risc_code, cnt, risc_addr));
3526 3521
3527 req_ring = (uint16_t *)ha->request_ring; 3522 req_ring = (uint16_t *)ha->request_ring;
3528 for (i = 0; i < cnt; i++) 3523 for (i = 0; i < cnt; i++)
3529 req_ring[i] = cpu_to_le16(risc_code[i]); 3524 req_ring[i] = cpu_to_le16(risc_code[i]);
3530 3525
3531 if (fw_iter->addressing == FW_INFO_ADDR_NORMAL) { 3526 rval = qla2x00_load_ram(ha, ha->request_dma, risc_addr,
3532 rval = qla2x00_load_ram(ha, ha->request_dma, 3527 cnt);
3533 risc_address, cnt);
3534 } else {
3535 rval = qla2x00_load_ram_ext(ha,
3536 ha->request_dma, risc_address, cnt);
3537 }
3538 if (rval) { 3528 if (rval) {
3539 DEBUG(printk("scsi(%ld): [ERROR] Failed to " 3529 DEBUG(printk("scsi(%ld): [ERROR] Failed to "
3540 "load segment %d of firmware\n", 3530 "load segment %d of firmware\n",
@@ -3548,16 +3538,76 @@ qla2x00_load_risc(scsi_qla_host_t *ha, uint32_t *srisc_addr)
3548 } 3538 }
3549 3539
3550 risc_code += cnt; 3540 risc_code += cnt;
3551 risc_address += cnt; 3541 risc_addr += cnt;
3552 risc_code_size -= cnt; 3542 risc_size -= cnt;
3553 num++; 3543 num++;
3554 } 3544 }
3555 3545
3556 /* Next firmware sequence */ 3546 /* Next firmware sequence */
3557 fw_iter++; 3547 fw_iter++;
3558 } 3548 }
3549 return rval;
3550}
3559 3551
3560 return (rval); 3552int
3553qla24xx_load_risc(scsi_qla_host_t *ha, uint32_t *srisc_addr)
3554{
3555 int rval, num, i;
3556 uint32_t cnt;
3557 uint32_t *risc_code;
3558 uint32_t risc_addr, risc_size;
3559 uint32_t *req_ring;
3560 struct qla_fw_info *fw_iter;
3561
3562 rval = QLA_SUCCESS;
3563
3564 /* Load firmware sequences */
3565 fw_iter = ha->brd_info->fw_info;
3566 *srisc_addr = *((uint32_t *)fw_iter->lfwstart);
3567 while (fw_iter->addressing != FW_INFO_ADDR_NOMORE) {
3568 risc_code = (uint32_t *)fw_iter->fwcode;
3569 risc_size = *((uint32_t *)fw_iter->fwlen);
3570 risc_addr = *((uint32_t *)fw_iter->lfwstart);
3571
3572 num = 0;
3573 rval = 0;
3574 while (risc_size > 0 && !rval) {
3575 cnt = (uint32_t)(ha->fw_transfer_size >> 2);
3576 if (cnt > risc_size)
3577 cnt = risc_size;
3578
3579 DEBUG7(printk("scsi(%ld): Loading risc segment@ "
3580 "addr %p, number of bytes 0x%x, offset 0x%lx.\n",
3581 ha->host_no, risc_code, cnt, risc_addr));
3582
3583 req_ring = (uint32_t *)ha->request_ring;
3584 for (i = 0; i < cnt; i++)
3585 req_ring[i] = cpu_to_le32(risc_code[i]);
3586
3587 rval = qla2x00_load_ram(ha, ha->request_dma, risc_addr,
3588 cnt);
3589 if (rval) {
3590 DEBUG(printk("scsi(%ld): [ERROR] Failed to "
3591 "load segment %d of firmware\n",
3592 ha->host_no, num));
3593 qla_printk(KERN_WARNING, ha,
3594 "[ERROR] Failed to load segment %d of "
3595 "firmware\n", num);
3596
3597 qla2x00_dump_regs(ha);
3598 break;
3599 }
3600
3601 risc_code += cnt;
3602 risc_addr += cnt;
3603 risc_size -= cnt;
3604 num++;
3605 }
3606
3607 /* Next firmware sequence */
3608 fw_iter++;
3609 }
3610 return rval;
3561} 3611}
3562 3612
3563int 3613int
@@ -3642,8 +3692,108 @@ qla24xx_load_risc_flash(scsi_qla_host_t *ha, uint32_t *srisc_addr)
3642 return rval; 3692 return rval;
3643} 3693}
3644 3694
3695#else /* !defined(CONFIG_SCSI_QLA2XXX_EMBEDDED_FIRMWARE) */
3696
3645int 3697int
3646qla24xx_load_risc_hotplug(scsi_qla_host_t *ha, uint32_t *srisc_addr) 3698qla2x00_load_risc(scsi_qla_host_t *ha, uint32_t *srisc_addr)
3699{
3700 int rval;
3701 int i, fragment;
3702 uint16_t *wcode, *fwcode;
3703 uint32_t risc_addr, risc_size, fwclen, wlen, *seg;
3704 struct fw_blob *blob;
3705
3706 /* Load firmware blob. */
3707 blob = qla2x00_request_firmware(ha);
3708 if (!blob) {
3709 qla_printk(KERN_ERR, ha, "Firmware image unavailable.\n");
3710 return QLA_FUNCTION_FAILED;
3711 }
3712
3713 rval = QLA_SUCCESS;
3714
3715 wcode = (uint16_t *)ha->request_ring;
3716 *srisc_addr = 0;
3717 fwcode = (uint16_t *)blob->fw->data;
3718 fwclen = 0;
3719
3720 /* Validate firmware image by checking version. */
3721 if (blob->fw->size < 8 * sizeof(uint16_t)) {
3722 qla_printk(KERN_WARNING, ha,
3723 "Unable to verify integrity of firmware image (%Zd)!\n",
3724 blob->fw->size);
3725 goto fail_fw_integrity;
3726 }
3727 for (i = 0; i < 4; i++)
3728 wcode[i] = be16_to_cpu(fwcode[i + 4]);
3729 if ((wcode[0] == 0xffff && wcode[1] == 0xffff && wcode[2] == 0xffff &&
3730 wcode[3] == 0xffff) || (wcode[0] == 0 && wcode[1] == 0 &&
3731 wcode[2] == 0 && wcode[3] == 0)) {
3732 qla_printk(KERN_WARNING, ha,
3733 "Unable to verify integrity of firmware image!\n");
3734 qla_printk(KERN_WARNING, ha,
3735 "Firmware data: %04x %04x %04x %04x!\n", wcode[0],
3736 wcode[1], wcode[2], wcode[3]);
3737 goto fail_fw_integrity;
3738 }
3739
3740 seg = blob->segs;
3741 while (*seg && rval == QLA_SUCCESS) {
3742 risc_addr = *seg;
3743 *srisc_addr = *srisc_addr == 0 ? *seg : *srisc_addr;
3744 risc_size = be16_to_cpu(fwcode[3]);
3745
3746 /* Validate firmware image size. */
3747 fwclen += risc_size * sizeof(uint16_t);
3748 if (blob->fw->size < fwclen) {
3749 qla_printk(KERN_WARNING, ha,
3750 "Unable to verify integrity of firmware image "
3751 "(%Zd)!\n", blob->fw->size);
3752 goto fail_fw_integrity;
3753 }
3754
3755 fragment = 0;
3756 while (risc_size > 0 && rval == QLA_SUCCESS) {
3757 wlen = (uint16_t)(ha->fw_transfer_size >> 1);
3758 if (wlen > risc_size)
3759 wlen = risc_size;
3760
3761 DEBUG7(printk("scsi(%ld): Loading risc segment@ risc "
3762 "addr %x, number of words 0x%x.\n", ha->host_no,
3763 risc_addr, wlen));
3764
3765 for (i = 0; i < wlen; i++)
3766 wcode[i] = swab16(fwcode[i]);
3767
3768 rval = qla2x00_load_ram(ha, ha->request_dma, risc_addr,
3769 wlen);
3770 if (rval) {
3771 DEBUG(printk("scsi(%ld):[ERROR] Failed to load "
3772 "segment %d of firmware\n", ha->host_no,
3773 fragment));
3774 qla_printk(KERN_WARNING, ha,
3775 "[ERROR] Failed to load segment %d of "
3776 "firmware\n", fragment);
3777 break;
3778 }
3779
3780 fwcode += wlen;
3781 risc_addr += wlen;
3782 risc_size -= wlen;
3783 fragment++;
3784 }
3785
3786 /* Next segment. */
3787 seg++;
3788 }
3789 return rval;
3790
3791fail_fw_integrity:
3792 return QLA_FUNCTION_FAILED;
3793}
3794
3795int
3796qla24xx_load_risc(scsi_qla_host_t *ha, uint32_t *srisc_addr)
3647{ 3797{
3648 int rval; 3798 int rval;
3649 int segments, fragment; 3799 int segments, fragment;
@@ -3651,14 +3801,13 @@ qla24xx_load_risc_hotplug(scsi_qla_host_t *ha, uint32_t *srisc_addr)
3651 uint32_t risc_addr; 3801 uint32_t risc_addr;
3652 uint32_t risc_size; 3802 uint32_t risc_size;
3653 uint32_t i; 3803 uint32_t i;
3654 const struct firmware *fw_entry; 3804 struct fw_blob *blob;
3655 uint32_t *fwcode, fwclen; 3805 uint32_t *fwcode, fwclen;
3656 3806
3657 if (request_firmware(&fw_entry, ha->brd_info->fw_fname, 3807 /* Load firmware blob. */
3658 &ha->pdev->dev)) { 3808 blob = qla2x00_request_firmware(ha);
3659 qla_printk(KERN_ERR, ha, 3809 if (!blob) {
3660 "Firmware image file not available: '%s'\n", 3810 qla_printk(KERN_ERR, ha, "Firmware image unavailable.\n");
3661 ha->brd_info->fw_fname);
3662 return QLA_FUNCTION_FAILED; 3811 return QLA_FUNCTION_FAILED;
3663 } 3812 }
3664 3813
@@ -3667,14 +3816,14 @@ qla24xx_load_risc_hotplug(scsi_qla_host_t *ha, uint32_t *srisc_addr)
3667 segments = FA_RISC_CODE_SEGMENTS; 3816 segments = FA_RISC_CODE_SEGMENTS;
3668 dcode = (uint32_t *)ha->request_ring; 3817 dcode = (uint32_t *)ha->request_ring;
3669 *srisc_addr = 0; 3818 *srisc_addr = 0;
3670 fwcode = (uint32_t *)fw_entry->data; 3819 fwcode = (uint32_t *)blob->fw->data;
3671 fwclen = 0; 3820 fwclen = 0;
3672 3821
3673 /* Validate firmware image by checking version. */ 3822 /* Validate firmware image by checking version. */
3674 if (fw_entry->size < 8 * sizeof(uint32_t)) { 3823 if (blob->fw->size < 8 * sizeof(uint32_t)) {
3675 qla_printk(KERN_WARNING, ha, 3824 qla_printk(KERN_WARNING, ha,
3676 "Unable to verify integrity of flash firmware image " 3825 "Unable to verify integrity of firmware image (%Zd)!\n",
3677 "(%Zd)!\n", fw_entry->size); 3826 blob->fw->size);
3678 goto fail_fw_integrity; 3827 goto fail_fw_integrity;
3679 } 3828 }
3680 for (i = 0; i < 4; i++) 3829 for (i = 0; i < 4; i++)
@@ -3684,7 +3833,7 @@ qla24xx_load_risc_hotplug(scsi_qla_host_t *ha, uint32_t *srisc_addr)
3684 (dcode[0] == 0 && dcode[1] == 0 && dcode[2] == 0 && 3833 (dcode[0] == 0 && dcode[1] == 0 && dcode[2] == 0 &&
3685 dcode[3] == 0)) { 3834 dcode[3] == 0)) {
3686 qla_printk(KERN_WARNING, ha, 3835 qla_printk(KERN_WARNING, ha,
3687 "Unable to verify integrity of flash firmware image!\n"); 3836 "Unable to verify integrity of firmware image!\n");
3688 qla_printk(KERN_WARNING, ha, 3837 qla_printk(KERN_WARNING, ha,
3689 "Firmware data: %08x %08x %08x %08x!\n", dcode[0], 3838 "Firmware data: %08x %08x %08x %08x!\n", dcode[0],
3690 dcode[1], dcode[2], dcode[3]); 3839 dcode[1], dcode[2], dcode[3]);
@@ -3698,10 +3847,11 @@ qla24xx_load_risc_hotplug(scsi_qla_host_t *ha, uint32_t *srisc_addr)
3698 3847
3699 /* Validate firmware image size. */ 3848 /* Validate firmware image size. */
3700 fwclen += risc_size * sizeof(uint32_t); 3849 fwclen += risc_size * sizeof(uint32_t);
3701 if (fw_entry->size < fwclen) { 3850 if (blob->fw->size < fwclen) {
3702 qla_printk(KERN_WARNING, ha, 3851 qla_printk(KERN_WARNING, ha,
3703 "Unable to verify integrity of flash firmware " 3852 "Unable to verify integrity of firmware image "
3704 "image (%Zd)!\n", fw_entry->size); 3853 "(%Zd)!\n", blob->fw->size);
3854
3705 goto fail_fw_integrity; 3855 goto fail_fw_integrity;
3706 } 3856 }
3707 3857
@@ -3739,13 +3889,9 @@ qla24xx_load_risc_hotplug(scsi_qla_host_t *ha, uint32_t *srisc_addr)
3739 /* Next segment. */ 3889 /* Next segment. */
3740 segments--; 3890 segments--;
3741 } 3891 }
3742
3743 release_firmware(fw_entry);
3744 return rval; 3892 return rval;
3745 3893
3746fail_fw_integrity: 3894fail_fw_integrity:
3747
3748 release_firmware(fw_entry);
3749 return QLA_FUNCTION_FAILED; 3895 return QLA_FUNCTION_FAILED;
3750
3751} 3896}
3897#endif
diff --git a/drivers/scsi/qla2xxx/qla_os.c b/drivers/scsi/qla2xxx/qla_os.c
index c58c9d97b041..24304300d7b5 100644
--- a/drivers/scsi/qla2xxx/qla_os.c
+++ b/drivers/scsi/qla2xxx/qla_os.c
@@ -54,10 +54,12 @@ module_param(ql2xloginretrycount, int, S_IRUGO|S_IRUSR);
54MODULE_PARM_DESC(ql2xloginretrycount, 54MODULE_PARM_DESC(ql2xloginretrycount,
55 "Specify an alternate value for the NVRAM login retry count."); 55 "Specify an alternate value for the NVRAM login retry count.");
56 56
57int ql2xfwloadbin=1; 57#if defined(CONFIG_SCSI_QLA2XXX_EMBEDDED_FIRMWARE)
58module_param(ql2xfwloadbin, int, S_IRUGO|S_IRUSR); 58int ql2xfwloadflash;
59MODULE_PARM_DESC(ql2xfwloadbin, 59module_param(ql2xfwloadflash, int, S_IRUGO|S_IRUSR);
60 "Load ISP2xxx firmware image via hotplug."); 60MODULE_PARM_DESC(ql2xfwloadflash,
61 "Load ISP24xx firmware image from FLASH (onboard memory).");
62#endif
61 63
62static void qla2x00_free_device(scsi_qla_host_t *); 64static void qla2x00_free_device(scsi_qla_host_t *);
63 65
@@ -1261,12 +1263,16 @@ int qla2x00_probe_one(struct pci_dev *pdev, struct qla_board_info *brd_info)
1261 char pci_info[20]; 1263 char pci_info[20];
1262 char fw_str[30]; 1264 char fw_str[30];
1263 fc_port_t *fcport; 1265 fc_port_t *fcport;
1266 struct scsi_host_template *sht;
1264 1267
1265 if (pci_enable_device(pdev)) 1268 if (pci_enable_device(pdev))
1266 goto probe_out; 1269 goto probe_out;
1267 1270
1268 host = scsi_host_alloc(brd_info->sht ? brd_info->sht: 1271 sht = &qla2x00_driver_template;
1269 &qla2x00_driver_template, sizeof(scsi_qla_host_t)); 1272 if (pdev->device == PCI_DEVICE_ID_QLOGIC_ISP2422 ||
1273 pdev->device == PCI_DEVICE_ID_QLOGIC_ISP2432)
1274 sht = &qla24xx_driver_template;
1275 host = scsi_host_alloc(sht, sizeof(scsi_qla_host_t));
1270 if (host == NULL) { 1276 if (host == NULL) {
1271 printk(KERN_WARNING 1277 printk(KERN_WARNING
1272 "qla2xxx: Couldn't allocate host from scsi layer!\n"); 1278 "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)
1291 goto probe_failed; 1297 goto probe_failed;
1292 1298
1293 qla_printk(KERN_INFO, ha, 1299 qla_printk(KERN_INFO, ha,
1294 "Found an %s, irq %d, iobase 0x%p\n", ha->brd_info->isp_name, 1300 "Found an ISP%04X, irq %d, iobase 0x%p\n", pdev->device, pdev->irq,
1295 pdev->irq, ha->iobase); 1301 ha->iobase);
1296 1302
1297 spin_lock_init(&ha->hardware_lock); 1303 spin_lock_init(&ha->hardware_lock);
1298 1304
@@ -1368,9 +1374,11 @@ int qla2x00_probe_one(struct pci_dev *pdev, struct qla_board_info *brd_info)
1368 ha->isp_ops.reset_adapter = qla24xx_reset_adapter; 1374 ha->isp_ops.reset_adapter = qla24xx_reset_adapter;
1369 ha->isp_ops.nvram_config = qla24xx_nvram_config; 1375 ha->isp_ops.nvram_config = qla24xx_nvram_config;
1370 ha->isp_ops.update_fw_options = qla24xx_update_fw_options; 1376 ha->isp_ops.update_fw_options = qla24xx_update_fw_options;
1371 ha->isp_ops.load_risc = qla24xx_load_risc_flash; 1377 ha->isp_ops.load_risc = qla24xx_load_risc;
1372 if (ql2xfwloadbin) 1378#if defined(CONFIG_SCSI_QLA2XXX_EMBEDDED_FIRMWARE)
1373 ha->isp_ops.load_risc = qla24xx_load_risc_hotplug; 1379 if (ql2xfwloadflash)
1380 ha->isp_ops.load_risc = qla24xx_load_risc_flash;
1381#endif
1374 ha->isp_ops.pci_info_str = qla24xx_pci_info_str; 1382 ha->isp_ops.pci_info_str = qla24xx_pci_info_str;
1375 ha->isp_ops.fw_version_str = qla24xx_fw_version_str; 1383 ha->isp_ops.fw_version_str = qla24xx_fw_version_str;
1376 ha->isp_ops.intr_handler = qla24xx_intr_handler; 1384 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)
1531 qla_printk(KERN_INFO, ha, "\n" 1539 qla_printk(KERN_INFO, ha, "\n"
1532 " QLogic Fibre Channel HBA Driver: %s\n" 1540 " QLogic Fibre Channel HBA Driver: %s\n"
1533 " QLogic %s - %s\n" 1541 " QLogic %s - %s\n"
1534 " %s: %s @ %s hdma%c, host#=%ld, fw=%s\n", qla2x00_version_str, 1542 " ISP%04X: %s @ %s hdma%c, host#=%ld, fw=%s\n",
1535 ha->model_number, ha->model_desc ? ha->model_desc: "", 1543 qla2x00_version_str, ha->model_number,
1536 ha->brd_info->isp_name, ha->isp_ops.pci_info_str(ha, pci_info), 1544 ha->model_desc ? ha->model_desc: "", pdev->device,
1537 pci_name(pdev), ha->flags.enable_64bit_addressing ? '+': '-', 1545 ha->isp_ops.pci_info_str(ha, pci_info), pci_name(pdev),
1538 ha->host_no, ha->isp_ops.fw_version_str(ha, fw_str)); 1546 ha->flags.enable_64bit_addressing ? '+': '-', ha->host_no,
1547 ha->isp_ops.fw_version_str(ha, fw_str));
1539 1548
1540 /* Go with fc_rport registration. */ 1549 /* Go with fc_rport registration. */
1541 list_for_each_entry(fcport, &ha->fcports, list) 1550 list_for_each_entry(fcport, &ha->fcports, list)
@@ -2483,45 +2492,115 @@ qla2x00_down_timeout(struct semaphore *sema, unsigned long timeout)
2483 return -ETIMEDOUT; 2492 return -ETIMEDOUT;
2484} 2493}
2485 2494
2486static struct qla_board_info qla_board_tbl[] = { 2495#if defined(CONFIG_SCSI_QLA2XXX_EMBEDDED_FIRMWARE)
2487 { 2496
2488 .drv_name = "qla2400", 2497#define qla2x00_release_firmware() do { } while (0)
2489 .isp_name = "ISP2422", 2498#define qla2x00_pci_module_init() (0)
2490 .fw_fname = "ql2400_fw.bin", 2499#define qla2x00_pci_module_exit() do { } while (0)
2491 .sht = &qla24xx_driver_template, 2500
2492 }, 2501#else /* !defined(CONFIG_SCSI_QLA2XXX_EMBEDDED_FIRMWARE) */
2493 { 2502
2494 .drv_name = "qla2400", 2503/* Firmware interface routines. */
2495 .isp_name = "ISP2432", 2504
2496 .fw_fname = "ql2400_fw.bin", 2505#define FW_BLOBS 6
2497 .sht = &qla24xx_driver_template, 2506#define FW_ISP21XX 0
2498 }, 2507#define FW_ISP22XX 1
2508#define FW_ISP2300 2
2509#define FW_ISP2322 3
2510#define FW_ISP63XX 4
2511#define FW_ISP24XX 5
2512
2513static DECLARE_MUTEX(qla_fw_lock);
2514
2515static struct fw_blob qla_fw_blobs[FW_BLOBS] = {
2516 { .name = "ql2100_fw.bin", .segs = { 0x1000, 0 }, },
2517 { .name = "ql2200_fw.bin", .segs = { 0x1000, 0 }, },
2518 { .name = "ql2300_fw.bin", .segs = { 0x800, 0 }, },
2519 { .name = "ql2322_fw.bin", .segs = { 0x800, 0x1c000, 0x1e000, 0 }, },
2520 { .name = "ql6312_fw.bin", .segs = { 0x800, 0 }, },
2521 { .name = "ql2400_fw.bin", },
2522};
2523
2524struct fw_blob *
2525qla2x00_request_firmware(scsi_qla_host_t *ha)
2526{
2527 struct fw_blob *blob;
2528
2529 blob = NULL;
2530 if (IS_QLA2100(ha)) {
2531 blob = &qla_fw_blobs[FW_ISP21XX];
2532 } else if (IS_QLA2200(ha)) {
2533 blob = &qla_fw_blobs[FW_ISP22XX];
2534 } else if (IS_QLA2300(ha) || IS_QLA2312(ha)) {
2535 blob = &qla_fw_blobs[FW_ISP2300];
2536 } else if (IS_QLA2322(ha)) {
2537 blob = &qla_fw_blobs[FW_ISP2322];
2538 } else if (IS_QLA6312(ha) || IS_QLA6322(ha)) {
2539 blob = &qla_fw_blobs[FW_ISP63XX];
2540 } else if (IS_QLA24XX(ha)) {
2541 blob = &qla_fw_blobs[FW_ISP24XX];
2542 }
2543
2544 down(&qla_fw_lock);
2545 if (blob->fw)
2546 goto out;
2547
2548 if (request_firmware(&blob->fw, blob->name, &ha->pdev->dev)) {
2549 DEBUG2(printk("scsi(%ld): Failed to load firmware image "
2550 "(%s).\n", ha->host_no, blob->name));
2551 blob->fw = NULL;
2552 blob = NULL;
2553 goto out;
2554 }
2555
2556out:
2557 up(&qla_fw_lock);
2558 return blob;
2559}
2560
2561static void
2562qla2x00_release_firmware(void)
2563{
2564 int idx;
2565
2566 down(&qla_fw_lock);
2567 for (idx = 0; idx < FW_BLOBS; idx++)
2568 if (qla_fw_blobs[idx].fw)
2569 release_firmware(qla_fw_blobs[idx].fw);
2570 up(&qla_fw_lock);
2571}
2572
2573static struct qla_board_info qla_board_tbl = {
2574 .drv_name = "qla2xxx",
2499}; 2575};
2500 2576
2501static struct pci_device_id qla2xxx_pci_tbl[] = { 2577static struct pci_device_id qla2xxx_pci_tbl[] = {
2502 { 2578 { PCI_VENDOR_ID_QLOGIC, PCI_DEVICE_ID_QLOGIC_ISP2100,
2503 .vendor = PCI_VENDOR_ID_QLOGIC, 2579 PCI_ANY_ID, PCI_ANY_ID, },
2504 .device = PCI_DEVICE_ID_QLOGIC_ISP2422, 2580 { PCI_VENDOR_ID_QLOGIC, PCI_DEVICE_ID_QLOGIC_ISP2200,
2505 .subvendor = PCI_ANY_ID, 2581 PCI_ANY_ID, PCI_ANY_ID, },
2506 .subdevice = PCI_ANY_ID, 2582 { PCI_VENDOR_ID_QLOGIC, PCI_DEVICE_ID_QLOGIC_ISP2300,
2507 .driver_data = (unsigned long)&qla_board_tbl[0], 2583 PCI_ANY_ID, PCI_ANY_ID, },
2508 }, 2584 { PCI_VENDOR_ID_QLOGIC, PCI_DEVICE_ID_QLOGIC_ISP2312,
2509 { 2585 PCI_ANY_ID, PCI_ANY_ID, },
2510 .vendor = PCI_VENDOR_ID_QLOGIC, 2586 { PCI_VENDOR_ID_QLOGIC, PCI_DEVICE_ID_QLOGIC_ISP2322,
2511 .device = PCI_DEVICE_ID_QLOGIC_ISP2432, 2587 PCI_ANY_ID, PCI_ANY_ID, },
2512 .subvendor = PCI_ANY_ID, 2588 { PCI_VENDOR_ID_QLOGIC, PCI_DEVICE_ID_QLOGIC_ISP6312,
2513 .subdevice = PCI_ANY_ID, 2589 PCI_ANY_ID, PCI_ANY_ID, },
2514 .driver_data = (unsigned long)&qla_board_tbl[1], 2590 { PCI_VENDOR_ID_QLOGIC, PCI_DEVICE_ID_QLOGIC_ISP6322,
2515 }, 2591 PCI_ANY_ID, PCI_ANY_ID, },
2516 {0, 0}, 2592 { PCI_VENDOR_ID_QLOGIC, PCI_DEVICE_ID_QLOGIC_ISP2422,
2593 PCI_ANY_ID, PCI_ANY_ID, },
2594 { PCI_VENDOR_ID_QLOGIC, PCI_DEVICE_ID_QLOGIC_ISP2432,
2595 PCI_ANY_ID, PCI_ANY_ID, },
2596 { 0 },
2517}; 2597};
2518MODULE_DEVICE_TABLE(pci, qla2xxx_pci_tbl); 2598MODULE_DEVICE_TABLE(pci, qla2xxx_pci_tbl);
2519 2599
2520static int __devinit 2600static int __devinit
2521qla2xxx_probe_one(struct pci_dev *pdev, const struct pci_device_id *id) 2601qla2xxx_probe_one(struct pci_dev *pdev, const struct pci_device_id *id)
2522{ 2602{
2523 return qla2x00_probe_one(pdev, 2603 return qla2x00_probe_one(pdev, &qla_board_tbl);
2524 (struct qla_board_info *)id->driver_data);
2525} 2604}
2526 2605
2527static void __devexit 2606static void __devexit
@@ -2532,11 +2611,28 @@ qla2xxx_remove_one(struct pci_dev *pdev)
2532 2611
2533static struct pci_driver qla2xxx_pci_driver = { 2612static struct pci_driver qla2xxx_pci_driver = {
2534 .name = "qla2xxx", 2613 .name = "qla2xxx",
2614 .driver = {
2615 .owner = THIS_MODULE,
2616 },
2535 .id_table = qla2xxx_pci_tbl, 2617 .id_table = qla2xxx_pci_tbl,
2536 .probe = qla2xxx_probe_one, 2618 .probe = qla2xxx_probe_one,
2537 .remove = __devexit_p(qla2xxx_remove_one), 2619 .remove = __devexit_p(qla2xxx_remove_one),
2538}; 2620};
2539 2621
2622static inline int
2623qla2x00_pci_module_init(void)
2624{
2625 return pci_module_init(&qla2xxx_pci_driver);
2626}
2627
2628static inline void
2629qla2x00_pci_module_exit(void)
2630{
2631 pci_unregister_driver(&qla2xxx_pci_driver);
2632}
2633
2634#endif
2635
2540/** 2636/**
2541 * qla2x00_module_init - Module initialization. 2637 * qla2x00_module_init - Module initialization.
2542 **/ 2638 **/
@@ -2556,6 +2652,9 @@ qla2x00_module_init(void)
2556 2652
2557 /* Derive version string. */ 2653 /* Derive version string. */
2558 strcpy(qla2x00_version_str, QLA2XXX_VERSION); 2654 strcpy(qla2x00_version_str, QLA2XXX_VERSION);
2655#if defined(CONFIG_SCSI_QLA2XXX_EMBEDDED_FIRMWARE)
2656 strcat(qla2x00_version_str, "-fw");
2657#endif
2559#if DEBUG_QLA2100 2658#if DEBUG_QLA2100
2560 strcat(qla2x00_version_str, "-debug"); 2659 strcat(qla2x00_version_str, "-debug");
2561#endif 2660#endif
@@ -2565,7 +2664,7 @@ qla2x00_module_init(void)
2565 return -ENODEV; 2664 return -ENODEV;
2566 2665
2567 printk(KERN_INFO "QLogic Fibre Channel HBA Driver\n"); 2666 printk(KERN_INFO "QLogic Fibre Channel HBA Driver\n");
2568 ret = pci_module_init(&qla2xxx_pci_driver); 2667 ret = qla2x00_pci_module_init();
2569 if (ret) { 2668 if (ret) {
2570 kmem_cache_destroy(srb_cachep); 2669 kmem_cache_destroy(srb_cachep);
2571 fc_release_transport(qla2xxx_transport_template); 2670 fc_release_transport(qla2xxx_transport_template);
@@ -2579,7 +2678,8 @@ qla2x00_module_init(void)
2579static void __exit 2678static void __exit
2580qla2x00_module_exit(void) 2679qla2x00_module_exit(void)
2581{ 2680{
2582 pci_unregister_driver(&qla2xxx_pci_driver); 2681 qla2x00_pci_module_exit();
2682 qla2x00_release_firmware();
2583 kmem_cache_destroy(srb_cachep); 2683 kmem_cache_destroy(srb_cachep);
2584 fc_release_transport(qla2xxx_transport_template); 2684 fc_release_transport(qla2xxx_transport_template);
2585} 2685}
diff --git a/drivers/scsi/raid_class.c b/drivers/scsi/raid_class.c
index 5b1c12041a4f..5ec5f44602ac 100644
--- a/drivers/scsi/raid_class.c
+++ b/drivers/scsi/raid_class.c
@@ -115,7 +115,7 @@ static DECLARE_TRANSPORT_CLASS(raid_class,
115 raid_remove, 115 raid_remove,
116 NULL); 116 NULL);
117 117
118static struct { 118static const struct {
119 enum raid_state value; 119 enum raid_state value;
120 char *name; 120 char *name;
121} raid_states[] = { 121} raid_states[] = {
diff --git a/drivers/scsi/scsi_devinfo.c b/drivers/scsi/scsi_devinfo.c
index e69477d1889b..f01ec0a7c506 100644
--- a/drivers/scsi/scsi_devinfo.c
+++ b/drivers/scsi/scsi_devinfo.c
@@ -354,8 +354,9 @@ static int scsi_dev_info_list_add_str(char *dev_list)
354 * @model, if found, return the matching flags value, else return 354 * @model, if found, return the matching flags value, else return
355 * the host or global default settings. 355 * the host or global default settings.
356 **/ 356 **/
357int scsi_get_device_flags(struct scsi_device *sdev, unsigned char *vendor, 357int scsi_get_device_flags(struct scsi_device *sdev,
358 unsigned char *model) 358 const unsigned char *vendor,
359 const unsigned char *model)
359{ 360{
360 struct scsi_dev_info_list *devinfo; 361 struct scsi_dev_info_list *devinfo;
361 unsigned int bflags; 362 unsigned int bflags;
diff --git a/drivers/scsi/scsi_error.c b/drivers/scsi/scsi_error.c
index c0ae9e965f6f..a2333d2c7af0 100644
--- a/drivers/scsi/scsi_error.c
+++ b/drivers/scsi/scsi_error.c
@@ -1320,23 +1320,6 @@ int scsi_decide_disposition(struct scsi_cmnd *scmd)
1320} 1320}
1321 1321
1322/** 1322/**
1323 * scsi_eh_lock_done - done function for eh door lock request
1324 * @scmd: SCSI command block for the door lock request
1325 *
1326 * Notes:
1327 * We completed the asynchronous door lock request, and it has either
1328 * locked the door or failed. We must free the command structures
1329 * associated with this request.
1330 **/
1331static void scsi_eh_lock_done(struct scsi_cmnd *scmd)
1332{
1333 struct scsi_request *sreq = scmd->sc_request;
1334
1335 scsi_release_request(sreq);
1336}
1337
1338
1339/**
1340 * scsi_eh_lock_door - Prevent medium removal for the specified device 1323 * scsi_eh_lock_door - Prevent medium removal for the specified device
1341 * @sdev: SCSI device to prevent medium removal 1324 * @sdev: SCSI device to prevent medium removal
1342 * 1325 *
@@ -1358,29 +1341,17 @@ static void scsi_eh_lock_done(struct scsi_cmnd *scmd)
1358 **/ 1341 **/
1359static void scsi_eh_lock_door(struct scsi_device *sdev) 1342static void scsi_eh_lock_door(struct scsi_device *sdev)
1360{ 1343{
1361 struct scsi_request *sreq = scsi_allocate_request(sdev, GFP_KERNEL); 1344 unsigned char cmnd[MAX_COMMAND_SIZE];
1362 1345
1363 if (unlikely(!sreq)) { 1346 cmnd[0] = ALLOW_MEDIUM_REMOVAL;
1364 printk(KERN_ERR "%s: request allocate failed," 1347 cmnd[1] = 0;
1365 "prevent media removal cmd not sent\n", __FUNCTION__); 1348 cmnd[2] = 0;
1366 return; 1349 cmnd[3] = 0;
1367 } 1350 cmnd[4] = SCSI_REMOVAL_PREVENT;
1351 cmnd[5] = 0;
1368 1352
1369 sreq->sr_cmnd[0] = ALLOW_MEDIUM_REMOVAL; 1353 scsi_execute_async(sdev, cmnd, DMA_NONE, NULL, 0, 0, 10 * HZ,
1370 sreq->sr_cmnd[1] = 0; 1354 5, NULL, NULL, GFP_KERNEL);
1371 sreq->sr_cmnd[2] = 0;
1372 sreq->sr_cmnd[3] = 0;
1373 sreq->sr_cmnd[4] = SCSI_REMOVAL_PREVENT;
1374 sreq->sr_cmnd[5] = 0;
1375 sreq->sr_data_direction = DMA_NONE;
1376 sreq->sr_bufflen = 0;
1377 sreq->sr_buffer = NULL;
1378 sreq->sr_allowed = 5;
1379 sreq->sr_done = scsi_eh_lock_done;
1380 sreq->sr_timeout_per_command = 10 * HZ;
1381 sreq->sr_cmd_len = COMMAND_SIZE(sreq->sr_cmnd[0]);
1382
1383 scsi_insert_special_req(sreq, 1);
1384} 1355}
1385 1356
1386 1357
diff --git a/drivers/scsi/scsi_lib.c b/drivers/scsi/scsi_lib.c
index dc249cb970ea..a7f3f0c84db7 100644
--- a/drivers/scsi/scsi_lib.c
+++ b/drivers/scsi/scsi_lib.c
@@ -63,39 +63,6 @@ static struct scsi_host_sg_pool scsi_sg_pools[] = {
63}; 63};
64#undef SP 64#undef SP
65 65
66
67/*
68 * Function: scsi_insert_special_req()
69 *
70 * Purpose: Insert pre-formed request into request queue.
71 *
72 * Arguments: sreq - request that is ready to be queued.
73 * at_head - boolean. True if we should insert at head
74 * of queue, false if we should insert at tail.
75 *
76 * Lock status: Assumed that lock is not held upon entry.
77 *
78 * Returns: Nothing
79 *
80 * Notes: This function is called from character device and from
81 * ioctl types of functions where the caller knows exactly
82 * what SCSI command needs to be issued. The idea is that
83 * we merely inject the command into the queue (at the head
84 * for now), and then call the queue request function to actually
85 * process it.
86 */
87int scsi_insert_special_req(struct scsi_request *sreq, int at_head)
88{
89 /*
90 * Because users of this function are apt to reuse requests with no
91 * modification, we have to sanitise the request flags here
92 */
93 sreq->sr_request->flags &= ~REQ_DONTPREP;
94 blk_insert_request(sreq->sr_device->request_queue, sreq->sr_request,
95 at_head, sreq);
96 return 0;
97}
98
99static void scsi_run_queue(struct request_queue *q); 66static void scsi_run_queue(struct request_queue *q);
100 67
101/* 68/*
@@ -249,8 +216,13 @@ void scsi_do_req(struct scsi_request *sreq, const void *cmnd,
249 216
250 /* 217 /*
251 * head injection *required* here otherwise quiesce won't work 218 * head injection *required* here otherwise quiesce won't work
219 *
220 * Because users of this function are apt to reuse requests with no
221 * modification, we have to sanitise the request flags here
252 */ 222 */
253 scsi_insert_special_req(sreq, 1); 223 sreq->sr_request->flags &= ~REQ_DONTPREP;
224 blk_insert_request(sreq->sr_device->request_queue, sreq->sr_request,
225 1, sreq);
254} 226}
255EXPORT_SYMBOL(scsi_do_req); 227EXPORT_SYMBOL(scsi_do_req);
256 228
@@ -287,6 +259,7 @@ int scsi_execute(struct scsi_device *sdev, const unsigned char *cmd,
287 memcpy(req->cmd, cmd, req->cmd_len); 259 memcpy(req->cmd, cmd, req->cmd_len);
288 req->sense = sense; 260 req->sense = sense;
289 req->sense_len = 0; 261 req->sense_len = 0;
262 req->retries = retries;
290 req->timeout = timeout; 263 req->timeout = timeout;
291 req->flags |= flags | REQ_BLOCK_PC | REQ_SPECIAL | REQ_QUIET; 264 req->flags |= flags | REQ_BLOCK_PC | REQ_SPECIAL | REQ_QUIET;
292 265
@@ -327,6 +300,200 @@ int scsi_execute_req(struct scsi_device *sdev, const unsigned char *cmd,
327} 300}
328EXPORT_SYMBOL(scsi_execute_req); 301EXPORT_SYMBOL(scsi_execute_req);
329 302
303struct scsi_io_context {
304 void *data;
305 void (*done)(void *data, char *sense, int result, int resid);
306 char sense[SCSI_SENSE_BUFFERSIZE];
307};
308
309static kmem_cache_t *scsi_io_context_cache;
310
311static void scsi_end_async(struct request *req)
312{
313 struct scsi_io_context *sioc = req->end_io_data;
314
315 if (sioc->done)
316 sioc->done(sioc->data, sioc->sense, req->errors, req->data_len);
317
318 kmem_cache_free(scsi_io_context_cache, sioc);
319 __blk_put_request(req->q, req);
320}
321
322static int scsi_merge_bio(struct request *rq, struct bio *bio)
323{
324 struct request_queue *q = rq->q;
325
326 bio->bi_flags &= ~(1 << BIO_SEG_VALID);
327 if (rq_data_dir(rq) == WRITE)
328 bio->bi_rw |= (1 << BIO_RW);
329 blk_queue_bounce(q, &bio);
330
331 if (!rq->bio)
332 blk_rq_bio_prep(q, rq, bio);
333 else if (!q->back_merge_fn(q, rq, bio))
334 return -EINVAL;
335 else {
336 rq->biotail->bi_next = bio;
337 rq->biotail = bio;
338 rq->hard_nr_sectors += bio_sectors(bio);
339 rq->nr_sectors = rq->hard_nr_sectors;
340 }
341
342 return 0;
343}
344
345static int scsi_bi_endio(struct bio *bio, unsigned int bytes_done, int error)
346{
347 if (bio->bi_size)
348 return 1;
349
350 bio_put(bio);
351 return 0;
352}
353
354/**
355 * scsi_req_map_sg - map a scatterlist into a request
356 * @rq: request to fill
357 * @sg: scatterlist
358 * @nsegs: number of elements
359 * @bufflen: len of buffer
360 * @gfp: memory allocation flags
361 *
362 * scsi_req_map_sg maps a scatterlist into a request so that the
363 * request can be sent to the block layer. We do not trust the scatterlist
364 * sent to use, as some ULDs use that struct to only organize the pages.
365 */
366static int scsi_req_map_sg(struct request *rq, struct scatterlist *sgl,
367 int nsegs, unsigned bufflen, gfp_t gfp)
368{
369 struct request_queue *q = rq->q;
370 int nr_pages = (bufflen + PAGE_SIZE - 1) >> PAGE_SHIFT;
371 unsigned int data_len = 0, len, bytes, off;
372 struct page *page;
373 struct bio *bio = NULL;
374 int i, err, nr_vecs = 0;
375
376 for (i = 0; i < nsegs; i++) {
377 page = sgl[i].page;
378 off = sgl[i].offset;
379 len = sgl[i].length;
380 data_len += len;
381
382 while (len > 0) {
383 bytes = min_t(unsigned int, len, PAGE_SIZE - off);
384
385 if (!bio) {
386 nr_vecs = min_t(int, BIO_MAX_PAGES, nr_pages);
387 nr_pages -= nr_vecs;
388
389 bio = bio_alloc(gfp, nr_vecs);
390 if (!bio) {
391 err = -ENOMEM;
392 goto free_bios;
393 }
394 bio->bi_end_io = scsi_bi_endio;
395 }
396
397 if (bio_add_pc_page(q, bio, page, bytes, off) !=
398 bytes) {
399 bio_put(bio);
400 err = -EINVAL;
401 goto free_bios;
402 }
403
404 if (bio->bi_vcnt >= nr_vecs) {
405 err = scsi_merge_bio(rq, bio);
406 if (err) {
407 bio_endio(bio, bio->bi_size, 0);
408 goto free_bios;
409 }
410 bio = NULL;
411 }
412
413 page++;
414 len -= bytes;
415 off = 0;
416 }
417 }
418
419 rq->buffer = rq->data = NULL;
420 rq->data_len = data_len;
421 return 0;
422
423free_bios:
424 while ((bio = rq->bio) != NULL) {
425 rq->bio = bio->bi_next;
426 /*
427 * call endio instead of bio_put incase it was bounced
428 */
429 bio_endio(bio, bio->bi_size, 0);
430 }
431
432 return err;
433}
434
435/**
436 * scsi_execute_async - insert request
437 * @sdev: scsi device
438 * @cmd: scsi command
439 * @data_direction: data direction
440 * @buffer: data buffer (this can be a kernel buffer or scatterlist)
441 * @bufflen: len of buffer
442 * @use_sg: if buffer is a scatterlist this is the number of elements
443 * @timeout: request timeout in seconds
444 * @retries: number of times to retry request
445 * @flags: or into request flags
446 **/
447int scsi_execute_async(struct scsi_device *sdev, const unsigned char *cmd,
448 int data_direction, void *buffer, unsigned bufflen,
449 int use_sg, int timeout, int retries, void *privdata,
450 void (*done)(void *, char *, int, int), gfp_t gfp)
451{
452 struct request *req;
453 struct scsi_io_context *sioc;
454 int err = 0;
455 int write = (data_direction == DMA_TO_DEVICE);
456
457 sioc = kmem_cache_alloc(scsi_io_context_cache, gfp);
458 if (!sioc)
459 return DRIVER_ERROR << 24;
460 memset(sioc, 0, sizeof(*sioc));
461
462 req = blk_get_request(sdev->request_queue, write, gfp);
463 if (!req)
464 goto free_sense;
465 req->flags |= REQ_BLOCK_PC | REQ_QUIET;
466
467 if (use_sg)
468 err = scsi_req_map_sg(req, buffer, use_sg, bufflen, gfp);
469 else if (bufflen)
470 err = blk_rq_map_kern(req->q, req, buffer, bufflen, gfp);
471
472 if (err)
473 goto free_req;
474
475 req->cmd_len = COMMAND_SIZE(cmd[0]);
476 memcpy(req->cmd, cmd, req->cmd_len);
477 req->sense = sioc->sense;
478 req->sense_len = 0;
479 req->timeout = timeout;
480 req->retries = retries;
481 req->end_io_data = sioc;
482
483 sioc->data = privdata;
484 sioc->done = done;
485
486 blk_execute_rq_nowait(req->q, NULL, req, 1, scsi_end_async);
487 return 0;
488
489free_req:
490 blk_put_request(req);
491free_sense:
492 kfree(sioc);
493 return DRIVER_ERROR << 24;
494}
495EXPORT_SYMBOL_GPL(scsi_execute_async);
496
330/* 497/*
331 * Function: scsi_init_cmd_errh() 498 * Function: scsi_init_cmd_errh()
332 * 499 *
@@ -884,7 +1051,8 @@ void scsi_io_completion(struct scsi_cmnd *cmd, unsigned int good_bytes,
884 * system where READ CAPACITY failed, we may have read 1051 * system where READ CAPACITY failed, we may have read
885 * past the end of the disk. 1052 * past the end of the disk.
886 */ 1053 */
887 if (cmd->device->use_10_for_rw && 1054 if ((cmd->device->use_10_for_rw &&
1055 sshdr.asc == 0x20 && sshdr.ascq == 0x00) &&
888 (cmd->cmnd[0] == READ_10 || 1056 (cmd->cmnd[0] == READ_10 ||
889 cmd->cmnd[0] == WRITE_10)) { 1057 cmd->cmnd[0] == WRITE_10)) {
890 cmd->device->use_10_for_rw = 0; 1058 cmd->device->use_10_for_rw = 0;
@@ -1082,10 +1250,16 @@ static int scsi_issue_flush_fn(request_queue_t *q, struct gendisk *disk,
1082static void scsi_generic_done(struct scsi_cmnd *cmd) 1250static void scsi_generic_done(struct scsi_cmnd *cmd)
1083{ 1251{
1084 BUG_ON(!blk_pc_request(cmd->request)); 1252 BUG_ON(!blk_pc_request(cmd->request));
1085 scsi_io_completion(cmd, cmd->result == 0 ? cmd->bufflen : 0, 0); 1253 /*
1254 * This will complete the whole command with uptodate=1 so
1255 * as far as the block layer is concerned the command completed
1256 * successfully. Since this is a REQ_BLOCK_PC command the
1257 * caller should check the request's errors value
1258 */
1259 scsi_io_completion(cmd, cmd->bufflen, 0);
1086} 1260}
1087 1261
1088void scsi_setup_blk_pc_cmnd(struct scsi_cmnd *cmd, int retries) 1262void scsi_setup_blk_pc_cmnd(struct scsi_cmnd *cmd)
1089{ 1263{
1090 struct request *req = cmd->request; 1264 struct request *req = cmd->request;
1091 1265
@@ -1100,7 +1274,7 @@ void scsi_setup_blk_pc_cmnd(struct scsi_cmnd *cmd, int retries)
1100 cmd->sc_data_direction = DMA_FROM_DEVICE; 1274 cmd->sc_data_direction = DMA_FROM_DEVICE;
1101 1275
1102 cmd->transfersize = req->data_len; 1276 cmd->transfersize = req->data_len;
1103 cmd->allowed = retries; 1277 cmd->allowed = req->retries;
1104 cmd->timeout_per_command = req->timeout; 1278 cmd->timeout_per_command = req->timeout;
1105} 1279}
1106EXPORT_SYMBOL_GPL(scsi_setup_blk_pc_cmnd); 1280EXPORT_SYMBOL_GPL(scsi_setup_blk_pc_cmnd);
@@ -1240,7 +1414,7 @@ static int scsi_prep_fn(struct request_queue *q, struct request *req)
1240 goto kill; 1414 goto kill;
1241 } 1415 }
1242 } else { 1416 } else {
1243 scsi_setup_blk_pc_cmnd(cmd, 3); 1417 scsi_setup_blk_pc_cmnd(cmd);
1244 cmd->done = scsi_generic_done; 1418 cmd->done = scsi_generic_done;
1245 } 1419 }
1246 } 1420 }
@@ -1603,6 +1777,14 @@ int __init scsi_init_queue(void)
1603{ 1777{
1604 int i; 1778 int i;
1605 1779
1780 scsi_io_context_cache = kmem_cache_create("scsi_io_context",
1781 sizeof(struct scsi_io_context),
1782 0, 0, NULL, NULL);
1783 if (!scsi_io_context_cache) {
1784 printk(KERN_ERR "SCSI: can't init scsi io context cache\n");
1785 return -ENOMEM;
1786 }
1787
1606 for (i = 0; i < SG_MEMPOOL_NR; i++) { 1788 for (i = 0; i < SG_MEMPOOL_NR; i++) {
1607 struct scsi_host_sg_pool *sgp = scsi_sg_pools + i; 1789 struct scsi_host_sg_pool *sgp = scsi_sg_pools + i;
1608 int size = sgp->size * sizeof(struct scatterlist); 1790 int size = sgp->size * sizeof(struct scatterlist);
@@ -1630,6 +1812,8 @@ void scsi_exit_queue(void)
1630{ 1812{
1631 int i; 1813 int i;
1632 1814
1815 kmem_cache_destroy(scsi_io_context_cache);
1816
1633 for (i = 0; i < SG_MEMPOOL_NR; i++) { 1817 for (i = 0; i < SG_MEMPOOL_NR; i++) {
1634 struct scsi_host_sg_pool *sgp = scsi_sg_pools + i; 1818 struct scsi_host_sg_pool *sgp = scsi_sg_pools + i;
1635 mempool_destroy(sgp->pool); 1819 mempool_destroy(sgp->pool);
diff --git a/drivers/scsi/scsi_priv.h b/drivers/scsi/scsi_priv.h
index d632d9e1493c..f04e7e11f57a 100644
--- a/drivers/scsi/scsi_priv.h
+++ b/drivers/scsi/scsi_priv.h
@@ -40,7 +40,6 @@ extern void scsi_exit_hosts(void);
40extern int scsi_dispatch_cmd(struct scsi_cmnd *cmd); 40extern int scsi_dispatch_cmd(struct scsi_cmnd *cmd);
41extern int scsi_setup_command_freelist(struct Scsi_Host *shost); 41extern int scsi_setup_command_freelist(struct Scsi_Host *shost);
42extern void scsi_destroy_command_freelist(struct Scsi_Host *shost); 42extern void scsi_destroy_command_freelist(struct Scsi_Host *shost);
43extern int scsi_insert_special_req(struct scsi_request *sreq, int);
44extern void scsi_init_cmd_from_req(struct scsi_cmnd *cmd, 43extern void scsi_init_cmd_from_req(struct scsi_cmnd *cmd,
45 struct scsi_request *sreq); 44 struct scsi_request *sreq);
46extern void __scsi_release_request(struct scsi_request *sreq); 45extern void __scsi_release_request(struct scsi_request *sreq);
@@ -57,7 +56,8 @@ static inline void scsi_log_completion(struct scsi_cmnd *cmd, int disposition)
57 56
58/* scsi_devinfo.c */ 57/* scsi_devinfo.c */
59extern int scsi_get_device_flags(struct scsi_device *sdev, 58extern int scsi_get_device_flags(struct scsi_device *sdev,
60 unsigned char *vendor, unsigned char *model); 59 const unsigned char *vendor,
60 const unsigned char *model);
61extern int __init scsi_init_devinfo(void); 61extern int __init scsi_init_devinfo(void);
62extern void scsi_exit_devinfo(void); 62extern void scsi_exit_devinfo(void);
63 63
diff --git a/drivers/scsi/scsi_scan.c b/drivers/scsi/scsi_scan.c
index 4e6709f448e1..05ebb9cef961 100644
--- a/drivers/scsi/scsi_scan.c
+++ b/drivers/scsi/scsi_scan.c
@@ -74,7 +74,7 @@
74#define SCSI_SCAN_TARGET_PRESENT 1 74#define SCSI_SCAN_TARGET_PRESENT 1
75#define SCSI_SCAN_LUN_PRESENT 2 75#define SCSI_SCAN_LUN_PRESENT 2
76 76
77static char *scsi_null_device_strs = "nullnullnullnull"; 77static const char *scsi_null_device_strs = "nullnullnullnull";
78 78
79#define MAX_SCSI_LUNS 512 79#define MAX_SCSI_LUNS 512
80 80
diff --git a/drivers/scsi/scsi_sysfs.c b/drivers/scsi/scsi_sysfs.c
index 46349293de08..15842b1f0f4a 100644
--- a/drivers/scsi/scsi_sysfs.c
+++ b/drivers/scsi/scsi_sysfs.c
@@ -21,7 +21,7 @@
21#include "scsi_priv.h" 21#include "scsi_priv.h"
22#include "scsi_logging.h" 22#include "scsi_logging.h"
23 23
24static struct { 24static const struct {
25 enum scsi_device_state value; 25 enum scsi_device_state value;
26 char *name; 26 char *name;
27} sdev_states[] = { 27} sdev_states[] = {
@@ -48,7 +48,7 @@ const char *scsi_device_state_name(enum scsi_device_state state)
48 return name; 48 return name;
49} 49}
50 50
51static struct { 51static const struct {
52 enum scsi_host_state value; 52 enum scsi_host_state value;
53 char *name; 53 char *name;
54} shost_states[] = { 54} shost_states[] = {
diff --git a/drivers/scsi/scsi_transport_fc.c b/drivers/scsi/scsi_transport_fc.c
index 2a1a99a2ef56..685b997306cf 100644
--- a/drivers/scsi/scsi_transport_fc.c
+++ b/drivers/scsi/scsi_transport_fc.c
@@ -112,7 +112,7 @@ fc_enum_name_search(port_state, fc_port_state, fc_port_state_names)
112 112
113 113
114/* Convert fc_tgtid_binding_type values to ascii string name */ 114/* Convert fc_tgtid_binding_type values to ascii string name */
115static struct { 115static const struct {
116 enum fc_tgtid_binding_type value; 116 enum fc_tgtid_binding_type value;
117 char *name; 117 char *name;
118 int matchlen; 118 int matchlen;
@@ -150,7 +150,7 @@ get_fc_##title##_names(u32 table_key, char *buf) \
150 150
151 151
152/* Convert FC_COS bit values to ascii string name */ 152/* Convert FC_COS bit values to ascii string name */
153static struct { 153static const struct {
154 u32 value; 154 u32 value;
155 char *name; 155 char *name;
156} fc_cos_names[] = { 156} fc_cos_names[] = {
@@ -164,7 +164,7 @@ fc_bitfield_name_search(cos, fc_cos_names)
164 164
165 165
166/* Convert FC_PORTSPEED bit values to ascii string name */ 166/* Convert FC_PORTSPEED bit values to ascii string name */
167static struct { 167static const struct {
168 u32 value; 168 u32 value;
169 char *name; 169 char *name;
170} fc_port_speed_names[] = { 170} fc_port_speed_names[] = {
@@ -190,7 +190,7 @@ show_fc_fc4s (char *buf, u8 *fc4_list)
190 190
191 191
192/* Convert FC_RPORT_ROLE bit values to ascii string name */ 192/* Convert FC_RPORT_ROLE bit values to ascii string name */
193static struct { 193static const struct {
194 u32 value; 194 u32 value;
195 char *name; 195 char *name;
196} fc_remote_port_role_names[] = { 196} fc_remote_port_role_names[] = {
diff --git a/drivers/scsi/scsi_transport_spi.c b/drivers/scsi/scsi_transport_spi.c
index 38a53b5f9e9a..46da6fe10ad5 100644
--- a/drivers/scsi/scsi_transport_spi.c
+++ b/drivers/scsi/scsi_transport_spi.c
@@ -18,6 +18,7 @@
18 * along with this program; if not, write to the Free Software 18 * along with this program; if not, write to the Free Software
19 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA 19 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
20 */ 20 */
21#include <linux/config.h>
21#include <linux/ctype.h> 22#include <linux/ctype.h>
22#include <linux/init.h> 23#include <linux/init.h>
23#include <linux/module.h> 24#include <linux/module.h>
@@ -378,9 +379,7 @@ static CLASS_DEVICE_ATTR(revalidate, S_IWUSR, NULL, store_spi_revalidate);
378 379
379/* Translate the period into ns according to the current spec 380/* Translate the period into ns according to the current spec
380 * for SDTR/PPR messages */ 381 * for SDTR/PPR messages */
381static ssize_t 382static int period_to_str(char *buf, int period)
382show_spi_transport_period_helper(struct class_device *cdev, char *buf,
383 int period)
384{ 383{
385 int len, picosec; 384 int len, picosec;
386 385
@@ -398,6 +397,14 @@ show_spi_transport_period_helper(struct class_device *cdev, char *buf,
398 len = sprint_frac(buf, picosec, 1000); 397 len = sprint_frac(buf, picosec, 1000);
399 } 398 }
400 399
400 return len;
401}
402
403static ssize_t
404show_spi_transport_period_helper(struct class_device *cdev, char *buf,
405 int period)
406{
407 int len = period_to_str(buf, period);
401 buf[len++] = '\n'; 408 buf[len++] = '\n';
402 buf[len] = '\0'; 409 buf[len] = '\0';
403 return len; 410 return len;
@@ -1041,12 +1048,133 @@ void spi_display_xfer_agreement(struct scsi_target *starget)
1041 tp->hold_mcs ? " HMCS" : "", 1048 tp->hold_mcs ? " HMCS" : "",
1042 tmp, tp->offset); 1049 tmp, tp->offset);
1043 } else { 1050 } else {
1044 dev_info(&starget->dev, "%sasynchronous.\n", 1051 dev_info(&starget->dev, "%sasynchronous\n",
1045 tp->width ? "wide " : ""); 1052 tp->width ? "wide " : "");
1046 } 1053 }
1047} 1054}
1048EXPORT_SYMBOL(spi_display_xfer_agreement); 1055EXPORT_SYMBOL(spi_display_xfer_agreement);
1049 1056
1057#ifdef CONFIG_SCSI_CONSTANTS
1058static const char * const one_byte_msgs[] = {
1059/* 0x00 */ "Command Complete", NULL, "Save Pointers",
1060/* 0x03 */ "Restore Pointers", "Disconnect", "Initiator Error",
1061/* 0x06 */ "Abort", "Message Reject", "Nop", "Message Parity Error",
1062/* 0x0a */ "Linked Command Complete", "Linked Command Complete w/flag",
1063/* 0x0c */ "Bus device reset", "Abort Tag", "Clear Queue",
1064/* 0x0f */ "Initiate Recovery", "Release Recovery"
1065};
1066
1067static const char * const two_byte_msgs[] = {
1068/* 0x20 */ "Simple Queue Tag", "Head of Queue Tag", "Ordered Queue Tag",
1069/* 0x23 */ "Ignore Wide Residue"
1070};
1071
1072static const char * const extended_msgs[] = {
1073/* 0x00 */ "Modify Data Pointer", "Synchronous Data Transfer Request",
1074/* 0x02 */ "SCSI-I Extended Identify", "Wide Data Transfer Request",
1075/* 0x04 */ "Parallel Protocol Request"
1076};
1077
1078void print_nego(const unsigned char *msg, int per, int off, int width)
1079{
1080 if (per) {
1081 char buf[20];
1082 period_to_str(buf, msg[per]);
1083 printk("period = %s ns ", buf);
1084 }
1085
1086 if (off)
1087 printk("offset = %d ", msg[off]);
1088 if (width)
1089 printk("width = %d ", 8 << msg[width]);
1090}
1091
1092int spi_print_msg(const unsigned char *msg)
1093{
1094 int len = 0, i;
1095 if (msg[0] == EXTENDED_MESSAGE) {
1096 len = 3 + msg[1];
1097 if (msg[2] < ARRAY_SIZE(extended_msgs))
1098 printk ("%s ", extended_msgs[msg[2]]);
1099 else
1100 printk ("Extended Message, reserved code (0x%02x) ",
1101 (int) msg[2]);
1102 switch (msg[2]) {
1103 case EXTENDED_MODIFY_DATA_POINTER:
1104 printk("pointer = %d", (int) (msg[3] << 24) |
1105 (msg[4] << 16) | (msg[5] << 8) | msg[6]);
1106 break;
1107 case EXTENDED_SDTR:
1108 print_nego(msg, 3, 4, 0);
1109 break;
1110 case EXTENDED_WDTR:
1111 print_nego(msg, 0, 0, 3);
1112 break;
1113 case EXTENDED_PPR:
1114 print_nego(msg, 3, 5, 6);
1115 break;
1116 default:
1117 for (i = 2; i < len; ++i)
1118 printk("%02x ", msg[i]);
1119 }
1120 /* Identify */
1121 } else if (msg[0] & 0x80) {
1122 printk("Identify disconnect %sallowed %s %d ",
1123 (msg[0] & 0x40) ? "" : "not ",
1124 (msg[0] & 0x20) ? "target routine" : "lun",
1125 msg[0] & 0x7);
1126 len = 1;
1127 /* Normal One byte */
1128 } else if (msg[0] < 0x1f) {
1129 if (msg[0] < ARRAY_SIZE(one_byte_msgs))
1130 printk(one_byte_msgs[msg[0]]);
1131 else
1132 printk("reserved (%02x) ", msg[0]);
1133 len = 1;
1134 /* Two byte */
1135 } else if (msg[0] <= 0x2f) {
1136 if ((msg[0] - 0x20) < ARRAY_SIZE(two_byte_msgs))
1137 printk("%s %02x ", two_byte_msgs[msg[0] - 0x20],
1138 msg[1]);
1139 else
1140 printk("reserved two byte (%02x %02x) ",
1141 msg[0], msg[1]);
1142 len = 2;
1143 } else
1144 printk("reserved");
1145 return len;
1146}
1147EXPORT_SYMBOL(spi_print_msg);
1148
1149#else /* ifndef CONFIG_SCSI_CONSTANTS */
1150
1151int spi_print_msg(const unsigned char *msg)
1152{
1153 int len = 0, i;
1154
1155 if (msg[0] == EXTENDED_MESSAGE) {
1156 len = 3 + msg[1];
1157 for (i = 0; i < len; ++i)
1158 printk("%02x ", msg[i]);
1159 /* Identify */
1160 } else if (msg[0] & 0x80) {
1161 printk("%02x ", msg[0]);
1162 len = 1;
1163 /* Normal One byte */
1164 } else if (msg[0] < 0x1f) {
1165 printk("%02x ", msg[0]);
1166 len = 1;
1167 /* Two byte */
1168 } else if (msg[0] <= 0x2f) {
1169 printk("%02x %02x", msg[0], msg[1]);
1170 len = 2;
1171 } else
1172 printk("%02x ", msg[0]);
1173 return len;
1174}
1175EXPORT_SYMBOL(spi_print_msg);
1176#endif /* ! CONFIG_SCSI_CONSTANTS */
1177
1050#define SETUP_ATTRIBUTE(field) \ 1178#define SETUP_ATTRIBUTE(field) \
1051 i->private_attrs[count] = class_device_attr_##field; \ 1179 i->private_attrs[count] = class_device_attr_##field; \
1052 if (!i->f->set_##field) { \ 1180 if (!i->f->set_##field) { \
diff --git a/drivers/scsi/sd.c b/drivers/scsi/sd.c
index 03fcbab30033..3d3ad7d1b779 100644
--- a/drivers/scsi/sd.c
+++ b/drivers/scsi/sd.c
@@ -245,7 +245,7 @@ static int sd_init_command(struct scsi_cmnd * SCpnt)
245 * SG_IO from block layer already setup, just copy cdb basically 245 * SG_IO from block layer already setup, just copy cdb basically
246 */ 246 */
247 if (blk_pc_request(rq)) { 247 if (blk_pc_request(rq)) {
248 scsi_setup_blk_pc_cmnd(SCpnt, SD_PASSTHROUGH_RETRIES); 248 scsi_setup_blk_pc_cmnd(SCpnt);
249 if (rq->timeout) 249 if (rq->timeout)
250 timeout = rq->timeout; 250 timeout = rq->timeout;
251 251
@@ -1495,9 +1495,7 @@ static int sd_revalidate_disk(struct gendisk *disk)
1495 */ 1495 */
1496 if (sdkp->media_present) { 1496 if (sdkp->media_present) {
1497 sd_read_capacity(sdkp, disk->disk_name, buffer); 1497 sd_read_capacity(sdkp, disk->disk_name, buffer);
1498 if (sdp->removable) 1498 sd_read_write_protect_flag(sdkp, disk->disk_name, buffer);
1499 sd_read_write_protect_flag(sdkp, disk->disk_name,
1500 buffer);
1501 sd_read_cache_type(sdkp, disk->disk_name, buffer); 1499 sd_read_cache_type(sdkp, disk->disk_name, buffer);
1502 } 1500 }
1503 1501
diff --git a/drivers/scsi/sg.c b/drivers/scsi/sg.c
index b55c2a8a547c..221e96e2620a 100644
--- a/drivers/scsi/sg.c
+++ b/drivers/scsi/sg.c
@@ -104,8 +104,6 @@ static int sg_allow_dio = SG_ALLOW_DIO_DEF;
104static int sg_add(struct class_device *, struct class_interface *); 104static int sg_add(struct class_device *, struct class_interface *);
105static void sg_remove(struct class_device *, struct class_interface *); 105static void sg_remove(struct class_device *, struct class_interface *);
106 106
107static Scsi_Request *dummy_cmdp; /* only used for sizeof */
108
109static DEFINE_RWLOCK(sg_dev_arr_lock); /* Also used to lock 107static DEFINE_RWLOCK(sg_dev_arr_lock); /* Also used to lock
110 file descriptor list for device */ 108 file descriptor list for device */
111 109
@@ -119,7 +117,7 @@ typedef struct sg_scatter_hold { /* holding area for scsi scatter gather info */
119 unsigned short sglist_len; /* size of malloc'd scatter-gather list ++ */ 117 unsigned short sglist_len; /* size of malloc'd scatter-gather list ++ */
120 unsigned bufflen; /* Size of (aggregate) data buffer */ 118 unsigned bufflen; /* Size of (aggregate) data buffer */
121 unsigned b_malloc_len; /* actual len malloc'ed in buffer */ 119 unsigned b_malloc_len; /* actual len malloc'ed in buffer */
122 void *buffer; /* Data buffer or scatter list (k_use_sg>0) */ 120 struct scatterlist *buffer;/* scatter list */
123 char dio_in_use; /* 0->indirect IO (or mmap), 1->dio */ 121 char dio_in_use; /* 0->indirect IO (or mmap), 1->dio */
124 unsigned char cmd_opcode; /* first byte of command */ 122 unsigned char cmd_opcode; /* first byte of command */
125} Sg_scatter_hold; 123} Sg_scatter_hold;
@@ -128,12 +126,11 @@ struct sg_device; /* forward declarations */
128struct sg_fd; 126struct sg_fd;
129 127
130typedef struct sg_request { /* SG_MAX_QUEUE requests outstanding per file */ 128typedef struct sg_request { /* SG_MAX_QUEUE requests outstanding per file */
131 Scsi_Request *my_cmdp; /* != 0 when request with lower levels */
132 struct sg_request *nextrp; /* NULL -> tail request (slist) */ 129 struct sg_request *nextrp; /* NULL -> tail request (slist) */
133 struct sg_fd *parentfp; /* NULL -> not in use */ 130 struct sg_fd *parentfp; /* NULL -> not in use */
134 Sg_scatter_hold data; /* hold buffer, perhaps scatter list */ 131 Sg_scatter_hold data; /* hold buffer, perhaps scatter list */
135 sg_io_hdr_t header; /* scsi command+info, see <scsi/sg.h> */ 132 sg_io_hdr_t header; /* scsi command+info, see <scsi/sg.h> */
136 unsigned char sense_b[sizeof (dummy_cmdp->sr_sense_buffer)]; 133 unsigned char sense_b[SCSI_SENSE_BUFFERSIZE];
137 char res_used; /* 1 -> using reserve buffer, 0 -> not ... */ 134 char res_used; /* 1 -> using reserve buffer, 0 -> not ... */
138 char orphan; /* 1 -> drop on sight, 0 -> normal */ 135 char orphan; /* 1 -> drop on sight, 0 -> normal */
139 char sg_io_owned; /* 1 -> packet belongs to SG_IO */ 136 char sg_io_owned; /* 1 -> packet belongs to SG_IO */
@@ -174,7 +171,8 @@ typedef struct sg_device { /* holds the state of each scsi generic device */
174} Sg_device; 171} Sg_device;
175 172
176static int sg_fasync(int fd, struct file *filp, int mode); 173static int sg_fasync(int fd, struct file *filp, int mode);
177static void sg_cmd_done(Scsi_Cmnd * SCpnt); /* tasklet or soft irq callback */ 174/* tasklet or soft irq callback */
175static void sg_cmd_done(void *data, char *sense, int result, int resid);
178static int sg_start_req(Sg_request * srp); 176static int sg_start_req(Sg_request * srp);
179static void sg_finish_rem_req(Sg_request * srp); 177static void sg_finish_rem_req(Sg_request * srp);
180static int sg_build_indirect(Sg_scatter_hold * schp, Sg_fd * sfp, int buff_size); 178static int sg_build_indirect(Sg_scatter_hold * schp, Sg_fd * sfp, int buff_size);
@@ -195,8 +193,8 @@ static void sg_remove_scat(Sg_scatter_hold * schp);
195static void sg_build_reserve(Sg_fd * sfp, int req_size); 193static void sg_build_reserve(Sg_fd * sfp, int req_size);
196static void sg_link_reserve(Sg_fd * sfp, Sg_request * srp, int size); 194static void sg_link_reserve(Sg_fd * sfp, Sg_request * srp, int size);
197static void sg_unlink_reserve(Sg_fd * sfp, Sg_request * srp); 195static void sg_unlink_reserve(Sg_fd * sfp, Sg_request * srp);
198static char *sg_page_malloc(int rqSz, int lowDma, int *retSzp); 196static struct page *sg_page_malloc(int rqSz, int lowDma, int *retSzp);
199static void sg_page_free(char *buff, int size); 197static void sg_page_free(struct page *page, int size);
200static Sg_fd *sg_add_sfp(Sg_device * sdp, int dev); 198static Sg_fd *sg_add_sfp(Sg_device * sdp, int dev);
201static int sg_remove_sfp(Sg_device * sdp, Sg_fd * sfp); 199static int sg_remove_sfp(Sg_device * sdp, Sg_fd * sfp);
202static void __sg_remove_sfp(Sg_device * sdp, Sg_fd * sfp); 200static void __sg_remove_sfp(Sg_device * sdp, Sg_fd * sfp);
@@ -207,7 +205,6 @@ static int sg_res_in_use(Sg_fd * sfp);
207static int sg_allow_access(unsigned char opcode, char dev_type); 205static int sg_allow_access(unsigned char opcode, char dev_type);
208static int sg_build_direct(Sg_request * srp, Sg_fd * sfp, int dxfer_len); 206static int sg_build_direct(Sg_request * srp, Sg_fd * sfp, int dxfer_len);
209static Sg_device *sg_get_dev(int dev); 207static Sg_device *sg_get_dev(int dev);
210static inline unsigned char *sg_scatg2virt(const struct scatterlist *sclp);
211#ifdef CONFIG_SCSI_PROC_FS 208#ifdef CONFIG_SCSI_PROC_FS
212static int sg_last_dev(void); 209static int sg_last_dev(void);
213#endif 210#endif
@@ -226,6 +223,7 @@ sg_open(struct inode *inode, struct file *filp)
226{ 223{
227 int dev = iminor(inode); 224 int dev = iminor(inode);
228 int flags = filp->f_flags; 225 int flags = filp->f_flags;
226 struct request_queue *q;
229 Sg_device *sdp; 227 Sg_device *sdp;
230 Sg_fd *sfp; 228 Sg_fd *sfp;
231 int res; 229 int res;
@@ -287,7 +285,9 @@ sg_open(struct inode *inode, struct file *filp)
287 } 285 }
288 if (!sdp->headfp) { /* no existing opens on this device */ 286 if (!sdp->headfp) { /* no existing opens on this device */
289 sdp->sgdebug = 0; 287 sdp->sgdebug = 0;
290 sdp->sg_tablesize = sdp->device->host->sg_tablesize; 288 q = sdp->device->request_queue;
289 sdp->sg_tablesize = min(q->max_hw_segments,
290 q->max_phys_segments);
291 } 291 }
292 if ((sfp = sg_add_sfp(sdp, dev))) 292 if ((sfp = sg_add_sfp(sdp, dev)))
293 filp->private_data = sfp; 293 filp->private_data = sfp;
@@ -340,6 +340,7 @@ sg_read(struct file *filp, char __user *buf, size_t count, loff_t * ppos)
340 return -ENXIO; 340 return -ENXIO;
341 SCSI_LOG_TIMEOUT(3, printk("sg_read: %s, count=%d\n", 341 SCSI_LOG_TIMEOUT(3, printk("sg_read: %s, count=%d\n",
342 sdp->disk->disk_name, (int) count)); 342 sdp->disk->disk_name, (int) count));
343
343 if (!access_ok(VERIFY_WRITE, buf, count)) 344 if (!access_ok(VERIFY_WRITE, buf, count))
344 return -EFAULT; 345 return -EFAULT;
345 if (sfp->force_packid && (count >= SZ_SG_HEADER)) { 346 if (sfp->force_packid && (count >= SZ_SG_HEADER)) {
@@ -491,7 +492,7 @@ sg_new_read(Sg_fd * sfp, char __user *buf, size_t count, Sg_request * srp)
491 if ((hp->mx_sb_len > 0) && hp->sbp) { 492 if ((hp->mx_sb_len > 0) && hp->sbp) {
492 if ((CHECK_CONDITION & hp->masked_status) || 493 if ((CHECK_CONDITION & hp->masked_status) ||
493 (DRIVER_SENSE & hp->driver_status)) { 494 (DRIVER_SENSE & hp->driver_status)) {
494 int sb_len = sizeof (dummy_cmdp->sr_sense_buffer); 495 int sb_len = SCSI_SENSE_BUFFERSIZE;
495 sb_len = (hp->mx_sb_len > sb_len) ? sb_len : hp->mx_sb_len; 496 sb_len = (hp->mx_sb_len > sb_len) ? sb_len : hp->mx_sb_len;
496 len = 8 + (int) srp->sense_b[7]; /* Additional sense length field */ 497 len = 8 + (int) srp->sense_b[7]; /* Additional sense length field */
497 len = (len > sb_len) ? sb_len : len; 498 len = (len > sb_len) ? sb_len : len;
@@ -525,7 +526,7 @@ sg_write(struct file *filp, const char __user *buf, size_t count, loff_t * ppos)
525 Sg_request *srp; 526 Sg_request *srp;
526 struct sg_header old_hdr; 527 struct sg_header old_hdr;
527 sg_io_hdr_t *hp; 528 sg_io_hdr_t *hp;
528 unsigned char cmnd[sizeof (dummy_cmdp->sr_cmnd)]; 529 unsigned char cmnd[MAX_COMMAND_SIZE];
529 530
530 if ((!(sfp = (Sg_fd *) filp->private_data)) || (!(sdp = sfp->parentdp))) 531 if ((!(sfp = (Sg_fd *) filp->private_data)) || (!(sdp = sfp->parentdp)))
531 return -ENXIO; 532 return -ENXIO;
@@ -624,7 +625,7 @@ sg_new_write(Sg_fd * sfp, const char __user *buf, size_t count,
624 int k; 625 int k;
625 Sg_request *srp; 626 Sg_request *srp;
626 sg_io_hdr_t *hp; 627 sg_io_hdr_t *hp;
627 unsigned char cmnd[sizeof (dummy_cmdp->sr_cmnd)]; 628 unsigned char cmnd[MAX_COMMAND_SIZE];
628 int timeout; 629 int timeout;
629 unsigned long ul_timeout; 630 unsigned long ul_timeout;
630 631
@@ -692,11 +693,9 @@ static int
692sg_common_write(Sg_fd * sfp, Sg_request * srp, 693sg_common_write(Sg_fd * sfp, Sg_request * srp,
693 unsigned char *cmnd, int timeout, int blocking) 694 unsigned char *cmnd, int timeout, int blocking)
694{ 695{
695 int k; 696 int k, data_dir;
696 Scsi_Request *SRpnt;
697 Sg_device *sdp = sfp->parentdp; 697 Sg_device *sdp = sfp->parentdp;
698 sg_io_hdr_t *hp = &srp->header; 698 sg_io_hdr_t *hp = &srp->header;
699 request_queue_t *q;
700 699
701 srp->data.cmd_opcode = cmnd[0]; /* hold opcode of command */ 700 srp->data.cmd_opcode = cmnd[0]; /* hold opcode of command */
702 hp->status = 0; 701 hp->status = 0;
@@ -723,51 +722,36 @@ sg_common_write(Sg_fd * sfp, Sg_request * srp,
723 sg_finish_rem_req(srp); 722 sg_finish_rem_req(srp);
724 return -ENODEV; 723 return -ENODEV;
725 } 724 }
726 SRpnt = scsi_allocate_request(sdp->device, GFP_ATOMIC);
727 if (SRpnt == NULL) {
728 SCSI_LOG_TIMEOUT(1, printk("sg_write: no mem\n"));
729 sg_finish_rem_req(srp);
730 return -ENOMEM;
731 }
732 725
733 srp->my_cmdp = SRpnt;
734 q = SRpnt->sr_device->request_queue;
735 SRpnt->sr_request->rq_disk = sdp->disk;
736 SRpnt->sr_sense_buffer[0] = 0;
737 SRpnt->sr_cmd_len = hp->cmd_len;
738 SRpnt->sr_use_sg = srp->data.k_use_sg;
739 SRpnt->sr_sglist_len = srp->data.sglist_len;
740 SRpnt->sr_bufflen = srp->data.bufflen;
741 SRpnt->sr_underflow = 0;
742 SRpnt->sr_buffer = srp->data.buffer;
743 switch (hp->dxfer_direction) { 726 switch (hp->dxfer_direction) {
744 case SG_DXFER_TO_FROM_DEV: 727 case SG_DXFER_TO_FROM_DEV:
745 case SG_DXFER_FROM_DEV: 728 case SG_DXFER_FROM_DEV:
746 SRpnt->sr_data_direction = DMA_FROM_DEVICE; 729 data_dir = DMA_FROM_DEVICE;
747 break; 730 break;
748 case SG_DXFER_TO_DEV: 731 case SG_DXFER_TO_DEV:
749 SRpnt->sr_data_direction = DMA_TO_DEVICE; 732 data_dir = DMA_TO_DEVICE;
750 break; 733 break;
751 case SG_DXFER_UNKNOWN: 734 case SG_DXFER_UNKNOWN:
752 SRpnt->sr_data_direction = DMA_BIDIRECTIONAL; 735 data_dir = DMA_BIDIRECTIONAL;
753 break; 736 break;
754 default: 737 default:
755 SRpnt->sr_data_direction = DMA_NONE; 738 data_dir = DMA_NONE;
756 break; 739 break;
757 } 740 }
758 SRpnt->upper_private_data = srp;
759 srp->data.k_use_sg = 0;
760 srp->data.sglist_len = 0;
761 srp->data.bufflen = 0;
762 srp->data.buffer = NULL;
763 hp->duration = jiffies_to_msecs(jiffies); 741 hp->duration = jiffies_to_msecs(jiffies);
764/* Now send everything of to mid-level. The next time we hear about this 742/* Now send everything of to mid-level. The next time we hear about this
765 packet is when sg_cmd_done() is called (i.e. a callback). */ 743 packet is when sg_cmd_done() is called (i.e. a callback). */
766 scsi_do_req(SRpnt, (void *) cmnd, 744 if (scsi_execute_async(sdp->device, cmnd, data_dir, srp->data.buffer,
767 (void *) SRpnt->sr_buffer, hp->dxfer_len, 745 hp->dxfer_len, srp->data.k_use_sg, timeout,
768 sg_cmd_done, timeout, SG_DEFAULT_RETRIES); 746 SG_DEFAULT_RETRIES, srp, sg_cmd_done,
769 /* dxfer_len overwrites SRpnt->sr_bufflen, hence need for b_malloc_len */ 747 GFP_ATOMIC)) {
770 return 0; 748 SCSI_LOG_TIMEOUT(1, printk("sg_write: scsi_execute_async failed\n"));
749 /*
750 * most likely out of mem, but could also be a bad map
751 */
752 return -ENOMEM;
753 } else
754 return 0;
771} 755}
772 756
773static int 757static int
@@ -1156,45 +1140,22 @@ sg_fasync(int fd, struct file *filp, int mode)
1156 return (retval < 0) ? retval : 0; 1140 return (retval < 0) ? retval : 0;
1157} 1141}
1158 1142
1159static inline unsigned char *
1160sg_scatg2virt(const struct scatterlist *sclp)
1161{
1162 return (sclp && sclp->page) ?
1163 (unsigned char *) page_address(sclp->page) + sclp->offset : NULL;
1164}
1165
1166/* When startFinish==1 increments page counts for pages other than the 1143/* When startFinish==1 increments page counts for pages other than the
1167 first of scatter gather elements obtained from __get_free_pages(). 1144 first of scatter gather elements obtained from alloc_pages().
1168 When startFinish==0 decrements ... */ 1145 When startFinish==0 decrements ... */
1169static void 1146static void
1170sg_rb_correct4mmap(Sg_scatter_hold * rsv_schp, int startFinish) 1147sg_rb_correct4mmap(Sg_scatter_hold * rsv_schp, int startFinish)
1171{ 1148{
1172 void *page_ptr; 1149 struct scatterlist *sg = rsv_schp->buffer;
1173 struct page *page; 1150 struct page *page;
1174 int k, m; 1151 int k, m;
1175 1152
1176 SCSI_LOG_TIMEOUT(3, printk("sg_rb_correct4mmap: startFinish=%d, scatg=%d\n", 1153 SCSI_LOG_TIMEOUT(3, printk("sg_rb_correct4mmap: startFinish=%d, scatg=%d\n",
1177 startFinish, rsv_schp->k_use_sg)); 1154 startFinish, rsv_schp->k_use_sg));
1178 /* N.B. correction _not_ applied to base page of each allocation */ 1155 /* N.B. correction _not_ applied to base page of each allocation */
1179 if (rsv_schp->k_use_sg) { /* reserve buffer is a scatter gather list */ 1156 for (k = 0; k < rsv_schp->k_use_sg; ++k, ++sg) {
1180 struct scatterlist *sclp = rsv_schp->buffer; 1157 for (m = PAGE_SIZE; m < sg->length; m += PAGE_SIZE) {
1181 1158 page = sg->page;
1182 for (k = 0; k < rsv_schp->k_use_sg; ++k, ++sclp) {
1183 for (m = PAGE_SIZE; m < sclp->length; m += PAGE_SIZE) {
1184 page_ptr = sg_scatg2virt(sclp) + m;
1185 page = virt_to_page(page_ptr);
1186 if (startFinish)
1187 get_page(page);
1188 else {
1189 if (page_count(page) > 0)
1190 __put_page(page);
1191 }
1192 }
1193 }
1194 } else { /* reserve buffer is just a single allocation */
1195 for (m = PAGE_SIZE; m < rsv_schp->bufflen; m += PAGE_SIZE) {
1196 page_ptr = (unsigned char *) rsv_schp->buffer + m;
1197 page = virt_to_page(page_ptr);
1198 if (startFinish) 1159 if (startFinish)
1199 get_page(page); 1160 get_page(page);
1200 else { 1161 else {
@@ -1210,9 +1171,10 @@ sg_vma_nopage(struct vm_area_struct *vma, unsigned long addr, int *type)
1210{ 1171{
1211 Sg_fd *sfp; 1172 Sg_fd *sfp;
1212 struct page *page = NOPAGE_SIGBUS; 1173 struct page *page = NOPAGE_SIGBUS;
1213 void *page_ptr = NULL; 1174 unsigned long offset, len, sa;
1214 unsigned long offset;
1215 Sg_scatter_hold *rsv_schp; 1175 Sg_scatter_hold *rsv_schp;
1176 struct scatterlist *sg;
1177 int k;
1216 1178
1217 if ((NULL == vma) || (!(sfp = (Sg_fd *) vma->vm_private_data))) 1179 if ((NULL == vma) || (!(sfp = (Sg_fd *) vma->vm_private_data)))
1218 return page; 1180 return page;
@@ -1222,30 +1184,21 @@ sg_vma_nopage(struct vm_area_struct *vma, unsigned long addr, int *type)
1222 return page; 1184 return page;
1223 SCSI_LOG_TIMEOUT(3, printk("sg_vma_nopage: offset=%lu, scatg=%d\n", 1185 SCSI_LOG_TIMEOUT(3, printk("sg_vma_nopage: offset=%lu, scatg=%d\n",
1224 offset, rsv_schp->k_use_sg)); 1186 offset, rsv_schp->k_use_sg));
1225 if (rsv_schp->k_use_sg) { /* reserve buffer is a scatter gather list */ 1187 sg = rsv_schp->buffer;
1226 int k; 1188 sa = vma->vm_start;
1227 unsigned long sa = vma->vm_start; 1189 for (k = 0; (k < rsv_schp->k_use_sg) && (sa < vma->vm_end);
1228 unsigned long len; 1190 ++k, ++sg) {
1229 struct scatterlist *sclp = rsv_schp->buffer; 1191 len = vma->vm_end - sa;
1230 1192 len = (len < sg->length) ? len : sg->length;
1231 for (k = 0; (k < rsv_schp->k_use_sg) && (sa < vma->vm_end); 1193 if (offset < len) {
1232 ++k, ++sclp) { 1194 page = sg->page;
1233 len = vma->vm_end - sa; 1195 get_page(page); /* increment page count */
1234 len = (len < sclp->length) ? len : sclp->length; 1196 break;
1235 if (offset < len) {
1236 page_ptr = sg_scatg2virt(sclp) + offset;
1237 page = virt_to_page(page_ptr);
1238 get_page(page); /* increment page count */
1239 break;
1240 }
1241 sa += len;
1242 offset -= len;
1243 } 1197 }
1244 } else { /* reserve buffer is just a single allocation */ 1198 sa += len;
1245 page_ptr = (unsigned char *) rsv_schp->buffer + offset; 1199 offset -= len;
1246 page = virt_to_page(page_ptr);
1247 get_page(page); /* increment page count */
1248 } 1200 }
1201
1249 if (type) 1202 if (type)
1250 *type = VM_FAULT_MINOR; 1203 *type = VM_FAULT_MINOR;
1251 return page; 1204 return page;
@@ -1259,8 +1212,10 @@ static int
1259sg_mmap(struct file *filp, struct vm_area_struct *vma) 1212sg_mmap(struct file *filp, struct vm_area_struct *vma)
1260{ 1213{
1261 Sg_fd *sfp; 1214 Sg_fd *sfp;
1262 unsigned long req_sz; 1215 unsigned long req_sz, len, sa;
1263 Sg_scatter_hold *rsv_schp; 1216 Sg_scatter_hold *rsv_schp;
1217 int k;
1218 struct scatterlist *sg;
1264 1219
1265 if ((!filp) || (!vma) || (!(sfp = (Sg_fd *) filp->private_data))) 1220 if ((!filp) || (!vma) || (!(sfp = (Sg_fd *) filp->private_data)))
1266 return -ENXIO; 1221 return -ENXIO;
@@ -1273,24 +1228,15 @@ sg_mmap(struct file *filp, struct vm_area_struct *vma)
1273 if (req_sz > rsv_schp->bufflen) 1228 if (req_sz > rsv_schp->bufflen)
1274 return -ENOMEM; /* cannot map more than reserved buffer */ 1229 return -ENOMEM; /* cannot map more than reserved buffer */
1275 1230
1276 if (rsv_schp->k_use_sg) { /* reserve buffer is a scatter gather list */ 1231 sa = vma->vm_start;
1277 int k; 1232 sg = rsv_schp->buffer;
1278 unsigned long sa = vma->vm_start; 1233 for (k = 0; (k < rsv_schp->k_use_sg) && (sa < vma->vm_end);
1279 unsigned long len; 1234 ++k, ++sg) {
1280 struct scatterlist *sclp = rsv_schp->buffer; 1235 len = vma->vm_end - sa;
1281 1236 len = (len < sg->length) ? len : sg->length;
1282 for (k = 0; (k < rsv_schp->k_use_sg) && (sa < vma->vm_end); 1237 sa += len;
1283 ++k, ++sclp) {
1284 if (0 != sclp->offset)
1285 return -EFAULT; /* non page aligned memory ?? */
1286 len = vma->vm_end - sa;
1287 len = (len < sclp->length) ? len : sclp->length;
1288 sa += len;
1289 }
1290 } else { /* reserve buffer is just a single allocation */
1291 if ((unsigned long) rsv_schp->buffer & (PAGE_SIZE - 1))
1292 return -EFAULT; /* non page aligned memory ?? */
1293 } 1238 }
1239
1294 if (0 == sfp->mmap_called) { 1240 if (0 == sfp->mmap_called) {
1295 sg_rb_correct4mmap(rsv_schp, 1); /* do only once per fd lifetime */ 1241 sg_rb_correct4mmap(rsv_schp, 1); /* do only once per fd lifetime */
1296 sfp->mmap_called = 1; 1242 sfp->mmap_called = 1;
@@ -1304,21 +1250,16 @@ sg_mmap(struct file *filp, struct vm_area_struct *vma)
1304/* This function is a "bottom half" handler that is called by the 1250/* This function is a "bottom half" handler that is called by the
1305 * mid level when a command is completed (or has failed). */ 1251 * mid level when a command is completed (or has failed). */
1306static void 1252static void
1307sg_cmd_done(Scsi_Cmnd * SCpnt) 1253sg_cmd_done(void *data, char *sense, int result, int resid)
1308{ 1254{
1309 Scsi_Request *SRpnt = NULL; 1255 Sg_request *srp = data;
1310 Sg_device *sdp = NULL; 1256 Sg_device *sdp = NULL;
1311 Sg_fd *sfp; 1257 Sg_fd *sfp;
1312 Sg_request *srp = NULL;
1313 unsigned long iflags; 1258 unsigned long iflags;
1314 unsigned int ms; 1259 unsigned int ms;
1315 1260
1316 if (SCpnt && (SRpnt = SCpnt->sc_request))
1317 srp = (Sg_request *) SRpnt->upper_private_data;
1318 if (NULL == srp) { 1261 if (NULL == srp) {
1319 printk(KERN_ERR "sg_cmd_done: NULL request\n"); 1262 printk(KERN_ERR "sg_cmd_done: NULL request\n");
1320 if (SRpnt)
1321 scsi_release_request(SRpnt);
1322 return; 1263 return;
1323 } 1264 }
1324 sfp = srp->parentfp; 1265 sfp = srp->parentfp;
@@ -1326,49 +1267,34 @@ sg_cmd_done(Scsi_Cmnd * SCpnt)
1326 sdp = sfp->parentdp; 1267 sdp = sfp->parentdp;
1327 if ((NULL == sdp) || sdp->detached) { 1268 if ((NULL == sdp) || sdp->detached) {
1328 printk(KERN_INFO "sg_cmd_done: device detached\n"); 1269 printk(KERN_INFO "sg_cmd_done: device detached\n");
1329 scsi_release_request(SRpnt);
1330 return; 1270 return;
1331 } 1271 }
1332 1272
1333 /* First transfer ownership of data buffers to sg_device object. */
1334 srp->data.k_use_sg = SRpnt->sr_use_sg;
1335 srp->data.sglist_len = SRpnt->sr_sglist_len;
1336 srp->data.bufflen = SRpnt->sr_bufflen;
1337 srp->data.buffer = SRpnt->sr_buffer;
1338 /* now clear out request structure */
1339 SRpnt->sr_use_sg = 0;
1340 SRpnt->sr_sglist_len = 0;
1341 SRpnt->sr_bufflen = 0;
1342 SRpnt->sr_buffer = NULL;
1343 SRpnt->sr_underflow = 0;
1344 SRpnt->sr_request->rq_disk = NULL; /* "sg" _disowns_ request blk */
1345
1346 srp->my_cmdp = NULL;
1347 1273
1348 SCSI_LOG_TIMEOUT(4, printk("sg_cmd_done: %s, pack_id=%d, res=0x%x\n", 1274 SCSI_LOG_TIMEOUT(4, printk("sg_cmd_done: %s, pack_id=%d, res=0x%x\n",
1349 sdp->disk->disk_name, srp->header.pack_id, (int) SRpnt->sr_result)); 1275 sdp->disk->disk_name, srp->header.pack_id, result));
1350 srp->header.resid = SCpnt->resid; 1276 srp->header.resid = resid;
1351 ms = jiffies_to_msecs(jiffies); 1277 ms = jiffies_to_msecs(jiffies);
1352 srp->header.duration = (ms > srp->header.duration) ? 1278 srp->header.duration = (ms > srp->header.duration) ?
1353 (ms - srp->header.duration) : 0; 1279 (ms - srp->header.duration) : 0;
1354 if (0 != SRpnt->sr_result) { 1280 if (0 != result) {
1355 struct scsi_sense_hdr sshdr; 1281 struct scsi_sense_hdr sshdr;
1356 1282
1357 memcpy(srp->sense_b, SRpnt->sr_sense_buffer, 1283 memcpy(srp->sense_b, sense, sizeof (srp->sense_b));
1358 sizeof (srp->sense_b)); 1284 srp->header.status = 0xff & result;
1359 srp->header.status = 0xff & SRpnt->sr_result; 1285 srp->header.masked_status = status_byte(result);
1360 srp->header.masked_status = status_byte(SRpnt->sr_result); 1286 srp->header.msg_status = msg_byte(result);
1361 srp->header.msg_status = msg_byte(SRpnt->sr_result); 1287 srp->header.host_status = host_byte(result);
1362 srp->header.host_status = host_byte(SRpnt->sr_result); 1288 srp->header.driver_status = driver_byte(result);
1363 srp->header.driver_status = driver_byte(SRpnt->sr_result);
1364 if ((sdp->sgdebug > 0) && 1289 if ((sdp->sgdebug > 0) &&
1365 ((CHECK_CONDITION == srp->header.masked_status) || 1290 ((CHECK_CONDITION == srp->header.masked_status) ||
1366 (COMMAND_TERMINATED == srp->header.masked_status))) 1291 (COMMAND_TERMINATED == srp->header.masked_status)))
1367 scsi_print_req_sense("sg_cmd_done", SRpnt); 1292 __scsi_print_sense("sg_cmd_done", sense,
1293 SCSI_SENSE_BUFFERSIZE);
1368 1294
1369 /* Following if statement is a patch supplied by Eric Youngdale */ 1295 /* Following if statement is a patch supplied by Eric Youngdale */
1370 if (driver_byte(SRpnt->sr_result) != 0 1296 if (driver_byte(result) != 0
1371 && scsi_command_normalize_sense(SCpnt, &sshdr) 1297 && scsi_normalize_sense(sense, SCSI_SENSE_BUFFERSIZE, &sshdr)
1372 && !scsi_sense_is_deferred(&sshdr) 1298 && !scsi_sense_is_deferred(&sshdr)
1373 && sshdr.sense_key == UNIT_ATTENTION 1299 && sshdr.sense_key == UNIT_ATTENTION
1374 && sdp->device->removable) { 1300 && sdp->device->removable) {
@@ -1379,8 +1305,6 @@ sg_cmd_done(Scsi_Cmnd * SCpnt)
1379 } 1305 }
1380 /* Rely on write phase to clean out srp status values, so no "else" */ 1306 /* Rely on write phase to clean out srp status values, so no "else" */
1381 1307
1382 scsi_release_request(SRpnt);
1383 SRpnt = NULL;
1384 if (sfp->closed) { /* whoops this fd already released, cleanup */ 1308 if (sfp->closed) { /* whoops this fd already released, cleanup */
1385 SCSI_LOG_TIMEOUT(1, printk("sg_cmd_done: already closed, freeing ...\n")); 1309 SCSI_LOG_TIMEOUT(1, printk("sg_cmd_done: already closed, freeing ...\n"));
1386 sg_finish_rem_req(srp); 1310 sg_finish_rem_req(srp);
@@ -1431,6 +1355,7 @@ static int sg_sysfs_valid = 0;
1431 1355
1432static int sg_alloc(struct gendisk *disk, struct scsi_device *scsidp) 1356static int sg_alloc(struct gendisk *disk, struct scsi_device *scsidp)
1433{ 1357{
1358 struct request_queue *q = scsidp->request_queue;
1434 Sg_device *sdp; 1359 Sg_device *sdp;
1435 unsigned long iflags; 1360 unsigned long iflags;
1436 void *old_sg_dev_arr = NULL; 1361 void *old_sg_dev_arr = NULL;
@@ -1473,7 +1398,7 @@ static int sg_alloc(struct gendisk *disk, struct scsi_device *scsidp)
1473 sdp->disk = disk; 1398 sdp->disk = disk;
1474 sdp->device = scsidp; 1399 sdp->device = scsidp;
1475 init_waitqueue_head(&sdp->o_excl_wait); 1400 init_waitqueue_head(&sdp->o_excl_wait);
1476 sdp->sg_tablesize = scsidp->host ? scsidp->host->sg_tablesize : 0; 1401 sdp->sg_tablesize = min(q->max_hw_segments, q->max_phys_segments);
1477 1402
1478 sg_nr_dev++; 1403 sg_nr_dev++;
1479 sg_dev_arr[k] = sdp; 1404 sg_dev_arr[k] = sdp;
@@ -1753,36 +1678,35 @@ sg_finish_rem_req(Sg_request * srp)
1753static int 1678static int
1754sg_build_sgat(Sg_scatter_hold * schp, const Sg_fd * sfp, int tablesize) 1679sg_build_sgat(Sg_scatter_hold * schp, const Sg_fd * sfp, int tablesize)
1755{ 1680{
1756 int ret_sz; 1681 int sg_bufflen = tablesize * sizeof(struct scatterlist);
1757 int elem_sz = sizeof (struct scatterlist); 1682 unsigned int gfp_flags = GFP_ATOMIC | __GFP_NOWARN;
1758 int sg_bufflen = tablesize * elem_sz;
1759 int mx_sc_elems = tablesize;
1760 1683
1761 schp->buffer = sg_page_malloc(sg_bufflen, sfp->low_dma, &ret_sz); 1684 /*
1685 * TODO: test without low_dma, we should not need it since
1686 * the block layer will bounce the buffer for us
1687 *
1688 * XXX(hch): we shouldn't need GFP_DMA for the actual S/G list.
1689 */
1690 if (sfp->low_dma)
1691 gfp_flags |= GFP_DMA;
1692 schp->buffer = kzalloc(sg_bufflen, gfp_flags);
1762 if (!schp->buffer) 1693 if (!schp->buffer)
1763 return -ENOMEM; 1694 return -ENOMEM;
1764 else if (ret_sz != sg_bufflen) {
1765 sg_bufflen = ret_sz;
1766 mx_sc_elems = sg_bufflen / elem_sz;
1767 }
1768 schp->sglist_len = sg_bufflen; 1695 schp->sglist_len = sg_bufflen;
1769 memset(schp->buffer, 0, sg_bufflen); 1696 return tablesize; /* number of scat_gath elements allocated */
1770 return mx_sc_elems; /* number of scat_gath elements allocated */
1771} 1697}
1772 1698
1773#ifdef SG_ALLOW_DIO_CODE 1699#ifdef SG_ALLOW_DIO_CODE
1774/* vvvvvvvv following code borrowed from st driver's direct IO vvvvvvvvv */ 1700/* vvvvvvvv following code borrowed from st driver's direct IO vvvvvvvvv */
1775 /* hopefully this generic code will moved to a library */ 1701 /* TODO: hopefully we can use the generic block layer code */
1776 1702
1777/* Pin down user pages and put them into a scatter gather list. Returns <= 0 if 1703/* Pin down user pages and put them into a scatter gather list. Returns <= 0 if
1778 - mapping of all pages not successful 1704 - mapping of all pages not successful
1779 - any page is above max_pfn
1780 (i.e., either completely successful or fails) 1705 (i.e., either completely successful or fails)
1781*/ 1706*/
1782static int 1707static int
1783st_map_user_pages(struct scatterlist *sgl, const unsigned int max_pages, 1708st_map_user_pages(struct scatterlist *sgl, const unsigned int max_pages,
1784 unsigned long uaddr, size_t count, int rw, 1709 unsigned long uaddr, size_t count, int rw)
1785 unsigned long max_pfn)
1786{ 1710{
1787 unsigned long end = (uaddr + count + PAGE_SIZE - 1) >> PAGE_SHIFT; 1711 unsigned long end = (uaddr + count + PAGE_SIZE - 1) >> PAGE_SHIFT;
1788 unsigned long start = uaddr >> PAGE_SHIFT; 1712 unsigned long start = uaddr >> PAGE_SHIFT;
@@ -1828,21 +1752,17 @@ st_map_user_pages(struct scatterlist *sgl, const unsigned int max_pages,
1828 * probably wrong function for rw==WRITE 1752 * probably wrong function for rw==WRITE
1829 */ 1753 */
1830 flush_dcache_page(pages[i]); 1754 flush_dcache_page(pages[i]);
1831 if (page_to_pfn(pages[i]) > max_pfn)
1832 goto out_unlock;
1833 /* ?? Is locking needed? I don't think so */ 1755 /* ?? Is locking needed? I don't think so */
1834 /* if (TestSetPageLocked(pages[i])) 1756 /* if (TestSetPageLocked(pages[i]))
1835 goto out_unlock; */ 1757 goto out_unlock; */
1836 } 1758 }
1837 1759
1838 /* Populate the scatter/gather list */ 1760 sgl[0].page = pages[0];
1839 sgl[0].page = pages[0];
1840 sgl[0].offset = uaddr & ~PAGE_MASK; 1761 sgl[0].offset = uaddr & ~PAGE_MASK;
1841 if (nr_pages > 1) { 1762 if (nr_pages > 1) {
1842 sgl[0].length = PAGE_SIZE - sgl[0].offset; 1763 sgl[0].length = PAGE_SIZE - sgl[0].offset;
1843 count -= sgl[0].length; 1764 count -= sgl[0].length;
1844 for (i=1; i < nr_pages ; i++) { 1765 for (i=1; i < nr_pages ; i++) {
1845 sgl[i].offset = 0;
1846 sgl[i].page = pages[i]; 1766 sgl[i].page = pages[i];
1847 sgl[i].length = count < PAGE_SIZE ? count : PAGE_SIZE; 1767 sgl[i].length = count < PAGE_SIZE ? count : PAGE_SIZE;
1848 count -= PAGE_SIZE; 1768 count -= PAGE_SIZE;
@@ -1855,10 +1775,6 @@ st_map_user_pages(struct scatterlist *sgl, const unsigned int max_pages,
1855 kfree(pages); 1775 kfree(pages);
1856 return nr_pages; 1776 return nr_pages;
1857 1777
1858 out_unlock:
1859 /* for (j=0; j < i; j++)
1860 unlock_page(pages[j]); */
1861 res = 0;
1862 out_unmap: 1778 out_unmap:
1863 if (res > 0) { 1779 if (res > 0) {
1864 for (j=0; j < res; j++) 1780 for (j=0; j < res; j++)
@@ -1904,20 +1820,20 @@ sg_build_direct(Sg_request * srp, Sg_fd * sfp, int dxfer_len)
1904 sg_io_hdr_t *hp = &srp->header; 1820 sg_io_hdr_t *hp = &srp->header;
1905 Sg_scatter_hold *schp = &srp->data; 1821 Sg_scatter_hold *schp = &srp->data;
1906 int sg_tablesize = sfp->parentdp->sg_tablesize; 1822 int sg_tablesize = sfp->parentdp->sg_tablesize;
1907 struct scatterlist *sgl;
1908 int mx_sc_elems, res; 1823 int mx_sc_elems, res;
1909 struct scsi_device *sdev = sfp->parentdp->device; 1824 struct scsi_device *sdev = sfp->parentdp->device;
1910 1825
1911 if (((unsigned long)hp->dxferp & 1826 if (((unsigned long)hp->dxferp &
1912 queue_dma_alignment(sdev->request_queue)) != 0) 1827 queue_dma_alignment(sdev->request_queue)) != 0)
1913 return 1; 1828 return 1;
1829
1914 mx_sc_elems = sg_build_sgat(schp, sfp, sg_tablesize); 1830 mx_sc_elems = sg_build_sgat(schp, sfp, sg_tablesize);
1915 if (mx_sc_elems <= 0) { 1831 if (mx_sc_elems <= 0) {
1916 return 1; 1832 return 1;
1917 } 1833 }
1918 sgl = (struct scatterlist *)schp->buffer; 1834 res = st_map_user_pages(schp->buffer, mx_sc_elems,
1919 res = st_map_user_pages(sgl, mx_sc_elems, (unsigned long)hp->dxferp, dxfer_len, 1835 (unsigned long)hp->dxferp, dxfer_len,
1920 (SG_DXFER_TO_DEV == hp->dxfer_direction) ? 1 : 0, ULONG_MAX); 1836 (SG_DXFER_TO_DEV == hp->dxfer_direction) ? 1 : 0);
1921 if (res <= 0) 1837 if (res <= 0)
1922 return 1; 1838 return 1;
1923 schp->k_use_sg = res; 1839 schp->k_use_sg = res;
@@ -1932,9 +1848,11 @@ sg_build_direct(Sg_request * srp, Sg_fd * sfp, int dxfer_len)
1932static int 1848static int
1933sg_build_indirect(Sg_scatter_hold * schp, Sg_fd * sfp, int buff_size) 1849sg_build_indirect(Sg_scatter_hold * schp, Sg_fd * sfp, int buff_size)
1934{ 1850{
1935 int ret_sz; 1851 struct scatterlist *sg;
1852 int ret_sz = 0, k, rem_sz, num, mx_sc_elems;
1853 int sg_tablesize = sfp->parentdp->sg_tablesize;
1936 int blk_size = buff_size; 1854 int blk_size = buff_size;
1937 unsigned char *p = NULL; 1855 struct page *p = NULL;
1938 1856
1939 if ((blk_size < 0) || (!sfp)) 1857 if ((blk_size < 0) || (!sfp))
1940 return -EFAULT; 1858 return -EFAULT;
@@ -1944,59 +1862,35 @@ sg_build_indirect(Sg_scatter_hold * schp, Sg_fd * sfp, int buff_size)
1944 blk_size = (blk_size + SG_SECTOR_MSK) & (~SG_SECTOR_MSK); 1862 blk_size = (blk_size + SG_SECTOR_MSK) & (~SG_SECTOR_MSK);
1945 SCSI_LOG_TIMEOUT(4, printk("sg_build_indirect: buff_size=%d, blk_size=%d\n", 1863 SCSI_LOG_TIMEOUT(4, printk("sg_build_indirect: buff_size=%d, blk_size=%d\n",
1946 buff_size, blk_size)); 1864 buff_size, blk_size));
1947 if (blk_size <= SG_SCATTER_SZ) { 1865
1948 p = sg_page_malloc(blk_size, sfp->low_dma, &ret_sz); 1866 /* N.B. ret_sz carried into this block ... */
1949 if (!p) 1867 mx_sc_elems = sg_build_sgat(schp, sfp, sg_tablesize);
1950 return -ENOMEM; 1868 if (mx_sc_elems < 0)
1951 if (blk_size == ret_sz) { /* got it on the first attempt */ 1869 return mx_sc_elems; /* most likely -ENOMEM */
1952 schp->k_use_sg = 0; 1870
1953 schp->buffer = p; 1871 for (k = 0, sg = schp->buffer, rem_sz = blk_size;
1954 schp->bufflen = blk_size; 1872 (rem_sz > 0) && (k < mx_sc_elems);
1955 schp->b_malloc_len = blk_size; 1873 ++k, rem_sz -= ret_sz, ++sg) {
1956 return 0; 1874
1957 } 1875 num = (rem_sz > SG_SCATTER_SZ) ? SG_SCATTER_SZ : rem_sz;
1958 } else { 1876 p = sg_page_malloc(num, sfp->low_dma, &ret_sz);
1959 p = sg_page_malloc(SG_SCATTER_SZ, sfp->low_dma, &ret_sz);
1960 if (!p) 1877 if (!p)
1961 return -ENOMEM; 1878 return -ENOMEM;
1962 } 1879
1963/* Want some local declarations, so start new block ... */ 1880 sg->page = p;
1964 { /* lets try and build a scatter gather list */ 1881 sg->length = ret_sz;
1965 struct scatterlist *sclp; 1882
1966 int k, rem_sz, num; 1883 SCSI_LOG_TIMEOUT(5, printk("sg_build_build: k=%d, a=0x%p, len=%d\n",
1967 int mx_sc_elems; 1884 k, p, ret_sz));
1968 int sg_tablesize = sfp->parentdp->sg_tablesize; 1885 } /* end of for loop */
1969 int first = 1; 1886
1970 1887 schp->k_use_sg = k;
1971 /* N.B. ret_sz carried into this block ... */ 1888 SCSI_LOG_TIMEOUT(5, printk("sg_build_indirect: k_use_sg=%d, rem_sz=%d\n", k, rem_sz));
1972 mx_sc_elems = sg_build_sgat(schp, sfp, sg_tablesize); 1889
1973 if (mx_sc_elems < 0) 1890 schp->bufflen = blk_size;
1974 return mx_sc_elems; /* most likely -ENOMEM */ 1891 if (rem_sz > 0) /* must have failed */
1975 1892 return -ENOMEM;
1976 for (k = 0, sclp = schp->buffer, rem_sz = blk_size; 1893
1977 (rem_sz > 0) && (k < mx_sc_elems);
1978 ++k, rem_sz -= ret_sz, ++sclp) {
1979 if (first)
1980 first = 0;
1981 else {
1982 num =
1983 (rem_sz >
1984 SG_SCATTER_SZ) ? SG_SCATTER_SZ : rem_sz;
1985 p = sg_page_malloc(num, sfp->low_dma, &ret_sz);
1986 if (!p)
1987 break;
1988 }
1989 sg_set_buf(sclp, p, ret_sz);
1990
1991 SCSI_LOG_TIMEOUT(5, printk("sg_build_build: k=%d, a=0x%p, len=%d\n",
1992 k, sg_scatg2virt(sclp), ret_sz));
1993 } /* end of for loop */
1994 schp->k_use_sg = k;
1995 SCSI_LOG_TIMEOUT(5, printk("sg_build_indirect: k_use_sg=%d, rem_sz=%d\n", k, rem_sz));
1996 schp->bufflen = blk_size;
1997 if (rem_sz > 0) /* must have failed */
1998 return -ENOMEM;
1999 }
2000 return 0; 1894 return 0;
2001} 1895}
2002 1896
@@ -2005,6 +1899,7 @@ sg_write_xfer(Sg_request * srp)
2005{ 1899{
2006 sg_io_hdr_t *hp = &srp->header; 1900 sg_io_hdr_t *hp = &srp->header;
2007 Sg_scatter_hold *schp = &srp->data; 1901 Sg_scatter_hold *schp = &srp->data;
1902 struct scatterlist *sg = schp->buffer;
2008 int num_xfer = 0; 1903 int num_xfer = 0;
2009 int j, k, onum, usglen, ksglen, res; 1904 int j, k, onum, usglen, ksglen, res;
2010 int iovec_count = (int) hp->iovec_count; 1905 int iovec_count = (int) hp->iovec_count;
@@ -2033,63 +1928,45 @@ sg_write_xfer(Sg_request * srp)
2033 } else 1928 } else
2034 onum = 1; 1929 onum = 1;
2035 1930
2036 if (0 == schp->k_use_sg) { /* kernel has single buffer */ 1931 ksglen = sg->length;
2037 for (j = 0, p = schp->buffer; j < onum; ++j) { 1932 p = page_address(sg->page);
2038 res = sg_u_iovec(hp, iovec_count, j, 1, &usglen, &up); 1933 for (j = 0, k = 0; j < onum; ++j) {
2039 if (res) 1934 res = sg_u_iovec(hp, iovec_count, j, 1, &usglen, &up);
2040 return res; 1935 if (res)
2041 usglen = (num_xfer > usglen) ? usglen : num_xfer; 1936 return res;
2042 if (__copy_from_user(p, up, usglen)) 1937
2043 return -EFAULT; 1938 for (; p; ++sg, ksglen = sg->length,
2044 p += usglen; 1939 p = page_address(sg->page)) {
2045 num_xfer -= usglen; 1940 if (usglen <= 0)
2046 if (num_xfer <= 0) 1941 break;
2047 return 0; 1942 if (ksglen > usglen) {
2048 } 1943 if (usglen >= num_xfer) {
2049 } else { /* kernel using scatter gather list */ 1944 if (__copy_from_user(p, up, num_xfer))
2050 struct scatterlist *sclp = (struct scatterlist *) schp->buffer;
2051
2052 ksglen = (int) sclp->length;
2053 p = sg_scatg2virt(sclp);
2054 for (j = 0, k = 0; j < onum; ++j) {
2055 res = sg_u_iovec(hp, iovec_count, j, 1, &usglen, &up);
2056 if (res)
2057 return res;
2058
2059 for (; p; ++sclp, ksglen = (int) sclp->length,
2060 p = sg_scatg2virt(sclp)) {
2061 if (usglen <= 0)
2062 break;
2063 if (ksglen > usglen) {
2064 if (usglen >= num_xfer) {
2065 if (__copy_from_user
2066 (p, up, num_xfer))
2067 return -EFAULT;
2068 return 0;
2069 }
2070 if (__copy_from_user(p, up, usglen))
2071 return -EFAULT;
2072 p += usglen;
2073 ksglen -= usglen;
2074 break;
2075 } else {
2076 if (ksglen >= num_xfer) {
2077 if (__copy_from_user
2078 (p, up, num_xfer))
2079 return -EFAULT;
2080 return 0;
2081 }
2082 if (__copy_from_user(p, up, ksglen))
2083 return -EFAULT; 1945 return -EFAULT;
2084 up += ksglen; 1946 return 0;
2085 usglen -= ksglen;
2086 } 1947 }
2087 ++k; 1948 if (__copy_from_user(p, up, usglen))
2088 if (k >= schp->k_use_sg) 1949 return -EFAULT;
1950 p += usglen;
1951 ksglen -= usglen;
1952 break;
1953 } else {
1954 if (ksglen >= num_xfer) {
1955 if (__copy_from_user(p, up, num_xfer))
1956 return -EFAULT;
2089 return 0; 1957 return 0;
1958 }
1959 if (__copy_from_user(p, up, ksglen))
1960 return -EFAULT;
1961 up += ksglen;
1962 usglen -= ksglen;
2090 } 1963 }
1964 ++k;
1965 if (k >= schp->k_use_sg)
1966 return 0;
2091 } 1967 }
2092 } 1968 }
1969
2093 return 0; 1970 return 0;
2094} 1971}
2095 1972
@@ -2127,29 +2004,25 @@ sg_remove_scat(Sg_scatter_hold * schp)
2127{ 2004{
2128 SCSI_LOG_TIMEOUT(4, printk("sg_remove_scat: k_use_sg=%d\n", schp->k_use_sg)); 2005 SCSI_LOG_TIMEOUT(4, printk("sg_remove_scat: k_use_sg=%d\n", schp->k_use_sg));
2129 if (schp->buffer && (schp->sglist_len > 0)) { 2006 if (schp->buffer && (schp->sglist_len > 0)) {
2130 struct scatterlist *sclp = (struct scatterlist *) schp->buffer; 2007 struct scatterlist *sg = schp->buffer;
2131 2008
2132 if (schp->dio_in_use) { 2009 if (schp->dio_in_use) {
2133#ifdef SG_ALLOW_DIO_CODE 2010#ifdef SG_ALLOW_DIO_CODE
2134 st_unmap_user_pages(sclp, schp->k_use_sg, TRUE); 2011 st_unmap_user_pages(sg, schp->k_use_sg, TRUE);
2135#endif 2012#endif
2136 } else { 2013 } else {
2137 int k; 2014 int k;
2138 2015
2139 for (k = 0; (k < schp->k_use_sg) && sg_scatg2virt(sclp); 2016 for (k = 0; (k < schp->k_use_sg) && sg->page;
2140 ++k, ++sclp) { 2017 ++k, ++sg) {
2141 SCSI_LOG_TIMEOUT(5, printk( 2018 SCSI_LOG_TIMEOUT(5, printk(
2142 "sg_remove_scat: k=%d, a=0x%p, len=%d\n", 2019 "sg_remove_scat: k=%d, a=0x%p, len=%d\n",
2143 k, sg_scatg2virt(sclp), sclp->length)); 2020 k, sg->page, sg->length));
2144 sg_page_free(sg_scatg2virt(sclp), sclp->length); 2021 sg_page_free(sg->page, sg->length);
2145 sclp->page = NULL;
2146 sclp->offset = 0;
2147 sclp->length = 0;
2148 } 2022 }
2149 } 2023 }
2150 sg_page_free(schp->buffer, schp->sglist_len); 2024 kfree(schp->buffer);
2151 } else if (schp->buffer) 2025 }
2152 sg_page_free(schp->buffer, schp->b_malloc_len);
2153 memset(schp, 0, sizeof (*schp)); 2026 memset(schp, 0, sizeof (*schp));
2154} 2027}
2155 2028
@@ -2158,6 +2031,7 @@ sg_read_xfer(Sg_request * srp)
2158{ 2031{
2159 sg_io_hdr_t *hp = &srp->header; 2032 sg_io_hdr_t *hp = &srp->header;
2160 Sg_scatter_hold *schp = &srp->data; 2033 Sg_scatter_hold *schp = &srp->data;
2034 struct scatterlist *sg = schp->buffer;
2161 int num_xfer = 0; 2035 int num_xfer = 0;
2162 int j, k, onum, usglen, ksglen, res; 2036 int j, k, onum, usglen, ksglen, res;
2163 int iovec_count = (int) hp->iovec_count; 2037 int iovec_count = (int) hp->iovec_count;
@@ -2186,63 +2060,45 @@ sg_read_xfer(Sg_request * srp)
2186 } else 2060 } else
2187 onum = 1; 2061 onum = 1;
2188 2062
2189 if (0 == schp->k_use_sg) { /* kernel has single buffer */ 2063 p = page_address(sg->page);
2190 for (j = 0, p = schp->buffer; j < onum; ++j) { 2064 ksglen = sg->length;
2191 res = sg_u_iovec(hp, iovec_count, j, 0, &usglen, &up); 2065 for (j = 0, k = 0; j < onum; ++j) {
2192 if (res) 2066 res = sg_u_iovec(hp, iovec_count, j, 0, &usglen, &up);
2193 return res; 2067 if (res)
2194 usglen = (num_xfer > usglen) ? usglen : num_xfer; 2068 return res;
2195 if (__copy_to_user(up, p, usglen)) 2069
2196 return -EFAULT; 2070 for (; p; ++sg, ksglen = sg->length,
2197 p += usglen; 2071 p = page_address(sg->page)) {
2198 num_xfer -= usglen; 2072 if (usglen <= 0)
2199 if (num_xfer <= 0) 2073 break;
2200 return 0; 2074 if (ksglen > usglen) {
2201 } 2075 if (usglen >= num_xfer) {
2202 } else { /* kernel using scatter gather list */ 2076 if (__copy_to_user(up, p, num_xfer))
2203 struct scatterlist *sclp = (struct scatterlist *) schp->buffer;
2204
2205 ksglen = (int) sclp->length;
2206 p = sg_scatg2virt(sclp);
2207 for (j = 0, k = 0; j < onum; ++j) {
2208 res = sg_u_iovec(hp, iovec_count, j, 0, &usglen, &up);
2209 if (res)
2210 return res;
2211
2212 for (; p; ++sclp, ksglen = (int) sclp->length,
2213 p = sg_scatg2virt(sclp)) {
2214 if (usglen <= 0)
2215 break;
2216 if (ksglen > usglen) {
2217 if (usglen >= num_xfer) {
2218 if (__copy_to_user
2219 (up, p, num_xfer))
2220 return -EFAULT;
2221 return 0;
2222 }
2223 if (__copy_to_user(up, p, usglen))
2224 return -EFAULT;
2225 p += usglen;
2226 ksglen -= usglen;
2227 break;
2228 } else {
2229 if (ksglen >= num_xfer) {
2230 if (__copy_to_user
2231 (up, p, num_xfer))
2232 return -EFAULT;
2233 return 0;
2234 }
2235 if (__copy_to_user(up, p, ksglen))
2236 return -EFAULT; 2077 return -EFAULT;
2237 up += ksglen; 2078 return 0;
2238 usglen -= ksglen;
2239 } 2079 }
2240 ++k; 2080 if (__copy_to_user(up, p, usglen))
2241 if (k >= schp->k_use_sg) 2081 return -EFAULT;
2082 p += usglen;
2083 ksglen -= usglen;
2084 break;
2085 } else {
2086 if (ksglen >= num_xfer) {
2087 if (__copy_to_user(up, p, num_xfer))
2088 return -EFAULT;
2242 return 0; 2089 return 0;
2090 }
2091 if (__copy_to_user(up, p, ksglen))
2092 return -EFAULT;
2093 up += ksglen;
2094 usglen -= ksglen;
2243 } 2095 }
2096 ++k;
2097 if (k >= schp->k_use_sg)
2098 return 0;
2244 } 2099 }
2245 } 2100 }
2101
2246 return 0; 2102 return 0;
2247} 2103}
2248 2104
@@ -2250,37 +2106,32 @@ static int
2250sg_read_oxfer(Sg_request * srp, char __user *outp, int num_read_xfer) 2106sg_read_oxfer(Sg_request * srp, char __user *outp, int num_read_xfer)
2251{ 2107{
2252 Sg_scatter_hold *schp = &srp->data; 2108 Sg_scatter_hold *schp = &srp->data;
2109 struct scatterlist *sg = schp->buffer;
2110 int k, num;
2253 2111
2254 SCSI_LOG_TIMEOUT(4, printk("sg_read_oxfer: num_read_xfer=%d\n", 2112 SCSI_LOG_TIMEOUT(4, printk("sg_read_oxfer: num_read_xfer=%d\n",
2255 num_read_xfer)); 2113 num_read_xfer));
2256 if ((!outp) || (num_read_xfer <= 0)) 2114 if ((!outp) || (num_read_xfer <= 0))
2257 return 0; 2115 return 0;
2258 if (schp->k_use_sg > 0) { 2116
2259 int k, num; 2117 for (k = 0; (k < schp->k_use_sg) && sg->page; ++k, ++sg) {
2260 struct scatterlist *sclp = (struct scatterlist *) schp->buffer; 2118 num = sg->length;
2261 2119 if (num > num_read_xfer) {
2262 for (k = 0; (k < schp->k_use_sg) && sg_scatg2virt(sclp); 2120 if (__copy_to_user(outp, page_address(sg->page),
2263 ++k, ++sclp) { 2121 num_read_xfer))
2264 num = (int) sclp->length; 2122 return -EFAULT;
2265 if (num > num_read_xfer) { 2123 break;
2266 if (__copy_to_user 2124 } else {
2267 (outp, sg_scatg2virt(sclp), num_read_xfer)) 2125 if (__copy_to_user(outp, page_address(sg->page),
2268 return -EFAULT; 2126 num))
2127 return -EFAULT;
2128 num_read_xfer -= num;
2129 if (num_read_xfer <= 0)
2269 break; 2130 break;
2270 } else { 2131 outp += num;
2271 if (__copy_to_user
2272 (outp, sg_scatg2virt(sclp), num))
2273 return -EFAULT;
2274 num_read_xfer -= num;
2275 if (num_read_xfer <= 0)
2276 break;
2277 outp += num;
2278 }
2279 } 2132 }
2280 } else {
2281 if (__copy_to_user(outp, schp->buffer, num_read_xfer))
2282 return -EFAULT;
2283 } 2133 }
2134
2284 return 0; 2135 return 0;
2285} 2136}
2286 2137
@@ -2306,44 +2157,31 @@ sg_link_reserve(Sg_fd * sfp, Sg_request * srp, int size)
2306{ 2157{
2307 Sg_scatter_hold *req_schp = &srp->data; 2158 Sg_scatter_hold *req_schp = &srp->data;
2308 Sg_scatter_hold *rsv_schp = &sfp->reserve; 2159 Sg_scatter_hold *rsv_schp = &sfp->reserve;
2160 struct scatterlist *sg = rsv_schp->buffer;
2161 int k, num, rem;
2309 2162
2310 srp->res_used = 1; 2163 srp->res_used = 1;
2311 SCSI_LOG_TIMEOUT(4, printk("sg_link_reserve: size=%d\n", size)); 2164 SCSI_LOG_TIMEOUT(4, printk("sg_link_reserve: size=%d\n", size));
2312 size = (size + 1) & (~1); /* round to even for aha1542 */ 2165 rem = size = (size + 1) & (~1); /* round to even for aha1542 */
2313 if (rsv_schp->k_use_sg > 0) { 2166
2314 int k, num; 2167 for (k = 0; k < rsv_schp->k_use_sg; ++k, ++sg) {
2315 int rem = size; 2168 num = sg->length;
2316 struct scatterlist *sclp = 2169 if (rem <= num) {
2317 (struct scatterlist *) rsv_schp->buffer; 2170 sfp->save_scat_len = num;
2318 2171 sg->length = rem;
2319 for (k = 0; k < rsv_schp->k_use_sg; ++k, ++sclp) { 2172 req_schp->k_use_sg = k + 1;
2320 num = (int) sclp->length; 2173 req_schp->sglist_len = rsv_schp->sglist_len;
2321 if (rem <= num) { 2174 req_schp->buffer = rsv_schp->buffer;
2322 if (0 == k) { 2175
2323 req_schp->k_use_sg = 0; 2176 req_schp->bufflen = size;
2324 req_schp->buffer = sg_scatg2virt(sclp); 2177 req_schp->b_malloc_len = rsv_schp->b_malloc_len;
2325 } else { 2178 break;
2326 sfp->save_scat_len = num; 2179 } else
2327 sclp->length = (unsigned) rem; 2180 rem -= num;
2328 req_schp->k_use_sg = k + 1;
2329 req_schp->sglist_len =
2330 rsv_schp->sglist_len;
2331 req_schp->buffer = rsv_schp->buffer;
2332 }
2333 req_schp->bufflen = size;
2334 req_schp->b_malloc_len = rsv_schp->b_malloc_len;
2335 break;
2336 } else
2337 rem -= num;
2338 }
2339 if (k >= rsv_schp->k_use_sg)
2340 SCSI_LOG_TIMEOUT(1, printk("sg_link_reserve: BAD size\n"));
2341 } else {
2342 req_schp->k_use_sg = 0;
2343 req_schp->bufflen = size;
2344 req_schp->buffer = rsv_schp->buffer;
2345 req_schp->b_malloc_len = rsv_schp->b_malloc_len;
2346 } 2181 }
2182
2183 if (k >= rsv_schp->k_use_sg)
2184 SCSI_LOG_TIMEOUT(1, printk("sg_link_reserve: BAD size\n"));
2347} 2185}
2348 2186
2349static void 2187static void
@@ -2355,11 +2193,10 @@ sg_unlink_reserve(Sg_fd * sfp, Sg_request * srp)
2355 SCSI_LOG_TIMEOUT(4, printk("sg_unlink_reserve: req->k_use_sg=%d\n", 2193 SCSI_LOG_TIMEOUT(4, printk("sg_unlink_reserve: req->k_use_sg=%d\n",
2356 (int) req_schp->k_use_sg)); 2194 (int) req_schp->k_use_sg));
2357 if ((rsv_schp->k_use_sg > 0) && (req_schp->k_use_sg > 0)) { 2195 if ((rsv_schp->k_use_sg > 0) && (req_schp->k_use_sg > 0)) {
2358 struct scatterlist *sclp = 2196 struct scatterlist *sg = rsv_schp->buffer;
2359 (struct scatterlist *) rsv_schp->buffer;
2360 2197
2361 if (sfp->save_scat_len > 0) 2198 if (sfp->save_scat_len > 0)
2362 (sclp + (req_schp->k_use_sg - 1))->length = 2199 (sg + (req_schp->k_use_sg - 1))->length =
2363 (unsigned) sfp->save_scat_len; 2200 (unsigned) sfp->save_scat_len;
2364 else 2201 else
2365 SCSI_LOG_TIMEOUT(1, printk ("sg_unlink_reserve: BAD save_scat_len\n")); 2202 SCSI_LOG_TIMEOUT(1, printk ("sg_unlink_reserve: BAD save_scat_len\n"));
@@ -2445,7 +2282,6 @@ sg_add_request(Sg_fd * sfp)
2445 if (resp) { 2282 if (resp) {
2446 resp->nextrp = NULL; 2283 resp->nextrp = NULL;
2447 resp->header.duration = jiffies_to_msecs(jiffies); 2284 resp->header.duration = jiffies_to_msecs(jiffies);
2448 resp->my_cmdp = NULL;
2449 } 2285 }
2450 write_unlock_irqrestore(&sfp->rq_list_lock, iflags); 2286 write_unlock_irqrestore(&sfp->rq_list_lock, iflags);
2451 return resp; 2287 return resp;
@@ -2463,8 +2299,6 @@ sg_remove_request(Sg_fd * sfp, Sg_request * srp)
2463 if ((!sfp) || (!srp) || (!sfp->headrp)) 2299 if ((!sfp) || (!srp) || (!sfp->headrp))
2464 return res; 2300 return res;
2465 write_lock_irqsave(&sfp->rq_list_lock, iflags); 2301 write_lock_irqsave(&sfp->rq_list_lock, iflags);
2466 if (srp->my_cmdp)
2467 srp->my_cmdp->upper_private_data = NULL;
2468 prev_rp = sfp->headrp; 2302 prev_rp = sfp->headrp;
2469 if (srp == prev_rp) { 2303 if (srp == prev_rp) {
2470 sfp->headrp = prev_rp->nextrp; 2304 sfp->headrp = prev_rp->nextrp;
@@ -2507,10 +2341,10 @@ sg_add_sfp(Sg_device * sdp, int dev)
2507 Sg_fd *sfp; 2341 Sg_fd *sfp;
2508 unsigned long iflags; 2342 unsigned long iflags;
2509 2343
2510 sfp = (Sg_fd *) sg_page_malloc(sizeof (Sg_fd), 0, NULL); 2344 sfp = kzalloc(sizeof(*sfp), GFP_ATOMIC | __GFP_NOWARN);
2511 if (!sfp) 2345 if (!sfp)
2512 return NULL; 2346 return NULL;
2513 memset(sfp, 0, sizeof (Sg_fd)); 2347
2514 init_waitqueue_head(&sfp->read_wait); 2348 init_waitqueue_head(&sfp->read_wait);
2515 rwlock_init(&sfp->rq_list_lock); 2349 rwlock_init(&sfp->rq_list_lock);
2516 2350
@@ -2567,7 +2401,7 @@ __sg_remove_sfp(Sg_device * sdp, Sg_fd * sfp)
2567 } 2401 }
2568 sfp->parentdp = NULL; 2402 sfp->parentdp = NULL;
2569 SCSI_LOG_TIMEOUT(6, printk("__sg_remove_sfp: sfp=0x%p\n", sfp)); 2403 SCSI_LOG_TIMEOUT(6, printk("__sg_remove_sfp: sfp=0x%p\n", sfp));
2570 sg_page_free((char *) sfp, sizeof (Sg_fd)); 2404 kfree(sfp);
2571} 2405}
2572 2406
2573/* Returns 0 in normal case, 1 when detached and sdp object removed */ 2407/* Returns 0 in normal case, 1 when detached and sdp object removed */
@@ -2632,10 +2466,10 @@ sg_res_in_use(Sg_fd * sfp)
2632} 2466}
2633 2467
2634/* If retSzp==NULL want exact size or fail */ 2468/* If retSzp==NULL want exact size or fail */
2635static char * 2469static struct page *
2636sg_page_malloc(int rqSz, int lowDma, int *retSzp) 2470sg_page_malloc(int rqSz, int lowDma, int *retSzp)
2637{ 2471{
2638 char *resp = NULL; 2472 struct page *resp = NULL;
2639 gfp_t page_mask; 2473 gfp_t page_mask;
2640 int order, a_size; 2474 int order, a_size;
2641 int resSz = rqSz; 2475 int resSz = rqSz;
@@ -2650,11 +2484,11 @@ sg_page_malloc(int rqSz, int lowDma, int *retSzp)
2650 2484
2651 for (order = 0, a_size = PAGE_SIZE; a_size < rqSz; 2485 for (order = 0, a_size = PAGE_SIZE; a_size < rqSz;
2652 order++, a_size <<= 1) ; 2486 order++, a_size <<= 1) ;
2653 resp = (char *) __get_free_pages(page_mask, order); 2487 resp = alloc_pages(page_mask, order);
2654 while ((!resp) && order && retSzp) { 2488 while ((!resp) && order && retSzp) {
2655 --order; 2489 --order;
2656 a_size >>= 1; /* divide by 2, until PAGE_SIZE */ 2490 a_size >>= 1; /* divide by 2, until PAGE_SIZE */
2657 resp = (char *) __get_free_pages(page_mask, order); /* try half */ 2491 resp = alloc_pages(page_mask, order); /* try half */
2658 resSz = a_size; 2492 resSz = a_size;
2659 } 2493 }
2660 if (resp) { 2494 if (resp) {
@@ -2667,15 +2501,15 @@ sg_page_malloc(int rqSz, int lowDma, int *retSzp)
2667} 2501}
2668 2502
2669static void 2503static void
2670sg_page_free(char *buff, int size) 2504sg_page_free(struct page *page, int size)
2671{ 2505{
2672 int order, a_size; 2506 int order, a_size;
2673 2507
2674 if (!buff) 2508 if (!page)
2675 return; 2509 return;
2676 for (order = 0, a_size = PAGE_SIZE; a_size < size; 2510 for (order = 0, a_size = PAGE_SIZE; a_size < size;
2677 order++, a_size <<= 1) ; 2511 order++, a_size <<= 1) ;
2678 free_pages((unsigned long) buff, order); 2512 __free_pages(page, order);
2679} 2513}
2680 2514
2681#ifndef MAINTENANCE_IN_CMD 2515#ifndef MAINTENANCE_IN_CMD
@@ -3067,13 +2901,11 @@ static void sg_proc_debug_helper(struct seq_file *s, Sg_device * sdp)
3067 cp = " "; 2901 cp = " ";
3068 } 2902 }
3069 seq_printf(s, cp); 2903 seq_printf(s, cp);
3070 blen = srp->my_cmdp ? 2904 blen = srp->data.bufflen;
3071 srp->my_cmdp->sr_bufflen : srp->data.bufflen; 2905 usg = srp->data.k_use_sg;
3072 usg = srp->my_cmdp ?
3073 srp->my_cmdp->sr_use_sg : srp->data.k_use_sg;
3074 seq_printf(s, srp->done ? 2906 seq_printf(s, srp->done ?
3075 ((1 == srp->done) ? "rcv:" : "fin:") 2907 ((1 == srp->done) ? "rcv:" : "fin:")
3076 : (srp->my_cmdp ? "act:" : "prior:")); 2908 : "act:");
3077 seq_printf(s, " id=%d blen=%d", 2909 seq_printf(s, " id=%d blen=%d",
3078 srp->header.pack_id, blen); 2910 srp->header.pack_id, blen);
3079 if (srp->done) 2911 if (srp->done)
diff --git a/drivers/scsi/sr.c b/drivers/scsi/sr.c
index fb4012b5c188..a4d9be7c6874 100644
--- a/drivers/scsi/sr.c
+++ b/drivers/scsi/sr.c
@@ -320,7 +320,7 @@ static int sr_init_command(struct scsi_cmnd * SCpnt)
320 * these are already setup, just copy cdb basically 320 * these are already setup, just copy cdb basically
321 */ 321 */
322 if (SCpnt->request->flags & REQ_BLOCK_PC) { 322 if (SCpnt->request->flags & REQ_BLOCK_PC) {
323 scsi_setup_blk_pc_cmnd(SCpnt, MAX_RETRIES); 323 scsi_setup_blk_pc_cmnd(SCpnt);
324 324
325 if (SCpnt->timeout_per_command) 325 if (SCpnt->timeout_per_command)
326 timeout = SCpnt->timeout_per_command; 326 timeout = SCpnt->timeout_per_command;
@@ -716,7 +716,7 @@ static void get_capabilities(struct scsi_cd *cd)
716 unsigned int the_result; 716 unsigned int the_result;
717 int retries, rc, n; 717 int retries, rc, n;
718 718
719 static char *loadmech[] = 719 static const char *loadmech[] =
720 { 720 {
721 "caddy", 721 "caddy",
722 "tray", 722 "tray",
diff --git a/drivers/scsi/sr_vendor.c b/drivers/scsi/sr_vendor.c
index 78274dc91f5c..9dde8df2f5c9 100644
--- a/drivers/scsi/sr_vendor.c
+++ b/drivers/scsi/sr_vendor.c
@@ -68,8 +68,8 @@ void sr_vendor_init(Scsi_CD *cd)
68#ifndef CONFIG_BLK_DEV_SR_VENDOR 68#ifndef CONFIG_BLK_DEV_SR_VENDOR
69 cd->vendor = VENDOR_SCSI3; 69 cd->vendor = VENDOR_SCSI3;
70#else 70#else
71 char *vendor = cd->device->vendor; 71 const char *vendor = cd->device->vendor;
72 char *model = cd->device->model; 72 const char *model = cd->device->model;
73 73
74 /* default */ 74 /* default */
75 cd->vendor = VENDOR_SCSI3; 75 cd->vendor = VENDOR_SCSI3;
diff --git a/drivers/scsi/st.c b/drivers/scsi/st.c
index dd592f6a2529..c4aade8f5345 100644
--- a/drivers/scsi/st.c
+++ b/drivers/scsi/st.c
@@ -17,7 +17,7 @@
17 Last modified: 18-JAN-1998 Richard Gooch <rgooch@atnf.csiro.au> Devfs support 17 Last modified: 18-JAN-1998 Richard Gooch <rgooch@atnf.csiro.au> Devfs support
18 */ 18 */
19 19
20static char *verstr = "20050830"; 20static const char *verstr = "20050830";
21 21
22#include <linux/module.h> 22#include <linux/module.h>
23 23
@@ -50,7 +50,6 @@ static char *verstr = "20050830";
50#include <scsi/scsi_eh.h> 50#include <scsi/scsi_eh.h>
51#include <scsi/scsi_host.h> 51#include <scsi/scsi_host.h>
52#include <scsi/scsi_ioctl.h> 52#include <scsi/scsi_ioctl.h>
53#include <scsi/scsi_request.h>
54#include <scsi/sg.h> 53#include <scsi/sg.h>
55 54
56 55
@@ -134,7 +133,7 @@ static struct st_dev_parm {
134#endif 133#endif
135/* Bit reversed order to get same names for same minors with all 134/* Bit reversed order to get same names for same minors with all
136 mode counts */ 135 mode counts */
137static char *st_formats[] = { 136static const char *st_formats[] = {
138 "", "r", "k", "s", "l", "t", "o", "u", 137 "", "r", "k", "s", "l", "t", "o", "u",
139 "m", "v", "p", "x", "a", "y", "q", "z"}; 138 "m", "v", "p", "x", "a", "y", "q", "z"};
140 139
@@ -188,8 +187,6 @@ static int from_buffer(struct st_buffer *, char __user *, int);
188static void move_buffer_data(struct st_buffer *, int); 187static void move_buffer_data(struct st_buffer *, int);
189static void buf_to_sg(struct st_buffer *, unsigned int); 188static void buf_to_sg(struct st_buffer *, unsigned int);
190 189
191static int st_map_user_pages(struct scatterlist *, const unsigned int,
192 unsigned long, size_t, int, unsigned long);
193static int sgl_map_user_pages(struct scatterlist *, const unsigned int, 190static int sgl_map_user_pages(struct scatterlist *, const unsigned int,
194 unsigned long, size_t, int); 191 unsigned long, size_t, int);
195static int sgl_unmap_user_pages(struct scatterlist *, const unsigned int, int); 192static int sgl_unmap_user_pages(struct scatterlist *, const unsigned int, int);
@@ -313,12 +310,13 @@ static inline char *tape_name(struct scsi_tape *tape)
313} 310}
314 311
315 312
316static void st_analyze_sense(struct scsi_request *SRpnt, struct st_cmdstatus *s) 313static void st_analyze_sense(struct st_request *SRpnt, struct st_cmdstatus *s)
317{ 314{
318 const u8 *ucp; 315 const u8 *ucp;
319 const u8 *sense = SRpnt->sr_sense_buffer; 316 const u8 *sense = SRpnt->sense;
320 317
321 s->have_sense = scsi_request_normalize_sense(SRpnt, &s->sense_hdr); 318 s->have_sense = scsi_normalize_sense(SRpnt->sense,
319 SCSI_SENSE_BUFFERSIZE, &s->sense_hdr);
322 s->flags = 0; 320 s->flags = 0;
323 321
324 if (s->have_sense) { 322 if (s->have_sense) {
@@ -345,9 +343,9 @@ static void st_analyze_sense(struct scsi_request *SRpnt, struct st_cmdstatus *s)
345 343
346 344
347/* Convert the result to success code */ 345/* Convert the result to success code */
348static int st_chk_result(struct scsi_tape *STp, struct scsi_request * SRpnt) 346static int st_chk_result(struct scsi_tape *STp, struct st_request * SRpnt)
349{ 347{
350 int result = SRpnt->sr_result; 348 int result = SRpnt->result;
351 u8 scode; 349 u8 scode;
352 DEB(const char *stp;) 350 DEB(const char *stp;)
353 char *name = tape_name(STp); 351 char *name = tape_name(STp);
@@ -366,13 +364,12 @@ static int st_chk_result(struct scsi_tape *STp, struct scsi_request * SRpnt)
366 364
367 DEB( 365 DEB(
368 if (debugging) { 366 if (debugging) {
369 printk(ST_DEB_MSG "%s: Error: %x, cmd: %x %x %x %x %x %x Len: %d\n", 367 printk(ST_DEB_MSG "%s: Error: %x, cmd: %x %x %x %x %x %x\n",
370 name, result, 368 name, result,
371 SRpnt->sr_cmnd[0], SRpnt->sr_cmnd[1], SRpnt->sr_cmnd[2], 369 SRpnt->cmd[0], SRpnt->cmd[1], SRpnt->cmd[2],
372 SRpnt->sr_cmnd[3], SRpnt->sr_cmnd[4], SRpnt->sr_cmnd[5], 370 SRpnt->cmd[3], SRpnt->cmd[4], SRpnt->cmd[5]);
373 SRpnt->sr_bufflen);
374 if (cmdstatp->have_sense) 371 if (cmdstatp->have_sense)
375 scsi_print_req_sense("st", SRpnt); 372 __scsi_print_sense("st", SRpnt->sense, SCSI_SENSE_BUFFERSIZE);
376 } ) /* end DEB */ 373 } ) /* end DEB */
377 if (!debugging) { /* Abnormal conditions for tape */ 374 if (!debugging) { /* Abnormal conditions for tape */
378 if (!cmdstatp->have_sense) 375 if (!cmdstatp->have_sense)
@@ -386,20 +383,21 @@ static int st_chk_result(struct scsi_tape *STp, struct scsi_request * SRpnt)
386 /* scode != UNIT_ATTENTION && */ 383 /* scode != UNIT_ATTENTION && */
387 scode != BLANK_CHECK && 384 scode != BLANK_CHECK &&
388 scode != VOLUME_OVERFLOW && 385 scode != VOLUME_OVERFLOW &&
389 SRpnt->sr_cmnd[0] != MODE_SENSE && 386 SRpnt->cmd[0] != MODE_SENSE &&
390 SRpnt->sr_cmnd[0] != TEST_UNIT_READY) { 387 SRpnt->cmd[0] != TEST_UNIT_READY) {
391 printk(KERN_WARNING "%s: Error with sense data: ", name); 388 printk(KERN_WARNING "%s: Error with sense data: ", name);
392 scsi_print_req_sense("st", SRpnt); 389 __scsi_print_sense("st", SRpnt->sense,
390 SCSI_SENSE_BUFFERSIZE);
393 } 391 }
394 } 392 }
395 393
396 if (cmdstatp->fixed_format && 394 if (cmdstatp->fixed_format &&
397 STp->cln_mode >= EXTENDED_SENSE_START) { /* Only fixed format sense */ 395 STp->cln_mode >= EXTENDED_SENSE_START) { /* Only fixed format sense */
398 if (STp->cln_sense_value) 396 if (STp->cln_sense_value)
399 STp->cleaning_req |= ((SRpnt->sr_sense_buffer[STp->cln_mode] & 397 STp->cleaning_req |= ((SRpnt->sense[STp->cln_mode] &
400 STp->cln_sense_mask) == STp->cln_sense_value); 398 STp->cln_sense_mask) == STp->cln_sense_value);
401 else 399 else
402 STp->cleaning_req |= ((SRpnt->sr_sense_buffer[STp->cln_mode] & 400 STp->cleaning_req |= ((SRpnt->sense[STp->cln_mode] &
403 STp->cln_sense_mask) != 0); 401 STp->cln_sense_mask) != 0);
404 } 402 }
405 if (cmdstatp->have_sense && 403 if (cmdstatp->have_sense &&
@@ -411,8 +409,8 @@ static int st_chk_result(struct scsi_tape *STp, struct scsi_request * SRpnt)
411 if (cmdstatp->have_sense && 409 if (cmdstatp->have_sense &&
412 scode == RECOVERED_ERROR 410 scode == RECOVERED_ERROR
413#if ST_RECOVERED_WRITE_FATAL 411#if ST_RECOVERED_WRITE_FATAL
414 && SRpnt->sr_cmnd[0] != WRITE_6 412 && SRpnt->cmd[0] != WRITE_6
415 && SRpnt->sr_cmnd[0] != WRITE_FILEMARKS 413 && SRpnt->cmd[0] != WRITE_FILEMARKS
416#endif 414#endif
417 ) { 415 ) {
418 STp->recover_count++; 416 STp->recover_count++;
@@ -420,9 +418,9 @@ static int st_chk_result(struct scsi_tape *STp, struct scsi_request * SRpnt)
420 418
421 DEB( 419 DEB(
422 if (debugging) { 420 if (debugging) {
423 if (SRpnt->sr_cmnd[0] == READ_6) 421 if (SRpnt->cmd[0] == READ_6)
424 stp = "read"; 422 stp = "read";
425 else if (SRpnt->sr_cmnd[0] == WRITE_6) 423 else if (SRpnt->cmd[0] == WRITE_6)
426 stp = "write"; 424 stp = "write";
427 else 425 else
428 stp = "ioctl"; 426 stp = "ioctl";
@@ -438,28 +436,37 @@ static int st_chk_result(struct scsi_tape *STp, struct scsi_request * SRpnt)
438 436
439 437
440/* Wakeup from interrupt */ 438/* Wakeup from interrupt */
441static void st_sleep_done(struct scsi_cmnd * SCpnt) 439static void st_sleep_done(void *data, char *sense, int result, int resid)
442{ 440{
443 struct scsi_tape *STp = container_of(SCpnt->request->rq_disk->private_data, 441 struct st_request *SRpnt = data;
444 struct scsi_tape, driver); 442 struct scsi_tape *STp = SRpnt->stp;
445 443
446 (STp->buffer)->cmdstat.midlevel_result = SCpnt->result; 444 memcpy(SRpnt->sense, sense, SCSI_SENSE_BUFFERSIZE);
447 SCpnt->request->rq_status = RQ_SCSI_DONE; 445 (STp->buffer)->cmdstat.midlevel_result = SRpnt->result = result;
448 DEB( STp->write_pending = 0; ) 446 DEB( STp->write_pending = 0; )
449 447
450 if (SCpnt->request->waiting) 448 if (SRpnt->waiting)
451 complete(SCpnt->request->waiting); 449 complete(SRpnt->waiting);
450}
451
452static struct st_request *st_allocate_request(void)
453{
454 return kzalloc(sizeof(struct st_request), GFP_KERNEL);
455}
456
457static void st_release_request(struct st_request *streq)
458{
459 kfree(streq);
452} 460}
453 461
454/* Do the scsi command. Waits until command performed if do_wait is true. 462/* Do the scsi command. Waits until command performed if do_wait is true.
455 Otherwise write_behind_check() is used to check that the command 463 Otherwise write_behind_check() is used to check that the command
456 has finished. */ 464 has finished. */
457static struct scsi_request * 465static struct st_request *
458st_do_scsi(struct scsi_request * SRpnt, struct scsi_tape * STp, unsigned char *cmd, 466st_do_scsi(struct st_request * SRpnt, struct scsi_tape * STp, unsigned char *cmd,
459 int bytes, int direction, int timeout, int retries, int do_wait) 467 int bytes, int direction, int timeout, int retries, int do_wait)
460{ 468{
461 struct completion *waiting; 469 struct completion *waiting;
462 unsigned char *bp;
463 470
464 /* if async, make sure there's no command outstanding */ 471 /* if async, make sure there's no command outstanding */
465 if (!do_wait && ((STp->buffer)->last_SRpnt)) { 472 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
473 } 480 }
474 481
475 if (SRpnt == NULL) { 482 if (SRpnt == NULL) {
476 SRpnt = scsi_allocate_request(STp->device, GFP_ATOMIC); 483 SRpnt = st_allocate_request();
477 if (SRpnt == NULL) { 484 if (SRpnt == NULL) {
478 DEBC( printk(KERN_ERR "%s: Can't get SCSI request.\n", 485 DEBC( printk(KERN_ERR "%s: Can't get SCSI request.\n",
479 tape_name(STp)); ); 486 tape_name(STp)); );
@@ -483,6 +490,7 @@ st_do_scsi(struct scsi_request * SRpnt, struct scsi_tape * STp, unsigned char *c
483 (STp->buffer)->syscall_result = (-EBUSY); 490 (STp->buffer)->syscall_result = (-EBUSY);
484 return NULL; 491 return NULL;
485 } 492 }
493 SRpnt->stp = STp;
486 } 494 }
487 495
488 /* If async IO, set last_SRpnt. This ptr tells write_behind_check 496 /* 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
492 500
493 waiting = &STp->wait; 501 waiting = &STp->wait;
494 init_completion(waiting); 502 init_completion(waiting);
495 SRpnt->sr_use_sg = STp->buffer->do_dio || (bytes > (STp->buffer)->frp[0].length); 503 SRpnt->waiting = waiting;
496 if (SRpnt->sr_use_sg) {
497 if (!STp->buffer->do_dio)
498 buf_to_sg(STp->buffer, bytes);
499 SRpnt->sr_use_sg = (STp->buffer)->sg_segs;
500 bp = (char *) &((STp->buffer)->sg[0]);
501 } else
502 bp = (STp->buffer)->b_data;
503 SRpnt->sr_data_direction = direction;
504 SRpnt->sr_cmd_len = 0;
505 SRpnt->sr_request->waiting = waiting;
506 SRpnt->sr_request->rq_status = RQ_SCSI_BUSY;
507 SRpnt->sr_request->rq_disk = STp->disk;
508 SRpnt->sr_request->end_io = blk_end_sync_rq;
509 STp->buffer->cmdstat.have_sense = 0;
510 504
511 scsi_do_req(SRpnt, (void *) cmd, bp, bytes, 505 if (!STp->buffer->do_dio)
512 st_sleep_done, timeout, retries); 506 buf_to_sg(STp->buffer, bytes);
513 507
514 if (do_wait) { 508 memcpy(SRpnt->cmd, cmd, sizeof(SRpnt->cmd));
509 STp->buffer->cmdstat.have_sense = 0;
510 STp->buffer->syscall_result = 0;
511
512 if (scsi_execute_async(STp->device, cmd, direction,
513 &((STp->buffer)->sg[0]), bytes, (STp->buffer)->sg_segs,
514 timeout, retries, SRpnt, st_sleep_done, GFP_KERNEL)) {
515 /* could not allocate the buffer or request was too large */
516 (STp->buffer)->syscall_result = (-EBUSY);
517 (STp->buffer)->last_SRpnt = NULL;
518 }
519 else if (do_wait) {
515 wait_for_completion(waiting); 520 wait_for_completion(waiting);
516 SRpnt->sr_request->waiting = NULL; 521 SRpnt->waiting = NULL;
517 if (SRpnt->sr_request->rq_status != RQ_SCSI_DONE)
518 SRpnt->sr_result |= (DRIVER_ERROR << 24);
519 (STp->buffer)->syscall_result = st_chk_result(STp, SRpnt); 522 (STp->buffer)->syscall_result = st_chk_result(STp, SRpnt);
520 } 523 }
524
521 return SRpnt; 525 return SRpnt;
522} 526}
523 527
@@ -532,7 +536,7 @@ static int write_behind_check(struct scsi_tape * STp)
532 struct st_buffer *STbuffer; 536 struct st_buffer *STbuffer;
533 struct st_partstat *STps; 537 struct st_partstat *STps;
534 struct st_cmdstatus *cmdstatp; 538 struct st_cmdstatus *cmdstatp;
535 struct scsi_request *SRpnt; 539 struct st_request *SRpnt;
536 540
537 STbuffer = STp->buffer; 541 STbuffer = STp->buffer;
538 if (!STbuffer->writing) 542 if (!STbuffer->writing)
@@ -548,12 +552,10 @@ static int write_behind_check(struct scsi_tape * STp)
548 wait_for_completion(&(STp->wait)); 552 wait_for_completion(&(STp->wait));
549 SRpnt = STbuffer->last_SRpnt; 553 SRpnt = STbuffer->last_SRpnt;
550 STbuffer->last_SRpnt = NULL; 554 STbuffer->last_SRpnt = NULL;
551 SRpnt->sr_request->waiting = NULL; 555 SRpnt->waiting = NULL;
552 if (SRpnt->sr_request->rq_status != RQ_SCSI_DONE)
553 SRpnt->sr_result |= (DRIVER_ERROR << 24);
554 556
555 (STp->buffer)->syscall_result = st_chk_result(STp, SRpnt); 557 (STp->buffer)->syscall_result = st_chk_result(STp, SRpnt);
556 scsi_release_request(SRpnt); 558 st_release_request(SRpnt);
557 559
558 STbuffer->buffer_bytes -= STbuffer->writing; 560 STbuffer->buffer_bytes -= STbuffer->writing;
559 STps = &(STp->ps[STp->partition]); 561 STps = &(STp->ps[STp->partition]);
@@ -593,7 +595,7 @@ static int write_behind_check(struct scsi_tape * STp)
593 it messes up the block number). */ 595 it messes up the block number). */
594static int cross_eof(struct scsi_tape * STp, int forward) 596static int cross_eof(struct scsi_tape * STp, int forward)
595{ 597{
596 struct scsi_request *SRpnt; 598 struct st_request *SRpnt;
597 unsigned char cmd[MAX_COMMAND_SIZE]; 599 unsigned char cmd[MAX_COMMAND_SIZE];
598 600
599 cmd[0] = SPACE; 601 cmd[0] = SPACE;
@@ -613,7 +615,7 @@ static int cross_eof(struct scsi_tape * STp, int forward)
613 if (!SRpnt) 615 if (!SRpnt)
614 return (STp->buffer)->syscall_result; 616 return (STp->buffer)->syscall_result;
615 617
616 scsi_release_request(SRpnt); 618 st_release_request(SRpnt);
617 SRpnt = NULL; 619 SRpnt = NULL;
618 620
619 if ((STp->buffer)->cmdstat.midlevel_result != 0) 621 if ((STp->buffer)->cmdstat.midlevel_result != 0)
@@ -630,7 +632,7 @@ static int flush_write_buffer(struct scsi_tape * STp)
630 int offset, transfer, blks; 632 int offset, transfer, blks;
631 int result; 633 int result;
632 unsigned char cmd[MAX_COMMAND_SIZE]; 634 unsigned char cmd[MAX_COMMAND_SIZE];
633 struct scsi_request *SRpnt; 635 struct st_request *SRpnt;
634 struct st_partstat *STps; 636 struct st_partstat *STps;
635 637
636 result = write_behind_check(STp); 638 result = write_behind_check(STp);
@@ -688,7 +690,7 @@ static int flush_write_buffer(struct scsi_tape * STp)
688 STp->dirty = 0; 690 STp->dirty = 0;
689 (STp->buffer)->buffer_bytes = 0; 691 (STp->buffer)->buffer_bytes = 0;
690 } 692 }
691 scsi_release_request(SRpnt); 693 st_release_request(SRpnt);
692 SRpnt = NULL; 694 SRpnt = NULL;
693 } 695 }
694 return result; 696 return result;
@@ -785,7 +787,7 @@ static int set_mode_densblk(struct scsi_tape * STp, struct st_modedef * STm)
785} 787}
786 788
787 789
788/* Lock or unlock the drive door. Don't use when scsi_request allocated. */ 790/* Lock or unlock the drive door. Don't use when st_request allocated. */
789static int do_door_lock(struct scsi_tape * STp, int do_lock) 791static int do_door_lock(struct scsi_tape * STp, int do_lock)
790{ 792{
791 int retval, cmd; 793 int retval, cmd;
@@ -844,7 +846,7 @@ static int test_ready(struct scsi_tape *STp, int do_wait)
844 int attentions, waits, max_wait, scode; 846 int attentions, waits, max_wait, scode;
845 int retval = CHKRES_READY, new_session = 0; 847 int retval = CHKRES_READY, new_session = 0;
846 unsigned char cmd[MAX_COMMAND_SIZE]; 848 unsigned char cmd[MAX_COMMAND_SIZE];
847 struct scsi_request *SRpnt = NULL; 849 struct st_request *SRpnt = NULL;
848 struct st_cmdstatus *cmdstatp = &STp->buffer->cmdstat; 850 struct st_cmdstatus *cmdstatp = &STp->buffer->cmdstat;
849 851
850 max_wait = do_wait ? ST_BLOCK_SECONDS : 0; 852 max_wait = do_wait ? ST_BLOCK_SECONDS : 0;
@@ -903,7 +905,7 @@ static int test_ready(struct scsi_tape *STp, int do_wait)
903 } 905 }
904 906
905 if (SRpnt != NULL) 907 if (SRpnt != NULL)
906 scsi_release_request(SRpnt); 908 st_release_request(SRpnt);
907 return retval; 909 return retval;
908} 910}
909 911
@@ -918,7 +920,7 @@ static int check_tape(struct scsi_tape *STp, struct file *filp)
918 int i, retval, new_session = 0, do_wait; 920 int i, retval, new_session = 0, do_wait;
919 unsigned char cmd[MAX_COMMAND_SIZE], saved_cleaning; 921 unsigned char cmd[MAX_COMMAND_SIZE], saved_cleaning;
920 unsigned short st_flags = filp->f_flags; 922 unsigned short st_flags = filp->f_flags;
921 struct scsi_request *SRpnt = NULL; 923 struct st_request *SRpnt = NULL;
922 struct st_modedef *STm; 924 struct st_modedef *STm;
923 struct st_partstat *STps; 925 struct st_partstat *STps;
924 char *name = tape_name(STp); 926 char *name = tape_name(STp);
@@ -993,7 +995,7 @@ static int check_tape(struct scsi_tape *STp, struct file *filp)
993 goto err_out; 995 goto err_out;
994 } 996 }
995 997
996 if (!SRpnt->sr_result && !STp->buffer->cmdstat.have_sense) { 998 if (!SRpnt->result && !STp->buffer->cmdstat.have_sense) {
997 STp->max_block = ((STp->buffer)->b_data[1] << 16) | 999 STp->max_block = ((STp->buffer)->b_data[1] << 16) |
998 ((STp->buffer)->b_data[2] << 8) | (STp->buffer)->b_data[3]; 1000 ((STp->buffer)->b_data[2] << 8) | (STp->buffer)->b_data[3];
999 STp->min_block = ((STp->buffer)->b_data[4] << 8) | 1001 STp->min_block = ((STp->buffer)->b_data[4] << 8) |
@@ -1045,7 +1047,7 @@ static int check_tape(struct scsi_tape *STp, struct file *filp)
1045 } 1047 }
1046 STp->drv_write_prot = ((STp->buffer)->b_data[2] & 0x80) != 0; 1048 STp->drv_write_prot = ((STp->buffer)->b_data[2] & 0x80) != 0;
1047 } 1049 }
1048 scsi_release_request(SRpnt); 1050 st_release_request(SRpnt);
1049 SRpnt = NULL; 1051 SRpnt = NULL;
1050 STp->inited = 1; 1052 STp->inited = 1;
1051 1053
@@ -1196,7 +1198,7 @@ static int st_flush(struct file *filp)
1196{ 1198{
1197 int result = 0, result2; 1199 int result = 0, result2;
1198 unsigned char cmd[MAX_COMMAND_SIZE]; 1200 unsigned char cmd[MAX_COMMAND_SIZE];
1199 struct scsi_request *SRpnt; 1201 struct st_request *SRpnt;
1200 struct scsi_tape *STp = filp->private_data; 1202 struct scsi_tape *STp = filp->private_data;
1201 struct st_modedef *STm = &(STp->modes[STp->current_mode]); 1203 struct st_modedef *STm = &(STp->modes[STp->current_mode]);
1202 struct st_partstat *STps = &(STp->ps[STp->partition]); 1204 struct st_partstat *STps = &(STp->ps[STp->partition]);
@@ -1249,7 +1251,7 @@ static int st_flush(struct file *filp)
1249 cmdstatp->sense_hdr.sense_key == RECOVERED_ERROR) && 1251 cmdstatp->sense_hdr.sense_key == RECOVERED_ERROR) &&
1250 (!cmdstatp->remainder_valid || cmdstatp->uremainder64 == 0))) { 1252 (!cmdstatp->remainder_valid || cmdstatp->uremainder64 == 0))) {
1251 /* Write successful at EOM */ 1253 /* Write successful at EOM */
1252 scsi_release_request(SRpnt); 1254 st_release_request(SRpnt);
1253 SRpnt = NULL; 1255 SRpnt = NULL;
1254 if (STps->drv_file >= 0) 1256 if (STps->drv_file >= 0)
1255 STps->drv_file++; 1257 STps->drv_file++;
@@ -1259,7 +1261,7 @@ static int st_flush(struct file *filp)
1259 STps->eof = ST_FM; 1261 STps->eof = ST_FM;
1260 } 1262 }
1261 else { /* Write error */ 1263 else { /* Write error */
1262 scsi_release_request(SRpnt); 1264 st_release_request(SRpnt);
1263 SRpnt = NULL; 1265 SRpnt = NULL;
1264 printk(KERN_ERR "%s: Error on write filemark.\n", name); 1266 printk(KERN_ERR "%s: Error on write filemark.\n", name);
1265 if (result == 0) 1267 if (result == 0)
@@ -1400,11 +1402,11 @@ static int setup_buffering(struct scsi_tape *STp, const char __user *buf,
1400 i = STp->try_dio && try_rdio; 1402 i = STp->try_dio && try_rdio;
1401 else 1403 else
1402 i = STp->try_dio && try_wdio; 1404 i = STp->try_dio && try_wdio;
1405
1403 if (i && ((unsigned long)buf & queue_dma_alignment( 1406 if (i && ((unsigned long)buf & queue_dma_alignment(
1404 STp->device->request_queue)) == 0) { 1407 STp->device->request_queue)) == 0) {
1405 i = st_map_user_pages(&(STbp->sg[0]), STbp->use_sg, 1408 i = sgl_map_user_pages(&(STbp->sg[0]), STbp->use_sg,
1406 (unsigned long)buf, count, (is_read ? READ : WRITE), 1409 (unsigned long)buf, count, (is_read ? READ : WRITE));
1407 STp->max_pfn);
1408 if (i > 0) { 1410 if (i > 0) {
1409 STbp->do_dio = i; 1411 STbp->do_dio = i;
1410 STbp->buffer_bytes = 0; /* can be used as transfer counter */ 1412 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,
1449 1451
1450 1452
1451/* Can be called more than once after each setup_buffer() */ 1453/* Can be called more than once after each setup_buffer() */
1452static void release_buffering(struct scsi_tape *STp) 1454static void release_buffering(struct scsi_tape *STp, int is_read)
1453{ 1455{
1454 struct st_buffer *STbp; 1456 struct st_buffer *STbp;
1455 1457
1456 STbp = STp->buffer; 1458 STbp = STp->buffer;
1457 if (STbp->do_dio) { 1459 if (STbp->do_dio) {
1458 sgl_unmap_user_pages(&(STbp->sg[0]), STbp->do_dio, 0); 1460 sgl_unmap_user_pages(&(STbp->sg[0]), STbp->do_dio, is_read);
1459 STbp->do_dio = 0; 1461 STbp->do_dio = 0;
1462 STbp->sg_segs = 0;
1460 } 1463 }
1461} 1464}
1462 1465
@@ -1472,7 +1475,7 @@ st_write(struct file *filp, const char __user *buf, size_t count, loff_t * ppos)
1472 int async_write; 1475 int async_write;
1473 unsigned char cmd[MAX_COMMAND_SIZE]; 1476 unsigned char cmd[MAX_COMMAND_SIZE];
1474 const char __user *b_point; 1477 const char __user *b_point;
1475 struct scsi_request *SRpnt = NULL; 1478 struct st_request *SRpnt = NULL;
1476 struct scsi_tape *STp = filp->private_data; 1479 struct scsi_tape *STp = filp->private_data;
1477 struct st_modedef *STm; 1480 struct st_modedef *STm;
1478 struct st_partstat *STps; 1481 struct st_partstat *STps;
@@ -1624,7 +1627,7 @@ st_write(struct file *filp, const char __user *buf, size_t count, loff_t * ppos)
1624 retval = STbp->syscall_result; 1627 retval = STbp->syscall_result;
1625 goto out; 1628 goto out;
1626 } 1629 }
1627 if (async_write) { 1630 if (async_write && !STbp->syscall_result) {
1628 STbp->writing = transfer; 1631 STbp->writing = transfer;
1629 STp->dirty = !(STbp->writing == 1632 STp->dirty = !(STbp->writing ==
1630 STbp->buffer_bytes); 1633 STbp->buffer_bytes);
@@ -1698,7 +1701,7 @@ st_write(struct file *filp, const char __user *buf, size_t count, loff_t * ppos)
1698 } else { 1701 } else {
1699 count += do_count; 1702 count += do_count;
1700 STps->drv_block = (-1); /* Too cautious? */ 1703 STps->drv_block = (-1); /* Too cautious? */
1701 retval = (-EIO); 1704 retval = STbp->syscall_result;
1702 } 1705 }
1703 1706
1704 } 1707 }
@@ -1728,8 +1731,8 @@ st_write(struct file *filp, const char __user *buf, size_t count, loff_t * ppos)
1728 1731
1729 out: 1732 out:
1730 if (SRpnt != NULL) 1733 if (SRpnt != NULL)
1731 scsi_release_request(SRpnt); 1734 st_release_request(SRpnt);
1732 release_buffering(STp); 1735 release_buffering(STp, 0);
1733 up(&STp->lock); 1736 up(&STp->lock);
1734 1737
1735 return retval; 1738 return retval;
@@ -1742,11 +1745,11 @@ st_write(struct file *filp, const char __user *buf, size_t count, loff_t * ppos)
1742 Does release user buffer mapping if it is set. 1745 Does release user buffer mapping if it is set.
1743*/ 1746*/
1744static long read_tape(struct scsi_tape *STp, long count, 1747static long read_tape(struct scsi_tape *STp, long count,
1745 struct scsi_request ** aSRpnt) 1748 struct st_request ** aSRpnt)
1746{ 1749{
1747 int transfer, blks, bytes; 1750 int transfer, blks, bytes;
1748 unsigned char cmd[MAX_COMMAND_SIZE]; 1751 unsigned char cmd[MAX_COMMAND_SIZE];
1749 struct scsi_request *SRpnt; 1752 struct st_request *SRpnt;
1750 struct st_modedef *STm; 1753 struct st_modedef *STm;
1751 struct st_partstat *STps; 1754 struct st_partstat *STps;
1752 struct st_buffer *STbp; 1755 struct st_buffer *STbp;
@@ -1787,7 +1790,7 @@ static long read_tape(struct scsi_tape *STp, long count,
1787 SRpnt = *aSRpnt; 1790 SRpnt = *aSRpnt;
1788 SRpnt = st_do_scsi(SRpnt, STp, cmd, bytes, DMA_FROM_DEVICE, 1791 SRpnt = st_do_scsi(SRpnt, STp, cmd, bytes, DMA_FROM_DEVICE,
1789 STp->device->timeout, MAX_RETRIES, 1); 1792 STp->device->timeout, MAX_RETRIES, 1);
1790 release_buffering(STp); 1793 release_buffering(STp, 1);
1791 *aSRpnt = SRpnt; 1794 *aSRpnt = SRpnt;
1792 if (!SRpnt) 1795 if (!SRpnt)
1793 return STbp->syscall_result; 1796 return STbp->syscall_result;
@@ -1802,10 +1805,10 @@ static long read_tape(struct scsi_tape *STp, long count,
1802 retval = 1; 1805 retval = 1;
1803 DEBC(printk(ST_DEB_MSG "%s: Sense: %2x %2x %2x %2x %2x %2x %2x %2x\n", 1806 DEBC(printk(ST_DEB_MSG "%s: Sense: %2x %2x %2x %2x %2x %2x %2x %2x\n",
1804 name, 1807 name,
1805 SRpnt->sr_sense_buffer[0], SRpnt->sr_sense_buffer[1], 1808 SRpnt->sense[0], SRpnt->sense[1],
1806 SRpnt->sr_sense_buffer[2], SRpnt->sr_sense_buffer[3], 1809 SRpnt->sense[2], SRpnt->sense[3],
1807 SRpnt->sr_sense_buffer[4], SRpnt->sr_sense_buffer[5], 1810 SRpnt->sense[4], SRpnt->sense[5],
1808 SRpnt->sr_sense_buffer[6], SRpnt->sr_sense_buffer[7])); 1811 SRpnt->sense[6], SRpnt->sense[7]));
1809 if (cmdstatp->have_sense) { 1812 if (cmdstatp->have_sense) {
1810 1813
1811 if (cmdstatp->sense_hdr.sense_key == BLANK_CHECK) 1814 if (cmdstatp->sense_hdr.sense_key == BLANK_CHECK)
@@ -1835,7 +1838,7 @@ static long read_tape(struct scsi_tape *STp, long count,
1835 } 1838 }
1836 STbp->buffer_bytes = bytes - transfer; 1839 STbp->buffer_bytes = bytes - transfer;
1837 } else { 1840 } else {
1838 scsi_release_request(SRpnt); 1841 st_release_request(SRpnt);
1839 SRpnt = *aSRpnt = NULL; 1842 SRpnt = *aSRpnt = NULL;
1840 if (transfer == blks) { /* We did not get anything, error */ 1843 if (transfer == blks) { /* We did not get anything, error */
1841 printk(KERN_NOTICE "%s: Incorrect block size.\n", name); 1844 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)
1929 ssize_t retval = 0; 1932 ssize_t retval = 0;
1930 ssize_t i, transfer; 1933 ssize_t i, transfer;
1931 int special, do_dio = 0; 1934 int special, do_dio = 0;
1932 struct scsi_request *SRpnt = NULL; 1935 struct st_request *SRpnt = NULL;
1933 struct scsi_tape *STp = filp->private_data; 1936 struct scsi_tape *STp = filp->private_data;
1934 struct st_modedef *STm; 1937 struct st_modedef *STm;
1935 struct st_partstat *STps; 1938 struct st_partstat *STps;
@@ -2054,11 +2057,11 @@ st_read(struct file *filp, char __user *buf, size_t count, loff_t * ppos)
2054 2057
2055 out: 2058 out:
2056 if (SRpnt != NULL) { 2059 if (SRpnt != NULL) {
2057 scsi_release_request(SRpnt); 2060 st_release_request(SRpnt);
2058 SRpnt = NULL; 2061 SRpnt = NULL;
2059 } 2062 }
2060 if (do_dio) { 2063 if (do_dio) {
2061 release_buffering(STp); 2064 release_buffering(STp, 1);
2062 STbp->buffer_bytes = 0; 2065 STbp->buffer_bytes = 0;
2063 } 2066 }
2064 up(&STp->lock); 2067 up(&STp->lock);
@@ -2284,7 +2287,7 @@ static int st_set_options(struct scsi_tape *STp, long options)
2284static int read_mode_page(struct scsi_tape *STp, int page, int omit_block_descs) 2287static int read_mode_page(struct scsi_tape *STp, int page, int omit_block_descs)
2285{ 2288{
2286 unsigned char cmd[MAX_COMMAND_SIZE]; 2289 unsigned char cmd[MAX_COMMAND_SIZE];
2287 struct scsi_request *SRpnt = NULL; 2290 struct st_request *SRpnt = NULL;
2288 2291
2289 memset(cmd, 0, MAX_COMMAND_SIZE); 2292 memset(cmd, 0, MAX_COMMAND_SIZE);
2290 cmd[0] = MODE_SENSE; 2293 cmd[0] = MODE_SENSE;
@@ -2298,7 +2301,7 @@ static int read_mode_page(struct scsi_tape *STp, int page, int omit_block_descs)
2298 if (SRpnt == NULL) 2301 if (SRpnt == NULL)
2299 return (STp->buffer)->syscall_result; 2302 return (STp->buffer)->syscall_result;
2300 2303
2301 scsi_release_request(SRpnt); 2304 st_release_request(SRpnt);
2302 2305
2303 return (STp->buffer)->syscall_result; 2306 return (STp->buffer)->syscall_result;
2304} 2307}
@@ -2310,7 +2313,7 @@ static int write_mode_page(struct scsi_tape *STp, int page, int slow)
2310{ 2313{
2311 int pgo; 2314 int pgo;
2312 unsigned char cmd[MAX_COMMAND_SIZE]; 2315 unsigned char cmd[MAX_COMMAND_SIZE];
2313 struct scsi_request *SRpnt = NULL; 2316 struct st_request *SRpnt = NULL;
2314 2317
2315 memset(cmd, 0, MAX_COMMAND_SIZE); 2318 memset(cmd, 0, MAX_COMMAND_SIZE);
2316 cmd[0] = MODE_SELECT; 2319 cmd[0] = MODE_SELECT;
@@ -2329,7 +2332,7 @@ static int write_mode_page(struct scsi_tape *STp, int page, int slow)
2329 if (SRpnt == NULL) 2332 if (SRpnt == NULL)
2330 return (STp->buffer)->syscall_result; 2333 return (STp->buffer)->syscall_result;
2331 2334
2332 scsi_release_request(SRpnt); 2335 st_release_request(SRpnt);
2333 2336
2334 return (STp->buffer)->syscall_result; 2337 return (STp->buffer)->syscall_result;
2335} 2338}
@@ -2412,7 +2415,7 @@ static int do_load_unload(struct scsi_tape *STp, struct file *filp, int load_cod
2412 DEB( char *name = tape_name(STp); ) 2415 DEB( char *name = tape_name(STp); )
2413 unsigned char cmd[MAX_COMMAND_SIZE]; 2416 unsigned char cmd[MAX_COMMAND_SIZE];
2414 struct st_partstat *STps; 2417 struct st_partstat *STps;
2415 struct scsi_request *SRpnt; 2418 struct st_request *SRpnt;
2416 2419
2417 if (STp->ready != ST_READY && !load_code) { 2420 if (STp->ready != ST_READY && !load_code) {
2418 if (STp->ready == ST_NO_TAPE) 2421 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
2455 return (STp->buffer)->syscall_result; 2458 return (STp->buffer)->syscall_result;
2456 2459
2457 retval = (STp->buffer)->syscall_result; 2460 retval = (STp->buffer)->syscall_result;
2458 scsi_release_request(SRpnt); 2461 st_release_request(SRpnt);
2459 2462
2460 if (!retval) { /* SCSI command successful */ 2463 if (!retval) { /* SCSI command successful */
2461 2464
@@ -2503,7 +2506,7 @@ static int st_int_ioctl(struct scsi_tape *STp, unsigned int cmd_in, unsigned lon
2503 int ioctl_result; 2506 int ioctl_result;
2504 int chg_eof = 1; 2507 int chg_eof = 1;
2505 unsigned char cmd[MAX_COMMAND_SIZE]; 2508 unsigned char cmd[MAX_COMMAND_SIZE];
2506 struct scsi_request *SRpnt; 2509 struct st_request *SRpnt;
2507 struct st_partstat *STps; 2510 struct st_partstat *STps;
2508 int fileno, blkno, at_sm, undone; 2511 int fileno, blkno, at_sm, undone;
2509 int datalen = 0, direction = DMA_NONE; 2512 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
2757 ioctl_result = (STp->buffer)->syscall_result; 2760 ioctl_result = (STp->buffer)->syscall_result;
2758 2761
2759 if (!ioctl_result) { /* SCSI command successful */ 2762 if (!ioctl_result) { /* SCSI command successful */
2760 scsi_release_request(SRpnt); 2763 st_release_request(SRpnt);
2761 SRpnt = NULL; 2764 SRpnt = NULL;
2762 STps->drv_block = blkno; 2765 STps->drv_block = blkno;
2763 STps->drv_file = fileno; 2766 STps->drv_file = fileno;
@@ -2872,7 +2875,7 @@ static int st_int_ioctl(struct scsi_tape *STp, unsigned int cmd_in, unsigned lon
2872 /* Try the other possible state of Page Format if not 2875 /* Try the other possible state of Page Format if not
2873 already tried */ 2876 already tried */
2874 STp->use_pf = !STp->use_pf | PF_TESTED; 2877 STp->use_pf = !STp->use_pf | PF_TESTED;
2875 scsi_release_request(SRpnt); 2878 st_release_request(SRpnt);
2876 SRpnt = NULL; 2879 SRpnt = NULL;
2877 return st_int_ioctl(STp, cmd_in, arg); 2880 return st_int_ioctl(STp, cmd_in, arg);
2878 } 2881 }
@@ -2882,7 +2885,7 @@ static int st_int_ioctl(struct scsi_tape *STp, unsigned int cmd_in, unsigned lon
2882 if (cmdstatp->sense_hdr.sense_key == BLANK_CHECK) 2885 if (cmdstatp->sense_hdr.sense_key == BLANK_CHECK)
2883 STps->eof = ST_EOD; 2886 STps->eof = ST_EOD;
2884 2887
2885 scsi_release_request(SRpnt); 2888 st_release_request(SRpnt);
2886 SRpnt = NULL; 2889 SRpnt = NULL;
2887 } 2890 }
2888 2891
@@ -2898,7 +2901,7 @@ static int get_location(struct scsi_tape *STp, unsigned int *block, int *partiti
2898{ 2901{
2899 int result; 2902 int result;
2900 unsigned char scmd[MAX_COMMAND_SIZE]; 2903 unsigned char scmd[MAX_COMMAND_SIZE];
2901 struct scsi_request *SRpnt; 2904 struct st_request *SRpnt;
2902 DEB( char *name = tape_name(STp); ) 2905 DEB( char *name = tape_name(STp); )
2903 2906
2904 if (STp->ready != ST_READY) 2907 if (STp->ready != ST_READY)
@@ -2944,7 +2947,7 @@ static int get_location(struct scsi_tape *STp, unsigned int *block, int *partiti
2944 DEBC(printk(ST_DEB_MSG "%s: Got tape pos. blk %d part %d.\n", name, 2947 DEBC(printk(ST_DEB_MSG "%s: Got tape pos. blk %d part %d.\n", name,
2945 *block, *partition)); 2948 *block, *partition));
2946 } 2949 }
2947 scsi_release_request(SRpnt); 2950 st_release_request(SRpnt);
2948 SRpnt = NULL; 2951 SRpnt = NULL;
2949 2952
2950 return result; 2953 return result;
@@ -2961,7 +2964,7 @@ static int set_location(struct scsi_tape *STp, unsigned int block, int partition
2961 unsigned int blk; 2964 unsigned int blk;
2962 int timeout; 2965 int timeout;
2963 unsigned char scmd[MAX_COMMAND_SIZE]; 2966 unsigned char scmd[MAX_COMMAND_SIZE];
2964 struct scsi_request *SRpnt; 2967 struct st_request *SRpnt;
2965 DEB( char *name = tape_name(STp); ) 2968 DEB( char *name = tape_name(STp); )
2966 2969
2967 if (STp->ready != ST_READY) 2970 if (STp->ready != ST_READY)
@@ -3047,7 +3050,7 @@ static int set_location(struct scsi_tape *STp, unsigned int block, int partition
3047 result = 0; 3050 result = 0;
3048 } 3051 }
3049 3052
3050 scsi_release_request(SRpnt); 3053 st_release_request(SRpnt);
3051 SRpnt = NULL; 3054 SRpnt = NULL;
3052 3055
3053 return result; 3056 return result;
@@ -3577,7 +3580,7 @@ static long st_compat_ioctl(struct file *file, unsigned int cmd, unsigned long a
3577static struct st_buffer * 3580static struct st_buffer *
3578 new_tape_buffer(int from_initialization, int need_dma, int max_sg) 3581 new_tape_buffer(int from_initialization, int need_dma, int max_sg)
3579{ 3582{
3580 int i, got = 0, segs = 0; 3583 int i, got = 0;
3581 gfp_t priority; 3584 gfp_t priority;
3582 struct st_buffer *tb; 3585 struct st_buffer *tb;
3583 3586
@@ -3594,10 +3597,8 @@ static struct st_buffer *
3594 return NULL; 3597 return NULL;
3595 } 3598 }
3596 memset(tb, 0, i); 3599 memset(tb, 0, i);
3597 tb->frp_segs = tb->orig_frp_segs = segs; 3600 tb->frp_segs = tb->orig_frp_segs = 0;
3598 tb->use_sg = max_sg; 3601 tb->use_sg = max_sg;
3599 if (segs > 0)
3600 tb->b_data = page_address(tb->sg[0].page);
3601 tb->frp = (struct st_buf_fragment *)(&(tb->sg[0]) + max_sg); 3602 tb->frp = (struct st_buf_fragment *)(&(tb->sg[0]) + max_sg);
3602 3603
3603 tb->in_use = 1; 3604 tb->in_use = 1;
@@ -3628,7 +3629,7 @@ static int enlarge_buffer(struct st_buffer * STbuffer, int new_size, int need_dm
3628 priority = GFP_KERNEL | __GFP_NOWARN; 3629 priority = GFP_KERNEL | __GFP_NOWARN;
3629 if (need_dma) 3630 if (need_dma)
3630 priority |= GFP_DMA; 3631 priority |= GFP_DMA;
3631 for (b_size = PAGE_SIZE, order=0; 3632 for (b_size = PAGE_SIZE, order=0; order <= 6 &&
3632 b_size < new_size - STbuffer->buffer_size; 3633 b_size < new_size - STbuffer->buffer_size;
3633 order++, b_size *= 2) 3634 order++, b_size *= 2)
3634 ; /* empty */ 3635 ; /* empty */
@@ -3670,6 +3671,7 @@ static void normalize_buffer(struct st_buffer * STbuffer)
3670 } 3671 }
3671 STbuffer->frp_segs = STbuffer->orig_frp_segs; 3672 STbuffer->frp_segs = STbuffer->orig_frp_segs;
3672 STbuffer->frp_sg_current = 0; 3673 STbuffer->frp_sg_current = 0;
3674 STbuffer->sg_segs = 0;
3673} 3675}
3674 3676
3675 3677
@@ -3882,7 +3884,6 @@ static int st_probe(struct device *dev)
3882 struct st_buffer *buffer; 3884 struct st_buffer *buffer;
3883 int i, j, mode, dev_num, error; 3885 int i, j, mode, dev_num, error;
3884 char *stp; 3886 char *stp;
3885 u64 bounce_limit;
3886 3887
3887 if (SDp->type != TYPE_TAPE) 3888 if (SDp->type != TYPE_TAPE)
3888 return -ENODEV; 3889 return -ENODEV;
@@ -3892,7 +3893,8 @@ static int st_probe(struct device *dev)
3892 return -ENODEV; 3893 return -ENODEV;
3893 } 3894 }
3894 3895
3895 i = SDp->host->sg_tablesize; 3896 i = min(SDp->request_queue->max_hw_segments,
3897 SDp->request_queue->max_phys_segments);
3896 if (st_max_sg_segs < i) 3898 if (st_max_sg_segs < i)
3897 i = st_max_sg_segs; 3899 i = st_max_sg_segs;
3898 buffer = new_tape_buffer(1, (SDp->host)->unchecked_isa_dma, i); 3900 buffer = new_tape_buffer(1, (SDp->host)->unchecked_isa_dma, i);
@@ -3994,11 +3996,6 @@ static int st_probe(struct device *dev)
3994 tpnt->long_timeout = ST_LONG_TIMEOUT; 3996 tpnt->long_timeout = ST_LONG_TIMEOUT;
3995 tpnt->try_dio = try_direct_io && !SDp->host->unchecked_isa_dma; 3997 tpnt->try_dio = try_direct_io && !SDp->host->unchecked_isa_dma;
3996 3998
3997 bounce_limit = scsi_calculate_bounce_limit(SDp->host) >> PAGE_SHIFT;
3998 if (bounce_limit > ULONG_MAX)
3999 bounce_limit = ULONG_MAX;
4000 tpnt->max_pfn = bounce_limit;
4001
4002 for (i = 0; i < ST_NBR_MODES; i++) { 3999 for (i = 0; i < ST_NBR_MODES; i++) {
4003 STm = &(tpnt->modes[i]); 4000 STm = &(tpnt->modes[i]);
4004 STm->defined = 0; 4001 STm->defined = 0;
@@ -4077,9 +4074,9 @@ static int st_probe(struct device *dev)
4077 4074
4078 sdev_printk(KERN_WARNING, SDp, 4075 sdev_printk(KERN_WARNING, SDp,
4079 "Attached scsi tape %s", tape_name(tpnt)); 4076 "Attached scsi tape %s", tape_name(tpnt));
4080 printk(KERN_WARNING "%s: try direct i/o: %s (alignment %d B), max page reachable by HBA %lu\n", 4077 printk(KERN_WARNING "%s: try direct i/o: %s (alignment %d B)\n",
4081 tape_name(tpnt), tpnt->try_dio ? "yes" : "no", 4078 tape_name(tpnt), tpnt->try_dio ? "yes" : "no",
4082 queue_dma_alignment(SDp->request_queue) + 1, tpnt->max_pfn); 4079 queue_dma_alignment(SDp->request_queue) + 1);
4083 4080
4084 return 0; 4081 return 0;
4085 4082
@@ -4185,7 +4182,11 @@ static void scsi_tape_release(struct kref *kref)
4185 4182
4186static void st_intr(struct scsi_cmnd *SCpnt) 4183static void st_intr(struct scsi_cmnd *SCpnt)
4187{ 4184{
4188 scsi_io_completion(SCpnt, (SCpnt->result ? 0: SCpnt->bufflen), 1); 4185 /*
4186 * The caller should be checking the request's errors
4187 * value.
4188 */
4189 scsi_io_completion(SCpnt, SCpnt->bufflen, 0);
4189} 4190}
4190 4191
4191/* 4192/*
@@ -4197,7 +4198,7 @@ static int st_init_command(struct scsi_cmnd *SCpnt)
4197 if (!(SCpnt->request->flags & REQ_BLOCK_PC)) 4198 if (!(SCpnt->request->flags & REQ_BLOCK_PC))
4198 return 0; 4199 return 0;
4199 4200
4200 scsi_setup_blk_pc_cmnd(SCpnt, 0); 4201 scsi_setup_blk_pc_cmnd(SCpnt);
4201 SCpnt->done = st_intr; 4202 SCpnt->done = st_intr;
4202 return 1; 4203 return 1;
4203} 4204}
@@ -4390,34 +4391,6 @@ static void do_create_class_files(struct scsi_tape *STp, int dev_num, int mode)
4390 return; 4391 return;
4391} 4392}
4392 4393
4393
4394/* Pin down user pages and put them into a scatter gather list. Returns <= 0 if
4395 - mapping of all pages not successful
4396 - any page is above max_pfn
4397 (i.e., either completely successful or fails)
4398*/
4399static int st_map_user_pages(struct scatterlist *sgl, const unsigned int max_pages,
4400 unsigned long uaddr, size_t count, int rw,
4401 unsigned long max_pfn)
4402{
4403 int i, nr_pages;
4404
4405 nr_pages = sgl_map_user_pages(sgl, max_pages, uaddr, count, rw);
4406 if (nr_pages <= 0)
4407 return nr_pages;
4408
4409 for (i=0; i < nr_pages; i++) {
4410 if (page_to_pfn(sgl[i].page) > max_pfn)
4411 goto out_unmap;
4412 }
4413 return nr_pages;
4414
4415 out_unmap:
4416 sgl_unmap_user_pages(sgl, nr_pages, 0);
4417 return 0;
4418}
4419
4420
4421/* The following functions may be useful for a larger audience. */ 4394/* The following functions may be useful for a larger audience. */
4422static int sgl_map_user_pages(struct scatterlist *sgl, const unsigned int max_pages, 4395static int sgl_map_user_pages(struct scatterlist *sgl, const unsigned int max_pages,
4423 unsigned long uaddr, size_t count, int rw) 4396 unsigned long uaddr, size_t count, int rw)
diff --git a/drivers/scsi/st.h b/drivers/scsi/st.h
index 790acac160bc..411209048d74 100644
--- a/drivers/scsi/st.h
+++ b/drivers/scsi/st.h
@@ -4,6 +4,7 @@
4 4
5#include <linux/completion.h> 5#include <linux/completion.h>
6#include <linux/kref.h> 6#include <linux/kref.h>
7#include <scsi/scsi_cmnd.h>
7 8
8/* Descriptor for analyzed sense data */ 9/* Descriptor for analyzed sense data */
9struct st_cmdstatus { 10struct st_cmdstatus {
@@ -17,6 +18,17 @@ struct st_cmdstatus {
17 u8 deferred; 18 u8 deferred;
18}; 19};
19 20
21struct scsi_tape;
22
23/* scsi tape command */
24struct st_request {
25 unsigned char cmd[MAX_COMMAND_SIZE];
26 unsigned char sense[SCSI_SENSE_BUFFERSIZE];
27 int result;
28 struct scsi_tape *stp;
29 struct completion *waiting;
30};
31
20/* The tape buffer descriptor. */ 32/* The tape buffer descriptor. */
21struct st_buffer { 33struct st_buffer {
22 unsigned char in_use; 34 unsigned char in_use;
@@ -28,7 +40,7 @@ struct st_buffer {
28 int read_pointer; 40 int read_pointer;
29 int writing; 41 int writing;
30 int syscall_result; 42 int syscall_result;
31 struct scsi_request *last_SRpnt; 43 struct st_request *last_SRpnt;
32 struct st_cmdstatus cmdstat; 44 struct st_cmdstatus cmdstat;
33 unsigned char *b_data; 45 unsigned char *b_data;
34 unsigned short use_sg; /* zero or max number of s/g segments for this adapter */ 46 unsigned short use_sg; /* zero or max number of s/g segments for this adapter */
diff --git a/drivers/scsi/sun3_NCR5380.c b/drivers/scsi/sun3_NCR5380.c
index c041bfd56e12..25cced91c8a6 100644
--- a/drivers/scsi/sun3_NCR5380.c
+++ b/drivers/scsi/sun3_NCR5380.c
@@ -70,6 +70,7 @@
70 * 70 *
71 */ 71 */
72#include <scsi/scsi_dbg.h> 72#include <scsi/scsi_dbg.h>
73#include <scsi/scsi_transport_spi.h>
73 74
74/* 75/*
75 * Further development / testing that should be done : 76 * Further development / testing that should be done :
@@ -2378,7 +2379,7 @@ static void NCR5380_information_transfer (struct Scsi_Host *instance)
2378 * 3..length+1 arguments 2379 * 3..length+1 arguments
2379 * 2380 *
2380 * Start the extended message buffer with the EXTENDED_MESSAGE 2381 * Start the extended message buffer with the EXTENDED_MESSAGE
2381 * byte, since scsi_print_msg() wants the whole thing. 2382 * byte, since spi_print_msg() wants the whole thing.
2382 */ 2383 */
2383 extended_msg[0] = EXTENDED_MESSAGE; 2384 extended_msg[0] = EXTENDED_MESSAGE;
2384 /* Accept first byte by clearing ACK */ 2385 /* Accept first byte by clearing ACK */
@@ -2431,7 +2432,7 @@ static void NCR5380_information_transfer (struct Scsi_Host *instance)
2431 default: 2432 default:
2432 if (!tmp) { 2433 if (!tmp) {
2433 printk(KERN_DEBUG "scsi%d: rejecting message ", HOSTNO); 2434 printk(KERN_DEBUG "scsi%d: rejecting message ", HOSTNO);
2434 scsi_print_msg (extended_msg); 2435 spi_print_msg(extended_msg);
2435 printk("\n"); 2436 printk("\n");
2436 } else if (tmp != EXTENDED_MESSAGE) 2437 } else if (tmp != EXTENDED_MESSAGE)
2437 printk(KERN_DEBUG "scsi%d: rejecting unknown " 2438 printk(KERN_DEBUG "scsi%d: rejecting unknown "
@@ -2566,7 +2567,7 @@ static void NCR5380_reselect (struct Scsi_Host *instance)
2566 2567
2567 if (!(msg[0] & 0x80)) { 2568 if (!(msg[0] & 0x80)) {
2568 printk(KERN_DEBUG "scsi%d: expecting IDENTIFY message, got ", HOSTNO); 2569 printk(KERN_DEBUG "scsi%d: expecting IDENTIFY message, got ", HOSTNO);
2569 scsi_print_msg(msg); 2570 spi_print_msg(msg);
2570 do_abort(instance); 2571 do_abort(instance);
2571 return; 2572 return;
2572 } 2573 }
diff --git a/drivers/scsi/sym53c8xx_2/sym_defs.h b/drivers/scsi/sym53c8xx_2/sym_defs.h
index 2d9437d7242b..3659dd7b9d76 100644
--- a/drivers/scsi/sym53c8xx_2/sym_defs.h
+++ b/drivers/scsi/sym53c8xx_2/sym_defs.h
@@ -40,7 +40,7 @@
40#ifndef SYM_DEFS_H 40#ifndef SYM_DEFS_H
41#define SYM_DEFS_H 41#define SYM_DEFS_H
42 42
43#define SYM_VERSION "2.2.1" 43#define SYM_VERSION "2.2.2"
44#define SYM_DRIVER_NAME "sym-" SYM_VERSION 44#define SYM_DRIVER_NAME "sym-" SYM_VERSION
45 45
46/* 46/*
diff --git a/drivers/scsi/sym53c8xx_2/sym_fw.c b/drivers/scsi/sym53c8xx_2/sym_fw.c
index fd36cf9858cb..9916a2a22558 100644
--- a/drivers/scsi/sym53c8xx_2/sym_fw.c
+++ b/drivers/scsi/sym53c8xx_2/sym_fw.c
@@ -37,11 +37,7 @@
37 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA 37 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
38 */ 38 */
39 39
40#ifdef __FreeBSD__
41#include <dev/sym/sym_glue.h>
42#else
43#include "sym_glue.h" 40#include "sym_glue.h"
44#endif
45 41
46/* 42/*
47 * Macros used for all firmwares. 43 * Macros used for all firmwares.
@@ -60,19 +56,12 @@
60#define SYM_FWA_SCR sym_fw1a_scr 56#define SYM_FWA_SCR sym_fw1a_scr
61#define SYM_FWB_SCR sym_fw1b_scr 57#define SYM_FWB_SCR sym_fw1b_scr
62#define SYM_FWZ_SCR sym_fw1z_scr 58#define SYM_FWZ_SCR sym_fw1z_scr
63#ifdef __FreeBSD__
64#include <dev/sym/sym_fw1.h>
65#else
66#include "sym_fw1.h" 59#include "sym_fw1.h"
67#endif
68static struct sym_fwa_ofs sym_fw1a_ofs = { 60static struct sym_fwa_ofs sym_fw1a_ofs = {
69 SYM_GEN_FW_A(struct SYM_FWA_SCR) 61 SYM_GEN_FW_A(struct SYM_FWA_SCR)
70}; 62};
71static struct sym_fwb_ofs sym_fw1b_ofs = { 63static struct sym_fwb_ofs sym_fw1b_ofs = {
72 SYM_GEN_FW_B(struct SYM_FWB_SCR) 64 SYM_GEN_FW_B(struct SYM_FWB_SCR)
73#ifdef SYM_OPT_HANDLE_DIR_UNKNOWN
74 SYM_GEN_B(struct SYM_FWB_SCR, data_io)
75#endif
76}; 65};
77static struct sym_fwz_ofs sym_fw1z_ofs = { 66static struct sym_fwz_ofs sym_fw1z_ofs = {
78 SYM_GEN_FW_Z(struct SYM_FWZ_SCR) 67 SYM_GEN_FW_Z(struct SYM_FWZ_SCR)
@@ -88,19 +77,12 @@ static struct sym_fwz_ofs sym_fw1z_ofs = {
88#define SYM_FWA_SCR sym_fw2a_scr 77#define SYM_FWA_SCR sym_fw2a_scr
89#define SYM_FWB_SCR sym_fw2b_scr 78#define SYM_FWB_SCR sym_fw2b_scr
90#define SYM_FWZ_SCR sym_fw2z_scr 79#define SYM_FWZ_SCR sym_fw2z_scr
91#ifdef __FreeBSD__
92#include <dev/sym/sym_fw2.h>
93#else
94#include "sym_fw2.h" 80#include "sym_fw2.h"
95#endif
96static struct sym_fwa_ofs sym_fw2a_ofs = { 81static struct sym_fwa_ofs sym_fw2a_ofs = {
97 SYM_GEN_FW_A(struct SYM_FWA_SCR) 82 SYM_GEN_FW_A(struct SYM_FWA_SCR)
98}; 83};
99static struct sym_fwb_ofs sym_fw2b_ofs = { 84static struct sym_fwb_ofs sym_fw2b_ofs = {
100 SYM_GEN_FW_B(struct SYM_FWB_SCR) 85 SYM_GEN_FW_B(struct SYM_FWB_SCR)
101#ifdef SYM_OPT_HANDLE_DIR_UNKNOWN
102 SYM_GEN_B(struct SYM_FWB_SCR, data_io)
103#endif
104 SYM_GEN_B(struct SYM_FWB_SCR, start64) 86 SYM_GEN_B(struct SYM_FWB_SCR, start64)
105 SYM_GEN_B(struct SYM_FWB_SCR, pm_handle) 87 SYM_GEN_B(struct SYM_FWB_SCR, pm_handle)
106}; 88};
diff --git a/drivers/scsi/sym53c8xx_2/sym_fw.h b/drivers/scsi/sym53c8xx_2/sym_fw.h
index 43f6810a4045..66ec35beab5b 100644
--- a/drivers/scsi/sym53c8xx_2/sym_fw.h
+++ b/drivers/scsi/sym53c8xx_2/sym_fw.h
@@ -92,9 +92,6 @@ struct sym_fwa_ofs {
92}; 92};
93struct sym_fwb_ofs { 93struct sym_fwb_ofs {
94 SYM_GEN_FW_B(u_short) 94 SYM_GEN_FW_B(u_short)
95#ifdef SYM_OPT_HANDLE_DIR_UNKNOWN
96 SYM_GEN_B(u_short, data_io)
97#endif
98 SYM_GEN_B(u_short, start64) 95 SYM_GEN_B(u_short, start64)
99 SYM_GEN_B(u_short, pm_handle) 96 SYM_GEN_B(u_short, pm_handle)
100}; 97};
@@ -111,9 +108,6 @@ struct sym_fwa_ba {
111}; 108};
112struct sym_fwb_ba { 109struct sym_fwb_ba {
113 SYM_GEN_FW_B(u32) 110 SYM_GEN_FW_B(u32)
114#ifdef SYM_OPT_HANDLE_DIR_UNKNOWN
115 SYM_GEN_B(u32, data_io)
116#endif
117 SYM_GEN_B(u32, start64); 111 SYM_GEN_B(u32, start64);
118 SYM_GEN_B(u32, pm_handle); 112 SYM_GEN_B(u32, pm_handle);
119}; 113};
diff --git a/drivers/scsi/sym53c8xx_2/sym_fw1.h b/drivers/scsi/sym53c8xx_2/sym_fw1.h
index cdd92d82f4b2..7b39f4a35e98 100644
--- a/drivers/scsi/sym53c8xx_2/sym_fw1.h
+++ b/drivers/scsi/sym53c8xx_2/sym_fw1.h
@@ -197,12 +197,6 @@ struct SYM_FWB_SCR {
197 u32 bad_status [ 7]; 197 u32 bad_status [ 7];
198 u32 wsr_ma_helper [ 4]; 198 u32 wsr_ma_helper [ 4];
199 199
200#ifdef SYM_OPT_HANDLE_DIR_UNKNOWN
201 /* Unknown direction handling */
202 u32 data_io [ 2];
203 u32 data_io_com [ 8];
204 u32 data_io_out [ 7];
205#endif
206 /* Data area */ 200 /* Data area */
207 u32 zero [ 1]; 201 u32 zero [ 1];
208 u32 scratch [ 1]; 202 u32 scratch [ 1];
@@ -1747,48 +1741,6 @@ static struct SYM_FWB_SCR SYM_FWB_SCR = {
1747 SCR_JUMP, 1741 SCR_JUMP,
1748 PADDR_A (dispatch), 1742 PADDR_A (dispatch),
1749 1743
1750#ifdef SYM_OPT_HANDLE_DIR_UNKNOWN
1751}/*-------------------------< DATA_IO >--------------------------*/,{
1752 /*
1753 * We jump here if the data direction was unknown at the
1754 * time we had to queue the command to the scripts processor.
1755 * Pointers had been set as follow in this situation:
1756 * savep --> DATA_IO
1757 * lastp --> start pointer when DATA_IN
1758 * wlastp --> start pointer when DATA_OUT
1759 * This script sets savep and lastp according to the
1760 * direction chosen by the target.
1761 */
1762 SCR_JUMP ^ IFTRUE (WHEN (SCR_DATA_OUT)),
1763 PADDR_B (data_io_out),
1764}/*-------------------------< DATA_IO_COM >----------------------*/,{
1765 /*
1766 * Direction is DATA IN.
1767 */
1768 SCR_COPY (4),
1769 HADDR_1 (ccb_head.lastp),
1770 HADDR_1 (ccb_head.savep),
1771 /*
1772 * Jump to the SCRIPTS according to actual direction.
1773 */
1774 SCR_COPY (4),
1775 HADDR_1 (ccb_head.savep),
1776 RADDR_1 (temp),
1777 SCR_RETURN,
1778 0,
1779}/*-------------------------< DATA_IO_OUT >----------------------*/,{
1780 /*
1781 * Direction is DATA OUT.
1782 */
1783 SCR_REG_REG (HF_REG, SCR_AND, (~HF_DATA_IN)),
1784 0,
1785 SCR_COPY (4),
1786 HADDR_1 (ccb_head.wlastp),
1787 HADDR_1 (ccb_head.lastp),
1788 SCR_JUMP,
1789 PADDR_B(data_io_com),
1790#endif /* SYM_OPT_HANDLE_DIR_UNKNOWN */
1791
1792}/*-------------------------< ZERO >-----------------------------*/,{ 1744}/*-------------------------< ZERO >-----------------------------*/,{
1793 SCR_DATA_ZERO, 1745 SCR_DATA_ZERO,
1794}/*-------------------------< SCRATCH >--------------------------*/,{ 1746}/*-------------------------< SCRATCH >--------------------------*/,{
diff --git a/drivers/scsi/sym53c8xx_2/sym_fw2.h b/drivers/scsi/sym53c8xx_2/sym_fw2.h
index 7ea7151f5d1d..851f2706f220 100644
--- a/drivers/scsi/sym53c8xx_2/sym_fw2.h
+++ b/drivers/scsi/sym53c8xx_2/sym_fw2.h
@@ -191,13 +191,6 @@ struct SYM_FWB_SCR {
191 u32 pm_wsr_handle [ 38]; 191 u32 pm_wsr_handle [ 38];
192 u32 wsr_ma_helper [ 4]; 192 u32 wsr_ma_helper [ 4];
193 193
194#ifdef SYM_OPT_HANDLE_DIR_UNKNOWN
195 /* Unknown direction handling */
196 u32 data_io [ 2];
197 u32 data_io_in [ 2];
198 u32 data_io_com [ 6];
199 u32 data_io_out [ 8];
200#endif
201 /* Data area */ 194 /* Data area */
202 u32 zero [ 1]; 195 u32 zero [ 1];
203 u32 scratch [ 1]; 196 u32 scratch [ 1];
@@ -1838,51 +1831,6 @@ static struct SYM_FWB_SCR SYM_FWB_SCR = {
1838 SCR_JUMP, 1831 SCR_JUMP,
1839 PADDR_A (dispatch), 1832 PADDR_A (dispatch),
1840 1833
1841#ifdef SYM_OPT_HANDLE_DIR_UNKNOWN
1842}/*-------------------------< DATA_IO >--------------------------*/,{
1843 /*
1844 * We jump here if the data direction was unknown at the
1845 * time we had to queue the command to the scripts processor.
1846 * Pointers had been set as follow in this situation:
1847 * savep --> DATA_IO
1848 * lastp --> start pointer when DATA_IN
1849 * wlastp --> start pointer when DATA_OUT
1850 * This script sets savep and lastp according to the
1851 * direction chosen by the target.
1852 */
1853 SCR_JUMP ^ IFTRUE (WHEN (SCR_DATA_OUT)),
1854 PADDR_B (data_io_out),
1855}/*-------------------------< DATA_IO_IN >-----------------------*/,{
1856 /*
1857 * Direction is DATA IN.
1858 */
1859 SCR_LOAD_REL (scratcha, 4),
1860 offsetof (struct sym_ccb, phys.head.lastp),
1861}/*-------------------------< DATA_IO_COM >----------------------*/,{
1862 SCR_STORE_REL (scratcha, 4),
1863 offsetof (struct sym_ccb, phys.head.savep),
1864
1865 /*
1866 * Jump to the SCRIPTS according to actual direction.
1867 */
1868 SCR_LOAD_REL (temp, 4),
1869 offsetof (struct sym_ccb, phys.head.savep),
1870 SCR_RETURN,
1871 0,
1872}/*-------------------------< DATA_IO_OUT >----------------------*/,{
1873 /*
1874 * Direction is DATA OUT.
1875 */
1876 SCR_REG_REG (HF_REG, SCR_AND, (~HF_DATA_IN)),
1877 0,
1878 SCR_LOAD_REL (scratcha, 4),
1879 offsetof (struct sym_ccb, phys.head.wlastp),
1880 SCR_STORE_REL (scratcha, 4),
1881 offsetof (struct sym_ccb, phys.head.lastp),
1882 SCR_JUMP,
1883 PADDR_B(data_io_com),
1884#endif /* SYM_OPT_HANDLE_DIR_UNKNOWN */
1885
1886}/*-------------------------< ZERO >-----------------------------*/,{ 1834}/*-------------------------< ZERO >-----------------------------*/,{
1887 SCR_DATA_ZERO, 1835 SCR_DATA_ZERO,
1888}/*-------------------------< SCRATCH >--------------------------*/,{ 1836}/*-------------------------< SCRATCH >--------------------------*/,{
diff --git a/drivers/scsi/sym53c8xx_2/sym_glue.c b/drivers/scsi/sym53c8xx_2/sym_glue.c
index 7fc0b97173e1..1fffd2b3c654 100644
--- a/drivers/scsi/sym53c8xx_2/sym_glue.c
+++ b/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
514 */ 514 */
515int sym_setup_data_and_start(struct sym_hcb *np, struct scsi_cmnd *cmd, struct sym_ccb *cp) 515int sym_setup_data_and_start(struct sym_hcb *np, struct scsi_cmnd *cmd, struct sym_ccb *cp)
516{ 516{
517 int dir;
518 struct sym_tcb *tp = &np->target[cp->target]; 517 struct sym_tcb *tp = &np->target[cp->target];
519 struct sym_lcb *lp = sym_lp(tp, cp->lun); 518 struct sym_lcb *lp = sym_lp(tp, cp->lun);
519 u32 lastp, goalp;
520 int dir;
520 521
521 /* 522 /*
522 * Build the CDB. 523 * Build the CDB.
@@ -534,15 +535,47 @@ int sym_setup_data_and_start(struct sym_hcb *np, struct scsi_cmnd *cmd, struct s
534 sym_set_cam_status(cmd, DID_ERROR); 535 sym_set_cam_status(cmd, DID_ERROR);
535 goto out_abort; 536 goto out_abort;
536 } 537 }
538
539 /*
540 * No segments means no data.
541 */
542 if (!cp->segments)
543 dir = DMA_NONE;
537 } else { 544 } else {
538 cp->data_len = 0; 545 cp->data_len = 0;
539 cp->segments = 0; 546 cp->segments = 0;
540 } 547 }
541 548
542 /* 549 /*
543 * Set data pointers. 550 * Set the data pointer.
544 */ 551 */
545 sym_setup_data_pointers(np, cp, dir); 552 switch (dir) {
553 case DMA_BIDIRECTIONAL:
554 printk("%s: got DMA_BIDIRECTIONAL command", sym_name(np));
555 sym_set_cam_status(cmd, DID_ERROR);
556 goto out_abort;
557 case DMA_TO_DEVICE:
558 goalp = SCRIPTA_BA(np, data_out2) + 8;
559 lastp = goalp - 8 - (cp->segments * (2*4));
560 break;
561 case DMA_FROM_DEVICE:
562 cp->host_flags |= HF_DATA_IN;
563 goalp = SCRIPTA_BA(np, data_in2) + 8;
564 lastp = goalp - 8 - (cp->segments * (2*4));
565 break;
566 case DMA_NONE:
567 default:
568 lastp = goalp = SCRIPTB_BA(np, no_data);
569 break;
570 }
571
572 /*
573 * Set all pointers values needed by SCRIPTS.
574 */
575 cp->phys.head.lastp = cpu_to_scr(lastp);
576 cp->phys.head.savep = cpu_to_scr(lastp);
577 cp->startp = cp->phys.head.savep;
578 cp->goalp = cpu_to_scr(goalp);
546 579
547 /* 580 /*
548 * When `#ifed 1', the code below makes the driver 581 * 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
563 /* 596 /*
564 * activate this job. 597 * activate this job.
565 */ 598 */
566 if (lp) 599 sym_start_next_ccbs(np, lp, 2);
567 sym_start_next_ccbs(np, lp, 2);
568 else
569 sym_put_start_queue(np, cp);
570 return 0; 600 return 0;
571 601
572out_abort: 602out_abort:
@@ -981,15 +1011,14 @@ static int device_queue_depth(struct sym_hcb *np, int target, int lun)
981 1011
982static int sym53c8xx_slave_alloc(struct scsi_device *sdev) 1012static int sym53c8xx_slave_alloc(struct scsi_device *sdev)
983{ 1013{
984 struct sym_hcb *np; 1014 struct sym_hcb *np = sym_get_hcb(sdev->host);
985 struct sym_tcb *tp; 1015 struct sym_tcb *tp = &np->target[sdev->id];
1016 struct sym_lcb *lp;
986 1017
987 if (sdev->id >= SYM_CONF_MAX_TARGET || sdev->lun >= SYM_CONF_MAX_LUN) 1018 if (sdev->id >= SYM_CONF_MAX_TARGET || sdev->lun >= SYM_CONF_MAX_LUN)
988 return -ENXIO; 1019 return -ENXIO;
989 1020
990 np = sym_get_hcb(sdev->host); 1021 tp->starget = sdev->sdev_target;
991 tp = &np->target[sdev->id];
992
993 /* 1022 /*
994 * Fail the device init if the device is flagged NOSCAN at BOOT in 1023 * Fail the device init if the device is flagged NOSCAN at BOOT in
995 * the NVRAM. This may speed up boot and maintain coherency with 1024 * the NVRAM. This may speed up boot and maintain coherency with
@@ -999,35 +1028,41 @@ static int sym53c8xx_slave_alloc(struct scsi_device *sdev)
999 * lun devices behave badly when asked for a non zero LUN. 1028 * lun devices behave badly when asked for a non zero LUN.
1000 */ 1029 */
1001 1030
1002 if ((tp->usrflags & SYM_SCAN_BOOT_DISABLED) || 1031 if (tp->usrflags & SYM_SCAN_BOOT_DISABLED) {
1003 ((tp->usrflags & SYM_SCAN_LUNS_DISABLED) && sdev->lun != 0)) {
1004 tp->usrflags &= ~SYM_SCAN_BOOT_DISABLED; 1032 tp->usrflags &= ~SYM_SCAN_BOOT_DISABLED;
1033 starget_printk(KERN_INFO, tp->starget,
1034 "Scan at boot disabled in NVRAM\n");
1005 return -ENXIO; 1035 return -ENXIO;
1006 } 1036 }
1007 1037
1008 tp->starget = sdev->sdev_target; 1038 if (tp->usrflags & SYM_SCAN_LUNS_DISABLED) {
1039 if (sdev->lun != 0)
1040 return -ENXIO;
1041 starget_printk(KERN_INFO, tp->starget,
1042 "Multiple LUNs disabled in NVRAM\n");
1043 }
1044
1045 lp = sym_alloc_lcb(np, sdev->id, sdev->lun);
1046 if (!lp)
1047 return -ENOMEM;
1048
1049 spi_min_period(tp->starget) = tp->usr_period;
1050 spi_max_width(tp->starget) = tp->usr_width;
1051
1009 return 0; 1052 return 0;
1010} 1053}
1011 1054
1012/* 1055/*
1013 * Linux entry point for device queue sizing. 1056 * Linux entry point for device queue sizing.
1014 */ 1057 */
1015static int sym53c8xx_slave_configure(struct scsi_device *device) 1058static int sym53c8xx_slave_configure(struct scsi_device *sdev)
1016{ 1059{
1017 struct sym_hcb *np = sym_get_hcb(device->host); 1060 struct sym_hcb *np = sym_get_hcb(sdev->host);
1018 struct sym_tcb *tp = &np->target[device->id]; 1061 struct sym_tcb *tp = &np->target[sdev->id];
1019 struct sym_lcb *lp; 1062 struct sym_lcb *lp = sym_lp(tp, sdev->lun);
1020 int reqtags, depth_to_use; 1063 int reqtags, depth_to_use;
1021 1064
1022 /* 1065 /*
1023 * Allocate the LCB if not yet.
1024 * If it fail, we may well be in the sh*t. :)
1025 */
1026 lp = sym_alloc_lcb(np, device->id, device->lun);
1027 if (!lp)
1028 return -ENOMEM;
1029
1030 /*
1031 * Get user flags. 1066 * Get user flags.
1032 */ 1067 */
1033 lp->curr_flags = lp->user_flags; 1068 lp->curr_flags = lp->user_flags;
@@ -1038,10 +1073,10 @@ static int sym53c8xx_slave_configure(struct scsi_device *device)
1038 * Use at least 2. 1073 * Use at least 2.
1039 * Donnot use more than our maximum. 1074 * Donnot use more than our maximum.
1040 */ 1075 */
1041 reqtags = device_queue_depth(np, device->id, device->lun); 1076 reqtags = device_queue_depth(np, sdev->id, sdev->lun);
1042 if (reqtags > tp->usrtags) 1077 if (reqtags > tp->usrtags)
1043 reqtags = tp->usrtags; 1078 reqtags = tp->usrtags;
1044 if (!device->tagged_supported) 1079 if (!sdev->tagged_supported)
1045 reqtags = 0; 1080 reqtags = 0;
1046#if 1 /* Avoid to locally queue commands for no good reasons */ 1081#if 1 /* Avoid to locally queue commands for no good reasons */
1047 if (reqtags > SYM_CONF_MAX_TAG) 1082 if (reqtags > SYM_CONF_MAX_TAG)
@@ -1050,19 +1085,30 @@ static int sym53c8xx_slave_configure(struct scsi_device *device)
1050#else 1085#else
1051 depth_to_use = (reqtags ? SYM_CONF_MAX_TAG : 2); 1086 depth_to_use = (reqtags ? SYM_CONF_MAX_TAG : 2);
1052#endif 1087#endif
1053 scsi_adjust_queue_depth(device, 1088 scsi_adjust_queue_depth(sdev,
1054 (device->tagged_supported ? 1089 (sdev->tagged_supported ?
1055 MSG_SIMPLE_TAG : 0), 1090 MSG_SIMPLE_TAG : 0),
1056 depth_to_use); 1091 depth_to_use);
1057 lp->s.scdev_depth = depth_to_use; 1092 lp->s.scdev_depth = depth_to_use;
1058 sym_tune_dev_queuing(tp, device->lun, reqtags); 1093 sym_tune_dev_queuing(tp, sdev->lun, reqtags);
1059 1094
1060 if (!spi_initial_dv(device->sdev_target)) 1095 if (!spi_initial_dv(sdev->sdev_target))
1061 spi_dv_device(device); 1096 spi_dv_device(sdev);
1062 1097
1063 return 0; 1098 return 0;
1064} 1099}
1065 1100
1101static void sym53c8xx_slave_destroy(struct scsi_device *sdev)
1102{
1103 struct sym_hcb *np = sym_get_hcb(sdev->host);
1104 struct sym_lcb *lp = sym_lp(&np->target[sdev->id], sdev->lun);
1105
1106 if (lp->itlq_tbl)
1107 sym_mfree_dma(lp->itlq_tbl, SYM_CONF_MAX_TASK * 4, "ITLQ_TBL");
1108 kfree(lp->cb_tags);
1109 sym_mfree_dma(lp, sizeof(*lp), "LCB");
1110}
1111
1066/* 1112/*
1067 * Linux entry point for info() function 1113 * Linux entry point for info() function
1068 */ 1114 */
@@ -1497,7 +1543,7 @@ static int sym_setup_bus_dma_mask(struct sym_hcb *np)
1497{ 1543{
1498#if SYM_CONF_DMA_ADDRESSING_MODE > 0 1544#if SYM_CONF_DMA_ADDRESSING_MODE > 0
1499#if SYM_CONF_DMA_ADDRESSING_MODE == 1 1545#if SYM_CONF_DMA_ADDRESSING_MODE == 1
1500#define DMA_DAC_MASK 0x000000ffffffffffULL /* 40-bit */ 1546#define DMA_DAC_MASK DMA_40BIT_MASK
1501#elif SYM_CONF_DMA_ADDRESSING_MODE == 2 1547#elif SYM_CONF_DMA_ADDRESSING_MODE == 2
1502#define DMA_DAC_MASK DMA_64BIT_MASK 1548#define DMA_DAC_MASK DMA_64BIT_MASK
1503#endif 1549#endif
@@ -1926,6 +1972,7 @@ static struct scsi_host_template sym2_template = {
1926 .queuecommand = sym53c8xx_queue_command, 1972 .queuecommand = sym53c8xx_queue_command,
1927 .slave_alloc = sym53c8xx_slave_alloc, 1973 .slave_alloc = sym53c8xx_slave_alloc,
1928 .slave_configure = sym53c8xx_slave_configure, 1974 .slave_configure = sym53c8xx_slave_configure,
1975 .slave_destroy = sym53c8xx_slave_destroy,
1929 .eh_abort_handler = sym53c8xx_eh_abort_handler, 1976 .eh_abort_handler = sym53c8xx_eh_abort_handler,
1930 .eh_device_reset_handler = sym53c8xx_eh_device_reset_handler, 1977 .eh_device_reset_handler = sym53c8xx_eh_device_reset_handler,
1931 .eh_bus_reset_handler = sym53c8xx_eh_bus_reset_handler, 1978 .eh_bus_reset_handler = sym53c8xx_eh_bus_reset_handler,
diff --git a/drivers/scsi/sym53c8xx_2/sym_glue.h b/drivers/scsi/sym53c8xx_2/sym_glue.h
index d3d52f14d7c0..cc92d0c70cd7 100644
--- a/drivers/scsi/sym53c8xx_2/sym_glue.h
+++ b/drivers/scsi/sym53c8xx_2/sym_glue.h
@@ -68,7 +68,6 @@
68 */ 68 */
69#define SYM_CONF_TIMER_INTERVAL ((HZ+1)/2) 69#define SYM_CONF_TIMER_INTERVAL ((HZ+1)/2)
70 70
71#define SYM_OPT_HANDLE_DIR_UNKNOWN
72#define SYM_OPT_HANDLE_DEVICE_QUEUEING 71#define SYM_OPT_HANDLE_DEVICE_QUEUEING
73#define SYM_OPT_LIMIT_COMMAND_REORDERING 72#define SYM_OPT_LIMIT_COMMAND_REORDERING
74 73
@@ -268,6 +267,5 @@ void sym_xpt_async_bus_reset(struct sym_hcb *np);
268void sym_xpt_async_sent_bdr(struct sym_hcb *np, int target); 267void sym_xpt_async_sent_bdr(struct sym_hcb *np, int target);
269int sym_setup_data_and_start (struct sym_hcb *np, struct scsi_cmnd *csio, struct sym_ccb *cp); 268int sym_setup_data_and_start (struct sym_hcb *np, struct scsi_cmnd *csio, struct sym_ccb *cp);
270void sym_log_bus_error(struct sym_hcb *np); 269void sym_log_bus_error(struct sym_hcb *np);
271void sym_sniff_inquiry(struct sym_hcb *np, struct scsi_cmnd *cmd, int resid);
272 270
273#endif /* SYM_GLUE_H */ 271#endif /* SYM_GLUE_H */
diff --git a/drivers/scsi/sym53c8xx_2/sym_hipd.c b/drivers/scsi/sym53c8xx_2/sym_hipd.c
index 1564ca203a3e..8260f040d39c 100644
--- a/drivers/scsi/sym53c8xx_2/sym_hipd.c
+++ b/drivers/scsi/sym53c8xx_2/sym_hipd.c
@@ -40,6 +40,7 @@
40 40
41#include <linux/slab.h> 41#include <linux/slab.h>
42#include <asm/param.h> /* for timeouts in units of HZ */ 42#include <asm/param.h> /* for timeouts in units of HZ */
43#include <scsi/scsi_dbg.h>
43 44
44#include "sym_glue.h" 45#include "sym_glue.h"
45#include "sym_nvram.h" 46#include "sym_nvram.h"
@@ -70,32 +71,12 @@ static void sym_printl_hex(u_char *p, int n)
70 printf (".\n"); 71 printf (".\n");
71} 72}
72 73
73/*
74 * Print out the content of a SCSI message.
75 */
76static int sym_show_msg (u_char * msg)
77{
78 u_char i;
79 printf ("%x",*msg);
80 if (*msg==M_EXTENDED) {
81 for (i=1;i<8;i++) {
82 if (i-1>msg[1]) break;
83 printf ("-%x",msg[i]);
84 }
85 return (i+1);
86 } else if ((*msg & 0xf0) == 0x20) {
87 printf ("-%x",msg[1]);
88 return (2);
89 }
90 return (1);
91}
92
93static void sym_print_msg(struct sym_ccb *cp, char *label, u_char *msg) 74static void sym_print_msg(struct sym_ccb *cp, char *label, u_char *msg)
94{ 75{
95 sym_print_addr(cp->cmd, "%s: ", label); 76 sym_print_addr(cp->cmd, "%s: ", label);
96 77
97 sym_show_msg(msg); 78 spi_print_msg(msg);
98 printf(".\n"); 79 printf("\n");
99} 80}
100 81
101static void sym_print_nego_msg(struct sym_hcb *np, int target, char *label, u_char *msg) 82static 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
103 struct sym_tcb *tp = &np->target[target]; 84 struct sym_tcb *tp = &np->target[target];
104 dev_info(&tp->starget->dev, "%s: ", label); 85 dev_info(&tp->starget->dev, "%s: ", label);
105 86
106 sym_show_msg(msg); 87 spi_print_msg(msg);
107 printf(".\n"); 88 printf("\n");
108} 89}
109 90
110/* 91/*
@@ -635,29 +616,6 @@ static __inline void sym_init_burst(struct sym_hcb *np, u_char bc)
635 } 616 }
636} 617}
637 618
638
639/*
640 * Print out the list of targets that have some flag disabled by user.
641 */
642static void sym_print_targets_flag(struct sym_hcb *np, int mask, char *msg)
643{
644 int cnt;
645 int i;
646
647 for (cnt = 0, i = 0 ; i < SYM_CONF_MAX_TARGET ; i++) {
648 if (i == np->myaddr)
649 continue;
650 if (np->target[i].usrflags & mask) {
651 if (!cnt++)
652 printf("%s: %s disabled for targets",
653 sym_name(np), msg);
654 printf(" %d", i);
655 }
656 }
657 if (cnt)
658 printf(".\n");
659}
660
661/* 619/*
662 * Save initial settings of some IO registers. 620 * Save initial settings of some IO registers.
663 * Assumed to have been set by BIOS. 621 * 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
962 tp->usrflags |= (SYM_DISC_ENABLED | SYM_TAGS_ENABLED); 920 tp->usrflags |= (SYM_DISC_ENABLED | SYM_TAGS_ENABLED);
963 tp->usrtags = SYM_SETUP_MAX_TAG; 921 tp->usrtags = SYM_SETUP_MAX_TAG;
964 922
965 sym_nvram_setup_target(np, i, nvram); 923 sym_nvram_setup_target(tp, i, nvram);
966 924
967 if (!tp->usrtags) 925 if (!tp->usrtags)
968 tp->usrflags &= ~SYM_TAGS_ENABLED; 926 tp->usrflags &= ~SYM_TAGS_ENABLED;
@@ -1005,13 +963,6 @@ static int sym_prepare_setting(struct Scsi_Host *shost, struct sym_hcb *np, stru
1005 sym_name(np), np->rv_scntl3, np->rv_dmode, np->rv_dcntl, 963 sym_name(np), np->rv_scntl3, np->rv_dmode, np->rv_dcntl,
1006 np->rv_ctest3, np->rv_ctest4, np->rv_ctest5); 964 np->rv_ctest3, np->rv_ctest4, np->rv_ctest5);
1007 } 965 }
1008 /*
1009 * Let user be aware of targets that have some disable flags set.
1010 */
1011 sym_print_targets_flag(np, SYM_SCAN_BOOT_DISABLED, "SCAN AT BOOT");
1012 if (sym_verbose)
1013 sym_print_targets_flag(np, SYM_SCAN_LUNS_DISABLED,
1014 "SCAN FOR LUNS");
1015 966
1016 return 0; 967 return 0;
1017} 968}
@@ -1523,7 +1474,7 @@ static int sym_prepare_nego(struct sym_hcb *np, struct sym_ccb *cp, u_char *msgp
1523/* 1474/*
1524 * Insert a job into the start queue. 1475 * Insert a job into the start queue.
1525 */ 1476 */
1526void sym_put_start_queue(struct sym_hcb *np, struct sym_ccb *cp) 1477static void sym_put_start_queue(struct sym_hcb *np, struct sym_ccb *cp)
1527{ 1478{
1528 u_short qidx; 1479 u_short qidx;
1529 1480
@@ -3654,7 +3605,7 @@ static int sym_evaluate_dp(struct sym_hcb *np, struct sym_ccb *cp, u32 scr, int
3654 * If result is dp_sg = SYM_CONF_MAX_SG, then we are at the 3605 * If result is dp_sg = SYM_CONF_MAX_SG, then we are at the
3655 * end of the data. 3606 * end of the data.
3656 */ 3607 */
3657 tmp = scr_to_cpu(sym_goalp(cp)); 3608 tmp = scr_to_cpu(cp->goalp);
3658 dp_sg = SYM_CONF_MAX_SG; 3609 dp_sg = SYM_CONF_MAX_SG;
3659 if (dp_scr != tmp) 3610 if (dp_scr != tmp)
3660 dp_sg -= (tmp - 8 - (int)dp_scr) / (2*4); 3611 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
3761 * And our alchemy:) allows to easily calculate the data 3712 * And our alchemy:) allows to easily calculate the data
3762 * script address we want to return for the next data phase. 3713 * script address we want to return for the next data phase.
3763 */ 3714 */
3764 dp_ret = cpu_to_scr(sym_goalp(cp)); 3715 dp_ret = cpu_to_scr(cp->goalp);
3765 dp_ret = dp_ret - 8 - (SYM_CONF_MAX_SG - dp_sg) * (2*4); 3716 dp_ret = dp_ret - 8 - (SYM_CONF_MAX_SG - dp_sg) * (2*4);
3766 3717
3767 /* 3718 /*
@@ -3857,7 +3808,7 @@ int sym_compute_residual(struct sym_hcb *np, struct sym_ccb *cp)
3857 * If all data has been transferred, 3808 * If all data has been transferred,
3858 * there is no residual. 3809 * there is no residual.
3859 */ 3810 */
3860 if (cp->phys.head.lastp == sym_goalp(cp)) 3811 if (cp->phys.head.lastp == cp->goalp)
3861 return resid; 3812 return resid;
3862 3813
3863 /* 3814 /*
@@ -4664,30 +4615,7 @@ struct sym_ccb *sym_get_ccb (struct sym_hcb *np, struct scsi_cmnd *cmd, u_char t
4664 goto out; 4615 goto out;
4665 cp = sym_que_entry(qp, struct sym_ccb, link_ccbq); 4616 cp = sym_que_entry(qp, struct sym_ccb, link_ccbq);
4666 4617
4667#ifndef SYM_OPT_HANDLE_DEVICE_QUEUEING 4618 {
4668 /*
4669 * If the LCB is not yet available and the LUN
4670 * has been probed ok, try to allocate the LCB.
4671 */
4672 if (!lp && sym_is_bit(tp->lun_map, ln)) {
4673 lp = sym_alloc_lcb(np, tn, ln);
4674 if (!lp)
4675 goto out_free;
4676 }
4677#endif
4678
4679 /*
4680 * If the LCB is not available here, then the
4681 * logical unit is not yet discovered. For those
4682 * ones only accept 1 SCSI IO per logical unit,
4683 * since we cannot allow disconnections.
4684 */
4685 if (!lp) {
4686 if (!sym_is_bit(tp->busy0_map, ln))
4687 sym_set_bit(tp->busy0_map, ln);
4688 else
4689 goto out_free;
4690 } else {
4691 /* 4619 /*
4692 * If we have been asked for a tagged command. 4620 * If we have been asked for a tagged command.
4693 */ 4621 */
@@ -4840,12 +4768,6 @@ void sym_free_ccb (struct sym_hcb *np, struct sym_ccb *cp)
4840 lp->head.resel_sa = 4768 lp->head.resel_sa =
4841 cpu_to_scr(SCRIPTB_BA(np, resel_bad_lun)); 4769 cpu_to_scr(SCRIPTB_BA(np, resel_bad_lun));
4842 } 4770 }
4843 /*
4844 * Otherwise, we only accept 1 IO per LUN.
4845 * Clear the bit that keeps track of this IO.
4846 */
4847 else
4848 sym_clr_bit(tp->busy0_map, cp->lun);
4849 4771
4850 /* 4772 /*
4851 * We donnot queue more than 1 ccb per target 4773 * 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)
4997struct sym_lcb *sym_alloc_lcb (struct sym_hcb *np, u_char tn, u_char ln) 4919struct sym_lcb *sym_alloc_lcb (struct sym_hcb *np, u_char tn, u_char ln)
4998{ 4920{
4999 struct sym_tcb *tp = &np->target[tn]; 4921 struct sym_tcb *tp = &np->target[tn];
5000 struct sym_lcb *lp = sym_lp(tp, ln); 4922 struct sym_lcb *lp = NULL;
5001
5002 /*
5003 * Already done, just return.
5004 */
5005 if (lp)
5006 return lp;
5007
5008 /*
5009 * Donnot allow LUN control block
5010 * allocation for not probed LUNs.
5011 */
5012 if (!sym_is_bit(tp->lun_map, ln))
5013 return NULL;
5014 4923
5015 /* 4924 /*
5016 * Initialize the target control block if not yet. 4925 * 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)
5082 lp->started_max = SYM_CONF_MAX_TASK; 4991 lp->started_max = SYM_CONF_MAX_TASK;
5083 lp->started_limit = SYM_CONF_MAX_TASK; 4992 lp->started_limit = SYM_CONF_MAX_TASK;
5084#endif 4993#endif
5085 /* 4994
5086 * If we are busy, count the IO.
5087 */
5088 if (sym_is_bit(tp->busy0_map, ln)) {
5089 lp->busy_itl = 1;
5090 sym_clr_bit(tp->busy0_map, ln);
5091 }
5092fail: 4995fail:
5093 return lp; 4996 return lp;
5094} 4997}
@@ -5103,12 +5006,6 @@ static void sym_alloc_lcb_tags (struct sym_hcb *np, u_char tn, u_char ln)
5103 int i; 5006 int i;
5104 5007
5105 /* 5008 /*
5106 * If LCB not available, try to allocate it.
5107 */
5108 if (!lp && !(lp = sym_alloc_lcb(np, tn, ln)))
5109 goto fail;
5110
5111 /*
5112 * Allocate the task table and and the tag allocation 5009 * Allocate the task table and and the tag allocation
5113 * circular buffer. We want both or none. 5010 * circular buffer. We want both or none.
5114 */ 5011 */
@@ -5481,8 +5378,7 @@ finish:
5481 /* 5378 /*
5482 * Donnot start more than 1 command after an error. 5379 * Donnot start more than 1 command after an error.
5483 */ 5380 */
5484 if (lp) 5381 sym_start_next_ccbs(np, lp, 1);
5485 sym_start_next_ccbs(np, lp, 1);
5486#endif 5382#endif
5487} 5383}
5488 5384
@@ -5521,17 +5417,11 @@ void sym_complete_ok (struct sym_hcb *np, struct sym_ccb *cp)
5521 lp = sym_lp(tp, cp->lun); 5417 lp = sym_lp(tp, cp->lun);
5522 5418
5523 /* 5419 /*
5524 * Assume device discovered on first success.
5525 */
5526 if (!lp)
5527 sym_set_bit(tp->lun_map, cp->lun);
5528
5529 /*
5530 * If all data have been transferred, given than no 5420 * If all data have been transferred, given than no
5531 * extended error did occur, there is no residual. 5421 * extended error did occur, there is no residual.
5532 */ 5422 */
5533 resid = 0; 5423 resid = 0;
5534 if (cp->phys.head.lastp != sym_goalp(cp)) 5424 if (cp->phys.head.lastp != cp->goalp)
5535 resid = sym_compute_residual(np, cp); 5425 resid = sym_compute_residual(np, cp);
5536 5426
5537 /* 5427 /*
@@ -5551,15 +5441,6 @@ if (resid)
5551 */ 5441 */
5552 sym_set_cam_result_ok(cp, cmd, resid); 5442 sym_set_cam_result_ok(cp, cmd, resid);
5553 5443
5554#ifdef SYM_OPT_SNIFF_INQUIRY
5555 /*
5556 * On standard INQUIRY response (EVPD and CmDt
5557 * not set), sniff out device capabilities.
5558 */
5559 if (cp->cdb_buf[0] == INQUIRY && !(cp->cdb_buf[1] & 0x3))
5560 sym_sniff_inquiry(np, cmd, resid);
5561#endif
5562
5563#ifdef SYM_OPT_HANDLE_DEVICE_QUEUEING 5444#ifdef SYM_OPT_HANDLE_DEVICE_QUEUEING
5564 /* 5445 /*
5565 * If max number of started ccbs had been reduced, 5446 * If max number of started ccbs had been reduced,
@@ -5587,7 +5468,7 @@ if (resid)
5587 /* 5468 /*
5588 * Requeue a couple of awaiting scsi commands. 5469 * Requeue a couple of awaiting scsi commands.
5589 */ 5470 */
5590 if (lp && !sym_que_empty(&lp->waiting_ccbq)) 5471 if (!sym_que_empty(&lp->waiting_ccbq))
5591 sym_start_next_ccbs(np, lp, 2); 5472 sym_start_next_ccbs(np, lp, 2);
5592#endif 5473#endif
5593 /* 5474 /*
@@ -5830,8 +5711,7 @@ void sym_hcb_free(struct sym_hcb *np)
5830 SYM_QUEHEAD *qp; 5711 SYM_QUEHEAD *qp;
5831 struct sym_ccb *cp; 5712 struct sym_ccb *cp;
5832 struct sym_tcb *tp; 5713 struct sym_tcb *tp;
5833 struct sym_lcb *lp; 5714 int target;
5834 int target, lun;
5835 5715
5836 if (np->scriptz0) 5716 if (np->scriptz0)
5837 sym_mfree_dma(np->scriptz0, np->scriptz_sz, "SCRIPTZ0"); 5717 sym_mfree_dma(np->scriptz0, np->scriptz_sz, "SCRIPTZ0");
@@ -5857,16 +5737,6 @@ void sym_hcb_free(struct sym_hcb *np)
5857 5737
5858 for (target = 0; target < SYM_CONF_MAX_TARGET ; target++) { 5738 for (target = 0; target < SYM_CONF_MAX_TARGET ; target++) {
5859 tp = &np->target[target]; 5739 tp = &np->target[target];
5860 for (lun = 0 ; lun < SYM_CONF_MAX_LUN ; lun++) {
5861 lp = sym_lp(tp, lun);
5862 if (!lp)
5863 continue;
5864 if (lp->itlq_tbl)
5865 sym_mfree_dma(lp->itlq_tbl, SYM_CONF_MAX_TASK*4,
5866 "ITLQ_TBL");
5867 kfree(lp->cb_tags);
5868 sym_mfree_dma(lp, sizeof(*lp), "LCB");
5869 }
5870#if SYM_CONF_MAX_LUN > 1 5740#if SYM_CONF_MAX_LUN > 1
5871 kfree(tp->lunmp); 5741 kfree(tp->lunmp);
5872#endif 5742#endif
diff --git a/drivers/scsi/sym53c8xx_2/sym_hipd.h b/drivers/scsi/sym53c8xx_2/sym_hipd.h
index 3a264a408216..2456090bb241 100644
--- a/drivers/scsi/sym53c8xx_2/sym_hipd.h
+++ b/drivers/scsi/sym53c8xx_2/sym_hipd.h
@@ -48,12 +48,6 @@
48 * They may be defined in platform specific headers, if they 48 * They may be defined in platform specific headers, if they
49 * are useful. 49 * are useful.
50 * 50 *
51 * SYM_OPT_HANDLE_DIR_UNKNOWN
52 * When this option is set, the SCRIPTS used by the driver
53 * are able to handle SCSI transfers with direction not
54 * supplied by user.
55 * (set for Linux-2.0.X)
56 *
57 * SYM_OPT_HANDLE_DEVICE_QUEUEING 51 * SYM_OPT_HANDLE_DEVICE_QUEUEING
58 * When this option is set, the driver will use a queue per 52 * When this option is set, the driver will use a queue per
59 * device and handle QUEUE FULL status requeuing internally. 53 * device and handle QUEUE FULL status requeuing internally.
@@ -64,7 +58,6 @@
64 * (set for Linux) 58 * (set for Linux)
65 */ 59 */
66#if 0 60#if 0
67#define SYM_OPT_HANDLE_DIR_UNKNOWN
68#define SYM_OPT_HANDLE_DEVICE_QUEUEING 61#define SYM_OPT_HANDLE_DEVICE_QUEUEING
69#define SYM_OPT_LIMIT_COMMAND_REORDERING 62#define SYM_OPT_LIMIT_COMMAND_REORDERING
70#endif 63#endif
@@ -416,19 +409,6 @@ struct sym_tcb {
416 struct sym_lcb **lunmp; /* Other LCBs [1..MAX_LUN] */ 409 struct sym_lcb **lunmp; /* Other LCBs [1..MAX_LUN] */
417#endif 410#endif
418 411
419 /*
420 * Bitmap that tells about LUNs that succeeded at least
421 * 1 IO and therefore assumed to be a real device.
422 * Avoid useless allocation of the LCB structure.
423 */
424 u32 lun_map[(SYM_CONF_MAX_LUN+31)/32];
425
426 /*
427 * Bitmap that tells about LUNs that haven't yet an LCB
428 * allocated (not discovered or LCB allocation failed).
429 */
430 u32 busy0_map[(SYM_CONF_MAX_LUN+31)/32];
431
432#ifdef SYM_HAVE_STCB 412#ifdef SYM_HAVE_STCB
433 /* 413 /*
434 * O/S specific data structure. 414 * O/S specific data structure.
@@ -454,8 +434,10 @@ struct sym_tcb {
454 * Other user settable limits and options. 434 * Other user settable limits and options.
455 * These limits are read from the NVRAM if present. 435 * These limits are read from the NVRAM if present.
456 */ 436 */
457 u_char usrflags; 437 unsigned char usrflags;
458 u_short usrtags; 438 unsigned char usr_period;
439 unsigned char usr_width;
440 unsigned short usrtags;
459 struct scsi_target *starget; 441 struct scsi_target *starget;
460}; 442};
461 443
@@ -672,9 +654,6 @@ struct sym_ccbh {
672 */ 654 */
673 u32 savep; /* Jump address to saved data pointer */ 655 u32 savep; /* Jump address to saved data pointer */
674 u32 lastp; /* SCRIPTS address at end of data */ 656 u32 lastp; /* SCRIPTS address at end of data */
675#ifdef SYM_OPT_HANDLE_DIR_UNKNOWN
676 u32 wlastp;
677#endif
678 657
679 /* 658 /*
680 * Status fields. 659 * Status fields.
@@ -804,9 +783,6 @@ struct sym_ccb {
804 SYM_QUEHEAD link_ccbq; /* Link to free/busy CCB queue */ 783 SYM_QUEHEAD link_ccbq; /* Link to free/busy CCB queue */
805 u32 startp; /* Initial data pointer */ 784 u32 startp; /* Initial data pointer */
806 u32 goalp; /* Expected last data pointer */ 785 u32 goalp; /* Expected last data pointer */
807#ifdef SYM_OPT_HANDLE_DIR_UNKNOWN
808 u32 wgoalp;
809#endif
810 int ext_sg; /* Extreme data pointer, used */ 786 int ext_sg; /* Extreme data pointer, used */
811 int ext_ofs; /* to calculate the residual. */ 787 int ext_ofs; /* to calculate the residual. */
812#ifdef SYM_OPT_HANDLE_DEVICE_QUEUEING 788#ifdef SYM_OPT_HANDLE_DEVICE_QUEUEING
@@ -821,12 +797,6 @@ struct sym_ccb {
821 797
822#define CCB_BA(cp,lbl) cpu_to_scr(cp->ccb_ba + offsetof(struct sym_ccb, lbl)) 798#define CCB_BA(cp,lbl) cpu_to_scr(cp->ccb_ba + offsetof(struct sym_ccb, lbl))
823 799
824#ifdef SYM_OPT_HANDLE_DIR_UNKNOWN
825#define sym_goalp(cp) ((cp->host_flags & HF_DATA_IN) ? cp->goalp : cp->wgoalp)
826#else
827#define sym_goalp(cp) (cp->goalp)
828#endif
829
830typedef struct device *m_pool_ident_t; 800typedef struct device *m_pool_ident_t;
831 801
832/* 802/*
@@ -1077,7 +1047,6 @@ char *sym_driver_name(void);
1077void sym_print_xerr(struct scsi_cmnd *cmd, int x_status); 1047void sym_print_xerr(struct scsi_cmnd *cmd, int x_status);
1078int sym_reset_scsi_bus(struct sym_hcb *np, int enab_int); 1048int sym_reset_scsi_bus(struct sym_hcb *np, int enab_int);
1079struct sym_chip *sym_lookup_chip_table(u_short device_id, u_char revision); 1049struct sym_chip *sym_lookup_chip_table(u_short device_id, u_char revision);
1080void sym_put_start_queue(struct sym_hcb *np, struct sym_ccb *cp);
1081#ifdef SYM_OPT_HANDLE_DEVICE_QUEUEING 1050#ifdef SYM_OPT_HANDLE_DEVICE_QUEUEING
1082void sym_start_next_ccbs(struct sym_hcb *np, struct sym_lcb *lp, int maxn); 1051void sym_start_next_ccbs(struct sym_hcb *np, struct sym_lcb *lp, int maxn);
1083#endif 1052#endif
@@ -1136,71 +1105,6 @@ bad:
1136#endif 1105#endif
1137 1106
1138/* 1107/*
1139 * Set up data pointers used by SCRIPTS.
1140 * Called from O/S specific code.
1141 */
1142static inline void sym_setup_data_pointers(struct sym_hcb *np,
1143 struct sym_ccb *cp, int dir)
1144{
1145 u32 lastp, goalp;
1146
1147 /*
1148 * No segments means no data.
1149 */
1150 if (!cp->segments)
1151 dir = DMA_NONE;
1152
1153 /*
1154 * Set the data pointer.
1155 */
1156 switch(dir) {
1157#ifdef SYM_OPT_HANDLE_DIR_UNKNOWN
1158 case DMA_BIDIRECTIONAL:
1159#endif
1160 case DMA_TO_DEVICE:
1161 goalp = SCRIPTA_BA(np, data_out2) + 8;
1162 lastp = goalp - 8 - (cp->segments * (2*4));
1163#ifdef SYM_OPT_HANDLE_DIR_UNKNOWN
1164 cp->wgoalp = cpu_to_scr(goalp);
1165 if (dir != DMA_BIDIRECTIONAL)
1166 break;
1167 cp->phys.head.wlastp = cpu_to_scr(lastp);
1168 /* fall through */
1169#else
1170 break;
1171#endif
1172 case DMA_FROM_DEVICE:
1173 cp->host_flags |= HF_DATA_IN;
1174 goalp = SCRIPTA_BA(np, data_in2) + 8;
1175 lastp = goalp - 8 - (cp->segments * (2*4));
1176 break;
1177 case DMA_NONE:
1178 default:
1179#ifdef SYM_OPT_HANDLE_DIR_UNKNOWN
1180 cp->host_flags |= HF_DATA_IN;
1181#endif
1182 lastp = goalp = SCRIPTB_BA(np, no_data);
1183 break;
1184 }
1185
1186 /*
1187 * Set all pointers values needed by SCRIPTS.
1188 */
1189 cp->phys.head.lastp = cpu_to_scr(lastp);
1190 cp->phys.head.savep = cpu_to_scr(lastp);
1191 cp->startp = cp->phys.head.savep;
1192 cp->goalp = cpu_to_scr(goalp);
1193
1194#ifdef SYM_OPT_HANDLE_DIR_UNKNOWN
1195 /*
1196 * If direction is unknown, start at data_io.
1197 */
1198 if (dir == DMA_BIDIRECTIONAL)
1199 cp->phys.head.savep = cpu_to_scr(SCRIPTB_BA(np, data_io));
1200#endif
1201}
1202
1203/*
1204 * MEMORY ALLOCATOR. 1108 * MEMORY ALLOCATOR.
1205 */ 1109 */
1206 1110
diff --git a/drivers/scsi/sym53c8xx_2/sym_malloc.c b/drivers/scsi/sym53c8xx_2/sym_malloc.c
index a34d403ccc6c..92bf9b14a7a2 100644
--- a/drivers/scsi/sym53c8xx_2/sym_malloc.c
+++ b/drivers/scsi/sym53c8xx_2/sym_malloc.c
@@ -37,11 +37,7 @@
37 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA 37 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
38 */ 38 */
39 39
40#ifdef __FreeBSD__
41#include <dev/sym/sym_glue.h>
42#else
43#include "sym_glue.h" 40#include "sym_glue.h"
44#endif
45 41
46/* 42/*
47 * Simple power of two buddy-like generic allocator. 43 * Simple power of two buddy-like generic allocator.
diff --git a/drivers/scsi/sym53c8xx_2/sym_nvram.c b/drivers/scsi/sym53c8xx_2/sym_nvram.c
index 994b7566bcac..15d69298ab6e 100644
--- a/drivers/scsi/sym53c8xx_2/sym_nvram.c
+++ b/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
92 * Get target set-up from Symbios format NVRAM. 92 * Get target set-up from Symbios format NVRAM.
93 */ 93 */
94static void 94static void
95sym_Symbios_setup_target(struct sym_hcb *np, int target, Symbios_nvram *nvram) 95sym_Symbios_setup_target(struct sym_tcb *tp, int target, Symbios_nvram *nvram)
96{ 96{
97 struct sym_tcb *tp = &np->target[target];
98 Symbios_target *tn = &nvram->target[target]; 97 Symbios_target *tn = &nvram->target[target];
99 98
100 tp->usrtags = 99 if (!(tn->flags & SYMBIOS_QUEUE_TAGS_ENABLED))
101 (tn->flags & SYMBIOS_QUEUE_TAGS_ENABLED)? SYM_SETUP_MAX_TAG : 0; 100 tp->usrtags = 0;
102
103 if (!(tn->flags & SYMBIOS_DISCONNECT_ENABLE)) 101 if (!(tn->flags & SYMBIOS_DISCONNECT_ENABLE))
104 tp->usrflags &= ~SYM_DISC_ENABLED; 102 tp->usrflags &= ~SYM_DISC_ENABLED;
105 if (!(tn->flags & SYMBIOS_SCAN_AT_BOOT_TIME)) 103 if (!(tn->flags & SYMBIOS_SCAN_AT_BOOT_TIME))
106 tp->usrflags |= SYM_SCAN_BOOT_DISABLED; 104 tp->usrflags |= SYM_SCAN_BOOT_DISABLED;
107 if (!(tn->flags & SYMBIOS_SCAN_LUNS)) 105 if (!(tn->flags & SYMBIOS_SCAN_LUNS))
108 tp->usrflags |= SYM_SCAN_LUNS_DISABLED; 106 tp->usrflags |= SYM_SCAN_LUNS_DISABLED;
107 tp->usr_period = (tn->sync_period + 3) / 4;
108 tp->usr_width = (tn->bus_width == 0x8) ? 0 : 1;
109} 109}
110 110
111static const unsigned char Tekram_sync[16] = {
112 25, 31, 37, 43, 50, 62, 75, 125, 12, 15, 18, 21, 6, 7, 9, 10
113};
114
111/* 115/*
112 * Get target set-up from Tekram format NVRAM. 116 * Get target set-up from Tekram format NVRAM.
113 */ 117 */
114static void 118static void
115sym_Tekram_setup_target(struct sym_hcb *np, int target, Tekram_nvram *nvram) 119sym_Tekram_setup_target(struct sym_tcb *tp, int target, Tekram_nvram *nvram)
116{ 120{
117 struct sym_tcb *tp = &np->target[target];
118 struct Tekram_target *tn = &nvram->target[target]; 121 struct Tekram_target *tn = &nvram->target[target];
119 122
120 if (tn->flags & TEKRAM_TAGGED_COMMANDS) { 123 if (tn->flags & TEKRAM_TAGGED_COMMANDS) {
@@ -124,22 +127,22 @@ sym_Tekram_setup_target(struct sym_hcb *np, int target, Tekram_nvram *nvram)
124 if (tn->flags & TEKRAM_DISCONNECT_ENABLE) 127 if (tn->flags & TEKRAM_DISCONNECT_ENABLE)
125 tp->usrflags |= SYM_DISC_ENABLED; 128 tp->usrflags |= SYM_DISC_ENABLED;
126 129
127 /* If any device does not support parity, we will not use this option */ 130 if (tn->flags & TEKRAM_SYNC_NEGO)
128 if (!(tn->flags & TEKRAM_PARITY_CHECK)) 131 tp->usr_period = Tekram_sync[tn->sync_index & 0xf];
129 np->rv_scntl0 &= ~0x0a; /* SCSI parity checking disabled */ 132 tp->usr_width = (tn->flags & TEKRAM_WIDE_NEGO) ? 1 : 0;
130} 133}
131 134
132/* 135/*
133 * Get target setup from NVRAM. 136 * Get target setup from NVRAM.
134 */ 137 */
135void sym_nvram_setup_target(struct sym_hcb *np, int target, struct sym_nvram *nvp) 138void sym_nvram_setup_target(struct sym_tcb *tp, int target, struct sym_nvram *nvp)
136{ 139{
137 switch (nvp->type) { 140 switch (nvp->type) {
138 case SYM_SYMBIOS_NVRAM: 141 case SYM_SYMBIOS_NVRAM:
139 sym_Symbios_setup_target(np, target, &nvp->data.Symbios); 142 sym_Symbios_setup_target(tp, target, &nvp->data.Symbios);
140 break; 143 break;
141 case SYM_TEKRAM_NVRAM: 144 case SYM_TEKRAM_NVRAM:
142 sym_Tekram_setup_target(np, target, &nvp->data.Tekram); 145 sym_Tekram_setup_target(tp, target, &nvp->data.Tekram);
143 break; 146 break;
144 default: 147 default:
145 break; 148 break;
diff --git a/drivers/scsi/sym53c8xx_2/sym_nvram.h b/drivers/scsi/sym53c8xx_2/sym_nvram.h
index 1538bede5277..bdfbbb083b69 100644
--- a/drivers/scsi/sym53c8xx_2/sym_nvram.h
+++ b/drivers/scsi/sym53c8xx_2/sym_nvram.h
@@ -194,12 +194,12 @@ struct sym_nvram {
194 194
195#if SYM_CONF_NVRAM_SUPPORT 195#if SYM_CONF_NVRAM_SUPPORT
196void sym_nvram_setup_host(struct Scsi_Host *shost, struct sym_hcb *np, struct sym_nvram *nvram); 196void sym_nvram_setup_host(struct Scsi_Host *shost, struct sym_hcb *np, struct sym_nvram *nvram);
197void sym_nvram_setup_target (struct sym_hcb *np, int target, struct sym_nvram *nvp); 197void sym_nvram_setup_target (struct sym_tcb *tp, int target, struct sym_nvram *nvp);
198int sym_read_nvram (struct sym_device *np, struct sym_nvram *nvp); 198int sym_read_nvram (struct sym_device *np, struct sym_nvram *nvp);
199char *sym_nvram_type(struct sym_nvram *nvp); 199char *sym_nvram_type(struct sym_nvram *nvp);
200#else 200#else
201static inline void sym_nvram_setup_host(struct Scsi_Host *shost, struct sym_hcb *np, struct sym_nvram *nvram) { } 201static inline void sym_nvram_setup_host(struct Scsi_Host *shost, struct sym_hcb *np, struct sym_nvram *nvram) { }
202static inline void sym_nvram_setup_target(struct sym_hcb *np, struct sym_nvram *nvram) { } 202static inline void sym_nvram_setup_target(struct sym_tcb *tp, struct sym_nvram *nvram) { }
203static inline int sym_read_nvram(struct sym_device *np, struct sym_nvram *nvp) 203static inline int sym_read_nvram(struct sym_device *np, struct sym_nvram *nvp)
204{ 204{
205 nvp->type = 0; 205 nvp->type = 0;
diff --git a/drivers/scsi/sym53c8xx_comm.h b/drivers/scsi/sym53c8xx_comm.h
deleted file mode 100644
index 20ae2b17df58..000000000000
--- a/drivers/scsi/sym53c8xx_comm.h
+++ /dev/null
@@ -1,792 +0,0 @@
1/******************************************************************************
2** High Performance device driver for the Symbios 53C896 controller.
3**
4** Copyright (C) 1998-2001 Gerard Roudier <groudier@free.fr>
5**
6** This driver also supports all the Symbios 53C8XX controller family,
7** except 53C810 revisions < 16, 53C825 revisions < 16 and all
8** revisions of 53C815 controllers.
9**
10** This driver is based on the Linux port of the FreeBSD ncr driver.
11**
12** Copyright (C) 1994 Wolfgang Stanglmeier
13**
14**-----------------------------------------------------------------------------
15**
16** This program is free software; you can redistribute it and/or modify
17** it under the terms of the GNU General Public License as published by
18** the Free Software Foundation; either version 2 of the License, or
19** (at your option) any later version.
20**
21** This program is distributed in the hope that it will be useful,
22** but WITHOUT ANY WARRANTY; without even the implied warranty of
23** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
24** GNU General Public License for more details.
25**
26** You should have received a copy of the GNU General Public License
27** along with this program; if not, write to the Free Software
28** Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
29**
30**-----------------------------------------------------------------------------
31**
32** The Linux port of the FreeBSD ncr driver has been achieved in
33** november 1995 by:
34**
35** Gerard Roudier <groudier@free.fr>
36**
37** Being given that this driver originates from the FreeBSD version, and
38** in order to keep synergy on both, any suggested enhancements and corrections
39** received on Linux are automatically a potential candidate for the FreeBSD
40** version.
41**
42** The original driver has been written for 386bsd and FreeBSD by
43** Wolfgang Stanglmeier <wolf@cologne.de>
44** Stefan Esser <se@mi.Uni-Koeln.de>
45**
46**-----------------------------------------------------------------------------
47**
48** Major contributions:
49** --------------------
50**
51** NVRAM detection and reading.
52** Copyright (C) 1997 Richard Waltham <dormouse@farsrobt.demon.co.uk>
53**
54*******************************************************************************
55*/
56
57/*==========================================================
58**
59** Debugging tags
60**
61**==========================================================
62*/
63
64#define DEBUG_ALLOC (0x0001)
65#define DEBUG_PHASE (0x0002)
66#define DEBUG_QUEUE (0x0008)
67#define DEBUG_RESULT (0x0010)
68#define DEBUG_POINTER (0x0020)
69#define DEBUG_SCRIPT (0x0040)
70#define DEBUG_TINY (0x0080)
71#define DEBUG_TIMING (0x0100)
72#define DEBUG_NEGO (0x0200)
73#define DEBUG_TAGS (0x0400)
74#define DEBUG_SCATTER (0x0800)
75#define DEBUG_IC (0x1000)
76
77/*
78** Enable/Disable debug messages.
79** Can be changed at runtime too.
80*/
81
82#ifdef SCSI_NCR_DEBUG_INFO_SUPPORT
83static int ncr_debug = SCSI_NCR_DEBUG_FLAGS;
84 #define DEBUG_FLAGS ncr_debug
85#else
86 #define DEBUG_FLAGS SCSI_NCR_DEBUG_FLAGS
87#endif
88
89static inline struct list_head *ncr_list_pop(struct list_head *head)
90{
91 if (!list_empty(head)) {
92 struct list_head *elem = head->next;
93
94 list_del(elem);
95 return elem;
96 }
97
98 return NULL;
99}
100
101#ifdef __sparc__
102#include <asm/irq.h>
103#endif
104
105/*==========================================================
106**
107** Simple power of two buddy-like allocator.
108**
109** This simple code is not intended to be fast, but to
110** provide power of 2 aligned memory allocations.
111** Since the SCRIPTS processor only supplies 8 bit
112** arithmetic, this allocator allows simple and fast
113** address calculations from the SCRIPTS code.
114** In addition, cache line alignment is guaranteed for
115** power of 2 cache line size.
116** Enhanced in linux-2.3.44 to provide a memory pool
117** per pcidev to support dynamic dma mapping. (I would
118** have preferred a real bus astraction, btw).
119**
120**==========================================================
121*/
122
123#define MEMO_SHIFT 4 /* 16 bytes minimum memory chunk */
124#if PAGE_SIZE >= 8192
125#define MEMO_PAGE_ORDER 0 /* 1 PAGE maximum */
126#else
127#define MEMO_PAGE_ORDER 1 /* 2 PAGES maximum */
128#endif
129#define MEMO_FREE_UNUSED /* Free unused pages immediately */
130#define MEMO_WARN 1
131#define MEMO_GFP_FLAGS GFP_ATOMIC
132#define MEMO_CLUSTER_SHIFT (PAGE_SHIFT+MEMO_PAGE_ORDER)
133#define MEMO_CLUSTER_SIZE (1UL << MEMO_CLUSTER_SHIFT)
134#define MEMO_CLUSTER_MASK (MEMO_CLUSTER_SIZE-1)
135
136typedef u_long m_addr_t; /* Enough bits to bit-hack addresses */
137typedef struct device *m_bush_t; /* Something that addresses DMAable */
138
139typedef struct m_link { /* Link between free memory chunks */
140 struct m_link *next;
141} m_link_s;
142
143typedef struct m_vtob { /* Virtual to Bus address translation */
144 struct m_vtob *next;
145 m_addr_t vaddr;
146 m_addr_t baddr;
147} m_vtob_s;
148#define VTOB_HASH_SHIFT 5
149#define VTOB_HASH_SIZE (1UL << VTOB_HASH_SHIFT)
150#define VTOB_HASH_MASK (VTOB_HASH_SIZE-1)
151#define VTOB_HASH_CODE(m) \
152 ((((m_addr_t) (m)) >> MEMO_CLUSTER_SHIFT) & VTOB_HASH_MASK)
153
154typedef struct m_pool { /* Memory pool of a given kind */
155 m_bush_t bush;
156 m_addr_t (*getp)(struct m_pool *);
157 void (*freep)(struct m_pool *, m_addr_t);
158 int nump;
159 m_vtob_s *(vtob[VTOB_HASH_SIZE]);
160 struct m_pool *next;
161 struct m_link h[PAGE_SHIFT-MEMO_SHIFT+MEMO_PAGE_ORDER+1];
162} m_pool_s;
163
164static void *___m_alloc(m_pool_s *mp, int size)
165{
166 int i = 0;
167 int s = (1 << MEMO_SHIFT);
168 int j;
169 m_addr_t a;
170 m_link_s *h = mp->h;
171
172 if (size > (PAGE_SIZE << MEMO_PAGE_ORDER))
173 return NULL;
174
175 while (size > s) {
176 s <<= 1;
177 ++i;
178 }
179
180 j = i;
181 while (!h[j].next) {
182 if (s == (PAGE_SIZE << MEMO_PAGE_ORDER)) {
183 h[j].next = (m_link_s *)mp->getp(mp);
184 if (h[j].next)
185 h[j].next->next = NULL;
186 break;
187 }
188 ++j;
189 s <<= 1;
190 }
191 a = (m_addr_t) h[j].next;
192 if (a) {
193 h[j].next = h[j].next->next;
194 while (j > i) {
195 j -= 1;
196 s >>= 1;
197 h[j].next = (m_link_s *) (a+s);
198 h[j].next->next = NULL;
199 }
200 }
201#ifdef DEBUG
202 printk("___m_alloc(%d) = %p\n", size, (void *) a);
203#endif
204 return (void *) a;
205}
206
207static void ___m_free(m_pool_s *mp, void *ptr, int size)
208{
209 int i = 0;
210 int s = (1 << MEMO_SHIFT);
211 m_link_s *q;
212 m_addr_t a, b;
213 m_link_s *h = mp->h;
214
215#ifdef DEBUG
216 printk("___m_free(%p, %d)\n", ptr, size);
217#endif
218
219 if (size > (PAGE_SIZE << MEMO_PAGE_ORDER))
220 return;
221
222 while (size > s) {
223 s <<= 1;
224 ++i;
225 }
226
227 a = (m_addr_t) ptr;
228
229 while (1) {
230#ifdef MEMO_FREE_UNUSED
231 if (s == (PAGE_SIZE << MEMO_PAGE_ORDER)) {
232 mp->freep(mp, a);
233 break;
234 }
235#endif
236 b = a ^ s;
237 q = &h[i];
238 while (q->next && q->next != (m_link_s *) b) {
239 q = q->next;
240 }
241 if (!q->next) {
242 ((m_link_s *) a)->next = h[i].next;
243 h[i].next = (m_link_s *) a;
244 break;
245 }
246 q->next = q->next->next;
247 a = a & b;
248 s <<= 1;
249 ++i;
250 }
251}
252
253static DEFINE_SPINLOCK(ncr53c8xx_lock);
254
255static void *__m_calloc2(m_pool_s *mp, int size, char *name, int uflags)
256{
257 void *p;
258
259 p = ___m_alloc(mp, size);
260
261 if (DEBUG_FLAGS & DEBUG_ALLOC)
262 printk ("new %-10s[%4d] @%p.\n", name, size, p);
263
264 if (p)
265 memset(p, 0, size);
266 else if (uflags & MEMO_WARN)
267 printk (NAME53C8XX ": failed to allocate %s[%d]\n", name, size);
268
269 return p;
270}
271
272#define __m_calloc(mp, s, n) __m_calloc2(mp, s, n, MEMO_WARN)
273
274static void __m_free(m_pool_s *mp, void *ptr, int size, char *name)
275{
276 if (DEBUG_FLAGS & DEBUG_ALLOC)
277 printk ("freeing %-10s[%4d] @%p.\n", name, size, ptr);
278
279 ___m_free(mp, ptr, size);
280
281}
282
283/*
284 * With pci bus iommu support, we use a default pool of unmapped memory
285 * for memory we donnot need to DMA from/to and one pool per pcidev for
286 * memory accessed by the PCI chip. `mp0' is the default not DMAable pool.
287 */
288
289static m_addr_t ___mp0_getp(m_pool_s *mp)
290{
291 m_addr_t m = __get_free_pages(MEMO_GFP_FLAGS, MEMO_PAGE_ORDER);
292 if (m)
293 ++mp->nump;
294 return m;
295}
296
297static void ___mp0_freep(m_pool_s *mp, m_addr_t m)
298{
299 free_pages(m, MEMO_PAGE_ORDER);
300 --mp->nump;
301}
302
303static m_pool_s mp0 = {NULL, ___mp0_getp, ___mp0_freep};
304
305/*
306 * DMAable pools.
307 */
308
309/*
310 * With pci bus iommu support, we maintain one pool per pcidev and a
311 * hashed reverse table for virtual to bus physical address translations.
312 */
313static m_addr_t ___dma_getp(m_pool_s *mp)
314{
315 m_addr_t vp;
316 m_vtob_s *vbp;
317
318 vbp = __m_calloc(&mp0, sizeof(*vbp), "VTOB");
319 if (vbp) {
320 dma_addr_t daddr;
321 vp = (m_addr_t) dma_alloc_coherent(mp->bush,
322 PAGE_SIZE<<MEMO_PAGE_ORDER,
323 &daddr, GFP_ATOMIC);
324 if (vp) {
325 int hc = VTOB_HASH_CODE(vp);
326 vbp->vaddr = vp;
327 vbp->baddr = daddr;
328 vbp->next = mp->vtob[hc];
329 mp->vtob[hc] = vbp;
330 ++mp->nump;
331 return vp;
332 }
333 }
334 if (vbp)
335 __m_free(&mp0, vbp, sizeof(*vbp), "VTOB");
336 return 0;
337}
338
339static void ___dma_freep(m_pool_s *mp, m_addr_t m)
340{
341 m_vtob_s **vbpp, *vbp;
342 int hc = VTOB_HASH_CODE(m);
343
344 vbpp = &mp->vtob[hc];
345 while (*vbpp && (*vbpp)->vaddr != m)
346 vbpp = &(*vbpp)->next;
347 if (*vbpp) {
348 vbp = *vbpp;
349 *vbpp = (*vbpp)->next;
350 dma_free_coherent(mp->bush, PAGE_SIZE<<MEMO_PAGE_ORDER,
351 (void *)vbp->vaddr, (dma_addr_t)vbp->baddr);
352 __m_free(&mp0, vbp, sizeof(*vbp), "VTOB");
353 --mp->nump;
354 }
355}
356
357static inline m_pool_s *___get_dma_pool(m_bush_t bush)
358{
359 m_pool_s *mp;
360 for (mp = mp0.next; mp && mp->bush != bush; mp = mp->next);
361 return mp;
362}
363
364static m_pool_s *___cre_dma_pool(m_bush_t bush)
365{
366 m_pool_s *mp;
367 mp = __m_calloc(&mp0, sizeof(*mp), "MPOOL");
368 if (mp) {
369 memset(mp, 0, sizeof(*mp));
370 mp->bush = bush;
371 mp->getp = ___dma_getp;
372 mp->freep = ___dma_freep;
373 mp->next = mp0.next;
374 mp0.next = mp;
375 }
376 return mp;
377}
378
379static void ___del_dma_pool(m_pool_s *p)
380{
381 struct m_pool **pp = &mp0.next;
382
383 while (*pp && *pp != p)
384 pp = &(*pp)->next;
385 if (*pp) {
386 *pp = (*pp)->next;
387 __m_free(&mp0, p, sizeof(*p), "MPOOL");
388 }
389}
390
391static void *__m_calloc_dma(m_bush_t bush, int size, char *name)
392{
393 u_long flags;
394 struct m_pool *mp;
395 void *m = NULL;
396
397 spin_lock_irqsave(&ncr53c8xx_lock, flags);
398 mp = ___get_dma_pool(bush);
399 if (!mp)
400 mp = ___cre_dma_pool(bush);
401 if (mp)
402 m = __m_calloc(mp, size, name);
403 if (mp && !mp->nump)
404 ___del_dma_pool(mp);
405 spin_unlock_irqrestore(&ncr53c8xx_lock, flags);
406
407 return m;
408}
409
410static void __m_free_dma(m_bush_t bush, void *m, int size, char *name)
411{
412 u_long flags;
413 struct m_pool *mp;
414
415 spin_lock_irqsave(&ncr53c8xx_lock, flags);
416 mp = ___get_dma_pool(bush);
417 if (mp)
418 __m_free(mp, m, size, name);
419 if (mp && !mp->nump)
420 ___del_dma_pool(mp);
421 spin_unlock_irqrestore(&ncr53c8xx_lock, flags);
422}
423
424static m_addr_t __vtobus(m_bush_t bush, void *m)
425{
426 u_long flags;
427 m_pool_s *mp;
428 int hc = VTOB_HASH_CODE(m);
429 m_vtob_s *vp = NULL;
430 m_addr_t a = ((m_addr_t) m) & ~MEMO_CLUSTER_MASK;
431
432 spin_lock_irqsave(&ncr53c8xx_lock, flags);
433 mp = ___get_dma_pool(bush);
434 if (mp) {
435 vp = mp->vtob[hc];
436 while (vp && (m_addr_t) vp->vaddr != a)
437 vp = vp->next;
438 }
439 spin_unlock_irqrestore(&ncr53c8xx_lock, flags);
440 return vp ? vp->baddr + (((m_addr_t) m) - a) : 0;
441}
442
443#define _m_calloc_dma(np, s, n) __m_calloc_dma(np->dev, s, n)
444#define _m_free_dma(np, p, s, n) __m_free_dma(np->dev, p, s, n)
445#define m_calloc_dma(s, n) _m_calloc_dma(np, s, n)
446#define m_free_dma(p, s, n) _m_free_dma(np, p, s, n)
447#define _vtobus(np, p) __vtobus(np->dev, p)
448#define vtobus(p) _vtobus(np, p)
449
450/*
451 * Deal with DMA mapping/unmapping.
452 */
453
454/* To keep track of the dma mapping (sg/single) that has been set */
455#define __data_mapped SCp.phase
456#define __data_mapping SCp.have_data_in
457
458static void __unmap_scsi_data(struct device *dev, struct scsi_cmnd *cmd)
459{
460 switch(cmd->__data_mapped) {
461 case 2:
462 dma_unmap_sg(dev, cmd->buffer, cmd->use_sg,
463 cmd->sc_data_direction);
464 break;
465 case 1:
466 dma_unmap_single(dev, cmd->__data_mapping,
467 cmd->request_bufflen,
468 cmd->sc_data_direction);
469 break;
470 }
471 cmd->__data_mapped = 0;
472}
473
474static u_long __map_scsi_single_data(struct device *dev, struct scsi_cmnd *cmd)
475{
476 dma_addr_t mapping;
477
478 if (cmd->request_bufflen == 0)
479 return 0;
480
481 mapping = dma_map_single(dev, cmd->request_buffer,
482 cmd->request_bufflen,
483 cmd->sc_data_direction);
484 cmd->__data_mapped = 1;
485 cmd->__data_mapping = mapping;
486
487 return mapping;
488}
489
490static int __map_scsi_sg_data(struct device *dev, struct scsi_cmnd *cmd)
491{
492 int use_sg;
493
494 if (cmd->use_sg == 0)
495 return 0;
496
497 use_sg = dma_map_sg(dev, cmd->buffer, cmd->use_sg,
498 cmd->sc_data_direction);
499 cmd->__data_mapped = 2;
500 cmd->__data_mapping = use_sg;
501
502 return use_sg;
503}
504
505#define unmap_scsi_data(np, cmd) __unmap_scsi_data(np->dev, cmd)
506#define map_scsi_single_data(np, cmd) __map_scsi_single_data(np->dev, cmd)
507#define map_scsi_sg_data(np, cmd) __map_scsi_sg_data(np->dev, cmd)
508
509/*==========================================================
510**
511** Driver setup.
512**
513** This structure is initialized from linux config
514** options. It can be overridden at boot-up by the boot
515** command line.
516**
517**==========================================================
518*/
519static struct ncr_driver_setup
520 driver_setup = SCSI_NCR_DRIVER_SETUP;
521
522#ifdef SCSI_NCR_BOOT_COMMAND_LINE_SUPPORT
523static struct ncr_driver_setup
524 driver_safe_setup __initdata = SCSI_NCR_DRIVER_SAFE_SETUP;
525#endif
526
527#define initverbose (driver_setup.verbose)
528#define bootverbose (np->verbose)
529
530
531/*===================================================================
532**
533** Driver setup from the boot command line
534**
535**===================================================================
536*/
537
538#ifdef MODULE
539#define ARG_SEP ' '
540#else
541#define ARG_SEP ','
542#endif
543
544#define OPT_TAGS 1
545#define OPT_MASTER_PARITY 2
546#define OPT_SCSI_PARITY 3
547#define OPT_DISCONNECTION 4
548#define OPT_SPECIAL_FEATURES 5
549#define OPT_UNUSED_1 6
550#define OPT_FORCE_SYNC_NEGO 7
551#define OPT_REVERSE_PROBE 8
552#define OPT_DEFAULT_SYNC 9
553#define OPT_VERBOSE 10
554#define OPT_DEBUG 11
555#define OPT_BURST_MAX 12
556#define OPT_LED_PIN 13
557#define OPT_MAX_WIDE 14
558#define OPT_SETTLE_DELAY 15
559#define OPT_DIFF_SUPPORT 16
560#define OPT_IRQM 17
561#define OPT_PCI_FIX_UP 18
562#define OPT_BUS_CHECK 19
563#define OPT_OPTIMIZE 20
564#define OPT_RECOVERY 21
565#define OPT_SAFE_SETUP 22
566#define OPT_USE_NVRAM 23
567#define OPT_EXCLUDE 24
568#define OPT_HOST_ID 25
569
570#ifdef SCSI_NCR_IARB_SUPPORT
571#define OPT_IARB 26
572#endif
573
574static char setup_token[] __initdata =
575 "tags:" "mpar:"
576 "spar:" "disc:"
577 "specf:" "ultra:"
578 "fsn:" "revprob:"
579 "sync:" "verb:"
580 "debug:" "burst:"
581 "led:" "wide:"
582 "settle:" "diff:"
583 "irqm:" "pcifix:"
584 "buschk:" "optim:"
585 "recovery:"
586 "safe:" "nvram:"
587 "excl:" "hostid:"
588#ifdef SCSI_NCR_IARB_SUPPORT
589 "iarb:"
590#endif
591 ; /* DONNOT REMOVE THIS ';' */
592
593#ifdef MODULE
594#define ARG_SEP ' '
595#else
596#define ARG_SEP ','
597#endif
598
599static int __init get_setup_token(char *p)
600{
601 char *cur = setup_token;
602 char *pc;
603 int i = 0;
604
605 while (cur != NULL && (pc = strchr(cur, ':')) != NULL) {
606 ++pc;
607 ++i;
608 if (!strncmp(p, cur, pc - cur))
609 return i;
610 cur = pc;
611 }
612 return 0;
613}
614
615
616static int __init sym53c8xx__setup(char *str)
617{
618#ifdef SCSI_NCR_BOOT_COMMAND_LINE_SUPPORT
619 char *cur = str;
620 char *pc, *pv;
621 int i, val, c;
622 int xi = 0;
623
624 while (cur != NULL && (pc = strchr(cur, ':')) != NULL) {
625 char *pe;
626
627 val = 0;
628 pv = pc;
629 c = *++pv;
630
631 if (c == 'n')
632 val = 0;
633 else if (c == 'y')
634 val = 1;
635 else
636 val = (int) simple_strtoul(pv, &pe, 0);
637
638 switch (get_setup_token(cur)) {
639 case OPT_TAGS:
640 driver_setup.default_tags = val;
641 if (pe && *pe == '/') {
642 i = 0;
643 while (*pe && *pe != ARG_SEP &&
644 i < sizeof(driver_setup.tag_ctrl)-1) {
645 driver_setup.tag_ctrl[i++] = *pe++;
646 }
647 driver_setup.tag_ctrl[i] = '\0';
648 }
649 break;
650 case OPT_MASTER_PARITY:
651 driver_setup.master_parity = val;
652 break;
653 case OPT_SCSI_PARITY:
654 driver_setup.scsi_parity = val;
655 break;
656 case OPT_DISCONNECTION:
657 driver_setup.disconnection = val;
658 break;
659 case OPT_SPECIAL_FEATURES:
660 driver_setup.special_features = val;
661 break;
662 case OPT_FORCE_SYNC_NEGO:
663 driver_setup.force_sync_nego = val;
664 break;
665 case OPT_REVERSE_PROBE:
666 driver_setup.reverse_probe = val;
667 break;
668 case OPT_DEFAULT_SYNC:
669 driver_setup.default_sync = val;
670 break;
671 case OPT_VERBOSE:
672 driver_setup.verbose = val;
673 break;
674 case OPT_DEBUG:
675 driver_setup.debug = val;
676 break;
677 case OPT_BURST_MAX:
678 driver_setup.burst_max = val;
679 break;
680 case OPT_LED_PIN:
681 driver_setup.led_pin = val;
682 break;
683 case OPT_MAX_WIDE:
684 driver_setup.max_wide = val? 1:0;
685 break;
686 case OPT_SETTLE_DELAY:
687 driver_setup.settle_delay = val;
688 break;
689 case OPT_DIFF_SUPPORT:
690 driver_setup.diff_support = val;
691 break;
692 case OPT_IRQM:
693 driver_setup.irqm = val;
694 break;
695 case OPT_PCI_FIX_UP:
696 driver_setup.pci_fix_up = val;
697 break;
698 case OPT_BUS_CHECK:
699 driver_setup.bus_check = val;
700 break;
701 case OPT_OPTIMIZE:
702 driver_setup.optimize = val;
703 break;
704 case OPT_RECOVERY:
705 driver_setup.recovery = val;
706 break;
707 case OPT_USE_NVRAM:
708 driver_setup.use_nvram = val;
709 break;
710 case OPT_SAFE_SETUP:
711 memcpy(&driver_setup, &driver_safe_setup,
712 sizeof(driver_setup));
713 break;
714 case OPT_EXCLUDE:
715 if (xi < SCSI_NCR_MAX_EXCLUDES)
716 driver_setup.excludes[xi++] = val;
717 break;
718 case OPT_HOST_ID:
719 driver_setup.host_id = val;
720 break;
721#ifdef SCSI_NCR_IARB_SUPPORT
722 case OPT_IARB:
723 driver_setup.iarb = val;
724 break;
725#endif
726 default:
727 printk("sym53c8xx_setup: unexpected boot option '%.*s' ignored\n", (int)(pc-cur+1), cur);
728 break;
729 }
730
731 if ((cur = strchr(cur, ARG_SEP)) != NULL)
732 ++cur;
733 }
734#endif /* SCSI_NCR_BOOT_COMMAND_LINE_SUPPORT */
735 return 1;
736}
737
738/*===================================================================
739**
740** Get device queue depth from boot command line.
741**
742**===================================================================
743*/
744#define DEF_DEPTH (driver_setup.default_tags)
745#define ALL_TARGETS -2
746#define NO_TARGET -1
747#define ALL_LUNS -2
748#define NO_LUN -1
749
750static int device_queue_depth(int unit, int target, int lun)
751{
752 int c, h, t, u, v;
753 char *p = driver_setup.tag_ctrl;
754 char *ep;
755
756 h = -1;
757 t = NO_TARGET;
758 u = NO_LUN;
759 while ((c = *p++) != 0) {
760 v = simple_strtoul(p, &ep, 0);
761 switch(c) {
762 case '/':
763 ++h;
764 t = ALL_TARGETS;
765 u = ALL_LUNS;
766 break;
767 case 't':
768 if (t != target)
769 t = (target == v) ? v : NO_TARGET;
770 u = ALL_LUNS;
771 break;
772 case 'u':
773 if (u != lun)
774 u = (lun == v) ? v : NO_LUN;
775 break;
776 case 'q':
777 if (h == unit &&
778 (t == ALL_TARGETS || t == target) &&
779 (u == ALL_LUNS || u == lun))
780 return v;
781 break;
782 case '-':
783 t = ALL_TARGETS;
784 u = ALL_LUNS;
785 break;
786 default:
787 break;
788 }
789 p = ep;
790 }
791 return DEF_DEPTH;
792}
diff --git a/drivers/scsi/sym53c8xx_defs.h b/drivers/scsi/sym53c8xx_defs.h
deleted file mode 100644
index 139cd0e12e62..000000000000
--- a/drivers/scsi/sym53c8xx_defs.h
+++ /dev/null
@@ -1,1320 +0,0 @@
1/******************************************************************************
2** High Performance device driver for the Symbios 53C896 controller.
3**
4** Copyright (C) 1998-2001 Gerard Roudier <groudier@free.fr>
5**
6** This driver also supports all the Symbios 53C8XX controller family,
7** except 53C810 revisions < 16, 53C825 revisions < 16 and all
8** revisions of 53C815 controllers.
9**
10** This driver is based on the Linux port of the FreeBSD ncr driver.
11**
12** Copyright (C) 1994 Wolfgang Stanglmeier
13**
14**-----------------------------------------------------------------------------
15**
16** This program is free software; you can redistribute it and/or modify
17** it under the terms of the GNU General Public License as published by
18** the Free Software Foundation; either version 2 of the License, or
19** (at your option) any later version.
20**
21** This program is distributed in the hope that it will be useful,
22** but WITHOUT ANY WARRANTY; without even the implied warranty of
23** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
24** GNU General Public License for more details.
25**
26** You should have received a copy of the GNU General Public License
27** along with this program; if not, write to the Free Software
28** Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
29**
30**-----------------------------------------------------------------------------
31**
32** The Linux port of the FreeBSD ncr driver has been achieved in
33** november 1995 by:
34**
35** Gerard Roudier <groudier@free.fr>
36**
37** Being given that this driver originates from the FreeBSD version, and
38** in order to keep synergy on both, any suggested enhancements and corrections
39** received on Linux are automatically a potential candidate for the FreeBSD
40** version.
41**
42** The original driver has been written for 386bsd and FreeBSD by
43** Wolfgang Stanglmeier <wolf@cologne.de>
44** Stefan Esser <se@mi.Uni-Koeln.de>
45**
46**-----------------------------------------------------------------------------
47**
48** Major contributions:
49** --------------------
50**
51** NVRAM detection and reading.
52** Copyright (C) 1997 Richard Waltham <dormouse@farsrobt.demon.co.uk>
53**
54** Added support for MIPS big endian systems.
55** Carsten Langgaard, carstenl@mips.com
56** Copyright (C) 2000 MIPS Technologies, Inc. All rights reserved.
57**
58** Added support for HP PARISC big endian systems.
59** Copyright (C) 2000 MIPS Technologies, Inc. All rights reserved.
60**
61*******************************************************************************
62*/
63
64#ifndef SYM53C8XX_DEFS_H
65#define SYM53C8XX_DEFS_H
66
67#include <linux/config.h>
68
69/*
70** If you want a driver as small as possible, donnot define the
71** following options.
72*/
73#define SCSI_NCR_BOOT_COMMAND_LINE_SUPPORT
74#define SCSI_NCR_DEBUG_INFO_SUPPORT
75
76/*
77** To disable integrity checking, do not define the
78** following option.
79*/
80#ifdef CONFIG_SCSI_NCR53C8XX_INTEGRITY_CHECK
81# define SCSI_NCR_ENABLE_INTEGRITY_CHECK
82#endif
83
84/* ---------------------------------------------------------------------
85** Take into account kernel configured parameters.
86** Most of these options can be overridden at startup by a command line.
87** ---------------------------------------------------------------------
88*/
89
90/*
91 * For Ultra2 and Ultra3 SCSI support option, use special features.
92 *
93 * Value (default) means:
94 * bit 0 : all features enabled, except:
95 * bit 1 : PCI Write And Invalidate.
96 * bit 2 : Data Phase Mismatch handling from SCRIPTS.
97 *
98 * Use boot options ncr53c8xx=specf:1 if you want all chip features to be
99 * enabled by the driver.
100 */
101#define SCSI_NCR_SETUP_SPECIAL_FEATURES (3)
102
103#define SCSI_NCR_MAX_SYNC (80)
104
105/*
106 * Allow tags from 2 to 256, default 8
107 */
108#ifdef CONFIG_SCSI_NCR53C8XX_MAX_TAGS
109#if CONFIG_SCSI_NCR53C8XX_MAX_TAGS < 2
110#define SCSI_NCR_MAX_TAGS (2)
111#elif CONFIG_SCSI_NCR53C8XX_MAX_TAGS > 256
112#define SCSI_NCR_MAX_TAGS (256)
113#else
114#define SCSI_NCR_MAX_TAGS CONFIG_SCSI_NCR53C8XX_MAX_TAGS
115#endif
116#else
117#define SCSI_NCR_MAX_TAGS (8)
118#endif
119
120/*
121 * Allow tagged command queuing support if configured with default number
122 * of tags set to max (see above).
123 */
124#ifdef CONFIG_SCSI_NCR53C8XX_DEFAULT_TAGS
125#define SCSI_NCR_SETUP_DEFAULT_TAGS CONFIG_SCSI_NCR53C8XX_DEFAULT_TAGS
126#elif defined CONFIG_SCSI_NCR53C8XX_TAGGED_QUEUE
127#define SCSI_NCR_SETUP_DEFAULT_TAGS SCSI_NCR_MAX_TAGS
128#else
129#define SCSI_NCR_SETUP_DEFAULT_TAGS (0)
130#endif
131
132/*
133 * Immediate arbitration
134 */
135#if defined(CONFIG_SCSI_NCR53C8XX_IARB)
136#define SCSI_NCR_IARB_SUPPORT
137#endif
138
139/*
140 * Sync transfer frequency at startup.
141 * Allow from 5Mhz to 80Mhz default 20 Mhz.
142 */
143#ifndef CONFIG_SCSI_NCR53C8XX_SYNC
144#define CONFIG_SCSI_NCR53C8XX_SYNC (20)
145#elif CONFIG_SCSI_NCR53C8XX_SYNC > SCSI_NCR_MAX_SYNC
146#undef CONFIG_SCSI_NCR53C8XX_SYNC
147#define CONFIG_SCSI_NCR53C8XX_SYNC SCSI_NCR_MAX_SYNC
148#endif
149
150#if CONFIG_SCSI_NCR53C8XX_SYNC == 0
151#define SCSI_NCR_SETUP_DEFAULT_SYNC (255)
152#elif CONFIG_SCSI_NCR53C8XX_SYNC <= 5
153#define SCSI_NCR_SETUP_DEFAULT_SYNC (50)
154#elif CONFIG_SCSI_NCR53C8XX_SYNC <= 20
155#define SCSI_NCR_SETUP_DEFAULT_SYNC (250/(CONFIG_SCSI_NCR53C8XX_SYNC))
156#elif CONFIG_SCSI_NCR53C8XX_SYNC <= 33
157#define SCSI_NCR_SETUP_DEFAULT_SYNC (11)
158#elif CONFIG_SCSI_NCR53C8XX_SYNC <= 40
159#define SCSI_NCR_SETUP_DEFAULT_SYNC (10)
160#else
161#define SCSI_NCR_SETUP_DEFAULT_SYNC (9)
162#endif
163
164/*
165 * Disallow disconnections at boot-up
166 */
167#ifdef CONFIG_SCSI_NCR53C8XX_NO_DISCONNECT
168#define SCSI_NCR_SETUP_DISCONNECTION (0)
169#else
170#define SCSI_NCR_SETUP_DISCONNECTION (1)
171#endif
172
173/*
174 * Force synchronous negotiation for all targets
175 */
176#ifdef CONFIG_SCSI_NCR53C8XX_FORCE_SYNC_NEGO
177#define SCSI_NCR_SETUP_FORCE_SYNC_NEGO (1)
178#else
179#define SCSI_NCR_SETUP_FORCE_SYNC_NEGO (0)
180#endif
181
182/*
183 * Disable master parity checking (flawed hardwares need that)
184 */
185#ifdef CONFIG_SCSI_NCR53C8XX_DISABLE_MPARITY_CHECK
186#define SCSI_NCR_SETUP_MASTER_PARITY (0)
187#else
188#define SCSI_NCR_SETUP_MASTER_PARITY (1)
189#endif
190
191/*
192 * Disable scsi parity checking (flawed devices may need that)
193 */
194#ifdef CONFIG_SCSI_NCR53C8XX_DISABLE_PARITY_CHECK
195#define SCSI_NCR_SETUP_SCSI_PARITY (0)
196#else
197#define SCSI_NCR_SETUP_SCSI_PARITY (1)
198#endif
199
200/*
201 * Settle time after reset at boot-up
202 */
203#define SCSI_NCR_SETUP_SETTLE_TIME (2)
204
205/*
206** Bridge quirks work-around option defaulted to 1.
207*/
208#ifndef SCSI_NCR_PCIQ_WORK_AROUND_OPT
209#define SCSI_NCR_PCIQ_WORK_AROUND_OPT 1
210#endif
211
212/*
213** Work-around common bridge misbehaviour.
214**
215** - Do not flush posted writes in the opposite
216** direction on read.
217** - May reorder DMA writes to memory.
218**
219** This option should not affect performances
220** significantly, so it is the default.
221*/
222#if SCSI_NCR_PCIQ_WORK_AROUND_OPT == 1
223#define SCSI_NCR_PCIQ_MAY_NOT_FLUSH_PW_UPSTREAM
224#define SCSI_NCR_PCIQ_MAY_REORDER_WRITES
225#define SCSI_NCR_PCIQ_MAY_MISS_COMPLETIONS
226
227/*
228** Same as option 1, but also deal with
229** misconfigured interrupts.
230**
231** - Edge triggerred instead of level sensitive.
232** - No interrupt line connected.
233** - IRQ number misconfigured.
234**
235** If no interrupt is delivered, the driver will
236** catch the interrupt conditions 10 times per
237** second. No need to say that this option is
238** not recommended.
239*/
240#elif SCSI_NCR_PCIQ_WORK_AROUND_OPT == 2
241#define SCSI_NCR_PCIQ_MAY_NOT_FLUSH_PW_UPSTREAM
242#define SCSI_NCR_PCIQ_MAY_REORDER_WRITES
243#define SCSI_NCR_PCIQ_MAY_MISS_COMPLETIONS
244#define SCSI_NCR_PCIQ_BROKEN_INTR
245
246/*
247** Some bridge designers decided to flush
248** everything prior to deliver the interrupt.
249** This option tries to deal with such a
250** behaviour.
251*/
252#elif SCSI_NCR_PCIQ_WORK_AROUND_OPT == 3
253#define SCSI_NCR_PCIQ_SYNC_ON_INTR
254#endif
255
256/*
257** Other parameters not configurable with "make config"
258** Avoid to change these constants, unless you know what you are doing.
259*/
260
261#define SCSI_NCR_ALWAYS_SIMPLE_TAG
262#define SCSI_NCR_MAX_SCATTER (127)
263#define SCSI_NCR_MAX_TARGET (16)
264
265/*
266** Compute some desirable value for CAN_QUEUE
267** and CMD_PER_LUN.
268** The driver will use lower values if these
269** ones appear to be too large.
270*/
271#define SCSI_NCR_CAN_QUEUE (8*SCSI_NCR_MAX_TAGS + 2*SCSI_NCR_MAX_TARGET)
272#define SCSI_NCR_CMD_PER_LUN (SCSI_NCR_MAX_TAGS)
273
274#define SCSI_NCR_SG_TABLESIZE (SCSI_NCR_MAX_SCATTER)
275#define SCSI_NCR_TIMER_INTERVAL (HZ)
276
277#if 1 /* defined CONFIG_SCSI_MULTI_LUN */
278#define SCSI_NCR_MAX_LUN (16)
279#else
280#define SCSI_NCR_MAX_LUN (1)
281#endif
282
283/*
284 * IO functions definition for big/little endian CPU support.
285 * For now, the NCR is only supported in little endian addressing mode,
286 */
287
288#ifdef __BIG_ENDIAN
289
290#define inw_l2b inw
291#define inl_l2b inl
292#define outw_b2l outw
293#define outl_b2l outl
294
295#define readb_raw readb
296#define writeb_raw writeb
297
298#if defined(SCSI_NCR_BIG_ENDIAN)
299#define readw_l2b __raw_readw
300#define readl_l2b __raw_readl
301#define writew_b2l __raw_writew
302#define writel_b2l __raw_writel
303#define readw_raw __raw_readw
304#define readl_raw __raw_readl
305#define writew_raw __raw_writew
306#define writel_raw __raw_writel
307#else /* Other big-endian */
308#define readw_l2b readw
309#define readl_l2b readl
310#define writew_b2l writew
311#define writel_b2l writel
312#define readw_raw readw
313#define readl_raw readl
314#define writew_raw writew
315#define writel_raw writel
316#endif
317
318#else /* little endian */
319
320#define inw_raw inw
321#define inl_raw inl
322#define outw_raw outw
323#define outl_raw outl
324
325#define readb_raw readb
326#define readw_raw readw
327#define readl_raw readl
328#define writeb_raw writeb
329#define writew_raw writew
330#define writel_raw writel
331
332#endif
333
334#if !defined(__hppa__) && !defined(__mips__)
335#ifdef SCSI_NCR_BIG_ENDIAN
336#error "The NCR in BIG ENDIAN addressing mode is not (yet) supported"
337#endif
338#endif
339
340#define MEMORY_BARRIER() mb()
341
342
343/*
344 * If the NCR uses big endian addressing mode over the
345 * PCI, actual io register addresses for byte and word
346 * accesses must be changed according to lane routing.
347 * Btw, ncr_offb() and ncr_offw() macros only apply to
348 * constants and so donnot generate bloated code.
349 */
350
351#if defined(SCSI_NCR_BIG_ENDIAN)
352
353#define ncr_offb(o) (((o)&~3)+((~((o)&3))&3))
354#define ncr_offw(o) (((o)&~3)+((~((o)&3))&2))
355
356#else
357
358#define ncr_offb(o) (o)
359#define ncr_offw(o) (o)
360
361#endif
362
363/*
364 * If the CPU and the NCR use same endian-ness addressing,
365 * no byte reordering is needed for script patching.
366 * Macro cpu_to_scr() is to be used for script patching.
367 * Macro scr_to_cpu() is to be used for getting a DWORD
368 * from the script.
369 */
370
371#if defined(__BIG_ENDIAN) && !defined(SCSI_NCR_BIG_ENDIAN)
372
373#define cpu_to_scr(dw) cpu_to_le32(dw)
374#define scr_to_cpu(dw) le32_to_cpu(dw)
375
376#elif defined(__LITTLE_ENDIAN) && defined(SCSI_NCR_BIG_ENDIAN)
377
378#define cpu_to_scr(dw) cpu_to_be32(dw)
379#define scr_to_cpu(dw) be32_to_cpu(dw)
380
381#else
382
383#define cpu_to_scr(dw) (dw)
384#define scr_to_cpu(dw) (dw)
385
386#endif
387
388/*
389 * Access to the controller chip.
390 *
391 * If the CPU and the NCR use same endian-ness addressing,
392 * no byte reordering is needed for accessing chip io
393 * registers. Functions suffixed by '_raw' are assumed
394 * to access the chip over the PCI without doing byte
395 * reordering. Functions suffixed by '_l2b' are
396 * assumed to perform little-endian to big-endian byte
397 * reordering, those suffixed by '_b2l' blah, blah,
398 * blah, ...
399 */
400
401/*
402 * MEMORY mapped IO input / output
403 */
404
405#define INB_OFF(o) readb_raw((char __iomem *)np->reg + ncr_offb(o))
406#define OUTB_OFF(o, val) writeb_raw((val), (char __iomem *)np->reg + ncr_offb(o))
407
408#if defined(__BIG_ENDIAN) && !defined(SCSI_NCR_BIG_ENDIAN)
409
410#define INW_OFF(o) readw_l2b((char __iomem *)np->reg + ncr_offw(o))
411#define INL_OFF(o) readl_l2b((char __iomem *)np->reg + (o))
412
413#define OUTW_OFF(o, val) writew_b2l((val), (char __iomem *)np->reg + ncr_offw(o))
414#define OUTL_OFF(o, val) writel_b2l((val), (char __iomem *)np->reg + (o))
415
416#elif defined(__LITTLE_ENDIAN) && defined(SCSI_NCR_BIG_ENDIAN)
417
418#define INW_OFF(o) readw_b2l((char __iomem *)np->reg + ncr_offw(o))
419#define INL_OFF(o) readl_b2l((char __iomem *)np->reg + (o))
420
421#define OUTW_OFF(o, val) writew_l2b((val), (char __iomem *)np->reg + ncr_offw(o))
422#define OUTL_OFF(o, val) writel_l2b((val), (char __iomem *)np->reg + (o))
423
424#else
425
426#ifdef CONFIG_SCSI_NCR53C8XX_NO_WORD_TRANSFERS
427/* Only 8 or 32 bit transfers allowed */
428#define INW_OFF(o) (readb((char __iomem *)np->reg + ncr_offw(o)) << 8 | readb((char __iomem *)np->reg + ncr_offw(o) + 1))
429#else
430#define INW_OFF(o) readw_raw((char __iomem *)np->reg + ncr_offw(o))
431#endif
432#define INL_OFF(o) readl_raw((char __iomem *)np->reg + (o))
433
434#ifdef CONFIG_SCSI_NCR53C8XX_NO_WORD_TRANSFERS
435/* Only 8 or 32 bit transfers allowed */
436#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)
437#else
438#define OUTW_OFF(o, val) writew_raw((val), (char __iomem *)np->reg + ncr_offw(o))
439#endif
440#define OUTL_OFF(o, val) writel_raw((val), (char __iomem *)np->reg + (o))
441
442#endif
443
444#define INB(r) INB_OFF (offsetof(struct ncr_reg,r))
445#define INW(r) INW_OFF (offsetof(struct ncr_reg,r))
446#define INL(r) INL_OFF (offsetof(struct ncr_reg,r))
447
448#define OUTB(r, val) OUTB_OFF (offsetof(struct ncr_reg,r), (val))
449#define OUTW(r, val) OUTW_OFF (offsetof(struct ncr_reg,r), (val))
450#define OUTL(r, val) OUTL_OFF (offsetof(struct ncr_reg,r), (val))
451
452/*
453 * Set bit field ON, OFF
454 */
455
456#define OUTONB(r, m) OUTB(r, INB(r) | (m))
457#define OUTOFFB(r, m) OUTB(r, INB(r) & ~(m))
458#define OUTONW(r, m) OUTW(r, INW(r) | (m))
459#define OUTOFFW(r, m) OUTW(r, INW(r) & ~(m))
460#define OUTONL(r, m) OUTL(r, INL(r) | (m))
461#define OUTOFFL(r, m) OUTL(r, INL(r) & ~(m))
462
463/*
464 * We normally want the chip to have a consistent view
465 * of driver internal data structures when we restart it.
466 * Thus these macros.
467 */
468#define OUTL_DSP(v) \
469 do { \
470 MEMORY_BARRIER(); \
471 OUTL (nc_dsp, (v)); \
472 } while (0)
473
474#define OUTONB_STD() \
475 do { \
476 MEMORY_BARRIER(); \
477 OUTONB (nc_dcntl, (STD|NOCOM)); \
478 } while (0)
479
480
481/*
482** NCR53C8XX devices features table.
483*/
484struct ncr_chip {
485 unsigned short revision_id;
486 unsigned char burst_max; /* log-base-2 of max burst */
487 unsigned char offset_max;
488 unsigned char nr_divisor;
489 unsigned int features;
490#define FE_LED0 (1<<0)
491#define FE_WIDE (1<<1) /* Wide data transfers */
492#define FE_ULTRA (1<<2) /* Ultra speed 20Mtrans/sec */
493#define FE_DBLR (1<<4) /* Clock doubler present */
494#define FE_QUAD (1<<5) /* Clock quadrupler present */
495#define FE_ERL (1<<6) /* Enable read line */
496#define FE_CLSE (1<<7) /* Cache line size enable */
497#define FE_WRIE (1<<8) /* Write & Invalidate enable */
498#define FE_ERMP (1<<9) /* Enable read multiple */
499#define FE_BOF (1<<10) /* Burst opcode fetch */
500#define FE_DFS (1<<11) /* DMA fifo size */
501#define FE_PFEN (1<<12) /* Prefetch enable */
502#define FE_LDSTR (1<<13) /* Load/Store supported */
503#define FE_RAM (1<<14) /* On chip RAM present */
504#define FE_VARCLK (1<<15) /* SCSI clock may vary */
505#define FE_RAM8K (1<<16) /* On chip RAM sized 8Kb */
506#define FE_64BIT (1<<17) /* Have a 64-bit PCI interface */
507#define FE_IO256 (1<<18) /* Requires full 256 bytes in PCI space */
508#define FE_NOPM (1<<19) /* Scripts handles phase mismatch */
509#define FE_LEDC (1<<20) /* Hardware control of LED */
510#define FE_DIFF (1<<21) /* Support Differential SCSI */
511#define FE_66MHZ (1<<23) /* 66MHz PCI Support */
512#define FE_DAC (1<<24) /* Support DAC cycles (64 bit addressing) */
513#define FE_ISTAT1 (1<<25) /* Have ISTAT1, MBOX0, MBOX1 registers */
514#define FE_DAC_IN_USE (1<<26) /* Platform does DAC cycles */
515#define FE_EHP (1<<27) /* 720: Even host parity */
516#define FE_MUX (1<<28) /* 720: Multiplexed bus */
517#define FE_EA (1<<29) /* 720: Enable Ack */
518
519#define FE_CACHE_SET (FE_ERL|FE_CLSE|FE_WRIE|FE_ERMP)
520#define FE_SCSI_SET (FE_WIDE|FE_ULTRA|FE_DBLR|FE_QUAD|F_CLK80)
521#define FE_SPECIAL_SET (FE_CACHE_SET|FE_BOF|FE_DFS|FE_LDSTR|FE_PFEN|FE_RAM)
522};
523
524
525/*
526** Driver setup structure.
527**
528** This structure is initialized from linux config options.
529** It can be overridden at boot-up by the boot command line.
530*/
531#define SCSI_NCR_MAX_EXCLUDES 8
532struct ncr_driver_setup {
533 u8 master_parity;
534 u8 scsi_parity;
535 u8 disconnection;
536 u8 special_features;
537 u8 force_sync_nego;
538 u8 reverse_probe;
539 u8 pci_fix_up;
540 u8 use_nvram;
541 u8 verbose;
542 u8 default_tags;
543 u16 default_sync;
544 u16 debug;
545 u8 burst_max;
546 u8 led_pin;
547 u8 max_wide;
548 u8 settle_delay;
549 u8 diff_support;
550 u8 irqm;
551 u8 bus_check;
552 u8 optimize;
553 u8 recovery;
554 u8 host_id;
555 u16 iarb;
556 u32 excludes[SCSI_NCR_MAX_EXCLUDES];
557 char tag_ctrl[100];
558};
559
560/*
561** Initial setup.
562** Can be overriden at startup by a command line.
563*/
564#define SCSI_NCR_DRIVER_SETUP \
565{ \
566 SCSI_NCR_SETUP_MASTER_PARITY, \
567 SCSI_NCR_SETUP_SCSI_PARITY, \
568 SCSI_NCR_SETUP_DISCONNECTION, \
569 SCSI_NCR_SETUP_SPECIAL_FEATURES, \
570 SCSI_NCR_SETUP_FORCE_SYNC_NEGO, \
571 0, \
572 0, \
573 1, \
574 0, \
575 SCSI_NCR_SETUP_DEFAULT_TAGS, \
576 SCSI_NCR_SETUP_DEFAULT_SYNC, \
577 0x00, \
578 7, \
579 0, \
580 1, \
581 SCSI_NCR_SETUP_SETTLE_TIME, \
582 0, \
583 0, \
584 1, \
585 0, \
586 0, \
587 255, \
588 0x00 \
589}
590
591/*
592** Boot fail safe setup.
593** Override initial setup from boot command line:
594** ncr53c8xx=safe:y
595*/
596#define SCSI_NCR_DRIVER_SAFE_SETUP \
597{ \
598 0, \
599 1, \
600 0, \
601 0, \
602 0, \
603 0, \
604 0, \
605 1, \
606 2, \
607 0, \
608 255, \
609 0x00, \
610 255, \
611 0, \
612 0, \
613 10, \
614 1, \
615 1, \
616 1, \
617 0, \
618 0, \
619 255 \
620}
621
622/**************** ORIGINAL CONTENT of ncrreg.h from FreeBSD ******************/
623
624/*-----------------------------------------------------------------
625**
626** The ncr 53c810 register structure.
627**
628**-----------------------------------------------------------------
629*/
630
631struct ncr_reg {
632/*00*/ u8 nc_scntl0; /* full arb., ena parity, par->ATN */
633
634/*01*/ u8 nc_scntl1; /* no reset */
635 #define ISCON 0x10 /* connected to scsi */
636 #define CRST 0x08 /* force reset */
637 #define IARB 0x02 /* immediate arbitration */
638
639/*02*/ u8 nc_scntl2; /* no disconnect expected */
640 #define SDU 0x80 /* cmd: disconnect will raise error */
641 #define CHM 0x40 /* sta: chained mode */
642 #define WSS 0x08 /* sta: wide scsi send [W]*/
643 #define WSR 0x01 /* sta: wide scsi received [W]*/
644
645/*03*/ u8 nc_scntl3; /* cnf system clock dependent */
646 #define EWS 0x08 /* cmd: enable wide scsi [W]*/
647 #define ULTRA 0x80 /* cmd: ULTRA enable */
648 /* bits 0-2, 7 rsvd for C1010 */
649
650/*04*/ u8 nc_scid; /* cnf host adapter scsi address */
651 #define RRE 0x40 /* r/w:e enable response to resel. */
652 #define SRE 0x20 /* r/w:e enable response to select */
653
654/*05*/ u8 nc_sxfer; /* ### Sync speed and count */
655 /* bits 6-7 rsvd for C1010 */
656
657/*06*/ u8 nc_sdid; /* ### Destination-ID */
658
659/*07*/ u8 nc_gpreg; /* ??? IO-Pins */
660
661/*08*/ u8 nc_sfbr; /* ### First byte in phase */
662
663/*09*/ u8 nc_socl;
664 #define CREQ 0x80 /* r/w: SCSI-REQ */
665 #define CACK 0x40 /* r/w: SCSI-ACK */
666 #define CBSY 0x20 /* r/w: SCSI-BSY */
667 #define CSEL 0x10 /* r/w: SCSI-SEL */
668 #define CATN 0x08 /* r/w: SCSI-ATN */
669 #define CMSG 0x04 /* r/w: SCSI-MSG */
670 #define CC_D 0x02 /* r/w: SCSI-C_D */
671 #define CI_O 0x01 /* r/w: SCSI-I_O */
672
673/*0a*/ u8 nc_ssid;
674
675/*0b*/ u8 nc_sbcl;
676
677/*0c*/ u8 nc_dstat;
678 #define DFE 0x80 /* sta: dma fifo empty */
679 #define MDPE 0x40 /* int: master data parity error */
680 #define BF 0x20 /* int: script: bus fault */
681 #define ABRT 0x10 /* int: script: command aborted */
682 #define SSI 0x08 /* int: script: single step */
683 #define SIR 0x04 /* int: script: interrupt instruct. */
684 #define IID 0x01 /* int: script: illegal instruct. */
685
686/*0d*/ u8 nc_sstat0;
687 #define ILF 0x80 /* sta: data in SIDL register lsb */
688 #define ORF 0x40 /* sta: data in SODR register lsb */
689 #define OLF 0x20 /* sta: data in SODL register lsb */
690 #define AIP 0x10 /* sta: arbitration in progress */
691 #define LOA 0x08 /* sta: arbitration lost */
692 #define WOA 0x04 /* sta: arbitration won */
693 #define IRST 0x02 /* sta: scsi reset signal */
694 #define SDP 0x01 /* sta: scsi parity signal */
695
696/*0e*/ u8 nc_sstat1;
697 #define FF3210 0xf0 /* sta: bytes in the scsi fifo */
698
699/*0f*/ u8 nc_sstat2;
700 #define ILF1 0x80 /* sta: data in SIDL register msb[W]*/
701 #define ORF1 0x40 /* sta: data in SODR register msb[W]*/
702 #define OLF1 0x20 /* sta: data in SODL register msb[W]*/
703 #define DM 0x04 /* sta: DIFFSENS mismatch (895/6 only) */
704 #define LDSC 0x02 /* sta: disconnect & reconnect */
705
706/*10*/ u8 nc_dsa; /* --> Base page */
707/*11*/ u8 nc_dsa1;
708/*12*/ u8 nc_dsa2;
709/*13*/ u8 nc_dsa3;
710
711/*14*/ u8 nc_istat; /* --> Main Command and status */
712 #define CABRT 0x80 /* cmd: abort current operation */
713 #define SRST 0x40 /* mod: reset chip */
714 #define SIGP 0x20 /* r/w: message from host to ncr */
715 #define SEM 0x10 /* r/w: message between host + ncr */
716 #define CON 0x08 /* sta: connected to scsi */
717 #define INTF 0x04 /* sta: int on the fly (reset by wr)*/
718 #define SIP 0x02 /* sta: scsi-interrupt */
719 #define DIP 0x01 /* sta: host/script interrupt */
720
721/*15*/ u8 nc_istat1; /* 896 and later cores only */
722 #define FLSH 0x04 /* sta: chip is flushing */
723 #define SRUN 0x02 /* sta: scripts are running */
724 #define SIRQD 0x01 /* r/w: disable INT pin */
725
726/*16*/ u8 nc_mbox0; /* 896 and later cores only */
727/*17*/ u8 nc_mbox1; /* 896 and later cores only */
728
729/*18*/ u8 nc_ctest0;
730 #define EHP 0x04 /* 720 even host parity */
731/*19*/ u8 nc_ctest1;
732
733/*1a*/ u8 nc_ctest2;
734 #define CSIGP 0x40
735 /* bits 0-2,7 rsvd for C1010 */
736
737/*1b*/ u8 nc_ctest3;
738 #define FLF 0x08 /* cmd: flush dma fifo */
739 #define CLF 0x04 /* cmd: clear dma fifo */
740 #define FM 0x02 /* mod: fetch pin mode */
741 #define WRIE 0x01 /* mod: write and invalidate enable */
742 /* bits 4-7 rsvd for C1010 */
743
744/*1c*/ u32 nc_temp; /* ### Temporary stack */
745
746/*20*/ u8 nc_dfifo;
747/*21*/ u8 nc_ctest4;
748 #define MUX 0x80 /* 720 host bus multiplex mode */
749 #define BDIS 0x80 /* mod: burst disable */
750 #define MPEE 0x08 /* mod: master parity error enable */
751
752/*22*/ u8 nc_ctest5;
753 #define DFS 0x20 /* mod: dma fifo size */
754 /* bits 0-1, 3-7 rsvd for C1010 */
755/*23*/ u8 nc_ctest6;
756
757/*24*/ u32 nc_dbc; /* ### Byte count and command */
758/*28*/ u32 nc_dnad; /* ### Next command register */
759/*2c*/ u32 nc_dsp; /* --> Script Pointer */
760/*30*/ u32 nc_dsps; /* --> Script pointer save/opcode#2 */
761
762/*34*/ u8 nc_scratcha; /* Temporary register a */
763/*35*/ u8 nc_scratcha1;
764/*36*/ u8 nc_scratcha2;
765/*37*/ u8 nc_scratcha3;
766
767/*38*/ u8 nc_dmode;
768 #define BL_2 0x80 /* mod: burst length shift value +2 */
769 #define BL_1 0x40 /* mod: burst length shift value +1 */
770 #define ERL 0x08 /* mod: enable read line */
771 #define ERMP 0x04 /* mod: enable read multiple */
772 #define BOF 0x02 /* mod: burst op code fetch */
773
774/*39*/ u8 nc_dien;
775/*3a*/ u8 nc_sbr;
776
777/*3b*/ u8 nc_dcntl; /* --> Script execution control */
778 #define CLSE 0x80 /* mod: cache line size enable */
779 #define PFF 0x40 /* cmd: pre-fetch flush */
780 #define PFEN 0x20 /* mod: pre-fetch enable */
781 #define EA 0x20 /* mod: 720 enable-ack */
782 #define SSM 0x10 /* mod: single step mode */
783 #define IRQM 0x08 /* mod: irq mode (1 = totem pole !) */
784 #define STD 0x04 /* cmd: start dma mode */
785 #define IRQD 0x02 /* mod: irq disable */
786 #define NOCOM 0x01 /* cmd: protect sfbr while reselect */
787 /* bits 0-1 rsvd for C1010 */
788
789/*3c*/ u32 nc_adder;
790
791/*40*/ u16 nc_sien; /* -->: interrupt enable */
792/*42*/ u16 nc_sist; /* <--: interrupt status */
793 #define SBMC 0x1000/* sta: SCSI Bus Mode Change (895/6 only) */
794 #define STO 0x0400/* sta: timeout (select) */
795 #define GEN 0x0200/* sta: timeout (general) */
796 #define HTH 0x0100/* sta: timeout (handshake) */
797 #define MA 0x80 /* sta: phase mismatch */
798 #define CMP 0x40 /* sta: arbitration complete */
799 #define SEL 0x20 /* sta: selected by another device */
800 #define RSL 0x10 /* sta: reselected by another device*/
801 #define SGE 0x08 /* sta: gross error (over/underflow)*/
802 #define UDC 0x04 /* sta: unexpected disconnect */
803 #define RST 0x02 /* sta: scsi bus reset detected */
804 #define PAR 0x01 /* sta: scsi parity error */
805
806/*44*/ u8 nc_slpar;
807/*45*/ u8 nc_swide;
808/*46*/ u8 nc_macntl;
809/*47*/ u8 nc_gpcntl;
810/*48*/ u8 nc_stime0; /* cmd: timeout for select&handshake*/
811/*49*/ u8 nc_stime1; /* cmd: timeout user defined */
812/*4a*/ u16 nc_respid; /* sta: Reselect-IDs */
813
814/*4c*/ u8 nc_stest0;
815
816/*4d*/ u8 nc_stest1;
817 #define SCLK 0x80 /* Use the PCI clock as SCSI clock */
818 #define DBLEN 0x08 /* clock doubler running */
819 #define DBLSEL 0x04 /* clock doubler selected */
820
821
822/*4e*/ u8 nc_stest2;
823 #define ROF 0x40 /* reset scsi offset (after gross error!) */
824 #define DIF 0x20 /* 720 SCSI differential mode */
825 #define EXT 0x02 /* extended filtering */
826
827/*4f*/ u8 nc_stest3;
828 #define TE 0x80 /* c: tolerAnt enable */
829 #define HSC 0x20 /* c: Halt SCSI Clock */
830 #define CSF 0x02 /* c: clear scsi fifo */
831
832/*50*/ u16 nc_sidl; /* Lowlevel: latched from scsi data */
833/*52*/ u8 nc_stest4;
834 #define SMODE 0xc0 /* SCSI bus mode (895/6 only) */
835 #define SMODE_HVD 0x40 /* High Voltage Differential */
836 #define SMODE_SE 0x80 /* Single Ended */
837 #define SMODE_LVD 0xc0 /* Low Voltage Differential */
838 #define LCKFRQ 0x20 /* Frequency Lock (895/6 only) */
839 /* bits 0-5 rsvd for C1010 */
840
841/*53*/ u8 nc_53_;
842/*54*/ u16 nc_sodl; /* Lowlevel: data out to scsi data */
843/*56*/ u8 nc_ccntl0; /* Chip Control 0 (896) */
844 #define ENPMJ 0x80 /* Enable Phase Mismatch Jump */
845 #define PMJCTL 0x40 /* Phase Mismatch Jump Control */
846 #define ENNDJ 0x20 /* Enable Non Data PM Jump */
847 #define DISFC 0x10 /* Disable Auto FIFO Clear */
848 #define DILS 0x02 /* Disable Internal Load/Store */
849 #define DPR 0x01 /* Disable Pipe Req */
850
851/*57*/ u8 nc_ccntl1; /* Chip Control 1 (896) */
852 #define ZMOD 0x80 /* High Impedance Mode */
853 #define DIC 0x10 /* Disable Internal Cycles */
854 #define DDAC 0x08 /* Disable Dual Address Cycle */
855 #define XTIMOD 0x04 /* 64-bit Table Ind. Indexing Mode */
856 #define EXTIBMV 0x02 /* Enable 64-bit Table Ind. BMOV */
857 #define EXDBMV 0x01 /* Enable 64-bit Direct BMOV */
858
859/*58*/ u16 nc_sbdl; /* Lowlevel: data from scsi data */
860/*5a*/ u16 nc_5a_;
861
862/*5c*/ u8 nc_scr0; /* Working register B */
863/*5d*/ u8 nc_scr1; /* */
864/*5e*/ u8 nc_scr2; /* */
865/*5f*/ u8 nc_scr3; /* */
866
867/*60*/ u8 nc_scrx[64]; /* Working register C-R */
868/*a0*/ u32 nc_mmrs; /* Memory Move Read Selector */
869/*a4*/ u32 nc_mmws; /* Memory Move Write Selector */
870/*a8*/ u32 nc_sfs; /* Script Fetch Selector */
871/*ac*/ u32 nc_drs; /* DSA Relative Selector */
872/*b0*/ u32 nc_sbms; /* Static Block Move Selector */
873/*b4*/ u32 nc_dbms; /* Dynamic Block Move Selector */
874/*b8*/ u32 nc_dnad64; /* DMA Next Address 64 */
875/*bc*/ u16 nc_scntl4; /* C1010 only */
876 #define U3EN 0x80 /* Enable Ultra 3 */
877 #define AIPEN 0x40 /* Allow check upper byte lanes */
878 #define XCLKH_DT 0x08 /* Extra clock of data hold on DT
879 transfer edge */
880 #define XCLKH_ST 0x04 /* Extra clock of data hold on ST
881 transfer edge */
882
883/*be*/ u8 nc_aipcntl0; /* Epat Control 1 C1010 only */
884/*bf*/ u8 nc_aipcntl1; /* AIP Control C1010_66 Only */
885
886/*c0*/ u32 nc_pmjad1; /* Phase Mismatch Jump Address 1 */
887/*c4*/ u32 nc_pmjad2; /* Phase Mismatch Jump Address 2 */
888/*c8*/ u8 nc_rbc; /* Remaining Byte Count */
889/*c9*/ u8 nc_rbc1; /* */
890/*ca*/ u8 nc_rbc2; /* */
891/*cb*/ u8 nc_rbc3; /* */
892
893/*cc*/ u8 nc_ua; /* Updated Address */
894/*cd*/ u8 nc_ua1; /* */
895/*ce*/ u8 nc_ua2; /* */
896/*cf*/ u8 nc_ua3; /* */
897/*d0*/ u32 nc_esa; /* Entry Storage Address */
898/*d4*/ u8 nc_ia; /* Instruction Address */
899/*d5*/ u8 nc_ia1;
900/*d6*/ u8 nc_ia2;
901/*d7*/ u8 nc_ia3;
902/*d8*/ u32 nc_sbc; /* SCSI Byte Count (3 bytes only) */
903/*dc*/ u32 nc_csbc; /* Cumulative SCSI Byte Count */
904
905 /* Following for C1010 only */
906/*e0*/ u16 nc_crcpad; /* CRC Value */
907/*e2*/ u8 nc_crccntl0; /* CRC control register */
908 #define SNDCRC 0x10 /* Send CRC Request */
909/*e3*/ u8 nc_crccntl1; /* CRC control register */
910/*e4*/ u32 nc_crcdata; /* CRC data register */
911/*e8*/ u32 nc_e8_; /* rsvd */
912/*ec*/ u32 nc_ec_; /* rsvd */
913/*f0*/ u16 nc_dfbc; /* DMA FIFO byte count */
914
915};
916
917/*-----------------------------------------------------------
918**
919** Utility macros for the script.
920**
921**-----------------------------------------------------------
922*/
923
924#define REGJ(p,r) (offsetof(struct ncr_reg, p ## r))
925#define REG(r) REGJ (nc_, r)
926
927typedef u32 ncrcmd;
928
929/*-----------------------------------------------------------
930**
931** SCSI phases
932**
933** DT phases illegal for ncr driver.
934**
935**-----------------------------------------------------------
936*/
937
938#define SCR_DATA_OUT 0x00000000
939#define SCR_DATA_IN 0x01000000
940#define SCR_COMMAND 0x02000000
941#define SCR_STATUS 0x03000000
942#define SCR_DT_DATA_OUT 0x04000000
943#define SCR_DT_DATA_IN 0x05000000
944#define SCR_MSG_OUT 0x06000000
945#define SCR_MSG_IN 0x07000000
946
947#define SCR_ILG_OUT 0x04000000
948#define SCR_ILG_IN 0x05000000
949
950/*-----------------------------------------------------------
951**
952** Data transfer via SCSI.
953**
954**-----------------------------------------------------------
955**
956** MOVE_ABS (LEN)
957** <<start address>>
958**
959** MOVE_IND (LEN)
960** <<dnad_offset>>
961**
962** MOVE_TBL
963** <<dnad_offset>>
964**
965**-----------------------------------------------------------
966*/
967
968#define OPC_MOVE 0x08000000
969
970#define SCR_MOVE_ABS(l) ((0x00000000 | OPC_MOVE) | (l))
971#define SCR_MOVE_IND(l) ((0x20000000 | OPC_MOVE) | (l))
972#define SCR_MOVE_TBL (0x10000000 | OPC_MOVE)
973
974#define SCR_CHMOV_ABS(l) ((0x00000000) | (l))
975#define SCR_CHMOV_IND(l) ((0x20000000) | (l))
976#define SCR_CHMOV_TBL (0x10000000)
977
978struct scr_tblmove {
979 u32 size;
980 u32 addr;
981};
982
983/*-----------------------------------------------------------
984**
985** Selection
986**
987**-----------------------------------------------------------
988**
989** SEL_ABS | SCR_ID (0..15) [ | REL_JMP]
990** <<alternate_address>>
991**
992** SEL_TBL | << dnad_offset>> [ | REL_JMP]
993** <<alternate_address>>
994**
995**-----------------------------------------------------------
996*/
997
998#define SCR_SEL_ABS 0x40000000
999#define SCR_SEL_ABS_ATN 0x41000000
1000#define SCR_SEL_TBL 0x42000000
1001#define SCR_SEL_TBL_ATN 0x43000000
1002
1003
1004#ifdef SCSI_NCR_BIG_ENDIAN
1005struct scr_tblsel {
1006 u8 sel_scntl3;
1007 u8 sel_id;
1008 u8 sel_sxfer;
1009 u8 sel_scntl4;
1010};
1011#else
1012struct scr_tblsel {
1013 u8 sel_scntl4;
1014 u8 sel_sxfer;
1015 u8 sel_id;
1016 u8 sel_scntl3;
1017};
1018#endif
1019
1020#define SCR_JMP_REL 0x04000000
1021#define SCR_ID(id) (((u32)(id)) << 16)
1022
1023/*-----------------------------------------------------------
1024**
1025** Waiting for Disconnect or Reselect
1026**
1027**-----------------------------------------------------------
1028**
1029** WAIT_DISC
1030** dummy: <<alternate_address>>
1031**
1032** WAIT_RESEL
1033** <<alternate_address>>
1034**
1035**-----------------------------------------------------------
1036*/
1037
1038#define SCR_WAIT_DISC 0x48000000
1039#define SCR_WAIT_RESEL 0x50000000
1040
1041/*-----------------------------------------------------------
1042**
1043** Bit Set / Reset
1044**
1045**-----------------------------------------------------------
1046**
1047** SET (flags {|.. })
1048**
1049** CLR (flags {|.. })
1050**
1051**-----------------------------------------------------------
1052*/
1053
1054#define SCR_SET(f) (0x58000000 | (f))
1055#define SCR_CLR(f) (0x60000000 | (f))
1056
1057#define SCR_CARRY 0x00000400
1058#define SCR_TRG 0x00000200
1059#define SCR_ACK 0x00000040
1060#define SCR_ATN 0x00000008
1061
1062
1063
1064
1065/*-----------------------------------------------------------
1066**
1067** Memory to memory move
1068**
1069**-----------------------------------------------------------
1070**
1071** COPY (bytecount)
1072** << source_address >>
1073** << destination_address >>
1074**
1075** SCR_COPY sets the NO FLUSH option by default.
1076** SCR_COPY_F does not set this option.
1077**
1078** For chips which do not support this option,
1079** ncr_copy_and_bind() will remove this bit.
1080**-----------------------------------------------------------
1081*/
1082
1083#define SCR_NO_FLUSH 0x01000000
1084
1085#define SCR_COPY(n) (0xc0000000 | SCR_NO_FLUSH | (n))
1086#define SCR_COPY_F(n) (0xc0000000 | (n))
1087
1088/*-----------------------------------------------------------
1089**
1090** Register move and binary operations
1091**
1092**-----------------------------------------------------------
1093**
1094** SFBR_REG (reg, op, data) reg = SFBR op data
1095** << 0 >>
1096**
1097** REG_SFBR (reg, op, data) SFBR = reg op data
1098** << 0 >>
1099**
1100** REG_REG (reg, op, data) reg = reg op data
1101** << 0 >>
1102**
1103**-----------------------------------------------------------
1104** On 810A, 860, 825A, 875, 895 and 896 chips the content
1105** of SFBR register can be used as data (SCR_SFBR_DATA).
1106** The 896 has additionnal IO registers starting at
1107** offset 0x80. Bit 7 of register offset is stored in
1108** bit 7 of the SCRIPTS instruction first DWORD.
1109**-----------------------------------------------------------
1110*/
1111
1112#define SCR_REG_OFS(ofs) ((((ofs) & 0x7f) << 16ul) + ((ofs) & 0x80))
1113
1114#define SCR_SFBR_REG(reg,op,data) \
1115 (0x68000000 | (SCR_REG_OFS(REG(reg))) | (op) | (((data)&0xff)<<8ul))
1116
1117#define SCR_REG_SFBR(reg,op,data) \
1118 (0x70000000 | (SCR_REG_OFS(REG(reg))) | (op) | (((data)&0xff)<<8ul))
1119
1120#define SCR_REG_REG(reg,op,data) \
1121 (0x78000000 | (SCR_REG_OFS(REG(reg))) | (op) | (((data)&0xff)<<8ul))
1122
1123
1124#define SCR_LOAD 0x00000000
1125#define SCR_SHL 0x01000000
1126#define SCR_OR 0x02000000
1127#define SCR_XOR 0x03000000
1128#define SCR_AND 0x04000000
1129#define SCR_SHR 0x05000000
1130#define SCR_ADD 0x06000000
1131#define SCR_ADDC 0x07000000
1132
1133#define SCR_SFBR_DATA (0x00800000>>8ul) /* Use SFBR as data */
1134
1135/*-----------------------------------------------------------
1136**
1137** FROM_REG (reg) SFBR = reg
1138** << 0 >>
1139**
1140** TO_REG (reg) reg = SFBR
1141** << 0 >>
1142**
1143** LOAD_REG (reg, data) reg = <data>
1144** << 0 >>
1145**
1146** LOAD_SFBR(data) SFBR = <data>
1147** << 0 >>
1148**
1149**-----------------------------------------------------------
1150*/
1151
1152#define SCR_FROM_REG(reg) \
1153 SCR_REG_SFBR(reg,SCR_OR,0)
1154
1155#define SCR_TO_REG(reg) \
1156 SCR_SFBR_REG(reg,SCR_OR,0)
1157
1158#define SCR_LOAD_REG(reg,data) \
1159 SCR_REG_REG(reg,SCR_LOAD,data)
1160
1161#define SCR_LOAD_SFBR(data) \
1162 (SCR_REG_SFBR (gpreg, SCR_LOAD, data))
1163
1164/*-----------------------------------------------------------
1165**
1166** LOAD from memory to register.
1167** STORE from register to memory.
1168**
1169** Only supported by 810A, 860, 825A, 875, 895 and 896.
1170**
1171**-----------------------------------------------------------
1172**
1173** LOAD_ABS (LEN)
1174** <<start address>>
1175**
1176** LOAD_REL (LEN) (DSA relative)
1177** <<dsa_offset>>
1178**
1179**-----------------------------------------------------------
1180*/
1181
1182#define SCR_REG_OFS2(ofs) (((ofs) & 0xff) << 16ul)
1183#define SCR_NO_FLUSH2 0x02000000
1184#define SCR_DSA_REL2 0x10000000
1185
1186#define SCR_LOAD_R(reg, how, n) \
1187 (0xe1000000 | how | (SCR_REG_OFS2(REG(reg))) | (n))
1188
1189#define SCR_STORE_R(reg, how, n) \
1190 (0xe0000000 | how | (SCR_REG_OFS2(REG(reg))) | (n))
1191
1192#define SCR_LOAD_ABS(reg, n) SCR_LOAD_R(reg, SCR_NO_FLUSH2, n)
1193#define SCR_LOAD_REL(reg, n) SCR_LOAD_R(reg, SCR_NO_FLUSH2|SCR_DSA_REL2, n)
1194#define SCR_LOAD_ABS_F(reg, n) SCR_LOAD_R(reg, 0, n)
1195#define SCR_LOAD_REL_F(reg, n) SCR_LOAD_R(reg, SCR_DSA_REL2, n)
1196
1197#define SCR_STORE_ABS(reg, n) SCR_STORE_R(reg, SCR_NO_FLUSH2, n)
1198#define SCR_STORE_REL(reg, n) SCR_STORE_R(reg, SCR_NO_FLUSH2|SCR_DSA_REL2,n)
1199#define SCR_STORE_ABS_F(reg, n) SCR_STORE_R(reg, 0, n)
1200#define SCR_STORE_REL_F(reg, n) SCR_STORE_R(reg, SCR_DSA_REL2, n)
1201
1202
1203/*-----------------------------------------------------------
1204**
1205** Waiting for Disconnect or Reselect
1206**
1207**-----------------------------------------------------------
1208**
1209** JUMP [ | IFTRUE/IFFALSE ( ... ) ]
1210** <<address>>
1211**
1212** JUMPR [ | IFTRUE/IFFALSE ( ... ) ]
1213** <<distance>>
1214**
1215** CALL [ | IFTRUE/IFFALSE ( ... ) ]
1216** <<address>>
1217**
1218** CALLR [ | IFTRUE/IFFALSE ( ... ) ]
1219** <<distance>>
1220**
1221** RETURN [ | IFTRUE/IFFALSE ( ... ) ]
1222** <<dummy>>
1223**
1224** INT [ | IFTRUE/IFFALSE ( ... ) ]
1225** <<ident>>
1226**
1227** INT_FLY [ | IFTRUE/IFFALSE ( ... ) ]
1228** <<ident>>
1229**
1230** Conditions:
1231** WHEN (phase)
1232** IF (phase)
1233** CARRYSET
1234** DATA (data, mask)
1235**
1236**-----------------------------------------------------------
1237*/
1238
1239#define SCR_NO_OP 0x80000000
1240#define SCR_JUMP 0x80080000
1241#define SCR_JUMP64 0x80480000
1242#define SCR_JUMPR 0x80880000
1243#define SCR_CALL 0x88080000
1244#define SCR_CALLR 0x88880000
1245#define SCR_RETURN 0x90080000
1246#define SCR_INT 0x98080000
1247#define SCR_INT_FLY 0x98180000
1248
1249#define IFFALSE(arg) (0x00080000 | (arg))
1250#define IFTRUE(arg) (0x00000000 | (arg))
1251
1252#define WHEN(phase) (0x00030000 | (phase))
1253#define IF(phase) (0x00020000 | (phase))
1254
1255#define DATA(D) (0x00040000 | ((D) & 0xff))
1256#define MASK(D,M) (0x00040000 | (((M ^ 0xff) & 0xff) << 8ul)|((D) & 0xff))
1257
1258#define CARRYSET (0x00200000)
1259
1260/*-----------------------------------------------------------
1261**
1262** SCSI constants.
1263**
1264**-----------------------------------------------------------
1265*/
1266
1267/*
1268** Messages
1269*/
1270
1271#define M_COMPLETE COMMAND_COMPLETE
1272#define M_EXTENDED EXTENDED_MESSAGE
1273#define M_SAVE_DP SAVE_POINTERS
1274#define M_RESTORE_DP RESTORE_POINTERS
1275#define M_DISCONNECT DISCONNECT
1276#define M_ID_ERROR INITIATOR_ERROR
1277#define M_ABORT ABORT_TASK_SET
1278#define M_REJECT MESSAGE_REJECT
1279#define M_NOOP NOP
1280#define M_PARITY MSG_PARITY_ERROR
1281#define M_LCOMPLETE LINKED_CMD_COMPLETE
1282#define M_FCOMPLETE LINKED_FLG_CMD_COMPLETE
1283#define M_RESET TARGET_RESET
1284#define M_ABORT_TAG ABORT_TASK
1285#define M_CLEAR_QUEUE CLEAR_TASK_SET
1286#define M_INIT_REC INITIATE_RECOVERY
1287#define M_REL_REC RELEASE_RECOVERY
1288#define M_TERMINATE (0x11)
1289#define M_SIMPLE_TAG SIMPLE_QUEUE_TAG
1290#define M_HEAD_TAG HEAD_OF_QUEUE_TAG
1291#define M_ORDERED_TAG ORDERED_QUEUE_TAG
1292#define M_IGN_RESIDUE IGNORE_WIDE_RESIDUE
1293#define M_IDENTIFY (0x80)
1294
1295#define M_X_MODIFY_DP EXTENDED_MODIFY_DATA_POINTER
1296#define M_X_SYNC_REQ EXTENDED_SDTR
1297#define M_X_WIDE_REQ EXTENDED_WDTR
1298#define M_X_PPR_REQ EXTENDED_PPR
1299
1300/*
1301** Status
1302*/
1303
1304#define S_GOOD (0x00)
1305#define S_CHECK_COND (0x02)
1306#define S_COND_MET (0x04)
1307#define S_BUSY (0x08)
1308#define S_INT (0x10)
1309#define S_INT_COND_MET (0x14)
1310#define S_CONFLICT (0x18)
1311#define S_TERMINATED (0x20)
1312#define S_QUEUE_FULL (0x28)
1313#define S_ILLEGAL (0xff)
1314#define S_SENSE (0x80)
1315
1316/*
1317 * End of ncrreg from FreeBSD
1318 */
1319
1320#endif /* defined SYM53C8XX_DEFS_H */
diff --git a/fs/bio.c b/fs/bio.c
index 460554b07ff9..38d3e8023a07 100644
--- a/fs/bio.c
+++ b/fs/bio.c
@@ -313,7 +313,8 @@ int bio_get_nr_vecs(struct block_device *bdev)
313} 313}
314 314
315static int __bio_add_page(request_queue_t *q, struct bio *bio, struct page 315static int __bio_add_page(request_queue_t *q, struct bio *bio, struct page
316 *page, unsigned int len, unsigned int offset) 316 *page, unsigned int len, unsigned int offset,
317 unsigned short max_sectors)
317{ 318{
318 int retried_segments = 0; 319 int retried_segments = 0;
319 struct bio_vec *bvec; 320 struct bio_vec *bvec;
@@ -327,7 +328,7 @@ static int __bio_add_page(request_queue_t *q, struct bio *bio, struct page
327 if (bio->bi_vcnt >= bio->bi_max_vecs) 328 if (bio->bi_vcnt >= bio->bi_max_vecs)
328 return 0; 329 return 0;
329 330
330 if (((bio->bi_size + len) >> 9) > q->max_sectors) 331 if (((bio->bi_size + len) >> 9) > max_sectors)
331 return 0; 332 return 0;
332 333
333 /* 334 /*
@@ -386,6 +387,25 @@ static int __bio_add_page(request_queue_t *q, struct bio *bio, struct page
386} 387}
387 388
388/** 389/**
390 * bio_add_pc_page - attempt to add page to bio
391 * @bio: destination bio
392 * @page: page to add
393 * @len: vec entry length
394 * @offset: vec entry offset
395 *
396 * Attempt to add a page to the bio_vec maplist. This can fail for a
397 * number of reasons, such as the bio being full or target block
398 * device limitations. The target block device must allow bio's
399 * smaller than PAGE_SIZE, so it is always possible to add a single
400 * page to an empty bio. This should only be used by REQ_PC bios.
401 */
402int bio_add_pc_page(request_queue_t *q, struct bio *bio, struct page *page,
403 unsigned int len, unsigned int offset)
404{
405 return __bio_add_page(q, bio, page, len, offset, q->max_hw_sectors);
406}
407
408/**
389 * bio_add_page - attempt to add page to bio 409 * bio_add_page - attempt to add page to bio
390 * @bio: destination bio 410 * @bio: destination bio
391 * @page: page to add 411 * @page: page to add
@@ -401,8 +421,8 @@ static int __bio_add_page(request_queue_t *q, struct bio *bio, struct page
401int bio_add_page(struct bio *bio, struct page *page, unsigned int len, 421int bio_add_page(struct bio *bio, struct page *page, unsigned int len,
402 unsigned int offset) 422 unsigned int offset)
403{ 423{
404 return __bio_add_page(bdev_get_queue(bio->bi_bdev), bio, page, 424 struct request_queue *q = bdev_get_queue(bio->bi_bdev);
405 len, offset); 425 return __bio_add_page(q, bio, page, len, offset, q->max_sectors);
406} 426}
407 427
408struct bio_map_data { 428struct bio_map_data {
@@ -514,7 +534,7 @@ struct bio *bio_copy_user(request_queue_t *q, unsigned long uaddr,
514 break; 534 break;
515 } 535 }
516 536
517 if (__bio_add_page(q, bio, page, bytes, 0) < bytes) { 537 if (bio_add_pc_page(q, bio, page, bytes, 0) < bytes) {
518 ret = -EINVAL; 538 ret = -EINVAL;
519 break; 539 break;
520 } 540 }
@@ -628,7 +648,8 @@ static struct bio *__bio_map_user_iov(request_queue_t *q,
628 /* 648 /*
629 * sorry... 649 * sorry...
630 */ 650 */
631 if (__bio_add_page(q, bio, pages[j], bytes, offset) < bytes) 651 if (bio_add_pc_page(q, bio, pages[j], bytes, offset) <
652 bytes)
632 break; 653 break;
633 654
634 len -= bytes; 655 len -= bytes;
@@ -801,8 +822,8 @@ static struct bio *__bio_map_kern(request_queue_t *q, void *data,
801 if (bytes > len) 822 if (bytes > len)
802 bytes = len; 823 bytes = len;
803 824
804 if (__bio_add_page(q, bio, virt_to_page(data), bytes, 825 if (bio_add_pc_page(q, bio, virt_to_page(data), bytes,
805 offset) < bytes) 826 offset) < bytes)
806 break; 827 break;
807 828
808 data += bytes; 829 data += bytes;
@@ -1228,6 +1249,7 @@ EXPORT_SYMBOL(bio_clone);
1228EXPORT_SYMBOL(bio_phys_segments); 1249EXPORT_SYMBOL(bio_phys_segments);
1229EXPORT_SYMBOL(bio_hw_segments); 1250EXPORT_SYMBOL(bio_hw_segments);
1230EXPORT_SYMBOL(bio_add_page); 1251EXPORT_SYMBOL(bio_add_page);
1252EXPORT_SYMBOL(bio_add_pc_page);
1231EXPORT_SYMBOL(bio_get_nr_vecs); 1253EXPORT_SYMBOL(bio_get_nr_vecs);
1232EXPORT_SYMBOL(bio_map_user); 1254EXPORT_SYMBOL(bio_map_user);
1233EXPORT_SYMBOL(bio_unmap_user); 1255EXPORT_SYMBOL(bio_unmap_user);
diff --git a/include/linux/bio.h b/include/linux/bio.h
index 685fd3720df5..b60ffe32cd21 100644
--- a/include/linux/bio.h
+++ b/include/linux/bio.h
@@ -292,6 +292,8 @@ extern struct bio *bio_clone(struct bio *, gfp_t);
292extern void bio_init(struct bio *); 292extern void bio_init(struct bio *);
293 293
294extern int bio_add_page(struct bio *, struct page *, unsigned int,unsigned int); 294extern int bio_add_page(struct bio *, struct page *, unsigned int,unsigned int);
295extern int bio_add_pc_page(struct request_queue *, struct bio *, struct page *,
296 unsigned int, unsigned int);
295extern int bio_get_nr_vecs(struct block_device *); 297extern int bio_get_nr_vecs(struct block_device *);
296extern struct bio *bio_map_user(struct request_queue *, struct block_device *, 298extern struct bio *bio_map_user(struct request_queue *, struct block_device *,
297 unsigned long, unsigned int, int); 299 unsigned long, unsigned int, int);
diff --git a/include/linux/blkdev.h b/include/linux/blkdev.h
index a33a31e71bbc..a18500d196e1 100644
--- a/include/linux/blkdev.h
+++ b/include/linux/blkdev.h
@@ -184,6 +184,7 @@ struct request {
184 void *sense; 184 void *sense;
185 185
186 unsigned int timeout; 186 unsigned int timeout;
187 int retries;
187 188
188 /* 189 /*
189 * For Power Management requests 190 * For Power Management requests
@@ -558,6 +559,7 @@ extern void blk_unregister_queue(struct gendisk *disk);
558extern void register_disk(struct gendisk *dev); 559extern void register_disk(struct gendisk *dev);
559extern void generic_make_request(struct bio *bio); 560extern void generic_make_request(struct bio *bio);
560extern void blk_put_request(struct request *); 561extern void blk_put_request(struct request *);
562extern void __blk_put_request(request_queue_t *, struct request *);
561extern void blk_end_sync_rq(struct request *rq); 563extern void blk_end_sync_rq(struct request *rq);
562extern void blk_attempt_remerge(request_queue_t *, struct request *); 564extern void blk_attempt_remerge(request_queue_t *, struct request *);
563extern struct request *blk_get_request(request_queue_t *, int, gfp_t); 565extern 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
579extern int blk_rq_map_user_iov(request_queue_t *, struct request *, struct sg_iovec *, int); 581extern int blk_rq_map_user_iov(request_queue_t *, struct request *, struct sg_iovec *, int);
580extern int blk_execute_rq(request_queue_t *, struct gendisk *, 582extern int blk_execute_rq(request_queue_t *, struct gendisk *,
581 struct request *, int); 583 struct request *, int);
584extern void blk_execute_rq_nowait(request_queue_t *, struct gendisk *,
585 struct request *, int,
586 void (*done)(struct request *));
587
582static inline request_queue_t *bdev_get_queue(struct block_device *bdev) 588static inline request_queue_t *bdev_get_queue(struct block_device *bdev)
583{ 589{
584 return bdev->bd_disk->queue; 590 return bdev->bd_disk->queue;
@@ -696,7 +702,8 @@ extern int blkdev_issue_flush(struct block_device *, sector_t *);
696 702
697#define MAX_PHYS_SEGMENTS 128 703#define MAX_PHYS_SEGMENTS 128
698#define MAX_HW_SEGMENTS 128 704#define MAX_HW_SEGMENTS 128
699#define MAX_SECTORS 255 705#define SAFE_MAX_SECTORS 255
706#define BLK_DEF_MAX_SECTORS 1024
700 707
701#define MAX_SEGMENT_SIZE 65536 708#define MAX_SEGMENT_SIZE 65536
702 709
diff --git a/include/linux/pci_ids.h b/include/linux/pci_ids.h
index 4db67b3b05cc..a17e171384ef 100644
--- a/include/linux/pci_ids.h
+++ b/include/linux/pci_ids.h
@@ -15,6 +15,7 @@
15#define PCI_CLASS_STORAGE_FLOPPY 0x0102 15#define PCI_CLASS_STORAGE_FLOPPY 0x0102
16#define PCI_CLASS_STORAGE_IPI 0x0103 16#define PCI_CLASS_STORAGE_IPI 0x0103
17#define PCI_CLASS_STORAGE_RAID 0x0104 17#define PCI_CLASS_STORAGE_RAID 0x0104
18#define PCI_CLASS_STORAGE_SAS 0x0107
18#define PCI_CLASS_STORAGE_OTHER 0x0180 19#define PCI_CLASS_STORAGE_OTHER 0x0180
19 20
20#define PCI_BASE_CLASS_NETWORK 0x02 21#define PCI_BASE_CLASS_NETWORK 0x02
diff --git a/include/scsi/scsi_cmnd.h b/include/scsi/scsi_cmnd.h
index 20da282d4abb..41cfc29be899 100644
--- a/include/scsi/scsi_cmnd.h
+++ b/include/scsi/scsi_cmnd.h
@@ -151,6 +151,6 @@ extern struct scsi_cmnd *scsi_get_command(struct scsi_device *, gfp_t);
151extern void scsi_put_command(struct scsi_cmnd *); 151extern void scsi_put_command(struct scsi_cmnd *);
152extern void scsi_io_completion(struct scsi_cmnd *, unsigned int, unsigned int); 152extern void scsi_io_completion(struct scsi_cmnd *, unsigned int, unsigned int);
153extern void scsi_finish_command(struct scsi_cmnd *cmd); 153extern void scsi_finish_command(struct scsi_cmnd *cmd);
154extern void scsi_setup_blk_pc_cmnd(struct scsi_cmnd *cmd, int retries); 154extern void scsi_setup_blk_pc_cmnd(struct scsi_cmnd *cmd);
155 155
156#endif /* _SCSI_SCSI_CMND_H */ 156#endif /* _SCSI_SCSI_CMND_H */
diff --git a/include/scsi/scsi_dbg.h b/include/scsi/scsi_dbg.h
index b090a11d7e1c..4d69dee66d4d 100644
--- a/include/scsi/scsi_dbg.h
+++ b/include/scsi/scsi_dbg.h
@@ -16,7 +16,6 @@ extern void __scsi_print_sense(const char *name,
16extern void scsi_print_driverbyte(int); 16extern void scsi_print_driverbyte(int);
17extern void scsi_print_hostbyte(int); 17extern void scsi_print_hostbyte(int);
18extern void scsi_print_status(unsigned char); 18extern void scsi_print_status(unsigned char);
19extern int scsi_print_msg(const unsigned char *);
20extern const char *scsi_sense_key_string(unsigned char); 19extern const char *scsi_sense_key_string(unsigned char);
21extern const char *scsi_extd_sense_format(unsigned char, unsigned char); 20extern const char *scsi_extd_sense_format(unsigned char, unsigned char);
22 21
diff --git a/include/scsi/scsi_device.h b/include/scsi/scsi_device.h
index 85cfd88461c8..e94ca4d36035 100644
--- a/include/scsi/scsi_device.h
+++ b/include/scsi/scsi_device.h
@@ -79,9 +79,9 @@ struct scsi_device {
79 char inq_periph_qual; /* PQ from INQUIRY data */ 79 char inq_periph_qual; /* PQ from INQUIRY data */
80 unsigned char inquiry_len; /* valid bytes in 'inquiry' */ 80 unsigned char inquiry_len; /* valid bytes in 'inquiry' */
81 unsigned char * inquiry; /* INQUIRY response data */ 81 unsigned char * inquiry; /* INQUIRY response data */
82 char * vendor; /* [back_compat] point into 'inquiry' ... */ 82 const char * vendor; /* [back_compat] point into 'inquiry' ... */
83 char * model; /* ... after scan; point to static string */ 83 const char * model; /* ... after scan; point to static string */
84 char * rev; /* ... "nullnullnullnull" before scan */ 84 const char * rev; /* ... "nullnullnullnull" before scan */
85 unsigned char current_tag; /* current tag */ 85 unsigned char current_tag; /* current tag */
86 struct scsi_target *sdev_target; /* used only for single_lun */ 86 struct scsi_target *sdev_target; /* used only for single_lun */
87 87
@@ -274,6 +274,12 @@ extern int scsi_execute(struct scsi_device *sdev, const unsigned char *cmd,
274extern int scsi_execute_req(struct scsi_device *sdev, const unsigned char *cmd, 274extern int scsi_execute_req(struct scsi_device *sdev, const unsigned char *cmd,
275 int data_direction, void *buffer, unsigned bufflen, 275 int data_direction, void *buffer, unsigned bufflen,
276 struct scsi_sense_hdr *, int timeout, int retries); 276 struct scsi_sense_hdr *, int timeout, int retries);
277extern int scsi_execute_async(struct scsi_device *sdev,
278 const unsigned char *cmd, int data_direction,
279 void *buffer, unsigned bufflen, int use_sg,
280 int timeout, int retries, void *privdata,
281 void (*done)(void *, char *, int, int),
282 gfp_t gfp);
277 283
278static inline unsigned int sdev_channel(struct scsi_device *sdev) 284static inline unsigned int sdev_channel(struct scsi_device *sdev)
279{ 285{
diff --git a/include/scsi/scsi_transport_spi.h b/include/scsi/scsi_transport_spi.h
index 6bdc4afb2483..54a89611e9c5 100644
--- a/include/scsi/scsi_transport_spi.h
+++ b/include/scsi/scsi_transport_spi.h
@@ -24,6 +24,9 @@
24#include <linux/transport_class.h> 24#include <linux/transport_class.h>
25 25
26struct scsi_transport_template; 26struct scsi_transport_template;
27struct scsi_target;
28struct scsi_device;
29struct Scsi_Host;
27 30
28struct spi_transport_attrs { 31struct spi_transport_attrs {
29 int period; /* value in the PPR/SDTR command */ 32 int period; /* value in the PPR/SDTR command */
@@ -143,5 +146,6 @@ void spi_release_transport(struct scsi_transport_template *);
143void spi_schedule_dv_device(struct scsi_device *); 146void spi_schedule_dv_device(struct scsi_device *);
144void spi_dv_device(struct scsi_device *); 147void spi_dv_device(struct scsi_device *);
145void spi_display_xfer_agreement(struct scsi_target *); 148void spi_display_xfer_agreement(struct scsi_target *);
149int spi_print_msg(const unsigned char *);
146 150
147#endif /* SCSI_TRANSPORT_SPI_H */ 151#endif /* SCSI_TRANSPORT_SPI_H */