1 /*
2     TiMidity++ -- MIDI to WAVE converter and player
3     Copyright (C) 1999-2004 Masanao Izumo <iz@onicos.co.jp>
4     Copyright (C) 1995 Tuukka Toivonen <tt@cgs.fi>
5 
6     This program is free software; you can redistribute it and/or modify
7     it under the terms of the GNU General Public License as published by
8     the Free Software Foundation; either version 2 of the License, or
9     (at your option) any later version.
10 
11     This program is distributed in the hope that it will be useful,
12     but WITHOUT ANY WARRANTY; without even the implied warranty of
13     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
14     GNU General Public License for more details.
15 
16     You should have received a copy of the GNU General Public License
17     along with this program; if not, write to the Free Software
18     Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
19 
20     The 8-bit uLaw to 16-bit PCM and the 13-bit-PCM to 8-bit uLaw
21     tables were lifted from the rsynth-2.0 sources.  The README says:
22 
23     This is a text to speech system produced by integrating various pieces
24     of code and tables of data, which are all (I believe) in the public domain.
25 
26     The bulk of the intergration was done by myself, that is Nick Ing-Simmons.
27     I can be reached via my employer at nik@tiuk.ti.com.
28 */
29 
30 #ifdef HAVE_CONFIG_H
31 #include "config.h"
32 #endif /* HAVE_CONFIG_H */
33 #include <stdio.h>
34 #include <math.h>
35 #include "timidity.h"
36 #include "common.h"
37 #include "mt19937ar.h"
38 #include "tables.h"
39 
40 int32 freq_table[128];
41 int32 freq_table_zapped[128];
42 int32 freq_table_tuning[128][128];
43 int32 freq_table_pytha[24][128];
44 int32 freq_table_meantone[48][128];
45 int32 freq_table_pureint[48][128];
46 int32 freq_table_user[4][48][128];
47 
init_freq_table(void)48 void init_freq_table(void)
49 {
50 	int i;
51 
52 	for (i = 0; i < 128; i++) {
53 		freq_table[i] = 440 * pow(2.0, (i - 69) / 12.0) * 1000 + 0.5;
54 		freq_table_zapped[i] = freq_table[i];
55 	}
56 }
57 
init_freq_table_tuning(void)58 void init_freq_table_tuning(void)
59 {
60 	int p, i;
61 	double f;
62 
63 	for (i = 0; i < 128; i++)
64 			freq_table_tuning[0][i] = freq_table_zapped[i];
65 	for (i = 0; i < 128; i++) {
66 		f = 440 * pow(2.0, (i - 69) / 12.0);
67 		for (p = 1; p < 128; p++)
68 			freq_table_tuning[p][i] = f * 1000 + 0.5;
69 	}
70 }
71 
init_freq_table_pytha(void)72 void init_freq_table_pytha(void)
73 {
74 	int i, j, k, l;
75 	double f;
76 	static const double major_ratio[] = {
77 		  1.0 /  1, 256.0 / 243,   9.0 /   8,  32.0 /  27,
78 		 81.0 / 64,   4.0 /   3, 729.0 / 512,   3.0 /   2,
79 		128.0 / 81,  27.0 /  16,  16.0 /   9, 243.0 / 128
80 	};
81 	static const double minor_ratio[] = {
82 		   1.0 /    1, 2187.0 / 2048,   9.0 /   8, 19683.0 / 16384,
83 		  81.0 /   64,    4.0 /    3, 729.0 / 512,     3.0 /     2,
84 		6561.0 / 4096,   27.0 /   16,  16.0 /   9,   243.0 /   128
85 	};
86 
87 	for (i = 0; i < 12; i++)
88 		for (j = -1; j < 11; j++) {
89 			f = 440 * pow(2.0, (i - 9) / 12.0 + j - 5);
90 			for (k = 0; k < 12; k++) {
91 				l = i + j * 12 + k;
92 				if (l < 0 || l >= 128)
93 					continue;
94 				freq_table_pytha[i][l] = f * major_ratio[k] * 1000 + 0.5;
95 				freq_table_pytha[i + 12][l] = f * minor_ratio[k] * 1000 + 0.5;
96 			}
97 		}
98 }
99 
init_freq_table_meantone(void)100 void init_freq_table_meantone(void)
101 {
102 	int i, j, k, l;
103 	double f;
104 	static double major_ratio[12], minor_ratio[12];
105 	static const double sc = 81.0 / 80;
106 
107 	major_ratio[0] = 1;
108 	major_ratio[1] = 8 / pow(5.0, 5.0 / 4);
109 	major_ratio[2] = pow(5.0, 1.0 / 2) / 2;
110 	major_ratio[3] = 4 / pow(5.0, 3.0 / 4);
111 	major_ratio[4] = 5.0 / 4;
112 	major_ratio[5] = 2 / pow(5.0, 1.0 / 4);
113 	major_ratio[6] = pow(5.0, 3.0 / 2) / 8;
114 	major_ratio[7] = pow(5.0, 1.0 / 4);
115 	major_ratio[8] = 8.0 / 5;
116 	major_ratio[9] = pow(5.0, 3.0 / 4) / 2;
117 	major_ratio[10] = 4 / pow(5.0, 1.0 / 2);
118 	major_ratio[11] = pow(5.0, 5.0 / 4) / 4;
119 	minor_ratio[0] = 1;
120 	minor_ratio[1] = pow(10.0 / 3, 7.0 / 3) / 16;
121 	minor_ratio[2] = pow(10.0 / 3, 2.0 / 3) / 2;
122 	minor_ratio[3] = 125.0 / 108;
123 	minor_ratio[4] = pow(10.0 / 3, 4.0 / 3) / 4;
124 	minor_ratio[5] = 2 / pow(10.0 / 3, 1.0 / 3);
125 	minor_ratio[6] = 25.0 / 18;
126 	minor_ratio[7] = pow(10.0 / 3, 1.0 / 3);
127 	minor_ratio[8] = pow(10.0 / 3, 8.0 / 3) / 16;
128 	minor_ratio[9] = 5.0 / 3;
129 	minor_ratio[10] = 4 / pow(10.0 / 3, 2.0 / 3);
130 	minor_ratio[11] = pow(10.0 / 3, 5.0 / 3) / 4;
131 	for (i = 0; i < 12; i++)
132 		for (j = -1; j < 11; j++) {
133 			f = 440 * pow(2.0, (i - 9) / 12.0 + j - 5);
134 			for (k = 0; k < 12; k++) {
135 				l = i + j * 12 + k;
136 				if (l < 0 || l >= 128)
137 					continue;
138 				freq_table_meantone[i][l] =
139 						f * major_ratio[k] * 1000 + 0.5;
140 				freq_table_meantone[i + 12][l] =
141 						f * minor_ratio[k] * sc * 1000 + 0.5;
142 				freq_table_meantone[i + 24][l] =
143 						f * minor_ratio[k] * 1000 + 0.5;
144 				freq_table_meantone[i + 36][l] =
145 						f * major_ratio[k] * sc * 1000 + 0.5;
146 			}
147 		}
148 }
149 
init_freq_table_pureint(void)150 void init_freq_table_pureint(void)
151 {
152 	int i, j, k, l;
153 	double f;
154 	static const double major_ratio[] = {
155 		 1.0 /  1, 16.0 / 15, 9.0 / 8, 6.0 / 5, 5.0 / 4,  4.0 / 3,
156 		45.0 / 32,  3.0 /  2, 8.0 / 5, 5.0 / 3, 9.0 / 5, 15.0 / 8
157 	};
158 	static const double minor_ratio[] = {
159 		 1.0 /  1, 25.0 / 24, 10.0 /  9, 75.0 / 64,  5.0 / 4,  4.0 / 3,
160 		25.0 / 18,  3.0 /  2, 25.0 / 16,  5.0 /  3, 16.0 / 9, 15.0 / 8
161 	};
162 	static const double sc = 81.0 / 80;
163 
164 	for (i = 0; i < 12; i++)
165 		for (j = -1; j < 11; j++) {
166 			f = 440 * pow(2.0, (i - 9) / 12.0 + j - 5);
167 			for (k = 0; k < 12; k++) {
168 				l = i + j * 12 + k;
169 				if (l < 0 || l >= 128)
170 					continue;
171 				freq_table_pureint[i][l] =
172 						f * major_ratio[k] * 1000 + 0.5;
173 				freq_table_pureint[i + 12][l] =
174 						f * minor_ratio[k] * sc * 1000 + 0.5;
175 				freq_table_pureint[i + 24][l] =
176 						f * minor_ratio[k] * 1000 + 0.5;
177 				freq_table_pureint[i + 36][l] =
178 						f * major_ratio[k] * sc * 1000 + 0.5;
179 			}
180 		}
181 }
182 
init_freq_table_user(void)183 void init_freq_table_user(void)
184 {
185 	int p, i, j, k, l;
186 	double f;
187 
188 	for (p = 0; p < 4; p++)
189 		for (i = 0; i < 12; i++)
190 			for (j = -1; j < 11; j++) {
191 				f = 440 * pow(2.0, (i - 9) / 12.0 + j - 5);
192 				for (k = 0; k < 12; k++) {
193 					l = i + j * 12 + k;
194 					if (l < 0 || l >= 128)
195 						continue;
196 					freq_table_user[p][i][l] = f * 1000 + 0.5;
197 					freq_table_user[p][i + 12][l] = f * 1000 + 0.5;
198 					freq_table_user[p][i + 24][l] = f * 1000 + 0.5;
199 					freq_table_user[p][i + 36][l] = f * 1000 + 0.5;
200 				}
201 			}
202 }
203 
204 /* v=2.^((x/127-1) * 6) */
205 FLOAT_T def_vol_table[1024];
206 
init_def_vol_table(void)207 void init_def_vol_table(void)
208 {
209 	int i;
210 
211 	for (i = 0; i < 1024; i++)
212 		def_vol_table[i] = pow(2.0f,((double)i / 1023.0 - 1) * 6);
213 }
214 
215 /* v=2.^((x/127-1) * 8) */
216 FLOAT_T gs_vol_table[1024];
217 
init_gs_vol_table(void)218 void init_gs_vol_table(void)
219 {
220 	int i;
221 
222 	for (i = 0; i < 1024; i++)
223 		gs_vol_table[i] = pow(2.0f,((double)i / 1023.0 - 1) * 8);
224 }
225 
226 FLOAT_T *xg_vol_table = gs_vol_table;
227 FLOAT_T *vol_table = def_vol_table;
228 
229 FLOAT_T bend_fine[256];
230 FLOAT_T bend_coarse[128];
231 
init_bend_fine(void)232 void init_bend_fine(void)
233 {
234 	int i;
235 
236 	for (i = 0; i < 256; i++)
237 		bend_fine[i] = pow(2.0, i / 12.0 / 256);
238 }
239 
init_bend_coarse(void)240 void init_bend_coarse(void)
241 {
242 	int i;
243 
244 	for (i = 0; i < 128; i++)
245 		bend_coarse[i] = pow(2.0, i / 12.0);
246 }
247 
248 /*
249  * midi_time_table(x + 16y) = midi_time_table(x) * (2^y)
250  * midi_time_table(64) = 1
251  * then,
252  * midi_time_table(x) := (2^(x/16))/16
253  */
254 FLOAT_T midi_time_table[128] =
255 {
256     0.06250, 0.06527, 0.06816, 0.07117, 0.07433, 0.07762, 0.08105, 0.08464,
257     0.08839, 0.09230, 0.09639, 0.10066, 0.10511, 0.10977, 0.11463, 0.11970,
258     0.12500, 0.13053, 0.13631, 0.14235, 0.14865, 0.15523, 0.16210, 0.16928,
259     0.17678, 0.18460, 0.19278, 0.20131, 0.21022, 0.21953, 0.22925, 0.23940,
260     0.25000, 0.26107, 0.27263, 0.28470, 0.29730, 0.31046, 0.32421, 0.33856,
261     0.35355, 0.36921, 0.38555, 0.40262, 0.42045, 0.43906, 0.45850, 0.47880,
262     0.50000, 0.52214, 0.54525, 0.56939, 0.59460, 0.62093, 0.64842, 0.67713,
263     0.70711, 0.73841, 0.77111, 0.80525, 0.84090, 0.87813, 0.91700, 0.95760,
264     1.00000, 1.04427, 1.09051, 1.13879, 1.18921, 1.24186, 1.29684, 1.35426,
265     1.41421, 1.47683, 1.54221, 1.61049, 1.68179, 1.75625, 1.83401, 1.91521,
266     2.00000, 2.08855, 2.18102, 2.27758, 2.37841, 2.48372, 2.59368, 2.70851,
267     2.82843, 2.95365, 3.08442, 3.22098, 3.36359, 3.51250, 3.66802, 3.83041,
268     4.00000, 4.17710, 4.36203, 4.55515, 4.75683, 4.96743, 5.18736, 5.41702,
269     5.65685, 5.90730, 6.16884, 6.44196, 6.72717, 7.02501, 7.33603, 7.66083,
270     8.00000, 8.35419, 8.72406, 9.11031, 9.51366, 9.93486,10.37472,10.83404,
271    11.31371,11.81461,12.33769,12.88392,13.45434,14.05002,14.67206,15.32165
272 };
273 /*
274  * midi_time_table2(x) := 2^(x/16/128)  (for lsb tunning)
275  */
276 FLOAT_T midi_time_table2[128] =
277 {
278     1.00000, 1.00034, 1.00068, 1.00102, 1.00135, 1.00169, 1.00203, 1.00237,
279     1.00271, 1.00305, 1.00339, 1.00373, 1.00407, 1.00441, 1.00475, 1.00509,
280     1.00543, 1.00577, 1.00611, 1.00645, 1.00679, 1.00713, 1.00747, 1.00781,
281     1.00816, 1.00850, 1.00884, 1.00918, 1.00952, 1.00986, 1.01021, 1.01055,
282     1.01089, 1.01123, 1.01157, 1.01192, 1.01226, 1.01260, 1.01294, 1.01329,
283     1.01363, 1.01397, 1.01432, 1.01466, 1.01500, 1.01535, 1.01569, 1.01603,
284     1.01638, 1.01672, 1.01707, 1.01741, 1.01776, 1.01810, 1.01844, 1.01879,
285     1.01913, 1.01948, 1.01982, 1.02017, 1.02051, 1.02086, 1.02121, 1.02155,
286     1.02190, 1.02224, 1.02259, 1.02294, 1.02328, 1.02363, 1.02397, 1.02432,
287     1.02467, 1.02501, 1.02536, 1.02571, 1.02606, 1.02640, 1.02675, 1.02710,
288     1.02745, 1.02779, 1.02814, 1.02849, 1.02884, 1.02919, 1.02953, 1.02988,
289     1.03023, 1.03058, 1.03093, 1.03128, 1.03163, 1.03198, 1.03233, 1.03268,
290     1.03302, 1.03337, 1.03372, 1.03407, 1.03442, 1.03477, 1.03512, 1.03548,
291     1.03583, 1.03618, 1.03653, 1.03688, 1.03723, 1.03758, 1.03793, 1.03828,
292     1.03863, 1.03899, 1.03934, 1.03969, 1.04004, 1.04039, 1.04075, 1.04110,
293     1.04145, 1.04180, 1.04216, 1.04251, 1.04286, 1.04321, 1.04357, 1.04392
294 };
295 
296 #ifdef LOOKUP_SINE
297 static FLOAT_T sine_table[257]=
298 {
299  0.0, 0.0061358846491544753, 0.012271538285719925, 0.01840672990580482,
300  0.024541228522912288, 0.030674803176636626, 0.036807222941358832, 0.04293825693494082,
301  0.049067674327418015, 0.055195244349689934, 0.061320736302208578, 0.067443919563664051,
302  0.073564563599667426, 0.079682437971430126, 0.085797312344439894, 0.091908956497132724,
303  0.098017140329560604, 0.10412163387205459, 0.11022220729388306, 0.11631863091190475,
304  0.1224106751992162, 0.12849811079379317, 0.13458070850712617, 0.14065823933284921,
305  0.14673047445536175, 0.15279718525844344, 0.15885814333386145, 0.16491312048996989,
306  0.17096188876030122, 0.17700422041214875, 0.18303988795514095, 0.18906866414980619,
307  0.19509032201612825, 0.2011046348420919, 0.20711137619221856, 0.21311031991609136,
308  0.2191012401568698, 0.22508391135979283, 0.23105810828067111, 0.2370236059943672,
309  0.24298017990326387, 0.24892760574572015, 0.25486565960451457, 0.26079411791527551,
310  0.26671275747489837, 0.27262135544994898, 0.27851968938505306, 0.28440753721127188,
311  0.29028467725446233, 0.29615088824362379, 0.30200594931922808, 0.30784964004153487,
312  0.31368174039889152, 0.31950203081601569, 0.32531029216226293, 0.33110630575987643,
313  0.33688985339222005, 0.34266071731199438, 0.34841868024943456, 0.35416352542049034,
314  0.35989503653498811, 0.36561299780477385, 0.37131719395183754, 0.37700741021641826,
315  0.38268343236508978, 0.38834504669882625, 0.3939920400610481, 0.39962419984564679,
316  0.40524131400498986, 0.41084317105790391, 0.41642956009763715, 0.42200027079979968,
317  0.42755509343028208, 0.43309381885315196, 0.43861623853852766, 0.4441221445704292,
318  0.44961132965460654, 0.45508358712634384, 0.46053871095824001, 0.46597649576796618,
319  0.47139673682599764, 0.47679923006332209, 0.48218377207912272, 0.487550160148436,
320  0.49289819222978404, 0.49822766697278187, 0.50353838372571758, 0.50883014254310699,
321  0.51410274419322166, 0.51935599016558964, 0.52458968267846895, 0.52980362468629461,
322  0.53499761988709715, 0.54017147272989285, 0.54532498842204646, 0.55045797293660481,
323  0.55557023301960218, 0.56066157619733603, 0.56573181078361312, 0.57078074588696726,
324  0.57580819141784534, 0.58081395809576453, 0.58579785745643886, 0.59075970185887416,
325  0.59569930449243336, 0.60061647938386897, 0.60551104140432555, 0.61038280627630948,
326  0.61523159058062682, 0.6200572117632891, 0.62485948814238634, 0.62963823891492698,
327  0.63439328416364549, 0.63912444486377573, 0.64383154288979139, 0.64851440102211244,
328  0.65317284295377676, 0.65780669329707864, 0.66241577759017178, 0.66699992230363747,
329  0.67155895484701833, 0.67609270357531592, 0.68060099779545302, 0.68508366777270036,
330  0.68954054473706683, 0.693971460889654, 0.69837624940897292, 0.7027547444572253,
331  0.70710678118654746, 0.71143219574521643, 0.71573082528381859, 0.72000250796138165,
332  0.72424708295146689, 0.7284643904482252, 0.73265427167241282, 0.73681656887736979,
333  0.74095112535495911, 0.74505778544146595, 0.74913639452345926, 0.75318679904361241,
334  0.75720884650648446, 0.76120238548426178, 0.76516726562245896, 0.76910333764557959,
335  0.77301045336273699, 0.77688846567323244, 0.78073722857209438, 0.78455659715557524,
336  0.78834642762660623, 0.79210657730021239, 0.79583690460888346, 0.79953726910790501,
337  0.80320753148064483, 0.80684755354379922, 0.81045719825259477, 0.8140363297059483,
338  0.81758481315158371, 0.82110251499110465, 0.82458930278502529, 0.8280450452577558,
339  0.83146961230254524, 0.83486287498638001, 0.83822470555483797, 0.84155497743689833,
340  0.84485356524970701, 0.84812034480329712, 0.8513551931052652, 0.85455798836540053,
341  0.85772861000027212, 0.86086693863776731, 0.8639728561215867, 0.86704624551569265,
342  0.87008699110871135, 0.87309497841829009, 0.8760700941954066, 0.87901222642863341,
343  0.88192126434835494, 0.88479709843093779, 0.88763962040285393, 0.89044872324475788,
344  0.89322430119551532, 0.89596624975618511, 0.89867446569395382, 0.90134884704602203,
345  0.90398929312344334, 0.90659570451491533, 0.90916798309052227, 0.91170603200542988,
346  0.91420975570353069, 0.9166790599210427, 0.91911385169005777, 0.9215140393420419,
347  0.92387953251128674, 0.92621024213831127, 0.92850608047321548, 0.93076696107898371,
348  0.93299279883473885, 0.9351835099389475, 0.93733901191257496, 0.93945922360218992,
349  0.94154406518302081, 0.94359345816196039, 0.94560732538052128, 0.94758559101774109,
350  0.94952818059303667, 0.95143502096900834, 0.95330604035419375, 0.95514116830577067,
351  0.95694033573220894, 0.9587034748958716, 0.96043051941556579, 0.96212140426904158,
352  0.96377606579543984, 0.9653944416976894, 0.96697647104485207, 0.96852209427441727,
353  0.97003125319454397, 0.97150389098625178, 0.97293995220556007, 0.97433938278557586,
354  0.97570213003852857, 0.97702814265775439, 0.97831737071962765, 0.97956976568544052,
355  0.98078528040323043, 0.98196386910955524, 0.98310548743121629, 0.98421009238692903,
356  0.98527764238894122, 0.98630809724459867, 0.98730141815785843, 0.98825756773074946,
357  0.98917650996478101, 0.99005821026229712, 0.99090263542778001, 0.99170975366909953,
358  0.99247953459870997, 0.9932119492347945, 0.99390697000235606, 0.99456457073425542,
359  0.99518472667219682, 0.99576741446765982, 0.996312612182778, 0.99682029929116567,
360  0.99729045667869021, 0.99772306664419164, 0.99811811290014918, 0.99847558057329477,
361  0.99879545620517241, 0.99907772775264536, 0.99932238458834954, 0.99952941750109314,
362  0.99969881869620425, 0.9998305817958234, 0.9999247018391445, 0.99998117528260111,
363  1.0
364 };
365 
366 /*
367    looks up sin(2 * Pi * x / 1024)
368 */
lookup_sine(int x)369 FLOAT_T lookup_sine(int x)
370 {
371   int xx = x & 0xFF;
372   switch ((x>>8) & 0x03)
373     {
374     default: /* just to shut gcc up. */
375     case 0:
376       return sine_table[xx];
377     case 1:
378       return sine_table[0x100 - xx];
379     case 2:
380       return -sine_table[xx];
381     case 3:
382       return -sine_table[0x100 - xx];
383     }
384 }
385 #endif /* LOOKUP_SINE */
386 
387 static FLOAT_T triangular_table[257];
388 
init_triangular_table(void)389 void init_triangular_table(void)
390 {
391 	int i;
392 	unsigned long init[4]={0x123, 0x234, 0x345, 0x456}, length=4;
393     init_by_array(init, length);
394 
395 	for (i = 0; i < 257; i++) {
396 		triangular_table[i] = (double)(i/* - (genrand_int32() % 1)*/) / 256.0;
397 		if(triangular_table[i] < 0) {triangular_table[i] = 0;}
398 		else if(triangular_table[i] > 1.0) {triangular_table[i] = 1.0;}
399 	}
400 	triangular_table[0] = 0.0;
401 	triangular_table[256] = 1.0;
402 }
403 
lookup_triangular(int x)404 FLOAT_T lookup_triangular(int x)
405 {
406   int xx = x & 0xFF;
407   switch ((x>>8) & 0x03)
408     {
409     default:
410     case 0:
411       return triangular_table[xx];
412     case 1:
413       return triangular_table[0x100 - xx];
414     case 2:
415       return -triangular_table[xx];
416     case 3:
417       return -triangular_table[0x100 - xx];
418     }
419 }
420 
421 #ifdef LOOKUP_HACK
422 int16 _u2l[] =
423 {
424  -32256, -31228, -30200, -29172, -28143, -27115, -26087, -25059,
425  -24031, -23002, -21974, -20946, -19918, -18889, -17861, -16833,
426  -16062, -15548, -15033, -14519, -14005, -13491, -12977, -12463,
427  -11949, -11435, -10920, -10406, -9892, -9378, -8864, -8350,
428  -7964, -7707, -7450, -7193, -6936, -6679, -6422, -6165,
429  -5908, -5651, -5394, -5137, -4880, -4623, -4365, -4108,
430  -3916, -3787, -3659, -3530, -3402, -3273, -3144, -3016,
431  -2887, -2759, -2630, -2502, -2373, -2245, -2116, -1988,
432  -1891, -1827, -1763, -1698, -1634, -1570, -1506, -1441,
433  -1377, -1313, -1249, -1184, -1120, -1056, -992, -927,
434  -879, -847, -815, -783, -751, -718, -686, -654,
435  -622, -590, -558, -526, -494, -461, -429, -397,
436  -373, -357, -341, -325, -309, -293, -277, -261,
437  -245, -228, -212, -196, -180, -164, -148, -132,
438  -120, -112, -104, -96, -88, -80, -72, -64,
439  -56, -48, -40, -32, -24, -16, -8, 0,
440  32256, 31228, 30200, 29172, 28143, 27115, 26087, 25059,
441  24031, 23002, 21974, 20946, 19918, 18889, 17861, 16833,
442  16062, 15548, 15033, 14519, 14005, 13491, 12977, 12463,
443  11949, 11435, 10920, 10406, 9892, 9378, 8864, 8350,
444  7964, 7707, 7450, 7193, 6936, 6679, 6422, 6165,
445  5908, 5651, 5394, 5137, 4880, 4623, 4365, 4108,
446  3916, 3787, 3659, 3530, 3402, 3273, 3144, 3016,
447  2887, 2759, 2630, 2502, 2373, 2245, 2116, 1988,
448  1891, 1827, 1763, 1698, 1634, 1570, 1506, 1441,
449  1377, 1313, 1249, 1184, 1120, 1056, 992, 927,
450  879, 847, 815, 783, 751, 718, 686, 654,
451  622, 590, 558, 526, 494, 461, 429, 397,
452  373, 357, 341, 325, 309, 293, 277, 261,
453  245, 228, 212, 196, 180, 164, 148, 132,
454  120, 112, 104, 96, 88, 80, 72, 64,
455  56, 48, 40, 32, 24, 16, 8, 0
456 };
457 
458 int32 *mixup;
459 #ifdef LOOKUP_INTERPOLATION
460 int8 *iplookup;
461 #endif
462 
463 #endif
464 
init_tables(void)465 void init_tables(void)
466 {
467 #ifdef LOOKUP_HACK
468   int i,j,v;
469   mixup = (int32 *)safe_malloc(1<<(7+8+2)); /* Give your cache a workout! */
470 
471   for (i=0; i<128; i++)
472     {
473       v=_u2l[255-i];
474       for (j=-128; j<128; j++)
475 	{
476 	  mixup[ ((i & 0x7F)<<8) | (j & 0xFF)] =
477 	    (v * j) << MIXUP_SHIFT;
478 	}
479     }
480 
481 #ifdef LOOKUP_INTERPOLATION
482   iplookup = (int8 *)safe_malloc(1<<(9+5));
483   for (i=-256; i<256; i++)
484     for(j=0; j<32; j++)
485       iplookup[((i<<5) & 0x3FE0) | j] = (i * j)>>5;
486   /* I don't know. Quantum bits? Magick? */
487 #endif
488 
489 #endif
490 	init_triangular_table();
491 }
492 
493 #ifdef LOOKUP_HACK
494 uint8 _l2u_[] =
495 {
496  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
497  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
498  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
499  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
500  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
501  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
502  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
503  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
504  0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01,
505  0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01,
506  0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01,
507  0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01,
508  0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01,
509  0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01,
510  0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01,
511  0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01,
512  0x01, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02,
513  0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02,
514  0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02,
515  0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02,
516  0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02,
517  0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02,
518  0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02,
519  0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02,
520  0x02, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03,
521  0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03,
522  0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03,
523  0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03,
524  0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03,
525  0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03,
526  0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03,
527  0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03,
528  0x03, 0x03, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04,
529  0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04,
530  0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04,
531  0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04,
532  0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04,
533  0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04,
534  0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04,
535  0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04,
536  0x04, 0x04, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05,
537  0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05,
538  0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05,
539  0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05,
540  0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05,
541  0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05,
542  0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05,
543  0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05,
544  0x05, 0x05, 0x05, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06,
545  0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06,
546  0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06,
547  0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06,
548  0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06,
549  0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06,
550  0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06,
551  0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06,
552  0x06, 0x06, 0x06, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07,
553  0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07,
554  0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07,
555  0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07,
556  0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07,
557  0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07,
558  0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07,
559  0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07,
560  0x07, 0x07, 0x07, 0x07, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08,
561  0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08,
562  0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08,
563  0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08,
564  0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08,
565  0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08,
566  0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08,
567  0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08,
568  0x08, 0x08, 0x08, 0x08, 0x08, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09,
569  0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09,
570  0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09,
571  0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09,
572  0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09,
573  0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09,
574  0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09,
575  0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09,
576  0x09, 0x09, 0x09, 0x09, 0x09, 0x0A, 0x0A, 0x0A, 0x0A, 0x0A, 0x0A, 0x0A, 0x0A, 0x0A, 0x0A, 0x0A,
577  0x0A, 0x0A, 0x0A, 0x0A, 0x0A, 0x0A, 0x0A, 0x0A, 0x0A, 0x0A, 0x0A, 0x0A, 0x0A, 0x0A, 0x0A, 0x0A,
578  0x0A, 0x0A, 0x0A, 0x0A, 0x0A, 0x0A, 0x0A, 0x0A, 0x0A, 0x0A, 0x0A, 0x0A, 0x0A, 0x0A, 0x0A, 0x0A,
579  0x0A, 0x0A, 0x0A, 0x0A, 0x0A, 0x0A, 0x0A, 0x0A, 0x0A, 0x0A, 0x0A, 0x0A, 0x0A, 0x0A, 0x0A, 0x0A,
580  0x0A, 0x0A, 0x0A, 0x0A, 0x0A, 0x0A, 0x0A, 0x0A, 0x0A, 0x0A, 0x0A, 0x0A, 0x0A, 0x0A, 0x0A, 0x0A,
581  0x0A, 0x0A, 0x0A, 0x0A, 0x0A, 0x0A, 0x0A, 0x0A, 0x0A, 0x0A, 0x0A, 0x0A, 0x0A, 0x0A, 0x0A, 0x0A,
582  0x0A, 0x0A, 0x0A, 0x0A, 0x0A, 0x0A, 0x0A, 0x0A, 0x0A, 0x0A, 0x0A, 0x0A, 0x0A, 0x0A, 0x0A, 0x0A,
583  0x0A, 0x0A, 0x0A, 0x0A, 0x0A, 0x0A, 0x0A, 0x0A, 0x0A, 0x0A, 0x0A, 0x0A, 0x0A, 0x0A, 0x0A, 0x0A,
584  0x0A, 0x0A, 0x0A, 0x0A, 0x0A, 0x0A, 0x0B, 0x0B, 0x0B, 0x0B, 0x0B, 0x0B, 0x0B, 0x0B, 0x0B, 0x0B,
585  0x0B, 0x0B, 0x0B, 0x0B, 0x0B, 0x0B, 0x0B, 0x0B, 0x0B, 0x0B, 0x0B, 0x0B, 0x0B, 0x0B, 0x0B, 0x0B,
586  0x0B, 0x0B, 0x0B, 0x0B, 0x0B, 0x0B, 0x0B, 0x0B, 0x0B, 0x0B, 0x0B, 0x0B, 0x0B, 0x0B, 0x0B, 0x0B,
587  0x0B, 0x0B, 0x0B, 0x0B, 0x0B, 0x0B, 0x0B, 0x0B, 0x0B, 0x0B, 0x0B, 0x0B, 0x0B, 0x0B, 0x0B, 0x0B,
588  0x0B, 0x0B, 0x0B, 0x0B, 0x0B, 0x0B, 0x0B, 0x0B, 0x0B, 0x0B, 0x0B, 0x0B, 0x0B, 0x0B, 0x0B, 0x0B,
589  0x0B, 0x0B, 0x0B, 0x0B, 0x0B, 0x0B, 0x0B, 0x0B, 0x0B, 0x0B, 0x0B, 0x0B, 0x0B, 0x0B, 0x0B, 0x0B,
590  0x0B, 0x0B, 0x0B, 0x0B, 0x0B, 0x0B, 0x0B, 0x0B, 0x0B, 0x0B, 0x0B, 0x0B, 0x0B, 0x0B, 0x0B, 0x0B,
591  0x0B, 0x0B, 0x0B, 0x0B, 0x0B, 0x0B, 0x0B, 0x0B, 0x0B, 0x0B, 0x0B, 0x0B, 0x0B, 0x0B, 0x0B, 0x0B,
592  0x0B, 0x0B, 0x0B, 0x0B, 0x0B, 0x0B, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C,
593  0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C,
594  0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C,
595  0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C,
596  0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C,
597  0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C,
598  0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C,
599  0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C,
600  0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D,
601  0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D,
602  0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D,
603  0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D,
604  0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D,
605  0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D,
606  0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D,
607  0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D,
608  0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E,
609  0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E,
610  0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E,
611  0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E,
612  0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E,
613  0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E,
614  0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E,
615  0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E,
616  0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F,
617  0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F,
618  0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F,
619  0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F,
620  0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F,
621  0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F,
622  0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F,
623  0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F,
624  0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10,
625  0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10,
626  0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10,
627  0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10,
628  0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11,
629  0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11,
630  0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11,
631  0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11,
632  0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12,
633  0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12,
634  0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12,
635  0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12,
636  0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x13, 0x13, 0x13, 0x13, 0x13, 0x13, 0x13,
637  0x13, 0x13, 0x13, 0x13, 0x13, 0x13, 0x13, 0x13, 0x13, 0x13, 0x13, 0x13, 0x13, 0x13, 0x13, 0x13,
638  0x13, 0x13, 0x13, 0x13, 0x13, 0x13, 0x13, 0x13, 0x13, 0x13, 0x13, 0x13, 0x13, 0x13, 0x13, 0x13,
639  0x13, 0x13, 0x13, 0x13, 0x13, 0x13, 0x13, 0x13, 0x13, 0x13, 0x13, 0x13, 0x13, 0x13, 0x13, 0x13,
640  0x13, 0x13, 0x13, 0x13, 0x13, 0x13, 0x13, 0x13, 0x13, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14,
641  0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14,
642  0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14,
643  0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14,
644  0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x15, 0x15, 0x15, 0x15, 0x15, 0x15,
645  0x15, 0x15, 0x15, 0x15, 0x15, 0x15, 0x15, 0x15, 0x15, 0x15, 0x15, 0x15, 0x15, 0x15, 0x15, 0x15,
646  0x15, 0x15, 0x15, 0x15, 0x15, 0x15, 0x15, 0x15, 0x15, 0x15, 0x15, 0x15, 0x15, 0x15, 0x15, 0x15,
647  0x15, 0x15, 0x15, 0x15, 0x15, 0x15, 0x15, 0x15, 0x15, 0x15, 0x15, 0x15, 0x15, 0x15, 0x15, 0x15,
648  0x15, 0x15, 0x15, 0x15, 0x15, 0x15, 0x15, 0x15, 0x15, 0x15, 0x16, 0x16, 0x16, 0x16, 0x16, 0x16,
649  0x16, 0x16, 0x16, 0x16, 0x16, 0x16, 0x16, 0x16, 0x16, 0x16, 0x16, 0x16, 0x16, 0x16, 0x16, 0x16,
650  0x16, 0x16, 0x16, 0x16, 0x16, 0x16, 0x16, 0x16, 0x16, 0x16, 0x16, 0x16, 0x16, 0x16, 0x16, 0x16,
651  0x16, 0x16, 0x16, 0x16, 0x16, 0x16, 0x16, 0x16, 0x16, 0x16, 0x16, 0x16, 0x16, 0x16, 0x16, 0x16,
652  0x16, 0x16, 0x16, 0x16, 0x16, 0x16, 0x16, 0x16, 0x16, 0x16, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17,
653  0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17,
654  0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17,
655  0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17,
656  0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18,
657  0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18,
658  0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18,
659  0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18,
660  0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x19, 0x19, 0x19, 0x19, 0x19,
661  0x19, 0x19, 0x19, 0x19, 0x19, 0x19, 0x19, 0x19, 0x19, 0x19, 0x19, 0x19, 0x19, 0x19, 0x19, 0x19,
662  0x19, 0x19, 0x19, 0x19, 0x19, 0x19, 0x19, 0x19, 0x19, 0x19, 0x19, 0x19, 0x19, 0x19, 0x19, 0x19,
663  0x19, 0x19, 0x19, 0x19, 0x19, 0x19, 0x19, 0x19, 0x19, 0x19, 0x19, 0x19, 0x19, 0x19, 0x19, 0x19,
664  0x19, 0x19, 0x19, 0x19, 0x19, 0x19, 0x19, 0x19, 0x19, 0x19, 0x19, 0x1A, 0x1A, 0x1A, 0x1A, 0x1A,
665  0x1A, 0x1A, 0x1A, 0x1A, 0x1A, 0x1A, 0x1A, 0x1A, 0x1A, 0x1A, 0x1A, 0x1A, 0x1A, 0x1A, 0x1A, 0x1A,
666  0x1A, 0x1A, 0x1A, 0x1A, 0x1A, 0x1A, 0x1A, 0x1A, 0x1A, 0x1A, 0x1A, 0x1A, 0x1A, 0x1A, 0x1A, 0x1A,
667  0x1A, 0x1A, 0x1A, 0x1A, 0x1A, 0x1A, 0x1A, 0x1A, 0x1A, 0x1A, 0x1A, 0x1A, 0x1A, 0x1A, 0x1A, 0x1A,
668  0x1A, 0x1A, 0x1A, 0x1A, 0x1A, 0x1A, 0x1A, 0x1A, 0x1A, 0x1A, 0x1A, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B,
669  0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B,
670  0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B,
671  0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B,
672  0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C,
673  0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C,
674  0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C,
675  0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C,
676  0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1D, 0x1D, 0x1D, 0x1D,
677  0x1D, 0x1D, 0x1D, 0x1D, 0x1D, 0x1D, 0x1D, 0x1D, 0x1D, 0x1D, 0x1D, 0x1D, 0x1D, 0x1D, 0x1D, 0x1D,
678  0x1D, 0x1D, 0x1D, 0x1D, 0x1D, 0x1D, 0x1D, 0x1D, 0x1D, 0x1D, 0x1D, 0x1D, 0x1D, 0x1D, 0x1D, 0x1D,
679  0x1D, 0x1D, 0x1D, 0x1D, 0x1D, 0x1D, 0x1D, 0x1D, 0x1D, 0x1D, 0x1D, 0x1D, 0x1D, 0x1D, 0x1D, 0x1D,
680  0x1D, 0x1D, 0x1D, 0x1D, 0x1D, 0x1D, 0x1D, 0x1D, 0x1D, 0x1D, 0x1D, 0x1D, 0x1E, 0x1E, 0x1E, 0x1E,
681  0x1E, 0x1E, 0x1E, 0x1E, 0x1E, 0x1E, 0x1E, 0x1E, 0x1E, 0x1E, 0x1E, 0x1E, 0x1E, 0x1E, 0x1E, 0x1E,
682  0x1E, 0x1E, 0x1E, 0x1E, 0x1E, 0x1E, 0x1E, 0x1E, 0x1E, 0x1E, 0x1E, 0x1E, 0x1E, 0x1E, 0x1E, 0x1E,
683  0x1E, 0x1E, 0x1E, 0x1E, 0x1E, 0x1E, 0x1E, 0x1E, 0x1E, 0x1E, 0x1E, 0x1E, 0x1E, 0x1E, 0x1E, 0x1E,
684  0x1E, 0x1E, 0x1E, 0x1E, 0x1E, 0x1E, 0x1E, 0x1E, 0x1E, 0x1E, 0x1E, 0x1E, 0x1F, 0x1F, 0x1F, 0x1F,
685  0x1F, 0x1F, 0x1F, 0x1F, 0x1F, 0x1F, 0x1F, 0x1F, 0x1F, 0x1F, 0x1F, 0x1F, 0x1F, 0x1F, 0x1F, 0x1F,
686  0x1F, 0x1F, 0x1F, 0x1F, 0x1F, 0x1F, 0x1F, 0x1F, 0x1F, 0x1F, 0x1F, 0x1F, 0x1F, 0x1F, 0x1F, 0x1F,
687  0x1F, 0x1F, 0x1F, 0x1F, 0x1F, 0x1F, 0x1F, 0x1F, 0x1F, 0x1F, 0x1F, 0x1F, 0x1F, 0x1F, 0x1F, 0x1F,
688  0x1F, 0x1F, 0x1F, 0x1F, 0x1F, 0x1F, 0x1F, 0x1F, 0x1F, 0x1F, 0x1F, 0x1F, 0x20, 0x20, 0x20, 0x20,
689  0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
690  0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x21, 0x21, 0x21,
691  0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
692  0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x22, 0x22, 0x22,
693  0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22,
694  0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x23, 0x23, 0x23,
695  0x23, 0x23, 0x23, 0x23, 0x23, 0x23, 0x23, 0x23, 0x23, 0x23, 0x23, 0x23, 0x23, 0x23, 0x23, 0x23,
696  0x23, 0x23, 0x23, 0x23, 0x23, 0x23, 0x23, 0x23, 0x23, 0x23, 0x23, 0x23, 0x23, 0x24, 0x24, 0x24,
697  0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24,
698  0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x25, 0x25, 0x25,
699  0x25, 0x25, 0x25, 0x25, 0x25, 0x25, 0x25, 0x25, 0x25, 0x25, 0x25, 0x25, 0x25, 0x25, 0x25, 0x25,
700  0x25, 0x25, 0x25, 0x25, 0x25, 0x25, 0x25, 0x25, 0x25, 0x25, 0x25, 0x25, 0x25, 0x26, 0x26, 0x26,
701  0x26, 0x26, 0x26, 0x26, 0x26, 0x26, 0x26, 0x26, 0x26, 0x26, 0x26, 0x26, 0x26, 0x26, 0x26, 0x26,
702  0x26, 0x26, 0x26, 0x26, 0x26, 0x26, 0x26, 0x26, 0x26, 0x26, 0x26, 0x26, 0x26, 0x27, 0x27, 0x27,
703  0x27, 0x27, 0x27, 0x27, 0x27, 0x27, 0x27, 0x27, 0x27, 0x27, 0x27, 0x27, 0x27, 0x27, 0x27, 0x27,
704  0x27, 0x27, 0x27, 0x27, 0x27, 0x27, 0x27, 0x27, 0x27, 0x27, 0x27, 0x27, 0x27, 0x27, 0x28, 0x28,
705  0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28,
706  0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x29, 0x29,
707  0x29, 0x29, 0x29, 0x29, 0x29, 0x29, 0x29, 0x29, 0x29, 0x29, 0x29, 0x29, 0x29, 0x29, 0x29, 0x29,
708  0x29, 0x29, 0x29, 0x29, 0x29, 0x29, 0x29, 0x29, 0x29, 0x29, 0x29, 0x29, 0x29, 0x29, 0x2A, 0x2A,
709  0x2A, 0x2A, 0x2A, 0x2A, 0x2A, 0x2A, 0x2A, 0x2A, 0x2A, 0x2A, 0x2A, 0x2A, 0x2A, 0x2A, 0x2A, 0x2A,
710  0x2A, 0x2A, 0x2A, 0x2A, 0x2A, 0x2A, 0x2A, 0x2A, 0x2A, 0x2A, 0x2A, 0x2A, 0x2A, 0x2A, 0x2B, 0x2B,
711  0x2B, 0x2B, 0x2B, 0x2B, 0x2B, 0x2B, 0x2B, 0x2B, 0x2B, 0x2B, 0x2B, 0x2B, 0x2B, 0x2B, 0x2B, 0x2B,
712  0x2B, 0x2B, 0x2B, 0x2B, 0x2B, 0x2B, 0x2B, 0x2B, 0x2B, 0x2B, 0x2B, 0x2B, 0x2B, 0x2B, 0x2C, 0x2C,
713  0x2C, 0x2C, 0x2C, 0x2C, 0x2C, 0x2C, 0x2C, 0x2C, 0x2C, 0x2C, 0x2C, 0x2C, 0x2C, 0x2C, 0x2C, 0x2C,
714  0x2C, 0x2C, 0x2C, 0x2C, 0x2C, 0x2C, 0x2C, 0x2C, 0x2C, 0x2C, 0x2C, 0x2C, 0x2C, 0x2C, 0x2D, 0x2D,
715  0x2D, 0x2D, 0x2D, 0x2D, 0x2D, 0x2D, 0x2D, 0x2D, 0x2D, 0x2D, 0x2D, 0x2D, 0x2D, 0x2D, 0x2D, 0x2D,
716  0x2D, 0x2D, 0x2D, 0x2D, 0x2D, 0x2D, 0x2D, 0x2D, 0x2D, 0x2D, 0x2D, 0x2D, 0x2D, 0x2D, 0x2E, 0x2E,
717  0x2E, 0x2E, 0x2E, 0x2E, 0x2E, 0x2E, 0x2E, 0x2E, 0x2E, 0x2E, 0x2E, 0x2E, 0x2E, 0x2E, 0x2E, 0x2E,
718  0x2E, 0x2E, 0x2E, 0x2E, 0x2E, 0x2E, 0x2E, 0x2E, 0x2E, 0x2E, 0x2E, 0x2E, 0x2E, 0x2E, 0x2F, 0x2F,
719  0x2F, 0x2F, 0x2F, 0x2F, 0x2F, 0x2F, 0x2F, 0x2F, 0x2F, 0x2F, 0x2F, 0x2F, 0x2F, 0x2F, 0x2F, 0x2F,
720  0x2F, 0x2F, 0x2F, 0x2F, 0x2F, 0x2F, 0x2F, 0x2F, 0x2F, 0x2F, 0x2F, 0x2F, 0x2F, 0x2F, 0x2F, 0x30,
721  0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x31,
722  0x31, 0x31, 0x31, 0x31, 0x31, 0x31, 0x31, 0x31, 0x31, 0x31, 0x31, 0x31, 0x31, 0x31, 0x31, 0x32,
723  0x32, 0x32, 0x32, 0x32, 0x32, 0x32, 0x32, 0x32, 0x32, 0x32, 0x32, 0x32, 0x32, 0x32, 0x32, 0x33,
724  0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x34,
725  0x34, 0x34, 0x34, 0x34, 0x34, 0x34, 0x34, 0x34, 0x34, 0x34, 0x34, 0x34, 0x34, 0x34, 0x34, 0x35,
726  0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x36,
727  0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x37,
728  0x37, 0x37, 0x37, 0x37, 0x37, 0x37, 0x37, 0x37, 0x37, 0x37, 0x37, 0x37, 0x37, 0x37, 0x37, 0x38,
729  0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x39,
730  0x39, 0x39, 0x39, 0x39, 0x39, 0x39, 0x39, 0x39, 0x39, 0x39, 0x39, 0x39, 0x39, 0x39, 0x39, 0x3A,
731  0x3A, 0x3A, 0x3A, 0x3A, 0x3A, 0x3A, 0x3A, 0x3A, 0x3A, 0x3A, 0x3A, 0x3A, 0x3A, 0x3A, 0x3A, 0x3B,
732  0x3B, 0x3B, 0x3B, 0x3B, 0x3B, 0x3B, 0x3B, 0x3B, 0x3B, 0x3B, 0x3B, 0x3B, 0x3B, 0x3B, 0x3B, 0x3C,
733  0x3C, 0x3C, 0x3C, 0x3C, 0x3C, 0x3C, 0x3C, 0x3C, 0x3C, 0x3C, 0x3C, 0x3C, 0x3C, 0x3C, 0x3C, 0x3D,
734  0x3D, 0x3D, 0x3D, 0x3D, 0x3D, 0x3D, 0x3D, 0x3D, 0x3D, 0x3D, 0x3D, 0x3D, 0x3D, 0x3D, 0x3D, 0x3D,
735  0x3E, 0x3E, 0x3E, 0x3E, 0x3E, 0x3E, 0x3E, 0x3E, 0x3E, 0x3E, 0x3E, 0x3E, 0x3E, 0x3E, 0x3E, 0x3E,
736  0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F,
737  0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41,
738  0x42, 0x42, 0x42, 0x42, 0x42, 0x42, 0x42, 0x42, 0x43, 0x43, 0x43, 0x43, 0x43, 0x43, 0x43, 0x43,
739  0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45,
740  0x46, 0x46, 0x46, 0x46, 0x46, 0x46, 0x46, 0x46, 0x47, 0x47, 0x47, 0x47, 0x47, 0x47, 0x47, 0x47,
741  0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x49, 0x49, 0x49, 0x49, 0x49, 0x49, 0x49, 0x49,
742  0x4A, 0x4A, 0x4A, 0x4A, 0x4A, 0x4A, 0x4A, 0x4A, 0x4B, 0x4B, 0x4B, 0x4B, 0x4B, 0x4B, 0x4B, 0x4B,
743  0x4C, 0x4C, 0x4C, 0x4C, 0x4C, 0x4C, 0x4C, 0x4C, 0x4D, 0x4D, 0x4D, 0x4D, 0x4D, 0x4D, 0x4D, 0x4D,
744  0x4E, 0x4E, 0x4E, 0x4E, 0x4E, 0x4E, 0x4E, 0x4E, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F,
745  0x50, 0x50, 0x50, 0x50, 0x51, 0x51, 0x51, 0x51, 0x52, 0x52, 0x52, 0x52, 0x53, 0x53, 0x53, 0x53,
746  0x54, 0x54, 0x54, 0x54, 0x55, 0x55, 0x55, 0x55, 0x56, 0x56, 0x56, 0x56, 0x57, 0x57, 0x57, 0x57,
747  0x58, 0x58, 0x58, 0x58, 0x59, 0x59, 0x59, 0x59, 0x5A, 0x5A, 0x5A, 0x5A, 0x5B, 0x5B, 0x5B, 0x5B,
748  0x5C, 0x5C, 0x5C, 0x5C, 0x5D, 0x5D, 0x5D, 0x5D, 0x5E, 0x5E, 0x5E, 0x5E, 0x5F, 0x5F, 0x5F, 0x5F,
749  0x60, 0x60, 0x61, 0x61, 0x62, 0x62, 0x63, 0x63, 0x64, 0x64, 0x65, 0x65, 0x66, 0x66, 0x67, 0x67,
750  0x68, 0x68, 0x68, 0x69, 0x69, 0x6A, 0x6A, 0x6B, 0x6B, 0x6C, 0x6C, 0x6D, 0x6D, 0x6E, 0x6E, 0x6F,
751  0x6F, 0x70, 0x71, 0x72, 0x73, 0x74, 0x75, 0x76, 0x77, 0x78, 0x79, 0x7A, 0x7B, 0x7C, 0x7D, 0x7E,
752  0xFF, 0xFE, 0xFD, 0xFC, 0xFB, 0xFA, 0xF9, 0xF8, 0xF7, 0xF6, 0xF5, 0xF4, 0xF3, 0xF2, 0xF1, 0xF0,
753  0xEF, 0xEF, 0xEE, 0xEE, 0xED, 0xED, 0xEC, 0xEC, 0xEB, 0xEB, 0xEA, 0xEA, 0xE9, 0xE9, 0xE8, 0xE8,
754  0xE7, 0xE7, 0xE6, 0xE6, 0xE5, 0xE5, 0xE4, 0xE4, 0xE3, 0xE3, 0xE2, 0xE2, 0xE1, 0xE1, 0xE0, 0xE0,
755  0xDF, 0xDF, 0xDF, 0xDF, 0xDE, 0xDE, 0xDE, 0xDE, 0xDD, 0xDD, 0xDD, 0xDD, 0xDC, 0xDC, 0xDC, 0xDC,
756  0xDB, 0xDB, 0xDB, 0xDB, 0xDA, 0xDA, 0xDA, 0xDA, 0xD9, 0xD9, 0xD9, 0xD9, 0xD8, 0xD8, 0xD8, 0xD8,
757  0xD7, 0xD7, 0xD7, 0xD7, 0xD6, 0xD6, 0xD6, 0xD6, 0xD5, 0xD5, 0xD5, 0xD5, 0xD4, 0xD4, 0xD4, 0xD4,
758  0xD3, 0xD3, 0xD3, 0xD3, 0xD2, 0xD2, 0xD2, 0xD2, 0xD1, 0xD1, 0xD1, 0xD1, 0xD0, 0xD0, 0xD0, 0xD0,
759  0xCF, 0xCF, 0xCF, 0xCF, 0xCF, 0xCF, 0xCF, 0xCF, 0xCE, 0xCE, 0xCE, 0xCE, 0xCE, 0xCE, 0xCE, 0xCE,
760  0xCD, 0xCD, 0xCD, 0xCD, 0xCD, 0xCD, 0xCD, 0xCD, 0xCC, 0xCC, 0xCC, 0xCC, 0xCC, 0xCC, 0xCC, 0xCC,
761  0xCB, 0xCB, 0xCB, 0xCB, 0xCB, 0xCB, 0xCB, 0xCB, 0xCA, 0xCA, 0xCA, 0xCA, 0xCA, 0xCA, 0xCA, 0xCA,
762  0xC9, 0xC9, 0xC9, 0xC9, 0xC9, 0xC9, 0xC9, 0xC9, 0xC8, 0xC8, 0xC8, 0xC8, 0xC8, 0xC8, 0xC8, 0xC8,
763  0xC7, 0xC7, 0xC7, 0xC7, 0xC7, 0xC7, 0xC7, 0xC7, 0xC6, 0xC6, 0xC6, 0xC6, 0xC6, 0xC6, 0xC6, 0xC6,
764  0xC5, 0xC5, 0xC5, 0xC5, 0xC5, 0xC5, 0xC5, 0xC5, 0xC4, 0xC4, 0xC4, 0xC4, 0xC4, 0xC4, 0xC4, 0xC4,
765  0xC3, 0xC3, 0xC3, 0xC3, 0xC3, 0xC3, 0xC3, 0xC3, 0xC3, 0xC2, 0xC2, 0xC2, 0xC2, 0xC2, 0xC2, 0xC2,
766  0xC2, 0xC1, 0xC1, 0xC1, 0xC1, 0xC1, 0xC1, 0xC1, 0xC1, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0,
767  0xC0, 0xBF, 0xBF, 0xBF, 0xBF, 0xBF, 0xBF, 0xBF, 0xBF, 0xBF, 0xBF, 0xBF, 0xBF, 0xBF, 0xBF, 0xBF,
768  0xBF, 0xBE, 0xBE, 0xBE, 0xBE, 0xBE, 0xBE, 0xBE, 0xBE, 0xBE, 0xBE, 0xBE, 0xBE, 0xBE, 0xBE, 0xBE,
769  0xBE, 0xBD, 0xBD, 0xBD, 0xBD, 0xBD, 0xBD, 0xBD, 0xBD, 0xBD, 0xBD, 0xBD, 0xBD, 0xBD, 0xBD, 0xBD,
770  0xBD, 0xBC, 0xBC, 0xBC, 0xBC, 0xBC, 0xBC, 0xBC, 0xBC, 0xBC, 0xBC, 0xBC, 0xBC, 0xBC, 0xBC, 0xBC,
771  0xBC, 0xBB, 0xBB, 0xBB, 0xBB, 0xBB, 0xBB, 0xBB, 0xBB, 0xBB, 0xBB, 0xBB, 0xBB, 0xBB, 0xBB, 0xBB,
772  0xBB, 0xBA, 0xBA, 0xBA, 0xBA, 0xBA, 0xBA, 0xBA, 0xBA, 0xBA, 0xBA, 0xBA, 0xBA, 0xBA, 0xBA, 0xBA,
773  0xBA, 0xB9, 0xB9, 0xB9, 0xB9, 0xB9, 0xB9, 0xB9, 0xB9, 0xB9, 0xB9, 0xB9, 0xB9, 0xB9, 0xB9, 0xB9,
774  0xB9, 0xB8, 0xB8, 0xB8, 0xB8, 0xB8, 0xB8, 0xB8, 0xB8, 0xB8, 0xB8, 0xB8, 0xB8, 0xB8, 0xB8, 0xB8,
775  0xB8, 0xB7, 0xB7, 0xB7, 0xB7, 0xB7, 0xB7, 0xB7, 0xB7, 0xB7, 0xB7, 0xB7, 0xB7, 0xB7, 0xB7, 0xB7,
776  0xB7, 0xB6, 0xB6, 0xB6, 0xB6, 0xB6, 0xB6, 0xB6, 0xB6, 0xB6, 0xB6, 0xB6, 0xB6, 0xB6, 0xB6, 0xB6,
777  0xB6, 0xB5, 0xB5, 0xB5, 0xB5, 0xB5, 0xB5, 0xB5, 0xB5, 0xB5, 0xB5, 0xB5, 0xB5, 0xB5, 0xB5, 0xB5,
778  0xB5, 0xB4, 0xB4, 0xB4, 0xB4, 0xB4, 0xB4, 0xB4, 0xB4, 0xB4, 0xB4, 0xB4, 0xB4, 0xB4, 0xB4, 0xB4,
779  0xB4, 0xB3, 0xB3, 0xB3, 0xB3, 0xB3, 0xB3, 0xB3, 0xB3, 0xB3, 0xB3, 0xB3, 0xB3, 0xB3, 0xB3, 0xB3,
780  0xB3, 0xB2, 0xB2, 0xB2, 0xB2, 0xB2, 0xB2, 0xB2, 0xB2, 0xB2, 0xB2, 0xB2, 0xB2, 0xB2, 0xB2, 0xB2,
781  0xB2, 0xB2, 0xB1, 0xB1, 0xB1, 0xB1, 0xB1, 0xB1, 0xB1, 0xB1, 0xB1, 0xB1, 0xB1, 0xB1, 0xB1, 0xB1,
782  0xB1, 0xB1, 0xB0, 0xB0, 0xB0, 0xB0, 0xB0, 0xB0, 0xB0, 0xB0, 0xB0, 0xB0, 0xB0, 0xB0, 0xB0, 0xB0,
783  0xB0, 0xB0, 0xAF, 0xAF, 0xAF, 0xAF, 0xAF, 0xAF, 0xAF, 0xAF, 0xAF, 0xAF, 0xAF, 0xAF, 0xAF, 0xAF,
784  0xAF, 0xAF, 0xAF, 0xAF, 0xAF, 0xAF, 0xAF, 0xAF, 0xAF, 0xAF, 0xAF, 0xAF, 0xAF, 0xAF, 0xAF, 0xAF,
785  0xAF, 0xAF, 0xAE, 0xAE, 0xAE, 0xAE, 0xAE, 0xAE, 0xAE, 0xAE, 0xAE, 0xAE, 0xAE, 0xAE, 0xAE, 0xAE,
786  0xAE, 0xAE, 0xAE, 0xAE, 0xAE, 0xAE, 0xAE, 0xAE, 0xAE, 0xAE, 0xAE, 0xAE, 0xAE, 0xAE, 0xAE, 0xAE,
787  0xAE, 0xAE, 0xAD, 0xAD, 0xAD, 0xAD, 0xAD, 0xAD, 0xAD, 0xAD, 0xAD, 0xAD, 0xAD, 0xAD, 0xAD, 0xAD,
788  0xAD, 0xAD, 0xAD, 0xAD, 0xAD, 0xAD, 0xAD, 0xAD, 0xAD, 0xAD, 0xAD, 0xAD, 0xAD, 0xAD, 0xAD, 0xAD,
789  0xAD, 0xAD, 0xAC, 0xAC, 0xAC, 0xAC, 0xAC, 0xAC, 0xAC, 0xAC, 0xAC, 0xAC, 0xAC, 0xAC, 0xAC, 0xAC,
790  0xAC, 0xAC, 0xAC, 0xAC, 0xAC, 0xAC, 0xAC, 0xAC, 0xAC, 0xAC, 0xAC, 0xAC, 0xAC, 0xAC, 0xAC, 0xAC,
791  0xAC, 0xAC, 0xAB, 0xAB, 0xAB, 0xAB, 0xAB, 0xAB, 0xAB, 0xAB, 0xAB, 0xAB, 0xAB, 0xAB, 0xAB, 0xAB,
792  0xAB, 0xAB, 0xAB, 0xAB, 0xAB, 0xAB, 0xAB, 0xAB, 0xAB, 0xAB, 0xAB, 0xAB, 0xAB, 0xAB, 0xAB, 0xAB,
793  0xAB, 0xAB, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA,
794  0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA,
795  0xAA, 0xAA, 0xA9, 0xA9, 0xA9, 0xA9, 0xA9, 0xA9, 0xA9, 0xA9, 0xA9, 0xA9, 0xA9, 0xA9, 0xA9, 0xA9,
796  0xA9, 0xA9, 0xA9, 0xA9, 0xA9, 0xA9, 0xA9, 0xA9, 0xA9, 0xA9, 0xA9, 0xA9, 0xA9, 0xA9, 0xA9, 0xA9,
797  0xA9, 0xA9, 0xA9, 0xA8, 0xA8, 0xA8, 0xA8, 0xA8, 0xA8, 0xA8, 0xA8, 0xA8, 0xA8, 0xA8, 0xA8, 0xA8,
798  0xA8, 0xA8, 0xA8, 0xA8, 0xA8, 0xA8, 0xA8, 0xA8, 0xA8, 0xA8, 0xA8, 0xA8, 0xA8, 0xA8, 0xA8, 0xA8,
799  0xA8, 0xA8, 0xA8, 0xA7, 0xA7, 0xA7, 0xA7, 0xA7, 0xA7, 0xA7, 0xA7, 0xA7, 0xA7, 0xA7, 0xA7, 0xA7,
800  0xA7, 0xA7, 0xA7, 0xA7, 0xA7, 0xA7, 0xA7, 0xA7, 0xA7, 0xA7, 0xA7, 0xA7, 0xA7, 0xA7, 0xA7, 0xA7,
801  0xA7, 0xA7, 0xA7, 0xA6, 0xA6, 0xA6, 0xA6, 0xA6, 0xA6, 0xA6, 0xA6, 0xA6, 0xA6, 0xA6, 0xA6, 0xA6,
802  0xA6, 0xA6, 0xA6, 0xA6, 0xA6, 0xA6, 0xA6, 0xA6, 0xA6, 0xA6, 0xA6, 0xA6, 0xA6, 0xA6, 0xA6, 0xA6,
803  0xA6, 0xA6, 0xA6, 0xA5, 0xA5, 0xA5, 0xA5, 0xA5, 0xA5, 0xA5, 0xA5, 0xA5, 0xA5, 0xA5, 0xA5, 0xA5,
804  0xA5, 0xA5, 0xA5, 0xA5, 0xA5, 0xA5, 0xA5, 0xA5, 0xA5, 0xA5, 0xA5, 0xA5, 0xA5, 0xA5, 0xA5, 0xA5,
805  0xA5, 0xA5, 0xA5, 0xA4, 0xA4, 0xA4, 0xA4, 0xA4, 0xA4, 0xA4, 0xA4, 0xA4, 0xA4, 0xA4, 0xA4, 0xA4,
806  0xA4, 0xA4, 0xA4, 0xA4, 0xA4, 0xA4, 0xA4, 0xA4, 0xA4, 0xA4, 0xA4, 0xA4, 0xA4, 0xA4, 0xA4, 0xA4,
807  0xA4, 0xA4, 0xA4, 0xA3, 0xA3, 0xA3, 0xA3, 0xA3, 0xA3, 0xA3, 0xA3, 0xA3, 0xA3, 0xA3, 0xA3, 0xA3,
808  0xA3, 0xA3, 0xA3, 0xA3, 0xA3, 0xA3, 0xA3, 0xA3, 0xA3, 0xA3, 0xA3, 0xA3, 0xA3, 0xA3, 0xA3, 0xA3,
809  0xA3, 0xA3, 0xA3, 0xA2, 0xA2, 0xA2, 0xA2, 0xA2, 0xA2, 0xA2, 0xA2, 0xA2, 0xA2, 0xA2, 0xA2, 0xA2,
810  0xA2, 0xA2, 0xA2, 0xA2, 0xA2, 0xA2, 0xA2, 0xA2, 0xA2, 0xA2, 0xA2, 0xA2, 0xA2, 0xA2, 0xA2, 0xA2,
811  0xA2, 0xA2, 0xA2, 0xA2, 0xA1, 0xA1, 0xA1, 0xA1, 0xA1, 0xA1, 0xA1, 0xA1, 0xA1, 0xA1, 0xA1, 0xA1,
812  0xA1, 0xA1, 0xA1, 0xA1, 0xA1, 0xA1, 0xA1, 0xA1, 0xA1, 0xA1, 0xA1, 0xA1, 0xA1, 0xA1, 0xA1, 0xA1,
813  0xA1, 0xA1, 0xA1, 0xA1, 0xA0, 0xA0, 0xA0, 0xA0, 0xA0, 0xA0, 0xA0, 0xA0, 0xA0, 0xA0, 0xA0, 0xA0,
814  0xA0, 0xA0, 0xA0, 0xA0, 0xA0, 0xA0, 0xA0, 0xA0, 0xA0, 0xA0, 0xA0, 0xA0, 0xA0, 0xA0, 0xA0, 0xA0,
815  0xA0, 0xA0, 0xA0, 0xA0, 0x9F, 0x9F, 0x9F, 0x9F, 0x9F, 0x9F, 0x9F, 0x9F, 0x9F, 0x9F, 0x9F, 0x9F,
816  0x9F, 0x9F, 0x9F, 0x9F, 0x9F, 0x9F, 0x9F, 0x9F, 0x9F, 0x9F, 0x9F, 0x9F, 0x9F, 0x9F, 0x9F, 0x9F,
817  0x9F, 0x9F, 0x9F, 0x9F, 0x9F, 0x9F, 0x9F, 0x9F, 0x9F, 0x9F, 0x9F, 0x9F, 0x9F, 0x9F, 0x9F, 0x9F,
818  0x9F, 0x9F, 0x9F, 0x9F, 0x9F, 0x9F, 0x9F, 0x9F, 0x9F, 0x9F, 0x9F, 0x9F, 0x9F, 0x9F, 0x9F, 0x9F,
819  0x9F, 0x9F, 0x9F, 0x9F, 0x9E, 0x9E, 0x9E, 0x9E, 0x9E, 0x9E, 0x9E, 0x9E, 0x9E, 0x9E, 0x9E, 0x9E,
820  0x9E, 0x9E, 0x9E, 0x9E, 0x9E, 0x9E, 0x9E, 0x9E, 0x9E, 0x9E, 0x9E, 0x9E, 0x9E, 0x9E, 0x9E, 0x9E,
821  0x9E, 0x9E, 0x9E, 0x9E, 0x9E, 0x9E, 0x9E, 0x9E, 0x9E, 0x9E, 0x9E, 0x9E, 0x9E, 0x9E, 0x9E, 0x9E,
822  0x9E, 0x9E, 0x9E, 0x9E, 0x9E, 0x9E, 0x9E, 0x9E, 0x9E, 0x9E, 0x9E, 0x9E, 0x9E, 0x9E, 0x9E, 0x9E,
823  0x9E, 0x9E, 0x9E, 0x9E, 0x9D, 0x9D, 0x9D, 0x9D, 0x9D, 0x9D, 0x9D, 0x9D, 0x9D, 0x9D, 0x9D, 0x9D,
824  0x9D, 0x9D, 0x9D, 0x9D, 0x9D, 0x9D, 0x9D, 0x9D, 0x9D, 0x9D, 0x9D, 0x9D, 0x9D, 0x9D, 0x9D, 0x9D,
825  0x9D, 0x9D, 0x9D, 0x9D, 0x9D, 0x9D, 0x9D, 0x9D, 0x9D, 0x9D, 0x9D, 0x9D, 0x9D, 0x9D, 0x9D, 0x9D,
826  0x9D, 0x9D, 0x9D, 0x9D, 0x9D, 0x9D, 0x9D, 0x9D, 0x9D, 0x9D, 0x9D, 0x9D, 0x9D, 0x9D, 0x9D, 0x9D,
827  0x9D, 0x9D, 0x9D, 0x9D, 0x9D, 0x9C, 0x9C, 0x9C, 0x9C, 0x9C, 0x9C, 0x9C, 0x9C, 0x9C, 0x9C, 0x9C,
828  0x9C, 0x9C, 0x9C, 0x9C, 0x9C, 0x9C, 0x9C, 0x9C, 0x9C, 0x9C, 0x9C, 0x9C, 0x9C, 0x9C, 0x9C, 0x9C,
829  0x9C, 0x9C, 0x9C, 0x9C, 0x9C, 0x9C, 0x9C, 0x9C, 0x9C, 0x9C, 0x9C, 0x9C, 0x9C, 0x9C, 0x9C, 0x9C,
830  0x9C, 0x9C, 0x9C, 0x9C, 0x9C, 0x9C, 0x9C, 0x9C, 0x9C, 0x9C, 0x9C, 0x9C, 0x9C, 0x9C, 0x9C, 0x9C,
831  0x9C, 0x9C, 0x9C, 0x9C, 0x9C, 0x9B, 0x9B, 0x9B, 0x9B, 0x9B, 0x9B, 0x9B, 0x9B, 0x9B, 0x9B, 0x9B,
832  0x9B, 0x9B, 0x9B, 0x9B, 0x9B, 0x9B, 0x9B, 0x9B, 0x9B, 0x9B, 0x9B, 0x9B, 0x9B, 0x9B, 0x9B, 0x9B,
833  0x9B, 0x9B, 0x9B, 0x9B, 0x9B, 0x9B, 0x9B, 0x9B, 0x9B, 0x9B, 0x9B, 0x9B, 0x9B, 0x9B, 0x9B, 0x9B,
834  0x9B, 0x9B, 0x9B, 0x9B, 0x9B, 0x9B, 0x9B, 0x9B, 0x9B, 0x9B, 0x9B, 0x9B, 0x9B, 0x9B, 0x9B, 0x9B,
835  0x9B, 0x9B, 0x9B, 0x9B, 0x9B, 0x9A, 0x9A, 0x9A, 0x9A, 0x9A, 0x9A, 0x9A, 0x9A, 0x9A, 0x9A, 0x9A,
836  0x9A, 0x9A, 0x9A, 0x9A, 0x9A, 0x9A, 0x9A, 0x9A, 0x9A, 0x9A, 0x9A, 0x9A, 0x9A, 0x9A, 0x9A, 0x9A,
837  0x9A, 0x9A, 0x9A, 0x9A, 0x9A, 0x9A, 0x9A, 0x9A, 0x9A, 0x9A, 0x9A, 0x9A, 0x9A, 0x9A, 0x9A, 0x9A,
838  0x9A, 0x9A, 0x9A, 0x9A, 0x9A, 0x9A, 0x9A, 0x9A, 0x9A, 0x9A, 0x9A, 0x9A, 0x9A, 0x9A, 0x9A, 0x9A,
839  0x9A, 0x9A, 0x9A, 0x9A, 0x9A, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99,
840  0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99,
841  0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99,
842  0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99,
843  0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x98, 0x98, 0x98, 0x98, 0x98, 0x98, 0x98, 0x98, 0x98, 0x98,
844  0x98, 0x98, 0x98, 0x98, 0x98, 0x98, 0x98, 0x98, 0x98, 0x98, 0x98, 0x98, 0x98, 0x98, 0x98, 0x98,
845  0x98, 0x98, 0x98, 0x98, 0x98, 0x98, 0x98, 0x98, 0x98, 0x98, 0x98, 0x98, 0x98, 0x98, 0x98, 0x98,
846  0x98, 0x98, 0x98, 0x98, 0x98, 0x98, 0x98, 0x98, 0x98, 0x98, 0x98, 0x98, 0x98, 0x98, 0x98, 0x98,
847  0x98, 0x98, 0x98, 0x98, 0x98, 0x98, 0x97, 0x97, 0x97, 0x97, 0x97, 0x97, 0x97, 0x97, 0x97, 0x97,
848  0x97, 0x97, 0x97, 0x97, 0x97, 0x97, 0x97, 0x97, 0x97, 0x97, 0x97, 0x97, 0x97, 0x97, 0x97, 0x97,
849  0x97, 0x97, 0x97, 0x97, 0x97, 0x97, 0x97, 0x97, 0x97, 0x97, 0x97, 0x97, 0x97, 0x97, 0x97, 0x97,
850  0x97, 0x97, 0x97, 0x97, 0x97, 0x97, 0x97, 0x97, 0x97, 0x97, 0x97, 0x97, 0x97, 0x97, 0x97, 0x97,
851  0x97, 0x97, 0x97, 0x97, 0x97, 0x97, 0x96, 0x96, 0x96, 0x96, 0x96, 0x96, 0x96, 0x96, 0x96, 0x96,
852  0x96, 0x96, 0x96, 0x96, 0x96, 0x96, 0x96, 0x96, 0x96, 0x96, 0x96, 0x96, 0x96, 0x96, 0x96, 0x96,
853  0x96, 0x96, 0x96, 0x96, 0x96, 0x96, 0x96, 0x96, 0x96, 0x96, 0x96, 0x96, 0x96, 0x96, 0x96, 0x96,
854  0x96, 0x96, 0x96, 0x96, 0x96, 0x96, 0x96, 0x96, 0x96, 0x96, 0x96, 0x96, 0x96, 0x96, 0x96, 0x96,
855  0x96, 0x96, 0x96, 0x96, 0x96, 0x96, 0x95, 0x95, 0x95, 0x95, 0x95, 0x95, 0x95, 0x95, 0x95, 0x95,
856  0x95, 0x95, 0x95, 0x95, 0x95, 0x95, 0x95, 0x95, 0x95, 0x95, 0x95, 0x95, 0x95, 0x95, 0x95, 0x95,
857  0x95, 0x95, 0x95, 0x95, 0x95, 0x95, 0x95, 0x95, 0x95, 0x95, 0x95, 0x95, 0x95, 0x95, 0x95, 0x95,
858  0x95, 0x95, 0x95, 0x95, 0x95, 0x95, 0x95, 0x95, 0x95, 0x95, 0x95, 0x95, 0x95, 0x95, 0x95, 0x95,
859  0x95, 0x95, 0x95, 0x95, 0x95, 0x95, 0x95, 0x94, 0x94, 0x94, 0x94, 0x94, 0x94, 0x94, 0x94, 0x94,
860  0x94, 0x94, 0x94, 0x94, 0x94, 0x94, 0x94, 0x94, 0x94, 0x94, 0x94, 0x94, 0x94, 0x94, 0x94, 0x94,
861  0x94, 0x94, 0x94, 0x94, 0x94, 0x94, 0x94, 0x94, 0x94, 0x94, 0x94, 0x94, 0x94, 0x94, 0x94, 0x94,
862  0x94, 0x94, 0x94, 0x94, 0x94, 0x94, 0x94, 0x94, 0x94, 0x94, 0x94, 0x94, 0x94, 0x94, 0x94, 0x94,
863  0x94, 0x94, 0x94, 0x94, 0x94, 0x94, 0x94, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93,
864  0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93,
865  0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93,
866  0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93,
867  0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x92, 0x92, 0x92, 0x92, 0x92, 0x92, 0x92, 0x92, 0x92,
868  0x92, 0x92, 0x92, 0x92, 0x92, 0x92, 0x92, 0x92, 0x92, 0x92, 0x92, 0x92, 0x92, 0x92, 0x92, 0x92,
869  0x92, 0x92, 0x92, 0x92, 0x92, 0x92, 0x92, 0x92, 0x92, 0x92, 0x92, 0x92, 0x92, 0x92, 0x92, 0x92,
870  0x92, 0x92, 0x92, 0x92, 0x92, 0x92, 0x92, 0x92, 0x92, 0x92, 0x92, 0x92, 0x92, 0x92, 0x92, 0x92,
871  0x92, 0x92, 0x92, 0x92, 0x92, 0x92, 0x92, 0x91, 0x91, 0x91, 0x91, 0x91, 0x91, 0x91, 0x91, 0x91,
872  0x91, 0x91, 0x91, 0x91, 0x91, 0x91, 0x91, 0x91, 0x91, 0x91, 0x91, 0x91, 0x91, 0x91, 0x91, 0x91,
873  0x91, 0x91, 0x91, 0x91, 0x91, 0x91, 0x91, 0x91, 0x91, 0x91, 0x91, 0x91, 0x91, 0x91, 0x91, 0x91,
874  0x91, 0x91, 0x91, 0x91, 0x91, 0x91, 0x91, 0x91, 0x91, 0x91, 0x91, 0x91, 0x91, 0x91, 0x91, 0x91,
875  0x91, 0x91, 0x91, 0x91, 0x91, 0x91, 0x91, 0x91, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90,
876  0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90,
877  0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90,
878  0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90,
879  0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x8F, 0x8F, 0x8F, 0x8F, 0x8F, 0x8F, 0x8F, 0x8F,
880  0x8F, 0x8F, 0x8F, 0x8F, 0x8F, 0x8F, 0x8F, 0x8F, 0x8F, 0x8F, 0x8F, 0x8F, 0x8F, 0x8F, 0x8F, 0x8F,
881  0x8F, 0x8F, 0x8F, 0x8F, 0x8F, 0x8F, 0x8F, 0x8F, 0x8F, 0x8F, 0x8F, 0x8F, 0x8F, 0x8F, 0x8F, 0x8F,
882  0x8F, 0x8F, 0x8F, 0x8F, 0x8F, 0x8F, 0x8F, 0x8F, 0x8F, 0x8F, 0x8F, 0x8F, 0x8F, 0x8F, 0x8F, 0x8F,
883  0x8F, 0x8F, 0x8F, 0x8F, 0x8F, 0x8F, 0x8F, 0x8F, 0x8F, 0x8F, 0x8F, 0x8F, 0x8F, 0x8F, 0x8F, 0x8F,
884  0x8F, 0x8F, 0x8F, 0x8F, 0x8F, 0x8F, 0x8F, 0x8F, 0x8F, 0x8F, 0x8F, 0x8F, 0x8F, 0x8F, 0x8F, 0x8F,
885  0x8F, 0x8F, 0x8F, 0x8F, 0x8F, 0x8F, 0x8F, 0x8F, 0x8F, 0x8F, 0x8F, 0x8F, 0x8F, 0x8F, 0x8F, 0x8F,
886  0x8F, 0x8F, 0x8F, 0x8F, 0x8F, 0x8F, 0x8F, 0x8F, 0x8F, 0x8F, 0x8F, 0x8F, 0x8F, 0x8F, 0x8F, 0x8F,
887  0x8F, 0x8F, 0x8F, 0x8F, 0x8F, 0x8F, 0x8F, 0x8F, 0x8F, 0x8E, 0x8E, 0x8E, 0x8E, 0x8E, 0x8E, 0x8E,
888  0x8E, 0x8E, 0x8E, 0x8E, 0x8E, 0x8E, 0x8E, 0x8E, 0x8E, 0x8E, 0x8E, 0x8E, 0x8E, 0x8E, 0x8E, 0x8E,
889  0x8E, 0x8E, 0x8E, 0x8E, 0x8E, 0x8E, 0x8E, 0x8E, 0x8E, 0x8E, 0x8E, 0x8E, 0x8E, 0x8E, 0x8E, 0x8E,
890  0x8E, 0x8E, 0x8E, 0x8E, 0x8E, 0x8E, 0x8E, 0x8E, 0x8E, 0x8E, 0x8E, 0x8E, 0x8E, 0x8E, 0x8E, 0x8E,
891  0x8E, 0x8E, 0x8E, 0x8E, 0x8E, 0x8E, 0x8E, 0x8E, 0x8E, 0x8E, 0x8E, 0x8E, 0x8E, 0x8E, 0x8E, 0x8E,
892  0x8E, 0x8E, 0x8E, 0x8E, 0x8E, 0x8E, 0x8E, 0x8E, 0x8E, 0x8E, 0x8E, 0x8E, 0x8E, 0x8E, 0x8E, 0x8E,
893  0x8E, 0x8E, 0x8E, 0x8E, 0x8E, 0x8E, 0x8E, 0x8E, 0x8E, 0x8E, 0x8E, 0x8E, 0x8E, 0x8E, 0x8E, 0x8E,
894  0x8E, 0x8E, 0x8E, 0x8E, 0x8E, 0x8E, 0x8E, 0x8E, 0x8E, 0x8E, 0x8E, 0x8E, 0x8E, 0x8E, 0x8E, 0x8E,
895  0x8E, 0x8E, 0x8E, 0x8E, 0x8E, 0x8E, 0x8E, 0x8E, 0x8E, 0x8D, 0x8D, 0x8D, 0x8D, 0x8D, 0x8D, 0x8D,
896  0x8D, 0x8D, 0x8D, 0x8D, 0x8D, 0x8D, 0x8D, 0x8D, 0x8D, 0x8D, 0x8D, 0x8D, 0x8D, 0x8D, 0x8D, 0x8D,
897  0x8D, 0x8D, 0x8D, 0x8D, 0x8D, 0x8D, 0x8D, 0x8D, 0x8D, 0x8D, 0x8D, 0x8D, 0x8D, 0x8D, 0x8D, 0x8D,
898  0x8D, 0x8D, 0x8D, 0x8D, 0x8D, 0x8D, 0x8D, 0x8D, 0x8D, 0x8D, 0x8D, 0x8D, 0x8D, 0x8D, 0x8D, 0x8D,
899  0x8D, 0x8D, 0x8D, 0x8D, 0x8D, 0x8D, 0x8D, 0x8D, 0x8D, 0x8D, 0x8D, 0x8D, 0x8D, 0x8D, 0x8D, 0x8D,
900  0x8D, 0x8D, 0x8D, 0x8D, 0x8D, 0x8D, 0x8D, 0x8D, 0x8D, 0x8D, 0x8D, 0x8D, 0x8D, 0x8D, 0x8D, 0x8D,
901  0x8D, 0x8D, 0x8D, 0x8D, 0x8D, 0x8D, 0x8D, 0x8D, 0x8D, 0x8D, 0x8D, 0x8D, 0x8D, 0x8D, 0x8D, 0x8D,
902  0x8D, 0x8D, 0x8D, 0x8D, 0x8D, 0x8D, 0x8D, 0x8D, 0x8D, 0x8D, 0x8D, 0x8D, 0x8D, 0x8D, 0x8D, 0x8D,
903  0x8D, 0x8D, 0x8D, 0x8D, 0x8D, 0x8D, 0x8D, 0x8D, 0x8D, 0x8D, 0x8C, 0x8C, 0x8C, 0x8C, 0x8C, 0x8C,
904  0x8C, 0x8C, 0x8C, 0x8C, 0x8C, 0x8C, 0x8C, 0x8C, 0x8C, 0x8C, 0x8C, 0x8C, 0x8C, 0x8C, 0x8C, 0x8C,
905  0x8C, 0x8C, 0x8C, 0x8C, 0x8C, 0x8C, 0x8C, 0x8C, 0x8C, 0x8C, 0x8C, 0x8C, 0x8C, 0x8C, 0x8C, 0x8C,
906  0x8C, 0x8C, 0x8C, 0x8C, 0x8C, 0x8C, 0x8C, 0x8C, 0x8C, 0x8C, 0x8C, 0x8C, 0x8C, 0x8C, 0x8C, 0x8C,
907  0x8C, 0x8C, 0x8C, 0x8C, 0x8C, 0x8C, 0x8C, 0x8C, 0x8C, 0x8C, 0x8C, 0x8C, 0x8C, 0x8C, 0x8C, 0x8C,
908  0x8C, 0x8C, 0x8C, 0x8C, 0x8C, 0x8C, 0x8C, 0x8C, 0x8C, 0x8C, 0x8C, 0x8C, 0x8C, 0x8C, 0x8C, 0x8C,
909  0x8C, 0x8C, 0x8C, 0x8C, 0x8C, 0x8C, 0x8C, 0x8C, 0x8C, 0x8C, 0x8C, 0x8C, 0x8C, 0x8C, 0x8C, 0x8C,
910  0x8C, 0x8C, 0x8C, 0x8C, 0x8C, 0x8C, 0x8C, 0x8C, 0x8C, 0x8C, 0x8C, 0x8C, 0x8C, 0x8C, 0x8C, 0x8C,
911  0x8C, 0x8C, 0x8C, 0x8C, 0x8C, 0x8C, 0x8C, 0x8C, 0x8C, 0x8C, 0x8B, 0x8B, 0x8B, 0x8B, 0x8B, 0x8B,
912  0x8B, 0x8B, 0x8B, 0x8B, 0x8B, 0x8B, 0x8B, 0x8B, 0x8B, 0x8B, 0x8B, 0x8B, 0x8B, 0x8B, 0x8B, 0x8B,
913  0x8B, 0x8B, 0x8B, 0x8B, 0x8B, 0x8B, 0x8B, 0x8B, 0x8B, 0x8B, 0x8B, 0x8B, 0x8B, 0x8B, 0x8B, 0x8B,
914  0x8B, 0x8B, 0x8B, 0x8B, 0x8B, 0x8B, 0x8B, 0x8B, 0x8B, 0x8B, 0x8B, 0x8B, 0x8B, 0x8B, 0x8B, 0x8B,
915  0x8B, 0x8B, 0x8B, 0x8B, 0x8B, 0x8B, 0x8B, 0x8B, 0x8B, 0x8B, 0x8B, 0x8B, 0x8B, 0x8B, 0x8B, 0x8B,
916  0x8B, 0x8B, 0x8B, 0x8B, 0x8B, 0x8B, 0x8B, 0x8B, 0x8B, 0x8B, 0x8B, 0x8B, 0x8B, 0x8B, 0x8B, 0x8B,
917  0x8B, 0x8B, 0x8B, 0x8B, 0x8B, 0x8B, 0x8B, 0x8B, 0x8B, 0x8B, 0x8B, 0x8B, 0x8B, 0x8B, 0x8B, 0x8B,
918  0x8B, 0x8B, 0x8B, 0x8B, 0x8B, 0x8B, 0x8B, 0x8B, 0x8B, 0x8B, 0x8B, 0x8B, 0x8B, 0x8B, 0x8B, 0x8B,
919  0x8B, 0x8B, 0x8B, 0x8B, 0x8B, 0x8B, 0x8B, 0x8B, 0x8B, 0x8B, 0x8B, 0x8A, 0x8A, 0x8A, 0x8A, 0x8A,
920  0x8A, 0x8A, 0x8A, 0x8A, 0x8A, 0x8A, 0x8A, 0x8A, 0x8A, 0x8A, 0x8A, 0x8A, 0x8A, 0x8A, 0x8A, 0x8A,
921  0x8A, 0x8A, 0x8A, 0x8A, 0x8A, 0x8A, 0x8A, 0x8A, 0x8A, 0x8A, 0x8A, 0x8A, 0x8A, 0x8A, 0x8A, 0x8A,
922  0x8A, 0x8A, 0x8A, 0x8A, 0x8A, 0x8A, 0x8A, 0x8A, 0x8A, 0x8A, 0x8A, 0x8A, 0x8A, 0x8A, 0x8A, 0x8A,
923  0x8A, 0x8A, 0x8A, 0x8A, 0x8A, 0x8A, 0x8A, 0x8A, 0x8A, 0x8A, 0x8A, 0x8A, 0x8A, 0x8A, 0x8A, 0x8A,
924  0x8A, 0x8A, 0x8A, 0x8A, 0x8A, 0x8A, 0x8A, 0x8A, 0x8A, 0x8A, 0x8A, 0x8A, 0x8A, 0x8A, 0x8A, 0x8A,
925  0x8A, 0x8A, 0x8A, 0x8A, 0x8A, 0x8A, 0x8A, 0x8A, 0x8A, 0x8A, 0x8A, 0x8A, 0x8A, 0x8A, 0x8A, 0x8A,
926  0x8A, 0x8A, 0x8A, 0x8A, 0x8A, 0x8A, 0x8A, 0x8A, 0x8A, 0x8A, 0x8A, 0x8A, 0x8A, 0x8A, 0x8A, 0x8A,
927  0x8A, 0x8A, 0x8A, 0x8A, 0x8A, 0x8A, 0x8A, 0x8A, 0x8A, 0x8A, 0x8A, 0x89, 0x89, 0x89, 0x89, 0x89,
928  0x89, 0x89, 0x89, 0x89, 0x89, 0x89, 0x89, 0x89, 0x89, 0x89, 0x89, 0x89, 0x89, 0x89, 0x89, 0x89,
929  0x89, 0x89, 0x89, 0x89, 0x89, 0x89, 0x89, 0x89, 0x89, 0x89, 0x89, 0x89, 0x89, 0x89, 0x89, 0x89,
930  0x89, 0x89, 0x89, 0x89, 0x89, 0x89, 0x89, 0x89, 0x89, 0x89, 0x89, 0x89, 0x89, 0x89, 0x89, 0x89,
931  0x89, 0x89, 0x89, 0x89, 0x89, 0x89, 0x89, 0x89, 0x89, 0x89, 0x89, 0x89, 0x89, 0x89, 0x89, 0x89,
932  0x89, 0x89, 0x89, 0x89, 0x89, 0x89, 0x89, 0x89, 0x89, 0x89, 0x89, 0x89, 0x89, 0x89, 0x89, 0x89,
933  0x89, 0x89, 0x89, 0x89, 0x89, 0x89, 0x89, 0x89, 0x89, 0x89, 0x89, 0x89, 0x89, 0x89, 0x89, 0x89,
934  0x89, 0x89, 0x89, 0x89, 0x89, 0x89, 0x89, 0x89, 0x89, 0x89, 0x89, 0x89, 0x89, 0x89, 0x89, 0x89,
935  0x89, 0x89, 0x89, 0x89, 0x89, 0x89, 0x89, 0x89, 0x89, 0x89, 0x89, 0x89, 0x88, 0x88, 0x88, 0x88,
936  0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88,
937  0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88,
938  0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88,
939  0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88,
940  0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88,
941  0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88,
942  0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88,
943  0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x87, 0x87, 0x87, 0x87,
944  0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87,
945  0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87,
946  0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87,
947  0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87,
948  0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87,
949  0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87,
950  0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87,
951  0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x86, 0x86, 0x86,
952  0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86,
953  0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86,
954  0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86,
955  0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86,
956  0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86,
957  0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86,
958  0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86,
959  0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x85, 0x85, 0x85,
960  0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x85,
961  0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x85,
962  0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x85,
963  0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x85,
964  0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x85,
965  0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x85,
966  0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x85,
967  0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x84, 0x84,
968  0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84,
969  0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84,
970  0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84,
971  0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84,
972  0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84,
973  0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84,
974  0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84,
975  0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x83, 0x83,
976  0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83,
977  0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83,
978  0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83,
979  0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83,
980  0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83,
981  0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83,
982  0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83,
983  0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x82,
984  0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82,
985  0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82,
986  0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82,
987  0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82,
988  0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82,
989  0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82,
990  0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82,
991  0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x81,
992  0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81,
993  0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81,
994  0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81,
995  0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81,
996  0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81,
997  0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81,
998  0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81,
999  0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81,
1000  0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80,
1001  0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80,
1002  0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80,
1003  0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80,
1004  0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80,
1005  0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80,
1006  0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80,
1007  0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80
1008 };
1009 uint8 *_l2u = _l2u_ + 4096;
1010 #endif /* LOOKUP_HACK */
1011 
1012 uint8 reverb_macro_presets[] =
1013 {	/* CHARACTER,PRE-LPF,LEVEL,TIME,DELAY FEEDBACK,PREDELAY TIME */
1014 	0,3,64,80,0,0,		/* 00: Room1 */
1015 	1,4,64,56,0,0,		/* 01: Room2 */
1016 	2,0,64,64,0,0,		/* 02: Room3 */
1017 	3,4,64,72,0,0,		/* 03: Hall1 */
1018 	4,0,64,64,0,0,		/* 04: Hall2 */
1019 	5,0,64,88,0,0,		/* 05: Plate */
1020 	6,0,64,32,40,0,		/* 06: Delay */
1021 	7,0,64,64,32,0,		/* 07: Panning Delay */
1022 };
1023 
1024 uint8 chorus_macro_presets[] =
1025 {	/* PRE-LPF,LEVEL,FEEDBACK,DELAY,RATE,DEPTH,SEND TO REVERB,SEND TO DELAY */
1026 	0,64,0,112,3,5,0,0,		/* 00: Chorus1 */
1027 	0,64,5,80,9,19,0,0,		/* 01: Chorus2 */
1028 	0,64,8,80,3,19,0,0,		/* 02: Chorus3 */
1029 	0,64,16,64,9,16,0,0,	/* 03: Chorus4 */
1030 	0,64,64,127,2,24,0,0,	/* 04: Feedback Chorus */
1031 	0,64,112,127,1,5,0,0,	/* 05: Flanger */
1032 	0,64,0,127,0,127,0,0,	/* 06: Short Delay */
1033 	0,64,80,127,0,127,0,0,	/* 07: Short Delay(Feedback) */
1034 };
1035 
1036 uint8 delay_macro_presets[] =
1037 {	/* PRE-LPF,TIME(C),RATIO(L),RATIO(R),LEVEL(C),LEVEL(L),LEVEL(R),LEVEL,FEEDBACK,LEVEL TO REVERB */
1038 	0,97,1,1,127,0,0,64,79,0,		/* 00: Delay1 */
1039 	0,106,1,1,127,0,0,64,79,0,		/* 01: Delay2 */
1040 	0,115,1,1,127,0,0,64,63,0,		/* 02: Delay3 */
1041 	0,83,1,1,127,0,0,64,71,0,		/* 03: Delay4 */
1042 	0,90,12,24,0,125,60,64,73,0,	/* 04: Pan Delay1 */
1043 	0,109,12,24,0,125,60,64,70,0,	/* 05: Pan Delay2 */
1044 	0,115,12,24,0,120,64,64,72,0,	/* 06: Pan Delay3 */
1045 	0,93,12,24,0,120,64,64,63,0,	/* 07: Pan Delay4 */
1046 	0,109,12,24,0,114,60,64,60,36,	/* 08: Delay to Reverb */
1047 	0,110,21,31,97,127,67,64,39,0,	/* 09: Pan Repeat */
1048 };
1049 
1050 float delay_time_center_table[] =
1051 {	/* 0x00~0x73, 0.1ms~1000ms */
1052 	0.1, 0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8, 0.9, 1.0, 1.1, 1.2, 1.3, 1.4, 1.5, 1.6, 1.7, 1.8, 1.9,
1053 	2.0, 2.2, 2.4, 2.6, 2.8, 3.0, 3.2, 3.4, 3.6, 3.8, 4.0, 4.2, 4.4, 4.6, 4.8,
1054 	5.0, 5.5, 6.0, 6.5, 7.0, 7.5, 8.0, 8.5, 9.0, 9.5,
1055 	10, 11, 12, 13, 14, 15, 16, 17, 18, 19,
1056 	20, 22, 24, 26, 28, 30, 32, 34, 36, 38, 40, 42, 44, 46, 48,
1057 	50, 55, 60, 65, 70, 75, 80, 85, 90, 95,
1058 	100, 110, 120, 130, 140, 150, 160, 170, 180, 190,
1059 	200, 220, 240, 260, 280, 300, 320, 340, 360, 380, 400, 420, 440, 460, 480,
1060 	500, 550, 600, 650, 700, 750, 800, 850, 900, 950, 1000,
1061 };
1062 
1063 float pre_delay_time_table[] =
1064 {
1065 	0.0, 0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8, 0.9, 1.0, 1.1, 1.2, 1.3, 1.4, 1.5, 1.6, 1.7, 1.8, 1.9,
1066 	2.0, 2.1, 2.2, 2.3, 2.4, 2.5, 2.6, 2.7, 2.8, 2.9, 3.0, 3.1, 3.2, 3.3, 3.4, 3.5, 3.6, 3.7, 3.8, 3.9,
1067 	4.0, 4.1, 4.2, 4.3, 4.4, 4.5, 4.6, 4.7, 4.8, 4.9,
1068 	5.0, 5.5, 6.0, 6.5, 7.0, 7.5, 8.0, 8.5, 9.0, 9.5,
1069 	10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29,
1070 	30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49,
1071 	50, 52, 54, 56, 58, 60, 62, 64, 66, 68, 70, 72, 74, 76, 78, 80, 82, 84, 86, 88,
1072 	90, 92, 94, 96, 98, 100, 100, 100,
1073 };
1074 
1075 float chorus_delay_time_table[] =
1076 {
1077     0.000000, 0.078740, 0.157480, 0.236220, 0.314961, 0.393701, 0.472441, 0.551181,
1078     0.629921, 0.708661, 0.787402, 0.866142, 0.944882, 1.023622, 1.102362, 1.181102,
1079     1.259843, 1.338583, 1.417323, 1.496063, 1.574803, 1.653543, 1.732283, 1.811024,
1080     1.889764, 1.968504, 2.047244, 2.125984, 2.204724, 2.283465, 2.362205, 2.440945,
1081     2.519685, 2.598425, 2.677165, 2.755906, 2.834646, 2.913386, 2.992126, 3.070866,
1082     3.149606, 3.228346, 3.307087, 3.385827, 3.464567, 3.543307, 3.622047, 3.700787,
1083     3.779528, 3.858268, 3.937008, 4.015748, 4.094488, 4.173228, 4.251969, 4.330709,
1084     4.409449, 4.488189, 4.566929, 4.645669, 4.724409, 4.803150, 4.881890, 4.960630,
1085     5.039370, 5.118110, 5.196850, 5.275591, 5.354331, 5.433071, 5.511811, 5.590551,
1086     5.669291, 5.748031, 5.826772, 5.905512, 5.984252, 6.062992, 6.141732, 6.220472,
1087     6.299213, 6.377953, 6.456693, 6.535433, 6.614173, 6.692913, 6.771654, 6.850394,
1088     6.929134, 7.007874, 7.086614, 7.165354, 7.244094, 7.322835, 7.401575, 7.480315,
1089     7.559055, 7.637795, 7.716535, 7.795276, 10.000000, 10.555556, 11.111111, 11.666667,
1090     12.222222, 12.777778, 13.333333, 13.888889, 14.444444, 15.000000, 15.555556, 16.111111,
1091     16.666667, 17.222222, 17.777778, 18.333333, 18.888889, 19.444444, 20.000000, 20.555556,
1092     21.111111, 21.666667, 22.222222, 22.777778, 23.333333, 23.888889, 24.444444, 25.000000,
1093 };
1094 
1095 float rate1_table[] =
1096 {
1097 	0.05, 0.10, 0.15, 0.20, 0.25, 0.30, 0.35, 0.40, 0.45, 0.50, 0.55, 0.60, 0.65, 0.70, 0.75, 0.80,
1098 	0.85, 0.90, 0.95, 1.00, 1.05, 1.10, 1.15, 1.20, 1.25, 1.30, 1.35, 1.40, 1.45, 1.50, 1.55, 1.60,
1099 	1.65, 1.70, 1.75, 1.80, 1.85, 1.90, 1.95, 2.00, 2.05, 2.10, 2.15, 2.20, 2.25, 2.30, 2.35, 2.40,
1100 	2.45, 2.50, 2.55, 2.60, 2.65, 2.70, 2.75, 2.80, 2.85, 2.90, 2.95, 3.00, 3.05, 3.10, 3.15, 3.20,
1101 	3.25, 3.30, 3.35, 3.40, 3.45, 3.50, 3.55, 3.60, 3.65, 3.70, 3.75, 3.80, 3.85, 3.90, 3.95, 4.00,
1102 	4.05, 4.10, 4.15, 4.20, 4.25, 4.30, 4.35, 4.40, 4.45, 4.50, 4.55, 4.60, 4.65, 4.70, 4.75, 4.80,
1103 	4.85, 4.90, 4.95, 5.00, 5.10, 5.20, 5.30, 5.40, 5.50, 5.60, 5.70, 5.80, 5.90, 6.00, 6.10, 6.20,
1104 	6.30, 6.40, 6.50, 6.60, 6.70, 6.80, 6.90, 7.00, 7.50, 8.00, 8.50, 9.00, 9.50, 10.00, 10.00, 10.00,
1105 };
1106 
1107 /* Derivation of Perceived Volume Curve Equation:
1108  *
1109  *    Given: delta dB = 20 * log10(amplitude_new / amplitude_old)
1110  *           delta dB of 10 == perceived volume change of 2x
1111  *
1112  *    10 = 20 * log10(?)
1113  *    0.5 = log10(?)
1114  *    10^0.5 = ?
1115  *
1116  *    therefore: 2x perceived volume == ~3.16x amplitude
1117  *               4x perceived volume ==    10x amplitude
1118  *
1119  *       Volume         Amplitude
1120  *       ------------   ---------------
1121  *       1              1
1122  *       0.25           0.1
1123  *       0.0625         0.01
1124  *       0.015625       0.001
1125  *       0.00390625     0.0001
1126  *       0.0009765625   0.00001
1127  *       0              0
1128  *
1129  *    Fit curve to table:
1130  *
1131  *       amplification = pow(volume, 1.66096404744)
1132  */
1133 FLOAT_T perceived_vol_table[128];
1134 
init_perceived_vol_table(void)1135 void init_perceived_vol_table(void)
1136 {
1137 	int i;
1138 
1139 	for (i = 0; i < 128; i++)
1140 		perceived_vol_table[i] =
1141 				127.0 * pow((double)i / 127.0, 1.66096404744);
1142 }
1143 
1144 FLOAT_T gm2_vol_table[128];
1145 
init_gm2_vol_table(void)1146 void init_gm2_vol_table(void)
1147 {
1148 	int i;
1149 
1150 	for(i = 0; i < 128; i++)
1151 		gm2_vol_table[i] = (i * i) / 127.0;
1152 }
1153 
1154 FLOAT_T user_vol_table[128];
1155 
init_user_vol_table(FLOAT_T power)1156 void init_user_vol_table(FLOAT_T power)
1157 {
1158 	int i;
1159 
1160 	for (i = 0; i < 128; i++)
1161 		user_vol_table[i] = 127.0 * pow((double)i / 127.0, power);
1162 }
1163 
1164 /* measured value from SC-88STPro.
1165    approximate expression: y = (-0.3768x6 + 0.9528x5 - 0.8253x4 + 0.2665x3 + 0.9892x2 - 0.0059x + 0.001) * 127 */
1166 FLOAT_T sc_vol_table[128] =
1167 {
1168     0.000000, 0.128905, 0.146482, 0.179815, 0.228982, 0.294049, 0.375078, 0.472120,
1169     0.585221, 0.714419, 0.859746, 1.021229, 1.198887, 1.392736, 1.602785, 1.829039,
1170     2.071501, 2.330166, 2.605028, 2.896078, 3.203301, 3.526682, 3.866202, 4.221841,
1171     4.593575, 4.981382, 5.385233, 5.805103, 6.240963, 6.692783, 7.160536, 7.644189,
1172     8.143714, 8.659080, 9.190256, 9.737215, 10.299925, 10.878360, 11.472491, 12.082292,
1173     12.707738, 13.348803, 14.005465, 14.677704, 15.365497, 16.068829, 16.787681, 17.522039,
1174     18.271890, 19.037223, 19.818029, 20.614301, 21.426034, 22.253225, 23.095873, 23.953980,
1175     24.827548, 25.716584, 26.621094, 27.541088, 28.476578, 29.427576, 30.394100, 31.376165,
1176     32.373791, 33.386998, 34.415810, 35.460249, 36.520342, 37.596115, 38.687597, 39.794815,
1177     40.917801, 42.056586, 43.211200, 44.381677, 45.568048, 46.770346, 47.988605, 49.222856,
1178     50.473131, 51.739464, 53.021883, 54.320420, 55.635102, 56.965957, 58.313010, 59.676284,
1179     61.055802, 62.451580, 63.863636, 65.291982, 66.736627, 68.197578, 69.674835, 71.168397,
1180     72.678255, 74.204399, 75.746811, 77.305466, 78.880337, 80.471388, 82.078576, 83.701851,
1181     85.341158, 86.996429, 88.667594, 90.354568, 92.057260, 93.775571, 95.509387, 97.258589,
1182     99.023042, 100.802603, 102.597116, 104.406412, 106.230309, 108.068613, 109.921115, 111.787592,
1183     113.667805, 115.561500, 117.468408, 119.388243, 121.320699, 123.265458, 125.222177, 127.000000,
1184 };
1185 
1186 /* measured value from SC-88STPro.
1187    approximate expression: y = (-1.5374x6 + 4.4002x5 - 4.8309x4 + 2.572x3 + 0.1487x2 + 0.2412x + 0.0044) * 127 */
1188 FLOAT_T sc_vel_table[128] =
1189 {
1190     0.000000, 0.801328, 1.047122, 1.297056, 1.551953, 1.812583, 2.079668, 2.353885,
1191     2.635863, 2.926190, 3.225412, 3.534034, 3.852525, 4.181317, 4.520806, 4.871357,
1192     5.233303, 5.606946, 5.992560, 6.390392, 6.800666, 7.223577, 7.659301, 8.107993,
1193     8.569785, 9.044792, 9.533111, 10.034824, 10.549997, 11.078680, 11.620912, 12.176722,
1194     12.746124, 13.329126, 13.925725, 14.535911, 15.159666, 15.796968, 16.447787, 17.112090,
1195     17.789842, 18.481003, 19.185529, 19.903380, 20.634509, 21.378873, 22.136426, 22.907127,
1196     23.690932, 24.487801, 25.297696, 26.120582, 26.956425, 27.805197, 28.666872, 29.541428,
1197     30.428848, 31.329119, 32.242232, 33.168184, 34.106974, 35.058609, 36.023099, 37.000459,
1198     37.990710, 38.993877, 40.009989, 41.039080, 42.081190, 43.136361, 44.204639, 45.286075,
1199     46.380723, 47.488640, 48.609885, 49.744520, 50.892609, 52.054217, 53.229410, 54.418254,
1200     55.620816, 56.837160, 58.067351, 59.311450, 60.569517, 61.841607, 63.127770, 64.428053,
1201     65.742497, 67.071133, 68.413988, 69.771079, 71.142412, 72.527985, 73.927782, 75.341776,
1202     76.769925, 78.212172, 79.668444, 81.138652, 82.622687, 84.120420, 85.631702, 87.156361,
1203     88.694200, 90.244998, 91.808507, 93.384452, 94.972526, 96.572391, 98.183679, 99.805985,
1204     101.438869, 103.081852, 104.734417, 106.396007, 108.066018, 109.743805, 111.428675, 113.119886,
1205     114.816648, 116.518116, 118.223392, 119.931522, 121.641492, 123.352230, 125.062599, 127.000000,
1206 };
1207 
1208 FLOAT_T sc_pan_table[129] =
1209 {
1210 	0.000000, 0.000000, 0.999479, 2.011744, 3.036530, 4.073569, 5.122593, 6.183332,
1211 	7.255517, 8.338874, 9.433131, 10.538014, 11.653247, 12.778552, 13.913653, 15.058271,
1212 	16.212123, 17.374930, 18.546409, 19.726275, 20.914243, 22.110027, 23.313339, 24.523890,
1213 	25.741391, 26.965550, 28.196074, 29.432671, 30.675045, 31.922900, 33.175939, 34.433863,
1214 	35.696373, 36.963168, 38.233946, 39.508403, 40.786235, 42.067137, 43.350800, 44.636918,
1215 	45.925181, 47.215278, 48.506897, 49.799726, 51.093451, 52.387755, 53.682323, 54.976837,
1216 	56.270977, 57.564424, 58.856855, 60.147950, 61.437382, 62.724829, 64.009963, 65.292456,
1217 	66.571981, 67.848208, 69.120804, 70.389439, 71.653778, 72.913487, 74.168230, 75.417670,
1218 	76.661468, 77.899286, 79.130781, 80.355614, 81.573439, 82.783913, 83.986691, 85.181425,
1219 	86.367767, 87.545369, 88.713880, 89.872949, 91.022222, 92.161346, 93.289965, 94.407723,
1220 	95.514263, 96.609225, 97.692249, 98.762975, 99.821039, 100.866079, 101.897729, 102.915623,
1221 	103.919394, 104.908673, 105.883091, 106.842276, 107.785858, 108.713461, 109.624713, 110.519236,
1222 	111.396655, 112.256590, 113.098663, 113.922493, 114.727699, 115.513896, 116.280702, 117.027730,
1223 	117.754595, 118.460908, 119.146280, 119.810321, 120.452639, 121.072843, 121.670538, 122.245328,
1224 	122.796819, 123.324612, 123.828308, 124.307509, 124.761812, 125.190815, 125.594115, 125.971307,
1225 	126.321986, 126.645744, 126.942172, 127.210862, 127.451402, 127.663381, 127.846385, 128.000000,
1226 	128.000000,
1227 };
1228 
1229 FLOAT_T gm2_pan_table[129];
1230 FLOAT_T *pan_table = sc_pan_table;
1231 
init_gm2_pan_table(void)1232 void init_gm2_pan_table(void)
1233 {
1234 	int i;
1235 
1236 	gm2_pan_table[0] = 0;
1237 	for(i = 0; i < 127; i++)
1238 		gm2_pan_table[i + 1] = sin(M_PI / 2 * i / 126) * 128;
1239 								/* lookup_sine(i * SINE_CYCLE_LENGTH / 4 / 126) */
1240 	gm2_pan_table[128] = 128.0;
1241 }
1242 
1243 FLOAT_T sc_drum_level_table[128] =
1244 {
1245     0.007874, 0.007874, 0.031496, 0.070866, 0.125984, 0.196850, 0.283465, 0.385827,
1246     0.503937, 0.637795, 0.787402, 0.952756, 1.133858, 1.330709, 1.543307, 1.771654,
1247     2.015748, 2.275591, 2.551181, 2.842520, 3.149606, 3.472441, 3.811024, 4.165354,
1248     4.535433, 4.921260, 5.322835, 5.740157, 6.173228, 6.622047, 7.086614, 7.566929,
1249     8.062992, 8.574803, 9.102362, 9.645669, 10.204724, 10.779528, 11.370079, 11.976378,
1250     12.598425, 13.236220, 13.889764, 14.559055, 15.244094, 15.944882, 16.661417, 17.393701,
1251     18.141732, 18.905512, 19.685039, 20.480315, 21.291339, 22.118110, 22.960630, 23.818898,
1252     24.692913, 25.582677, 26.488189, 27.409449, 28.346457, 29.299213, 30.267717, 31.251969,
1253     32.251969, 33.267717, 34.299213, 35.346457, 36.409449, 37.488189, 38.582677, 39.692913,
1254     40.818898, 41.960630, 43.118110, 44.291339, 45.480315, 46.685039, 47.905512, 49.141732,
1255     50.393701, 51.661417, 52.944882, 54.244094, 55.559055, 56.889764, 58.236220, 59.598425,
1256     60.976378, 62.370079, 63.779528, 65.204724, 66.645669, 68.102362, 69.574803, 71.062992,
1257     72.566929, 74.086614, 75.622047, 77.173228, 78.740157, 80.322835, 81.921260, 83.535433,
1258     85.165354, 86.811024, 88.472441, 90.149606, 91.842520, 93.551181, 95.275591, 97.015748,
1259     98.771654, 100.543307, 102.330709, 104.133858, 105.952756, 107.787402, 109.637795, 111.503937,
1260     113.385827, 115.283465, 117.196850, 119.125984, 121.070866, 123.031496, 125.007874, 127.000000,
1261 };
1262 
1263 FLOAT_T attack_vol_table[1024];
1264 
init_attack_vol_table(void)1265 void init_attack_vol_table(void)
1266 {
1267 	int i;
1268 
1269 	for (i = 0; i < 1024; i++)
1270 		attack_vol_table[i] = i / 1023.0;
1271 }
1272 
1273 float sc_eg_decay_table[128] =
1274 {
1275     81.841218, 81.841218, 81.841218, 81.841218, 81.841218, 81.841218, 81.841218, 81.841218,
1276     81.841218, 81.841218, 81.841218, 81.841218, 81.841218, 81.841218, 81.841218, 81.841218,
1277     81.841218, 81.841218, 81.841218, 81.841218, 81.841218, 81.841218, 74.928977, 68.580327,
1278     62.750584, 57.398521, 52.486110, 47.978275, 43.842671, 40.049475, 36.571192, 33.382477,
1279     30.459975, 27.782161, 25.329207, 23.082845, 21.026252, 19.143935, 17.421629, 15.846202,
1280     14.405568, 13.088604, 11.885077, 10.785570, 9.781425, 8.864676, 8.028000, 7.264663,
1281     6.568475, 5.933745, 5.355241, 4.828153, 4.348058, 3.910885, 3.512890, 3.150618,
1282     2.820877, 2.520709, 2.247348, 1.998183, 1.770681, 1.562261, 1.369978, 1.189386,
1283     1.000000, 0.838459, 0.726301, 0.635581, 0.559656, 0.494986, 0.439286, 0.390934,
1284     0.348712, 0.311669, 0.279045, 0.250221, 0.224684, 0.202006, 0.181825, 0.163831,
1285     0.147761, 0.133387, 0.120513, 0.108967, 0.098600, 0.089282, 0.080897, 0.073346,
1286     0.066540, 0.060399, 0.054854, 0.049845, 0.045315, 0.041217, 0.037506, 0.034144,
1287     0.031097, 0.028333, 0.025826, 0.023549, 0.021480, 0.019601, 0.017892, 0.016337,
1288     0.014923, 0.013635, 0.012462, 0.011394, 0.011394, 0.011394, 0.011394, 0.011394,
1289     0.011394, 0.011394, 0.011394, 0.011394, 0.011394, 0.011394, 0.011394, 0.011394,
1290     0.011394, 0.011394, 0.011394, 0.011394, 0.011394, 0.011394, 0.011394, 0.011394,
1291 };
1292 
1293 float sc_eg_release_table[128] =
1294 {
1295     27.322002, 27.322002, 27.322002, 27.322002, 27.322002, 27.322002, 27.322002, 27.322002,
1296     27.322002, 27.322002, 27.322002, 27.322002, 27.322002, 27.322002, 27.322002, 27.322002,
1297     27.322002, 27.322002, 27.322002, 27.322002, 27.322002, 27.322002, 25.299110, 23.425992,
1298     21.691556, 20.085537, 18.598425, 17.221418, 15.946363, 14.765711, 13.672474, 12.660179,
1299     11.722833, 10.854887, 10.051203, 9.307023, 8.617941, 7.979878, 7.389056, 6.841978,
1300     6.335406, 5.866339, 5.432002, 5.029822, 4.657419, 4.312589, 3.993290, 3.697631,
1301     3.423862, 3.170363, 2.935633, 2.718282, 2.517023, 2.330665, 2.158106, 1.998322,
1302     1.850368, 1.713369, 1.586513, 1.469049, 1.360282, 1.259569, 1.166311, 1.079959,
1303     1.000000, 0.925961, 0.857404, 0.793923, 0.735141, 0.680712, 0.630313, 0.583645,
1304     0.540433, 0.500420, 0.463369, 0.429062, 0.397295, 0.367879, 0.340642, 0.315421,
1305     0.292068, 0.270443, 0.250420, 0.231879, 0.214711, 0.198814, 0.184094, 0.170464,
1306     0.157843, 0.146157, 0.135335, 0.125315, 0.116037, 0.107446, 0.099491, 0.092124,
1307     0.085304, 0.078988, 0.073140, 0.067724, 0.062710, 0.058067, 0.053768, 0.049787,
1308     0.046101, 0.042688, 0.039527, 0.036601, 0.036601, 0.036601, 0.036601, 0.036601,
1309     0.036601, 0.036601, 0.036601, 0.036601, 0.036601, 0.036601, 0.036601, 0.036601,
1310     0.036601, 0.036601, 0.036601, 0.036601, 0.036601, 0.036601, 0.036601, 0.036601,
1311 };
1312 
1313 float sc_eg_attack_table[128] =
1314 {
1315     82.756924, 82.756924, 82.756924, 82.756924, 82.756924, 82.756924, 82.756924, 82.756924,
1316     82.756924, 82.756924, 82.756924, 82.756924, 82.756924, 82.756924, 82.756924, 82.756924,
1317     82.756924, 82.756924, 82.756924, 82.756924, 82.756924, 82.756924, 75.473398, 68.815182,
1318     62.729632, 57.168464, 52.087395, 47.445819, 43.206507, 39.335325, 35.800987, 32.574817,
1319     29.630534, 26.944060, 24.493331, 22.258137, 20.219967, 18.361866, 16.668311, 15.125088,
1320     13.719184, 12.438688, 11.272700, 10.211246, 9.245197, 8.366205, 7.566631, 6.839489,
1321     6.178391, 5.577493, 5.031451, 4.535378, 4.084805, 3.675641, 3.304143, 2.966879,
1322     2.660703, 2.382715, 2.130237, 1.900768, 1.691929, 1.501374, 1.326560, 1.163993,
1323     1.000000, 0.859112, 0.753830, 0.666057, 0.591041, 0.526103, 0.469431, 0.419689,
1324     0.375841, 0.337054, 0.302650, 0.272061, 0.244810, 0.220489, 0.198750, 0.179292,
1325     0.161854, 0.146210, 0.132159, 0.119529, 0.108164, 0.097931, 0.088710, 0.080394,
1326     0.072891, 0.066115, 0.059994, 0.054461, 0.049456, 0.044927, 0.040827, 0.037114,
1327     0.033749, 0.030699, 0.027932, 0.025422, 0.023145, 0.021077, 0.019199, 0.017492,
1328     0.015941, 0.014532, 0.013250, 0.012084, 0.012084, 0.012084, 0.012084, 0.012084,
1329     0.012084, 0.012084, 0.012084, 0.012084, 0.012084, 0.012084, 0.012084, 0.012084,
1330     0.012084, 0.012084, 0.012084, 0.012084, 0.012084, 0.012084, 0.012084, 0.012084,
1331 };
1332 
1333 FLOAT_T sb_vol_table[1024];
1334 
init_sb_vol_table(void)1335 void init_sb_vol_table(void)
1336 {
1337 	int i;
1338 
1339 	for (i = 0; i < 1024; i++)
1340 		sb_vol_table[i] = pow(10.0, (double)(1023 - i) * 960.0 / (1023.0 * -200.0));
1341 }
1342 
1343 FLOAT_T modenv_vol_table[1024];
1344 
init_modenv_vol_table(void)1345 void init_modenv_vol_table(void)
1346 {
1347 	int i;
1348 	double x;
1349 
1350 	modenv_vol_table[0] = (float)0;
1351 	for (i = 1; i < 1023; i++) {
1352 		x = (1.0 - (-20.0 / 96.0 * log(((double)i * (double)i) / (1023.0 * 1023.0)) / log(10.0)));
1353 		if (x < 0) {x = 0;}
1354 		modenv_vol_table[i] = log(x + 1) / log(2);
1355 	}
1356 	modenv_vol_table[1023] = (float)1.0;
1357 }
1358 
1359 float cb_to_amp_table[961] =
1360 {
1361     1.000000, 0.995677, 0.991373, 0.987088, 0.982821, 0.978572, 0.974342, 0.970130,
1362     0.965936, 0.961761, 0.957603, 0.953464, 0.949342, 0.945238, 0.941152, 0.937084,
1363     0.933033, 0.929000, 0.924984, 0.920985, 0.917004, 0.913040, 0.909093, 0.905163,
1364     0.901250, 0.897355, 0.893475, 0.889613, 0.885768, 0.881939, 0.878126, 0.874330,
1365     0.870551, 0.866787, 0.863040, 0.859310, 0.855595, 0.851896, 0.848214, 0.844547,
1366     0.840896, 0.837261, 0.833642, 0.830038, 0.826450, 0.822878, 0.819321, 0.815779,
1367     0.812252, 0.808741, 0.805245, 0.801764, 0.798298, 0.794848, 0.791412, 0.787990,
1368     0.784584, 0.781192, 0.777816, 0.774453, 0.771105, 0.767772, 0.764453, 0.761149,
1369     0.757858, 0.754582, 0.751320, 0.748072, 0.744839, 0.741619, 0.738413, 0.735221,
1370     0.732043, 0.728878, 0.725728, 0.722590, 0.719467, 0.716357, 0.713260, 0.710177,
1371     0.707107, 0.704050, 0.701007, 0.697976, 0.694959, 0.691955, 0.688964, 0.685986,
1372     0.683020, 0.680068, 0.677128, 0.674201, 0.671286, 0.668384, 0.665495, 0.662618,
1373     0.659754, 0.656902, 0.654062, 0.651235, 0.648420, 0.645617, 0.642826, 0.640047,
1374     0.637280, 0.634525, 0.631783, 0.629051, 0.626332, 0.623625, 0.620929, 0.618245,
1375     0.615572, 0.612911, 0.610262, 0.607624, 0.604997, 0.602382, 0.599778, 0.597185,
1376     0.594604, 0.592033, 0.589474, 0.586926, 0.584389, 0.581862, 0.579347, 0.576843,
1377     0.574349, 0.571866, 0.569394, 0.566933, 0.564482, 0.562042, 0.559612, 0.557193,
1378     0.554785, 0.552387, 0.549999, 0.547621, 0.545254, 0.542897, 0.540550, 0.538213,
1379     0.535887, 0.533570, 0.531264, 0.528967, 0.526681, 0.524404, 0.522137, 0.519880,
1380     0.517632, 0.515395, 0.513167, 0.510949, 0.508740, 0.506541, 0.504351, 0.502171,
1381     0.500000, 0.497839, 0.495687, 0.493544, 0.491410, 0.489286, 0.487171, 0.485065,
1382     0.482968, 0.480880, 0.478802, 0.476732, 0.474671, 0.472619, 0.470576, 0.468542,
1383     0.466516, 0.464500, 0.462492, 0.460493, 0.458502, 0.456520, 0.454547, 0.452582,
1384     0.450625, 0.448677, 0.446738, 0.444807, 0.442884, 0.440969, 0.439063, 0.437165,
1385     0.435275, 0.433394, 0.431520, 0.429655, 0.427798, 0.425948, 0.424107, 0.422274,
1386     0.420448, 0.418631, 0.416821, 0.415019, 0.413225, 0.411439, 0.409660, 0.407889,
1387     0.406126, 0.404371, 0.402623, 0.400882, 0.399149, 0.397424, 0.395706, 0.393995,
1388     0.392292, 0.390596, 0.388908, 0.387227, 0.385553, 0.383886, 0.382227, 0.380574,
1389     0.378929, 0.377291, 0.375660, 0.374036, 0.372419, 0.370809, 0.369207, 0.367611,
1390     0.366021, 0.364439, 0.362864, 0.361295, 0.359733, 0.358178, 0.356630, 0.355088,
1391     0.353553, 0.352025, 0.350503, 0.348988, 0.347480, 0.345977, 0.344482, 0.342993,
1392     0.341510, 0.340034, 0.338564, 0.337100, 0.335643, 0.334192, 0.332748, 0.331309,
1393     0.329877, 0.328451, 0.327031, 0.325617, 0.324210, 0.322808, 0.321413, 0.320024,
1394     0.318640, 0.317263, 0.315891, 0.314526, 0.313166, 0.311812, 0.310464, 0.309122,
1395     0.307786, 0.306456, 0.305131, 0.303812, 0.302499, 0.301191, 0.299889, 0.298593,
1396     0.297302, 0.296017, 0.294737, 0.293463, 0.292194, 0.290931, 0.289674, 0.288421,
1397     0.287175, 0.285933, 0.284697, 0.283466, 0.282241, 0.281021, 0.279806, 0.278597,
1398     0.277392, 0.276193, 0.274999, 0.273811, 0.272627, 0.271448, 0.270275, 0.269107,
1399     0.267943, 0.266785, 0.265632, 0.264484, 0.263340, 0.262202, 0.261068, 0.259940,
1400     0.258816, 0.257697, 0.256583, 0.255474, 0.254370, 0.253270, 0.252175, 0.251085,
1401     0.250000, 0.248919, 0.247843, 0.246772, 0.245705, 0.244643, 0.243585, 0.242533,
1402     0.241484, 0.240440, 0.239401, 0.238366, 0.237336, 0.236310, 0.235288, 0.234271,
1403     0.233258, 0.232250, 0.231246, 0.230246, 0.229251, 0.228260, 0.227273, 0.226291,
1404     0.225313, 0.224339, 0.223369, 0.222403, 0.221442, 0.220485, 0.219532, 0.218583,
1405     0.217638, 0.216697, 0.215760, 0.214827, 0.213899, 0.212974, 0.212053, 0.211137,
1406     0.210224, 0.209315, 0.208411, 0.207510, 0.206613, 0.205719, 0.204830, 0.203945,
1407     0.203063, 0.202185, 0.201311, 0.200441, 0.199575, 0.198712, 0.197853, 0.196998,
1408     0.196146, 0.195298, 0.194454, 0.193613, 0.192776, 0.191943, 0.191113, 0.190287,
1409     0.189465, 0.188646, 0.187830, 0.187018, 0.186210, 0.185405, 0.184603, 0.183805,
1410     0.183011, 0.182220, 0.181432, 0.180648, 0.179867, 0.179089, 0.178315, 0.177544,
1411     0.176777, 0.176013, 0.175252, 0.174494, 0.173740, 0.172989, 0.172241, 0.171496,
1412     0.170755, 0.170017, 0.169282, 0.168550, 0.167822, 0.167096, 0.166374, 0.165655,
1413     0.164938, 0.164225, 0.163516, 0.162809, 0.162105, 0.161404, 0.160706, 0.160012,
1414     0.159320, 0.158631, 0.157946, 0.157263, 0.156583, 0.155906, 0.155232, 0.154561,
1415     0.153893, 0.153228, 0.152565, 0.151906, 0.151249, 0.150595, 0.149944, 0.149296,
1416     0.148651, 0.148008, 0.147368, 0.146731, 0.146097, 0.145466, 0.144837, 0.144211,
1417     0.143587, 0.142967, 0.142349, 0.141733, 0.141121, 0.140511, 0.139903, 0.139298,
1418     0.138696, 0.138097, 0.137500, 0.136905, 0.136313, 0.135724, 0.135138, 0.134553,
1419     0.133972, 0.133393, 0.132816, 0.132242, 0.131670, 0.131101, 0.130534, 0.129970,
1420     0.129408, 0.128849, 0.128292, 0.127737, 0.127185, 0.126635, 0.126088, 0.125543,
1421     0.125000, 0.124460, 0.123922, 0.123386, 0.122853, 0.122322, 0.121793, 0.121266,
1422     0.120742, 0.120220, 0.119700, 0.119183, 0.118668, 0.118155, 0.117644, 0.117135,
1423     0.116629, 0.116125, 0.115623, 0.115123, 0.114626, 0.114130, 0.113637, 0.113145,
1424     0.112656, 0.112169, 0.111684, 0.111202, 0.110721, 0.110242, 0.109766, 0.109291,
1425     0.108819, 0.108348, 0.107880, 0.107414, 0.106949, 0.106487, 0.106027, 0.105568,
1426     0.105112, 0.104658, 0.104205, 0.103755, 0.103306, 0.102860, 0.102415, 0.101972,
1427     0.101532, 0.101093, 0.100656, 0.100221, 0.099787, 0.099356, 0.098926, 0.098499,
1428     0.098073, 0.097649, 0.097227, 0.096807, 0.096388, 0.095972, 0.095557, 0.095144,
1429     0.094732, 0.094323, 0.093915, 0.093509, 0.093105, 0.092702, 0.092302, 0.091903,
1430     0.091505, 0.091110, 0.090716, 0.090324, 0.089933, 0.089545, 0.089158, 0.088772,
1431     0.088388, 0.088006, 0.087626, 0.087247, 0.086870, 0.086494, 0.086120, 0.085748,
1432     0.085378, 0.085008, 0.084641, 0.084275, 0.083911, 0.083548, 0.083187, 0.082827,
1433     0.082469, 0.082113, 0.081758, 0.081404, 0.081052, 0.080702, 0.080353, 0.080006,
1434     0.079660, 0.079316, 0.078973, 0.078631, 0.078292, 0.077953, 0.077616, 0.077281,
1435     0.076947, 0.076614, 0.076283, 0.075953, 0.075625, 0.075298, 0.074972, 0.074648,
1436     0.074325, 0.074004, 0.073684, 0.073366, 0.073049, 0.072733, 0.072418, 0.072105,
1437     0.071794, 0.071483, 0.071174, 0.070867, 0.070560, 0.070255, 0.069952, 0.069649,
1438     0.069348, 0.069048, 0.068750, 0.068453, 0.068157, 0.067862, 0.067569, 0.067277,
1439     0.066986, 0.066696, 0.066408, 0.066121, 0.065835, 0.065550, 0.065267, 0.064985,
1440     0.064704, 0.064424, 0.064146, 0.063869, 0.063592, 0.063318, 0.063044, 0.062771,
1441     0.062500, 0.062230, 0.061961, 0.061693, 0.061426, 0.061161, 0.060896, 0.060633,
1442     0.060371, 0.060110, 0.059850, 0.059591, 0.059334, 0.059077, 0.058822, 0.058568,
1443     0.058315, 0.058062, 0.057811, 0.057562, 0.057313, 0.057065, 0.056818, 0.056573,
1444     0.056328, 0.056085, 0.055842, 0.055601, 0.055360, 0.055121, 0.054883, 0.054646,
1445     0.054409, 0.054174, 0.053940, 0.053707, 0.053475, 0.053244, 0.053013, 0.052784,
1446     0.052556, 0.052329, 0.052103, 0.051877, 0.051653, 0.051430, 0.051208, 0.050986,
1447     0.050766, 0.050546, 0.050328, 0.050110, 0.049894, 0.049678, 0.049463, 0.049249,
1448     0.049037, 0.048825, 0.048613, 0.048403, 0.048194, 0.047986, 0.047778, 0.047572,
1449     0.047366, 0.047161, 0.046958, 0.046755, 0.046552, 0.046351, 0.046151, 0.045951,
1450     0.045753, 0.045555, 0.045358, 0.045162, 0.044967, 0.044772, 0.044579, 0.044386,
1451     0.044194, 0.044003, 0.043813, 0.043624, 0.043435, 0.043247, 0.043060, 0.042874,
1452     0.042689, 0.042504, 0.042320, 0.042138, 0.041955, 0.041774, 0.041593, 0.041414,
1453     0.041235, 0.041056, 0.040879, 0.040702, 0.040526, 0.040351, 0.040177, 0.040003,
1454     0.039830, 0.039658, 0.039486, 0.039316, 0.039146, 0.038977, 0.038808, 0.038640,
1455     0.038473, 0.038307, 0.038141, 0.037976, 0.037812, 0.037649, 0.037486, 0.037324,
1456     0.037163, 0.037002, 0.036842, 0.036683, 0.036524, 0.036366, 0.036209, 0.036053,
1457     0.035897, 0.035742, 0.035587, 0.035433, 0.035280, 0.035128, 0.034976, 0.034825,
1458     0.034674, 0.034524, 0.034375, 0.034226, 0.034078, 0.033931, 0.033784, 0.033638,
1459     0.033493, 0.033348, 0.033204, 0.033060, 0.032918, 0.032775, 0.032634, 0.032492,
1460     0.032352, 0.032212, 0.032073, 0.031934, 0.031796, 0.031659, 0.031522, 0.031386,
1461     0.031250, 0.031115, 0.030980, 0.030846, 0.030713, 0.030580, 0.030448, 0.030317,
1462     0.030186, 0.030055, 0.029925, 0.029796, 0.029667, 0.029539, 0.029411, 0.029284,
1463     0.029157, 0.029031, 0.028906, 0.028781, 0.028656, 0.028533, 0.028409, 0.028286,
1464     0.028164, 0.028042, 0.027921, 0.027800, 0.027680, 0.027561, 0.027441, 0.027323,
1465     0.027205, 0.027087, 0.026970, 0.026853, 0.026737, 0.026622, 0.026507, 0.026392,
1466     0.026278, 0.026164, 0.026051, 0.025939, 0.025827, 0.025715, 0.025604, 0.025493,
1467     0.025383, 0.025273, 0.025164, 0.025055, 0.024947, 0.024839, 0.024732, 0.024625,
1468     0.024518, 0.024412, 0.024307, 0.024202, 0.024097, 0.023993, 0.023889, 0.023786,
1469     0.023683, 0.023581, 0.023479, 0.023377, 0.023276, 0.023176, 0.023075, 0.022976,
1470     0.022876, 0.022777, 0.022679, 0.022581, 0.022483, 0.022386, 0.022289, 0.022193,
1471     0.022097, 0.022002, 0.021906, 0.021812, 0.021717, 0.021624, 0.021530, 0.021437,
1472     0.021344, 0.021252, 0.021160, 0.021069, 0.020978, 0.020887, 0.020797, 0.020707,
1473     0.020617, 0.020528, 0.020439, 0.020351, 0.020263, 0.020176, 0.020088, 0.020001,
1474     0.019915, 0.019829, 0.019743, 0.019658, 0.019573, 0.019488, 0.019404, 0.019320,
1475     0.019237, 0.019153, 0.019071, 0.018988, 0.018906, 0.018824, 0.018743, 0.018662,
1476     0.018581, 0.018501, 0.018421, 0.018341, 0.018262, 0.018183, 0.018105, 0.018026,
1477     0.017948, 0.017871, 0.017794, 0.017717, 0.017640, 0.017564, 0.017488, 0.017412,
1478     0.017337, 0.017262, 0.017187, 0.017113, 0.017039, 0.016966, 0.016892, 0.016819,
1479     0.016746, 0.016674, 0.016602, 0.016530, 0.016459, 0.016388, 0.016317, 0.016246,
1480     0.016176, 0.016106, 0.016036, 0.015967, 0.015898, 0.015829, 0.015761, 0.015693,
1481     0.015625,
1482 };
1483 
1484 /* Reverb Time in sec */
1485 float reverb_time_table[128] =
1486 {
1487     0.410349, 0.440872, 0.468882, 0.494640, 0.518394, 0.540373, 0.560793, 0.579854,
1488     0.597743, 0.614635, 0.630688, 0.646053, 0.660866, 0.675251, 0.689325, 0.703192,
1489     0.716947, 0.730676, 0.744456, 0.758358, 0.772441, 0.786761, 0.801365, 0.816293,
1490     0.831583, 0.847262, 0.863356, 0.879886, 0.896866, 0.914308, 0.932223, 0.950614,
1491     0.969484, 0.988835, 1.008663, 1.028967, 1.049741, 1.070980, 1.092677, 1.114826,
1492     1.137419, 1.160450, 1.183914, 1.207803, 1.232115, 1.256845, 1.281992, 1.307556,
1493     1.333540, 1.359947, 1.386784, 1.414061, 1.441788, 1.469982, 1.498661, 1.527845,
1494     1.557561, 1.587836, 1.618703, 1.650199, 1.682363, 1.715240, 1.748879, 1.783333,
1495     1.818659, 1.854921, 1.892183, 1.930517, 1.970001, 2.010713, 2.052741, 2.096173,
1496     2.141107, 2.187641, 2.235880, 2.285935, 2.337920, 2.391955, 2.448163, 2.506674,
1497     2.567622, 2.631144, 2.697384, 2.766490, 2.838612, 2.913907, 2.992536, 3.074662,
1498     3.160454, 3.250085, 3.343730, 3.441570, 3.543786, 3.650566, 3.762098, 3.878575,
1499     4.000192, 4.127146, 4.259638, 4.397868, 4.542042, 4.692364, 4.849041, 5.012281,
1500     5.182294, 5.359289, 5.543476, 5.735064, 5.934264, 6.141286, 6.356336, 6.356336,
1501     6.356336, 6.356336, 6.356336, 6.356336, 6.356336, 6.356336, 6.356336, 6.356336,
1502     6.356336, 6.356336, 6.356336, 6.356336, 6.356336, 6.356336, 6.356336, 6.356336,
1503 };
1504 
1505 /* phase lag between left and right ear. (in ms) */
1506 float pan_delay_table[128] =
1507 {
1508     0.000000, 0.006136, 0.012271, 0.018404, 0.024534, 0.030660, 0.036782, 0.042899,
1509     0.049009, 0.055111, 0.061205, 0.067290, 0.073365, 0.079429, 0.085481, 0.091520,
1510     0.097545, 0.103556, 0.109551, 0.115529, 0.121490, 0.127433, 0.133356, 0.139260,
1511     0.145142, 0.151003, 0.156841, 0.162655, 0.168445, 0.174209, 0.179948, 0.185659,
1512     0.191342, 0.196996, 0.202621, 0.208215, 0.213778, 0.219308, 0.224806, 0.230269,
1513     0.235698, 0.241092, 0.246449, 0.251769, 0.257051, 0.262295, 0.267499, 0.272662,
1514     0.277785, 0.282866, 0.287904, 0.292899, 0.297850, 0.302756, 0.307616, 0.312430,
1515     0.317197, 0.321916, 0.326586, 0.331208, 0.335779, 0.340300, 0.344770, 0.349188,
1516     0.353553, 0.357865, 0.362124, 0.366327, 0.370476, 0.374568, 0.378604, 0.382584,
1517     0.386505, 0.390369, 0.394173, 0.397918, 0.401604, 0.405229, 0.408792, 0.412295,
1518     0.415735, 0.419112, 0.422427, 0.425678, 0.428864, 0.431986, 0.435043, 0.438035,
1519     0.440961, 0.443820, 0.446612, 0.449337, 0.451995, 0.454584, 0.457105, 0.459557,
1520     0.461940, 0.464253, 0.466496, 0.468670, 0.470772, 0.472804, 0.474764, 0.476653,
1521     0.478470, 0.480215, 0.481888, 0.483488, 0.485016, 0.486470, 0.487851, 0.489159,
1522     0.490393, 0.491553, 0.492639, 0.493651, 0.494588, 0.495451, 0.496240, 0.496953,
1523     0.497592, 0.498156, 0.498645, 0.499059, 0.499398, 0.499661, 0.499849, 0.500000,
1524 };
1525 
1526 /* for 0dB, 0.25dB, 0.5dB,..., 24dB. */
1527 float chamberlin_filter_db_to_q_table[97] =
1528 {
1529     1.000000, 1.000000, 1.000000, 1.000000, 1.000000, 1.000000, 1.000000, 1.000000,
1530     1.000000, 1.000000, 1.000000, 1.000000, 1.000000, 1.000000, 1.000000, 1.000000,
1531     1.000000, 1.000000, 1.000000, 1.000000, 1.000000, 1.029207, 1.113701, 1.205132,
1532     1.304068, 1.411127, 1.526975, 1.652334, 1.787984, 1.934771, 2.093608, 2.265485,
1533     2.451472, 2.652729, 2.870507, 3.106165, 3.361169, 3.637108, 3.935700, 4.258806,
1534     4.608437, 4.986772, 5.396167, 5.839171, 6.318544, 6.837272, 7.398585, 8.005980,
1535     8.663240, 9.374459, 10.144065, 10.976853, 11.878010, 12.853149, 13.908342, 15.050163,
1536     16.285723, 17.622717, 19.069474, 20.635003, 22.329057, 24.162185, 26.145807, 28.292276,
1537     30.614961, 33.128330, 35.848037, 38.791022, 41.975614, 45.421648, 49.150589, 53.185661,
1538     57.551996, 62.276791, 67.389473, 72.921887, 78.908490, 85.386569, 92.396474, 99.981865,
1539     108.189987, 117.071964, 126.683116, 137.083307, 148.337313, 160.515229, 173.692904, 187.952416,
1540     203.382577, 220.079495, 238.147165, 257.698120, 278.854132, 301.746971, 326.519223, 353.325180,
1541     382.331802,
1542 };
1543 
1544 uint8 multi_eq_block_table_xg[] =
1545 {	/* Gain1, Freq1, Q1, Shape1, Gain2, Freq2, Q2, Not Used, Gain3, Freq3, Q3, Not Used,
1546 	Gain4, Freq4, Q4, Not Used, Gain5, Freq5, Shape5 */
1547 	64, 12, 7, 0, 64, 28, 7, 0, 64, 34, 7, 0, 64, 46, 7, 0, 64, 52, 7, 0,	/* Flat */
1548 	58, 8, 7, 0, 66, 16, 3, 0, 68, 33, 3, 0, 60, 44, 5, 0, 58, 50, 7, 0,	/* Jazz */
1549 	68, 16, 7, 0, 60, 24, 20, 0, 67, 34, 7, 0, 60, 40, 20, 0, 70, 48, 7, 0,	/* Pops */
1550 	71, 16, 7, 0, 68, 20, 7, 0, 60, 36, 5, 0, 68, 41, 10, 0, 66, 50, 7, 0,	/* Rock */
1551 	67, 12, 7, 0, 68, 24, 7, 0, 64, 34, 5, 0, 66, 50, 7, 0, 61, 52, 7, 0,	/* Concert */
1552 };
1553 
1554 float eq_freq_table_xg[] =
1555 {
1556 	20, 22, 25, 28, 32, 36, 40, 45, 50, 56, 63, 70, 80, 90, 100, 110,
1557 	125, 140, 160, 180, 200, 225, 250, 280, 315, 355, 400, 450, 500, 560, 630,
1558 	700, 800, 900, 1000, 1100, 1200, 1400, 1600, 1800, 2000, 2200, 2500, 2800, 3200, 3600,
1559 	4000, 4500, 5000, 5600, 6300, 7000, 8000, 9000, 10000, 11000, 12000, 14000, 16000, 18000, 20000,
1560 };
1561 
1562 float lfo_freq_table_xg[] =
1563 {
1564 	0.00, 0.04, 0.08, 0.13, 0.17, 0.21, 0.25, 0.29, 0.34, 0.38, 0.42, 0.46, 0.51, 0.55, 0.59, 0.63,
1565 	0.67, 0.72, 0.76, 0.80, 0.84, 0.88, 0.93, 0.97, 1.01, 1.05, 1.09, 1.14, 1.18, 1.22, 1.26, 1.30,
1566 	1.35, 1.39, 1.43, 1.47, 1.51, 1.56, 1.60, 1.64, 1.68, 1.72, 1.77, 1.81, 1.85, 1.89, 1.94, 1.98,
1567 	2.02, 2.06, 2.10, 2.15, 2.19, 2.23, 2.27, 2.31, 2.36, 2.40, 2.44, 2.48, 2.52, 2.57, 2.61, 2.65,
1568 	2.69, 2.78, 2.86, 2.94, 3.03, 3.11, 3.20, 2.28, 3.37, 3.45, 3.53, 3.62, 3.70, 3.87, 4.04, 4.21,
1569 	4.37, 4.54, 4.71, 4.88, 5.05, 5.22, 5.38, 5.55, 5.72, 6.06, 6.39, 6.73, 7.07, 7.40, 7.74, 8.08,
1570 	8.41, 8.75, 9.08, 9.42, 9.76, 10.1, 10.8, 11.4, 12.1, 12.8, 13.5, 14.1, 14.8, 15.5, 16.2, 16.8,
1571 	17.5, 18.2, 19.5, 20.9, 22.2, 23.6, 24.9, 26.2, 27.6, 28.9, 30.3, 31.6, 33.0, 34.3, 37.0, 39.7,
1572 };
1573 
1574 float mod_delay_offset_table_xg[] =
1575 {
1576 	0.0, 0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8, 0.9, 1.0, 1.1, 1.2, 1.3, 1.4, 1.5,
1577 	1.6, 1.7, 1.8, 1.9, 2.0, 2.1, 2.2, 2.3, 2.4, 2.5, 2.6, 2.7, 2.8, 2.9, 3.0, 3.1,
1578 	3.2, 3.3, 3.4, 3.5, 3.6, 3.7, 3.8, 3.9, 4.0, 4.1, 4.2, 4.3, 4.4, 4.5, 4.6, 4.7,
1579 	4.8, 4.9, 5.0, 5.1, 5.2, 5.3, 5.4, 5.5, 5.6, 5.7, 5.8, 5.9, 6.0, 6.1, 6.2, 6.3,
1580 	6.4, 6.5, 6.6, 6.7, 6.8, 6.9, 7.0, 7.1, 7.2, 7.3, 7.4, 7.5, 7.6, 7.7, 7.8, 7.9,
1581 	8.0, 8.1, 8.2, 8.3, 8.4, 8.5, 8.6, 8.7, 8.8, 8.9, 9.0, 9.1, 9.2, 9.3, 9.4, 9.5,
1582 	9.6, 9.7, 9.8, 9.9, 10.0, 11.1, 12.2, 13.3, 14.4, 15.5, 17.1, 18.6, 20.2, 21.8,	23.3, 24.9,
1583 	26.5, 28.0, 29.6, 31.2, 32.8, 34.3, 35.9, 37.5, 39.0, 40.6,	42.2, 43.7, 45.3, 46.9, 48.4, 50.0,
1584 };
1585 
1586 float reverb_time_table_xg[] =
1587 {
1588 	0.3, 0.4, 0.5, 0.6, 0.7, 0.8, 0.9, 1.0, 1.1, 1.2, 1.3, 1.4, 1.5, 1.6, 1.7, 1.8,
1589 	1.9, 2.0, 2.1, 2.2, 2.3, 2.4, 2.5, 2.6, 2.7, 2.8, 2.9, 3.0, 3.1, 3.2, 3.3, 3.4,
1590 	3.5, 3.6, 3.7, 3.8, 3.9, 4.0, 4.1, 4.2, 4.3, 4.4, 4.5, 4.6, 4.7, 4.8, 4.9, 5.0,
1591 	5.5, 6.0, 6.5, 7.0, 7.5, 8.0, 8.5, 9.0, 9.5, 10.0, 11.0, 12.0, 13.0, 14.0, 15.0, 16.0,
1592 	17.0, 18.0, 19.0, 20.0, 25.0, 30.0,
1593 };
1594 
1595 float delay_time_table_xg[] =
1596 {
1597 	0.1, 1.7, 3.2, 4.8, 6.4, 8.0, 9.5, 11.1, 12.7, 14.3, 15.8, 17.4, 19.0, 20.6, 22.1, 23.7,
1598 	25.3, 26.9, 28.4, 30.0, 31.6, 33.2, 34.7, 36.3, 37.9, 39.5, 41.0, 42.6, 44.2, 45.7, 47.3, 48.9,
1599 	50.5, 52.0, 53.6, 55.2, 56.8, 58.3, 59.9, 61.5, 63.1, 64.6, 66.2, 67.8, 69.4, 70.9, 72.5, 74.1,
1600 	75.7, 77.2, 78.8, 80.4, 81.9, 83.5, 85.1, 86.7, 88.2, 89.8, 91.4, 93.0, 94.5, 96.1, 97.7, 99.3,
1601 	100.8, 102.4, 104.0, 105.6, 107.1, 108.7, 110.3, 111.9, 113.4, 115.0, 116.6, 118.2, 119.7, 121.3, 122.9, 124.4,
1602 	126.0, 127.6, 129.2, 130.7, 132.3, 133.9, 135.5, 137.0, 138.6, 140.2, 141.8, 143.3, 144.9, 146.5, 148.1, 149.6,
1603 	151.2, 152.8, 154.4, 155.9, 157.5, 159.1, 160.6, 162.2, 163.8, 165.4, 166.9, 168.5, 170.1, 171.7, 173.2, 174.8,
1604 	176.4, 178.0, 179.5, 181.1, 182.7, 184.3, 185.8, 187.4, 189.0, 190.6, 192.1, 193.7, 195.3, 196.9, 198.4, 200.0,
1605 };
1606 
1607 int16 cutoff_freq_table_gs[] =
1608 {
1609 	250, 250, 250, 250, 250, 250, 250, 250,
1610 	315, 315, 315, 315, 315, 315, 315, 315,
1611 	400, 400, 400, 400, 400, 400, 400, 400,
1612 	500, 500, 500, 500, 500, 500, 500, 500,
1613 	630, 630, 630, 630, 630, 630, 630, 630,
1614 	800, 800, 800, 800, 800, 800, 800, 800,
1615 	1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000,
1616 	1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250,
1617 	1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600,
1618 	2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000,
1619 	2500, 2500, 2500, 2500, 2500, 2500, 2500, 2500,
1620 	3150, 3150, 3150, 3150, 3150, 3150, 3150, 3150,
1621 	4000, 4000, 4000, 4000, 4000, 4000, 4000, 4000,
1622 	5000, 5000, 5000, 5000, 5000, 5000, 5000, 5000,
1623 	6300, 6300, 6300, 6300, 6300, 6300, 6300, 6300,
1624 	8000, 8000, 8000, 8000, 8000, 8000, 8000, 8000,
1625 };
1626 
1627 int16 lpf_table_gs[] =
1628 {
1629 	250, 250, 250, 250, 250, 250, 250, 250,
1630 	315, 315, 315, 315, 315, 315, 315, 315,
1631 	400, 400, 400, 400, 400, 400, 400, 400,
1632 	500, 500, 500, 500, 500, 500, 500, 500,
1633 	630, 630, 630, 630, 630, 630, 630, 630,
1634 	800, 800, 800, 800, 800, 800, 800, 800,
1635 	1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000,
1636 	1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250,
1637 	1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600,
1638 	2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000,
1639 	2500, 2500, 2500, 2500, 2500, 2500, 2500, 2500,
1640 	3150, 3150, 3150, 3150, 3150, 3150, 3150, 3150,
1641 	4000, 4000, 4000, 4000, 4000, 4000, 4000, 4000,
1642 	5000, 5000, 5000, 5000, 5000, 5000, 5000, 5000,
1643 	6300, 6300, 6300, 6300, 6300, 6300, 6300, 6300,
1644 	-1, -1, -1, -1, -1, -1, -1, -1,
1645 };
1646 
1647 int16 eq_freq_table_gs[] =
1648 {
1649 	200, 200, 200, 200, 200, 200, 200, 200,
1650 	250, 250, 250, 250, 250, 250, 250, 250,
1651 	315, 315, 315, 315, 315, 315, 315, 315,
1652 	400, 400, 400, 400, 400, 400, 400, 400,
1653 	500, 500, 500, 500, 500, 500, 500, 500,
1654 	630, 630, 630, 630, 630, 630, 630, 630,
1655 	800, 800, 800, 800, 800, 800, 800, 800,
1656 	1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000,
1657 	1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250,
1658 	1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600,
1659 	2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000,
1660 	2500, 2500, 2500, 2500, 2500, 2500, 2500, 2500,
1661 	3150, 3150, 3150, 3150, 3150, 3150, 3150, 3150,
1662 	4000, 4000, 4000, 4000, 4000, 4000, 4000, 4000,
1663 	5000, 5000, 5000, 5000, 5000, 5000, 5000, 5000,
1664 	6300, 6300, 6300, 6300, 6300, 6300, 6300, 6300,
1665 };
1666 
1667 float lofi_sampling_freq_table_xg[] =
1668 {
1669 	44100.0, 22100.0, 14700.0, 11000.0, 8800.0, 7400.0, 6300.0, 5500.0,
1670 	4900.0, 4400.0, 4000.0, 3700.0, 3400.0, 3200.0, 2900.0, 2800.0,
1671 	2600.0, 2500.0, 2300.0, 2200.0, 2100.0, 2000.0, 1920.0, 1840.0,
1672 	1760.0, 1700.0, 1630.0, 1580.0, 1520.0, 1470.0, 1420.0, 1380.0,
1673 	1340.0, 1300.0, 1260.0, 1230.0, 1190.0, 1160.0, 1130.0, 1110.0,
1674 	1080.0, 1050.0, 1030.0, 1000.0, 980.0, 959.0, 938.0, 919.0,
1675 	900.0, 882.0, 865.0, 848.0, 832.0, 817.0, 802.0, 788.0,
1676 	774.0, 760.0, 747.0, 735.0, 723.0, 711.0, 700.0, 689.0,
1677 	678.0, 668.0, 658.0, 649.0, 639.0, 630.0, 621.0, 613.0,
1678 	604.0, 596.0, 588.0, 580.0, 573.0, 565.0, 558.0, 551.0,
1679 	544.0, 538.0, 531.0, 525.0, 519.0, 513.0, 507.0, 501.0,
1680 	496.0, 490.0, 485.0, 479.0, 474.0, 469.0, 464.0, 459.0,
1681 	455.0, 450.0, 445.0, 441.0, 437.0, 432.0, 428.0, 424.0,
1682 	420.0, 416.0, 412.0, 408.0, 405.0, 401.0, 397.0, 394.0,
1683 	390.0, 387.0, 383.0, 380.0, 377.0, 374.0, 371.0, 368.0,
1684 	364.0, 361.0, 359.0, 356.0, 353.0, 350.0, 347.0, 345.0,
1685 };
1686