Apply the following change made on 5/26/2003 21:26:51 by gibbs to the

FreeBSD ahd driver:

Correct/Simplify ignore wide residue message handling

aic79xx.c:
	In ahd_handle_ign_wide_residue():
	o Use SCB_XFERLEN_ODD SCB field to determine transfer
	  "oddness" rather than the DATA_COUNT_ODD logic.
	  SCB_XFERLEN_ODD is toggled on every ignore wide
	  residue message so that multiple ignore wide residue
	  messages for the same transaction are properly supported.
	o If the sg list has been exausted, the sequencer
	  doesn't bother to update the residual data count
	  since it is known to be zero.  Perform the zeroing
	  manually before calculating the remaining data count.
	o Use multibyte in/out macros instead of shifting/masking
	  by hand.

aic79xx_inline.h:
	In ahd_setup_scb_common(), setup the SCB_XFERLEN_ODD field.

aic79xx.reg:
	Use the SCB_TASK_ATTRIBUTE field as a bit field in the
	non-packetized case.  We currently only define one bit,
	SCB_XFERLEN_ODD.

	Remove the ODD_SEG bit field that was used to carry the odd
	transfer length information through the SG cache.  This
	is obviated by SCB_XFERLEN_ODD field.

	Remove the DATA_COUNT_ODD scratch ram byte that was used
	dynamicaly compute data transfer oddness.  This is obviated
	by SCB_XFERLEN_ODD field.

aic79xx.seq:
	Remove all updates to the DATA_COUNT_ODD scratch ram field.
	Remove all uses of ODD_SEG.  These two save quite a few
	sequencer instructions.

	Use SCB_XFERLEN_ODD to validate the end of transfer
	ignore wide residue message case.
This commit is contained in:
thorpej 2003-08-29 01:28:51 +00:00
parent 58aefb674b
commit 3dd1bba4c4
6 changed files with 307 additions and 319 deletions

View File

@ -1,4 +1,4 @@
/* $NetBSD: aic79xx.c,v 1.10 2003/08/29 00:46:05 thorpej Exp $ */
/* $NetBSD: aic79xx.c,v 1.11 2003/08/29 01:28:51 thorpej Exp $ */
/*
* Core routines and tables shareable across OS platforms.
@ -39,9 +39,9 @@
* IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
* POSSIBILITY OF SUCH DAMAGES.
*
* Id: //depot/aic7xxx/aic7xxx/aic79xx.c#192 $
* Id: //depot/aic7xxx/aic7xxx/aic79xx.c#193 $
*
* $FreeBSD: src/sys/dev/aic7xxx/aic79xx.c,v 1.14 2003/05/26 21:18:48 gibbs Exp $
* $FreeBSD: src/sys/dev/aic7xxx/aic79xx.c,v 1.15 2003/05/26 21:26:51 gibbs Exp $
*/
/*
* Ported from FreeBSD by Pascal Renauld, Network Storage Solutions, Inc.
@ -49,7 +49,7 @@
*/
#include <sys/cdefs.h>
__KERNEL_RCSID(0, "$NetBSD: aic79xx.c,v 1.10 2003/08/29 00:46:05 thorpej Exp $");
__KERNEL_RCSID(0, "$NetBSD: aic79xx.c,v 1.11 2003/08/29 01:28:51 thorpej Exp $");
#include <dev/ic/aic79xx_osm.h>
#include <dev/ic/aic79xx_inline.h>
@ -4433,7 +4433,7 @@ ahd_handle_ign_wide_residue(struct ahd_softc *ahd, struct ahd_devinfo *devinfo)
sgptr = ahd_inb_scbram(ahd, SCB_RESIDUAL_SGPTR);
if ((sgptr & SG_LIST_NULL) != 0
&& ahd_inb(ahd, DATA_COUNT_ODD) == 1) {
&& (ahd_inb(ahd, SCB_TASK_ATTRIBUTE) & SCB_XFERLEN_ODD) != 0) {
/*
* If the residual occurred on the last
* transfer and the transfer request was
@ -4446,29 +4446,20 @@ ahd_handle_ign_wide_residue(struct ahd_softc *ahd, struct ahd_devinfo *devinfo)
uint32_t sglen;
/* Pull in the rest of the sgptr */
sgptr |=
(ahd_inb_scbram(ahd, SCB_RESIDUAL_SGPTR + 3) << 24)
| (ahd_inb_scbram(ahd, SCB_RESIDUAL_SGPTR + 2) << 16)
| (ahd_inb_scbram(ahd, SCB_RESIDUAL_SGPTR + 1) << 8);
sgptr &= SG_PTR_MASK;
data_cnt =
(ahd_inb_scbram(ahd, SCB_RESIDUAL_DATACNT+3) << 24)
| (ahd_inb_scbram(ahd, SCB_RESIDUAL_DATACNT+2) << 16)
| (ahd_inb_scbram(ahd, SCB_RESIDUAL_DATACNT+1) << 8)
| (ahd_inb_scbram(ahd, SCB_RESIDUAL_DATACNT));
data_addr = (((uint64_t)ahd_inb(ahd, SHADDR + 7)) << 56)
| (((uint64_t)ahd_inb(ahd, SHADDR + 6)) << 48)
| (((uint64_t)ahd_inb(ahd, SHADDR + 5)) << 40)
| (((uint64_t)ahd_inb(ahd, SHADDR + 4)) << 32)
| (ahd_inb(ahd, SHADDR + 3) << 24)
| (ahd_inb(ahd, SHADDR + 2) << 16)
| (ahd_inb(ahd, SHADDR + 1) << 8)
| (ahd_inb(ahd, SHADDR));
sgptr = ahd_inl_scbram(ahd, SCB_RESIDUAL_SGPTR);
data_cnt = ahd_inl_scbram(ahd, SCB_RESIDUAL_DATACNT);
if ((sgptr & SG_LIST_NULL) != 0) {
/*
* The residual data count is not updated
* for the command run to completion case.
* Explcitly zero the count.
*/
data_cnt &= ~AHD_SG_LEN_MASK;
}
data_addr = ahd_inq(ahd, SHADDR);
data_cnt += 1;
data_addr -= 1;
sgptr &= SG_PTR_MASK;
if ((ahd->flags & AHD_64BIT_ADDRESSING) != 0) {
struct ahd_dma64_seg *sg;
@ -4536,16 +4527,17 @@ ahd_handle_ign_wide_residue(struct ahd_softc *ahd, struct ahd_devinfo *devinfo)
sg);
}
}
ahd_outb(ahd, SCB_RESIDUAL_SGPTR + 3, sgptr >> 24);
ahd_outb(ahd, SCB_RESIDUAL_SGPTR + 2, sgptr >> 16);
ahd_outb(ahd, SCB_RESIDUAL_SGPTR + 1, sgptr >> 8);
ahd_outb(ahd, SCB_RESIDUAL_SGPTR, sgptr);
ahd_outb(ahd, SCB_RESIDUAL_DATACNT + 3, data_cnt >> 24);
ahd_outb(ahd, SCB_RESIDUAL_DATACNT + 2, data_cnt >> 16);
ahd_outb(ahd, SCB_RESIDUAL_DATACNT + 1, data_cnt >> 8);
ahd_outb(ahd, SCB_RESIDUAL_DATACNT, data_cnt);
/*
* Toggle the "oddness" of the transfer length
* to handle this mid-transfer ignore wide
* residue. This ensures that the oddness is
* correct for subsequent data transfers.
*/
ahd_outb(ahd, SCB_TASK_ATTRIBUTE,
ahd_inb(ahd, SCB_TASK_ATTRIBUTE) ^ SCB_XFERLEN_ODD);
ahd_outl(ahd, SCB_RESIDUAL_SGPTR, sgptr);
ahd_outl(ahd, SCB_RESIDUAL_DATACNT, data_cnt);
/*
* The FIFO's pointers will be updated if/when the
* sequencer re-enters a data phase.

View File

@ -1,4 +1,4 @@
/* $NetBSD: aic79xx_inline.h,v 1.6 2003/08/29 00:46:06 thorpej Exp $ */
/* $NetBSD: aic79xx_inline.h,v 1.7 2003/08/29 01:28:52 thorpej Exp $ */
/*
* Inline routines shareable across OS platforms.
@ -39,9 +39,9 @@
* IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
* POSSIBILITY OF SUCH DAMAGES.
*
* Id: //depot/aic7xxx/aic7xxx/aic79xx_inline.h#49 $
* Id: //depot/aic7xxx/aic7xxx/aic79xx_inline.h#50 $
*
* $FreeBSD: src/sys/dev/aic7xxx/aic79xx_inline.h,v 1.10 2003/05/26 21:18:48 gibbs Exp $
* $FreeBSD: src/sys/dev/aic7xxx/aic79xx_inline.h,v 1.11 2003/05/26 21:26:52 gibbs Exp $
*/
/*
* Ported from FreeBSD by Pascal Renauld, Network Storage Solutions, Inc. - April 2003
@ -266,7 +266,12 @@ ahd_setup_scb_common(struct ahd_softc *ahd, struct scb *scb)
scb->crc_retry_count = 0;
if ((scb->flags & SCB_PACKETIZED) != 0) {
/* XXX what about ACA?? It is type 4, but TAG_TYPE == 0x3. */
scb->hscb->task_attribute= scb->hscb->control & SCB_TAG_TYPE;
scb->hscb->task_attribute = scb->hscb->control & SCB_TAG_TYPE;
} else {
if (ahd_get_transfer_length(scb) & 0x01)
scb->hscb->task_attribute = SCB_XFERLEN_ODD;
else
scb->hscb->task_attribute = 0;
}
if (scb->hscb->cdb_len <= MAX_CDB_LEN_WITH_SENSE_ADDR

View File

@ -1,4 +1,4 @@
/* $NetBSD: aic79xx.reg,v 1.4 2003/08/29 00:10:01 thorpej Exp $ */
/* $NetBSD: aic79xx.reg,v 1.5 2003/08/29 01:28:53 thorpej Exp $ */
/*
* Aic79xx register and scratch ram definitions.
@ -39,9 +39,9 @@
* IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
* POSSIBILITY OF SUCH DAMAGES.
*
* $FreeBSD: src/sys/dev/aic7xxx/aic79xx.reg,v 1.11 2003/05/04 00:20:07 gibbs Exp $
* $FreeBSD: src/sys/dev/aic7xxx/aic79xx.reg,v 1.13 2003/05/26 21:26:51 gibbs Exp $
*/
VERSION = "Id: //depot/aic7xxx/aic7xxx/aic79xx.reg#67 $"
VERSION = "Id: //depot/aic7xxx/aic7xxx/aic79xx.reg#69 $"
/*
* This file is processed by the aic7xxx_asm utility for use in assembling
@ -3844,10 +3844,15 @@ scb {
}
SCB_LUN {
size 1
field LID 0xff
field LID 0xff
}
SCB_TASK_ATTRIBUTE {
size 1
/*
* Overloaded field for non-packetized
* ignore wide residue message handling.
*/
field SCB_XFERLEN_ODD 0x01
}
SCB_CDB_LEN {
size 1

View File

@ -1,4 +1,4 @@
/* $NetBSD: aic79xx.seq,v 1.5 2003/08/29 00:46:07 thorpej Exp $ */
/* $NetBSD: aic79xx.seq,v 1.6 2003/08/29 01:28:53 thorpej Exp $ */
/*
* Adaptec U320 device driver firmware for Linux and FreeBSD.
@ -39,10 +39,10 @@
* IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
* POSSIBILITY OF SUCH DAMAGES.
*
* $FreeBSD: src/sys/dev/aic7xxx/aic79xx.seq,v 1.10 2003/05/26 21:18:48 gibbs Exp $
* $FreeBSD: src/sys/dev/aic7xxx/aic79xx.seq,v 1.11 2003/05/26 21:26:52 gibbs Exp $
*/
VERSION = "Id: //depot/aic7xxx/aic7xxx/aic79xx.seq#93 $"
VERSION = "Id: //depot/aic7xxx/aic7xxx/aic79xx.seq#94 $"
PATCH_ARG_LIST = "struct ahd_softc *ahd"
PREFIX = "ahd_"
@ -874,7 +874,8 @@ mesgin_ign_wide_residue:
mvi REG0 call inb_next;
cmp REG0, 0x01 jne mesgin_reject;
test SCB_RESIDUAL_SGPTR[0], SG_LIST_NULL jz . + 2;
test DATA_COUNT_ODD, 0x1 jz mesgin_done;
test SCB_TASK_ATTRIBUTE, SCB_XFERLEN_ODD jnz mesgin_done;
SET_SEQINTCODE(IGN_WIDE_RES)
jmp mesgin_done;
mesgin_proto_violation:
@ -1319,8 +1320,6 @@ idle_sg_avail:
bmov HADDR, CCSGRAM, 4;
}
bmov HCNT, CCSGRAM, 3;
test HCNT[0], 0x1 jz . + 2;
xor DATA_COUNT_ODD, 0x1;
bmov SCB_RESIDUAL_DATACNT[3], CCSGRAM, 1;
if ((ahd->flags & AHD_39BIT_ADDRESSING) != 0) {
and HADDR[4], SG_HIGH_ADDR_BITS, SCB_RESIDUAL_DATACNT[3];
@ -1336,8 +1335,6 @@ sg_advance:
adc SCB_RESIDUAL_SGPTR[2],A;
adc SCB_RESIDUAL_SGPTR[3],A;
mov SINDEX, SCB_RESIDUAL_SGPTR[0];
test DATA_COUNT_ODD, 0x1 jz . + 2;
or SINDEX, ODD_SEG;
test SCB_RESIDUAL_DATACNT[3], SG_LAST_SEG jz . + 3;
or SINDEX, LAST_SEG;
clr SG_STATE;
@ -1363,12 +1360,9 @@ sg_advance:
*/
load_first_seg:
bmov HADDR, SCB_DATAPTR, 11;
and DATA_COUNT_ODD, 0x1, SCB_DATACNT[0];
and REG_ISR, ~SG_FULL_RESID, SCB_SGPTR[0];
test SCB_DATACNT[3], SG_LAST_SEG jz . + 2;
or REG_ISR, LAST_SEG;
test DATA_COUNT_ODD, 0x1 jz . + 2;
or REG_ISR, ODD_SEG;
mov SG_CACHE_PRE, REG_ISR;
mvi DFCNTRL, (PRELOADEN|SCSIEN|HDMAEN);
/*
@ -1518,7 +1512,7 @@ data_phase_done:
* send Ignore Wide Residue messages for data-in phases.
test DFCNTRL, DIRECTION jz target_ITloop;
test SSTAT1, REQINIT jnz .;
test DATA_COUNT_ODD, 0x1 jz target_ITloop;
test SCB_TASK_ATTRIBUTE, SCB_XFERLEN_ODD jz target_ITloop;
SET_MODE(M_SCSI, M_SCSI)
test NEGCONOPTS, WIDEXFER jz target_ITloop;
*/
@ -1588,9 +1582,6 @@ sgptr_fixup:
adc SCB_RESIDUAL_SGPTR[3], -1;
sgptr_fixup_done:
and SCB_RESIDUAL_SGPTR[0], SG_ADDR_MASK, SG_CACHE_SHADOW;
clr DATA_COUNT_ODD;
test SG_CACHE_SHADOW, ODD_SEG jz . + 2;
or DATA_COUNT_ODD, 0x1;
clr SCB_RESIDUAL_DATACNT[3]; /* We are not the last seg */
bmov SCB_RESIDUAL_DATACNT, SHCNT, 3 ret;

View File

@ -2,8 +2,8 @@
* DO NOT EDIT - This file is automatically generated
* from the following source files:
*
* Id: //depot/aic7xxx/aic7xxx/aic79xx.seq#93 $
* Id: //depot/aic7xxx/aic7xxx/aic79xx.reg#67 $
* Id: //depot/aic7xxx/aic7xxx/aic79xx.seq#94 $
* Id: //depot/aic7xxx/aic7xxx/aic79xx.reg#69 $
*/
typedef int (ahd_reg_print_t)(u_int, u_int *, u_int);
typedef struct ahd_reg_parse_entry {
@ -3683,6 +3683,7 @@ ahd_reg_print_t ahd_scb_disconnected_lists_print;
#define LID 0xff
#define SCB_TASK_ATTRIBUTE 0x1ab
#define SCB_XFERLEN_ODD 0x01
#define SCB_CDB_LEN 0x1ac
#define SCB_CDB_LEN_PTR 0x80
@ -3768,5 +3769,5 @@ ahd_reg_print_t ahd_scb_disconnected_lists_print;
/* Exported Labels */
#define LABEL_seq_isr 0x271
#define LABEL_timer_isr 0x26d
#define LABEL_seq_isr 0x269
#define LABEL_timer_isr 0x265

View File

@ -2,8 +2,8 @@
* DO NOT EDIT - This file is automatically generated
* from the following source files:
*
* Id: //depot/aic7xxx/aic7xxx/aic79xx.seq#93 $
* Id: //depot/aic7xxx/aic7xxx/aic79xx.reg#67 $
* Id: //depot/aic7xxx/aic7xxx/aic79xx.seq#94 $
* Id: //depot/aic7xxx/aic7xxx/aic79xx.reg#69 $
*/
static uint8_t seqprog[] = {
0xff, 0x02, 0x06, 0x78,
@ -23,9 +23,9 @@ static uint8_t seqprog[] = {
0x20, 0x4b, 0x82, 0x69,
0xfc, 0x42, 0x24, 0x78,
0x10, 0x40, 0x24, 0x78,
0x00, 0xe2, 0xd4, 0x5d,
0x00, 0xe2, 0xc4, 0x5d,
0x20, 0x4d, 0x28, 0x78,
0x00, 0xe2, 0xd4, 0x5d,
0x00, 0xe2, 0xc4, 0x5d,
0x30, 0x3f, 0xc0, 0x09,
0x30, 0xe0, 0x30, 0x60,
0x7f, 0x4a, 0x94, 0x08,
@ -47,7 +47,7 @@ static uint8_t seqprog[] = {
0x14, 0xea, 0x04, 0x00,
0x08, 0xa8, 0x51, 0x03,
0xff, 0xae, 0x3f, 0x68,
0x00, 0xe2, 0x52, 0x5b,
0x00, 0xe2, 0x56, 0x5b,
0x00, 0xe2, 0x3e, 0x40,
0x00, 0xea, 0x44, 0x59,
0x01, 0xea, 0x00, 0x30,
@ -241,8 +241,8 @@ static uint8_t seqprog[] = {
0xff, 0xea, 0x46, 0x02,
0x02, 0x5c, 0x50, 0x31,
0x40, 0xea, 0x96, 0x00,
0x02, 0x56, 0xdc, 0x6d,
0x01, 0x55, 0xdc, 0x6d,
0x02, 0x56, 0xcc, 0x6d,
0x01, 0x55, 0xcc, 0x6d,
0x10, 0xa8, 0xdf, 0x79,
0x10, 0x40, 0xe8, 0x69,
0x01, 0x56, 0xe8, 0x79,
@ -258,9 +258,9 @@ static uint8_t seqprog[] = {
0x40, 0xea, 0x66, 0x02,
0x08, 0x3c, 0x78, 0x00,
0x80, 0xea, 0x62, 0x02,
0x00, 0xe2, 0xb4, 0x5b,
0x00, 0xe2, 0xb8, 0x5b,
0x01, 0x36, 0xc1, 0x31,
0x9f, 0xe0, 0x56, 0x7c,
0x9f, 0xe0, 0x4c, 0x7c,
0x80, 0xe0, 0x0c, 0x72,
0xa0, 0xe0, 0x44, 0x72,
0xc0, 0xe0, 0x3a, 0x72,
@ -291,7 +291,7 @@ static uint8_t seqprog[] = {
0x02, 0x4d, 0xf8, 0x69,
0x40, 0x33, 0x67, 0x02,
0x00, 0xe2, 0xf8, 0x41,
0x80, 0x33, 0xb1, 0x6a,
0x80, 0x33, 0xb5, 0x6a,
0x01, 0x44, 0x10, 0x33,
0x08, 0xa8, 0x51, 0x03,
0x00, 0xe2, 0xf8, 0x41,
@ -304,31 +304,31 @@ static uint8_t seqprog[] = {
0xbf, 0xe2, 0xc4, 0x09,
0x20, 0xa8, 0x65, 0x7a,
0x01, 0xe2, 0x88, 0x30,
0x00, 0xe2, 0xb4, 0x5b,
0x00, 0xe2, 0xb8, 0x5b,
0xa0, 0x36, 0x6d, 0x62,
0x23, 0xa8, 0x89, 0x08,
0x00, 0xe2, 0xb4, 0x5b,
0x00, 0xe2, 0xb8, 0x5b,
0xa0, 0x36, 0x6d, 0x62,
0x00, 0xa8, 0x64, 0x42,
0xff, 0xe2, 0x64, 0x62,
0x00, 0xe2, 0x84, 0x42,
0x40, 0xea, 0x98, 0x00,
0x01, 0xe2, 0x88, 0x30,
0x00, 0xe2, 0xb4, 0x5b,
0x00, 0xe2, 0xb8, 0x5b,
0xa0, 0x36, 0x43, 0x72,
0x40, 0xea, 0x98, 0x00,
0x01, 0x31, 0x89, 0x32,
0x08, 0xea, 0x62, 0x02,
0x00, 0xe2, 0xf8, 0x41,
0xe0, 0xea, 0xd0, 0x5b,
0x80, 0xe0, 0xbc, 0x6a,
0x04, 0xe0, 0x62, 0x73,
0x02, 0xe0, 0x92, 0x73,
0x00, 0xea, 0x1a, 0x73,
0x03, 0xe0, 0xa2, 0x73,
0xe0, 0xea, 0xd4, 0x5b,
0x80, 0xe0, 0xc0, 0x6a,
0x04, 0xe0, 0x66, 0x73,
0x02, 0xe0, 0x96, 0x73,
0x00, 0xea, 0x1e, 0x73,
0x03, 0xe0, 0xa6, 0x73,
0x23, 0xe0, 0x96, 0x72,
0x08, 0xe0, 0xb8, 0x72,
0x00, 0xe2, 0xb4, 0x5b,
0x08, 0xe0, 0xbc, 0x72,
0x00, 0xe2, 0xb8, 0x5b,
0x07, 0xea, 0x50, 0x59,
0x07, 0xea, 0x04, 0x00,
0x08, 0x42, 0xf9, 0x71,
@ -344,16 +344,18 @@ static uint8_t seqprog[] = {
0x01, 0x64, 0xc0, 0x31,
0x00, 0x30, 0x45, 0x59,
0x01, 0x30, 0x01, 0x30,
0x01, 0xe0, 0xb6, 0x7a,
0xa0, 0xea, 0xc6, 0x5b,
0x01, 0xa0, 0xb6, 0x62,
0x01, 0xe0, 0xba, 0x7a,
0xa0, 0xea, 0xca, 0x5b,
0x01, 0xa0, 0xba, 0x62,
0x01, 0x84, 0xaf, 0x7a,
0x01, 0xa7, 0xb8, 0x7a,
0x00, 0xe2, 0xb8, 0x42,
0x01, 0xab, 0xbd, 0x6a,
0x05, 0xea, 0x50, 0x59,
0x05, 0xea, 0x04, 0x00,
0x00, 0xe2, 0xbc, 0x42,
0x03, 0xea, 0x50, 0x59,
0x03, 0xea, 0x04, 0x00,
0x00, 0xe2, 0xb8, 0x42,
0x07, 0xea, 0xd8, 0x5b,
0x00, 0xe2, 0xbc, 0x42,
0x07, 0xea, 0xdc, 0x5b,
0x01, 0x44, 0xd4, 0x31,
0x00, 0xe2, 0xf8, 0x41,
0x3f, 0xe0, 0x6a, 0x0a,
@ -366,54 +368,54 @@ static uint8_t seqprog[] = {
0x01, 0xea, 0xc6, 0x01,
0x02, 0xe2, 0xc8, 0x31,
0x02, 0xec, 0x40, 0x31,
0xff, 0xa1, 0xd8, 0x72,
0xff, 0xa1, 0xdc, 0x72,
0x02, 0xe8, 0xda, 0x31,
0x02, 0xa0, 0x50, 0x31,
0x00, 0xe2, 0xfa, 0x42,
0x00, 0xe2, 0xfe, 0x42,
0x80, 0x33, 0x67, 0x02,
0x01, 0x44, 0xd4, 0x31,
0x00, 0xe2, 0xb4, 0x5b,
0x00, 0xe2, 0xb8, 0x5b,
0x01, 0x33, 0x67, 0x02,
0xe0, 0x36, 0x15, 0x63,
0xe0, 0x36, 0x19, 0x63,
0x02, 0x33, 0x67, 0x02,
0x20, 0x46, 0x0e, 0x63,
0x20, 0x46, 0x12, 0x63,
0xff, 0xea, 0x52, 0x09,
0xa8, 0xea, 0xc6, 0x5b,
0x04, 0xa8, 0xf5, 0x7a,
0xa8, 0xea, 0xca, 0x5b,
0x04, 0xa8, 0xf9, 0x7a,
0x01, 0x34, 0xc1, 0x31,
0x00, 0xa9, 0xf5, 0x62,
0x00, 0xa9, 0xf9, 0x62,
0x01, 0x35, 0xc1, 0x31,
0x00, 0xaa, 0xff, 0x72,
0x00, 0xaa, 0x03, 0x73,
0x01, 0xa9, 0x52, 0x11,
0xff, 0xa9, 0xea, 0x6a,
0x00, 0xe2, 0x0e, 0x43,
0xff, 0xa9, 0xee, 0x6a,
0x00, 0xe2, 0x12, 0x43,
0x10, 0x33, 0x67, 0x02,
0x04, 0xa8, 0x0f, 0x7b,
0x04, 0xa8, 0x13, 0x7b,
0xfb, 0xa8, 0x51, 0x0b,
0xff, 0xea, 0x66, 0x0a,
0x01, 0x9c, 0x09, 0x6b,
0x01, 0x9c, 0x0d, 0x6b,
0x02, 0xa8, 0x90, 0x32,
0x00, 0xe2, 0x6a, 0x59,
0x10, 0xa8, 0xb9, 0x7a,
0xff, 0xea, 0xd8, 0x5b,
0x00, 0xe2, 0xb8, 0x42,
0x10, 0xa8, 0xbd, 0x7a,
0xff, 0xea, 0xdc, 0x5b,
0x00, 0xe2, 0xbc, 0x42,
0x04, 0xea, 0x50, 0x59,
0x04, 0xea, 0x04, 0x00,
0x00, 0xe2, 0xb8, 0x42,
0x00, 0xe2, 0xbc, 0x42,
0x04, 0xea, 0x50, 0x59,
0x04, 0xea, 0x04, 0x00,
0x00, 0xe2, 0xf8, 0x41,
0x08, 0xa8, 0xb1, 0x7a,
0xc0, 0x33, 0x25, 0x7b,
0x80, 0x33, 0xb1, 0x6a,
0xff, 0x88, 0x25, 0x6b,
0x40, 0x33, 0xb1, 0x6a,
0x10, 0xa8, 0x2b, 0x7b,
0x08, 0xa8, 0xb5, 0x7a,
0xc0, 0x33, 0x29, 0x7b,
0x80, 0x33, 0xb5, 0x6a,
0xff, 0x88, 0x29, 0x6b,
0x40, 0x33, 0xb5, 0x6a,
0x10, 0xa8, 0x2f, 0x7b,
0x0a, 0xea, 0x50, 0x59,
0x0a, 0xea, 0x04, 0x00,
0x00, 0xe2, 0x4a, 0x5b,
0x00, 0xe2, 0x7e, 0x43,
0x50, 0x4b, 0x32, 0x6b,
0x00, 0xe2, 0x4e, 0x5b,
0x00, 0xe2, 0x82, 0x43,
0x50, 0x4b, 0x36, 0x6b,
0xbf, 0x3a, 0x74, 0x08,
0x01, 0xe0, 0xf4, 0x31,
0xff, 0xea, 0xc0, 0x09,
@ -427,21 +429,21 @@ static uint8_t seqprog[] = {
0x33, 0xea, 0x00, 0x00,
0x02, 0x42, 0x51, 0x31,
0xff, 0xae, 0x65, 0x68,
0xff, 0x88, 0x57, 0x6b,
0x01, 0x9c, 0x53, 0x6b,
0x02, 0x9c, 0x5b, 0x6b,
0x01, 0x84, 0x5b, 0x7b,
0xff, 0x88, 0x5b, 0x6b,
0x01, 0x9c, 0x57, 0x6b,
0x02, 0x9c, 0x5f, 0x6b,
0x01, 0x84, 0x5f, 0x7b,
0x02, 0x28, 0x19, 0x33,
0x02, 0xa8, 0x50, 0x36,
0xff, 0x88, 0x5b, 0x73,
0x00, 0xe2, 0x2e, 0x5b,
0xff, 0x88, 0x5f, 0x73,
0x00, 0xe2, 0x32, 0x5b,
0x02, 0xa8, 0x5c, 0x33,
0x02, 0x2c, 0x19, 0x33,
0x02, 0xa8, 0x58, 0x32,
0x04, 0x9c, 0x39, 0x07,
0xc0, 0x33, 0xb1, 0x6a,
0xc0, 0x33, 0xb5, 0x6a,
0x04, 0xa8, 0x51, 0x03,
0x20, 0xa8, 0x7f, 0x6b,
0x20, 0xa8, 0x83, 0x6b,
0x02, 0xa8, 0x40, 0x31,
0xc0, 0x34, 0xc1, 0x09,
0x00, 0x35, 0x51, 0x01,
@ -456,42 +458,42 @@ static uint8_t seqprog[] = {
0xf7, 0x57, 0xae, 0x08,
0x08, 0xea, 0x98, 0x00,
0x01, 0x44, 0xd4, 0x31,
0xee, 0x00, 0x88, 0x6b,
0xee, 0x00, 0x8c, 0x6b,
0x02, 0xea, 0xb4, 0x00,
0x00, 0xe2, 0xb0, 0x5b,
0x09, 0x4c, 0x8a, 0x7b,
0x00, 0xe2, 0xb4, 0x5b,
0x09, 0x4c, 0x8e, 0x7b,
0x08, 0x4c, 0x06, 0x68,
0x0b, 0xea, 0x50, 0x59,
0x0b, 0xea, 0x04, 0x00,
0x01, 0x44, 0xd4, 0x31,
0x20, 0x33, 0xf9, 0x79,
0x00, 0xe2, 0x9a, 0x5b,
0x00, 0xe2, 0x9e, 0x5b,
0x00, 0xe2, 0xf8, 0x41,
0x01, 0x84, 0x9f, 0x7b,
0x01, 0x84, 0xa3, 0x7b,
0x01, 0x9c, 0x39, 0x07,
0x08, 0x60, 0x20, 0x33,
0x08, 0x80, 0x31, 0x37,
0xdf, 0x33, 0x67, 0x0a,
0xee, 0x00, 0xac, 0x6b,
0xee, 0x00, 0xb0, 0x6b,
0x05, 0xea, 0xb4, 0x00,
0x33, 0xea, 0x44, 0x59,
0x33, 0xea, 0x00, 0x00,
0x00, 0xe2, 0x6a, 0x59,
0x00, 0xe2, 0xb8, 0x42,
0x00, 0xe2, 0xbc, 0x42,
0x01, 0xea, 0x6c, 0x02,
0xc0, 0xea, 0x66, 0x06,
0xff, 0x42, 0xc0, 0x6b,
0x01, 0x41, 0xb4, 0x6b,
0x02, 0x41, 0xb4, 0x7b,
0xff, 0x42, 0xc0, 0x6b,
0x01, 0x41, 0xb4, 0x6b,
0x02, 0x41, 0xb4, 0x7b,
0xff, 0x42, 0xc0, 0x7b,
0x04, 0x4c, 0xb4, 0x6b,
0xff, 0x42, 0xc4, 0x6b,
0x01, 0x41, 0xb8, 0x6b,
0x02, 0x41, 0xb8, 0x7b,
0xff, 0x42, 0xc4, 0x6b,
0x01, 0x41, 0xb8, 0x6b,
0x02, 0x41, 0xb8, 0x7b,
0xff, 0x42, 0xc4, 0x7b,
0x04, 0x4c, 0xb8, 0x6b,
0xe0, 0x41, 0x6c, 0x0e,
0x01, 0x44, 0xd4, 0x31,
0xff, 0x42, 0xc8, 0x7b,
0x04, 0x4c, 0xc8, 0x6b,
0xff, 0x42, 0xcc, 0x7b,
0x04, 0x4c, 0xcc, 0x6b,
0xe0, 0x41, 0x6c, 0x0a,
0xe0, 0x36, 0xf9, 0x61,
0xff, 0xea, 0xca, 0x09,
@ -500,12 +502,12 @@ static uint8_t seqprog[] = {
0x01, 0x44, 0xd4, 0x35,
0x10, 0xea, 0x80, 0x00,
0x01, 0xe2, 0x62, 0x36,
0x04, 0xa6, 0xe0, 0x7b,
0x04, 0xa6, 0xe4, 0x7b,
0xff, 0xea, 0x5a, 0x09,
0xff, 0xea, 0x4c, 0x0d,
0x01, 0xa6, 0xfe, 0x6b,
0x01, 0xa6, 0x02, 0x6c,
0x10, 0xad, 0x64, 0x78,
0x80, 0xad, 0xf6, 0x6b,
0x80, 0xad, 0xfa, 0x6b,
0x08, 0xad, 0x64, 0x68,
0x04, 0x84, 0xf9, 0x30,
0x00, 0xea, 0x08, 0x81,
@ -522,8 +524,6 @@ static uint8_t seqprog[] = {
0x08, 0xb0, 0xe0, 0x30,
0x04, 0xb0, 0xe0, 0x30,
0x03, 0xb0, 0xf0, 0x30,
0x01, 0x78, 0x0c, 0x7c,
0x01, 0xa7, 0x4e, 0x11,
0x01, 0xb0, 0x06, 0x33,
0x7f, 0x83, 0xe9, 0x08,
0x04, 0xac, 0x58, 0x19,
@ -533,9 +533,7 @@ static uint8_t seqprog[] = {
0x00, 0x86, 0x0d, 0x23,
0x00, 0x87, 0x0f, 0x23,
0x01, 0x84, 0xc5, 0x31,
0x01, 0xa7, 0x22, 0x7c,
0x04, 0xe2, 0xc4, 0x01,
0x80, 0x83, 0x29, 0x7c,
0x80, 0x83, 0x25, 0x7c,
0x02, 0xe2, 0xc4, 0x01,
0xff, 0xea, 0x4c, 0x09,
0x01, 0xe2, 0x36, 0x30,
@ -545,86 +543,80 @@ static uint8_t seqprog[] = {
0x00, 0xe2, 0x64, 0x50,
0xfe, 0xa6, 0x4c, 0x0d,
0x0b, 0x90, 0xe1, 0x30,
0x01, 0x98, 0x4f, 0x09,
0xfd, 0x9c, 0x49, 0x09,
0x80, 0x9b, 0x3f, 0x7c,
0x80, 0x9b, 0x39, 0x7c,
0x02, 0xa4, 0x48, 0x01,
0x01, 0xa7, 0x42, 0x7c,
0x04, 0xa4, 0x48, 0x01,
0x01, 0xa4, 0x36, 0x30,
0xa8, 0xea, 0x32, 0x00,
0xfd, 0x9c, 0x39, 0x0b,
0x05, 0x9b, 0x07, 0x33,
0x80, 0x83, 0x4f, 0x6c,
0x80, 0x83, 0x45, 0x6c,
0x02, 0xea, 0x4c, 0x05,
0xff, 0xea, 0x4c, 0x0d,
0x00, 0xe2, 0x3e, 0x59,
0x02, 0xa6, 0xe2, 0x6b,
0x02, 0xa6, 0xe6, 0x6b,
0x80, 0xf9, 0xf2, 0x05,
0xc0, 0x33, 0x5d, 0x7c,
0xc0, 0x33, 0x53, 0x7c,
0x03, 0xea, 0x50, 0x59,
0x03, 0xea, 0x04, 0x00,
0x20, 0x33, 0x81, 0x7c,
0x01, 0x84, 0x67, 0x6c,
0x20, 0x33, 0x77, 0x7c,
0x01, 0x84, 0x5d, 0x6c,
0x06, 0xea, 0x50, 0x59,
0x06, 0xea, 0x04, 0x00,
0x00, 0xe2, 0x84, 0x44,
0x00, 0xe2, 0x7a, 0x44,
0x01, 0x00, 0x60, 0x32,
0xee, 0x00, 0x70, 0x6c,
0xee, 0x00, 0x66, 0x6c,
0x05, 0xea, 0xb4, 0x00,
0x33, 0xea, 0x44, 0x59,
0x33, 0xea, 0x00, 0x00,
0x80, 0x3d, 0x7a, 0x00,
0xfc, 0x42, 0x72, 0x7c,
0xfc, 0x42, 0x68, 0x7c,
0x7f, 0x3d, 0x7a, 0x08,
0x00, 0x30, 0x45, 0x59,
0x01, 0x30, 0x01, 0x30,
0x09, 0xea, 0x50, 0x59,
0x09, 0xea, 0x04, 0x00,
0x00, 0xe2, 0xf8, 0x41,
0x01, 0x9c, 0x67, 0x6c,
0x00, 0xe2, 0x34, 0x5c,
0x01, 0x9c, 0x5d, 0x6c,
0x00, 0xe2, 0x30, 0x5c,
0x20, 0x33, 0x67, 0x02,
0x01, 0x00, 0x60, 0x32,
0x02, 0xa6, 0x8c, 0x7c,
0x00, 0xe2, 0x50, 0x5c,
0x02, 0xa6, 0x82, 0x7c,
0x00, 0xe2, 0x46, 0x5c,
0x00, 0xe2, 0x56, 0x58,
0x00, 0xe2, 0x66, 0x58,
0x00, 0xe2, 0x3a, 0x58,
0x00, 0x30, 0x45, 0x59,
0x01, 0x30, 0x01, 0x30,
0x20, 0x19, 0x8c, 0x6c,
0x00, 0xe2, 0xbc, 0x5c,
0x04, 0x19, 0xa6, 0x6c,
0x20, 0x19, 0x82, 0x6c,
0x00, 0xe2, 0xb2, 0x5c,
0x04, 0x19, 0x9c, 0x6c,
0x02, 0x19, 0x32, 0x00,
0x01, 0x84, 0xa7, 0x7c,
0x01, 0x1b, 0xa0, 0x7c,
0x01, 0x1a, 0xa6, 0x6c,
0x00, 0xe2, 0x56, 0x44,
0x80, 0x4b, 0xac, 0x6c,
0x01, 0x4c, 0xa8, 0x7c,
0x03, 0x42, 0x56, 0x6c,
0x00, 0xe2, 0xdc, 0x5b,
0x01, 0x84, 0x9d, 0x7c,
0x01, 0x1b, 0x96, 0x7c,
0x01, 0x1a, 0x9c, 0x6c,
0x00, 0xe2, 0x4c, 0x44,
0x80, 0x4b, 0xa2, 0x6c,
0x01, 0x4c, 0x9e, 0x7c,
0x03, 0x42, 0x4c, 0x6c,
0x00, 0xe2, 0xe0, 0x5b,
0x80, 0xf9, 0xf2, 0x01,
0x04, 0x33, 0xf9, 0x79,
0x00, 0xe2, 0xf8, 0x41,
0x08, 0x5d, 0xc4, 0x6c,
0x08, 0x5d, 0xba, 0x6c,
0x00, 0xe2, 0x56, 0x58,
0x00, 0x30, 0x45, 0x59,
0x01, 0x30, 0x01, 0x30,
0x02, 0x1b, 0xb4, 0x7c,
0x08, 0x5d, 0xc2, 0x7c,
0x02, 0x1b, 0xaa, 0x7c,
0x08, 0x5d, 0xb8, 0x7c,
0x03, 0x68, 0x00, 0x37,
0x01, 0x84, 0x09, 0x07,
0x80, 0x1b, 0xce, 0x7c,
0x80, 0x84, 0xcf, 0x6c,
0x80, 0x1b, 0xc4, 0x7c,
0x80, 0x84, 0xc5, 0x6c,
0xff, 0x85, 0x0b, 0x1b,
0xff, 0x86, 0x0d, 0x23,
0xff, 0x87, 0x0f, 0x23,
0xf8, 0x1b, 0x08, 0x0b,
0xff, 0xea, 0x4e, 0x09,
0x04, 0x1b, 0xd6, 0x7c,
0x01, 0xa7, 0x4e, 0x01,
0xff, 0xea, 0x06, 0x0b,
0x03, 0x68, 0x00, 0x37,
0x00, 0xe2, 0xc4, 0x58,
@ -632,136 +624,136 @@ static uint8_t seqprog[] = {
0xf9, 0xd9, 0xb2, 0x0d,
0x01, 0xd9, 0xb2, 0x05,
0x01, 0x52, 0x48, 0x31,
0x20, 0xa4, 0xfe, 0x7c,
0x20, 0x5b, 0xfe, 0x7c,
0x80, 0xf9, 0x0c, 0x7d,
0x20, 0xa4, 0xee, 0x7c,
0x20, 0x5b, 0xee, 0x7c,
0x80, 0xf9, 0xfc, 0x7c,
0x02, 0xea, 0xb4, 0x00,
0x11, 0x00, 0x00, 0x10,
0x04, 0x19, 0x18, 0x7d,
0x04, 0x19, 0x08, 0x7d,
0xdf, 0x19, 0x32, 0x08,
0x60, 0x5b, 0xf6, 0x6c,
0x01, 0x4c, 0xf2, 0x7c,
0x60, 0x5b, 0xe6, 0x6c,
0x01, 0x4c, 0xe2, 0x7c,
0x20, 0x19, 0x32, 0x00,
0x01, 0xd9, 0xb2, 0x05,
0x02, 0xea, 0xb4, 0x00,
0x01, 0xd9, 0xb2, 0x05,
0x10, 0x5b, 0x10, 0x6d,
0x08, 0x5b, 0x1a, 0x6d,
0x20, 0x5b, 0x0a, 0x6d,
0x02, 0x5b, 0x3a, 0x6d,
0x10, 0x5b, 0x00, 0x6d,
0x08, 0x5b, 0x0a, 0x6d,
0x20, 0x5b, 0xfa, 0x6c,
0x02, 0x5b, 0x2a, 0x6d,
0x0e, 0xea, 0x50, 0x59,
0x0e, 0xea, 0x04, 0x00,
0x80, 0xf9, 0xfa, 0x6c,
0x80, 0xf9, 0xea, 0x6c,
0xdf, 0x5c, 0xb8, 0x08,
0x01, 0xd9, 0xb2, 0x05,
0x01, 0x9c, 0xf5, 0x6d,
0x00, 0xe2, 0x34, 0x5c,
0x00, 0xe2, 0x44, 0x5d,
0x01, 0x9c, 0xe5, 0x6d,
0x00, 0xe2, 0x30, 0x5c,
0x00, 0xe2, 0x34, 0x5d,
0x01, 0xae, 0x5d, 0x1b,
0x01, 0xd9, 0xb2, 0x05,
0x00, 0xe2, 0x2e, 0x5b,
0x00, 0xe2, 0x32, 0x5b,
0xf3, 0xac, 0xd5, 0x19,
0x00, 0xe2, 0x28, 0x55,
0x80, 0xac, 0x29, 0x6d,
0x00, 0xe2, 0x18, 0x55,
0x80, 0xac, 0x19, 0x6d,
0x0f, 0xea, 0x50, 0x59,
0x0f, 0xea, 0x04, 0x00,
0x00, 0xe2, 0x30, 0x45,
0x00, 0xe2, 0x20, 0x45,
0x04, 0x8c, 0xe1, 0x30,
0x01, 0xea, 0xf2, 0x00,
0x02, 0xea, 0x36, 0x00,
0xa8, 0xea, 0x32, 0x00,
0xff, 0xad, 0x37, 0x7d,
0xff, 0xad, 0x27, 0x7d,
0x14, 0xea, 0x50, 0x59,
0x14, 0xea, 0x04, 0x00,
0x00, 0xe2, 0xa6, 0x5d,
0x00, 0xe2, 0x96, 0x5d,
0x01, 0xd9, 0xb2, 0x05,
0x09, 0x80, 0xe1, 0x30,
0x02, 0xea, 0x36, 0x00,
0xa8, 0xea, 0x32, 0x00,
0x00, 0xe2, 0x9e, 0x5d,
0x00, 0xe2, 0x8e, 0x5d,
0x01, 0xd9, 0xb2, 0x05,
0x02, 0xa6, 0x54, 0x7d,
0x02, 0xa6, 0x44, 0x7d,
0x00, 0xe2, 0x3e, 0x59,
0x20, 0x5b, 0x62, 0x6d,
0x20, 0x5b, 0x52, 0x6d,
0xfc, 0x42, 0x3e, 0x7d,
0x10, 0x40, 0x40, 0x6d,
0x20, 0x4d, 0x42, 0x7d,
0x08, 0x5d, 0x52, 0x6d,
0x02, 0xa6, 0xe6, 0x6b,
0x00, 0xe2, 0x3e, 0x59,
0x20, 0x5b, 0x52, 0x6d,
0x01, 0x1b, 0x72, 0x6d,
0xfc, 0x42, 0x4e, 0x7d,
0x10, 0x40, 0x50, 0x6d,
0x20, 0x4d, 0x52, 0x7d,
0x08, 0x5d, 0x62, 0x6d,
0x02, 0xa6, 0xe2, 0x6b,
0x00, 0xe2, 0x3e, 0x59,
0x20, 0x5b, 0x62, 0x6d,
0x01, 0x1b, 0x82, 0x6d,
0xfc, 0x42, 0x5e, 0x7d,
0x10, 0x40, 0x60, 0x6d,
0x20, 0x4d, 0x64, 0x78,
0x08, 0x5d, 0x64, 0x78,
0x02, 0x19, 0x32, 0x00,
0x01, 0x5b, 0x40, 0x31,
0x00, 0xe2, 0xbc, 0x5c,
0x00, 0xe2, 0x9a, 0x5b,
0x00, 0xe2, 0xb2, 0x5c,
0x00, 0xe2, 0x9e, 0x5b,
0x20, 0xea, 0xb6, 0x00,
0x00, 0xe2, 0xdc, 0x5b,
0x00, 0xe2, 0xe0, 0x5b,
0x20, 0x5c, 0xb8, 0x00,
0x04, 0x19, 0x78, 0x6d,
0x01, 0x1a, 0x78, 0x6d,
0x04, 0x19, 0x68, 0x6d,
0x01, 0x1a, 0x68, 0x6d,
0x00, 0xe2, 0x3e, 0x59,
0x01, 0x1a, 0x64, 0x78,
0x80, 0xf9, 0xf2, 0x01,
0x20, 0xa0, 0xdc, 0x7d,
0x20, 0xa0, 0xcc, 0x7d,
0xff, 0xae, 0x5d, 0x1b,
0x08, 0xa8, 0x3f, 0x6b,
0x08, 0xa8, 0x43, 0x6b,
0x02, 0xea, 0xb4, 0x04,
0x01, 0x9c, 0x39, 0x03,
0x40, 0x5b, 0x92, 0x6d,
0x40, 0x5b, 0x82, 0x6d,
0x00, 0xe2, 0x3e, 0x59,
0x40, 0x5b, 0x92, 0x6d,
0x04, 0x5d, 0xf6, 0x7d,
0x01, 0x1a, 0xf6, 0x7d,
0x40, 0x5b, 0x82, 0x6d,
0x04, 0x5d, 0xe6, 0x7d,
0x01, 0x1a, 0xe6, 0x7d,
0x20, 0x4d, 0x64, 0x78,
0x40, 0x5b, 0xdc, 0x7d,
0x04, 0x5d, 0xf6, 0x7d,
0x01, 0x1a, 0xf6, 0x7d,
0x40, 0x5b, 0xcc, 0x7d,
0x04, 0x5d, 0xe6, 0x7d,
0x01, 0x1a, 0xe6, 0x7d,
0x80, 0xf9, 0xf2, 0x01,
0xff, 0xae, 0x5d, 0x1b,
0x08, 0xa8, 0x3f, 0x6b,
0x08, 0xa8, 0x43, 0x6b,
0x02, 0xea, 0xb4, 0x04,
0x00, 0xe2, 0x3e, 0x59,
0x01, 0x1b, 0x64, 0x78,
0x80, 0xf9, 0xf2, 0x01,
0x02, 0xea, 0xb4, 0x04,
0x00, 0xe2, 0x3e, 0x59,
0x01, 0x1b, 0xba, 0x6d,
0x40, 0x5b, 0xc8, 0x7d,
0x01, 0x1b, 0xba, 0x6d,
0x01, 0x1b, 0xaa, 0x6d,
0x40, 0x5b, 0xb8, 0x7d,
0x01, 0x1b, 0xaa, 0x6d,
0x02, 0x19, 0x32, 0x00,
0x01, 0x1a, 0x64, 0x78,
0x80, 0xf9, 0xf2, 0x01,
0xff, 0xea, 0x10, 0x03,
0x08, 0xa8, 0x51, 0x03,
0x00, 0xe2, 0x3e, 0x43,
0x01, 0x1a, 0xc4, 0x7d,
0x40, 0x5b, 0xc0, 0x7d,
0x01, 0x1a, 0xae, 0x6d,
0x00, 0xe2, 0x42, 0x43,
0x01, 0x1a, 0xb4, 0x7d,
0x40, 0x5b, 0xb0, 0x7d,
0x01, 0x1a, 0x9e, 0x6d,
0xfc, 0x42, 0x64, 0x78,
0x01, 0x1a, 0xc8, 0x6d,
0x01, 0x1a, 0xb8, 0x6d,
0x10, 0xea, 0x50, 0x59,
0x10, 0xea, 0x04, 0x00,
0xfc, 0x42, 0x64, 0x78,
0x10, 0x40, 0xce, 0x6d,
0x10, 0x40, 0xbe, 0x6d,
0x20, 0x4d, 0x64, 0x78,
0x40, 0x5b, 0xae, 0x6d,
0x40, 0x5b, 0x9e, 0x6d,
0x01, 0x1a, 0x64, 0x78,
0x01, 0xae, 0x5d, 0x1b,
0x30, 0x3f, 0xc0, 0x09,
0x30, 0xe0, 0x64, 0x60,
0x40, 0x4b, 0x64, 0x68,
0xff, 0xea, 0x52, 0x01,
0xee, 0x00, 0xe2, 0x6d,
0xee, 0x00, 0xd2, 0x6d,
0x80, 0xf9, 0xf2, 0x01,
0xff, 0xae, 0x5d, 0x1b,
0x02, 0xea, 0xb4, 0x00,
0x20, 0xea, 0x9a, 0x00,
0xf3, 0x42, 0xee, 0x6d,
0xf3, 0x42, 0xde, 0x6d,
0x12, 0xea, 0x50, 0x59,
0x12, 0xea, 0x04, 0x00,
0x00, 0xe2, 0xf8, 0x41,
@ -771,22 +763,22 @@ static uint8_t seqprog[] = {
0x01, 0xae, 0x5d, 0x1b,
0x11, 0xea, 0x50, 0x59,
0x11, 0xea, 0x04, 0x00,
0x00, 0xe2, 0x2e, 0x5b,
0x00, 0xe2, 0x32, 0x5b,
0x08, 0x5a, 0xb4, 0x00,
0x00, 0xe2, 0x1c, 0x5e,
0x00, 0xe2, 0x0c, 0x5e,
0xa8, 0xea, 0x32, 0x00,
0x00, 0xe2, 0x3e, 0x59,
0x80, 0x1a, 0x0a, 0x7e,
0x00, 0xe2, 0x1c, 0x5e,
0x80, 0x1a, 0xfa, 0x7d,
0x00, 0xe2, 0x0c, 0x5e,
0x80, 0x19, 0x32, 0x00,
0x40, 0x5b, 0x10, 0x6e,
0x08, 0x5a, 0x10, 0x7e,
0x40, 0x5b, 0x00, 0x6e,
0x08, 0x5a, 0x00, 0x7e,
0x20, 0x4d, 0x64, 0x78,
0x02, 0x84, 0x09, 0x03,
0x40, 0x5b, 0xdc, 0x7d,
0x40, 0x5b, 0xcc, 0x7d,
0xff, 0xae, 0x5d, 0x1b,
0x80, 0xf9, 0xf2, 0x01,
0x08, 0xa8, 0x3f, 0x6b,
0x08, 0xa8, 0x43, 0x6b,
0x02, 0xea, 0xb4, 0x04,
0x01, 0x38, 0xe1, 0x30,
0x05, 0x39, 0xe3, 0x98,
@ -1048,79 +1040,81 @@ static struct patch {
{ ahd_patch0_func, 333, 1, 1 },
{ ahd_patch2_func, 336, 1, 2 },
{ ahd_patch0_func, 337, 1, 1 },
{ ahd_patch1_func, 344, 1, 2 },
{ ahd_patch0_func, 345, 1, 1 },
{ ahd_patch9_func, 364, 1, 1 },
{ ahd_patch9_func, 367, 1, 1 },
{ ahd_patch1_func, 343, 1, 2 },
{ ahd_patch0_func, 344, 1, 1 },
{ ahd_patch1_func, 346, 1, 2 },
{ ahd_patch0_func, 347, 1, 1 },
{ ahd_patch9_func, 366, 1, 1 },
{ ahd_patch9_func, 369, 1, 1 },
{ ahd_patch9_func, 381, 1, 1 },
{ ahd_patch1_func, 391, 1, 2 },
{ ahd_patch0_func, 392, 1, 1 },
{ ahd_patch1_func, 394, 1, 2 },
{ ahd_patch0_func, 395, 1, 1 },
{ ahd_patch1_func, 403, 1, 2 },
{ ahd_patch0_func, 404, 1, 1 },
{ ahd_patch2_func, 417, 1, 2 },
{ ahd_patch0_func, 418, 1, 1 },
{ ahd_patch10_func, 448, 1, 1 },
{ ahd_patch1_func, 455, 1, 2 },
{ ahd_patch0_func, 456, 1, 1 },
{ ahd_patch2_func, 468, 1, 2 },
{ ahd_patch0_func, 469, 1, 1 },
{ ahd_patch11_func, 474, 6, 2 },
{ ahd_patch0_func, 480, 1, 1 },
{ ahd_patch12_func, 503, 1, 1 },
{ ahd_patch13_func, 512, 1, 1 },
{ ahd_patch14_func, 513, 1, 2 },
{ ahd_patch0_func, 514, 1, 1 },
{ ahd_patch9_func, 371, 1, 1 },
{ ahd_patch9_func, 383, 1, 1 },
{ ahd_patch1_func, 393, 1, 2 },
{ ahd_patch0_func, 394, 1, 1 },
{ ahd_patch1_func, 396, 1, 2 },
{ ahd_patch0_func, 397, 1, 1 },
{ ahd_patch1_func, 405, 1, 2 },
{ ahd_patch0_func, 406, 1, 1 },
{ ahd_patch2_func, 419, 1, 2 },
{ ahd_patch0_func, 420, 1, 1 },
{ ahd_patch10_func, 450, 1, 1 },
{ ahd_patch1_func, 457, 1, 2 },
{ ahd_patch0_func, 458, 1, 1 },
{ ahd_patch2_func, 470, 1, 2 },
{ ahd_patch0_func, 471, 1, 1 },
{ ahd_patch11_func, 476, 6, 2 },
{ ahd_patch0_func, 482, 1, 1 },
{ ahd_patch12_func, 505, 1, 1 },
{ ahd_patch13_func, 514, 1, 1 },
{ ahd_patch14_func, 515, 1, 2 },
{ ahd_patch0_func, 516, 1, 1 },
{ ahd_patch15_func, 519, 1, 1 },
{ ahd_patch14_func, 520, 1, 1 },
{ ahd_patch16_func, 533, 1, 2 },
{ ahd_patch0_func, 534, 1, 1 },
{ ahd_patch1_func, 556, 1, 2 },
{ ahd_patch0_func, 557, 1, 1 },
{ ahd_patch1_func, 560, 1, 2 },
{ ahd_patch0_func, 561, 1, 1 },
{ ahd_patch16_func, 531, 1, 2 },
{ ahd_patch0_func, 532, 1, 1 },
{ ahd_patch1_func, 551, 1, 2 },
{ ahd_patch0_func, 552, 1, 1 },
{ ahd_patch1_func, 555, 1, 2 },
{ ahd_patch0_func, 556, 1, 1 },
{ ahd_patch2_func, 561, 1, 2 },
{ ahd_patch0_func, 562, 1, 1 },
{ ahd_patch2_func, 566, 1, 2 },
{ ahd_patch0_func, 567, 1, 1 },
{ ahd_patch2_func, 571, 1, 2 },
{ ahd_patch0_func, 572, 1, 1 },
{ ahd_patch1_func, 573, 1, 2 },
{ ahd_patch0_func, 574, 1, 1 },
{ ahd_patch2_func, 585, 1, 2 },
{ ahd_patch0_func, 586, 1, 1 },
{ ahd_patch17_func, 590, 1, 1 },
{ ahd_patch18_func, 595, 1, 1 },
{ ahd_patch19_func, 596, 2, 1 },
{ ahd_patch18_func, 600, 1, 2 },
{ ahd_patch0_func, 601, 1, 1 },
{ ahd_patch2_func, 604, 1, 2 },
{ ahd_patch0_func, 605, 1, 1 },
{ ahd_patch2_func, 623, 1, 2 },
{ ahd_patch0_func, 624, 1, 1 },
{ ahd_patch20_func, 625, 14, 1 },
{ ahd_patch1_func, 643, 1, 2 },
{ ahd_patch0_func, 644, 1, 1 },
{ ahd_patch20_func, 645, 1, 1 },
{ ahd_patch1_func, 568, 1, 2 },
{ ahd_patch0_func, 569, 1, 1 },
{ ahd_patch2_func, 580, 1, 2 },
{ ahd_patch0_func, 581, 1, 1 },
{ ahd_patch17_func, 585, 1, 1 },
{ ahd_patch18_func, 590, 1, 1 },
{ ahd_patch19_func, 591, 2, 1 },
{ ahd_patch18_func, 595, 1, 2 },
{ ahd_patch0_func, 596, 1, 1 },
{ ahd_patch2_func, 599, 1, 2 },
{ ahd_patch0_func, 600, 1, 1 },
{ ahd_patch2_func, 615, 1, 2 },
{ ahd_patch0_func, 616, 1, 1 },
{ ahd_patch20_func, 617, 14, 1 },
{ ahd_patch1_func, 635, 1, 2 },
{ ahd_patch0_func, 636, 1, 1 },
{ ahd_patch20_func, 637, 1, 1 },
{ ahd_patch1_func, 649, 1, 2 },
{ ahd_patch0_func, 650, 1, 1 },
{ ahd_patch1_func, 657, 1, 2 },
{ ahd_patch0_func, 658, 1, 1 },
{ ahd_patch1_func, 665, 1, 2 },
{ ahd_patch0_func, 666, 1, 1 },
{ ahd_patch17_func, 689, 1, 1 },
{ ahd_patch17_func, 727, 1, 1 },
{ ahd_patch1_func, 738, 1, 2 },
{ ahd_patch0_func, 739, 1, 1 },
{ ahd_patch1_func, 756, 1, 2 },
{ ahd_patch0_func, 757, 1, 1 },
{ ahd_patch1_func, 759, 1, 2 },
{ ahd_patch0_func, 760, 1, 1 },
{ ahd_patch1_func, 763, 1, 2 },
{ ahd_patch0_func, 764, 1, 1 },
{ ahd_patch21_func, 766, 1, 2 },
{ ahd_patch0_func, 767, 2, 1 },
{ ahd_patch22_func, 770, 4, 2 },
{ ahd_patch0_func, 774, 1, 1 },
{ ahd_patch22_func, 782, 11, 1 }
{ ahd_patch17_func, 681, 1, 1 },
{ ahd_patch17_func, 719, 1, 1 },
{ ahd_patch1_func, 730, 1, 2 },
{ ahd_patch0_func, 731, 1, 1 },
{ ahd_patch1_func, 748, 1, 2 },
{ ahd_patch0_func, 749, 1, 1 },
{ ahd_patch1_func, 751, 1, 2 },
{ ahd_patch0_func, 752, 1, 1 },
{ ahd_patch1_func, 755, 1, 2 },
{ ahd_patch0_func, 756, 1, 1 },
{ ahd_patch21_func, 758, 1, 2 },
{ ahd_patch0_func, 759, 2, 1 },
{ ahd_patch22_func, 762, 4, 2 },
{ ahd_patch0_func, 766, 1, 1 },
{ ahd_patch22_func, 774, 11, 1 }
};
static struct cs {
@ -1136,9 +1130,9 @@ static struct cs {
{ 159, 162 },
{ 170, 178 },
{ 201, 250 },
{ 689, 705 },
{ 705, 719 },
{ 729, 733 }
{ 681, 697 },
{ 697, 711 },
{ 721, 725 }
};
static const int num_critical_sections = sizeof(critical_sections)