1/*-
2 * Copyright (c) 1997, 1998, 1999, 2000
3 *	Bill Paul <wpaul@ee.columbia.edu>.  All rights reserved.
4 *
5 * Redistribution and use in source and binary forms, with or without
6 * modification, are permitted provided that the following conditions
7 * are met:
8 * 1. Redistributions of source code must retain the above copyright
9 *    notice, this list of conditions and the following disclaimer.
10 * 2. Redistributions in binary form must reproduce the above copyright
11 *    notice, this list of conditions and the following disclaimer in the
12 *    documentation and/or other materials provided with the distribution.
13 * 3. All advertising materials mentioning features or use of this software
14 *    must display the following acknowledgement:
15 *	This product includes software developed by Bill Paul.
16 * 4. Neither the name of the author nor the names of any co-contributors
17 *    may be used to endorse or promote products derived from this software
18 *    without specific prior written permission.
19 *
20 * THIS SOFTWARE IS PROVIDED BY Bill Paul AND CONTRIBUTORS ``AS IS'' AND
21 * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
22 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
23 * ARE DISCLAIMED.  IN NO EVENT SHALL Bill Paul OR THE VOICES IN HIS HEAD
24 * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
25 * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
26 * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
27 * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
28 * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
29 * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
30 * THE POSSIBILITY OF SUCH DAMAGE.
31 *
32 * $FreeBSD$
33 */
34
35/*
36 * This file contains the firmware needed to make the KLSI chip work,
37 * along with a few constants related to the QT Engine microcontroller
38 * embedded in the KLSI part.
39 *
40 * Firmware is loaded using the vendor-specific 'send scan data'
41 * command (0xFF). The basic operation is that we must load the
42 * firmware, then issue some trigger commands to fix it up and start
43 * it running. There are three transfers: load the binary code,
44 * load the 'fixup' (data segment?), then issue a command to
45 * start the code firmware running. The data itself is prefixed by
46 * a 16-bit signature word, a 16-bit length value, a type byte
47 * and an interrupt (command) byte. The code segment is of type
48 * 0x02 (replacement interrupt vector data) and the fixup segment
49 * is of type 0x03 (replacement interrupt fixup data). The interrupt
50 * code is 0x64 (load new code). The length word is the total length
51 * of the segment minus 7. I precomputed the values and stuck them
52 * into the appropriate locations within the segments to save some
53 * work in the driver.
54 */
55
56/* QT controller data block types. */
57/* Write data into specific memory location. */
58#define	KUE_QTBTYPE_WRITE_DATA		0x00
59/* Write data into interrupt vector location */
60#define	KUE_QTBTYPE_WRITE_INTVEC	0x01
61/* Replace interrupt vector with this data */
62#define	KUE_QTBTYPE_REPL_INTVEC		0x02
63/* Fixup interrupt vector code with this data */
64#define	KUE_QTBTYPE_FIXUP_INTVEC	0x03
65/* Force jump to location */
66#define	KUE_QTBTYPE_JUMP		0x04
67/* Force call to location */
68#define	KUE_QTBTYPE_CALL		0x05
69/* Force interrupt call */
70#define	KUE_QTBTYPE_CALLINTR		0x06
71/*
72 * Cause data to be written using the specified QT engine
73 * interrupt, from starting location in memory for a specified
74 * number of bytes.
75 */
76#define	KUE_QTBTYPE_WRITE_WITH_INTR	0x07
77/* Cause data from stream to be written using specified QT interrupt. */
78#define	KUE_QTBTYPE_WRITE_STR_WITH_INTR	0x08
79/* Cause data to be written to config locations. */
80/* Addresses assume 0xc000 offset. */
81#define	KUE_QTBTYPE_WRITE_CONFIG	0x09
82
83#define	KUE_QTINTR_LOAD_CODE		0x64
84#define	KUE_QTINTR_TRIGGER_CODE		0x3B
85#define	KUE_QTINTR_LOAD_CODE_HIGH	0x9C
86
87/* Firmware code segment */
88static unsigned char kue_code_seg[] =
89{
90	/******************************************/
91	/* NOTE: B6/C3 is data header signature   */
92	/* 0xAA/0xBB is data length = total */
93	/* bytes - 7, 0xCC is type, 0xDD is */
94	/* interrupt to use.                */
95	/******************************************/
96	0xB6, 0xC3, 0xf7, 0x0e, 0x02, 0x64,
97	0x9f, 0xcf, 0xbc, 0x08, 0xe7, 0x57, 0x00, 0x00,
98	0x9a, 0x08, 0x97, 0xc1, 0xe7, 0x67, 0xff, 0x1f,
99	0x28, 0xc0, 0xe7, 0x87, 0x00, 0x04, 0x24, 0xc0,
100	0xe7, 0x67, 0xff, 0xf9, 0x22, 0xc0, 0x97, 0xcf,
101	0xe7, 0x09, 0xa2, 0xc0, 0x94, 0x08, 0xd7, 0x09,
102	0x00, 0xc0, 0xe7, 0x59, 0xba, 0x08, 0x94, 0x08,
103	0x03, 0xc1, 0xe7, 0x67, 0xff, 0xf7, 0x24, 0xc0,
104	0xe7, 0x05, 0x00, 0xc0, 0xa7, 0xcf, 0x92, 0x08,
105	0xe7, 0x57, 0x00, 0x00, 0x8e, 0x08, 0xa7, 0xa1,
106	0x8e, 0x08, 0x97, 0xcf, 0xe7, 0x57, 0x00, 0x00,
107	0xf2, 0x09, 0x0a, 0xc0, 0xe7, 0x57, 0x00, 0x00,
108	0xa4, 0xc0, 0xa7, 0xc0, 0x56, 0x08, 0x9f, 0xaf,
109	0x70, 0x09, 0xe7, 0x07, 0x00, 0x00, 0xf2, 0x09,
110	0xe7, 0x57, 0xff, 0xff, 0x90, 0x08, 0x9f, 0xa0,
111	0x40, 0x00, 0xe7, 0x59, 0x90, 0x08, 0x94, 0x08,
112	0x9f, 0xa0, 0x40, 0x00, 0xc8, 0x09, 0xa2, 0x08,
113	0x08, 0x62, 0x9f, 0xa1, 0x14, 0x0a, 0xe7, 0x57,
114	0x00, 0x00, 0x52, 0x08, 0xa7, 0xc0, 0x56, 0x08,
115	0x9f, 0xaf, 0x04, 0x00, 0xe7, 0x57, 0x00, 0x00,
116	0x8e, 0x08, 0xa7, 0xc1, 0x56, 0x08, 0xc0, 0x09,
117	0xa8, 0x08, 0x00, 0x60, 0x05, 0xc4, 0xc0, 0x59,
118	0x94, 0x08, 0x02, 0xc0, 0x9f, 0xaf, 0xee, 0x00,
119	0xe7, 0x59, 0xae, 0x08, 0x94, 0x08, 0x02, 0xc1,
120	0x9f, 0xaf, 0xf6, 0x00, 0x9f, 0xaf, 0x9e, 0x03,
121	0xef, 0x57, 0x00, 0x00, 0xf0, 0x09, 0x9f, 0xa1,
122	0xde, 0x01, 0xe7, 0x57, 0x00, 0x00, 0x78, 0x08,
123	0x9f, 0xa0, 0xe4, 0x03, 0x9f, 0xaf, 0x2c, 0x04,
124	0xa7, 0xcf, 0x56, 0x08, 0x48, 0x02, 0xe7, 0x09,
125	0x94, 0x08, 0xa8, 0x08, 0xc8, 0x37, 0x04, 0x00,
126	0x9f, 0xaf, 0x68, 0x04, 0x97, 0xcf, 0xe7, 0x57,
127	0x00, 0x00, 0xa6, 0x08, 0x97, 0xc0, 0xd7, 0x09,
128	0x00, 0xc0, 0xc1, 0xdf, 0xc8, 0x09, 0x9c, 0x08,
129	0x08, 0x62, 0x1d, 0xc0, 0x27, 0x04, 0x9c, 0x08,
130	0x10, 0x94, 0xf0, 0x07, 0xee, 0x09, 0x02, 0x00,
131	0xc1, 0x07, 0x01, 0x00, 0x70, 0x00, 0x04, 0x00,
132	0xf0, 0x07, 0x44, 0x01, 0x06, 0x00, 0x50, 0xaf,
133	0xe7, 0x09, 0x94, 0x08, 0xae, 0x08, 0xe7, 0x17,
134	0x14, 0x00, 0xae, 0x08, 0xe7, 0x67, 0xff, 0x07,
135	0xae, 0x08, 0xe7, 0x07, 0xff, 0xff, 0xa8, 0x08,
136	0xe7, 0x07, 0x00, 0x00, 0xa6, 0x08, 0xe7, 0x05,
137	0x00, 0xc0, 0x97, 0xcf, 0xd7, 0x09, 0x00, 0xc0,
138	0xc1, 0xdf, 0x48, 0x02, 0xd0, 0x09, 0x9c, 0x08,
139	0x27, 0x02, 0x9c, 0x08, 0xe7, 0x09, 0x20, 0xc0,
140	0xee, 0x09, 0xe7, 0xd0, 0xee, 0x09, 0xe7, 0x05,
141	0x00, 0xc0, 0x97, 0xcf, 0x48, 0x02, 0xc8, 0x37,
142	0x04, 0x00, 0x00, 0x0c, 0x0c, 0x00, 0x00, 0x60,
143	0x21, 0xc0, 0xc0, 0x37, 0x3e, 0x00, 0x23, 0xc9,
144	0xc0, 0x57, 0xb4, 0x05, 0x1b, 0xc8, 0xc0, 0x17,
145	0x3f, 0x00, 0xc0, 0x67, 0xc0, 0xff, 0x30, 0x00,
146	0x08, 0x00, 0xf0, 0x07, 0x00, 0x00, 0x04, 0x00,
147	0x00, 0x02, 0xc0, 0x17, 0x4c, 0x00, 0x30, 0x00,
148	0x06, 0x00, 0xf0, 0x07, 0xbe, 0x01, 0x0a, 0x00,
149	0x48, 0x02, 0xc1, 0x07, 0x02, 0x00, 0xd7, 0x09,
150	0x00, 0xc0, 0xc1, 0xdf, 0x51, 0xaf, 0xe7, 0x05,
151	0x00, 0xc0, 0x97, 0xcf, 0x9f, 0xaf, 0x68, 0x04,
152	0x9f, 0xaf, 0xe4, 0x03, 0x97, 0xcf, 0x9f, 0xaf,
153	0xe4, 0x03, 0xc9, 0x37, 0x04, 0x00, 0xc1, 0xdf,
154	0xc8, 0x09, 0x70, 0x08, 0x50, 0x02, 0x67, 0x02,
155	0x70, 0x08, 0xd1, 0x07, 0x00, 0x00, 0xc0, 0xdf,
156	0x9f, 0xaf, 0xde, 0x01, 0x97, 0xcf, 0xe7, 0x57,
157	0x00, 0x00, 0xaa, 0x08, 0x97, 0xc1, 0xe7, 0x57,
158	0x01, 0x00, 0x7a, 0x08, 0x97, 0xc0, 0xc8, 0x09,
159	0x6e, 0x08, 0x08, 0x62, 0x97, 0xc0, 0x00, 0x02,
160	0xc0, 0x17, 0x0e, 0x00, 0x27, 0x00, 0x34, 0x01,
161	0x27, 0x0c, 0x0c, 0x00, 0x36, 0x01, 0xef, 0x57,
162	0x00, 0x00, 0xf0, 0x09, 0x9f, 0xc0, 0xbe, 0x02,
163	0xe7, 0x57, 0x00, 0x00, 0xb0, 0x08, 0x97, 0xc1,
164	0xe7, 0x07, 0x09, 0x00, 0x12, 0xc0, 0xe7, 0x77,
165	0x00, 0x08, 0x20, 0xc0, 0x9f, 0xc1, 0xb6, 0x02,
166	0xe7, 0x57, 0x09, 0x00, 0x12, 0xc0, 0x77, 0xc9,
167	0xd7, 0x09, 0x00, 0xc0, 0xc1, 0xdf, 0xe7, 0x77,
168	0x00, 0x08, 0x20, 0xc0, 0x2f, 0xc1, 0xe7, 0x07,
169	0x00, 0x00, 0x42, 0xc0, 0xe7, 0x07, 0x05, 0x00,
170	0x90, 0xc0, 0xc8, 0x07, 0x0a, 0x00, 0xe7, 0x77,
171	0x04, 0x00, 0x20, 0xc0, 0x09, 0xc1, 0x08, 0xda,
172	0x7a, 0xc1, 0xe7, 0x07, 0x00, 0x01, 0x42, 0xc0,
173	0xe7, 0x07, 0x04, 0x00, 0x90, 0xc0, 0x1a, 0xcf,
174	0xe7, 0x07, 0x01, 0x00, 0x7a, 0x08, 0x00, 0xd8,
175	0x27, 0x50, 0x34, 0x01, 0x17, 0xc1, 0xe7, 0x77,
176	0x02, 0x00, 0x20, 0xc0, 0x79, 0xc1, 0x27, 0x50,
177	0x34, 0x01, 0x10, 0xc1, 0xe7, 0x77, 0x02, 0x00,
178	0x20, 0xc0, 0x79, 0xc0, 0x9f, 0xaf, 0xd8, 0x02,
179	0xe7, 0x05, 0x00, 0xc0, 0x00, 0x60, 0x9f, 0xc0,
180	0xde, 0x01, 0x97, 0xcf, 0xe7, 0x07, 0x01, 0x00,
181	0xb8, 0x08, 0x06, 0xcf, 0xe7, 0x07, 0x30, 0x0e,
182	0x02, 0x00, 0xe7, 0x07, 0x50, 0xc3, 0x12, 0xc0,
183	0xe7, 0x05, 0x00, 0xc0, 0x97, 0xcf, 0xe7, 0x07,
184	0x01, 0x00, 0xb8, 0x08, 0x97, 0xcf, 0xe7, 0x07,
185	0x50, 0xc3, 0x12, 0xc0, 0xe7, 0x07, 0x30, 0x0e,
186	0x02, 0x00, 0xe7, 0x07, 0x01, 0x00, 0x7a, 0x08,
187	0xe7, 0x07, 0x05, 0x00, 0x90, 0xc0, 0x97, 0xcf,
188	0xe7, 0x07, 0x00, 0x01, 0x42, 0xc0, 0xe7, 0x07,
189	0x04, 0x00, 0x90, 0xc0, 0xe7, 0x07, 0x00, 0x00,
190	0x7a, 0x08, 0xe7, 0x57, 0x0f, 0x00, 0xb2, 0x08,
191	0x13, 0xc1, 0x9f, 0xaf, 0x2e, 0x08, 0xca, 0x09,
192	0xac, 0x08, 0xf2, 0x17, 0x01, 0x00, 0x5c, 0x00,
193	0xf2, 0x27, 0x00, 0x00, 0x5e, 0x00, 0xe7, 0x07,
194	0x00, 0x00, 0xb2, 0x08, 0xe7, 0x07, 0x01, 0x00,
195	0xb4, 0x08, 0xc0, 0x07, 0xff, 0xff, 0x97, 0xcf,
196	0x9f, 0xaf, 0x4c, 0x03, 0xc0, 0x69, 0xb4, 0x08,
197	0x57, 0x00, 0x9f, 0xde, 0x33, 0x00, 0xc1, 0x05,
198	0x27, 0xd8, 0xb2, 0x08, 0x27, 0xd2, 0xb4, 0x08,
199	0xe7, 0x87, 0x01, 0x00, 0xb4, 0x08, 0xe7, 0x67,
200	0xff, 0x03, 0xb4, 0x08, 0x00, 0x60, 0x97, 0xc0,
201	0xe7, 0x07, 0x01, 0x00, 0xb0, 0x08, 0x27, 0x00,
202	0x12, 0xc0, 0x97, 0xcf, 0xc0, 0x09, 0xb6, 0x08,
203	0x00, 0xd2, 0x02, 0xc3, 0xc0, 0x97, 0x05, 0x80,
204	0x27, 0x00, 0xb6, 0x08, 0xc0, 0x99, 0x82, 0x08,
205	0xc0, 0x99, 0xa2, 0xc0, 0x97, 0xcf, 0xe7, 0x07,
206	0x00, 0x00, 0xb0, 0x08, 0xc0, 0xdf, 0x97, 0xcf,
207	0xc8, 0x09, 0x72, 0x08, 0x08, 0x62, 0x02, 0xc0,
208	0x10, 0x64, 0x07, 0xc1, 0xe7, 0x07, 0x00, 0x00,
209	0x64, 0x08, 0xe7, 0x07, 0xc8, 0x05, 0x24, 0x00,
210	0x97, 0xcf, 0x27, 0x04, 0x72, 0x08, 0xc8, 0x17,
211	0x0e, 0x00, 0x27, 0x02, 0x64, 0x08, 0xe7, 0x07,
212	0xd6, 0x05, 0x24, 0x00, 0x97, 0xcf, 0xd7, 0x09,
213	0x00, 0xc0, 0xc1, 0xdf, 0xe7, 0x57, 0x00, 0x00,
214	0x62, 0x08, 0x13, 0xc1, 0x9f, 0xaf, 0x70, 0x03,
215	0xe7, 0x57, 0x00, 0x00, 0x64, 0x08, 0x13, 0xc0,
216	0xe7, 0x09, 0x64, 0x08, 0x30, 0x01, 0xe7, 0x07,
217	0xf2, 0x05, 0x32, 0x01, 0xe7, 0x07, 0x10, 0x00,
218	0x96, 0xc0, 0xe7, 0x09, 0x64, 0x08, 0x62, 0x08,
219	0x04, 0xcf, 0xe7, 0x57, 0x00, 0x00, 0x64, 0x08,
220	0x02, 0xc1, 0x9f, 0xaf, 0x70, 0x03, 0xe7, 0x05,
221	0x00, 0xc0, 0x97, 0xcf, 0xd7, 0x09, 0x00, 0xc0,
222	0xc1, 0xdf, 0xc8, 0x09, 0x72, 0x08, 0x27, 0x02,
223	0x78, 0x08, 0x08, 0x62, 0x03, 0xc1, 0xe7, 0x05,
224	0x00, 0xc0, 0x97, 0xcf, 0x27, 0x04, 0x72, 0x08,
225	0xe7, 0x05, 0x00, 0xc0, 0xf0, 0x07, 0x40, 0x00,
226	0x08, 0x00, 0xf0, 0x07, 0x00, 0x00, 0x04, 0x00,
227	0x00, 0x02, 0xc0, 0x17, 0x0c, 0x00, 0x30, 0x00,
228	0x06, 0x00, 0xf0, 0x07, 0x64, 0x01, 0x0a, 0x00,
229	0xc8, 0x17, 0x04, 0x00, 0xc1, 0x07, 0x02, 0x00,
230	0x51, 0xaf, 0x97, 0xcf, 0xe7, 0x57, 0x00, 0x00,
231	0x6a, 0x08, 0x97, 0xc0, 0xc1, 0xdf, 0xc8, 0x09,
232	0x6a, 0x08, 0x27, 0x04, 0x6a, 0x08, 0x27, 0x52,
233	0x6c, 0x08, 0x03, 0xc1, 0xe7, 0x07, 0x6a, 0x08,
234	0x6c, 0x08, 0xc0, 0xdf, 0x17, 0x02, 0xc8, 0x17,
235	0x0e, 0x00, 0x9f, 0xaf, 0x16, 0x05, 0xc8, 0x05,
236	0x00, 0x60, 0x03, 0xc0, 0x9f, 0xaf, 0x80, 0x04,
237	0x97, 0xcf, 0x9f, 0xaf, 0x68, 0x04, 0x97, 0xcf,
238	0xd7, 0x09, 0x00, 0xc0, 0xc1, 0xdf, 0x08, 0x62,
239	0x1c, 0xc0, 0xd0, 0x09, 0x72, 0x08, 0x27, 0x02,
240	0x72, 0x08, 0xe7, 0x05, 0x00, 0xc0, 0x97, 0xcf,
241	0x97, 0x02, 0xca, 0x09, 0xac, 0x08, 0xf2, 0x17,
242	0x01, 0x00, 0x04, 0x00, 0xf2, 0x27, 0x00, 0x00,
243	0x06, 0x00, 0xca, 0x17, 0x2c, 0x00, 0xf8, 0x77,
244	0x01, 0x00, 0x0e, 0x00, 0x06, 0xc0, 0xca, 0xd9,
245	0xf8, 0x57, 0xff, 0x00, 0x0e, 0x00, 0x01, 0xc1,
246	0xca, 0xd9, 0x22, 0x1c, 0x0c, 0x00, 0xe2, 0x27,
247	0x00, 0x00, 0xe2, 0x17, 0x01, 0x00, 0xe2, 0x27,
248	0x00, 0x00, 0xca, 0x05, 0x00, 0x0c, 0x0c, 0x00,
249	0xc0, 0x17, 0x41, 0x00, 0xc0, 0x67, 0xc0, 0xff,
250	0x30, 0x00, 0x08, 0x00, 0x00, 0x02, 0xc0, 0x17,
251	0x0c, 0x00, 0x30, 0x00, 0x06, 0x00, 0xf0, 0x07,
252	0xdc, 0x00, 0x0a, 0x00, 0xf0, 0x07, 0x00, 0x00,
253	0x04, 0x00, 0x00, 0x0c, 0x08, 0x00, 0x40, 0xd1,
254	0x01, 0x00, 0xc0, 0x19, 0xa6, 0x08, 0xc0, 0x59,
255	0x98, 0x08, 0x04, 0xc9, 0x49, 0xaf, 0x9f, 0xaf,
256	0xee, 0x00, 0x4a, 0xaf, 0x67, 0x10, 0xa6, 0x08,
257	0xc8, 0x17, 0x04, 0x00, 0xc1, 0x07, 0x01, 0x00,
258	0xd7, 0x09, 0x00, 0xc0, 0xc1, 0xdf, 0x50, 0xaf,
259	0xe7, 0x05, 0x00, 0xc0, 0x97, 0xcf, 0xc0, 0x07,
260	0x01, 0x00, 0xc1, 0x09, 0x7c, 0x08, 0xc1, 0x77,
261	0x01, 0x00, 0x97, 0xc1, 0xd8, 0x77, 0x01, 0x00,
262	0x12, 0xc0, 0xc9, 0x07, 0x4c, 0x08, 0x9f, 0xaf,
263	0x64, 0x05, 0x04, 0xc1, 0xc1, 0x77, 0x08, 0x00,
264	0x13, 0xc0, 0x97, 0xcf, 0xc1, 0x77, 0x02, 0x00,
265	0x97, 0xc1, 0xc1, 0x77, 0x10, 0x00, 0x0c, 0xc0,
266	0x9f, 0xaf, 0x86, 0x05, 0x97, 0xcf, 0xc1, 0x77,
267	0x04, 0x00, 0x06, 0xc0, 0xc9, 0x07, 0x7e, 0x08,
268	0x9f, 0xaf, 0x64, 0x05, 0x97, 0xc0, 0x00, 0xcf,
269	0x00, 0x90, 0x97, 0xcf, 0x50, 0x54, 0x97, 0xc1,
270	0x70, 0x5c, 0x02, 0x00, 0x02, 0x00, 0x97, 0xc1,
271	0x70, 0x5c, 0x04, 0x00, 0x04, 0x00, 0x97, 0xcf,
272	0xc0, 0x00, 0x60, 0x00, 0x30, 0x00, 0x18, 0x00,
273	0x0c, 0x00, 0x06, 0x00, 0x00, 0x00, 0xcb, 0x09,
274	0x88, 0x08, 0xcc, 0x09, 0x8a, 0x08, 0x0b, 0x53,
275	0x11, 0xc0, 0xc9, 0x02, 0xca, 0x07, 0x78, 0x05,
276	0x9f, 0xaf, 0x64, 0x05, 0x97, 0xc0, 0x0a, 0xc8,
277	0x82, 0x08, 0x0a, 0xcf, 0x82, 0x08, 0x9f, 0xaf,
278	0x64, 0x05, 0x97, 0xc0, 0x05, 0xc2, 0x89, 0x30,
279	0x82, 0x60, 0x78, 0xc1, 0x00, 0x90, 0x97, 0xcf,
280	0x89, 0x10, 0x09, 0x53, 0x79, 0xc2, 0x89, 0x30,
281	0x82, 0x08, 0x7a, 0xcf, 0xc0, 0xdf, 0x97, 0xcf,
282	0xe7, 0x09, 0x96, 0xc0, 0x66, 0x08, 0xe7, 0x09,
283	0x98, 0xc0, 0x68, 0x08, 0x0f, 0xcf, 0xe7, 0x09,
284	0x96, 0xc0, 0x66, 0x08, 0xe7, 0x09, 0x98, 0xc0,
285	0x68, 0x08, 0xe7, 0x09, 0x64, 0x08, 0x30, 0x01,
286	0xe7, 0x07, 0xf2, 0x05, 0x32, 0x01, 0xe7, 0x07,
287	0x10, 0x00, 0x96, 0xc0, 0xd7, 0x09, 0x00, 0xc0,
288	0x17, 0x02, 0xc8, 0x09, 0x62, 0x08, 0xc8, 0x37,
289	0x0e, 0x00, 0xe7, 0x57, 0x04, 0x00, 0x68, 0x08,
290	0x3d, 0xc0, 0xe7, 0x87, 0x00, 0x08, 0x24, 0xc0,
291	0xe7, 0x09, 0x94, 0x08, 0xba, 0x08, 0xe7, 0x17,
292	0x64, 0x00, 0xba, 0x08, 0xe7, 0x67, 0xff, 0x07,
293	0xba, 0x08, 0xe7, 0x77, 0x2a, 0x00, 0x66, 0x08,
294	0x30, 0xc0, 0x97, 0x02, 0xca, 0x09, 0xac, 0x08,
295	0xe7, 0x77, 0x20, 0x00, 0x66, 0x08, 0x0e, 0xc0,
296	0xf2, 0x17, 0x01, 0x00, 0x10, 0x00, 0xf2, 0x27,
297	0x00, 0x00, 0x12, 0x00, 0xe7, 0x77, 0x0a, 0x00,
298	0x66, 0x08, 0xca, 0x05, 0x1e, 0xc0, 0x97, 0x02,
299	0xca, 0x09, 0xac, 0x08, 0xf2, 0x17, 0x01, 0x00,
300	0x0c, 0x00, 0xf2, 0x27, 0x00, 0x00, 0x0e, 0x00,
301	0xe7, 0x77, 0x02, 0x00, 0x66, 0x08, 0x07, 0xc0,
302	0xf2, 0x17, 0x01, 0x00, 0x44, 0x00, 0xf2, 0x27,
303	0x00, 0x00, 0x46, 0x00, 0x06, 0xcf, 0xf2, 0x17,
304	0x01, 0x00, 0x60, 0x00, 0xf2, 0x27, 0x00, 0x00,
305	0x62, 0x00, 0xca, 0x05, 0x9f, 0xaf, 0x68, 0x04,
306	0x0f, 0xcf, 0x57, 0x02, 0x09, 0x02, 0xf1, 0x09,
307	0x68, 0x08, 0x0c, 0x00, 0xf1, 0xda, 0x0c, 0x00,
308	0xc8, 0x09, 0x6c, 0x08, 0x50, 0x02, 0x67, 0x02,
309	0x6c, 0x08, 0xd1, 0x07, 0x00, 0x00, 0xc9, 0x05,
310	0xe7, 0x09, 0x64, 0x08, 0x62, 0x08, 0xe7, 0x57,
311	0x00, 0x00, 0x62, 0x08, 0x02, 0xc0, 0x9f, 0xaf,
312	0x70, 0x03, 0xc8, 0x05, 0xe7, 0x05, 0x00, 0xc0,
313	0xc0, 0xdf, 0x97, 0xcf, 0xd7, 0x09, 0x00, 0xc0,
314	0x17, 0x00, 0x17, 0x02, 0x97, 0x02, 0xc0, 0x09,
315	0x92, 0xc0, 0xe7, 0x87, 0x00, 0x08, 0x24, 0xc0,
316	0xe7, 0x09, 0x94, 0x08, 0xba, 0x08, 0xe7, 0x17,
317	0x64, 0x00, 0xba, 0x08, 0xe7, 0x67, 0xff, 0x07,
318	0xba, 0x08, 0xe7, 0x07, 0x04, 0x00, 0x90, 0xc0,
319	0xca, 0x09, 0xac, 0x08, 0xe7, 0x07, 0x00, 0x00,
320	0x7a, 0x08, 0xe7, 0x07, 0x66, 0x03, 0x02, 0x00,
321	0xc0, 0x77, 0x02, 0x00, 0x10, 0xc0, 0xef, 0x57,
322	0x00, 0x00, 0xf0, 0x09, 0x04, 0xc0, 0x9f, 0xaf,
323	0xd8, 0x02, 0x9f, 0xcf, 0x12, 0x08, 0xf2, 0x17,
324	0x01, 0x00, 0x50, 0x00, 0xf2, 0x27, 0x00, 0x00,
325	0x52, 0x00, 0x9f, 0xcf, 0x12, 0x08, 0xef, 0x57,
326	0x00, 0x00, 0xf0, 0x09, 0x08, 0xc0, 0xe7, 0x57,
327	0x00, 0x00, 0xb8, 0x08, 0xe7, 0x07, 0x00, 0x00,
328	0xb8, 0x08, 0x0a, 0xc0, 0x03, 0xcf, 0xc0, 0x77,
329	0x10, 0x00, 0x06, 0xc0, 0xf2, 0x17, 0x01, 0x00,
330	0x58, 0x00, 0xf2, 0x27, 0x00, 0x00, 0x5a, 0x00,
331	0xc0, 0x77, 0x80, 0x00, 0x06, 0xc0, 0xf2, 0x17,
332	0x01, 0x00, 0x70, 0x00, 0xf2, 0x27, 0x00, 0x00,
333	0x72, 0x00, 0xc0, 0x77, 0x08, 0x00, 0x1d, 0xc1,
334	0xf2, 0x17, 0x01, 0x00, 0x08, 0x00, 0xf2, 0x27,
335	0x00, 0x00, 0x0a, 0x00, 0xc0, 0x77, 0x00, 0x02,
336	0x06, 0xc0, 0xf2, 0x17, 0x01, 0x00, 0x64, 0x00,
337	0xf2, 0x27, 0x00, 0x00, 0x66, 0x00, 0xc0, 0x77,
338	0x40, 0x00, 0x06, 0xc0, 0xf2, 0x17, 0x01, 0x00,
339	0x5c, 0x00, 0xf2, 0x27, 0x00, 0x00, 0x5e, 0x00,
340	0xc0, 0x77, 0x01, 0x00, 0x01, 0xc0, 0x37, 0xcf,
341	0x36, 0xcf, 0xf2, 0x17, 0x01, 0x00, 0x00, 0x00,
342	0xf2, 0x27, 0x00, 0x00, 0x02, 0x00, 0xef, 0x57,
343	0x00, 0x00, 0xf0, 0x09, 0x18, 0xc0, 0xe7, 0x57,
344	0x01, 0x00, 0xb2, 0x08, 0x0e, 0xc2, 0x07, 0xc8,
345	0xf2, 0x17, 0x01, 0x00, 0x50, 0x00, 0xf2, 0x27,
346	0x00, 0x00, 0x52, 0x00, 0x06, 0xcf, 0xf2, 0x17,
347	0x01, 0x00, 0x54, 0x00, 0xf2, 0x27, 0x00, 0x00,
348	0x56, 0x00, 0xe7, 0x07, 0x00, 0x00, 0xb2, 0x08,
349	0xe7, 0x07, 0x01, 0x00, 0xb4, 0x08, 0xc8, 0x09,
350	0x34, 0x01, 0xca, 0x17, 0x14, 0x00, 0xd8, 0x77,
351	0x01, 0x00, 0x05, 0xc0, 0xca, 0xd9, 0xd8, 0x57,
352	0xff, 0x00, 0x01, 0xc0, 0xca, 0xd9, 0xe2, 0x19,
353	0x94, 0xc0, 0xe2, 0x27, 0x00, 0x00, 0xe2, 0x17,
354	0x01, 0x00, 0xe2, 0x27, 0x00, 0x00, 0x9f, 0xaf,
355	0x2e, 0x08, 0x9f, 0xaf, 0xde, 0x01, 0xe7, 0x57,
356	0x00, 0x00, 0xaa, 0x08, 0x9f, 0xa1, 0xf0, 0x0b,
357	0xca, 0x05, 0xc8, 0x05, 0xc0, 0x05, 0xe7, 0x05,
358	0x00, 0xc0, 0xc0, 0xdf, 0x97, 0xcf, 0xc8, 0x09,
359	0x6e, 0x08, 0x08, 0x62, 0x97, 0xc0, 0x27, 0x04,
360	0x6e, 0x08, 0x27, 0x52, 0x70, 0x08, 0x03, 0xc1,
361	0xe7, 0x07, 0x6e, 0x08, 0x70, 0x08, 0x9f, 0xaf,
362	0x68, 0x04, 0x97, 0xcf, 0xff, 0xff, 0xff, 0xff,
363	0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
364	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
365	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
366	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
367	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
368	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
369	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
370	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
371	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
372	0x3f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
373	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
374	0xff, 0xff, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00,
375	0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x33, 0xcc,
376	0x00, 0x00, 0x00, 0x00, 0xe7, 0x57, 0x00, 0x80,
377	0xb2, 0x00, 0x06, 0xc2, 0xe7, 0x07, 0x52, 0x0e,
378	0x12, 0x00, 0xe7, 0x07, 0x98, 0x0e, 0xb2, 0x00,
379	0xe7, 0x07, 0xa4, 0x09, 0xf2, 0x02, 0xc8, 0x09,
380	0xb4, 0x00, 0xf8, 0x07, 0x02, 0x00, 0x0d, 0x00,
381	0xd7, 0x09, 0x0e, 0xc0, 0xe7, 0x07, 0x00, 0x00,
382	0x0e, 0xc0, 0xc8, 0x09, 0xdc, 0x00, 0xf0, 0x07,
383	0xff, 0xff, 0x09, 0x00, 0xf0, 0x07, 0xfb, 0x13,
384	0x0b, 0x00, 0xe7, 0x09, 0xc0, 0x00, 0x58, 0x08,
385	0xe7, 0x09, 0xbe, 0x00, 0x54, 0x08, 0xe7, 0x09,
386	0x10, 0x00, 0x92, 0x08, 0xc8, 0x07, 0xb4, 0x09,
387	0x9f, 0xaf, 0x8c, 0x09, 0x9f, 0xaf, 0xe2, 0x0b,
388	0xc0, 0x07, 0x80, 0x01, 0x44, 0xaf, 0x27, 0x00,
389	0x88, 0x08, 0x27, 0x00, 0x8a, 0x08, 0x27, 0x00,
390	0x8c, 0x08, 0xc0, 0x07, 0x74, 0x00, 0x44, 0xaf,
391	0x27, 0x00, 0xac, 0x08, 0x08, 0x00, 0x00, 0x90,
392	0xc1, 0x07, 0x1d, 0x00, 0x20, 0x00, 0x20, 0x00,
393	0x01, 0xda, 0x7c, 0xc1, 0x9f, 0xaf, 0x8a, 0x0b,
394	0xc0, 0x07, 0x4c, 0x00, 0x48, 0xaf, 0x27, 0x00,
395	0x56, 0x08, 0x9f, 0xaf, 0x72, 0x0c, 0xe7, 0x07,
396	0x00, 0x80, 0x96, 0x08, 0xef, 0x57, 0x00, 0x00,
397	0xf0, 0x09, 0x03, 0xc0, 0xe7, 0x07, 0x01, 0x00,
398	0x1c, 0xc0, 0xe7, 0x05, 0x0e, 0xc0, 0x97, 0xcf,
399	0x49, 0xaf, 0xe7, 0x87, 0x43, 0x00, 0x0e, 0xc0,
400	0xe7, 0x07, 0xff, 0xff, 0x94, 0x08, 0x9f, 0xaf,
401	0x8a, 0x0c, 0xc0, 0x07, 0x01, 0x00, 0x60, 0xaf,
402	0x4a, 0xaf, 0x97, 0xcf, 0x00, 0x08, 0x09, 0x08,
403	0x11, 0x08, 0x00, 0xda, 0x7c, 0xc1, 0x97, 0xcf,
404	0x67, 0x04, 0xcc, 0x02, 0xc0, 0xdf, 0x51, 0x94,
405	0xb1, 0xaf, 0x06, 0x00, 0xc1, 0xdf, 0xc9, 0x09,
406	0xcc, 0x02, 0x49, 0x62, 0x75, 0xc1, 0xc0, 0xdf,
407	0xa7, 0xcf, 0xd6, 0x02, 0x0e, 0x00, 0x24, 0x00,
408	0xd6, 0x05, 0x22, 0x00, 0xc4, 0x06, 0xd0, 0x00,
409	0xf0, 0x0b, 0xaa, 0x00, 0x0e, 0x0a, 0xbe, 0x00,
410	0x2c, 0x0c, 0x10, 0x00, 0x20, 0x00, 0x04, 0x00,
411	0xc4, 0x05, 0x02, 0x00, 0x66, 0x03, 0x06, 0x00,
412	0x00, 0x00, 0x24, 0xc0, 0x04, 0x04, 0x28, 0xc0,
413	0xfe, 0xfb, 0x1e, 0xc0, 0x00, 0x04, 0x22, 0xc0,
414	0xff, 0xf0, 0xc0, 0x00, 0x60, 0x0b, 0x00, 0x00,
415	0x00, 0x00, 0xff, 0xff, 0x34, 0x0a, 0x3e, 0x0a,
416	0x9e, 0x0a, 0xa8, 0x0a, 0xce, 0x0a, 0xd2, 0x0a,
417	0xd6, 0x0a, 0x00, 0x0b, 0x10, 0x0b, 0x1e, 0x0b,
418	0x20, 0x0b, 0x28, 0x0b, 0x28, 0x0b, 0x27, 0x02,
419	0xa2, 0x08, 0x97, 0xcf, 0xe7, 0x07, 0x00, 0x00,
420	0xa2, 0x08, 0x0a, 0x0e, 0x01, 0x00, 0xca, 0x57,
421	0x0e, 0x00, 0x9f, 0xc3, 0x2a, 0x0b, 0xca, 0x37,
422	0x00, 0x00, 0x9f, 0xc2, 0x2a, 0x0b, 0x0a, 0xd2,
423	0xb2, 0xcf, 0xf4, 0x09, 0xc8, 0x09, 0xde, 0x00,
424	0x07, 0x06, 0x9f, 0xcf, 0x3c, 0x0b, 0xf0, 0x57,
425	0x80, 0x01, 0x06, 0x00, 0x9f, 0xc8, 0x2a, 0x0b,
426	0x27, 0x0c, 0x02, 0x00, 0x86, 0x08, 0xc0, 0x09,
427	0x88, 0x08, 0x27, 0x00, 0x8a, 0x08, 0xe7, 0x07,
428	0x00, 0x00, 0x84, 0x08, 0x27, 0x00, 0x5c, 0x08,
429	0x00, 0x1c, 0x06, 0x00, 0x27, 0x00, 0x8c, 0x08,
430	0x41, 0x90, 0x67, 0x50, 0x86, 0x08, 0x0d, 0xc0,
431	0x67, 0x00, 0x5a, 0x08, 0x27, 0x0c, 0x06, 0x00,
432	0x5e, 0x08, 0xe7, 0x07, 0x8a, 0x0a, 0x60, 0x08,
433	0xc8, 0x07, 0x5a, 0x08, 0x41, 0x90, 0x51, 0xaf,
434	0x97, 0xcf, 0x9f, 0xaf, 0xac, 0x0e, 0xe7, 0x09,
435	0x8c, 0x08, 0x8a, 0x08, 0xe7, 0x09, 0x86, 0x08,
436	0x84, 0x08, 0x59, 0xaf, 0x97, 0xcf, 0x27, 0x0c,
437	0x02, 0x00, 0x7c, 0x08, 0x59, 0xaf, 0x97, 0xcf,
438	0x09, 0x0c, 0x02, 0x00, 0x09, 0xda, 0x49, 0xd2,
439	0xc9, 0x19, 0xac, 0x08, 0xc8, 0x07, 0x5a, 0x08,
440	0xe0, 0x07, 0x00, 0x00, 0x60, 0x02, 0xe0, 0x07,
441	0x04, 0x00, 0xd0, 0x07, 0x9a, 0x0a, 0x48, 0xdb,
442	0x41, 0x90, 0x50, 0xaf, 0x97, 0xcf, 0x59, 0xaf,
443	0x97, 0xcf, 0x59, 0xaf, 0x97, 0xcf, 0xf0, 0x57,
444	0x06, 0x00, 0x06, 0x00, 0x26, 0xc1, 0xe7, 0x07,
445	0x7e, 0x08, 0x5c, 0x08, 0x41, 0x90, 0x67, 0x00,
446	0x5a, 0x08, 0x27, 0x0c, 0x06, 0x00, 0x5e, 0x08,
447	0xe7, 0x07, 0x5c, 0x0b, 0x60, 0x08, 0xc8, 0x07,
448	0x5a, 0x08, 0x41, 0x90, 0x51, 0xaf, 0x97, 0xcf,
449	0x07, 0x0c, 0x06, 0x00, 0xc7, 0x57, 0x06, 0x00,
450	0x10, 0xc1, 0xc8, 0x07, 0x7e, 0x08, 0x16, 0xcf,
451	0x00, 0x0c, 0x02, 0x00, 0x00, 0xda, 0x40, 0xd1,
452	0x27, 0x00, 0x98, 0x08, 0x1f, 0xcf, 0x1e, 0xcf,
453	0x27, 0x0c, 0x02, 0x00, 0xa4, 0x08, 0x1a, 0xcf,
454	0x00, 0xcf, 0x27, 0x02, 0x20, 0x01, 0xe7, 0x07,
455	0x08, 0x00, 0x22, 0x01, 0xe7, 0x07, 0x13, 0x00,
456	0xb0, 0xc0, 0x97, 0xcf, 0x41, 0x90, 0x67, 0x00,
457	0x5a, 0x08, 0xe7, 0x01, 0x5e, 0x08, 0x27, 0x02,
458	0x5c, 0x08, 0xe7, 0x07, 0x5c, 0x0b, 0x60, 0x08,
459	0xc8, 0x07, 0x5a, 0x08, 0xc1, 0x07, 0x00, 0x80,
460	0x50, 0xaf, 0x97, 0xcf, 0x59, 0xaf, 0x97, 0xcf,
461	0x00, 0x60, 0x05, 0xc0, 0xe7, 0x07, 0x00, 0x00,
462	0x9a, 0x08, 0xa7, 0xcf, 0x58, 0x08, 0x9f, 0xaf,
463	0xe2, 0x0b, 0xe7, 0x07, 0x01, 0x00, 0x9a, 0x08,
464	0x49, 0xaf, 0xd7, 0x09, 0x00, 0xc0, 0x07, 0xaf,
465	0xe7, 0x05, 0x00, 0xc0, 0x4a, 0xaf, 0xa7, 0xcf,
466	0x58, 0x08, 0xc0, 0x07, 0x40, 0x00, 0x44, 0xaf,
467	0x27, 0x00, 0xa0, 0x08, 0x08, 0x00, 0xc0, 0x07,
468	0x20, 0x00, 0x20, 0x94, 0x00, 0xda, 0x7d, 0xc1,
469	0xc0, 0x07, 0xfe, 0x7f, 0x44, 0xaf, 0x40, 0x00,
470	0x41, 0x90, 0xc0, 0x37, 0x08, 0x00, 0xdf, 0xde,
471	0x50, 0x06, 0xc0, 0x57, 0x10, 0x00, 0x02, 0xc2,
472	0xc0, 0x07, 0x10, 0x00, 0x27, 0x00, 0x76, 0x08,
473	0x41, 0x90, 0x9f, 0xde, 0x40, 0x06, 0x44, 0xaf,
474	0x27, 0x00, 0x74, 0x08, 0xc0, 0x09, 0x76, 0x08,
475	0x41, 0x90, 0x00, 0xd2, 0x00, 0xd8, 0x9f, 0xde,
476	0x08, 0x00, 0x44, 0xaf, 0x27, 0x00, 0x9e, 0x08,
477	0x97, 0xcf, 0xe7, 0x87, 0x00, 0x84, 0x28, 0xc0,
478	0xe7, 0x67, 0xff, 0xf3, 0x24, 0xc0, 0x97, 0xcf,
479	0xe7, 0x87, 0x01, 0x00, 0xaa, 0x08, 0xe7, 0x57,
480	0x00, 0x00, 0x7a, 0x08, 0x97, 0xc1, 0x9f, 0xaf,
481	0xe2, 0x0b, 0xe7, 0x87, 0x00, 0x06, 0x22, 0xc0,
482	0xe7, 0x07, 0x00, 0x00, 0x90, 0xc0, 0xe7, 0x67,
483	0xfe, 0xff, 0x3e, 0xc0, 0xe7, 0x07, 0x2e, 0x00,
484	0x0a, 0xc0, 0xe7, 0x87, 0x01, 0x00, 0x3e, 0xc0,
485	0xe7, 0x07, 0xff, 0xff, 0x94, 0x08, 0x9f, 0xaf,
486	0xf0, 0x0c, 0x97, 0xcf, 0x17, 0x00, 0xa7, 0xaf,
487	0x54, 0x08, 0xc0, 0x05, 0x27, 0x00, 0x52, 0x08,
488	0xe7, 0x87, 0x01, 0x00, 0xaa, 0x08, 0x9f, 0xaf,
489	0xe2, 0x0b, 0xe7, 0x07, 0x0c, 0x00, 0x40, 0xc0,
490	0x9f, 0xaf, 0xf0, 0x0c, 0xe7, 0x07, 0x00, 0x00,
491	0x78, 0x08, 0x00, 0x90, 0xe7, 0x09, 0x88, 0x08,
492	0x8a, 0x08, 0x27, 0x00, 0x84, 0x08, 0x27, 0x00,
493	0x7c, 0x08, 0x9f, 0xaf, 0x8a, 0x0c, 0xe7, 0x07,
494	0x00, 0x00, 0xb2, 0x02, 0xe7, 0x07, 0x00, 0x00,
495	0xb4, 0x02, 0xc0, 0x07, 0x06, 0x00, 0xc8, 0x09,
496	0xde, 0x00, 0xc8, 0x17, 0x03, 0x00, 0xc9, 0x07,
497	0x7e, 0x08, 0x29, 0x0a, 0x00, 0xda, 0x7d, 0xc1,
498	0x97, 0xcf, 0xd7, 0x09, 0x00, 0xc0, 0xc1, 0xdf,
499	0x00, 0x90, 0x27, 0x00, 0x6a, 0x08, 0xe7, 0x07,
500	0x6a, 0x08, 0x6c, 0x08, 0x27, 0x00, 0x6e, 0x08,
501	0xe7, 0x07, 0x6e, 0x08, 0x70, 0x08, 0x27, 0x00,
502	0x78, 0x08, 0x27, 0x00, 0x62, 0x08, 0x27, 0x00,
503	0x64, 0x08, 0xc8, 0x09, 0x74, 0x08, 0xc1, 0x09,
504	0x76, 0x08, 0xc9, 0x07, 0x72, 0x08, 0x11, 0x02,
505	0x09, 0x02, 0xc8, 0x17, 0x40, 0x06, 0x01, 0xda,
506	0x7a, 0xc1, 0x51, 0x94, 0xc8, 0x09, 0x9e, 0x08,
507	0xc9, 0x07, 0x9c, 0x08, 0xc1, 0x09, 0x76, 0x08,
508	0x01, 0xd2, 0x01, 0xd8, 0x11, 0x02, 0x09, 0x02,
509	0xc8, 0x17, 0x08, 0x00, 0x01, 0xda, 0x7a, 0xc1,
510	0x51, 0x94, 0xe7, 0x05, 0x00, 0xc0, 0x97, 0xcf,
511	0xe7, 0x57, 0x00, 0x00, 0x52, 0x08, 0x97, 0xc0,
512	0x9f, 0xaf, 0x04, 0x00, 0xe7, 0x09, 0x94, 0x08,
513	0x90, 0x08, 0xe7, 0x57, 0xff, 0xff, 0x90, 0x08,
514	0x04, 0xc1, 0xe7, 0x07, 0xf0, 0x0c, 0x8e, 0x08,
515	0x97, 0xcf, 0xe7, 0x17, 0x32, 0x00, 0x90, 0x08,
516	0xe7, 0x67, 0xff, 0x07, 0x90, 0x08, 0xe7, 0x07,
517	0x26, 0x0d, 0x8e, 0x08, 0x97, 0xcf, 0xd7, 0x09,
518	0x00, 0xc0, 0xc1, 0xdf, 0xe7, 0x57, 0x00, 0x00,
519	0x96, 0x08, 0x23, 0xc0, 0xe7, 0x07, 0x00, 0x80,
520	0x80, 0xc0, 0xe7, 0x07, 0x04, 0x00, 0x90, 0xc0,
521	0xe7, 0x07, 0x00, 0x00, 0x80, 0xc0, 0xe7, 0x07,
522	0x00, 0x80, 0x80, 0xc0, 0xc0, 0x07, 0x00, 0x00,
523	0xc0, 0x07, 0x00, 0x00, 0xc0, 0x07, 0x00, 0x00,
524	0xe7, 0x07, 0x00, 0x00, 0x80, 0xc0, 0xe7, 0x07,
525	0x00, 0x80, 0x80, 0xc0, 0xe7, 0x07, 0x00, 0x80,
526	0x40, 0xc0, 0xc0, 0x07, 0x00, 0x00, 0xe7, 0x07,
527	0x00, 0x00, 0x40, 0xc0, 0xe7, 0x07, 0x00, 0x00,
528	0x80, 0xc0, 0xef, 0x57, 0x00, 0x00, 0xf1, 0x09,
529	0x9f, 0xa0, 0xc0, 0x0d, 0xe7, 0x07, 0x04, 0x00,
530	0x90, 0xc0, 0xe7, 0x07, 0x00, 0x02, 0x40, 0xc0,
531	0xe7, 0x07, 0x0c, 0x02, 0x40, 0xc0, 0xe7, 0x07,
532	0x00, 0x00, 0x96, 0x08, 0xe7, 0x07, 0x00, 0x00,
533	0x8e, 0x08, 0xe7, 0x07, 0x00, 0x00, 0xaa, 0x08,
534	0xd7, 0x09, 0x00, 0xc0, 0xc1, 0xdf, 0x9f, 0xaf,
535	0x9e, 0x03, 0xe7, 0x05, 0x00, 0xc0, 0x9f, 0xaf,
536	0xde, 0x01, 0xe7, 0x05, 0x00, 0xc0, 0x97, 0xcf,
537	0x9f, 0xaf, 0xde, 0x0d, 0xef, 0x77, 0x00, 0x00,
538	0xf1, 0x09, 0x97, 0xc1, 0x9f, 0xaf, 0xde, 0x0d,
539	0xef, 0x77, 0x00, 0x00, 0xf1, 0x09, 0x97, 0xc1,
540	0xef, 0x07, 0x01, 0x00, 0xf1, 0x09, 0xe7, 0x87,
541	0x00, 0x08, 0x1e, 0xc0, 0xe7, 0x87, 0x00, 0x08,
542	0x22, 0xc0, 0xe7, 0x67, 0xff, 0xf7, 0x22, 0xc0,
543	0xe7, 0x77, 0x00, 0x08, 0x20, 0xc0, 0x11, 0xc0,
544	0xe7, 0x67, 0xff, 0xf7, 0x1e, 0xc0, 0xe7, 0x87,
545	0x00, 0x08, 0x22, 0xc0, 0xe7, 0x67, 0xff, 0xf7,
546	0x22, 0xc0, 0xe7, 0x77, 0x00, 0x08, 0x20, 0xc0,
547	0x04, 0xc1, 0xe7, 0x87, 0x00, 0x08, 0x22, 0xc0,
548	0x97, 0xcf, 0xe7, 0x07, 0x01, 0x01, 0xf0, 0x09,
549	0xef, 0x57, 0x18, 0x00, 0xfe, 0xff, 0x97, 0xc2,
550	0xef, 0x07, 0x00, 0x00, 0xf0, 0x09, 0x97, 0xcf,
551	0xd7, 0x09, 0x00, 0xc0, 0x17, 0x00, 0x17, 0x02,
552	0x97, 0x02, 0xe7, 0x57, 0x00, 0x00, 0x7a, 0x08,
553	0x06, 0xc0, 0xc0, 0x09, 0x92, 0xc0, 0xc0, 0x77,
554	0x09, 0x02, 0x9f, 0xc1, 0xea, 0x06, 0x9f, 0xcf,
555	0x20, 0x08, 0xd7, 0x09, 0x0e, 0xc0, 0xe7, 0x07,
556	0x00, 0x00, 0x0e, 0xc0, 0x9f, 0xaf, 0x66, 0x0e,
557	0xe7, 0x05, 0x0e, 0xc0, 0x97, 0xcf, 0xd7, 0x09,
558	0x00, 0xc0, 0x17, 0x02, 0xc8, 0x09, 0xb0, 0xc0,
559	0xe7, 0x67, 0xfe, 0x7f, 0xb0, 0xc0, 0xc8, 0x77,
560	0x00, 0x20, 0x9f, 0xc1, 0x64, 0xeb, 0xe7, 0x57,
561	0x00, 0x00, 0xc8, 0x02, 0x9f, 0xc1, 0x80, 0xeb,
562	0xc8, 0x99, 0xca, 0x02, 0xc8, 0x67, 0x04, 0x00,
563	0x9f, 0xc1, 0x96, 0xeb, 0x9f, 0xcf, 0x4c, 0xeb,
564	0xe7, 0x07, 0x00, 0x00, 0xa6, 0xc0, 0xe7, 0x09,
565	0xb0, 0xc0, 0xc8, 0x02, 0xe7, 0x07, 0x03, 0x00,
566	0xb0, 0xc0, 0x97, 0xcf, 0xc0, 0x09, 0x86, 0x08,
567	0xc0, 0x37, 0x01, 0x00, 0x97, 0xc9, 0xc9, 0x09,
568	0x88, 0x08, 0x02, 0x00, 0x41, 0x90, 0x48, 0x02,
569	0xc9, 0x17, 0x06, 0x00, 0x9f, 0xaf, 0x64, 0x05,
570	0x9f, 0xa2, 0xd6, 0x0e, 0x02, 0xda, 0x77, 0xc1,
571	0x41, 0x60, 0x71, 0xc1, 0x97, 0xcf, 0x17, 0x02,
572	0x57, 0x02, 0x43, 0x04, 0x21, 0x04, 0xe0, 0x00,
573	0x43, 0x04, 0x21, 0x04, 0xe0, 0x00, 0x43, 0x04,
574	0x21, 0x04, 0xe0, 0x00, 0xc1, 0x07, 0x01, 0x00,
575	0xc9, 0x05, 0xc8, 0x05, 0x97, 0xcf,
576	0, 0
577};
578
579/* Firmware fixup (data?) segment */
580static unsigned char kue_fix_seg[] =
581{
582	/******************************************/
583	/* NOTE: B6/C3 is data header signature   */
584	/* 0xAA/0xBB is data length = total */
585	/* bytes - 7, 0xCC is type, 0xDD is */
586	/* interrupt to use.                */
587	/******************************************/
588	0xB6, 0xC3, 0xc9, 0x02, 0x03, 0x64,
589	0x02, 0x00, 0x08, 0x00, 0x24, 0x00, 0x2e, 0x00,
590	0x2c, 0x00, 0x3e, 0x00, 0x44, 0x00, 0x48, 0x00,
591	0x50, 0x00, 0x5c, 0x00, 0x60, 0x00, 0x66, 0x00,
592	0x6c, 0x00, 0x70, 0x00, 0x76, 0x00, 0x74, 0x00,
593	0x7a, 0x00, 0x7e, 0x00, 0x84, 0x00, 0x8a, 0x00,
594	0x8e, 0x00, 0x92, 0x00, 0x98, 0x00, 0x9c, 0x00,
595	0xa0, 0x00, 0xa8, 0x00, 0xae, 0x00, 0xb4, 0x00,
596	0xb2, 0x00, 0xba, 0x00, 0xbe, 0x00, 0xc4, 0x00,
597	0xc8, 0x00, 0xce, 0x00, 0xd2, 0x00, 0xd6, 0x00,
598	0xda, 0x00, 0xe2, 0x00, 0xe0, 0x00, 0xea, 0x00,
599	0xf2, 0x00, 0xfe, 0x00, 0x06, 0x01, 0x0c, 0x01,
600	0x1a, 0x01, 0x24, 0x01, 0x22, 0x01, 0x2a, 0x01,
601	0x30, 0x01, 0x36, 0x01, 0x3c, 0x01, 0x4e, 0x01,
602	0x52, 0x01, 0x58, 0x01, 0x5c, 0x01, 0x9c, 0x01,
603	0xb6, 0x01, 0xba, 0x01, 0xc0, 0x01, 0xca, 0x01,
604	0xd0, 0x01, 0xda, 0x01, 0xe2, 0x01, 0xea, 0x01,
605	0xf0, 0x01, 0x0a, 0x02, 0x0e, 0x02, 0x14, 0x02,
606	0x26, 0x02, 0x6c, 0x02, 0x8e, 0x02, 0x98, 0x02,
607	0xa0, 0x02, 0xa6, 0x02, 0xba, 0x02, 0xc6, 0x02,
608	0xce, 0x02, 0xe8, 0x02, 0xee, 0x02, 0xf4, 0x02,
609	0xf8, 0x02, 0x0a, 0x03, 0x10, 0x03, 0x1a, 0x03,
610	0x1e, 0x03, 0x2a, 0x03, 0x2e, 0x03, 0x34, 0x03,
611	0x3a, 0x03, 0x44, 0x03, 0x4e, 0x03, 0x5a, 0x03,
612	0x5e, 0x03, 0x6a, 0x03, 0x72, 0x03, 0x80, 0x03,
613	0x84, 0x03, 0x8c, 0x03, 0x94, 0x03, 0x98, 0x03,
614	0xa8, 0x03, 0xae, 0x03, 0xb4, 0x03, 0xba, 0x03,
615	0xce, 0x03, 0xcc, 0x03, 0xd6, 0x03, 0xdc, 0x03,
616	0xec, 0x03, 0xf0, 0x03, 0xfe, 0x03, 0x1c, 0x04,
617	0x30, 0x04, 0x38, 0x04, 0x3c, 0x04, 0x40, 0x04,
618	0x48, 0x04, 0x46, 0x04, 0x54, 0x04, 0x5e, 0x04,
619	0x64, 0x04, 0x74, 0x04, 0x78, 0x04, 0x84, 0x04,
620	0xd8, 0x04, 0xec, 0x04, 0xf0, 0x04, 0xf8, 0x04,
621	0xfe, 0x04, 0x1c, 0x05, 0x2c, 0x05, 0x30, 0x05,
622	0x4a, 0x05, 0x56, 0x05, 0x5a, 0x05, 0x88, 0x05,
623	0x8c, 0x05, 0x96, 0x05, 0x9a, 0x05, 0xa8, 0x05,
624	0xcc, 0x05, 0xd2, 0x05, 0xda, 0x05, 0xe0, 0x05,
625	0xe4, 0x05, 0xfc, 0x05, 0x06, 0x06, 0x14, 0x06,
626	0x12, 0x06, 0x1a, 0x06, 0x20, 0x06, 0x26, 0x06,
627	0x2e, 0x06, 0x34, 0x06, 0x48, 0x06, 0x52, 0x06,
628	0x64, 0x06, 0x86, 0x06, 0x90, 0x06, 0x9a, 0x06,
629	0xa0, 0x06, 0xac, 0x06, 0xaa, 0x06, 0xb2, 0x06,
630	0xb8, 0x06, 0xdc, 0x06, 0xda, 0x06, 0xe2, 0x06,
631	0xe8, 0x06, 0xf2, 0x06, 0xf8, 0x06, 0xfc, 0x06,
632	0x0a, 0x07, 0x10, 0x07, 0x14, 0x07, 0x24, 0x07,
633	0x2a, 0x07, 0x32, 0x07, 0x38, 0x07, 0xb2, 0x07,
634	0xba, 0x07, 0xde, 0x07, 0xe4, 0x07, 0x10, 0x08,
635	0x14, 0x08, 0x1a, 0x08, 0x1e, 0x08, 0x30, 0x08,
636	0x38, 0x08, 0x3c, 0x08, 0x44, 0x08, 0x42, 0x08,
637	0x48, 0x08, 0xc6, 0x08, 0xcc, 0x08, 0xd2, 0x08,
638	0xfe, 0x08, 0x04, 0x09, 0x0a, 0x09, 0x0e, 0x09,
639	0x12, 0x09, 0x16, 0x09, 0x20, 0x09, 0x24, 0x09,
640	0x28, 0x09, 0x32, 0x09, 0x46, 0x09, 0x4a, 0x09,
641	0x50, 0x09, 0x54, 0x09, 0x5a, 0x09, 0x60, 0x09,
642	0x7c, 0x09, 0x80, 0x09, 0xb8, 0x09, 0xbc, 0x09,
643	0xc0, 0x09, 0xc4, 0x09, 0xc8, 0x09, 0xcc, 0x09,
644	0xd0, 0x09, 0xd4, 0x09, 0xec, 0x09, 0xf4, 0x09,
645	0xf6, 0x09, 0xf8, 0x09, 0xfa, 0x09, 0xfc, 0x09,
646	0xfe, 0x09, 0x00, 0x0a, 0x02, 0x0a, 0x04, 0x0a,
647	0x06, 0x0a, 0x08, 0x0a, 0x0a, 0x0a, 0x0c, 0x0a,
648	0x10, 0x0a, 0x18, 0x0a, 0x24, 0x0a, 0x2c, 0x0a,
649	0x32, 0x0a, 0x3c, 0x0a, 0x46, 0x0a, 0x4c, 0x0a,
650	0x50, 0x0a, 0x54, 0x0a, 0x5a, 0x0a, 0x5e, 0x0a,
651	0x66, 0x0a, 0x6c, 0x0a, 0x72, 0x0a, 0x78, 0x0a,
652	0x7e, 0x0a, 0x7c, 0x0a, 0x82, 0x0a, 0x8c, 0x0a,
653	0x92, 0x0a, 0x90, 0x0a, 0x98, 0x0a, 0x96, 0x0a,
654	0xa2, 0x0a, 0xb2, 0x0a, 0xb6, 0x0a, 0xc4, 0x0a,
655	0xe2, 0x0a, 0xe0, 0x0a, 0xe8, 0x0a, 0xee, 0x0a,
656	0xf4, 0x0a, 0xf2, 0x0a, 0xf8, 0x0a, 0x0c, 0x0b,
657	0x1a, 0x0b, 0x24, 0x0b, 0x40, 0x0b, 0x44, 0x0b,
658	0x48, 0x0b, 0x4e, 0x0b, 0x4c, 0x0b, 0x52, 0x0b,
659	0x68, 0x0b, 0x6c, 0x0b, 0x70, 0x0b, 0x76, 0x0b,
660	0x88, 0x0b, 0x92, 0x0b, 0xbe, 0x0b, 0xca, 0x0b,
661	0xce, 0x0b, 0xde, 0x0b, 0xf4, 0x0b, 0xfa, 0x0b,
662	0x00, 0x0c, 0x24, 0x0c, 0x28, 0x0c, 0x30, 0x0c,
663	0x36, 0x0c, 0x3c, 0x0c, 0x40, 0x0c, 0x4a, 0x0c,
664	0x50, 0x0c, 0x58, 0x0c, 0x56, 0x0c, 0x5c, 0x0c,
665	0x60, 0x0c, 0x64, 0x0c, 0x80, 0x0c, 0x94, 0x0c,
666	0x9a, 0x0c, 0x98, 0x0c, 0x9e, 0x0c, 0xa4, 0x0c,
667	0xa2, 0x0c, 0xa8, 0x0c, 0xac, 0x0c, 0xb0, 0x0c,
668	0xb4, 0x0c, 0xb8, 0x0c, 0xbc, 0x0c, 0xce, 0x0c,
669	0xd2, 0x0c, 0xd6, 0x0c, 0xf4, 0x0c, 0xfa, 0x0c,
670	0x00, 0x0d, 0xfe, 0x0c, 0x06, 0x0d, 0x0e, 0x0d,
671	0x0c, 0x0d, 0x16, 0x0d, 0x1c, 0x0d, 0x22, 0x0d,
672	0x20, 0x0d, 0x30, 0x0d, 0x7e, 0x0d, 0x82, 0x0d,
673	0x9a, 0x0d, 0xa0, 0x0d, 0xa6, 0x0d, 0xb0, 0x0d,
674	0xb8, 0x0d, 0xc2, 0x0d, 0xc8, 0x0d, 0xce, 0x0d,
675	0xd4, 0x0d, 0xdc, 0x0d, 0x1e, 0x0e, 0x2c, 0x0e,
676	0x3e, 0x0e, 0x4c, 0x0e, 0x50, 0x0e, 0x5e, 0x0e,
677	0xae, 0x0e, 0xb8, 0x0e, 0xc6, 0x0e, 0xca, 0x0e,
678	0, 0
679};
680
681/* Fixup command. */
682#define	KUE_TRIGCMD_OFFSET	5
683static unsigned char kue_trig_seg[] = {
684	0xb6, 0xc3, 0x01, 0x00, 0x06, 0x64, 0x00, 0x00
685};
686