diff options
Diffstat (limited to 'sys/dev/pci/isesreg.h')
-rw-r--r-- | sys/dev/pci/isesreg.h | 645 |
1 files changed, 645 insertions, 0 deletions
diff --git a/sys/dev/pci/isesreg.h b/sys/dev/pci/isesreg.h new file mode 100644 index 00000000000..e49bea9a676 --- /dev/null +++ b/sys/dev/pci/isesreg.h @@ -0,0 +1,645 @@ +/* $OpenBSD: isesreg.h,v 1.1 2001/01/29 08:45:58 ho Exp $ $ */ + +/* + * Copyright (c) 2000 Håkan Olsson (ho@crt.se) + * Copyright (c) 2000 Theo de Raadt + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * 3. The name of the author may not be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. + * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, + * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +/* + * Register definitions for Pijnenburg PCC-ISES crypto chip. + * Definitions from revision 1.6 of the product datasheet. + */ + +/* DMA offsets */ +#define ISES_DMA_WRITE_COUNT 0x0100 +#define ISES_DMA_READ_COUNT 0x0102 +#define ISES_DMA_WRITE_START 0x0104 +#define ISES_DMA_READ_START 0x0108 +#define ISES_DMA_STATUS 0x010c + +/* + * PCC-ISES A-interface + */ + +#define ISES_A_OFFSET 0x0200 +#define ISES_A(x) (ISES_A_OFFSET + (x)) + +#define ISES_A_STAT ISES_A(0x00) /* status register */ +#define ISES_A_INTS ISES_A(0x04) /* interupt status register */ +#define ISES_A_INTE ISES_A(0x08) /* interupt enable register */ +#define ISES_A_SREQ ISES_A(0x0C) /* service request (read) */ +#define ISES_A_CTRL ISES_A_SREQ /* control register (write) */ +#define ISES_A_OQD ISES_A(0x10) /* Output Queue Data (read) */ +#define ISES_A_IQD ISES_A_OQD /* Input Queue Data (write) */ +#define ISES_A_OQS ISES_A(0x14) /* Output Queue Semaphore */ +#define ISES_A_IQS ISES_A(0x18) /* Input Queue Semaphore */ +#define ISES_A_OQF ISES_A(0x1C) /* Output Queue Filled (ro) */ +#define ISES_A_IQF ISES_A(0x20) /* Input Queue Free (ro) */ + +/* + * PCC-ISES B-interface + */ + +#define ISES_B_OFFSET 0x0300 +#define ISES_B(x) (ISES_B_OFFSET + (x)) + +#define ISES_B_BDATAIN ISES_B(0x0) +#define ISES_B_BDATAOUT ISES_B(0x4) +#define ISES_B_STAT ISES_B(0x8) + +/* + * PCC-ISES I-interface (not used) + */ + +#define ISES_I_OFFSET 0x0400 + +/* + * PCC-ISES board registers + */ + +#define ISES_BO_OFFSET 0x0500 +#define ISES_BO(x) (ISES_BO_OFFSET + (x)) + +#define ISES_BO_STAT ISES_BO(0x0) +#define ISES_BO_LOOPCOUNTER ISES_BO(0x4) +#define ISES_BO_TESTREG ISES_BO(0x8) + +#define ISES_BO_STAT_LOOP 0x00000001 /* B-interface LoopMode */ +#define ISES_BO_STAT_TAMPER 0x00000002 /* Set tamper */ +#define ISES_BO_STAT_POWERDOWN 0x00000004 /* Set power down */ +#define ISES_BO_STAT_ACONF 0x00000008 /* Set A-intf access to 16b */ +#define ISES_BO_STAT_HWRESET 0x00000010 /* Reset PCC-ISES (hw) */ +#define ISES_BO_STAT_AIRQ 0x00000020 /* A-interface interrupt (ro)*/ + +/* + * PCC-ISES A-interface STAT register bits + */ + +#define ISES_STAT_LNAU_MASKED 0x00000001 /* LNAU flags masked, this bit + must be zero for the other + LNAU flags to be read + correctly. */ +#define ISES_STAT_LNAU_BUSY_1 0x00000002 /* LNAU unit 1 is busy */ +#define ISES_STAT_LNAU_ERR_1 0x00000004 /* LNAU unit 1 error */ +#define ISES_STAT_LNAU_BUSY_2 0x00000008 /* LNAU unit 2 is busy */ +#define ISES_STAT_LNAU_ERR_2 0x00000010 /* LNAU unit 2 error */ +#define ISES_STAT_BCHU_MASKED 0x00000020 /* BCHU flags masked */ +#define ISES_STAT_BCHU_BUSY 0x00000040 /* BCHU is busy */ +#define ISES_STAT_BCHU_ERR 0x00000080 /* BCHU error flag */ +#define ISES_STAT_BCHU_SCIF 0x00000100 /* symm. crypto inoperative */ +#define ISES_STAT_BCHU_HIF 0x00000200 /* hash unit inoperative */ +#define ISES_STAT_BCHU_DDB 0x00000400 /* discard data blocks */ +#define ISES_STAT_BCHU_IRF 0x00000800 /* input request flag */ +#define ISES_STAT_BCHU_OAF 0x00001000 /* output available flag */ +#define ISES_STAT_BCHU_DIE 0x00002000 /* data input enabled */ +#define ISES_STAT_BCHU_UE 0x00004000 /* unit enable bit */ +#define ISES_STAT_BCHU_IFE 0x00008000 /* input FIFO empty */ +#define ISES_STAT_BCHU_IFHE 0x00010000 /* input FIFO half emtpy */ +#define ISES_STAT_BCHU_IFF 0x00020000 /* input FIFO full */ +#define ISES_STAT_BCHU_OFE 0x00040000 /* output FIFO emtpy */ +#define ISES_STAT_BCHU_OFHF 0x00080000 /* output FIFO half full */ +#define ISES_STAT_BCHU_OFF 0x00100000 /* output FIFO full */ +#define ISES_STAT_HW_DA 0x00200000 /* downloaded appl flag */ +#define ISES_STAT_HW_ACONF 0x00400000 /* A-intf configuration flag */ +#define ISES_STAT_SW_WFOQ 0x00800000 /* SW: Waiting for out queue */ +#define ISES_STAT_SW_OQSINC 0x08000000 /* SW 2.x: OQS increased */ + +#define ISES_STAT_IDP_MASK 0x0f000000 /* IDP state mask (HW_DA=0) */ +#define ISES_STAT_IDP_STATE(x) (((x) & ISES_STAT_IDP_MASK) >> 24) + +static const char *ises_idp_state[] = +{ + "reset state", /* 0x0 */ + "testing NSRAM", /* 0x1 */ + "checking for firmware", /* 0x2 */ + "clearing NSRAM", /* 0x3 */ + "waiting for program length", /* 0x4 */ + "waiting for program data", /* 0x5 */ + "waiting for program CRC", /* 0x6 */ + "functional test program", /* 0x7 */ + 0, 0, 0, 0, 0, 0, 0, /* 0x8-0xe */ + "Error: NSRAM or firmware failed" /* 0xf */ +}; + +#define ISES_STAT_SW_MASK 0x03000000 /* SW mode (HW_DA=1) */ +#define ISES_STAT_SW_MODE(x) (((x) & ISES_STAT_SW_MASK) >> 24) + +#define ISES_A_CTRL_RESET 0x0000 /* SW reset (go to ST mode) */ +#define ISES_A_CTRL_CONTINUE 0x0001 /* Return to CMD from WFC */ + +#ifdef ISESDEBUG +static const char *ises_sw_mode[] = +{ + "ST (SelfTest)", /* 0x0 */ + "CMD", /* 0x1 (normal) */ + "WFC (Wait for continue)", /* 0x2 */ + "CMD (Wait for reset)" /* 0x3 */ +}; +#endif + +/* BERR (BCHU Error Register) */ +#define ISES_BERR_DPAR 0x00000001 /* DES parity error */ +#define ISES_BERR_IDESBCP 0x00000002 /* illegal DES mode value */ +#define ISES_BERR_ISFRBCP 0x00000004 /* illegal SAFER rounds spec */ +#define ISES_BERR_INCMBCP 0x00000008 /* illegal non-crypto mode */ +#define ISES_BERR_IBCF 0x00000010 /* illegal value in BCFR */ +#define ISES_BERR_reserved 0x00000020 /* reserved */ +#define ISES_BERR_SRB 0x00000040 /* write SCU while busy */ +#define ISES_BERR_HRB 0x00000080 /* write HU while busy */ +#define ISES_BERR_IHFR 0x00000100 /* illegal value in HFR */ +#define ISES_BERR_PADERR 0x00000200 /* padding error */ +#define ISES_BERR_BIDM 0x00000400 /* B-interface input data + misalignment */ +/* BCHCR (BCHU Control Register) */ +#define ISES_BCHCR_BCHU_DIE 0x00000001 /* data input enabled */ +#define ISES_BCHCR_BCHU_UE 0x00000002 /* unit enable */ +#define ISES_BCHCR_BCHU_RST 0x00000004 /* BCHU reset */ + +/* + * OMR (Operation Method Register) + */ +/* -- SELR (Selector Register) */ +#define ISES_SELR_BCHU_EH 0x80000000 /* stop/continue on error */ +#define ISES_SELR_BCHU_HISOF 0x01000000 /* HU input is SCU output */ +#define ISES_SELR_BCHU_DIS 0x02000000 /* data interface select */ + +/* -- HOMR (HU Operation Mode Register) */ +#define ISES_HOMR_HMTR 0x00800000 /* hash message type reg bit */ +#define ISES_HOMR_ER 0x00300000 /* BE/LE, 2bit mask */ + +#define ISES_HOMR_HFR 0x00070000 /* Hash function mask, 3bits */ +#define ISES_HOMR_HFR_NOP 0x00000000 /* NOP */ +#define ISES_HOMR_HFR_MD5 0x00010000 /* MD5 */ +#define ISES_HOMR_HFR_RMD160 0x00020000 /* RIPEMD-160 */ +#define ISES_HOMR_HFR_RMD128 0x00030000 /* RIPEMD-128 */ +#define ISES_HOMR_HFR_SHA1 0x00040000 /* SHA-1 */ + +/* -- SOMR (Symmetric crypto Operation Method Register) */ +#define ISES_SOMR_BCFR 0x0000f000 /* block cipher function reg */ +#define ISES_SOMR_BCPR 0x00000ff0 /* block cipher parameters */ +#define ISES_SOMR_BOMR (ISES_SOMR_BCFR | ISES_SOMR_BCPR) +#define ISES_SOMR_BOMR_NOP 0x00000000 /* NOP */ +#define ISES_SOMR_BOMR_TRANSPARENT 0x00000010 /* Transparent */ +#define ISES_SOMR_BOMR_DES 0x00001000 /* DES */ +#define ISES_SOMR_BOMR_3DES2 0x00001010 /* 3DES-2 */ +#define ISES_SOMR_BOMR_3DES 0x00001020 /* 3DES-3 */ +#define ISES_SOMR_BOMR_SAFER 0x00002000 /* SAFER (actually more) */ +#define ISES_SOMR_EDR 0x00000008 /* Encrypt/Decrypt register */ +#define ISES_SOMR_FMR 0x00000003 /* feedback mode mask */ +#define ISES_SOMR_FMR_ECB 0x00000000 /* EBC */ +#define ISES_SOMR_FMR_CBC 0x00000001 /* CBC */ +#define ISES_SOMR_FMR_CFB64 0x00000002 /* CFB64 */ +#define ISES_SOMR_FMR_OFB64 0x00000003 /* OFB64 */ + +/* + * HRNG (Hardware Random Number Generator) + */ +#define ISES_OFFSET_HRNG_CTRL 0x00 /* Control register */ +#define ISES_OFFSET_HRNG_LFSR 0x04 /* Linear feedback shift reg */ +#define ISES_HRNG_CTRL_HE 0x00000001 /* HRNG enable */ + +/* + * A-interface commands + */ +#define ISES_MKCMD(cmd,len) (cmd | cmd << 16 | len << 8 | len << 24) + +/* Command name Code Len RLen Desc */ +#define ISES_CMD_CHIP_ID 0x00 /* 0 3 Read chipID */ +/* LNAU commands */ +#define ISES_CMD_LRESET_1 0x01 /* 0 0 LNAU 1 reset */ +#define ISES_CMD_LRSFLG_1 0x02 /* 0 0 LNAU 1 flags reset */ +#define ISES_CMD_LUPLOAD_1 0x03 /* 0 64 */ +#define ISES_CMD_LW_A_1 0x04 /* ?64 0 */ +#define ISES_CMD_LW_B_1 0x05 /* ?64 0 */ +#define ISES_CMD_LW_N_1 0x06 /* ?64 0 */ +#define ISES_CMD_LW_Bq_1 0x07 /* ?32 0 */ +#define ISES_CMD_LW_Nq_1 0x08 /* ?32 0 */ +#define ISES_CMD_LW_Bp_1 0x09 /* ?34 0 */ +#define ISES_CMD_LW_Np_1 0x0a /* ?34 0 */ +#define ISES_CMD_LW_U_1 0x0b /* ?34 0 */ +#define ISES_CMD_LMOD_1 0x0c /* 0 0 */ +#define ISES_CMD_LMULMOD_1 0x0d /* 0 0 */ +#define ISES_CMD_LEXPMOD_1 0x0e /* 0 0 */ +#define ISES_CMD_LECMOD_1 0x0f /* 0 0 */ +#define ISES_CMD_LRESET_2 0x10 /* 0 0 */ +#define ISES_CMD_LRSFLG_2 0x11 /* 0 0 */ +#define ISES_CMD_LUPLOAD_2 0x12 /* 0 64 */ +#define ISES_CMD_LW_A_2 0x13 /* ?64 0 */ +#define ISES_CMD_LW_B_2 0x14 /* ?64 0 */ +#define ISES_CMD_LW_N_2 0x15 /* ?64 0 */ +#define ISES_CMD_LW_Bq_2 0x16 /* ?32 0 */ +#define ISES_CMD_LW_Nq_2 0x17 /* ?32 0 */ +#define ISES_CMD_LW_Bp_2 0x18 /* ?34 0 */ +#define ISES_CMD_LW_Np_2 0x19 /* ?34 0 */ +#define ISES_CMD_LW_U_2 0x1a /* ?34 0 */ +#define ISES_CMD_LMOD_2 0x1b /* 0 0 */ +#define ISES_CMD_LMULMOD_2 0x1c /* 0 0 */ +#define ISES_CMD_LEXPMOD_2 0x1d /* 0 0 */ +#define ISES_CMD_LECMOD_2 0x1e /* 0 0 */ +/* BCHU commands */ +#define ISES_CMD_RST_BERR 0x1f /* 0 0 Reset BERR */ +#define ISES_CMD_BR_BERR 0x20 /* 0 0 Read BERR */ +#define ISES_CMD_BW_DATA 0x21 /* 2 0 Write DATA */ +#define ISES_CMD_BR_DATA 0x22 /* 0 2 Read DATA */ +#define ISES_CMD_BW_BCHCR 0x23 /* 1 0 Write BCHCR */ +#define ISES_CMD_BR_BCHCR 0x24 /* 0 0 Read BCHCR */ +#define ISES_CMD_BW_OMR 0x25 /* 1 0 Write OMR */ +#define ISES_CMD_BR_OMR 0x26 /* 0 1 Read OMR */ +#define ISES_CMD_BW_KR0 0x27 /* 2 0 Write key 0 */ +#define ISES_CMD_BR_KR0 0x28 /* 0 2 Read key 0 */ +#define ISES_CMD_BW_KR1 0x29 /* 2 0 Write key 1 */ +#define ISES_CMD_BR_KR1 0x2a /* 0 2 Read key 1 */ +#define ISES_CMD_BW_KR2 0x2b /* 2 0 Write key 2 */ +#define ISES_CMD_BR_KR2 0x2c /* 0 2 Read key 2 */ +#define ISES_CMD_BW_SCCR 0x2d /* 2 0 Write SCCR */ +#define ISES_CMD_BR_SCCR 0x2e /* 0 2 Read SCCR */ +#define ISES_CMD_BW_DBCR 0x2f /* 2 0 Write DBCR */ +#define ISES_CMD_BR_DBCR 0x30 /* 0 2 Read DBCR */ +#define ISES_CMD_BW_HMLR 0x31 /* 2 0 Write HMLR */ +#define ISES_CMD_BR_HMLR 0x32 /* 0 2 Read HMLR */ +#define ISES_CMD_BW_CVR 0x33 /* 5 0 Write CVR */ +#define ISES_CMD_BR_CVR 0x34 /* 0 5 Read CVR */ +#define ISES_CMD_BPROC 0x35 /* ?255 ?255 Process data blocks */ +#define ISES_CMD_BTERM 0x36 /* 0 0 Terminate session */ +#define ISES_CMD_BSWITCH 0x37 /* 18 18 Switch BCHU session */ +/* HRNG commands */ +#define ISES_CMD_HSTART 0x38 /* 0 0 Start RBG unit */ +#define ISES_CMD_HSTOP 0x39 /* 0 0 Stop RGB unit */ +#define ISES_CMD_HSEED 0x3a /* 1 0 Seed LFSR */ +#define ISES_CMD_HBITS 0x3b /* 1 ?255 Return n*32 rnd bits */ + +/* Command return codes (RC) */ +#define ISES_RC_MASK 0x0000ffff +#define ISES_RC_SUCCESS 0x0000 /* success */ +#define ISES_RC_CMDERR 0x0001 /* cmd interpretation error */ +#define ISES_RC_QERR 0x0002 /* queue handling error */ +#define ISES_RC_LNAU_ERR 0x0003 /* LNAU cmd proc error */ +#define ISES_RC_BCHU_ERR 0x0004 /* BCHU cmd proc error */ +#define ISES_RC_BCHU_BIFCSEL 0x0005 /* OMR says B-if, must be A */ +#define ISES_RC_BCHU_ODD 0x0006 /* odd #words in param list */ +#define ISES_RC_HRNG_ILLEN 0x0007 /* too large bitstream */ + +/* Interrupt bits, IRQE, IRQES, IRQEC, IRQSS, IRQ registers */ +#define ISES_IRQ_TIMER_1 0x00000001 /* Timer 1 reached zero */ +#define ISES_IRQ_TIMER_2 0x00000002 /* Timer 2 reached zero */ +#define ISES_IRQ_I_IIN0 0x00000004 /* I-int 'Iin0' */ +#define ISES_IRQ_I_IIN1 0x00000008 /* I-int 'Iin1' */ +#define ISES_IRQ_I_IIN2 0x00000010 /* I-int 'Iin2' */ +#define ISES_IRQ_I_IIN3 0x00000020 /* I-int 'Iin3' */ +#define ISES_IRQ_LNAU_1_ERROR 0x00000040 /* LNAU 1 op error/abort */ +#define ISES_IRQ_LNAU_1_DONE 0x00000080 /* LNAU 1 op done */ +#define ISES_IRQ_LNAU_2_ERROR 0x00000100 /* LNAU 2 op error/abort */ +#define ISES_IRQ_LNAU_2_DONE 0x00000200 /* LNAU 1 op done */ +#define ISES_IRQ_BCHU_DONE 0x00000400 /* BCHU operation done */ +#define ISES_IRQ_BCHU_ERROR 0x00000800 /* BCHU operation error/abrt */ +#define ISES_IRQ_BCHU_IRF 0x00001000 /* BCHU input request flag >1*/ +#define ISES_IRQ_BCHU_OAF 0x00002000 /* BCHU output avail flag >1 */ +#define ISES_IRQ_BCHU_IEF 0x00004000 /* BCHU input empty flag >1 */ +#define ISES_IRQ_A_WCTRL 0x00008000 /* A-int CTRL reg was written*/ +#define ISES_IRQ_A_RSREQ 0x00010000 /* A-int SREQ reg was read */ +#define ISES_IRQ_A_DIQ 0x00020000 /* in queue emtpy, IQD write */ +#define ISES_IRQ_A_CIQ 0x00040000 /* in queue has complete cmd */ +#define ISES_IRQ_A_OQF 0x00080000 /* output queue full */ + +#define ISES_SESSION(sid) ( (sid) & 0x0fffffff) +#define ISES_CARD(sid) (((sid) & 0xf0000000) >> 28) +#define ISES_SID(crd,ses) (((crd) << 28) | ((ses) & 0x0fffffff)) + +struct ises_pktctx { + u_int32_t pc_deskey[6]; /* 3DES key */ + u_int32_t pc_hminner[5]; /* hmac inner state */ + u_int32_t pc_hmouter[5]; /* hmac outer state */ + u_int32_t pc_iv[2]; /* [3]DES iv */ + u_int32_t pc_omrflags; /* OMR flags, as above */ + u_int32_t pc_paddr; + u_int16_t pc_offset; /* crypto offset */ + u_int8_t pad[16]; +}; + +struct ises_pktbuf { + volatile u_int32_t pb_addr; /* address of buffer start */ + volatile u_int32_t pb_len; /* packet length */ +}; + +#define ISES_B_DATASIZE 4096 +struct ises_databuf { + u_int8_t data[ISES_B_DATASIZE]; +} __attribute__((packed)); + +/* + * ------------------------------------------ + * PCC-ISES Basic Functionality firmware v2.0 + * ------------------------------------------ + */ + +/* + * Copyright (C) 1999, 2000 Pijnenburg Custom Chips B.V. + * All rights reserved. + * + * Redistribution and use in source and binary forms are permitted provided + * that the following conditions are met: + * 1. Redistribution of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistribution in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * 3. The name of the author may not be used to endorse or promote products + * derived from this software without specific prior written permission + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. + * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, + * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +#define ISES_BF_IDPLEN 0x00000403 /* Total length, 32bit words */ +#define ISES_BF_IDPCRC 0x59DE7DEF /* Firmware CRC */ + +static const u_int32_t ises_bf_fw[] = { + 0xEA000006, 0xE1A00000, 0xE1A00000, 0xE1A00000, + 0xE1A00000, 0xE1A00000, 0xEA000013, 0xEA000026, + 0xE59FD0C4, 0xE3A000D2, 0xE121F000, 0xE59FD0BC, + 0xE3A000D1, 0xE121F000, 0xE59FD0B0, 0xE3A000D3, + 0xE121F000, 0xEB00029B, 0xEAFFFFFE, 0xE10F1000, + 0xE1811000, 0xE121F001, 0xE12FFF1E, 0xE10F1000, + 0xE1C11000, 0xE121F001, 0xE12FFF1E, 0xE92D0003, + 0xE59F107C, 0xE5910004, 0xE5810000, 0xE3100902, + 0x0A00000B, 0xE59F106C, 0xE5910000, 0xE3500000, + 0x1A000003, 0xE59F1060, 0xE3A00001, 0xE5810000, + 0xEA000003, 0xE3500001, 0x1A000001, 0xE59F1038, + 0xE5810000, 0xE8BD0003, 0xE25EF004, 0xE25EF004, + 0xE3A000D3, 0xE121F000, 0xE59FE030, 0xE3A00000, + 0xE3A01032, 0xE48E0004, 0xE2511001, 0x1AFFFFFC, + 0xE91E3FFE, 0xE3A0E000, 0xE3A0F000, 0x000017B4, + 0x000017DC, 0xFFFFEA00, 0xFFFFE60C, 0xFFFFF000, + 0x00001714, 0xE3A01001, 0xE3A00AFE, 0xE2400601, + 0xE5A01624, 0xE1A0F00E, 0xE3A00AFE, 0xE2400601, + 0xE5901620, 0xE3510000, 0x0AFFFFFC, 0xE5900610, + 0xE1A0F00E, 0xE3A02000, 0xE3510000, 0x91A0F00E, + 0xE3A03AFE, 0xE2433601, 0xE593C620, 0xE35C0000, + 0x0AFFFFFC, 0xE593C610, 0xE2822001, 0xE1520001, + 0xE480C004, 0x3AFFFFF7, 0xE1A0F00E, 0xE3A01000, + 0xE3A00AFE, 0xE2400601, 0xE5A01618, 0xE1A0F00E, + 0xE3A01002, 0xE3A00AFE, 0xE2400601, 0xE5A01624, + 0xE1A0F00E, 0xE3A01AFE, 0xE2411601, 0xE591261C, + 0xE3520000, 0x1A000006, 0xE3A02506, 0xE5812600, + 0xE591261C, 0xE3520000, 0x0AFFFFFC, 0xE3A02401, + 0xE5812600, 0xE5A10610, 0xE1A0F00E, 0xE3A03000, + 0xE3510000, 0x91A0F00E, 0xE92D4010, 0xE3A0E506, + 0xE3A0C401, 0xE3A02AFE, 0xE2422601, 0xE592461C, + 0xE3540000, 0x1A000004, 0xE582E600, 0xE592461C, + 0xE3540000, 0x0AFFFFFC, 0xE582C600, 0xE4904004, + 0xE5824610, 0xE2833001, 0xE1530001, 0x3AFFFFF2, + 0xE8BD8010, 0xE3A01000, 0xE3A00AFE, 0xE2400601, + 0xE5A01614, 0xE3A00CE6, 0xE2400801, 0xE5901000, + 0xE3811302, 0xE5801000, 0xE5901000, 0xE3C11302, + 0xE5801000, 0xE1A0F00E, 0xE59F2038, 0xE59F0038, + 0xE5901000, 0xE0821181, 0xE5D11006, 0xE20120F0, + 0xE3A03BC2, 0xE2433701, 0xE0832402, 0xE5802008, + 0xE2822004, 0xE580200C, 0xE2432B02, 0xE0821401, + 0xE5A01010, 0xE1A0F00E, 0x00000E00, 0x00001000, + 0xE92D4000, 0xEBFFFFB0, 0xE3A01002, 0xE59F0028, + 0xE5801000, 0xE3A01AFE, 0xE2411601, 0xE5912204, + 0xE5802004, 0xE5911208, 0xE5801008, 0xE3A01003, + 0xEB000264, 0xE3A00000, 0xE8BD8000, 0x00001014, + 0xE92D4000, 0xEBFFFFDB, 0xEBFFFF9F, 0xE51F005C, + 0xE51F205C, 0xE5921000, 0xE0800181, 0xE5D01007, + 0xE3510011, 0x1A000004, 0xE51F0074, 0xE5900008, + 0xE5903000, 0xE3130008, 0x0AFFFFFC, 0xE5B2000C, + 0xE5801000, 0xE3A00000, 0xEB000247, 0xE3A00000, + 0xE8BD8000, 0xE92D4000, 0xEBFFFFC6, 0xEBFFFF8A, + 0xE51F10AC, 0xE5910008, 0xE5902000, 0xE3120008, + 0x0AFFFFFC, 0xE5900000, 0xE3100002, 0x0A000002, + 0xE3A00003, 0xEB000238, 0xEA000002, 0xE5B10010, + 0xE3A01040, 0xEB00023B, 0xE3A00000, 0xE8BD8000, + 0xE92D4010, 0xEBFFFFB3, 0xE51F40F4, 0xE5940008, + 0xE5901000, 0xE3110008, 0x0AFFFFFC, 0xE5900000, + 0xE3100002, 0x0A000005, 0xE5B41004, 0xE51F00D8, + 0xEBFFFF5F, 0xEBFFFF6C, 0xE3A00003, 0xEA00000B, + 0xE5940010, 0xE5941004, 0xEBFFFF59, 0xEBFFFF66, + 0xE51F0140, 0xE5941000, 0xE0800181, 0xE5D02007, + 0xE5B41004, 0xE594000C, 0xEB00024E, 0xE3A00000, + 0xEB000215, 0xE3A00000, 0xE8BD8010, 0xE92D4010, + 0xEBFFFF94, 0xEBFFFF58, 0xE51F0174, 0xE5901008, + 0xE5912000, 0xE3120008, 0x0AFFFFFC, 0xE5911000, + 0xE3110002, 0xE3A04000, 0x13A00003, 0x1A00000F, + 0xE51F11A0, 0xE5902000, 0xE0812182, 0xE5D22007, + 0xE3520034, 0x1A000003, 0xE5902010, 0xE5224088, + 0xE5902010, 0xE5224084, 0xE5902000, 0xE0811182, + 0xE5D11007, 0xE590000C, 0xE5801000, 0xE3A00000, + 0xEB0001F5, 0xE1A00004, 0xE8BD8010, 0xE92D4010, + 0xEBFFFF39, 0xE3A04000, 0xE3A00AFE, 0xE2400601, + 0xE5A04400, 0xE3A00000, 0xEB0001EB, 0xE1A00004, + 0xE8BD8010, 0xE92D4010, 0xE51F01D4, 0xE1A04000, + 0xE3A01002, 0xEBFFFF1E, 0xEBFFFF2B, 0xE3A00AFE, + 0xE2400601, 0xE5901474, 0xE3110002, 0x1A00000F, + 0xE5901424, 0xE3110402, 0x13A00005, 0x1A00000E, + 0xE3A01003, 0xE5801470, 0xE5901474, 0xE3110020, + 0x0AFFFFFC, 0xE5941000, 0xE5801478, 0xE5B41004, + 0xE5801478, 0xE5900474, 0xE3100002, 0x0A000001, + 0xE3A00004, 0xEA000000, 0xE3A00000, 0xEB0001CA, + 0xE3A00000, 0xE8BD8010, 0xE92D4000, 0xEBFFFF0E, + 0xE3A00AFE, 0xE2400601, 0xE5901474, 0xE3110002, + 0xE51F126C, 0x1A00000D, 0xE5902424, 0xE3120402, + 0x13A00005, 0x1A00000C, 0xE5902474, 0xE3120040, + 0x0AFFFFFC, 0xE5902478, 0xE5812000, 0xE5902478, + 0xE5812004, 0xE5900474, 0xE3100002, 0x0A000001, + 0xE3A00004, 0xEA000000, 0xE3A00000, 0xE3500000, + 0x1A000003, 0xE1A00001, 0xE3A01002, 0xEB0001B1, + 0xEA000000, 0xEB0001A8, 0xE3A00000, 0xE8BD8000, + 0xE92D40F0, 0xE51F6320, 0xE5961004, 0xE51F02E8, + 0xE1A04000, 0xEBFFFEDA, 0xEBFFFEE7, 0xE3A05AFE, + 0xE2455601, 0xE3A07000, 0xE5960000, 0xE3500023, + 0x1A000004, 0xE5941000, 0xE3110004, 0x13A00004, + 0x15A50470, 0x1A000018, 0xE3500023, 0x13500031, + 0x0A000002, 0xE5951474, 0xE3110001, 0x1AFFFFFC, + 0xE3500025, 0x1A000003, 0xE5940000, 0xE3C0033F, + 0xE5840000, 0xE5857470, 0xE5960004, 0xE1A02100, + 0xE51F03A0, 0xE5961000, 0xE0800181, 0xE5D00006, + 0xE2400B07, 0xE1A01004, 0xEB0001D0, 0xE5B50474, + 0xE3100002, 0x13A00004, 0x1A000000, 0xE3A00000, + 0xEB000179, 0xE1A00007, 0xE8BD80F0, 0xE92D40F0, + 0xEBFFFEBD, 0xE3A06AFE, 0xE2466601, 0xE5960474, + 0xE3100002, 0xE51F73B0, 0xE51F43F4, 0x15940000, + 0x13500020, 0x1A000014, 0xE5940000, 0xE350002E, + 0x13500030, 0x13500034, 0x1A000002, 0xE5961474, + 0xE3110001, 0x1AFFFFFC, 0xE51F1428, 0xE0810180, + 0xE5D05007, 0xE1A02105, 0xE5D00006, 0xE2401B07, + 0xE1A00007, 0xEB0001AD, 0xE5B60474, 0xE3100002, + 0x15940000, 0x13500020, 0x0A000001, 0xE3A00004, + 0xEA000000, 0xE3A00000, 0xE3500000, 0x1A000003, + 0xE1A01005, 0xE1A00007, 0xEB000156, 0xEA000000, + 0xEB00014D, 0xE3A00000, 0xE8BD80F0, 0xE92D41F0, + 0xE3A04000, 0xE3A00003, 0xE3A08AFE, 0xE2488601, + 0xE5880470, 0xE5980474, 0xE3100002, 0xE51F54A8, + 0x13A04004, 0x1A000006, 0xE5950004, 0xE3100001, + 0x13A04006, 0x1A000002, 0xE5980424, 0xE3100402, + 0x13A04005, 0xE51F7490, 0xE3540000, 0x0A000004, + 0xE1A00007, 0xE5951004, 0xEBFFFE6D, 0xEBFFFE7A, + 0xEA00001D, 0xE3A06000, 0xE5950004, 0xE3500000, + 0xDA000015, 0xE5980474, 0xE3100020, 0x0AFFFFFC, + 0xEBFFFE5C, 0xE5880478, 0xEBFFFE5A, 0xE5880478, + 0xE5980474, 0xE3100004, 0x1A000007, 0xE5980474, + 0xE3100040, 0x0AFFFFFC, 0xE5980478, 0xE7870106, + 0xE5980478, 0xE0871106, 0xE5A10004, 0xE2866002, + 0xE5950004, 0xE1560000, 0xBAFFFFE9, 0xEBFFFE5E, + 0xE5980474, 0xE3100002, 0x13A04004, 0xE3540000, + 0x05B80474, 0x03100004, 0x1A000003, 0xE1A00007, + 0xE5B51004, 0xEB000113, 0xEA000001, 0xE1A00004, + 0xEB000109, 0xE3A00000, 0xE8BD81F0, 0xE92D4010, + 0xEBFFFE4D, 0xE3A00AFE, 0xE2400601, 0xE5901474, + 0xE3110002, 0xE3A04000, 0x1A000013, 0xE5901424, + 0xE3110402, 0x0A000003, 0xE5901474, 0xE3110C02, + 0x0AFFFFFC, 0xEA000002, 0xE5901474, 0xE3110020, + 0x0AFFFFFC, 0xE5901470, 0xE3C11001, 0xE5801470, + 0xE5901474, 0xE3110001, 0x1AFFFFFC, 0xE5804470, + 0xE5900474, 0xE3100002, 0x0A000001, 0xE3A00004, + 0xEA000000, 0xE3A00000, 0xEB0000E7, 0xE1A00004, + 0xE8BD8010, 0xE92D4070, 0xE3A00AFE, 0xE2400601, + 0xE5901474, 0xE3110002, 0xE51F55F4, 0xE3A06000, + 0x0A000005, 0xE3A04004, 0xE1A00005, 0xE3A01012, + 0xEBFFFE13, 0xEBFFFE20, 0xEA000027, 0xE5901424, + 0xE3110402, 0x0A000003, 0xE5901474, 0xE3110C02, + 0x0AFFFFFC, 0xEA000002, 0xE5901474, 0xE3110020, + 0x0AFFFFFC, 0xE5901470, 0xE3C11001, 0xE5801470, + 0xE5901474, 0xE3110001, 0x1AFFFFFC, 0xE1A04000, + 0xE5806470, 0xE1A00005, 0xE3A02048, 0xE3A0100C, + 0xE2411B07, 0xEB000111, 0xE3A01006, 0xE3A0000C, + 0xE2400B07, 0xEBFFFDF6, 0xEBFFFDEE, 0xE3C0033F, + 0xE5840424, 0xE3A0100B, 0xE3A00028, 0xE2400B07, + 0xEBFFFDEF, 0xEBFFFDFC, 0xE3A00003, 0xE5840470, + 0xE5B40474, 0xE2104002, 0x13A04004, 0xE3540000, + 0x1A000003, 0xE1A00005, 0xE3A01012, 0xEB0000B1, + 0xEA000001, 0xE1A00004, 0xEB0000A7, 0xE1A00006, + 0xE8BD8070, 0xE92D4000, 0xEBFFFDEB, 0xE51F172C, + 0xE51F072C, 0xE5900000, 0xE0810180, 0xE5D00007, + 0xE3A01AFE, 0xE2411601, 0xE5A10C00, 0xE3A00000, + 0xEB000099, 0xE3A00000, 0xE8BD8000, 0xE92D4000, + 0xEBFFFDC8, 0xE3A01AFE, 0xE2411601, 0xE5A10C04, + 0xEBFFFDD9, 0xE3A00000, 0xEB00008F, 0xE3A00000, + 0xE8BD8000, 0xE92D41F0, 0xEBFFFDBE, 0xE1A04000, + 0xEBFFFDD1, 0xE3A06000, 0xE35400FF, 0x9A000002, + 0xE3A00007, 0xEB000084, 0xEA00001C, 0xE3A00000, + 0xE51F376C, 0xE3540000, 0x9A000015, 0xE3A07064, + 0xE3A0C080, 0xE3A02AFE, 0xE2422601, 0xE3A0E001, + 0xE3A01000, 0xE5827800, 0xE582C808, 0xE5928A00, + 0xE3180001, 0x0AFFFFFC, 0xE582EA00, 0xE5928C04, + 0xE20880FF, 0xE0885405, 0xE2811001, 0xE3510004, + 0x3AFFFFF3, 0xE7835100, 0xE2800001, 0xE1500004, + 0x3AFFFFEE, 0xE1A01004, 0xE1A00003, 0xEB00006D, + 0xE1A00006, 0xE8BD81F0, 0xE92D47F0, 0xEB0000A1, + 0xE3A09004, 0xE3A08AFE, 0xE2488601, 0xE3A07010, + 0xE1A06088, 0xE2485A01, 0xE3500000, 0x0A000001, + 0xEB000084, 0xEA000015, 0xEB000082, 0xE5889470, + 0xE3A0A000, 0xE59F4040, 0xEBFFFD81, 0xEBFFFD9F, + 0xE3A00001, 0xEB000014, 0xEB000019, 0xE3500002, + 0x0A00000A, 0xE5867804, 0xE5857804, 0xE5889470, + 0xE3A00002, 0xEB00000C, 0xE584A000, 0xE5940000, + 0xE3500000, 0x0AFFFFFC, 0xEAFFFFEE, 0x000017B4, + 0xE5A67804, 0xE5A57804, 0xE5A89470, 0xE3A00003, + 0xEB000001, 0xEAFFFFFF, 0xEAFFFFFE, 0xE1A00C00, + 0xE3A01AFE, 0xE2411601, 0xE5A10600, 0xE1A0F00E, + 0xE1A0F00E, 0xE92D43F0, 0xE3A07001, 0xE3A09AFE, + 0xE2499601, 0xE3A080FF, 0xE59F6030, 0xE59F5030, + 0xE59F4030, 0xE5990618, 0xE3500C01, 0x0A000005, + 0xE5990618, 0xE3500000, 0x9A000007, 0xE5990620, + 0xE3500000, 0x1A000004, 0xE3A00002, 0xEA000019, + 0x00001004, 0x00001000, 0x00000E00, 0xE5990618, + 0xE3500000, 0x0AFFFFFC, 0xEBFFFD4E, 0xE20010FF, + 0xE0082420, 0xE5851000, 0xE1A03800, 0xE1A03823, + 0xE1530820, 0xE5862000, 0x1A000007, 0xE351003E, + 0xD0843181, 0xD5D3C004, 0xD15C0002, 0xCA000002, + 0xE5D33005, 0xE1530002, 0xAA000006, 0xE1A00820, + 0xE1A00800, 0xE3800001, 0xEBFFFD59, 0xEBFFFD7C, + 0xE1A00007, 0xE8BD83F0, 0xE1A0E00F, 0xE794F181, + 0xE3500000, 0x0AFFFFD2, 0xE8BD83F0, 0xE92D4000, + 0xE51F1094, 0xE5911000, 0xE1800801, 0xEBFFFD4C, + 0xE8BD4000, 0xEAFFFD6E, 0xE92D4030, 0xE1A05000, + 0xE1A04001, 0xE1A00C01, 0xE51F10BC, 0xE5911000, + 0xE1800801, 0xEBFFFD42, 0xE1A01004, 0xE1A00005, + 0xEBFFFD4D, 0xE8BD4030, 0xEAFFFD61, 0xE59F1020, + 0xE5910000, 0xE59F201C, 0xE1500002, 0x21A0F00E, + 0xE5922000, 0xE5802000, 0xE3E00000, 0xE5810000, + 0xE1A0F00E, 0x000017FC, 0x000017F8, 0xE92D4010, + 0xE1A04000, 0xEB000010, 0xE3540018, 0x03A00080, + 0x0A000002, 0xE354001C, 0x18BD8010, 0xE3A00040, + 0xE8BD4010, 0xEAFFFCD8, 0xE92D4000, 0xE3A01001, + 0xE3A00018, 0xEBFFFFF0, 0xE3A01902, 0xE3A00AFE, + 0xE2400601, 0xE5A01A08, 0xE8BD8000, 0xE3A000C0, + 0xEAFFFCC9, 0xE1A0F00E, 0xE3A03000, 0xE1510002, + 0x21A0F00E, 0xE7803101, 0xE2811001, 0xE1510002, + 0x3AFFFFFB, 0xE1A0F00E, 0xE3A00000, 0xE1A0F00E, + 0xE3A00001, 0xE1A0F00E, 0xE3A00002, 0xE1A0F00E, + 0xE92D4000, 0xE59F001C, 0xE5901000, 0xE59F0018, + 0xEBFFFCEF, 0xEBFFFCFC, 0xE3A00011, 0xEBFFFFB2, + 0xE3A00000, 0xE8BD8000, 0x00001004, 0x00001014, + 0xE1803001, 0xE1833002, 0xE3130003, 0x1A00000B, + 0xE1A0C122, 0xE1A03000, 0xE24C2001, 0xE35C0000, + 0x91A0F00E, 0xE491C004, 0xE483C004, 0xE1A0C002, + 0xE2422001, 0xE35C0000, 0x8AFFFFF9, 0xE1A0F00E, + 0xE1A03000, 0xE1A0C002, 0xE2422001, 0xE35C0000, + 0x91A0F00E, 0xE4D1C001, 0xE4C3C001, 0xE1A0C002, + 0xE2422001, 0xE35C0000, 0x8AFFFFF9, 0xE1A0F00E, + 0x000002A0, 0x00000000, 0x000002E0, 0x10C80000, + 0x000002E0, 0x11C80000, 0x00000334, 0x00C00000, + 0x00000380, 0x40C04000, 0x00000380, 0x40C14000, + 0x00000380, 0x40C24000, 0x00000380, 0x20C52000, + 0x00000380, 0x20C72000, 0x00000380, 0x22C42200, + 0x00000380, 0x22C62200, 0x00000380, 0x22C32200, + 0x000003FC, 0x34C80000, 0x000003FC, 0x35C80000, + 0x000003FC, 0x36C80000, 0x000003FC, 0x37C80000, + 0x000002E0, 0x10D80000, 0x000002E0, 0x11D80000, + 0x00000334, 0x00D00000, 0x00000380, 0x40D04000, + 0x00000380, 0x40D14000, 0x00000380, 0x40D24000, + 0x00000380, 0x20D52000, 0x00000380, 0x20D72000, + 0x00000380, 0x22D42200, 0x00000380, 0x22D62200, + 0x00000380, 0x22D32200, 0x000003FC, 0x34D80000, + 0x000003FC, 0x35D80000, 0x000003FC, 0x36D80000, + 0x000003FC, 0x37D80000, 0x0000047C, 0x00000000, + 0x0000066C, 0x01000000, 0x000004A4, 0x00000202, + 0x00000528, 0x00000000, 0x000005B0, 0x01700101, + 0x0000066C, 0x01700000, 0x000005B0, 0x01240101, + 0x0000066C, 0x01240000, 0x000005B0, 0x021C0202, + 0x0000066C, 0x021C0000, 0x000005B0, 0x02140202, + 0x0000066C, 0x02140000, 0x000005B0, 0x020C0202, + 0x0000066C, 0x020C0000, 0x000005B0, 0x02280202, + 0x0000066C, 0x02280000, 0x000005B0, 0x02440202, + 0x0000066C, 0x02440000, 0x000005B0, 0x024C0202, + 0x0000066C, 0x024C0000, 0x000005B0, 0x05300505, + 0x0000066C, 0x05300000, 0x0000071C, 0x0000FF00, + 0x0000082C, 0x00000000, 0x000008B4, 0x00001212, + 0x000009B4, 0x01000000, 0x000009B4, 0x00000000, + 0x000009EC, 0x00000101, 0x00000A14, 0x00000101, + 0x00000D58, 0x00004040, 0x00000D60, 0x00002020, + 0x00000D60, 0x0000FF00, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000 +}; |