summaryrefslogtreecommitdiff
path: root/lib/rbcodec/codecs/libmad
diff options
context:
space:
mode:
Diffstat (limited to 'lib/rbcodec/codecs/libmad')
-rw-r--r--lib/rbcodec/codecs/libmad/CHANGES338
-rw-r--r--lib/rbcodec/codecs/libmad/COPYING340
-rw-r--r--lib/rbcodec/codecs/libmad/COPYRIGHT21
-rw-r--r--lib/rbcodec/codecs/libmad/CREDITS116
-rw-r--r--lib/rbcodec/codecs/libmad/D.dat607
-rw-r--r--lib/rbcodec/codecs/libmad/README241
-rw-r--r--lib/rbcodec/codecs/libmad/README.rockbox23
-rw-r--r--lib/rbcodec/codecs/libmad/SOURCES14
-rw-r--r--lib/rbcodec/codecs/libmad/TODO69
-rw-r--r--lib/rbcodec/codecs/libmad/VERSION7
-rw-r--r--lib/rbcodec/codecs/libmad/bit.c218
-rw-r--r--lib/rbcodec/codecs/libmad/bit.h50
-rw-r--r--lib/rbcodec/codecs/libmad/dct32_arm.S328
-rw-r--r--lib/rbcodec/codecs/libmad/fixed.h510
-rw-r--r--lib/rbcodec/codecs/libmad/frame.c499
-rw-r--r--lib/rbcodec/codecs/libmad/frame.h124
-rw-r--r--lib/rbcodec/codecs/libmad/global.h72
-rw-r--r--lib/rbcodec/codecs/libmad/huffman.c3109
-rw-r--r--lib/rbcodec/codecs/libmad/huffman.h66
-rw-r--r--lib/rbcodec/codecs/libmad/imdct_l_arm.S1001
-rw-r--r--lib/rbcodec/codecs/libmad/imdct_mcf5249.S124
-rw-r--r--lib/rbcodec/codecs/libmad/imdct_s.dat62
-rw-r--r--lib/rbcodec/codecs/libmad/layer12.c537
-rw-r--r--lib/rbcodec/codecs/libmad/layer12.h31
-rw-r--r--lib/rbcodec/codecs/libmad/layer3.c3107
-rw-r--r--lib/rbcodec/codecs/libmad/layer3.h30
-rw-r--r--lib/rbcodec/codecs/libmad/libmad.make66
-rw-r--r--lib/rbcodec/codecs/libmad/mad.h31
-rw-r--r--lib/rbcodec/codecs/libmad/mad_iram.h57
-rw-r--r--lib/rbcodec/codecs/libmad/qc_table.dat77
-rw-r--r--lib/rbcodec/codecs/libmad/rq_table.dat8747
-rw-r--r--lib/rbcodec/codecs/libmad/sf_table.dat106
-rw-r--r--lib/rbcodec/codecs/libmad/stream.c165
-rw-r--r--lib/rbcodec/codecs/libmad/stream.h113
-rw-r--r--lib/rbcodec/codecs/libmad/synth.c1232
-rw-r--r--lib/rbcodec/codecs/libmad/synth.h52
-rw-r--r--lib/rbcodec/codecs/libmad/synth_full_arm.S340
37 files changed, 22630 insertions, 0 deletions
diff --git a/lib/rbcodec/codecs/libmad/CHANGES b/lib/rbcodec/codecs/libmad/CHANGES
new file mode 100644
index 0000000000..3fa57ef0cf
--- /dev/null
+++ b/lib/rbcodec/codecs/libmad/CHANGES
@@ -0,0 +1,338 @@
1
2 libmad - MPEG audio decoder library
3 Copyright (C) 2000-2004 Underbit Technologies, Inc.
4
5 $Id$
6
7===============================================================================
8
9Version 0.15.1 (beta)
10
11 * Updated to autoconf 2.59, automake 1.8.2, libtool 1.5.2.
12
13 * Replaced Layer III IMDCT routine with one based on a faster algorithm,
14 improving both speed and accuracy.
15
16 * Improved portability of the Huffman table initialization.
17
18 * Fixed a problem that could result in an assertion failure in layer3.c
19 due to an invalid Layer III free format bitrate.
20
21 * Improved the robustness of Layer II bitrate/mode combinations, and added
22 a new MAD_ERROR_BADMODE error enum. The allowability of low-bitrate
23 stereo streams is influenced by the --enable-strict-iso option to
24 `configure'.
25
26Version 0.15.0 (beta)
27
28 * Updated to autoconf 2.57, automake 1.7.5, libtool 1.4.3.
29
30 * Added new mad_f_div() API routine.
31
32 * Added a 64th entry to the Layer I/Layer II scalefactor table, for better
33 compatibility with existing streams. The --enable-strict-iso option to
34 `configure' can be used to disable use of this entry.
35
36 * Modified the header decoding routine to allow the reserved emphasis
37 value, for better compatibility with existing streams. The
38 --enable-strict-iso option to `configure' can be used to restore the
39 previous behavior of reporting this value as an error.
40
41 * Added new MAD_EMPHASIS_RESERVED enumeration constant.
42
43 * Fixed a bug in the ARM version of mad_f_scale64() discovered by Andre
44 McCurdy.
45
46 * Rewrote PowerPC assembly for minor gains.
47
48 * Modified mad_timer_fraction() to avoid the possibility of division by
49 zero when 0 is passed as the second argument.
50
51 * Fixed a non-fatal problem caused by attempting to designate ancillary
52 bits in Layer III after a decoding error.
53
54 * Changed to build a shared library by default.
55
56 * Changed to use native Cygwin build by default; give --host=mingw32 to
57 `configure' to use MinGW (and avoid a dependency on the Cygwin DLL).
58
59Version 0.14.2 (beta)
60
61 * Changed Cygwin builds to use MinGW; resulting Win32 executables no
62 longer have a dependency on Cygwin DLLs.
63
64 * Added a new mad_stream_errorstr() API function to libmad for retrieving
65 a string description of the current error condition.
66
67Version 0.14.1 (beta)
68
69 * Updated config.guess and config.sub to latest upstream versions.
70
71 * Enabled libtool versioning rather than release numbering.
72
73 * Improved the documentation in minimad.c.
74
75 * Several other small fixes.
76
77Version 0.14.0 (beta)
78
79 * Added a 64-bit FPM negation operation to improve performance of subband
80 synthesis on some platforms.
81
82 * Improved MSVC++ portability and added MSVC++ project files.
83
84 * Added rounding to Layer III requantization for slightly better accuracy.
85
86Version 0.13.0 (beta)
87
88 * Ancillary data is now properly extracted from Layer III streams.
89
90 * Rewrote the Layer III joint stereo decoding routine to correct a major
91 MPEG-2 problem and a minor MPEG-1 problem decoding intensity stereo.
92
93 * Eliminated the dependency on sign-extending right shifts for Layer I and
94 Layer II.
95
96 * Renamed `private' field to `private_bits' for better C++ compatibility.
97
98 * Gratuitously renamed `sfreq' field to `samplerate' and
99 MAD_ERROR_BADSAMPLEFREQ constant to MAD_ERROR_BADSAMPLERATE.
100
101 * Added `samplerate' and `channels' fields to synth.pcm struct to allow
102 these to be different from the decoded frame, and for simpler access.
103
104 * Added new mad_stream_options() and mad_decoder_options() API entries for
105 special runtime decoding options.
106
107 * Added new MAD_OPTION_IGNORECRC and MAD_OPTION_HALFSAMPLERATE options.
108
109 * Added new MAD_FLAG_FREEFORMAT indicator flag.
110
111 * Fixed some bugs in the async decoder.
112
113 * Added a new mad_timer_multiply() API routine.
114
115 * Eliminated `+' from asm constraints under Intel for better compatibility
116 with some compilers.
117
118 * Fixed a PIC-related problem in imdct_l_arm.S.
119
120 * Eliminated a static variable to make libmad thread-safe.
121
122Version 0.12.5 (beta)
123
124 * Modified Layer III requantization to occur during Huffman decoding for
125 significant performance gains.
126
127 * Optimized short block IMDCT by eliminating redundant calculations.
128
129 * Made several other Layer III performance improvements; added
130 ASO_INTERLEAVE1, ASO_INTERLEAVE2, and ASO_ZEROCHECK
131 architecture-specific options for best performance on various
132 architectures.
133
134 * Optimized synthesis DCT to store result values as soon as they are
135 calculated.
136
137Version 0.12.4 (beta)
138
139 * New PowerPC fixed-point assembly courtesy of David Blythe.
140
141 * Reorganized fixed-point assembly routines for easier maintenance and
142 better performance.
143
144 * Improved performance of subband synthesis through better indexing and
145 fewer local variables.
146
147 * Added alias reduction for the lower two subbands of mixed short blocks,
148 per a report of ambiguity with ISO/IEC 11172-3 and for uniformity with
149 most other implementations. Also improved alias reduction performance
150 using multiply/accumulate.
151
152 * Added --enable-strict-iso option to `configure' to override best
153 accepted practices such as the alias reduction for mixed short blocks.
154
155 * Improved performance of Layer III IMDCT by using longer
156 multiply/accumulate runs where possible.
157
158Version 0.12.3 (beta)
159
160 * Added MPEG 2.5 support.
161
162 * Added preliminary support for parameterizing the binary point position
163 in the fixed-point representation.
164
165 * Added multiply/accumulate optimization to the Layer III IMDCT for long
166 blocks.
167
168 * Fixed a bug in the handling of Layer III mixed_block_flag.
169
170 * Fixed a configure problem when multiple -O CFLAGS are present.
171
172Version 0.12.2 (beta)
173
174 * Rearranged the synthesis polyphase filterbank memory vector for better
175 locality of reference, and rewrote mad_synth_frame() to accommodate,
176 resulting in improved performance.
177
178 * Discovered a combination of compiler optimization flags that further
179 improve performance.
180
181 * Changed some array references in layer3.c to pointer derefs.
182
183Version 0.12.1 (beta)
184
185 * Resolved the intensity + MS joint stereo issue (a simple bug).
186 OPT_ISKLUGE is no longer considered to be a kluge.
187
188 * Fixed another, hopefully last main_data memory bug.
189
190 * Split part of struct mad_frame into struct mad_header for convenience
191 and size.
192
193Version 0.12.0 (alpha)
194
195 * Changed the build environment to use automake and libtool. A libmad
196 shared library can now be built using the --enable-shared option to
197 `configure'.
198
199 * Added another callback to MAD's high-level decoder API after the frame
200 header has been read but before the frame's audio data is decoded.
201
202 * Streamlined header processing so that mad_frame_decode() can be called
203 with or without having already called mad_frame_header().
204
205 * Fixed some other header reading miscellany, including CRC handling and
206 free bitrate detection, and frame length verification with free
207 bitrates.
208
209 * Fixed a problem with Layer III free bitrates > 320 kbps. The main_data
210 buffer size should now be large enough to handle any size frame, by
211 virtue of the maximum possible part2_3_length.
212
213 * Further developed the async API; arbitrary messages can now be passed to
214 the subsidiary decoding process.
215
216 * Streamlined timer.c and extended its interface. It now has support for
217 video frame/field lengths, including output support for drop-frame
218 encoding.
219
220 * Replaced many constant integer preprocessor defines with enums.
221
222Version 0.11.4 (beta)
223
224 * Fixed free format bitrate discovery.
225
226 * Changed the timer implementation and extended its interface.
227
228 * Integrated Nicolas Pitre's patch for pre-shifting at compile-time and
229 for better multiply/accumulate code output.
230
231 * Applied Simon Burge's patch to imdct_l_arm.S for a.out compatibility.
232
233 * Added -mtune=strongarm for all ARM targets.
234
235Version 0.11.3 (beta)
236
237 * Added new --enable-speed and --enable-accuracy options for `configure'
238 to automatically select appropriate SSO/ASO options, et al.
239
240 * Modified subband synthesis to use multiply/accumulate optimization (if
241 available) for better speed and/or accuracy.
242
243 * Incorporated Andre McCurdy's changes for further rounding optimizations
244 in the rest of his code.
245
246Version 0.11.2 (beta)
247
248 * Incorporated Nicolas Pitre's ARM assembly and parameterized scaling
249 changes.
250
251 * Incorporated Andre McCurdy's ARM assembly optimization (used only if
252 --enable-aso is given to `configure' to enable architecture-specific
253 optimizations.)
254
255 * Reduced FPM_INTEL assembly to two instructions.
256
257 * Fixed accuracy problems with certain FPM modes in synth.c.
258
259 * Improved the accuracy of FPM_APPROX.
260
261 * Improved the accuracy of SSO.
262
263 * Improved sync discovery by checking for a sync word in the following
264 frame.
265
266 * Minor code clean-up.
267
268 * Added experimental rules for generating a libmad.so shared library.
269
270Version 0.11.1 (beta)
271
272 * Moved libmad code into a separate directory.
273
274 * Changed SSO to be disabled by default, as output accuracy is deemed to
275 be more important than speed in the general case.
276
277 * Fixed a bug in Layer III sanity checking that could cause a crash on
278 certain random data input.
279
280 * Extended the Layer III requantization table from 8191 to 8206 as some
281 encoders are known to use these values, even though ISO/IEC 11172-3
282 suggests the maximum should be 8191.
283
284Version 0.11.0 (beta)
285
286 * Implemented MPEG-2 extension to Lower Sampling Frequencies.
287
288 * Improved Layer III performance by avoiding IMDCT calculation when all
289 input samples are zero.
290
291 * Significantly reduced size of Layer II tables.
292
293Version 0.10.3 (beta)
294
295 * Improved SSO output quality.
296
297 * Made portable to cygwin.
298
299 * Localized memory references in III_huffdecode() for better performance.
300
301Version 0.10.2 (beta)
302
303 * Rewrote Layer III long block 36-point IMDCT routine for better
304 performance.
305
306 * Improved subband synthesis fixed-point games somewhat.
307
308Version 0.10.1 (beta)
309
310 * Added a subband synthesis optimization (SSO) which involves modifying
311 the fixed-point multiplication method during windowing. This produces
312 subtle differences in the output but improves performance greatly.
313
314 * Added I_STEREO and MS_STEREO flags to frame struct.
315
316 * Eliminated privately-used CRCFAILED flag.
317
318 * Fixed a bug where Layer III decoding could crash on some badly-formatted
319 (e.g. non-MPEG) bitstreams.
320
321 * Miscellaneous code clean-up.
322
323Version 0.10.0 (beta)
324
325 * Added SPARC fixed-point math support.
326
327 * Revamped libmad API for better high- and low-level support.
328
329 * Documented more of the code.
330
331 * Changed sync semantics such that new stream buffers are assumed to be
332 sync-aligned.
333
334 * Changed Layer III to dynamically allocate static memory so as not to
335 waste it (about 6.4K) when only decoding Layer I or Layer II.
336
337===============================================================================
338
diff --git a/lib/rbcodec/codecs/libmad/COPYING b/lib/rbcodec/codecs/libmad/COPYING
new file mode 100644
index 0000000000..d60c31a97a
--- /dev/null
+++ b/lib/rbcodec/codecs/libmad/COPYING
@@ -0,0 +1,340 @@
1 GNU GENERAL PUBLIC LICENSE
2 Version 2, June 1991
3
4 Copyright (C) 1989, 1991 Free Software Foundation, Inc.
5 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
6 Everyone is permitted to copy and distribute verbatim copies
7 of this license document, but changing it is not allowed.
8
9 Preamble
10
11 The licenses for most software are designed to take away your
12freedom to share and change it. By contrast, the GNU General Public
13License is intended to guarantee your freedom to share and change free
14software--to make sure the software is free for all its users. This
15General Public License applies to most of the Free Software
16Foundation's software and to any other program whose authors commit to
17using it. (Some other Free Software Foundation software is covered by
18the GNU Library General Public License instead.) You can apply it to
19your programs, too.
20
21 When we speak of free software, we are referring to freedom, not
22price. Our General Public Licenses are designed to make sure that you
23have the freedom to distribute copies of free software (and charge for
24this service if you wish), that you receive source code or can get it
25if you want it, that you can change the software or use pieces of it
26in new free programs; and that you know you can do these things.
27
28 To protect your rights, we need to make restrictions that forbid
29anyone to deny you these rights or to ask you to surrender the rights.
30These restrictions translate to certain responsibilities for you if you
31distribute copies of the software, or if you modify it.
32
33 For example, if you distribute copies of such a program, whether
34gratis or for a fee, you must give the recipients all the rights that
35you have. You must make sure that they, too, receive or can get the
36source code. And you must show them these terms so they know their
37rights.
38
39 We protect your rights with two steps: (1) copyright the software, and
40(2) offer you this license which gives you legal permission to copy,
41distribute and/or modify the software.
42
43 Also, for each author's protection and ours, we want to make certain
44that everyone understands that there is no warranty for this free
45software. If the software is modified by someone else and passed on, we
46want its recipients to know that what they have is not the original, so
47that any problems introduced by others will not reflect on the original
48authors' reputations.
49
50 Finally, any free program is threatened constantly by software
51patents. We wish to avoid the danger that redistributors of a free
52program will individually obtain patent licenses, in effect making the
53program proprietary. To prevent this, we have made it clear that any
54patent must be licensed for everyone's free use or not licensed at all.
55
56 The precise terms and conditions for copying, distribution and
57modification follow.
58
59 GNU GENERAL PUBLIC LICENSE
60 TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
61
62 0. This License applies to any program or other work which contains
63a notice placed by the copyright holder saying it may be distributed
64under the terms of this General Public License. The "Program", below,
65refers to any such program or work, and a "work based on the Program"
66means either the Program or any derivative work under copyright law:
67that is to say, a work containing the Program or a portion of it,
68either verbatim or with modifications and/or translated into another
69language. (Hereinafter, translation is included without limitation in
70the term "modification".) Each licensee is addressed as "you".
71
72Activities other than copying, distribution and modification are not
73covered by this License; they are outside its scope. The act of
74running the Program is not restricted, and the output from the Program
75is covered only if its contents constitute a work based on the
76Program (independent of having been made by running the Program).
77Whether that is true depends on what the Program does.
78
79 1. You may copy and distribute verbatim copies of the Program's
80source code as you receive it, in any medium, provided that you
81conspicuously and appropriately publish on each copy an appropriate
82copyright notice and disclaimer of warranty; keep intact all the
83notices that refer to this License and to the absence of any warranty;
84and give any other recipients of the Program a copy of this License
85along with the Program.
86
87You may charge a fee for the physical act of transferring a copy, and
88you may at your option offer warranty protection in exchange for a fee.
89
90 2. You may modify your copy or copies of the Program or any portion
91of it, thus forming a work based on the Program, and copy and
92distribute such modifications or work under the terms of Section 1
93above, provided that you also meet all of these conditions:
94
95 a) You must cause the modified files to carry prominent notices
96 stating that you changed the files and the date of any change.
97
98 b) You must cause any work that you distribute or publish, that in
99 whole or in part contains or is derived from the Program or any
100 part thereof, to be licensed as a whole at no charge to all third
101 parties under the terms of this License.
102
103 c) If the modified program normally reads commands interactively
104 when run, you must cause it, when started running for such
105 interactive use in the most ordinary way, to print or display an
106 announcement including an appropriate copyright notice and a
107 notice that there is no warranty (or else, saying that you provide
108 a warranty) and that users may redistribute the program under
109 these conditions, and telling the user how to view a copy of this
110 License. (Exception: if the Program itself is interactive but
111 does not normally print such an announcement, your work based on
112 the Program is not required to print an announcement.)
113
114These requirements apply to the modified work as a whole. If
115identifiable sections of that work are not derived from the Program,
116and can be reasonably considered independent and separate works in
117themselves, then this License, and its terms, do not apply to those
118sections when you distribute them as separate works. But when you
119distribute the same sections as part of a whole which is a work based
120on the Program, the distribution of the whole must be on the terms of
121this License, whose permissions for other licensees extend to the
122entire whole, and thus to each and every part regardless of who wrote it.
123
124Thus, it is not the intent of this section to claim rights or contest
125your rights to work written entirely by you; rather, the intent is to
126exercise the right to control the distribution of derivative or
127collective works based on the Program.
128
129In addition, mere aggregation of another work not based on the Program
130with the Program (or with a work based on the Program) on a volume of
131a storage or distribution medium does not bring the other work under
132the scope of this License.
133
134 3. You may copy and distribute the Program (or a work based on it,
135under Section 2) in object code or executable form under the terms of
136Sections 1 and 2 above provided that you also do one of the following:
137
138 a) Accompany it with the complete corresponding machine-readable
139 source code, which must be distributed under the terms of Sections
140 1 and 2 above on a medium customarily used for software interchange; or,
141
142 b) Accompany it with a written offer, valid for at least three
143 years, to give any third party, for a charge no more than your
144 cost of physically performing source distribution, a complete
145 machine-readable copy of the corresponding source code, to be
146 distributed under the terms of Sections 1 and 2 above on a medium
147 customarily used for software interchange; or,
148
149 c) Accompany it with the information you received as to the offer
150 to distribute corresponding source code. (This alternative is
151 allowed only for noncommercial distribution and only if you
152 received the program in object code or executable form with such
153 an offer, in accord with Subsection b above.)
154
155The source code for a work means the preferred form of the work for
156making modifications to it. For an executable work, complete source
157code means all the source code for all modules it contains, plus any
158associated interface definition files, plus the scripts used to
159control compilation and installation of the executable. However, as a
160special exception, the source code distributed need not include
161anything that is normally distributed (in either source or binary
162form) with the major components (compiler, kernel, and so on) of the
163operating system on which the executable runs, unless that component
164itself accompanies the executable.
165
166If distribution of executable or object code is made by offering
167access to copy from a designated place, then offering equivalent
168access to copy the source code from the same place counts as
169distribution of the source code, even though third parties are not
170compelled to copy the source along with the object code.
171
172 4. You may not copy, modify, sublicense, or distribute the Program
173except as expressly provided under this License. Any attempt
174otherwise to copy, modify, sublicense or distribute the Program is
175void, and will automatically terminate your rights under this License.
176However, parties who have received copies, or rights, from you under
177this License will not have their licenses terminated so long as such
178parties remain in full compliance.
179
180 5. You are not required to accept this License, since you have not
181signed it. However, nothing else grants you permission to modify or
182distribute the Program or its derivative works. These actions are
183prohibited by law if you do not accept this License. Therefore, by
184modifying or distributing the Program (or any work based on the
185Program), you indicate your acceptance of this License to do so, and
186all its terms and conditions for copying, distributing or modifying
187the Program or works based on it.
188
189 6. Each time you redistribute the Program (or any work based on the
190Program), the recipient automatically receives a license from the
191original licensor to copy, distribute or modify the Program subject to
192these terms and conditions. You may not impose any further
193restrictions on the recipients' exercise of the rights granted herein.
194You are not responsible for enforcing compliance by third parties to
195this License.
196
197 7. If, as a consequence of a court judgment or allegation of patent
198infringement or for any other reason (not limited to patent issues),
199conditions are imposed on you (whether by court order, agreement or
200otherwise) that contradict the conditions of this License, they do not
201excuse you from the conditions of this License. If you cannot
202distribute so as to satisfy simultaneously your obligations under this
203License and any other pertinent obligations, then as a consequence you
204may not distribute the Program at all. For example, if a patent
205license would not permit royalty-free redistribution of the Program by
206all those who receive copies directly or indirectly through you, then
207the only way you could satisfy both it and this License would be to
208refrain entirely from distribution of the Program.
209
210If any portion of this section is held invalid or unenforceable under
211any particular circumstance, the balance of the section is intended to
212apply and the section as a whole is intended to apply in other
213circumstances.
214
215It is not the purpose of this section to induce you to infringe any
216patents or other property right claims or to contest validity of any
217such claims; this section has the sole purpose of protecting the
218integrity of the free software distribution system, which is
219implemented by public license practices. Many people have made
220generous contributions to the wide range of software distributed
221through that system in reliance on consistent application of that
222system; it is up to the author/donor to decide if he or she is willing
223to distribute software through any other system and a licensee cannot
224impose that choice.
225
226This section is intended to make thoroughly clear what is believed to
227be a consequence of the rest of this License.
228
229 8. If the distribution and/or use of the Program is restricted in
230certain countries either by patents or by copyrighted interfaces, the
231original copyright holder who places the Program under this License
232may add an explicit geographical distribution limitation excluding
233those countries, so that distribution is permitted only in or among
234countries not thus excluded. In such case, this License incorporates
235the limitation as if written in the body of this License.
236
237 9. The Free Software Foundation may publish revised and/or new versions
238of the General Public License from time to time. Such new versions will
239be similar in spirit to the present version, but may differ in detail to
240address new problems or concerns.
241
242Each version is given a distinguishing version number. If the Program
243specifies a version number of this License which applies to it and "any
244later version", you have the option of following the terms and conditions
245either of that version or of any later version published by the Free
246Software Foundation. If the Program does not specify a version number of
247this License, you may choose any version ever published by the Free Software
248Foundation.
249
250 10. If you wish to incorporate parts of the Program into other free
251programs whose distribution conditions are different, write to the author
252to ask for permission. For software which is copyrighted by the Free
253Software Foundation, write to the Free Software Foundation; we sometimes
254make exceptions for this. Our decision will be guided by the two goals
255of preserving the free status of all derivatives of our free software and
256of promoting the sharing and reuse of software generally.
257
258 NO WARRANTY
259
260 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
261FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN
262OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES
263PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED
264OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
265MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS
266TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE
267PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,
268REPAIR OR CORRECTION.
269
270 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
271WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
272REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,
273INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING
274OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED
275TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY
276YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER
277PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
278POSSIBILITY OF SUCH DAMAGES.
279
280 END OF TERMS AND CONDITIONS
281
282 How to Apply These Terms to Your New Programs
283
284 If you develop a new program, and you want it to be of the greatest
285possible use to the public, the best way to achieve this is to make it
286free software which everyone can redistribute and change under these terms.
287
288 To do so, attach the following notices to the program. It is safest
289to attach them to the start of each source file to most effectively
290convey the exclusion of warranty; and each file should have at least
291the "copyright" line and a pointer to where the full notice is found.
292
293 <one line to give the program's name and a brief idea of what it does.>
294 Copyright (C) <year> <name of author>
295
296 This program is free software; you can redistribute it and/or modify
297 it under the terms of the GNU General Public License as published by
298 the Free Software Foundation; either version 2 of the License, or
299 (at your option) any later version.
300
301 This program is distributed in the hope that it will be useful,
302 but WITHOUT ANY WARRANTY; without even the implied warranty of
303 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
304 GNU General Public License for more details.
305
306 You should have received a copy of the GNU General Public License
307 along with this program; if not, write to the Free Software
308 Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
309
310
311Also add information on how to contact you by electronic and paper mail.
312
313If the program is interactive, make it output a short notice like this
314when it starts in an interactive mode:
315
316 Gnomovision version 69, Copyright (C) year name of author
317 Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
318 This is free software, and you are welcome to redistribute it
319 under certain conditions; type `show c' for details.
320
321The hypothetical commands `show w' and `show c' should show the appropriate
322parts of the General Public License. Of course, the commands you use may
323be called something other than `show w' and `show c'; they could even be
324mouse-clicks or menu items--whatever suits your program.
325
326You should also get your employer (if you work as a programmer) or your
327school, if any, to sign a "copyright disclaimer" for the program, if
328necessary. Here is a sample; alter the names:
329
330 Yoyodyne, Inc., hereby disclaims all copyright interest in the program
331 `Gnomovision' (which makes passes at compilers) written by James Hacker.
332
333 <signature of Ty Coon>, 1 April 1989
334 Ty Coon, President of Vice
335
336This General Public License does not permit incorporating your program into
337proprietary programs. If your program is a subroutine library, you may
338consider it more useful to permit linking proprietary applications with the
339library. If this is what you want to do, use the GNU Library General
340Public License instead of this License.
diff --git a/lib/rbcodec/codecs/libmad/COPYRIGHT b/lib/rbcodec/codecs/libmad/COPYRIGHT
new file mode 100644
index 0000000000..ed91d2bac1
--- /dev/null
+++ b/lib/rbcodec/codecs/libmad/COPYRIGHT
@@ -0,0 +1,21 @@
1
2 libmad - MPEG audio decoder library
3 Copyright (C) 2000-2004 Underbit Technologies, Inc.
4
5 This program is free software; you can redistribute it and/or modify
6 it under the terms of the GNU General Public License as published by
7 the Free Software Foundation; either version 2 of the License, or
8 (at your option) any later version.
9
10 This program is distributed in the hope that it will be useful,
11 but WITHOUT ANY WARRANTY; without even the implied warranty of
12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 GNU General Public License for more details.
14
15 You should have received a copy of the GNU General Public License
16 along with this program; if not, write to the Free Software
17 Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
18
19 If you would like to negotiate alternate licensing terms, you may do
20 so by contacting: Underbit Technologies, Inc. <info@underbit.com>
21
diff --git a/lib/rbcodec/codecs/libmad/CREDITS b/lib/rbcodec/codecs/libmad/CREDITS
new file mode 100644
index 0000000000..69016c201d
--- /dev/null
+++ b/lib/rbcodec/codecs/libmad/CREDITS
@@ -0,0 +1,116 @@
1
2 libmad - MPEG audio decoder library
3 Copyright (C) 2000-2004 Underbit Technologies, Inc.
4
5 $Id$
6
7===============================================================================
8
9AUTHOR
10
11 Except where otherwise noted, all code was authored by:
12
13 Robert Leslie <rob@underbit.com>
14
15CONTRIBUTORS
16
17 Significant contributions have been incorporated with thanks to:
18
19 Anonymous
20 2002/03/15: frame.c
21 - Reported problem with use of reserved emphasis value.
22 2003/08/31: layer12.c
23 - Suggested support for certain disallowed bitrate/mode
24 combinations.
25
26 Niek Albers <info@daansystems.com>
27 2003/04/21: layer3.c
28 - Reported runtime uninitialized use of `ptr' in designating
29 ancillary bits after a decoding error.
30
31 Christian Biere <cbiere@users.sourceforge.net>
32 2003/02/01: frame.c
33 - Reported assertion failure in layer3.c due to an
34 invalid/unsupported Layer III free format bitrate.
35
36 David Blythe <blythe@routefree.com>
37 2001/01/30: fixed.h
38 - Provided initial PowerPC fixed-point assembly.
39
40 Simon Burge <simonb@wasabisystems.com>
41 2000/09/20: imdct_l_arm.S
42 - Suggested patch for a.out compatibility.
43
44 Brian Cameron <Brian.Cameron@sun.com>
45 2003/07/02: huffman.c
46 - Suggested changes for improved portability.
47
48 Joshua Haberman <joshua@haberman.com>
49 2001/08/10: decoder.c, huffman.c
50 - Suggested portability fixes.
51
52 Timothy King <lordzork@lordzork.com>
53 2002/05/04: sf_table.dat, layer12.c
54 - Reported problem with use of (missing) scalefactor index 63.
55
56 Felix von Leitner <felix-mad@fefe.de>
57 2003/01/21: fixed.h
58 - Suggested Intel scaling alternative for possible speedup.
59
60 Andre McCurdy <armccurdy@yahoo.co.uk>
61 2000/08/10: imdct_l_arm.S
62 - ARM optimized assembly replacement for III_imdct_l().
63 2000/09/15: imdct_l_arm.S
64 - Applied Nicolas Pitre's rounding optimisation in all remaining
65 places.
66 2001/02/10: layer3.c
67 - Inspiration for Huffman decoding and requantization rewrite, and
68 other miscellany.
69 2001/03/24: imdct_l_arm.S
70 - Corrected PIC unsafe code.
71 2002/02/16: fixed.h
72 - Discovered bug in ARM version of mad_f_scale64().
73
74 Haruhiko OGASAWARA <theta@m1.interq.or.jp>
75 2001/01/28: layer3.c
76 - Reported discrepancy in alias reduction for mixed short blocks.
77
78 Brett Paterson <brett@fmod.org>
79 2001/10/28: global.h
80 - Reported missing <assert.h> et al. under MS Embedded Visual C.
81
82 Sean 'Shaleh' Perry <shaleh@via.net>
83 2000/04/04: fixed.h
84 - Suggested use of size-dependent typedefs.
85 2001/10/22: config.guess, config.sub
86 - Keep up to date for proper Debian packaging.
87
88 Bertrand Petit <eemad@phoe.frmug.org>
89 2001/11/05: synth.h
90 - Suggested PCM channel enumeration constants.
91 2001/11/05: stream.h
92 - Suggested MAD_ERROR_NONE enumeration constant.
93 2001/11/05: stream.c
94 - Suggested mad_stream_errorstr() function.
95
96 Nicolas Pitre <nico@cam.org>
97 2000/09/09: fixed.h
98 - Parameterized all scaling for correct use of all multiplication
99 methods within mad_synth_frame().
100 - Rewrote the FPM_ARM version of mad_f_mul() so we have 64-bit
101 multiplication result, rounding and scaling with 3 instructions.
102 2000/09/09: imdct_l_arm.S
103 - Optimized rounding + scaling operations.
104 2000/09/17: synth.c
105 - Changed D[] run-time shifts to compile-time.
106 - Modified synthesis for better multiply/accumulate code output.
107 2001/08/11: fixed.h, synth.c
108 - Suggested 64-bit FPM negation and negative term factorization
109 during synthesis.
110 2001/08/11: fixed.h
111 - Suggested unrounded behavior for FPM_DEFAULT when OPT_SPEED.
112 2001/11/19: fixed.c
113 - Suggested computation of any resampling ratio.
114
115===============================================================================
116
diff --git a/lib/rbcodec/codecs/libmad/D.dat b/lib/rbcodec/codecs/libmad/D.dat
new file mode 100644
index 0000000000..2bff1a8890
--- /dev/null
+++ b/lib/rbcodec/codecs/libmad/D.dat
@@ -0,0 +1,607 @@
1/*
2 * libmad - MPEG audio decoder library
3 * Copyright (C) 2000-2004 Underbit Technologies, Inc.
4 *
5 * This program is free software; you can redistribute it and/or modify
6 * it under the terms of the GNU General Public License as published by
7 * the Free Software Foundation; either version 2 of the License, or
8 * (at your option) any later version.
9 *
10 * This program is distributed in the hope that it will be useful,
11 * but WITHOUT ANY WARRANTY; without even the implied warranty of
12 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 * GNU General Public License for more details.
14 *
15 * You should have received a copy of the GNU General Public License
16 * along with this program; if not, write to the Free Software
17 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
18 *
19 * $Id$
20 */
21
22/*
23 * These are the coefficients for the subband synthesis window. This is a
24 * reordered version of Table B.3 from ISO/IEC 11172-3.
25 *
26 * Every value is parameterized so that shift optimizations can be made at
27 * compile-time. For example, every value can be right-shifted 12 bits to
28 * minimize multiply instruction times without any loss of accuracy.
29 */
30
31 { PRESHIFT(0x00000000) /* 0.000000000 */, /* 0 */
32 -PRESHIFT(0x0001d000) /* -0.000442505 */,
33 PRESHIFT(0x000d5000) /* 0.003250122 */,
34 -PRESHIFT(0x001cb000) /* -0.007003784 */,
35 PRESHIFT(0x007f5000) /* 0.031082153 */,
36 -PRESHIFT(0x01421000) /* -0.078628540 */,
37 PRESHIFT(0x019ae000) /* 0.100311279 */,
38 -PRESHIFT(0x09271000) /* -0.572036743 */,
39 PRESHIFT(0x1251e000) /* 1.144989014 */,
40 PRESHIFT(0x09271000) /* 0.572036743 */,
41 PRESHIFT(0x019ae000) /* 0.100311279 */,
42 PRESHIFT(0x01421000) /* 0.078628540 */,
43 PRESHIFT(0x007f5000) /* 0.031082153 */,
44 PRESHIFT(0x001cb000) /* 0.007003784 */,
45 PRESHIFT(0x000d5000) /* 0.003250122 */,
46 PRESHIFT(0x0001d000) /* 0.000442505 */,
47
48 PRESHIFT(0x00000000) /* 0.000000000 */,
49 -PRESHIFT(0x0001d000) /* -0.000442505 */,
50 PRESHIFT(0x000d5000) /* 0.003250122 */,
51 -PRESHIFT(0x001cb000) /* -0.007003784 */,
52 PRESHIFT(0x007f5000) /* 0.031082153 */,
53 -PRESHIFT(0x01421000) /* -0.078628540 */,
54 PRESHIFT(0x019ae000) /* 0.100311279 */,
55 -PRESHIFT(0x09271000) /* -0.572036743 */,
56 PRESHIFT(0x1251e000) /* 1.144989014 */,
57 PRESHIFT(0x09271000) /* 0.572036743 */,
58 PRESHIFT(0x019ae000) /* 0.100311279 */,
59 PRESHIFT(0x01421000) /* 0.078628540 */,
60 PRESHIFT(0x007f5000) /* 0.031082153 */,
61 PRESHIFT(0x001cb000) /* 0.007003784 */,
62 PRESHIFT(0x000d5000) /* 0.003250122 */,
63 PRESHIFT(0x0001d000) /* 0.000442505 */ },
64
65 { -PRESHIFT(0x00001000) /* -0.000015259 */, /* 1 */
66 -PRESHIFT(0x0001f000) /* -0.000473022 */,
67 PRESHIFT(0x000da000) /* 0.003326416 */,
68 -PRESHIFT(0x00207000) /* -0.007919312 */,
69 PRESHIFT(0x007d0000) /* 0.030517578 */,
70 -PRESHIFT(0x0158d000) /* -0.084182739 */,
71 PRESHIFT(0x01747000) /* 0.090927124 */,
72 -PRESHIFT(0x099a8000) /* -0.600219727 */,
73 PRESHIFT(0x124f0000) /* 1.144287109 */,
74 PRESHIFT(0x08b38000) /* 0.543823242 */,
75 PRESHIFT(0x01bde000) /* 0.108856201 */,
76 PRESHIFT(0x012b4000) /* 0.073059082 */,
77 PRESHIFT(0x0080f000) /* 0.031478882 */,
78 PRESHIFT(0x00191000) /* 0.006118774 */,
79 PRESHIFT(0x000d0000) /* 0.003173828 */,
80 PRESHIFT(0x0001a000) /* 0.000396729 */,
81
82 -PRESHIFT(0x00001000) /* -0.000015259 */,
83 -PRESHIFT(0x0001f000) /* -0.000473022 */,
84 PRESHIFT(0x000da000) /* 0.003326416 */,
85 -PRESHIFT(0x00207000) /* -0.007919312 */,
86 PRESHIFT(0x007d0000) /* 0.030517578 */,
87 -PRESHIFT(0x0158d000) /* -0.084182739 */,
88 PRESHIFT(0x01747000) /* 0.090927124 */,
89 -PRESHIFT(0x099a8000) /* -0.600219727 */,
90 PRESHIFT(0x124f0000) /* 1.144287109 */,
91 PRESHIFT(0x08b38000) /* 0.543823242 */,
92 PRESHIFT(0x01bde000) /* 0.108856201 */,
93 PRESHIFT(0x012b4000) /* 0.073059082 */,
94 PRESHIFT(0x0080f000) /* 0.031478882 */,
95 PRESHIFT(0x00191000) /* 0.006118774 */,
96 PRESHIFT(0x000d0000) /* 0.003173828 */,
97 PRESHIFT(0x0001a000) /* 0.000396729 */ },
98
99 { -PRESHIFT(0x00001000) /* -0.000015259 */, /* 2 */
100 -PRESHIFT(0x00023000) /* -0.000534058 */,
101 PRESHIFT(0x000de000) /* 0.003387451 */,
102 -PRESHIFT(0x00245000) /* -0.008865356 */,
103 PRESHIFT(0x007a0000) /* 0.029785156 */,
104 -PRESHIFT(0x016f7000) /* -0.089706421 */,
105 PRESHIFT(0x014a8000) /* 0.080688477 */,
106 -PRESHIFT(0x0a0d8000) /* -0.628295898 */,
107 PRESHIFT(0x12468000) /* 1.142211914 */,
108 PRESHIFT(0x083ff000) /* 0.515609741 */,
109 PRESHIFT(0x01dd8000) /* 0.116577148 */,
110 PRESHIFT(0x01149000) /* 0.067520142 */,
111 PRESHIFT(0x00820000) /* 0.031738281 */,
112 PRESHIFT(0x0015b000) /* 0.005294800 */,
113 PRESHIFT(0x000ca000) /* 0.003082275 */,
114 PRESHIFT(0x00018000) /* 0.000366211 */,
115
116 -PRESHIFT(0x00001000) /* -0.000015259 */,
117 -PRESHIFT(0x00023000) /* -0.000534058 */,
118 PRESHIFT(0x000de000) /* 0.003387451 */,
119 -PRESHIFT(0x00245000) /* -0.008865356 */,
120 PRESHIFT(0x007a0000) /* 0.029785156 */,
121 -PRESHIFT(0x016f7000) /* -0.089706421 */,
122 PRESHIFT(0x014a8000) /* 0.080688477 */,
123 -PRESHIFT(0x0a0d8000) /* -0.628295898 */,
124 PRESHIFT(0x12468000) /* 1.142211914 */,
125 PRESHIFT(0x083ff000) /* 0.515609741 */,
126 PRESHIFT(0x01dd8000) /* 0.116577148 */,
127 PRESHIFT(0x01149000) /* 0.067520142 */,
128 PRESHIFT(0x00820000) /* 0.031738281 */,
129 PRESHIFT(0x0015b000) /* 0.005294800 */,
130 PRESHIFT(0x000ca000) /* 0.003082275 */,
131 PRESHIFT(0x00018000) /* 0.000366211 */ },
132
133 { -PRESHIFT(0x00001000) /* -0.000015259 */, /* 3 */
134 -PRESHIFT(0x00026000) /* -0.000579834 */,
135 PRESHIFT(0x000e1000) /* 0.003433228 */,
136 -PRESHIFT(0x00285000) /* -0.009841919 */,
137 PRESHIFT(0x00765000) /* 0.028884888 */,
138 -PRESHIFT(0x0185d000) /* -0.095169067 */,
139 PRESHIFT(0x011d1000) /* 0.069595337 */,
140 -PRESHIFT(0x0a7fe000) /* -0.656219482 */,
141 PRESHIFT(0x12386000) /* 1.138763428 */,
142 PRESHIFT(0x07ccb000) /* 0.487472534 */,
143 PRESHIFT(0x01f9c000) /* 0.123474121 */,
144 PRESHIFT(0x00fdf000) /* 0.061996460 */,
145 PRESHIFT(0x00827000) /* 0.031845093 */,
146 PRESHIFT(0x00126000) /* 0.004486084 */,
147 PRESHIFT(0x000c4000) /* 0.002990723 */,
148 PRESHIFT(0x00015000) /* 0.000320435 */,
149
150 -PRESHIFT(0x00001000) /* -0.000015259 */,
151 -PRESHIFT(0x00026000) /* -0.000579834 */,
152 PRESHIFT(0x000e1000) /* 0.003433228 */,
153 -PRESHIFT(0x00285000) /* -0.009841919 */,
154 PRESHIFT(0x00765000) /* 0.028884888 */,
155 -PRESHIFT(0x0185d000) /* -0.095169067 */,
156 PRESHIFT(0x011d1000) /* 0.069595337 */,
157 -PRESHIFT(0x0a7fe000) /* -0.656219482 */,
158 PRESHIFT(0x12386000) /* 1.138763428 */,
159 PRESHIFT(0x07ccb000) /* 0.487472534 */,
160 PRESHIFT(0x01f9c000) /* 0.123474121 */,
161 PRESHIFT(0x00fdf000) /* 0.061996460 */,
162 PRESHIFT(0x00827000) /* 0.031845093 */,
163 PRESHIFT(0x00126000) /* 0.004486084 */,
164 PRESHIFT(0x000c4000) /* 0.002990723 */,
165 PRESHIFT(0x00015000) /* 0.000320435 */ },
166
167 { -PRESHIFT(0x00001000) /* -0.000015259 */, /* 4 */
168 -PRESHIFT(0x00029000) /* -0.000625610 */,
169 PRESHIFT(0x000e3000) /* 0.003463745 */,
170 -PRESHIFT(0x002c7000) /* -0.010848999 */,
171 PRESHIFT(0x0071e000) /* 0.027801514 */,
172 -PRESHIFT(0x019bd000) /* -0.100540161 */,
173 PRESHIFT(0x00ec0000) /* 0.057617187 */,
174 -PRESHIFT(0x0af15000) /* -0.683914185 */,
175 PRESHIFT(0x12249000) /* 1.133926392 */,
176 PRESHIFT(0x075a0000) /* 0.459472656 */,
177 PRESHIFT(0x0212c000) /* 0.129577637 */,
178 PRESHIFT(0x00e79000) /* 0.056533813 */,
179 PRESHIFT(0x00825000) /* 0.031814575 */,
180 PRESHIFT(0x000f4000) /* 0.003723145 */,
181 PRESHIFT(0x000be000) /* 0.002899170 */,
182 PRESHIFT(0x00013000) /* 0.000289917 */,
183
184 -PRESHIFT(0x00001000) /* -0.000015259 */,
185 -PRESHIFT(0x00029000) /* -0.000625610 */,
186 PRESHIFT(0x000e3000) /* 0.003463745 */,
187 -PRESHIFT(0x002c7000) /* -0.010848999 */,
188 PRESHIFT(0x0071e000) /* 0.027801514 */,
189 -PRESHIFT(0x019bd000) /* -0.100540161 */,
190 PRESHIFT(0x00ec0000) /* 0.057617187 */,
191 -PRESHIFT(0x0af15000) /* -0.683914185 */,
192 PRESHIFT(0x12249000) /* 1.133926392 */,
193 PRESHIFT(0x075a0000) /* 0.459472656 */,
194 PRESHIFT(0x0212c000) /* 0.129577637 */,
195 PRESHIFT(0x00e79000) /* 0.056533813 */,
196 PRESHIFT(0x00825000) /* 0.031814575 */,
197 PRESHIFT(0x000f4000) /* 0.003723145 */,
198 PRESHIFT(0x000be000) /* 0.002899170 */,
199 PRESHIFT(0x00013000) /* 0.000289917 */ },
200
201 { -PRESHIFT(0x00001000) /* -0.000015259 */, /* 5 */
202 -PRESHIFT(0x0002d000) /* -0.000686646 */,
203 PRESHIFT(0x000e4000) /* 0.003479004 */,
204 -PRESHIFT(0x0030b000) /* -0.011886597 */,
205 PRESHIFT(0x006cb000) /* 0.026535034 */,
206 -PRESHIFT(0x01b17000) /* -0.105819702 */,
207 PRESHIFT(0x00b77000) /* 0.044784546 */,
208 -PRESHIFT(0x0b619000) /* -0.711318970 */,
209 PRESHIFT(0x120b4000) /* 1.127746582 */,
210 PRESHIFT(0x06e81000) /* 0.431655884 */,
211 PRESHIFT(0x02288000) /* 0.134887695 */,
212 PRESHIFT(0x00d17000) /* 0.051132202 */,
213 PRESHIFT(0x0081b000) /* 0.031661987 */,
214 PRESHIFT(0x000c5000) /* 0.003005981 */,
215 PRESHIFT(0x000b7000) /* 0.002792358 */,
216 PRESHIFT(0x00011000) /* 0.000259399 */,
217
218 -PRESHIFT(0x00001000) /* -0.000015259 */,
219 -PRESHIFT(0x0002d000) /* -0.000686646 */,
220 PRESHIFT(0x000e4000) /* 0.003479004 */,
221 -PRESHIFT(0x0030b000) /* -0.011886597 */,
222 PRESHIFT(0x006cb000) /* 0.026535034 */,
223 -PRESHIFT(0x01b17000) /* -0.105819702 */,
224 PRESHIFT(0x00b77000) /* 0.044784546 */,
225 -PRESHIFT(0x0b619000) /* -0.711318970 */,
226 PRESHIFT(0x120b4000) /* 1.127746582 */,
227 PRESHIFT(0x06e81000) /* 0.431655884 */,
228 PRESHIFT(0x02288000) /* 0.134887695 */,
229 PRESHIFT(0x00d17000) /* 0.051132202 */,
230 PRESHIFT(0x0081b000) /* 0.031661987 */,
231 PRESHIFT(0x000c5000) /* 0.003005981 */,
232 PRESHIFT(0x000b7000) /* 0.002792358 */,
233 PRESHIFT(0x00011000) /* 0.000259399 */ },
234
235 { -PRESHIFT(0x00001000) /* -0.000015259 */, /* 6 */
236 -PRESHIFT(0x00031000) /* -0.000747681 */,
237 PRESHIFT(0x000e4000) /* 0.003479004 */,
238 -PRESHIFT(0x00350000) /* -0.012939453 */,
239 PRESHIFT(0x0066c000) /* 0.025085449 */,
240 -PRESHIFT(0x01c67000) /* -0.110946655 */,
241 PRESHIFT(0x007f5000) /* 0.031082153 */,
242 -PRESHIFT(0x0bd06000) /* -0.738372803 */,
243 PRESHIFT(0x11ec7000) /* 1.120223999 */,
244 PRESHIFT(0x06772000) /* 0.404083252 */,
245 PRESHIFT(0x023b3000) /* 0.139450073 */,
246 PRESHIFT(0x00bbc000) /* 0.045837402 */,
247 PRESHIFT(0x00809000) /* 0.031387329 */,
248 PRESHIFT(0x00099000) /* 0.002334595 */,
249 PRESHIFT(0x000b0000) /* 0.002685547 */,
250 PRESHIFT(0x00010000) /* 0.000244141 */,
251
252 -PRESHIFT(0x00001000) /* -0.000015259 */,
253 -PRESHIFT(0x00031000) /* -0.000747681 */,
254 PRESHIFT(0x000e4000) /* 0.003479004 */,
255 -PRESHIFT(0x00350000) /* -0.012939453 */,
256 PRESHIFT(0x0066c000) /* 0.025085449 */,
257 -PRESHIFT(0x01c67000) /* -0.110946655 */,
258 PRESHIFT(0x007f5000) /* 0.031082153 */,
259 -PRESHIFT(0x0bd06000) /* -0.738372803 */,
260 PRESHIFT(0x11ec7000) /* 1.120223999 */,
261 PRESHIFT(0x06772000) /* 0.404083252 */,
262 PRESHIFT(0x023b3000) /* 0.139450073 */,
263 PRESHIFT(0x00bbc000) /* 0.045837402 */,
264 PRESHIFT(0x00809000) /* 0.031387329 */,
265 PRESHIFT(0x00099000) /* 0.002334595 */,
266 PRESHIFT(0x000b0000) /* 0.002685547 */,
267 PRESHIFT(0x00010000) /* 0.000244141 */ },
268
269 { -PRESHIFT(0x00002000) /* -0.000030518 */, /* 7 */
270 -PRESHIFT(0x00035000) /* -0.000808716 */,
271 PRESHIFT(0x000e3000) /* 0.003463745 */,
272 -PRESHIFT(0x00397000) /* -0.014022827 */,
273 PRESHIFT(0x005ff000) /* 0.023422241 */,
274 -PRESHIFT(0x01dad000) /* -0.115921021 */,
275 PRESHIFT(0x0043a000) /* 0.016510010 */,
276 -PRESHIFT(0x0c3d9000) /* -0.765029907 */,
277 PRESHIFT(0x11c83000) /* 1.111373901 */,
278 PRESHIFT(0x06076000) /* 0.376800537 */,
279 PRESHIFT(0x024ad000) /* 0.143264771 */,
280 PRESHIFT(0x00a67000) /* 0.040634155 */,
281 PRESHIFT(0x007f0000) /* 0.031005859 */,
282 PRESHIFT(0x0006f000) /* 0.001693726 */,
283 PRESHIFT(0x000a9000) /* 0.002578735 */,
284 PRESHIFT(0x0000e000) /* 0.000213623 */,
285
286 -PRESHIFT(0x00002000) /* -0.000030518 */,
287 -PRESHIFT(0x00035000) /* -0.000808716 */,
288 PRESHIFT(0x000e3000) /* 0.003463745 */,
289 -PRESHIFT(0x00397000) /* -0.014022827 */,
290 PRESHIFT(0x005ff000) /* 0.023422241 */,
291 -PRESHIFT(0x01dad000) /* -0.115921021 */,
292 PRESHIFT(0x0043a000) /* 0.016510010 */,
293 -PRESHIFT(0x0c3d9000) /* -0.765029907 */,
294 PRESHIFT(0x11c83000) /* 1.111373901 */,
295 PRESHIFT(0x06076000) /* 0.376800537 */,
296 PRESHIFT(0x024ad000) /* 0.143264771 */,
297 PRESHIFT(0x00a67000) /* 0.040634155 */,
298 PRESHIFT(0x007f0000) /* 0.031005859 */,
299 PRESHIFT(0x0006f000) /* 0.001693726 */,
300 PRESHIFT(0x000a9000) /* 0.002578735 */,
301 PRESHIFT(0x0000e000) /* 0.000213623 */ },
302
303 { -PRESHIFT(0x00002000) /* -0.000030518 */, /* 8 */
304 -PRESHIFT(0x0003a000) /* -0.000885010 */,
305 PRESHIFT(0x000e0000) /* 0.003417969 */,
306 -PRESHIFT(0x003df000) /* -0.015121460 */,
307 PRESHIFT(0x00586000) /* 0.021575928 */,
308 -PRESHIFT(0x01ee6000) /* -0.120697021 */,
309 PRESHIFT(0x00046000) /* 0.001068115 */,
310 -PRESHIFT(0x0ca8d000) /* -0.791213989 */,
311 PRESHIFT(0x119e9000) /* 1.101211548 */,
312 PRESHIFT(0x05991000) /* 0.349868774 */,
313 PRESHIFT(0x02578000) /* 0.146362305 */,
314 PRESHIFT(0x0091a000) /* 0.035552979 */,
315 PRESHIFT(0x007d1000) /* 0.030532837 */,
316 PRESHIFT(0x00048000) /* 0.001098633 */,
317 PRESHIFT(0x000a1000) /* 0.002456665 */,
318 PRESHIFT(0x0000d000) /* 0.000198364 */,
319
320 -PRESHIFT(0x00002000) /* -0.000030518 */,
321 -PRESHIFT(0x0003a000) /* -0.000885010 */,
322 PRESHIFT(0x000e0000) /* 0.003417969 */,
323 -PRESHIFT(0x003df000) /* -0.015121460 */,
324 PRESHIFT(0x00586000) /* 0.021575928 */,
325 -PRESHIFT(0x01ee6000) /* -0.120697021 */,
326 PRESHIFT(0x00046000) /* 0.001068115 */,
327 -PRESHIFT(0x0ca8d000) /* -0.791213989 */,
328 PRESHIFT(0x119e9000) /* 1.101211548 */,
329 PRESHIFT(0x05991000) /* 0.349868774 */,
330 PRESHIFT(0x02578000) /* 0.146362305 */,
331 PRESHIFT(0x0091a000) /* 0.035552979 */,
332 PRESHIFT(0x007d1000) /* 0.030532837 */,
333 PRESHIFT(0x00048000) /* 0.001098633 */,
334 PRESHIFT(0x000a1000) /* 0.002456665 */,
335 PRESHIFT(0x0000d000) /* 0.000198364 */ },
336
337 { -PRESHIFT(0x00002000) /* -0.000030518 */, /* 9 */
338 -PRESHIFT(0x0003f000) /* -0.000961304 */,
339 PRESHIFT(0x000dd000) /* 0.003372192 */,
340 -PRESHIFT(0x00428000) /* -0.016235352 */,
341 PRESHIFT(0x00500000) /* 0.019531250 */,
342 -PRESHIFT(0x02011000) /* -0.125259399 */,
343 -PRESHIFT(0x003e6000) /* -0.015228271 */,
344 -PRESHIFT(0x0d11e000) /* -0.816864014 */,
345 PRESHIFT(0x116fc000) /* 1.089782715 */,
346 PRESHIFT(0x052c5000) /* 0.323318481 */,
347 PRESHIFT(0x02616000) /* 0.148773193 */,
348 PRESHIFT(0x007d6000) /* 0.030609131 */,
349 PRESHIFT(0x007aa000) /* 0.029937744 */,
350 PRESHIFT(0x00024000) /* 0.000549316 */,
351 PRESHIFT(0x0009a000) /* 0.002349854 */,
352 PRESHIFT(0x0000b000) /* 0.000167847 */,
353
354 -PRESHIFT(0x00002000) /* -0.000030518 */,
355 -PRESHIFT(0x0003f000) /* -0.000961304 */,
356 PRESHIFT(0x000dd000) /* 0.003372192 */,
357 -PRESHIFT(0x00428000) /* -0.016235352 */,
358 PRESHIFT(0x00500000) /* 0.019531250 */,
359 -PRESHIFT(0x02011000) /* -0.125259399 */,
360 -PRESHIFT(0x003e6000) /* -0.015228271 */,
361 -PRESHIFT(0x0d11e000) /* -0.816864014 */,
362 PRESHIFT(0x116fc000) /* 1.089782715 */,
363 PRESHIFT(0x052c5000) /* 0.323318481 */,
364 PRESHIFT(0x02616000) /* 0.148773193 */,
365 PRESHIFT(0x007d6000) /* 0.030609131 */,
366 PRESHIFT(0x007aa000) /* 0.029937744 */,
367 PRESHIFT(0x00024000) /* 0.000549316 */,
368 PRESHIFT(0x0009a000) /* 0.002349854 */,
369 PRESHIFT(0x0000b000) /* 0.000167847 */ },
370
371 { -PRESHIFT(0x00002000) /* -0.000030518 */, /* 10 */
372 -PRESHIFT(0x00044000) /* -0.001037598 */,
373 PRESHIFT(0x000d7000) /* 0.003280640 */,
374 -PRESHIFT(0x00471000) /* -0.017349243 */,
375 PRESHIFT(0x0046b000) /* 0.017257690 */,
376 -PRESHIFT(0x0212b000) /* -0.129562378 */,
377 -PRESHIFT(0x0084a000) /* -0.032379150 */,
378 -PRESHIFT(0x0d78a000) /* -0.841949463 */,
379 PRESHIFT(0x113be000) /* 1.077117920 */,
380 PRESHIFT(0x04c16000) /* 0.297210693 */,
381 PRESHIFT(0x02687000) /* 0.150497437 */,
382 PRESHIFT(0x0069c000) /* 0.025817871 */,
383 PRESHIFT(0x0077f000) /* 0.029281616 */,
384 PRESHIFT(0x00002000) /* 0.000030518 */,
385 PRESHIFT(0x00093000) /* 0.002243042 */,
386 PRESHIFT(0x0000a000) /* 0.000152588 */,
387
388 -PRESHIFT(0x00002000) /* -0.000030518 */,
389 -PRESHIFT(0x00044000) /* -0.001037598 */,
390 PRESHIFT(0x000d7000) /* 0.003280640 */,
391 -PRESHIFT(0x00471000) /* -0.017349243 */,
392 PRESHIFT(0x0046b000) /* 0.017257690 */,
393 -PRESHIFT(0x0212b000) /* -0.129562378 */,
394 -PRESHIFT(0x0084a000) /* -0.032379150 */,
395 -PRESHIFT(0x0d78a000) /* -0.841949463 */,
396 PRESHIFT(0x113be000) /* 1.077117920 */,
397 PRESHIFT(0x04c16000) /* 0.297210693 */,
398 PRESHIFT(0x02687000) /* 0.150497437 */,
399 PRESHIFT(0x0069c000) /* 0.025817871 */,
400 PRESHIFT(0x0077f000) /* 0.029281616 */,
401 PRESHIFT(0x00002000) /* 0.000030518 */,
402 PRESHIFT(0x00093000) /* 0.002243042 */,
403 PRESHIFT(0x0000a000) /* 0.000152588 */ },
404
405 { -PRESHIFT(0x00003000) /* -0.000045776 */, /* 11 */
406 -PRESHIFT(0x00049000) /* -0.001113892 */,
407 PRESHIFT(0x000d0000) /* 0.003173828 */,
408 -PRESHIFT(0x004ba000) /* -0.018463135 */,
409 PRESHIFT(0x003ca000) /* 0.014801025 */,
410 -PRESHIFT(0x02233000) /* -0.133590698 */,
411 -PRESHIFT(0x00ce4000) /* -0.050354004 */,
412 -PRESHIFT(0x0ddca000) /* -0.866363525 */,
413 PRESHIFT(0x1102f000) /* 1.063217163 */,
414 PRESHIFT(0x04587000) /* 0.271591187 */,
415 PRESHIFT(0x026cf000) /* 0.151596069 */,
416 PRESHIFT(0x0056c000) /* 0.021179199 */,
417 PRESHIFT(0x0074e000) /* 0.028533936 */,
418 -PRESHIFT(0x0001d000) /* -0.000442505 */,
419 PRESHIFT(0x0008b000) /* 0.002120972 */,
420 PRESHIFT(0x00009000) /* 0.000137329 */,
421
422 -PRESHIFT(0x00003000) /* -0.000045776 */,
423 -PRESHIFT(0x00049000) /* -0.001113892 */,
424 PRESHIFT(0x000d0000) /* 0.003173828 */,
425 -PRESHIFT(0x004ba000) /* -0.018463135 */,
426 PRESHIFT(0x003ca000) /* 0.014801025 */,
427 -PRESHIFT(0x02233000) /* -0.133590698 */,
428 -PRESHIFT(0x00ce4000) /* -0.050354004 */,
429 -PRESHIFT(0x0ddca000) /* -0.866363525 */,
430 PRESHIFT(0x1102f000) /* 1.063217163 */,
431 PRESHIFT(0x04587000) /* 0.271591187 */,
432 PRESHIFT(0x026cf000) /* 0.151596069 */,
433 PRESHIFT(0x0056c000) /* 0.021179199 */,
434 PRESHIFT(0x0074e000) /* 0.028533936 */,
435 -PRESHIFT(0x0001d000) /* -0.000442505 */,
436 PRESHIFT(0x0008b000) /* 0.002120972 */,
437 PRESHIFT(0x00009000) /* 0.000137329 */ },
438
439 { -PRESHIFT(0x00003000) /* -0.000045776 */, /* 12 */
440 -PRESHIFT(0x0004f000) /* -0.001205444 */,
441 PRESHIFT(0x000c8000) /* 0.003051758 */,
442 -PRESHIFT(0x00503000) /* -0.019577026 */,
443 PRESHIFT(0x0031a000) /* 0.012115479 */,
444 -PRESHIFT(0x02326000) /* -0.137298584 */,
445 -PRESHIFT(0x011b5000) /* -0.069168091 */,
446 -PRESHIFT(0x0e3dd000) /* -0.890090942 */,
447 PRESHIFT(0x10c54000) /* 1.048156738 */,
448 PRESHIFT(0x03f1b000) /* 0.246505737 */,
449 PRESHIFT(0x026ee000) /* 0.152069092 */,
450 PRESHIFT(0x00447000) /* 0.016708374 */,
451 PRESHIFT(0x00719000) /* 0.027725220 */,
452 -PRESHIFT(0x00039000) /* -0.000869751 */,
453 PRESHIFT(0x00084000) /* 0.002014160 */,
454 PRESHIFT(0x00008000) /* 0.000122070 */,
455
456 -PRESHIFT(0x00003000) /* -0.000045776 */,
457 -PRESHIFT(0x0004f000) /* -0.001205444 */,
458 PRESHIFT(0x000c8000) /* 0.003051758 */,
459 -PRESHIFT(0x00503000) /* -0.019577026 */,
460 PRESHIFT(0x0031a000) /* 0.012115479 */,
461 -PRESHIFT(0x02326000) /* -0.137298584 */,
462 -PRESHIFT(0x011b5000) /* -0.069168091 */,
463 -PRESHIFT(0x0e3dd000) /* -0.890090942 */,
464 PRESHIFT(0x10c54000) /* 1.048156738 */,
465 PRESHIFT(0x03f1b000) /* 0.246505737 */,
466 PRESHIFT(0x026ee000) /* 0.152069092 */,
467 PRESHIFT(0x00447000) /* 0.016708374 */,
468 PRESHIFT(0x00719000) /* 0.027725220 */,
469 -PRESHIFT(0x00039000) /* -0.000869751 */,
470 PRESHIFT(0x00084000) /* 0.002014160 */,
471 PRESHIFT(0x00008000) /* 0.000122070 */ },
472
473 { -PRESHIFT(0x00004000) /* -0.000061035 */, /* 13 */
474 -PRESHIFT(0x00055000) /* -0.001296997 */,
475 PRESHIFT(0x000bd000) /* 0.002883911 */,
476 -PRESHIFT(0x0054c000) /* -0.020690918 */,
477 PRESHIFT(0x0025d000) /* 0.009231567 */,
478 -PRESHIFT(0x02403000) /* -0.140670776 */,
479 -PRESHIFT(0x016ba000) /* -0.088775635 */,
480 -PRESHIFT(0x0e9be000) /* -0.913055420 */,
481 PRESHIFT(0x1082d000) /* 1.031936646 */,
482 PRESHIFT(0x038d4000) /* 0.221984863 */,
483 PRESHIFT(0x026e7000) /* 0.151962280 */,
484 PRESHIFT(0x0032e000) /* 0.012420654 */,
485 PRESHIFT(0x006df000) /* 0.026840210 */,
486 -PRESHIFT(0x00053000) /* -0.001266479 */,
487 PRESHIFT(0x0007d000) /* 0.001907349 */,
488 PRESHIFT(0x00007000) /* 0.000106812 */,
489
490 -PRESHIFT(0x00004000) /* -0.000061035 */,
491 -PRESHIFT(0x00055000) /* -0.001296997 */,
492 PRESHIFT(0x000bd000) /* 0.002883911 */,
493 -PRESHIFT(0x0054c000) /* -0.020690918 */,
494 PRESHIFT(0x0025d000) /* 0.009231567 */,
495 -PRESHIFT(0x02403000) /* -0.140670776 */,
496 -PRESHIFT(0x016ba000) /* -0.088775635 */,
497 -PRESHIFT(0x0e9be000) /* -0.913055420 */,
498 PRESHIFT(0x1082d000) /* 1.031936646 */,
499 PRESHIFT(0x038d4000) /* 0.221984863 */,
500 PRESHIFT(0x026e7000) /* 0.151962280 */,
501 PRESHIFT(0x0032e000) /* 0.012420654 */,
502 PRESHIFT(0x006df000) /* 0.026840210 */,
503 -PRESHIFT(0x00053000) /* -0.001266479 */,
504 PRESHIFT(0x0007d000) /* 0.001907349 */,
505 PRESHIFT(0x00007000) /* 0.000106812 */ },
506
507 { -PRESHIFT(0x00004000) /* -0.000061035 */, /* 14 */
508 -PRESHIFT(0x0005b000) /* -0.001388550 */,
509 PRESHIFT(0x000b1000) /* 0.002700806 */,
510 -PRESHIFT(0x00594000) /* -0.021789551 */,
511 PRESHIFT(0x00192000) /* 0.006134033 */,
512 -PRESHIFT(0x024c8000) /* -0.143676758 */,
513 -PRESHIFT(0x01bf2000) /* -0.109161377 */,
514 -PRESHIFT(0x0ef69000) /* -0.935195923 */,
515 PRESHIFT(0x103be000) /* 1.014617920 */,
516 PRESHIFT(0x032b4000) /* 0.198059082 */,
517 PRESHIFT(0x026bc000) /* 0.151306152 */,
518 PRESHIFT(0x00221000) /* 0.008316040 */,
519 PRESHIFT(0x006a2000) /* 0.025909424 */,
520 -PRESHIFT(0x0006a000) /* -0.001617432 */,
521 PRESHIFT(0x00075000) /* 0.001785278 */,
522 PRESHIFT(0x00007000) /* 0.000106812 */,
523
524 -PRESHIFT(0x00004000) /* -0.000061035 */,
525 -PRESHIFT(0x0005b000) /* -0.001388550 */,
526 PRESHIFT(0x000b1000) /* 0.002700806 */,
527 -PRESHIFT(0x00594000) /* -0.021789551 */,
528 PRESHIFT(0x00192000) /* 0.006134033 */,
529 -PRESHIFT(0x024c8000) /* -0.143676758 */,
530 -PRESHIFT(0x01bf2000) /* -0.109161377 */,
531 -PRESHIFT(0x0ef69000) /* -0.935195923 */,
532 PRESHIFT(0x103be000) /* 1.014617920 */,
533 PRESHIFT(0x032b4000) /* 0.198059082 */,
534 PRESHIFT(0x026bc000) /* 0.151306152 */,
535 PRESHIFT(0x00221000) /* 0.008316040 */,
536 PRESHIFT(0x006a2000) /* 0.025909424 */,
537 -PRESHIFT(0x0006a000) /* -0.001617432 */,
538 PRESHIFT(0x00075000) /* 0.001785278 */,
539 PRESHIFT(0x00007000) /* 0.000106812 */ },
540
541 { -PRESHIFT(0x00005000) /* -0.000076294 */, /* 15 */
542 -PRESHIFT(0x00061000) /* -0.001480103 */,
543 PRESHIFT(0x000a3000) /* 0.002487183 */,
544 -PRESHIFT(0x005da000) /* -0.022857666 */,
545 PRESHIFT(0x000b9000) /* 0.002822876 */,
546 -PRESHIFT(0x02571000) /* -0.146255493 */,
547 -PRESHIFT(0x0215c000) /* -0.130310059 */,
548 -PRESHIFT(0x0f4dc000) /* -0.956481934 */,
549 PRESHIFT(0x0ff0a000) /* 0.996246338 */,
550 PRESHIFT(0x02cbf000) /* 0.174789429 */,
551 PRESHIFT(0x0266e000) /* 0.150115967 */,
552 PRESHIFT(0x00120000) /* 0.004394531 */,
553 PRESHIFT(0x00662000) /* 0.024932861 */,
554 -PRESHIFT(0x0007f000) /* -0.001937866 */,
555 PRESHIFT(0x0006f000) /* 0.001693726 */,
556 PRESHIFT(0x00006000) /* 0.000091553 */,
557
558 -PRESHIFT(0x00005000) /* -0.000076294 */,
559 -PRESHIFT(0x00061000) /* -0.001480103 */,
560 PRESHIFT(0x000a3000) /* 0.002487183 */,
561 -PRESHIFT(0x005da000) /* -0.022857666 */,
562 PRESHIFT(0x000b9000) /* 0.002822876 */,
563 -PRESHIFT(0x02571000) /* -0.146255493 */,
564 -PRESHIFT(0x0215c000) /* -0.130310059 */,
565 -PRESHIFT(0x0f4dc000) /* -0.956481934 */,
566 PRESHIFT(0x0ff0a000) /* 0.996246338 */,
567 PRESHIFT(0x02cbf000) /* 0.174789429 */,
568 PRESHIFT(0x0266e000) /* 0.150115967 */,
569 PRESHIFT(0x00120000) /* 0.004394531 */,
570 PRESHIFT(0x00662000) /* 0.024932861 */,
571 -PRESHIFT(0x0007f000) /* -0.001937866 */,
572 PRESHIFT(0x0006f000) /* 0.001693726 */,
573 PRESHIFT(0x00006000) /* 0.000091553 */ },
574
575 { -PRESHIFT(0x00005000) /* -0.000076294 */, /* 16 */
576 -PRESHIFT(0x00068000) /* -0.001586914 */,
577 PRESHIFT(0x00092000) /* 0.002227783 */,
578 -PRESHIFT(0x0061f000) /* -0.023910522 */,
579 -PRESHIFT(0x0002d000) /* -0.000686646 */,
580 -PRESHIFT(0x025ff000) /* -0.148422241 */,
581 -PRESHIFT(0x026f7000) /* -0.152206421 */,
582 -PRESHIFT(0x0fa13000) /* -0.976852417 */,
583 PRESHIFT(0x0fa13000) /* 0.976852417 */,
584 PRESHIFT(0x026f7000) /* 0.152206421 */,
585 PRESHIFT(0x025ff000) /* 0.148422241 */,
586 PRESHIFT(0x0002d000) /* 0.000686646 */,
587 PRESHIFT(0x0061f000) /* 0.023910522 */,
588 -PRESHIFT(0x00092000) /* -0.002227783 */,
589 PRESHIFT(0x00068000) /* 0.001586914 */,
590 PRESHIFT(0x00005000) /* 0.000076294 */,
591
592 -PRESHIFT(0x00005000) /* -0.000076294 */,
593 -PRESHIFT(0x00068000) /* -0.001586914 */,
594 PRESHIFT(0x00092000) /* 0.002227783 */,
595 -PRESHIFT(0x0061f000) /* -0.023910522 */,
596 -PRESHIFT(0x0002d000) /* -0.000686646 */,
597 -PRESHIFT(0x025ff000) /* -0.148422241 */,
598 -PRESHIFT(0x026f7000) /* -0.152206421 */,
599 -PRESHIFT(0x0fa13000) /* -0.976852417 */,
600 PRESHIFT(0x0fa13000) /* 0.976852417 */,
601 PRESHIFT(0x026f7000) /* 0.152206421 */,
602 PRESHIFT(0x025ff000) /* 0.148422241 */,
603 PRESHIFT(0x0002d000) /* 0.000686646 */,
604 PRESHIFT(0x0061f000) /* 0.023910522 */,
605 -PRESHIFT(0x00092000) /* -0.002227783 */,
606 PRESHIFT(0x00068000) /* 0.001586914 */,
607 PRESHIFT(0x00005000) /* 0.000076294 */ }
diff --git a/lib/rbcodec/codecs/libmad/README b/lib/rbcodec/codecs/libmad/README
new file mode 100644
index 0000000000..524a94b29d
--- /dev/null
+++ b/lib/rbcodec/codecs/libmad/README
@@ -0,0 +1,241 @@
1
2 libmad - MPEG audio decoder library
3 Copyright (C) 2000-2004 Underbit Technologies, Inc.
4
5 $Id$
6
7===============================================================================
8
9INTRODUCTION
10
11 MAD (libmad) is a high-quality MPEG audio decoder. It currently supports
12 MPEG-1 and the MPEG-2 extension to Lower Sampling Frequencies, as well as
13 the so-called MPEG 2.5 format. All three audio layers (Layer I, Layer II,
14 and Layer III a.k.a. MP3) are fully implemented.
15
16 MAD does not yet support MPEG-2 multichannel audio (although it should be
17 backward compatible with such streams) nor does it currently support AAC.
18
19 MAD has the following special features:
20
21 - 24-bit PCM output
22 - 100% fixed-point (integer) computation
23 - completely new implementation based on the ISO/IEC standards
24 - distributed under the terms of the GNU General Public License (GPL)
25
26 Because MAD provides full 24-bit PCM output, applications using MAD are
27 able to produce high quality audio. Even when the output device supports
28 only 16-bit PCM, applications can use the extra resolution to increase the
29 audible dynamic range through the use of dithering or noise shaping.
30
31 Because MAD uses integer computation rather than floating point, it is
32 well suited for architectures without a floating point unit. All
33 calculations are performed with a 32-bit fixed-point integer
34 representation.
35
36 Because MAD is a new implementation of the ISO/IEC standards, it is
37 unencumbered by the errors of other implementations. MAD is NOT a
38 derivation of the ISO reference source or any other code. Considerable
39 effort has been expended to ensure a correct implementation, even in cases
40 where the standards are ambiguous or misleading.
41
42 Because MAD is distributed under the terms of the GPL, its redistribution
43 is not generally restricted, so long as the terms of the GPL are followed.
44 This means MAD can be incorporated into other software as long as that
45 software is also distributed under the GPL. (Should this be undesirable,
46 alternate arrangements may be possible by contacting Underbit.)
47
48===============================================================================
49
50ABOUT THE CODE
51
52 The code is optimized and performs very well, although specific
53 improvements can still be made. The output from the decoder library
54 consists of 32-bit signed linear fixed-point values that can be easily
55 scaled for any size PCM output, up to 24 bits per sample.
56
57 The API for libmad can be found in the `mad.h' header file. Note that this
58 file is automatically generated, and will not exist until after you have
59 built the library.
60
61 There are two APIs available, one high-level, and the other low-level.
62 With the low-level API, each step of the decoding process must be handled
63 explicitly, offering the greatest amount of control. With the high-level
64 API, after callbacks are configured, a single routine will decode an
65 entire bitstream.
66
67 The high-level API may either be used synchronously or asynchronously. If
68 used asynchronously, decoding will occur in a separate process.
69 Communication is possible with the decoding process by passing control
70 messages.
71
72 The file `minimad.c' contains an example usage of the libmad API that
73 shows only the bare minimum required to implement a useful decoder. It
74 expects a regular file to be redirected to standard input, and it sends
75 decoded 16-bit signed little-endian PCM samples to standard output. If a
76 decoding error occurs, it is reported to standard error and decoding
77 continues. Note that the scale() routine in this code is only provided as
78 an example; it rounds MAD's high-resolution samples down to 16 bits, but
79 does not perform any dithering or noise shaping. It is therefore not
80 recommended to use this routine as-is in your own code if sound quality is
81 important.
82
83Integer Performance
84
85 To get the best possible performance, it is recommended that an assembly
86 version of the fixed-point multiply and related routines be selected.
87 Several such assembly routines have been written for various CPUs.
88
89 If an assembly version is not available, a fast approximation version will
90 be used. This will result in reduced accuracy of the decoder.
91
92 Alternatively, if 64-bit integers are supported as a datatype by the
93 compiler, another version can be used that is much more accurate.
94 However, using an assembly version is generally much faster and just as
95 accurate.
96
97 More information can be gathered from the `fixed.h' header file.
98
99 MAD's CPU-intensive subband synthesis routine can be further optimized at
100 the expense of a slight loss in output accuracy due to a modified method
101 for fixed-point multiplication with a small windowing constant. While this
102 is helpful for performance and the output accuracy loss is generally
103 undetectable, it is disabled by default and must be explicitly enabled.
104
105 Under some architectures, other special optimizations may also be
106 available.
107
108Audio Quality
109
110 The output from MAD has been found to satisfy the ISO/IEC 11172-4
111 computational accuracy requirements for compliance. In most
112 configurations, MAD is a Full Layer III ISO/IEC 11172-3 audio decoder as
113 defined by the standard.
114
115 When the approximation version of the fixed-point multiply is used, MAD is
116 a limited accuracy ISO/IEC 11172-3 audio decoder as defined by the
117 standard.
118
119 MAD can alternatively be configured to produce output with less or more
120 accuracy than the default, as a tradeoff with performance.
121
122 MAD produces output samples with a precision greater than 24 bits. Because
123 most output formats use fewer bits, typically 16, it is recommended that a
124 dithering algorithm be used (rather than rounding or truncating) to obtain
125 the highest quality audio. However, dithering may unfavorably affect an
126 analytic examination of the output (such as compliance testing); you may
127 therefore wish to use rounding in this case instead.
128
129Portability Issues
130
131 GCC is preferred to compile the code, but other compilers may also work.
132 The assembly code in `fixed.h' depends on the inline assembly features of
133 your compiler. If you're not using GCC or MSVC++, you can either write
134 your own assembly macros or use the default (low quality output) version.
135
136 The union initialization of `huffman.c' may not be portable to all
137 platforms when GCC is not used.
138
139 The code should not be sensitive to word sizes or byte ordering, however
140 it does assume A % B has the same sign as A.
141
142===============================================================================
143
144BUILDING AND INSTALLING
145
146Windows Platforms
147
148 MAD can be built under Windows using either MSVC++ or Cygwin. A MSVC++
149 project file can be found under the `msvc++' subdirectory.
150
151 To build libmad using Cygwin, you will first need to install the Cygwin
152 tools:
153
154 http://www.cygwin.com/
155
156 You may then proceed with the following POSIX instructions within the
157 Cygwin shell.
158
159 Note that by default Cygwin will build a library that depends on the
160 Cygwin DLL. You can use MinGW to build a library that does not depend on
161 the Cygwin DLL. To do so, give the option --host=mingw32 to `configure'.
162
163POSIX Platforms (including Cygwin)
164
165 The code is distributed with a `configure' script that will generate for
166 you a `Makefile' and a `config.h' for your platform. See the file
167 `INSTALL' for generic instructions.
168
169 The specific options you may want to give `configure' are:
170
171 --enable-speed optimize for speed over accuracy
172
173 --enable-accuracy optimize for accuracy over speed
174
175 --disable-debugging do not compile with debugging support, and
176 use more optimizations
177
178 --disable-shared do not build a shared library
179
180 Note that you need not specify one of --enable-speed or --enable-accuracy;
181 in its default configuration, MAD is optimized for both. You should only
182 use one of these options if you wish to compromise speed or accuracy for
183 the other.
184
185 By default the package will build a shared library if possible for your
186 platform. If you want only a static library, use --disable-shared.
187
188 It is not normally necessary to use the following options, but you may
189 fine-tune the configuration with them if desired:
190
191 --enable-fpm=ARCH use the ARCH-specific version of the
192 fixed-point math assembly routines
193 (current options are: intel, arm, mips,
194 sparc, ppc; also allowed are: 64bit, approx)
195
196 --enable-sso use the subband synthesis optimization,
197 with reduced accuracy
198
199 --disable-aso do not use certain architecture-specific
200 optimizations
201
202 By default an appropriate fixed-point assembly routine will be selected
203 for the configured host type, if it can be determined. Thus if you are
204 cross-compiling for another architecture, you should be sure either to
205 give `configure' a host type argument (--host) or to use an explicit
206 --enable-fpm option.
207
208 If an appropriate assembly routine cannot be determined, the default
209 approximation version will be used. In this case, use of an alternate
210 --enable-fpm is highly recommended.
211
212Experimenting and Developing
213
214 Further options for `configure' that may be useful to developers and
215 experimenters are:
216
217 --enable-debugging enable diagnostic debugging support and
218 debugging symbols
219
220 --enable-profiling generate `gprof' profiling code
221
222 --enable-experimental enable code using the EXPERIMENTAL
223 preprocessor define
224
225===============================================================================
226
227COPYRIGHT
228
229 Please read the `COPYRIGHT' file for copyright and warranty information.
230 Also, the file `COPYING' contains the full text of the GNU GPL.
231
232 Send inquiries, comments, bug reports, suggestions, patches, etc. to:
233
234 Underbit Technologies, Inc. <support@underbit.com>
235
236 See also the MAD home page on the Web:
237
238 http://www.underbit.com/products/mad/
239
240===============================================================================
241
diff --git a/lib/rbcodec/codecs/libmad/README.rockbox b/lib/rbcodec/codecs/libmad/README.rockbox
new file mode 100644
index 0000000000..faddc0d391
--- /dev/null
+++ b/lib/rbcodec/codecs/libmad/README.rockbox
@@ -0,0 +1,23 @@
1Library: libmad-0.15.1b (2004-02-17)
2Imported: 2005-02-15 by Dave Chapman
3
4
5This directory contains a local version of libmad for use by Rockbox
6targets needing software MPEG audio decoding.
7
8
9LICENSING INFORMATION
10
11libmad is (C) 2000-2004 Unibit Technologies, Inc. and licensed under
12the terms of the GNU General Public License. See file "COPYRIGHT" in
13this directory for more information.
14
15
16IMPORT DETAILS
17
18The base version first imported into Rockbox was libmad-0.15.1b
19(released on 2004-02-17), downloaded on 2005-02-15 from the files
20section at http://sourceforge.net/projects/mad/
21
22The autoconf/automake files were removed from the official source
23tarball, as well as the "msvc++" subdirectory.
diff --git a/lib/rbcodec/codecs/libmad/SOURCES b/lib/rbcodec/codecs/libmad/SOURCES
new file mode 100644
index 0000000000..d81804ca38
--- /dev/null
+++ b/lib/rbcodec/codecs/libmad/SOURCES
@@ -0,0 +1,14 @@
1bit.c
2frame.c
3huffman.c
4layer12.c
5layer3.c
6stream.c
7synth.c
8#if defined(CPU_COLDFIRE)
9imdct_mcf5249.S
10#endif
11#if defined(CPU_ARM)
12imdct_l_arm.S
13synth_full_arm.S
14#endif
diff --git a/lib/rbcodec/codecs/libmad/TODO b/lib/rbcodec/codecs/libmad/TODO
new file mode 100644
index 0000000000..a397655c6c
--- /dev/null
+++ b/lib/rbcodec/codecs/libmad/TODO
@@ -0,0 +1,69 @@
1
2 libmad - MPEG audio decoder library
3 Copyright (C) 2000-2004 Underbit Technologies, Inc.
4
5 $Id$
6
7===============================================================================
8
9libmad:
10 - more API layers (buffering, PCM samples, dithering, etc.)
11 - x86 performance optimization compiler flags
12 - function documentation, general docs
13 - finish async API
14 - parse system streams?
15 - MPEG-2 MC, AAC?
16 - logarithmic multiplication?
17 - multiple frame decoding for better locality of reference?
18 - frame serial numbers, Layer III frame continuity checks
19
20fixed.h:
21 - experiment with FPM_INTEL:
22
23# if 1
24# define mad_f_scale64(hi, lo) \
25 ({ mad_fixed_t __result; \
26 asm ("shrl %3,%1\n\t" \
27 "shll %4,%2\n\t" \
28 "orl %2,%1" \
29 : "=rm" (__result) \
30 : "0" (lo), "r" (hi), \
31 "I" (MAD_F_SCALEBITS), "I" (32 - MAD_F_SCALEBITS) \
32 : "cc"); \
33 __result; \
34 })
35# else
36# define mad_f_scale64(hi, lo) \
37 ({ mad_fixed64hi_t __hi_; \
38 mad_fixed64lo_t __lo_; \
39 mad_fixed_t __result; \
40 asm ("sall %2,%1" \
41 : "=r" (__hi_) \
42 : "0" (hi), "I" (32 - MAD_F_SCALEBITS) \
43 : "cc"); \
44 asm ("shrl %2,%1" \
45 : "=r" (__lo_) \
46 : "0" (lo), "I" (MAD_F_SCALEBITS) \
47 : "cc"); \
48 asm ("orl %1,%2" \
49 : "=rm" (__result) \
50 : "r" (__hi_), "0" (__lo_) \
51 : "cc"); \
52 __result; \
53 })
54# endif
55
56libmad Layer I:
57 - check frame length sanity
58
59libmad Layer II:
60 - check frame length sanity
61
62libmad Layer III:
63 - circular buffer
64 - optimize zero_part from Huffman decoding throughout
65 - MPEG 2.5 8000 Hz sf bands? mixed blocks?
66 - stereo->mono conversion optimization?
67 - enable frame-at-a-time decoding
68 - improve portability of huffman.c
69
diff --git a/lib/rbcodec/codecs/libmad/VERSION b/lib/rbcodec/codecs/libmad/VERSION
new file mode 100644
index 0000000000..d4e8f64aa2
--- /dev/null
+++ b/lib/rbcodec/codecs/libmad/VERSION
@@ -0,0 +1,7 @@
10.15.1b
2configure.ac:24
3version.h:25-28
4msvc++/config.h:99,105,120
5msvc++/mad.h:41-44
6
7Makefile.am:98-100
diff --git a/lib/rbcodec/codecs/libmad/bit.c b/lib/rbcodec/codecs/libmad/bit.c
new file mode 100644
index 0000000000..c08806d385
--- /dev/null
+++ b/lib/rbcodec/codecs/libmad/bit.c
@@ -0,0 +1,218 @@
1/*
2 * libmad - MPEG audio decoder library
3 * Copyright (C) 2000-2004 Underbit Technologies, Inc.
4 *
5 * This program is free software; you can redistribute it and/or modify
6 * it under the terms of the GNU General Public License as published by
7 * the Free Software Foundation; either version 2 of the License, or
8 * (at your option) any later version.
9 *
10 * This program is distributed in the hope that it will be useful,
11 * but WITHOUT ANY WARRANTY; without even the implied warranty of
12 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 * GNU General Public License for more details.
14 *
15 * You should have received a copy of the GNU General Public License
16 * along with this program; if not, write to the Free Software
17 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
18 *
19 * $Id$
20 */
21
22# ifdef HAVE_CONFIG_H
23# include "config.h"
24# endif
25
26# include "global.h"
27
28# ifdef HAVE_LIMITS_H
29# include <limits.h>
30# else
31# undef CHAR_BIT
32# define CHAR_BIT 8
33# endif
34
35# include "bit.h"
36
37/*
38 * This is the lookup table for computing the CRC-check word.
39 * As described in section 2.4.3.1 and depicted in Figure A.9
40 * of ISO/IEC 11172-3, the generator polynomial is:
41 *
42 * G(X) = X^16 + X^15 + X^2 + 1
43 */
44static
45unsigned short const crc_table[256] = {
46 0x0000, 0x8005, 0x800f, 0x000a, 0x801b, 0x001e, 0x0014, 0x8011,
47 0x8033, 0x0036, 0x003c, 0x8039, 0x0028, 0x802d, 0x8027, 0x0022,
48 0x8063, 0x0066, 0x006c, 0x8069, 0x0078, 0x807d, 0x8077, 0x0072,
49 0x0050, 0x8055, 0x805f, 0x005a, 0x804b, 0x004e, 0x0044, 0x8041,
50 0x80c3, 0x00c6, 0x00cc, 0x80c9, 0x00d8, 0x80dd, 0x80d7, 0x00d2,
51 0x00f0, 0x80f5, 0x80ff, 0x00fa, 0x80eb, 0x00ee, 0x00e4, 0x80e1,
52 0x00a0, 0x80a5, 0x80af, 0x00aa, 0x80bb, 0x00be, 0x00b4, 0x80b1,
53 0x8093, 0x0096, 0x009c, 0x8099, 0x0088, 0x808d, 0x8087, 0x0082,
54
55 0x8183, 0x0186, 0x018c, 0x8189, 0x0198, 0x819d, 0x8197, 0x0192,
56 0x01b0, 0x81b5, 0x81bf, 0x01ba, 0x81ab, 0x01ae, 0x01a4, 0x81a1,
57 0x01e0, 0x81e5, 0x81ef, 0x01ea, 0x81fb, 0x01fe, 0x01f4, 0x81f1,
58 0x81d3, 0x01d6, 0x01dc, 0x81d9, 0x01c8, 0x81cd, 0x81c7, 0x01c2,
59 0x0140, 0x8145, 0x814f, 0x014a, 0x815b, 0x015e, 0x0154, 0x8151,
60 0x8173, 0x0176, 0x017c, 0x8179, 0x0168, 0x816d, 0x8167, 0x0162,
61 0x8123, 0x0126, 0x012c, 0x8129, 0x0138, 0x813d, 0x8137, 0x0132,
62 0x0110, 0x8115, 0x811f, 0x011a, 0x810b, 0x010e, 0x0104, 0x8101,
63
64 0x8303, 0x0306, 0x030c, 0x8309, 0x0318, 0x831d, 0x8317, 0x0312,
65 0x0330, 0x8335, 0x833f, 0x033a, 0x832b, 0x032e, 0x0324, 0x8321,
66 0x0360, 0x8365, 0x836f, 0x036a, 0x837b, 0x037e, 0x0374, 0x8371,
67 0x8353, 0x0356, 0x035c, 0x8359, 0x0348, 0x834d, 0x8347, 0x0342,
68 0x03c0, 0x83c5, 0x83cf, 0x03ca, 0x83db, 0x03de, 0x03d4, 0x83d1,
69 0x83f3, 0x03f6, 0x03fc, 0x83f9, 0x03e8, 0x83ed, 0x83e7, 0x03e2,
70 0x83a3, 0x03a6, 0x03ac, 0x83a9, 0x03b8, 0x83bd, 0x83b7, 0x03b2,
71 0x0390, 0x8395, 0x839f, 0x039a, 0x838b, 0x038e, 0x0384, 0x8381,
72
73 0x0280, 0x8285, 0x828f, 0x028a, 0x829b, 0x029e, 0x0294, 0x8291,
74 0x82b3, 0x02b6, 0x02bc, 0x82b9, 0x02a8, 0x82ad, 0x82a7, 0x02a2,
75 0x82e3, 0x02e6, 0x02ec, 0x82e9, 0x02f8, 0x82fd, 0x82f7, 0x02f2,
76 0x02d0, 0x82d5, 0x82df, 0x02da, 0x82cb, 0x02ce, 0x02c4, 0x82c1,
77 0x8243, 0x0246, 0x024c, 0x8249, 0x0258, 0x825d, 0x8257, 0x0252,
78 0x0270, 0x8275, 0x827f, 0x027a, 0x826b, 0x026e, 0x0264, 0x8261,
79 0x0220, 0x8225, 0x822f, 0x022a, 0x823b, 0x023e, 0x0234, 0x8231,
80 0x8213, 0x0216, 0x021c, 0x8219, 0x0208, 0x820d, 0x8207, 0x0202
81};
82
83# define CRC_POLY 0x8005
84
85#if INT_MAX != 0x7fffffff
86#warning current libmad bit handling is optimized for architectures using 32 bit integers
87#endif
88
89/*
90 * NAME: bit->init()
91 * DESCRIPTION: initialize bit pointer struct
92 */
93void mad_bit_init(struct mad_bitptr *bitptr, unsigned char const *byte)
94{
95 bitptr->ptr = (uint32_t*)((uintptr_t)byte & ~3);
96 bitptr->readbit = ((uintptr_t)byte & 3) << 3;
97}
98
99/*
100 * NAME: bit->length()
101 * DESCRIPTION: return number of bits between start and end points
102 */
103unsigned int mad_bit_length(struct mad_bitptr const *begin,
104 struct mad_bitptr const *end)
105{
106 return end->readbit - begin->readbit;
107}
108
109/* rockbox: not used
110unsigned char mad_bit_bitsleft(struct mad_bitptr const *bitptr)
111{
112 return 8 - (bitptr->readbit & 7);
113}
114*/
115
116/*
117 * NAME: bit->nextbyte()
118 * DESCRIPTION: return pointer to next unprocessed byte
119 */
120unsigned char const *mad_bit_nextbyte(struct mad_bitptr const *bitptr)
121{
122 return (unsigned char const*)bitptr->ptr + ((bitptr->readbit + 7) >> 3);
123}
124
125/*
126 * NAME: bit->skip()
127 * DESCRIPTION: advance bit pointer
128 */
129void mad_bit_skip(struct mad_bitptr *bitptr, unsigned int len)
130{
131 bitptr->readbit += len;
132}
133
134/*
135 * NAME: bit->read()
136 * DESCRIPTION: read an arbitrary number of bits and return their UIMSBF value
137 */
138
139uint32_t mad_bit_read(struct mad_bitptr *bitptr, unsigned int len) ICODE_ATTR;
140uint32_t mad_bit_read(struct mad_bitptr *bitptr, unsigned int len)
141{
142 uint32_t *curr = &bitptr->ptr[bitptr->readbit>>5];
143
144 if(len)
145 {
146 uint32_t r = betoh32(curr[0]) << (bitptr->readbit & 31);
147
148 if((bitptr->readbit & 31) + len > 32)
149 r += betoh32(curr[1]) >> (-bitptr->readbit & 31);
150
151 bitptr->readbit += len;
152 return r >> (32 - len);
153 }
154
155 return 0;
156}
157
158# if 0 /* rockbox: not used */
159/*
160 * NAME: bit->write()
161 * DESCRIPTION: write an arbitrary number of bits
162 */
163void mad_bit_write(struct mad_bitptr *bitptr, unsigned int len,
164 uint32_t value)
165{
166 unsigned char *ptr;
167
168 ptr = (unsigned char *) bitptr->byte;
169
170 /* ... */
171}
172# endif
173
174/*
175 * NAME: bit->crc()
176 * DESCRIPTION: compute CRC-check word
177 */
178unsigned short mad_bit_crc(struct mad_bitptr bitptr, unsigned int len,
179 unsigned short init)
180{
181 register unsigned int crc;
182
183 for (crc = init; len >= 32; len -= 32) {
184 register uint32_t data;
185
186 data = mad_bit_read(&bitptr, 32);
187
188 crc = (crc << 8) ^ crc_table[((crc >> 8) ^ (data >> 24)) & 0xff];
189 crc = (crc << 8) ^ crc_table[((crc >> 8) ^ (data >> 16)) & 0xff];
190 crc = (crc << 8) ^ crc_table[((crc >> 8) ^ (data >> 8)) & 0xff];
191 crc = (crc << 8) ^ crc_table[((crc >> 8) ^ (data >> 0)) & 0xff];
192 }
193
194 switch (len / 8) {
195 case 3: crc = (crc << 8) ^
196 crc_table[((crc >> 8) ^ mad_bit_read(&bitptr, 8)) & 0xff];
197 case 2: crc = (crc << 8) ^
198 crc_table[((crc >> 8) ^ mad_bit_read(&bitptr, 8)) & 0xff];
199 case 1: crc = (crc << 8) ^
200 crc_table[((crc >> 8) ^ mad_bit_read(&bitptr, 8)) & 0xff];
201
202 len %= 8;
203
204 case 0: break;
205 }
206
207 while (len--) {
208 register unsigned int msb;
209
210 msb = mad_bit_read(&bitptr, 1) ^ (crc >> 15);
211
212 crc <<= 1;
213 if (msb & 1)
214 crc ^= CRC_POLY;
215 }
216
217 return crc & 0xffff;
218}
diff --git a/lib/rbcodec/codecs/libmad/bit.h b/lib/rbcodec/codecs/libmad/bit.h
new file mode 100644
index 0000000000..1c49522af5
--- /dev/null
+++ b/lib/rbcodec/codecs/libmad/bit.h
@@ -0,0 +1,50 @@
1/*
2 * libmad - MPEG audio decoder library
3 * Copyright (C) 2000-2004 Underbit Technologies, Inc.
4 *
5 * This program is free software; you can redistribute it and/or modify
6 * it under the terms of the GNU General Public License as published by
7 * the Free Software Foundation; either version 2 of the License, or
8 * (at your option) any later version.
9 *
10 * This program is distributed in the hope that it will be useful,
11 * but WITHOUT ANY WARRANTY; without even the implied warranty of
12 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 * GNU General Public License for more details.
14 *
15 * You should have received a copy of the GNU General Public License
16 * along with this program; if not, write to the Free Software
17 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
18 *
19 * $Id$
20 */
21
22# ifndef LIBMAD_BIT_H
23# define LIBMAD_BIT_H
24
25struct mad_bitptr {
26 uint32_t *ptr;
27 uint32_t readbit;
28};
29
30void mad_bit_init(struct mad_bitptr *, unsigned char const *);
31
32# define mad_bit_finish(bitptr) /* nothing */
33
34unsigned int mad_bit_length(struct mad_bitptr const *,
35 struct mad_bitptr const *);
36
37/* rockbox: not used
38unsigned char mad_bit_bitsleft(struct mad_bitptr const *bitptr);
39*/
40unsigned char const *mad_bit_nextbyte(struct mad_bitptr const *);
41
42void mad_bit_skip(struct mad_bitptr *, unsigned int);
43uint32_t mad_bit_read(struct mad_bitptr *, unsigned int);
44/* rockbox: not used
45void mad_bit_write(struct mad_bitptr *, unsigned int, uint32_t);
46*/
47
48unsigned short mad_bit_crc(struct mad_bitptr, unsigned int, unsigned short);
49
50# endif
diff --git a/lib/rbcodec/codecs/libmad/dct32_arm.S b/lib/rbcodec/codecs/libmad/dct32_arm.S
new file mode 100644
index 0000000000..440841bb5e
--- /dev/null
+++ b/lib/rbcodec/codecs/libmad/dct32_arm.S
@@ -0,0 +1,328 @@
1/***************************************************************************
2 * __________ __ ___.
3 * Open \______ \ ____ ____ | | _\_ |__ _______ ___
4 * Source | _// _ \_/ ___\| |/ /| __ \ / _ \ \/ /
5 * Jukebox | | ( <_> ) \___| < | \_\ ( <_> > < <
6 * Firmware |____|_ /\____/ \___ >__|_ \|___ /\____/__/\_ \
7 * \/ \/ \/ \/ \/
8 * $Id$
9 *
10 * Copyright (C) 2007 by Tomasz Malesinski
11 *
12 * This program is free software; you can redistribute it and/or
13 * modify it under the terms of the GNU General Public License
14 * as published by the Free Software Foundation; either version 2
15 * of the License, or (at your option) any later version.
16 *
17 * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
18 * KIND, either express or implied.
19 *
20 ****************************************************************************/
21
22#include "mad_iram.h"
23
24 .global dct32
25
26 .section ICODE_SECTION_MPA_ARM,"ax",%progbits
27
28dct32:
29 stmdb sp!, {r4-r11, lr}
30 sub sp, sp, #144
31 str r0, [sp, #12]
32 str r1, [sp, #8]
33 str r2, [sp, #4]
34 str r3, [sp]
35 add r0, sp, #16
36 add r1, r0, #128
37 ldr r2, =bitrev
38.shuffle:
39 ldr r5, [sp, #12]
40 ldr r3, [r2], #4
41 sub r4, r5, r3, lsl #4
42 add r3, r5, r3, lsl #4
43 ldr r6, [r3]
44 ldr r8, [r4, #124]
45 add r6, r6, r8
46 sub r8, r6, r8, lsl #1
47 ldr r7, [r3, #8]
48 ldr lr, [r4, #116]
49 add r7, r7, lr
50 sub lr, r7, lr, lsl #1
51 ldr r10, [r3, #64]
52 ldr r9, [r4, #60]
53 add r10, r10, r9
54 sub r9, r10, r9, lsl #1
55 ldr r11, [r3, #72]
56 ldr r12, [r4, #52]
57 add r11, r11, r12
58 sub r12, r11, r12, lsl #1
59 add r6, r6, r10
60 sub r10, r6, r10, lsl #1
61 add r7, r7, r11
62 sub r11, r7, r11, lsl #1
63 add r8, r8, r12
64 sub r12, r8, r12, lsl #1
65 add lr, lr, r9
66 sub r9, lr, r9, lsl #1
67 stmia r0!, {r6, r7, r8, r9, r10, r11, r12, lr}
68 cmp r0, r1
69 bne .shuffle
70 ldr r0, =189812531
71 add r1, sp, #16
72 add r3, r1, #128
73.l2:
74 add r2, r1, #32
75 ldmia r2, {r4, r5, r8, r9}
76 ldmia r1, {r6, r7, r10, r11}
77 add r6, r6, r4
78 sub r4, r6, r4, lsl #1
79 add r7, r7, r5
80 sub r5, r7, r5, lsl #1
81 stmia r2!, {r4, r5}
82 stmia r1!, {r6, r7}
83 add r9, r9, r8
84 sub r8, r9, r8, lsl #1
85 smull r4, r6, r9, r0
86 movs r4, r4, lsr #28
87 adc r4, r4, r6, lsl #4
88 smull r5, r6, r8, r0
89 movs r5, r5, lsr #28
90 adc r5, r5, r6, lsl #4
91 add r10, r10, r4
92 sub r4, r10, r4, lsl #1
93 add r11, r11, r5
94 sub r5, r11, r5, lsl #1
95 stmia r2!, {r4, r5}
96 stmia r1!, {r10, r11}
97 ldmia r2, {r5, r6, r8, r11}
98 ldmia r1, {r4, r7, r9, r10}
99 add r4, r4, r6
100 sub r6, r4, r6, lsl #1
101 add r7, r7, r5
102 sub r5, r7, r5, lsl #1
103 stmia r2!, {r6, r7}
104 stmia r1!, {r4, r5}
105 add r11, r11, r8
106 sub r8, r11, r8, lsl #1
107 smull r5, r4, r8, r0
108 movs r5, r5, lsr #28
109 adc r5, r5, r4, lsl #4
110 smull r6, r4, r11, r0
111 movs r6, r6, lsr #28
112 adc r6, r6, r4, lsl #4
113 add r9, r9, r5
114 sub r5, r9, r5, lsl #1
115 sub r10, r10, r6
116 add r6, r10, r6, lsl #1
117 stmia r2!, {r5, r6}
118 stmia r1!, {r9, r10}
119 add r1, r1, #32
120 cmp r1, r3
121 bne .l2
122 add r2, sp, #16
123 add r3, r2, #64
124 ldr r0, =sincos
125 add r1, r0, #128
126.lbut8:
127 ldmia r3, {r7, r8}
128 ldmia r0, {r9, r10}
129 add r0, r0, #16
130 smull r6, r5, r7, r9
131 smlal r6, r5, r10, r8
132 movs r6, r6, lsr #28
133 adc r6, r6, r5, lsl #4
134 smull r10, r5, r7, r10
135 rsb r9, r9, #0
136 smlal r10, r5, r8, r9
137 movs r10, r10, lsr #28
138 adc r5, r10, r5, lsl #4
139 ldmia r2, {r7, r8}
140 add r7, r7, r5
141 sub r5, r7, r5, lsl #1
142 add r8, r8, r6
143 sub r6, r8, r6, lsl #1
144 stmia r3!, {r5, r6}
145 stmia r2!, {r7, r8}
146 cmp r0, r1
147 bne .lbut8
148 add r1, sp, #16
149 ldr r2, =sincos
150 ldr r3, =sincos2
151 ldr r0, [sp, #8]
152 mov r0, r0, lsl #2
153 ldr r4, [sp, #4]
154 add r4, r4, r0
155 ldr r5, [sp]
156 add r5, r5, #480
157 add r5, r5, r0
158 mov r0, #0
159.l4:
160 rsb r12, r0, #16
161 and r12, r12, #15
162 add lr, sp, #16
163 add r12, lr, r12, lsl #3
164 ldmia r1!, {r10, r11}
165 ldmia r12, {r6, r7}
166 add r6, r6, r10
167 sub r10, r6, r10, lsl #1
168 add r11, r11, r7
169 sub r7, r11, r7, lsl #1
170 ldmia r2!, {r12, lr}
171 smull r9, r8, r11, r12
172 smlal r9, r8, lr, r10
173 movs r9, r9, lsr #28
174 adc r9, r9, r8, lsl #4
175 smull lr, r8, r11, lr
176 rsb r12, r12, #0
177 smlal lr, r8, r10, r12
178 movs lr, lr, lsr #28
179 adc r8, lr, r8, lsl #4
180 add r6, r6, r8
181 sub r8, r6, r8, lsl #1
182 add r7, r7, r9
183 sub r9, r7, r9, lsl #1
184 add lr, r3, #128
185 ldmia lr, {r10, r11}
186 smull lr, r12, r8, r11
187 smlal lr, r12, r9, r10
188 movs lr, lr, lsr #28
189 adc r12, lr, r12, lsl #4
190 str r12, [r4], #32
191 cmp r0, #0
192 cmpne r0, #8
193 beq .skip1
194 smull lr, r12, r8, r10
195 rsb r9, r9, #0
196 smlal lr, r12, r9, r11
197 movs lr, lr, lsr #28
198 adc r12, lr, r12, lsl #4
199 add lr, r5, r0, lsl #6
200 str r12, [lr, #-512]
201.skip1:
202 ldmia r3!, {r10, r11}
203 smull lr, r12, r7, r10
204 smlal lr, r12, r6, r11
205 movs lr, lr, lsr #28
206 adc r12, lr, r12, lsl #4
207 str r12, [r5], #-32
208 cmp r0, #0
209 cmpne r0, #8
210 beq .skip2
211 smull lr, r12, r6, r10
212 rsb r7, r7, #0
213 smlal lr, r12, r7, r11
214 movs lr, lr, lsr #28
215 adc r12, lr, r12, lsl #4
216 sub lr, r4, r0, lsl #6
217 str r12, [lr, #480]
218.skip2:
219 add r0, r0, #1
220 cmp r0, #9
221 bne .l4
222 add sp, sp, #144
223 ldmpc regs=r4-r11
224bitrev:
225 .word 0x0
226 .word 0x2
227 .word 0x1
228 .word 0x3
229
230sincos:
231 .word 0x0
232 .word 0x10000000
233 .word -0x31f1708
234 .word 0xfb14be8
235 .word -0x61f78aa
236 .word 0xec835e8
237 .word -0x8e39d9d
238 .word 0xd4db315
239 .word -0xb504f33
240 .word 0xb504f33
241 .word -0xd4db315
242 .word 0x8e39d9d
243 .word -0xec835e8
244 .word 0x61f78aa
245 .word -0xfb14be8
246 .word 0x31f1708
247 .word -0x10000000
248 .word 0x0
249 .word -0xfb14be8
250 .word -0x31f1708
251 .word -0xec835e8
252 .word -0x61f78aa
253 .word -0xd4db315
254 .word -0x8e39d9d
255 .word -0xb504f33
256 .word -0xb504f33
257 .word -0x8e39d9d
258 .word -0xd4db315
259 .word -0x61f78aa
260 .word -0xec835e8
261 .word -0x31f1708
262 .word -0xfb14be8
263
264sincos2:
265 .word 0x0
266 .word 0x8000000
267 .word 0x647d98
268 .word 0x7fd8879
269 .word 0xc8bd36
270 .word 0x7f62369
271 .word 0x12c8107
272 .word 0x7e9d560
273 .word 0x18f8b84
274 .word 0x7d8a5f4
275 .word 0x1f19f98
276 .word 0x7c29fbf
277 .word 0x25280c6
278 .word 0x7a7d056
279 .word 0x2b1f34f
280 .word 0x7884841
281 .word 0x30fbc55
282 .word 0x7641af4
283 .word 0x36ba201
284 .word 0x73b5ebd
285 .word 0x3c56ba7
286 .word 0x70e2cbc
287 .word 0x41ce1e6
288 .word 0x6dca0d1
289 .word 0x471cece
290 .word 0x6a6d98a
291 .word 0x4c3fdff
292 .word 0x66cf812
293 .word 0x5133cc9
294 .word 0x62f201b
295 .word 0x55f5a4d
296 .word 0x5ed77c9
297 .word 0x5a8279a
298 .word 0x5a8279a
299 .word 0x5ed77c9
300 .word 0x55f5a4d
301 .word 0x62f201b
302 .word 0x5133cc9
303 .word 0x66cf812
304 .word 0x4c3fdff
305 .word 0x6a6d98a
306 .word 0x471cece
307 .word 0x6dca0d1
308 .word 0x41ce1e6
309 .word 0x70e2cbc
310 .word 0x3c56ba7
311 .word 0x73b5ebd
312 .word 0x36ba201
313 .word 0x7641af4
314 .word 0x30fbc55
315 .word 0x7884841
316 .word 0x2b1f34f
317 .word 0x7a7d056
318 .word 0x25280c6
319 .word 0x7c29fbf
320 .word 0x1f19f98
321 .word 0x7d8a5f4
322 .word 0x18f8b84
323 .word 0x7e9d560
324 .word 0x12c8107
325 .word 0x7f62369
326 .word 0xc8bd36
327 .word 0x7fd8879
328 .word 0x647d98
diff --git a/lib/rbcodec/codecs/libmad/fixed.h b/lib/rbcodec/codecs/libmad/fixed.h
new file mode 100644
index 0000000000..6015684644
--- /dev/null
+++ b/lib/rbcodec/codecs/libmad/fixed.h
@@ -0,0 +1,510 @@
1/*
2 * libmad - MPEG audio decoder library
3 * Copyright (C) 2000-2004 Underbit Technologies, Inc.
4 *
5 * This program is free software; you can redistribute it and/or modify
6 * it under the terms of the GNU General Public License as published by
7 * the Free Software Foundation; either version 2 of the License, or
8 * (at your option) any later version.
9 *
10 * This program is distributed in the hope that it will be useful,
11 * but WITHOUT ANY WARRANTY; without even the implied warranty of
12 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 * GNU General Public License for more details.
14 *
15 * You should have received a copy of the GNU General Public License
16 * along with this program; if not, write to the Free Software
17 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
18 *
19 * $Id$
20 */
21
22# ifndef LIBMAD_FIXED_H
23# define LIBMAD_FIXED_H
24
25#include <inttypes.h>
26
27typedef int32_t mad_fixed_t;
28
29typedef int32_t mad_fixed64hi_t;
30typedef uint32_t mad_fixed64lo_t;
31
32# if defined(_MSC_VER)
33# define mad_fixed64_t signed __int64
34# elif 1 || defined(__GNUC__)
35# define mad_fixed64_t signed long long
36# endif
37
38# if defined(FPM_FLOAT)
39typedef double mad_sample_t;
40# else
41typedef mad_fixed_t mad_sample_t;
42# endif
43
44/*
45 * Fixed-point format: 0xABBBBBBB
46 * A == whole part (sign + 3 bits)
47 * B == fractional part (28 bits)
48 *
49 * Values are signed two's complement, so the effective range is:
50 * 0x80000000 to 0x7fffffff
51 * -8.0 to +7.9999999962747097015380859375
52 *
53 * The smallest representable value is:
54 * 0x00000001 == 0.0000000037252902984619140625 (i.e. about 3.725e-9)
55 *
56 * 28 bits of fractional accuracy represent about
57 * 8.6 digits of decimal accuracy.
58 *
59 * Fixed-point numbers can be added or subtracted as normal
60 * integers, but multiplication requires shifting the 64-bit result
61 * from 56 fractional bits back to 28 (and rounding.)
62 *
63 * Changing the definition of MAD_F_FRACBITS is only partially
64 * supported, and must be done with care.
65 */
66
67# define MAD_F_FRACBITS 28
68
69# if MAD_F_FRACBITS == 28
70# define MAD_F(x) ((mad_fixed_t) (x##L))
71# else
72# if MAD_F_FRACBITS < 28
73# warning "MAD_F_FRACBITS < 28"
74# define MAD_F(x) ((mad_fixed_t) \
75 (((x##L) + \
76 (1L << (28 - MAD_F_FRACBITS - 1))) >> \
77 (28 - MAD_F_FRACBITS)))
78# elif MAD_F_FRACBITS > 28
79# error "MAD_F_FRACBITS > 28 not currently supported"
80# define MAD_F(x) ((mad_fixed_t) \
81 ((x##L) << (MAD_F_FRACBITS - 28)))
82# endif
83# endif
84
85# define MAD_F_MIN ((mad_fixed_t) -0x80000000L)
86# define MAD_F_MAX ((mad_fixed_t) +0x7fffffffL)
87
88# define MAD_F_ONE MAD_F(0x10000000)
89
90# define mad_f_tofixed(x) ((mad_fixed_t) \
91 ((x) * (double) (1L << MAD_F_FRACBITS) + 0.5))
92# define mad_f_todouble(x) ((double) \
93 ((x) / (double) (1L << MAD_F_FRACBITS)))
94
95# define mad_f_intpart(x) ((x) >> MAD_F_FRACBITS)
96# define mad_f_fracpart(x) ((x) & ((1L << MAD_F_FRACBITS) - 1))
97 /* (x should be positive) */
98
99# define mad_f_fromint(x) ((x) << MAD_F_FRACBITS)
100
101# define mad_f_add(x, y) ((x) + (y))
102# define mad_f_sub(x, y) ((x) - (y))
103
104# if defined(FPM_FLOAT)
105# error "FPM_FLOAT not yet supported"
106
107# undef MAD_F
108# define MAD_F(x) mad_f_todouble(x)
109
110# define mad_f_mul(x, y) ((x) * (y))
111# define mad_f_scale64
112
113# elif defined(FPM_64BIT)
114
115/*
116 * This version should be the most accurate if 64-bit types are supported by
117 * the compiler, although it may not be the most efficient.
118 */
119# if defined(OPT_ACCURACY)
120# define mad_f_mul(x, y) \
121 ((mad_fixed_t) \
122 ((((mad_fixed64_t) (x) * (y)) + \
123 (1L << (MAD_F_SCALEBITS - 1))) >> MAD_F_SCALEBITS))
124# else
125# define mad_f_mul(x, y) \
126 ((mad_fixed_t) (((mad_fixed64_t) (x) * (y)) >> MAD_F_SCALEBITS))
127# endif
128
129# define MAD_F_SCALEBITS MAD_F_FRACBITS
130
131/* --- Intel --------------------------------------------------------------- */
132
133# elif defined(FPM_INTEL)
134
135# if defined(_MSC_VER)
136# pragma warning(push)
137# pragma warning(disable: 4035) /* no return value */
138static __forceinline
139mad_fixed_t mad_f_mul_inline(mad_fixed_t x, mad_fixed_t y)
140{
141 enum {
142 fracbits = MAD_F_FRACBITS
143 };
144
145 __asm {
146 mov eax, x
147 imul y
148 shrd eax, edx, fracbits
149 }
150
151 /* implicit return of eax */
152}
153# pragma warning(pop)
154
155# define mad_f_mul mad_f_mul_inline
156# define mad_f_scale64
157# else
158/*
159 * This Intel version is fast and accurate; the disposition of the least
160 * significant bit depends on OPT_ACCURACY via mad_f_scale64().
161 */
162# define MAD_F_MLX(hi, lo, x, y) \
163 asm ("imull %3" \
164 : "=a" (lo), "=d" (hi) \
165 : "%a" (x), "rm" (y) \
166 : "cc")
167
168# if defined(OPT_ACCURACY)
169/*
170 * This gives best accuracy but is not very fast.
171 */
172# define MAD_F_MLA(hi, lo, x, y) \
173 ({ mad_fixed64hi_t __hi; \
174 mad_fixed64lo_t __lo; \
175 MAD_F_MLX(__hi, __lo, (x), (y)); \
176 asm ("addl %2,%0\n\t" \
177 "adcl %3,%1" \
178 : "=rm" (lo), "=rm" (hi) \
179 : "r" (__lo), "r" (__hi), "0" (lo), "1" (hi) \
180 : "cc"); \
181 })
182# endif /* OPT_ACCURACY */
183
184# if defined(OPT_ACCURACY)
185/*
186 * Surprisingly, this is faster than SHRD followed by ADC.
187 */
188# define mad_f_scale64(hi, lo) \
189 ({ mad_fixed64hi_t __hi_; \
190 mad_fixed64lo_t __lo_; \
191 mad_fixed_t __result; \
192 asm ("addl %4,%2\n\t" \
193 "adcl %5,%3" \
194 : "=rm" (__lo_), "=rm" (__hi_) \
195 : "0" (lo), "1" (hi), \
196 "ir" (1L << (MAD_F_SCALEBITS - 1)), "ir" (0) \
197 : "cc"); \
198 asm ("shrdl %3,%2,%1" \
199 : "=rm" (__result) \
200 : "0" (__lo_), "r" (__hi_), "I" (MAD_F_SCALEBITS) \
201 : "cc"); \
202 __result; \
203 })
204# elif defined(OPT_INTEL)
205/*
206 * Alternate Intel scaling that may or may not perform better.
207 */
208# define mad_f_scale64(hi, lo) \
209 ({ mad_fixed_t __result; \
210 asm ("shrl %3,%1\n\t" \
211 "shll %4,%2\n\t" \
212 "orl %2,%1" \
213 : "=rm" (__result) \
214 : "0" (lo), "r" (hi), \
215 "I" (MAD_F_SCALEBITS), "I" (32 - MAD_F_SCALEBITS) \
216 : "cc"); \
217 __result; \
218 })
219# else
220# define mad_f_scale64(hi, lo) \
221 ({ mad_fixed_t __result; \
222 asm ("shrdl %3,%2,%1" \
223 : "=rm" (__result) \
224 : "0" (lo), "r" (hi), "I" (MAD_F_SCALEBITS) \
225 : "cc"); \
226 __result; \
227 })
228# endif /* OPT_ACCURACY */
229
230# define MAD_F_SCALEBITS MAD_F_FRACBITS
231# endif
232
233/* --- ARM ----------------------------------------------------------------- */
234
235# elif defined(FPM_ARM)
236
237/*
238 * This ARM V4 version is as accurate as FPM_64BIT but much faster. The
239 * least significant bit is properly rounded at no CPU cycle cost!
240 */
241# if 1
242/*
243 * This is faster than the default implementation via MAD_F_MLX() and
244 * mad_f_scale64().
245 */
246# define mad_f_mul(x, y) \
247 ({ mad_fixed64hi_t __hi; \
248 mad_fixed64lo_t __lo; \
249 mad_fixed_t __result; \
250 asm ("smull %0, %1, %3, %4\n\t" \
251 "movs %0, %0, lsr %5\n\t" \
252 "adc %2, %0, %1, lsl %6" \
253 : "=&r" (__lo), "=&r" (__hi), "=r" (__result) \
254 : "%r" (x), "r" (y), \
255 "M" (MAD_F_SCALEBITS), "M" (32 - MAD_F_SCALEBITS) \
256 : "cc"); \
257 __result; \
258 })
259# endif
260
261# define MAD_F_MLX(hi, lo, x, y) \
262 asm ("smull %0, %1, %2, %3" \
263 : "=&r" (lo), "=&r" (hi) \
264 : "%r" (x), "r" (y))
265
266# define MAD_F_MLA(hi, lo, x, y) \
267 asm ("smlal %0, %1, %2, %3" \
268 : "+r" (lo), "+r" (hi) \
269 : "%r" (x), "r" (y))
270
271# define MAD_F_MLN(hi, lo) \
272 asm ("rsbs %0, %2, #0\n\t" \
273 "rsc %1, %3, #0" \
274 : "=r" (lo), "=r" (hi) \
275 : "0" (lo), "1" (hi) \
276 : "cc")
277
278# define mad_f_scale64(hi, lo) \
279 ({ mad_fixed_t __result; \
280 asm ("movs %0, %1, lsr %3\n\t" \
281 "adc %0, %0, %2, lsl %4" \
282 : "=&r" (__result) \
283 : "r" (lo), "r" (hi), \
284 "M" (MAD_F_SCALEBITS), "M" (32 - MAD_F_SCALEBITS) \
285 : "cc"); \
286 __result; \
287 })
288
289# define MAD_F_SCALEBITS MAD_F_FRACBITS
290
291/* --- MIPS ---------------------------------------------------------------- */
292
293# elif defined(FPM_MIPS)
294
295/*
296 * This MIPS version is fast and accurate; the disposition of the least
297 * significant bit depends on OPT_ACCURACY via mad_f_scale64().
298 */
299# define MAD_F_MLX(hi, lo, x, y) \
300 asm ("mult %2,%3" \
301 : "=l" (lo), "=h" (hi) \
302 : "%r" (x), "r" (y))
303
304# if defined(HAVE_MADD_ASM)
305# define MAD_F_MLA(hi, lo, x, y) \
306 asm ("madd %2,%3" \
307 : "+l" (lo), "+h" (hi) \
308 : "%r" (x), "r" (y))
309# elif defined(HAVE_MADD16_ASM)
310/*
311 * This loses significant accuracy due to the 16-bit integer limit in the
312 * multiply/accumulate instruction.
313 */
314# define MAD_F_ML0(hi, lo, x, y) \
315 asm ("mult %2,%3" \
316 : "=l" (lo), "=h" (hi) \
317 : "%r" ((x) >> 12), "r" ((y) >> 16))
318# define MAD_F_MLA(hi, lo, x, y) \
319 asm ("madd16 %2,%3" \
320 : "+l" (lo), "+h" (hi) \
321 : "%r" ((x) >> 12), "r" ((y) >> 16))
322# define MAD_F_MLZ(hi, lo) ((mad_fixed_t) (lo))
323# endif
324
325# if defined(OPT_SPEED)
326# define mad_f_scale64(hi, lo) \
327 ((mad_fixed_t) ((hi) << (32 - MAD_F_SCALEBITS)))
328# define MAD_F_SCALEBITS MAD_F_FRACBITS
329# endif
330
331/* --- SPARC --------------------------------------------------------------- */
332
333# elif defined(FPM_SPARC)
334
335/*
336 * This SPARC V8 version is fast and accurate; the disposition of the least
337 * significant bit depends on OPT_ACCURACY via mad_f_scale64().
338 */
339# define MAD_F_MLX(hi, lo, x, y) \
340 asm ("smul %2, %3, %0\n\t" \
341 "rd %%y, %1" \
342 : "=r" (lo), "=r" (hi) \
343 : "%r" (x), "rI" (y))
344
345/* --- PowerPC ------------------------------------------------------------- */
346
347# elif defined(FPM_PPC)
348
349/*
350 * This PowerPC version is fast and accurate; the disposition of the least
351 * significant bit depends on OPT_ACCURACY via mad_f_scale64().
352 */
353# define MAD_F_MLX(hi, lo, x, y) \
354 do { \
355 asm ("mullw %0,%1,%2" \
356 : "=r" (lo) \
357 : "%r" (x), "r" (y)); \
358 asm ("mulhw %0,%1,%2" \
359 : "=r" (hi) \
360 : "%r" (x), "r" (y)); \
361 } \
362 while (0)
363
364# if defined(OPT_ACCURACY)
365/*
366 * This gives best accuracy but is not very fast.
367 */
368# define MAD_F_MLA(hi, lo, x, y) \
369 ({ mad_fixed64hi_t __hi; \
370 mad_fixed64lo_t __lo; \
371 MAD_F_MLX(__hi, __lo, (x), (y)); \
372 asm ("addc %0,%2,%3\n\t" \
373 "adde %1,%4,%5" \
374 : "=r" (lo), "=r" (hi) \
375 : "%r" (lo), "r" (__lo), \
376 "%r" (hi), "r" (__hi) \
377 : "xer"); \
378 })
379# endif
380
381# if defined(OPT_ACCURACY)
382/*
383 * This is slower than the truncating version below it.
384 */
385# define mad_f_scale64(hi, lo) \
386 ({ mad_fixed_t __result, __round; \
387 asm ("rotrwi %0,%1,%2" \
388 : "=r" (__result) \
389 : "r" (lo), "i" (MAD_F_SCALEBITS)); \
390 asm ("extrwi %0,%1,1,0" \
391 : "=r" (__round) \
392 : "r" (__result)); \
393 asm ("insrwi %0,%1,%2,0" \
394 : "+r" (__result) \
395 : "r" (hi), "i" (MAD_F_SCALEBITS)); \
396 asm ("add %0,%1,%2" \
397 : "=r" (__result) \
398 : "%r" (__result), "r" (__round)); \
399 __result; \
400 })
401# else
402# define mad_f_scale64(hi, lo) \
403 ({ mad_fixed_t __result; \
404 asm ("rotrwi %0,%1,%2" \
405 : "=r" (__result) \
406 : "r" (lo), "i" (MAD_F_SCALEBITS)); \
407 asm ("insrwi %0,%1,%2,0" \
408 : "+r" (__result) \
409 : "r" (hi), "i" (MAD_F_SCALEBITS)); \
410 __result; \
411 })
412# endif
413
414# define MAD_F_SCALEBITS MAD_F_FRACBITS
415
416# elif defined(FPM_COLDFIRE_EMAC)
417
418/* mad_f_mul using the Coldfire MCF5249 EMAC unit. Loses 3 bits of accuracy.
419 Note that we don't define any of the libmad accumulator macros, as
420 any functions that use these should have the relevant sections rewritten
421 in assembler to utilise the EMAC accumulators properly.
422 Assumes the default +/- 3.28 fixed point format
423 */
424#define mad_f_mul(x, y) \
425({ \
426 mad_fixed64hi_t hi; \
427 asm volatile("mac.l %[a], %[b], %%acc0\n\t" \
428 "movclr.l %%acc0, %[hi]\n\t" \
429 "asl.l #3, %[hi]" \
430 : [hi] "=d" (hi) \
431 : [a] "r" ((x)), [b] "r" ((y))); \
432 hi; \
433})
434/* Define dummy mad_f_scale64 to prevent libmad from defining MAD_F_SCALEBITS
435 below. Having MAD_F_SCALEBITS defined screws up the PRESHIFT macro in synth.c
436 */
437#define mad_f_scale64(hi, lo) (lo)
438
439/* --- Default ------------------------------------------------------------- */
440
441# elif defined(FPM_DEFAULT)
442
443/*
444 * This version is the most portable but it loses significant accuracy.
445 * Furthermore, accuracy is biased against the second argument, so care
446 * should be taken when ordering operands.
447 *
448 * The scale factors are constant as this is not used with SSO.
449 *
450 * Pre-rounding is required to stay within the limits of compliance.
451 */
452# if defined(OPT_SPEED)
453# define mad_f_mul(x, y) (((x) >> 12) * ((y) >> 16))
454# else
455# define mad_f_mul(x, y) ((((x) + (1L << 11)) >> 12) * \
456 (((y) + (1L << 15)) >> 16))
457# endif
458
459/* ------------------------------------------------------------------------- */
460
461# else
462# error "no FPM selected"
463# endif
464
465/* default implementations */
466
467# if !defined(mad_f_mul)
468# define mad_f_mul(x, y) \
469 ({ register mad_fixed64hi_t __hi; \
470 register mad_fixed64lo_t __lo; \
471 MAD_F_MLX(__hi, __lo, (x), (y)); \
472 mad_f_scale64(__hi, __lo); \
473 })
474# endif
475
476# if !defined(MAD_F_MLA)
477# define MAD_F_ML0(hi, lo, x, y) ((lo) = mad_f_mul((x), (y)))
478# define MAD_F_MLA(hi, lo, x, y) ((lo) += mad_f_mul((x), (y)))
479# define MAD_F_MLN(hi, lo) ((lo) = -(lo))
480# define MAD_F_MLZ(hi, lo) ((void) (hi), (mad_fixed_t) (lo))
481# endif
482
483# if !defined(MAD_F_ML0)
484# define MAD_F_ML0(hi, lo, x, y) MAD_F_MLX((hi), (lo), (x), (y))
485# endif
486
487# if !defined(MAD_F_MLN)
488# define MAD_F_MLN(hi, lo) ((hi) = ((lo) = -(lo)) ? ~(hi) : -(hi))
489# endif
490
491# if !defined(MAD_F_MLZ)
492# define MAD_F_MLZ(hi, lo) mad_f_scale64((hi), (lo))
493# endif
494
495# if !defined(mad_f_scale64)
496# if defined(OPT_ACCURACY)
497# define mad_f_scale64(hi, lo) \
498 ((((mad_fixed_t) \
499 (((hi) << (32 - (MAD_F_SCALEBITS - 1))) | \
500 ((lo) >> (MAD_F_SCALEBITS - 1)))) + 1) >> 1)
501# else
502# define mad_f_scale64(hi, lo) \
503 ((mad_fixed_t) \
504 (((hi) << (32 - MAD_F_SCALEBITS)) | \
505 ((lo) >> MAD_F_SCALEBITS)))
506# endif
507# define MAD_F_SCALEBITS MAD_F_FRACBITS
508# endif
509
510# endif
diff --git a/lib/rbcodec/codecs/libmad/frame.c b/lib/rbcodec/codecs/libmad/frame.c
new file mode 100644
index 0000000000..f17306285c
--- /dev/null
+++ b/lib/rbcodec/codecs/libmad/frame.c
@@ -0,0 +1,499 @@
1/*
2 * libmad - MPEG audio decoder library
3 * Copyright (C) 2000-2004 Underbit Technologies, Inc.
4 *
5 * This program is free software; you can redistribute it and/or modify
6 * it under the terms of the GNU General Public License as published by
7 * the Free Software Foundation; either version 2 of the License, or
8 * (at your option) any later version.
9 *
10 * This program is distributed in the hope that it will be useful,
11 * but WITHOUT ANY WARRANTY; without even the implied warranty of
12 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 * GNU General Public License for more details.
14 *
15 * You should have received a copy of the GNU General Public License
16 * along with this program; if not, write to the Free Software
17 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
18 *
19 * $Id$
20 */
21
22# ifdef HAVE_CONFIG_H
23# include "config.h"
24# endif
25
26# include "global.h"
27
28# include "bit.h"
29# include "stream.h"
30# include "frame.h"
31# include "timer.h"
32# include "layer12.h"
33# include "layer3.h"
34# include "codeclib.h"
35
36static
37unsigned long const bitrate_table[5][15] = {
38 /* MPEG-1 */
39 { 0, 32000, 64000, 96000, 128000, 160000, 192000, 224000, /* Layer I */
40 256000, 288000, 320000, 352000, 384000, 416000, 448000 },
41 { 0, 32000, 48000, 56000, 64000, 80000, 96000, 112000, /* Layer II */
42 128000, 160000, 192000, 224000, 256000, 320000, 384000 },
43 { 0, 32000, 40000, 48000, 56000, 64000, 80000, 96000, /* Layer III */
44 112000, 128000, 160000, 192000, 224000, 256000, 320000 },
45
46 /* MPEG-2 LSF */
47 { 0, 32000, 48000, 56000, 64000, 80000, 96000, 112000, /* Layer I */
48 128000, 144000, 160000, 176000, 192000, 224000, 256000 },
49 { 0, 8000, 16000, 24000, 32000, 40000, 48000, 56000, /* Layers */
50 64000, 80000, 96000, 112000, 128000, 144000, 160000 } /* II & III */
51};
52
53static
54unsigned int const samplerate_table[3] = { 44100, 48000, 32000 };
55
56static
57int (*const decoder_table[3])(struct mad_stream *, struct mad_frame *) = {
58 mad_layer_I,
59 mad_layer_II,
60 mad_layer_III
61};
62
63/*
64 * NAME: header->init()
65 * DESCRIPTION: initialize header struct
66 */
67void mad_header_init(struct mad_header *header)
68{
69 header->layer = 0;
70 header->mode = 0;
71 header->mode_extension = 0;
72 header->emphasis = 0;
73
74 header->bitrate = 0;
75 header->samplerate = 0;
76
77 header->crc_check = 0;
78 header->crc_target = 0;
79
80 header->flags = 0;
81 header->private_bits = 0;
82/* rockbox: not used
83 header->duration = mad_timer_zero;
84*/
85}
86
87/*
88 * NAME: frame->init()
89 * DESCRIPTION: initialize frame struct
90 */
91void mad_frame_init(struct mad_frame *frame)
92{
93 mad_header_init(&frame->header);
94
95 frame->options = 0;
96/* rockbox: comment this to proper zero this array in mad_frame_mute(). overlap
97 * is linked to an array in ../mpa.c before calling this.
98 frame->overlap = 0;
99*/
100 mad_frame_mute(frame);
101}
102
103/*
104 * NAME: frame->finish()
105 * DESCRIPTION: deallocate any dynamic memory associated with frame
106 */
107/* rockbox: unused
108void mad_frame_finish(struct mad_frame *frame)
109{
110 mad_header_finish(&frame->header);
111
112 if (frame->overlap) {
113 free(frame->overlap);
114 frame->overlap = 0;
115 }
116}
117*/
118
119/*
120 * NAME: decode_header()
121 * DESCRIPTION: read header data and following CRC word
122 */
123static
124int decode_header(struct mad_header *header, struct mad_stream *stream)
125{
126 unsigned int index;
127
128 header->flags = 0;
129 header->private_bits = 0;
130
131 /* header() */
132
133 /* syncword */
134 mad_bit_skip(&stream->ptr, 11);
135
136 /* MPEG 2.5 indicator (really part of syncword) */
137 if (mad_bit_read(&stream->ptr, 1) == 0)
138 header->flags |= MAD_FLAG_MPEG_2_5_EXT;
139
140 /* ID */
141 if (mad_bit_read(&stream->ptr, 1) == 0)
142 header->flags |= MAD_FLAG_LSF_EXT;
143 else if (header->flags & MAD_FLAG_MPEG_2_5_EXT) {
144 stream->error = MAD_ERROR_LOSTSYNC;
145 return -1;
146 }
147
148 /* layer */
149 header->layer = 4 - mad_bit_read(&stream->ptr, 2);
150
151 if (header->layer == 4) {
152 stream->error = MAD_ERROR_BADLAYER;
153 return -1;
154 }
155
156 /* protection_bit */
157 if (mad_bit_read(&stream->ptr, 1) == 0) {
158 header->flags |= MAD_FLAG_PROTECTION;
159 header->crc_check = mad_bit_crc(stream->ptr, 16, 0xffff);
160 }
161
162 /* bitrate_index */
163 index = mad_bit_read(&stream->ptr, 4);
164
165 if (index == 15) {
166 stream->error = MAD_ERROR_BADBITRATE;
167 return -1;
168 }
169
170 if (header->flags & MAD_FLAG_LSF_EXT)
171 header->bitrate = bitrate_table[3 + (header->layer >> 1)][index];
172 else
173 header->bitrate = bitrate_table[header->layer - 1][index];
174
175 /* sampling_frequency */
176 index = mad_bit_read(&stream->ptr, 2);
177
178 if (index == 3) {
179 stream->error = MAD_ERROR_BADSAMPLERATE;
180 return -1;
181 }
182
183 header->samplerate = samplerate_table[index];
184
185 if (header->flags & MAD_FLAG_LSF_EXT) {
186 header->samplerate /= 2;
187
188 if (header->flags & MAD_FLAG_MPEG_2_5_EXT)
189 header->samplerate /= 2;
190 }
191
192 /* padding_bit */
193 if (mad_bit_read(&stream->ptr, 1))
194 header->flags |= MAD_FLAG_PADDING;
195
196 /* private_bit */
197 if (mad_bit_read(&stream->ptr, 1))
198 header->private_bits |= MAD_PRIVATE_HEADER;
199
200 /* mode */
201 header->mode = 3 - mad_bit_read(&stream->ptr, 2);
202
203 /* mode_extension */
204 header->mode_extension = mad_bit_read(&stream->ptr, 2);
205
206 /* copyright */
207 if (mad_bit_read(&stream->ptr, 1))
208 header->flags |= MAD_FLAG_COPYRIGHT;
209
210 /* original/copy */
211 if (mad_bit_read(&stream->ptr, 1))
212 header->flags |= MAD_FLAG_ORIGINAL;
213
214 /* emphasis */
215 header->emphasis = mad_bit_read(&stream->ptr, 2);
216
217# if defined(OPT_STRICT)
218 /*
219 * ISO/IEC 11172-3 says this is a reserved emphasis value, but
220 * streams exist which use it anyway. Since the value is not important
221 * to the decoder proper, we allow it unless OPT_STRICT is defined.
222 */
223 if (header->emphasis == MAD_EMPHASIS_RESERVED) {
224 stream->error = MAD_ERROR_BADEMPHASIS;
225 return -1;
226 }
227# endif
228
229 /* error_check() */
230
231 /* crc_check */
232 if (header->flags & MAD_FLAG_PROTECTION)
233 header->crc_target = mad_bit_read(&stream->ptr, 16);
234
235 return 0;
236}
237
238/*
239 * NAME: free_bitrate()
240 * DESCRIPTION: attempt to discover the bitstream's free bitrate
241 */
242static
243int free_bitrate(struct mad_stream *stream, struct mad_header const *header)
244{
245 struct mad_bitptr keep_ptr;
246 unsigned long rate = 0;
247 unsigned int pad_slot, slots_per_frame;
248 unsigned char const *ptr = 0;
249
250 keep_ptr = stream->ptr;
251
252 pad_slot = (header->flags & MAD_FLAG_PADDING) ? 1 : 0;
253 slots_per_frame = (header->layer == MAD_LAYER_III &&
254 (header->flags & MAD_FLAG_LSF_EXT)) ? 72 : 144;
255
256 while (mad_stream_sync(stream) == 0) {
257 struct mad_stream peek_stream;
258 struct mad_header peek_header;
259
260 peek_stream = *stream;
261 peek_header = *header;
262
263 if (decode_header(&peek_header, &peek_stream) == 0 &&
264 peek_header.layer == header->layer &&
265 peek_header.samplerate == header->samplerate) {
266 unsigned int N;
267
268 ptr = mad_bit_nextbyte(&stream->ptr);
269
270 N = ptr - stream->this_frame;
271
272 if (header->layer == MAD_LAYER_I) {
273 rate = (unsigned long) header->samplerate *
274 (N - 4 * pad_slot + 4) / 48 / 1000;
275 }
276 else {
277 rate = (unsigned long) header->samplerate *
278 (N - pad_slot + 1) / slots_per_frame / 1000;
279 }
280
281 if (rate >= 8)
282 break;
283 }
284
285 mad_bit_skip(&stream->ptr, 8);
286 }
287
288 stream->ptr = keep_ptr;
289
290 if (rate < 8 || (header->layer == MAD_LAYER_III && rate > 640)) {
291 stream->error = MAD_ERROR_LOSTSYNC;
292 return -1;
293 }
294
295 stream->freerate = rate * 1000;
296
297 return 0;
298}
299
300/*
301 * NAME: header->decode()
302 * DESCRIPTION: read the next frame header from the stream
303 */
304int mad_header_decode(struct mad_header *header, struct mad_stream *stream)
305{
306 register unsigned char const *ptr, *end;
307 unsigned int pad_slot, N;
308
309 ptr = stream->next_frame;
310 end = stream->bufend;
311
312 if (ptr == 0) {
313 stream->error = MAD_ERROR_BUFPTR;
314 goto fail;
315 }
316
317 /* stream skip */
318 /* rockbox: not used
319 if (stream->skiplen) {
320 if (!stream->sync)
321 ptr = stream->this_frame;
322
323 if (end - ptr < (long) stream->skiplen) {
324 stream->skiplen -= end - ptr;
325 stream->next_frame = end;
326
327 stream->error = MAD_ERROR_BUFLEN;
328 goto fail;
329 }
330
331 ptr += stream->skiplen;
332 stream->skiplen = 0;
333
334 stream->sync = 1;
335 }
336 */
337
338 sync:
339 /* synchronize */
340 if (stream->sync) {
341 if (end - ptr < MAD_BUFFER_GUARD) {
342 stream->next_frame = ptr;
343
344 stream->error = MAD_ERROR_BUFLEN;
345 goto fail;
346 }
347 else if (!(ptr[0] == 0xff && (ptr[1] & 0xe0) == 0xe0)) {
348 /* mark point where frame sync word was expected */
349 stream->this_frame = ptr;
350 stream->next_frame = ptr + 1;
351
352 stream->error = MAD_ERROR_LOSTSYNC;
353 goto fail;
354 }
355 }
356 else {
357 mad_bit_init(&stream->ptr, ptr);
358
359 if (mad_stream_sync(stream) == -1) {
360 if (end - stream->next_frame >= MAD_BUFFER_GUARD)
361 stream->next_frame = end - MAD_BUFFER_GUARD;
362
363 stream->error = MAD_ERROR_BUFLEN;
364 goto fail;
365 }
366
367 ptr = mad_bit_nextbyte(&stream->ptr);
368 }
369
370 /* begin processing */
371 stream->this_frame = ptr;
372 stream->next_frame = ptr + 1; /* possibly bogus sync word */
373
374 mad_bit_init(&stream->ptr, stream->this_frame);
375
376 if (decode_header(header, stream) == -1)
377 goto fail;
378
379 /* calculate frame duration */
380 /* rockbox: not used
381 mad_timer_set(&header->duration, 0,
382 32 * MAD_NSBSAMPLES(header), header->samplerate);
383 */
384
385 /* calculate free bit rate */
386 if (header->bitrate == 0) {
387 if ((stream->freerate == 0 || !stream->sync ||
388 (header->layer == MAD_LAYER_III && stream->freerate > 640000)) &&
389 free_bitrate(stream, header) == -1)
390 goto fail;
391
392 header->bitrate = stream->freerate;
393 header->flags |= MAD_FLAG_FREEFORMAT;
394 }
395
396 /* calculate beginning of next frame */
397 pad_slot = (header->flags & MAD_FLAG_PADDING) ? 1 : 0;
398
399 if (header->layer == MAD_LAYER_I)
400 N = ((12 * header->bitrate / header->samplerate) + pad_slot) * 4;
401 else {
402 unsigned int slots_per_frame;
403
404 slots_per_frame = (header->layer == MAD_LAYER_III &&
405 (header->flags & MAD_FLAG_LSF_EXT)) ? 72 : 144;
406
407 N = (slots_per_frame * header->bitrate / header->samplerate) + pad_slot;
408 }
409
410 /* verify there is enough data left in buffer to decode this frame */
411 if ((long)(N + MAD_BUFFER_GUARD) > end - stream->this_frame) {
412 stream->next_frame = stream->this_frame;
413
414 stream->error = MAD_ERROR_BUFLEN;
415 goto fail;
416 }
417
418 stream->next_frame = stream->this_frame + N;
419
420 if (!stream->sync) {
421 /* check that a valid frame header follows this frame */
422
423 ptr = stream->next_frame;
424 if (!(ptr[0] == 0xff && (ptr[1] & 0xe0) == 0xe0)) {
425 ptr = stream->next_frame = stream->this_frame + 1;
426 goto sync;
427 }
428
429 stream->sync = 1;
430 }
431
432 header->flags |= MAD_FLAG_INCOMPLETE;
433
434 return 0;
435
436 fail:
437 stream->sync = 0;
438
439 return -1;
440}
441
442/*
443 * NAME: frame->decode()
444 * DESCRIPTION: decode a single frame from a bitstream
445 */
446int mad_frame_decode(struct mad_frame *frame, struct mad_stream *stream)
447{
448 frame->options = stream->options;
449
450 /* header() */
451 /* error_check() */
452
453 if (!(frame->header.flags & MAD_FLAG_INCOMPLETE) &&
454 mad_header_decode(&frame->header, stream) == -1)
455 goto fail;
456
457 /* audio_data() */
458
459 frame->header.flags &= ~MAD_FLAG_INCOMPLETE;
460
461 if (decoder_table[frame->header.layer - 1](stream, frame) == -1) {
462 if (!MAD_RECOVERABLE(stream->error))
463 stream->next_frame = stream->this_frame;
464
465 goto fail;
466 }
467
468 /* ancillary_data() */
469
470 if (frame->header.layer != MAD_LAYER_III) {
471 struct mad_bitptr next_frame;
472
473 mad_bit_init(&next_frame, stream->next_frame);
474
475 stream->anc_ptr = stream->ptr;
476 stream->anc_bitlen = mad_bit_length(&stream->ptr, &next_frame);
477
478 mad_bit_finish(&next_frame);
479 }
480
481
482
483 return 0;
484
485 fail:
486 stream->anc_bitlen = 0;
487 return -1;
488}
489
490/*
491 * NAME: frame->mute()
492 * DESCRIPTION: zero all subband values so the frame becomes silent
493 */
494void mad_frame_mute(struct mad_frame *frame)
495{
496 memset((*frame->sbsample_prev), 0, sizeof(*frame->sbsample_prev));
497 memset((*frame->sbsample) , 0, sizeof(*frame->sbsample));
498 memset((*frame->overlap) , 0, sizeof(*frame->overlap));
499}
diff --git a/lib/rbcodec/codecs/libmad/frame.h b/lib/rbcodec/codecs/libmad/frame.h
new file mode 100644
index 0000000000..b1c6e0289d
--- /dev/null
+++ b/lib/rbcodec/codecs/libmad/frame.h
@@ -0,0 +1,124 @@
1/*
2 * libmad - MPEG audio decoder library
3 * Copyright (C) 2000-2004 Underbit Technologies, Inc.
4 *
5 * This program is free software; you can redistribute it and/or modify
6 * it under the terms of the GNU General Public License as published by
7 * the Free Software Foundation; either version 2 of the License, or
8 * (at your option) any later version.
9 *
10 * This program is distributed in the hope that it will be useful,
11 * but WITHOUT ANY WARRANTY; without even the implied warranty of
12 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 * GNU General Public License for more details.
14 *
15 * You should have received a copy of the GNU General Public License
16 * along with this program; if not, write to the Free Software
17 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
18 *
19 * $Id$
20 */
21
22# ifndef LIBMAD_FRAME_H
23# define LIBMAD_FRAME_H
24
25# include "fixed.h"
26# include "timer.h"
27# include "stream.h"
28
29enum mad_layer {
30 MAD_LAYER_I = 1, /* Layer I */
31 MAD_LAYER_II = 2, /* Layer II */
32 MAD_LAYER_III = 3 /* Layer III */
33};
34
35enum mad_mode {
36 MAD_MODE_SINGLE_CHANNEL = 0, /* single channel */
37 MAD_MODE_DUAL_CHANNEL = 1, /* dual channel */
38 MAD_MODE_JOINT_STEREO = 2, /* joint (MS/intensity) stereo */
39 MAD_MODE_STEREO = 3 /* normal LR stereo */
40};
41
42enum mad_emphasis {
43 MAD_EMPHASIS_NONE = 0, /* no emphasis */
44 MAD_EMPHASIS_50_15_US = 1, /* 50/15 microseconds emphasis */
45 MAD_EMPHASIS_CCITT_J_17 = 3, /* CCITT J.17 emphasis */
46 MAD_EMPHASIS_RESERVED = 2 /* unknown emphasis */
47};
48
49struct mad_header {
50 enum mad_layer layer; /* audio layer (1, 2, or 3) */
51 enum mad_mode mode; /* channel mode (see above) */
52 int mode_extension; /* additional mode info */
53 enum mad_emphasis emphasis; /* de-emphasis to use (see above) */
54
55 unsigned long bitrate; /* stream bitrate (bps) */
56 unsigned int samplerate; /* sampling frequency (Hz) */
57
58 unsigned short crc_check; /* frame CRC accumulator */
59 unsigned short crc_target; /* final target CRC checksum */
60
61 int flags; /* flags (see below) */
62 int private_bits; /* private bits (see below) */
63
64#if 0 /* rockbox: not used */
65 mad_timer_t duration; /* audio playing time of frame */
66#endif
67};
68
69struct mad_frame {
70 struct mad_header header; /* MPEG audio header */
71 int options; /* decoding options (from stream) */
72
73 mad_fixed_t (*sbsample)[2][36][32] MEM_ALIGN_ATTR; /* synthesis subband filter samples */
74 mad_fixed_t (*sbsample_prev)[2][36][32] MEM_ALIGN_ATTR; /* synthesis subband filter samples
75 from previous frame only needed
76 when synthesis is on cop */
77
78 mad_fixed_t (*overlap)[2][32][18] MEM_ALIGN_ATTR; /* Layer III block overlap data */
79};
80
81# define MAD_NCHANNELS(header) ((header)->mode ? 2 : 1)
82# define MAD_NSBSAMPLES(header) \
83 ((header)->layer == MAD_LAYER_I ? 12 : \
84 (((header)->layer == MAD_LAYER_III && \
85 ((header)->flags & MAD_FLAG_LSF_EXT)) ? 18 : 36))
86
87enum {
88 MAD_FLAG_NPRIVATE_III = 0x0007, /* number of Layer III private bits */
89 MAD_FLAG_INCOMPLETE = 0x0008, /* header but not data is decoded */
90
91 MAD_FLAG_PROTECTION = 0x0010, /* frame has CRC protection */
92 MAD_FLAG_COPYRIGHT = 0x0020, /* frame is copyright */
93 MAD_FLAG_ORIGINAL = 0x0040, /* frame is original (else copy) */
94 MAD_FLAG_PADDING = 0x0080, /* frame has additional slot */
95
96 MAD_FLAG_I_STEREO = 0x0100, /* uses intensity joint stereo */
97 MAD_FLAG_MS_STEREO = 0x0200, /* uses middle/side joint stereo */
98 MAD_FLAG_FREEFORMAT = 0x0400, /* uses free format bitrate */
99
100 MAD_FLAG_LSF_EXT = 0x1000, /* lower sampling freq. extension */
101 MAD_FLAG_MC_EXT = 0x2000, /* multichannel audio extension */
102 MAD_FLAG_MPEG_2_5_EXT = 0x4000 /* MPEG 2.5 (unofficial) extension */
103};
104
105enum {
106 MAD_PRIVATE_HEADER = 0x0100, /* header private bit */
107 MAD_PRIVATE_III = 0x001f /* Layer III private bits (up to 5) */
108};
109
110void mad_header_init(struct mad_header *);
111
112# define mad_header_finish(header) /* nothing */
113
114int mad_header_decode(struct mad_header *, struct mad_stream *);
115
116void mad_frame_init(struct mad_frame *);
117/* rockbox: not used
118void mad_frame_finish(struct mad_frame *);*/
119
120int mad_frame_decode(struct mad_frame *, struct mad_stream *);
121
122void mad_frame_mute(struct mad_frame *);
123
124# endif
diff --git a/lib/rbcodec/codecs/libmad/global.h b/lib/rbcodec/codecs/libmad/global.h
new file mode 100644
index 0000000000..50051f45b3
--- /dev/null
+++ b/lib/rbcodec/codecs/libmad/global.h
@@ -0,0 +1,72 @@
1/*
2 * libmad - MPEG audio decoder library
3 * Copyright (C) 2000-2004 Underbit Technologies, Inc.
4 *
5 * This program is free software; you can redistribute it and/or modify
6 * it under the terms of the GNU General Public License as published by
7 * the Free Software Foundation; either version 2 of the License, or
8 * (at your option) any later version.
9 *
10 * This program is distributed in the hope that it will be useful,
11 * but WITHOUT ANY WARRANTY; without even the implied warranty of
12 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 * GNU General Public License for more details.
14 *
15 * You should have received a copy of the GNU General Public License
16 * along with this program; if not, write to the Free Software
17 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
18 *
19 * $Id$
20 */
21
22#include "codeclib.h"
23
24# ifndef LIBMAD_GLOBAL_H
25# define LIBMAD_GLOBAL_H
26
27#include "mad_iram.h"
28
29#if defined(CPU_COLDFIRE)
30#define FPM_COLDFIRE_EMAC
31#elif defined(CPU_ARM)
32#define FPM_ARM
33#elif defined(CPU_MIPS)
34#define FPM_MIPS
35#else
36#define FPM_DEFAULT
37#endif
38
39/* conditional debugging */
40
41# if defined(DEBUG) && defined(NDEBUG)
42# error "cannot define both DEBUG and NDEBUG"
43# endif
44
45# if defined(DEBUG)
46# include <stdio.h>
47# endif
48
49/* conditional features */
50
51# if defined(OPT_SPEED) && defined(OPT_ACCURACY)
52# error "cannot optimize for both speed and accuracy"
53# endif
54
55# if defined(OPT_SPEED) && !defined(OPT_SSO)
56# define OPT_SSO
57# endif
58
59# if defined(HAVE_UNISTD_H) && defined(HAVE_WAITPID) && \
60 defined(HAVE_FCNTL) && defined(HAVE_PIPE) && defined(HAVE_FORK)
61# define USE_ASYNC
62# endif
63
64# if !defined(HAVE_ASSERT_H)
65# if defined(NDEBUG)
66# define assert(x) /* nothing */
67# else
68# define assert(x) do { if (!(x)) abort(); } while (0)
69# endif
70# endif
71
72# endif
diff --git a/lib/rbcodec/codecs/libmad/huffman.c b/lib/rbcodec/codecs/libmad/huffman.c
new file mode 100644
index 0000000000..bec44434a7
--- /dev/null
+++ b/lib/rbcodec/codecs/libmad/huffman.c
@@ -0,0 +1,3109 @@
1/*
2 * libmad - MPEG audio decoder library
3 * Copyright (C) 2000-2004 Underbit Technologies, Inc.
4 *
5 * This program is free software; you can redistribute it and/or modify
6 * it under the terms of the GNU General Public License as published by
7 * the Free Software Foundation; either version 2 of the License, or
8 * (at your option) any later version.
9 *
10 * This program is distributed in the hope that it will be useful,
11 * but WITHOUT ANY WARRANTY; without even the implied warranty of
12 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 * GNU General Public License for more details.
14 *
15 * You should have received a copy of the GNU General Public License
16 * along with this program; if not, write to the Free Software
17 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
18 *
19 * $Id$
20 */
21
22# ifdef HAVE_CONFIG_H
23# include "config.h"
24# endif
25
26# include "global.h"
27
28# include "huffman.h"
29
30/*
31 * These are the Huffman code words for Layer III.
32 * The data for these tables are derived from Table B.7 of ISO/IEC 11172-3.
33 *
34 * These tables support decoding up to 4 Huffman code bits at a time.
35 */
36
37# if defined(__GNUC__) || \
38 (defined(__STDC_VERSION__) && __STDC_VERSION__ >= 199901)
39# define PTR(offs, bits) { .ptr = { 0, bits, offs } }
40# define V(v, w, x, y, hlen) { .value = { 1, hlen, v, w, x, y } }
41# else
42# define PTR(offs, bits) { { 0, bits, offs } }
43# if defined(WORDS_BIGENDIAN)
44# define V(v, w, x, y, hlen) { { 1, hlen, (v << 11) | (w << 10) | \
45 (x << 9) | (y << 8) } }
46# else
47# define V(v, w, x, y, hlen) { { 1, hlen, (v << 0) | (w << 1) | \
48 (x << 2) | (y << 3) } }
49# endif
50# endif
51
52static
53union huffquad const hufftabA[] ICONST_ATTR_MPA_HUFFMAN = {
54 /* 0000 */ PTR(16, 2),
55 /* 0001 */ PTR(20, 2),
56 /* 0010 */ PTR(24, 1),
57 /* 0011 */ PTR(26, 1),
58 /* 0100 */ V(0, 0, 1, 0, 4),
59 /* 0101 */ V(0, 0, 0, 1, 4),
60 /* 0110 */ V(0, 1, 0, 0, 4),
61 /* 0111 */ V(1, 0, 0, 0, 4),
62 /* 1000 */ V(0, 0, 0, 0, 1),
63 /* 1001 */ V(0, 0, 0, 0, 1),
64 /* 1010 */ V(0, 0, 0, 0, 1),
65 /* 1011 */ V(0, 0, 0, 0, 1),
66 /* 1100 */ V(0, 0, 0, 0, 1),
67 /* 1101 */ V(0, 0, 0, 0, 1),
68 /* 1110 */ V(0, 0, 0, 0, 1),
69 /* 1111 */ V(0, 0, 0, 0, 1),
70
71 /* 0000 ... */
72 /* 00 */ V(1, 0, 1, 1, 2), /* 16 */
73 /* 01 */ V(1, 1, 1, 1, 2),
74 /* 10 */ V(1, 1, 0, 1, 2),
75 /* 11 */ V(1, 1, 1, 0, 2),
76
77 /* 0001 ... */
78 /* 00 */ V(0, 1, 1, 1, 2), /* 20 */
79 /* 01 */ V(0, 1, 0, 1, 2),
80 /* 10 */ V(1, 0, 0, 1, 1),
81 /* 11 */ V(1, 0, 0, 1, 1),
82
83 /* 0010 ... */
84 /* 0 */ V(0, 1, 1, 0, 1), /* 24 */
85 /* 1 */ V(0, 0, 1, 1, 1),
86
87 /* 0011 ... */
88 /* 0 */ V(1, 0, 1, 0, 1), /* 26 */
89 /* 1 */ V(1, 1, 0, 0, 1)
90};
91
92static
93union huffquad const hufftabB[] ICONST_ATTR_MPA_HUFFMAN = {
94 /* 0000 */ V(1, 1, 1, 1, 4),
95 /* 0001 */ V(1, 1, 1, 0, 4),
96 /* 0010 */ V(1, 1, 0, 1, 4),
97 /* 0011 */ V(1, 1, 0, 0, 4),
98 /* 0100 */ V(1, 0, 1, 1, 4),
99 /* 0101 */ V(1, 0, 1, 0, 4),
100 /* 0110 */ V(1, 0, 0, 1, 4),
101 /* 0111 */ V(1, 0, 0, 0, 4),
102 /* 1000 */ V(0, 1, 1, 1, 4),
103 /* 1001 */ V(0, 1, 1, 0, 4),
104 /* 1010 */ V(0, 1, 0, 1, 4),
105 /* 1011 */ V(0, 1, 0, 0, 4),
106 /* 1100 */ V(0, 0, 1, 1, 4),
107 /* 1101 */ V(0, 0, 1, 0, 4),
108 /* 1110 */ V(0, 0, 0, 1, 4),
109 /* 1111 */ V(0, 0, 0, 0, 4)
110};
111
112# undef V
113# undef PTR
114
115# if defined(__GNUC__) || \
116 (defined(__STDC_VERSION__) && __STDC_VERSION__ >= 199901)
117# define PTR(offs, bits) { .ptr = { 0, bits, offs } }
118# define V(x, y, hlen) { .value = { 1, hlen, x, y } }
119# else
120# define PTR(offs, bits) { { 0, bits, offs } }
121# if defined(WORDS_BIGENDIAN)
122# define V(x, y, hlen) { { 1, hlen, (x << 8) | (y << 4) } }
123# else
124# define V(x, y, hlen) { { 1, hlen, (x << 0) | (y << 4) } }
125# endif
126# endif
127
128static
129union huffpair const hufftab0[] ICONST_ATTR_MPA_HUFFMAN = {
130 /* */ V(0, 0, 0)
131};
132
133static
134union huffpair const hufftab1[] ICONST_ATTR_MPA_HUFFMAN = {
135 /* 000 */ V(1, 1, 3),
136 /* 001 */ V(0, 1, 3),
137 /* 010 */ V(1, 0, 2),
138 /* 011 */ V(1, 0, 2),
139 /* 100 */ V(0, 0, 1),
140 /* 101 */ V(0, 0, 1),
141 /* 110 */ V(0, 0, 1),
142 /* 111 */ V(0, 0, 1)
143};
144
145static
146union huffpair const hufftab2[] ICONST_ATTR_MPA_HUFFMAN = {
147 /* 000 */ PTR(8, 3),
148 /* 001 */ V(1, 1, 3),
149 /* 010 */ V(0, 1, 3),
150 /* 011 */ V(1, 0, 3),
151 /* 100 */ V(0, 0, 1),
152 /* 101 */ V(0, 0, 1),
153 /* 110 */ V(0, 0, 1),
154 /* 111 */ V(0, 0, 1),
155
156 /* 000 ... */
157 /* 000 */ V(2, 2, 3), /* 8 */
158 /* 001 */ V(0, 2, 3),
159 /* 010 */ V(1, 2, 2),
160 /* 011 */ V(1, 2, 2),
161 /* 100 */ V(2, 1, 2),
162 /* 101 */ V(2, 1, 2),
163 /* 110 */ V(2, 0, 2),
164 /* 111 */ V(2, 0, 2)
165};
166
167static
168union huffpair const hufftab3[] ICONST_ATTR_MPA_HUFFMAN = {
169 /* 000 */ PTR(8, 3),
170 /* 001 */ V(1, 0, 3),
171 /* 010 */ V(1, 1, 2),
172 /* 011 */ V(1, 1, 2),
173 /* 100 */ V(0, 1, 2),
174 /* 101 */ V(0, 1, 2),
175 /* 110 */ V(0, 0, 2),
176 /* 111 */ V(0, 0, 2),
177
178 /* 000 ... */
179 /* 000 */ V(2, 2, 3), /* 8 */
180 /* 001 */ V(0, 2, 3),
181 /* 010 */ V(1, 2, 2),
182 /* 011 */ V(1, 2, 2),
183 /* 100 */ V(2, 1, 2),
184 /* 101 */ V(2, 1, 2),
185 /* 110 */ V(2, 0, 2),
186 /* 111 */ V(2, 0, 2)
187};
188
189static
190union huffpair const hufftab5[] ICONST_ATTR_MPA_HUFFMAN = {
191 /* 000 */ PTR(8, 4),
192 /* 001 */ V(1, 1, 3),
193 /* 010 */ V(0, 1, 3),
194 /* 011 */ V(1, 0, 3),
195 /* 100 */ V(0, 0, 1),
196 /* 101 */ V(0, 0, 1),
197 /* 110 */ V(0, 0, 1),
198 /* 111 */ V(0, 0, 1),
199
200 /* 000 ... */
201 /* 0000 */ PTR(24, 1), /* 8 */
202 /* 0001 */ V(3, 2, 4),
203 /* 0010 */ V(3, 1, 3),
204 /* 0011 */ V(3, 1, 3),
205 /* 0100 */ V(1, 3, 4),
206 /* 0101 */ V(0, 3, 4),
207 /* 0110 */ V(3, 0, 4),
208 /* 0111 */ V(2, 2, 4),
209 /* 1000 */ V(1, 2, 3),
210 /* 1001 */ V(1, 2, 3),
211 /* 1010 */ V(2, 1, 3),
212 /* 1011 */ V(2, 1, 3),
213 /* 1100 */ V(0, 2, 3),
214 /* 1101 */ V(0, 2, 3),
215 /* 1110 */ V(2, 0, 3),
216 /* 1111 */ V(2, 0, 3),
217
218 /* 000 0000 ... */
219 /* 0 */ V(3, 3, 1), /* 24 */
220 /* 1 */ V(2, 3, 1)
221};
222
223static
224union huffpair const hufftab6[] ICONST_ATTR_MPA_HUFFMAN = {
225 /* 0000 */ PTR(16, 3),
226 /* 0001 */ PTR(24, 1),
227 /* 0010 */ PTR(26, 1),
228 /* 0011 */ V(1, 2, 4),
229 /* 0100 */ V(2, 1, 4),
230 /* 0101 */ V(2, 0, 4),
231 /* 0110 */ V(0, 1, 3),
232 /* 0111 */ V(0, 1, 3),
233 /* 1000 */ V(1, 1, 2),
234 /* 1001 */ V(1, 1, 2),
235 /* 1010 */ V(1, 1, 2),
236 /* 1011 */ V(1, 1, 2),
237 /* 1100 */ V(1, 0, 3),
238 /* 1101 */ V(1, 0, 3),
239 /* 1110 */ V(0, 0, 3),
240 /* 1111 */ V(0, 0, 3),
241
242 /* 0000 ... */
243 /* 000 */ V(3, 3, 3), /* 16 */
244 /* 001 */ V(0, 3, 3),
245 /* 010 */ V(2, 3, 2),
246 /* 011 */ V(2, 3, 2),
247 /* 100 */ V(3, 2, 2),
248 /* 101 */ V(3, 2, 2),
249 /* 110 */ V(3, 0, 2),
250 /* 111 */ V(3, 0, 2),
251
252 /* 0001 ... */
253 /* 0 */ V(1, 3, 1), /* 24 */
254 /* 1 */ V(3, 1, 1),
255
256 /* 0010 ... */
257 /* 0 */ V(2, 2, 1), /* 26 */
258 /* 1 */ V(0, 2, 1)
259};
260
261static
262union huffpair const hufftab7[] ICONST_ATTR_MPA_HUFFMAN = {
263 /* 0000 */ PTR(16, 4),
264 /* 0001 */ PTR(32, 4),
265 /* 0010 */ PTR(48, 2),
266 /* 0011 */ V(1, 1, 4),
267 /* 0100 */ V(0, 1, 3),
268 /* 0101 */ V(0, 1, 3),
269 /* 0110 */ V(1, 0, 3),
270 /* 0111 */ V(1, 0, 3),
271 /* 1000 */ V(0, 0, 1),
272 /* 1001 */ V(0, 0, 1),
273 /* 1010 */ V(0, 0, 1),
274 /* 1011 */ V(0, 0, 1),
275 /* 1100 */ V(0, 0, 1),
276 /* 1101 */ V(0, 0, 1),
277 /* 1110 */ V(0, 0, 1),
278 /* 1111 */ V(0, 0, 1),
279
280 /* 0000 ... */
281 /* 0000 */ PTR(52, 2), /* 16 */
282 /* 0001 */ PTR(56, 1),
283 /* 0010 */ PTR(58, 1),
284 /* 0011 */ V(1, 5, 4),
285 /* 0100 */ V(5, 1, 4),
286 /* 0101 */ PTR(60, 1),
287 /* 0110 */ V(5, 0, 4),
288 /* 0111 */ PTR(62, 1),
289 /* 1000 */ V(2, 4, 4),
290 /* 1001 */ V(4, 2, 4),
291 /* 1010 */ V(1, 4, 3),
292 /* 1011 */ V(1, 4, 3),
293 /* 1100 */ V(4, 1, 3),
294 /* 1101 */ V(4, 1, 3),
295 /* 1110 */ V(4, 0, 3),
296 /* 1111 */ V(4, 0, 3),
297
298 /* 0001 ... */
299 /* 0000 */ V(0, 4, 4), /* 32 */
300 /* 0001 */ V(2, 3, 4),
301 /* 0010 */ V(3, 2, 4),
302 /* 0011 */ V(0, 3, 4),
303 /* 0100 */ V(1, 3, 3),
304 /* 0101 */ V(1, 3, 3),
305 /* 0110 */ V(3, 1, 3),
306 /* 0111 */ V(3, 1, 3),
307 /* 1000 */ V(3, 0, 3),
308 /* 1001 */ V(3, 0, 3),
309 /* 1010 */ V(2, 2, 3),
310 /* 1011 */ V(2, 2, 3),
311 /* 1100 */ V(1, 2, 2),
312 /* 1101 */ V(1, 2, 2),
313 /* 1110 */ V(1, 2, 2),
314 /* 1111 */ V(1, 2, 2),
315
316 /* 0010 ... */
317 /* 00 */ V(2, 1, 1), /* 48 */
318 /* 01 */ V(2, 1, 1),
319 /* 10 */ V(0, 2, 2),
320 /* 11 */ V(2, 0, 2),
321
322 /* 0000 0000 ... */
323 /* 00 */ V(5, 5, 2), /* 52 */
324 /* 01 */ V(4, 5, 2),
325 /* 10 */ V(5, 4, 2),
326 /* 11 */ V(5, 3, 2),
327
328 /* 0000 0001 ... */
329 /* 0 */ V(3, 5, 1), /* 56 */
330 /* 1 */ V(4, 4, 1),
331
332 /* 0000 0010 ... */
333 /* 0 */ V(2, 5, 1), /* 58 */
334 /* 1 */ V(5, 2, 1),
335
336 /* 0000 0101 ... */
337 /* 0 */ V(0, 5, 1), /* 60 */
338 /* 1 */ V(3, 4, 1),
339
340 /* 0000 0111 ... */
341 /* 0 */ V(4, 3, 1), /* 62 */
342 /* 1 */ V(3, 3, 1)
343};
344
345# if 0
346/* this version saves 8 entries (16 bytes) at the expense of
347 an extra lookup in 4 out of 36 cases */
348static
349union huffpair const hufftab8[] ICONST_ATTR_MPA_HUFFMAN = {
350 /* 0000 */ PTR(16, 4),
351 /* 0001 */ PTR(32, 2),
352 /* 0010 */ V(1, 2, 4),
353 /* 0011 */ V(2, 1, 4),
354 /* 0100 */ V(1, 1, 2),
355 /* 0101 */ V(1, 1, 2),
356 /* 0110 */ V(1, 1, 2),
357 /* 0111 */ V(1, 1, 2),
358 /* 1000 */ V(0, 1, 3),
359 /* 1001 */ V(0, 1, 3),
360 /* 1010 */ V(1, 0, 3),
361 /* 1011 */ V(1, 0, 3),
362 /* 1100 */ V(0, 0, 2),
363 /* 1101 */ V(0, 0, 2),
364 /* 1110 */ V(0, 0, 2),
365 /* 1111 */ V(0, 0, 2),
366
367 /* 0000 ... */
368 /* 0000 */ PTR(36, 3), /* 16 */
369 /* 0001 */ PTR(44, 2),
370 /* 0010 */ PTR(48, 1),
371 /* 0011 */ V(1, 5, 4),
372 /* 0100 */ V(5, 1, 4),
373 /* 0101 */ PTR(50, 1),
374 /* 0110 */ PTR(52, 1),
375 /* 0111 */ V(2, 4, 4),
376 /* 1000 */ V(4, 2, 4),
377 /* 1001 */ V(1, 4, 4),
378 /* 1010 */ V(4, 1, 3),
379 /* 1011 */ V(4, 1, 3),
380 /* 1100 */ V(0, 4, 4),
381 /* 1101 */ V(4, 0, 4),
382 /* 1110 */ V(2, 3, 4),
383 /* 1111 */ V(3, 2, 4),
384
385 /* 0001 ... */
386 /* 00 */ PTR(54, 2), /* 32 */
387 /* 01 */ V(2, 2, 2),
388 /* 10 */ V(0, 2, 2),
389 /* 11 */ V(2, 0, 2),
390
391 /* 0000 0000 ... */
392 /* 000 */ V(5, 5, 3), /* 36 */
393 /* 001 */ V(5, 4, 3),
394 /* 010 */ V(4, 5, 2),
395 /* 011 */ V(4, 5, 2),
396 /* 100 */ V(5, 3, 1),
397 /* 101 */ V(5, 3, 1),
398 /* 110 */ V(5, 3, 1),
399 /* 111 */ V(5, 3, 1),
400
401 /* 0000 0001 ... */
402 /* 00 */ V(3, 5, 2), /* 44 */
403 /* 01 */ V(4, 4, 2),
404 /* 10 */ V(2, 5, 1),
405 /* 11 */ V(2, 5, 1),
406
407 /* 0000 0010 ... */
408 /* 0 */ V(5, 2, 1), /* 48 */
409 /* 1 */ V(0, 5, 1),
410
411 /* 0000 0101 ... */
412 /* 0 */ V(3, 4, 1), /* 50 */
413 /* 1 */ V(4, 3, 1),
414
415 /* 0000 0110 ... */
416 /* 0 */ V(5, 0, 1), /* 52 */
417 /* 1 */ V(3, 3, 1),
418
419 /* 0001 00 ... */
420 /* 00 */ V(1, 3, 2), /* 54 */
421 /* 01 */ V(3, 1, 2),
422 /* 10 */ V(0, 3, 2),
423 /* 11 */ V(3, 0, 2),
424};
425# else
426static
427union huffpair const hufftab8[] ICONST_ATTR_MPA_HUFFMAN = {
428 /* 0000 */ PTR(16, 4),
429 /* 0001 */ PTR(32, 4),
430 /* 0010 */ V(1, 2, 4),
431 /* 0011 */ V(2, 1, 4),
432 /* 0100 */ V(1, 1, 2),
433 /* 0101 */ V(1, 1, 2),
434 /* 0110 */ V(1, 1, 2),
435 /* 0111 */ V(1, 1, 2),
436 /* 1000 */ V(0, 1, 3),
437 /* 1001 */ V(0, 1, 3),
438 /* 1010 */ V(1, 0, 3),
439 /* 1011 */ V(1, 0, 3),
440 /* 1100 */ V(0, 0, 2),
441 /* 1101 */ V(0, 0, 2),
442 /* 1110 */ V(0, 0, 2),
443 /* 1111 */ V(0, 0, 2),
444
445 /* 0000 ... */
446 /* 0000 */ PTR(48, 3), /* 16 */
447 /* 0001 */ PTR(56, 2),
448 /* 0010 */ PTR(60, 1),
449 /* 0011 */ V(1, 5, 4),
450 /* 0100 */ V(5, 1, 4),
451 /* 0101 */ PTR(62, 1),
452 /* 0110 */ PTR(64, 1),
453 /* 0111 */ V(2, 4, 4),
454 /* 1000 */ V(4, 2, 4),
455 /* 1001 */ V(1, 4, 4),
456 /* 1010 */ V(4, 1, 3),
457 /* 1011 */ V(4, 1, 3),
458 /* 1100 */ V(0, 4, 4),
459 /* 1101 */ V(4, 0, 4),
460 /* 1110 */ V(2, 3, 4),
461 /* 1111 */ V(3, 2, 4),
462
463 /* 0001 ... */
464 /* 0000 */ V(1, 3, 4), /* 32 */
465 /* 0001 */ V(3, 1, 4),
466 /* 0010 */ V(0, 3, 4),
467 /* 0011 */ V(3, 0, 4),
468 /* 0100 */ V(2, 2, 2),
469 /* 0101 */ V(2, 2, 2),
470 /* 0110 */ V(2, 2, 2),
471 /* 0111 */ V(2, 2, 2),
472 /* 1000 */ V(0, 2, 2),
473 /* 1001 */ V(0, 2, 2),
474 /* 1010 */ V(0, 2, 2),
475 /* 1011 */ V(0, 2, 2),
476 /* 1100 */ V(2, 0, 2),
477 /* 1101 */ V(2, 0, 2),
478 /* 1110 */ V(2, 0, 2),
479 /* 1111 */ V(2, 0, 2),
480
481 /* 0000 0000 ... */
482 /* 000 */ V(5, 5, 3), /* 48 */
483 /* 001 */ V(5, 4, 3),
484 /* 010 */ V(4, 5, 2),
485 /* 011 */ V(4, 5, 2),
486 /* 100 */ V(5, 3, 1),
487 /* 101 */ V(5, 3, 1),
488 /* 110 */ V(5, 3, 1),
489 /* 111 */ V(5, 3, 1),
490
491 /* 0000 0001 ... */
492 /* 00 */ V(3, 5, 2), /* 56 */
493 /* 01 */ V(4, 4, 2),
494 /* 10 */ V(2, 5, 1),
495 /* 11 */ V(2, 5, 1),
496
497 /* 0000 0010 ... */
498 /* 0 */ V(5, 2, 1), /* 60 */
499 /* 1 */ V(0, 5, 1),
500
501 /* 0000 0101 ... */
502 /* 0 */ V(3, 4, 1), /* 62 */
503 /* 1 */ V(4, 3, 1),
504
505 /* 0000 0110 ... */
506 /* 0 */ V(5, 0, 1), /* 64 */
507 /* 1 */ V(3, 3, 1)
508};
509# endif
510
511static
512union huffpair const hufftab9[] ICONST_ATTR_MPA_HUFFMAN = {
513 /* 0000 */ PTR(16, 4),
514 /* 0001 */ PTR(32, 3),
515 /* 0010 */ PTR(40, 2),
516 /* 0011 */ PTR(44, 2),
517 /* 0100 */ PTR(48, 1),
518 /* 0101 */ V(1, 2, 4),
519 /* 0110 */ V(2, 1, 4),
520 /* 0111 */ V(2, 0, 4),
521 /* 1000 */ V(1, 1, 3),
522 /* 1001 */ V(1, 1, 3),
523 /* 1010 */ V(0, 1, 3),
524 /* 1011 */ V(0, 1, 3),
525 /* 1100 */ V(1, 0, 3),
526 /* 1101 */ V(1, 0, 3),
527 /* 1110 */ V(0, 0, 3),
528 /* 1111 */ V(0, 0, 3),
529
530 /* 0000 ... */
531 /* 0000 */ PTR(50, 1), /* 16 */
532 /* 0001 */ V(3, 5, 4),
533 /* 0010 */ V(5, 3, 4),
534 /* 0011 */ PTR(52, 1),
535 /* 0100 */ V(4, 4, 4),
536 /* 0101 */ V(2, 5, 4),
537 /* 0110 */ V(5, 2, 4),
538 /* 0111 */ V(1, 5, 4),
539 /* 1000 */ V(5, 1, 3),
540 /* 1001 */ V(5, 1, 3),
541 /* 1010 */ V(3, 4, 3),
542 /* 1011 */ V(3, 4, 3),
543 /* 1100 */ V(4, 3, 3),
544 /* 1101 */ V(4, 3, 3),
545 /* 1110 */ V(5, 0, 4),
546 /* 1111 */ V(0, 4, 4),
547
548 /* 0001 ... */
549 /* 000 */ V(2, 4, 3), /* 32 */
550 /* 001 */ V(4, 2, 3),
551 /* 010 */ V(3, 3, 3),
552 /* 011 */ V(4, 0, 3),
553 /* 100 */ V(1, 4, 2),
554 /* 101 */ V(1, 4, 2),
555 /* 110 */ V(4, 1, 2),
556 /* 111 */ V(4, 1, 2),
557
558 /* 0010 ... */
559 /* 00 */ V(2, 3, 2), /* 40 */
560 /* 01 */ V(3, 2, 2),
561 /* 10 */ V(1, 3, 1),
562 /* 11 */ V(1, 3, 1),
563
564 /* 0011 ... */
565 /* 00 */ V(3, 1, 1), /* 44 */
566 /* 01 */ V(3, 1, 1),
567 /* 10 */ V(0, 3, 2),
568 /* 11 */ V(3, 0, 2),
569
570 /* 0100 ... */
571 /* 0 */ V(2, 2, 1), /* 48 */
572 /* 1 */ V(0, 2, 1),
573
574 /* 0000 0000 ... */
575 /* 0 */ V(5, 5, 1), /* 50 */
576 /* 1 */ V(4, 5, 1),
577
578 /* 0000 0011 ... */
579 /* 0 */ V(5, 4, 1), /* 52 */
580 /* 1 */ V(0, 5, 1)
581};
582
583static
584union huffpair const hufftab10[] ICONST_ATTR_MPA_HUFFMAN = {
585 /* 0000 */ PTR(16, 4),
586 /* 0001 */ PTR(32, 4),
587 /* 0010 */ PTR(48, 2),
588 /* 0011 */ V(1, 1, 4),
589 /* 0100 */ V(0, 1, 3),
590 /* 0101 */ V(0, 1, 3),
591 /* 0110 */ V(1, 0, 3),
592 /* 0111 */ V(1, 0, 3),
593 /* 1000 */ V(0, 0, 1),
594 /* 1001 */ V(0, 0, 1),
595 /* 1010 */ V(0, 0, 1),
596 /* 1011 */ V(0, 0, 1),
597 /* 1100 */ V(0, 0, 1),
598 /* 1101 */ V(0, 0, 1),
599 /* 1110 */ V(0, 0, 1),
600 /* 1111 */ V(0, 0, 1),
601
602 /* 0000 ... */
603 /* 0000 */ PTR(52, 3), /* 16 */
604 /* 0001 */ PTR(60, 2),
605 /* 0010 */ PTR(64, 3),
606 /* 0011 */ PTR(72, 1),
607 /* 0100 */ PTR(74, 2),
608 /* 0101 */ PTR(78, 2),
609 /* 0110 */ PTR(82, 2),
610 /* 0111 */ V(1, 7, 4),
611 /* 1000 */ V(7, 1, 4),
612 /* 1001 */ PTR(86, 1),
613 /* 1010 */ PTR(88, 2),
614 /* 1011 */ PTR(92, 2),
615 /* 1100 */ V(1, 6, 4),
616 /* 1101 */ V(6, 1, 4),
617 /* 1110 */ V(6, 0, 4),
618 /* 1111 */ PTR(96, 1),
619
620 /* 0001 ... */
621 /* 0000 */ PTR(98, 1), /* 32 */
622 /* 0001 */ PTR(100, 1),
623 /* 0010 */ V(1, 4, 4),
624 /* 0011 */ V(4, 1, 4),
625 /* 0100 */ V(4, 0, 4),
626 /* 0101 */ V(2, 3, 4),
627 /* 0110 */ V(3, 2, 4),
628 /* 0111 */ V(0, 3, 4),
629 /* 1000 */ V(1, 3, 3),
630 /* 1001 */ V(1, 3, 3),
631 /* 1010 */ V(3, 1, 3),
632 /* 1011 */ V(3, 1, 3),
633 /* 1100 */ V(3, 0, 3),
634 /* 1101 */ V(3, 0, 3),
635 /* 1110 */ V(2, 2, 3),
636 /* 1111 */ V(2, 2, 3),
637
638 /* 0010 ... */
639 /* 00 */ V(1, 2, 2), /* 48 */
640 /* 01 */ V(2, 1, 2),
641 /* 10 */ V(0, 2, 2),
642 /* 11 */ V(2, 0, 2),
643
644 /* 0000 0000 ... */
645 /* 000 */ V(7, 7, 3), /* 52 */
646 /* 001 */ V(6, 7, 3),
647 /* 010 */ V(7, 6, 3),
648 /* 011 */ V(5, 7, 3),
649 /* 100 */ V(7, 5, 3),
650 /* 101 */ V(6, 6, 3),
651 /* 110 */ V(4, 7, 2),
652 /* 111 */ V(4, 7, 2),
653
654 /* 0000 0001 ... */
655 /* 00 */ V(7, 4, 2), /* 60 */
656 /* 01 */ V(5, 6, 2),
657 /* 10 */ V(6, 5, 2),
658 /* 11 */ V(3, 7, 2),
659
660 /* 0000 0010 ... */
661 /* 000 */ V(7, 3, 2), /* 64 */
662 /* 001 */ V(7, 3, 2),
663 /* 010 */ V(4, 6, 2),
664 /* 011 */ V(4, 6, 2),
665 /* 100 */ V(5, 5, 3),
666 /* 101 */ V(5, 4, 3),
667 /* 110 */ V(6, 3, 2),
668 /* 111 */ V(6, 3, 2),
669
670 /* 0000 0011 ... */
671 /* 0 */ V(2, 7, 1), /* 72 */
672 /* 1 */ V(7, 2, 1),
673
674 /* 0000 0100 ... */
675 /* 00 */ V(6, 4, 2), /* 74 */
676 /* 01 */ V(0, 7, 2),
677 /* 10 */ V(7, 0, 1),
678 /* 11 */ V(7, 0, 1),
679
680 /* 0000 0101 ... */
681 /* 00 */ V(6, 2, 1), /* 78 */
682 /* 01 */ V(6, 2, 1),
683 /* 10 */ V(4, 5, 2),
684 /* 11 */ V(3, 5, 2),
685
686 /* 0000 0110 ... */
687 /* 00 */ V(0, 6, 1), /* 82 */
688 /* 01 */ V(0, 6, 1),
689 /* 10 */ V(5, 3, 2),
690 /* 11 */ V(4, 4, 2),
691
692 /* 0000 1001 ... */
693 /* 0 */ V(3, 6, 1), /* 86 */
694 /* 1 */ V(2, 6, 1),
695
696 /* 0000 1010 ... */
697 /* 00 */ V(2, 5, 2), /* 88 */
698 /* 01 */ V(5, 2, 2),
699 /* 10 */ V(1, 5, 1),
700 /* 11 */ V(1, 5, 1),
701
702 /* 0000 1011 ... */
703 /* 00 */ V(5, 1, 1), /* 92 */
704 /* 01 */ V(5, 1, 1),
705 /* 10 */ V(3, 4, 2),
706 /* 11 */ V(4, 3, 2),
707
708 /* 0000 1111 ... */
709 /* 0 */ V(0, 5, 1), /* 96 */
710 /* 1 */ V(5, 0, 1),
711
712 /* 0001 0000 ... */
713 /* 0 */ V(2, 4, 1), /* 98 */
714 /* 1 */ V(4, 2, 1),
715
716 /* 0001 0001 ... */
717 /* 0 */ V(3, 3, 1), /* 100 */
718 /* 1 */ V(0, 4, 1)
719};
720
721static
722union huffpair const hufftab11[] ICONST_ATTR_MPA_HUFFMAN = {
723 /* 0000 */ PTR(16, 4),
724 /* 0001 */ PTR(32, 4),
725 /* 0010 */ PTR(48, 4),
726 /* 0011 */ PTR(64, 3),
727 /* 0100 */ V(1, 2, 4),
728 /* 0101 */ PTR(72, 1),
729 /* 0110 */ V(1, 1, 3),
730 /* 0111 */ V(1, 1, 3),
731 /* 1000 */ V(0, 1, 3),
732 /* 1001 */ V(0, 1, 3),
733 /* 1010 */ V(1, 0, 3),
734 /* 1011 */ V(1, 0, 3),
735 /* 1100 */ V(0, 0, 2),
736 /* 1101 */ V(0, 0, 2),
737 /* 1110 */ V(0, 0, 2),
738 /* 1111 */ V(0, 0, 2),
739
740 /* 0000 ... */
741 /* 0000 */ PTR(74, 2), /* 16 */
742 /* 0001 */ PTR(78, 3),
743 /* 0010 */ PTR(86, 2),
744 /* 0011 */ PTR(90, 1),
745 /* 0100 */ PTR(92, 2),
746 /* 0101 */ V(2, 7, 4),
747 /* 0110 */ V(7, 2, 4),
748 /* 0111 */ PTR(96, 1),
749 /* 1000 */ V(7, 1, 3),
750 /* 1001 */ V(7, 1, 3),
751 /* 1010 */ V(1, 7, 4),
752 /* 1011 */ V(7, 0, 4),
753 /* 1100 */ V(3, 6, 4),
754 /* 1101 */ V(6, 3, 4),
755 /* 1110 */ V(6, 0, 4),
756 /* 1111 */ PTR(98, 1),
757
758 /* 0001 ... */
759 /* 0000 */ PTR(100, 1), /* 32 */
760 /* 0001 */ V(1, 5, 4),
761 /* 0010 */ V(6, 2, 3),
762 /* 0011 */ V(6, 2, 3),
763 /* 0100 */ V(2, 6, 4),
764 /* 0101 */ V(0, 6, 4),
765 /* 0110 */ V(1, 6, 3),
766 /* 0111 */ V(1, 6, 3),
767 /* 1000 */ V(6, 1, 3),
768 /* 1001 */ V(6, 1, 3),
769 /* 1010 */ V(5, 1, 4),
770 /* 1011 */ V(3, 4, 4),
771 /* 1100 */ V(5, 0, 4),
772 /* 1101 */ PTR(102, 1),
773 /* 1110 */ V(2, 4, 4),
774 /* 1111 */ V(4, 2, 4),
775
776 /* 0010 ... */
777 /* 0000 */ V(1, 4, 4), /* 48 */
778 /* 0001 */ V(4, 1, 4),
779 /* 0010 */ V(0, 4, 4),
780 /* 0011 */ V(4, 0, 4),
781 /* 0100 */ V(2, 3, 3),
782 /* 0101 */ V(2, 3, 3),
783 /* 0110 */ V(3, 2, 3),
784 /* 0111 */ V(3, 2, 3),
785 /* 1000 */ V(1, 3, 2),
786 /* 1001 */ V(1, 3, 2),
787 /* 1010 */ V(1, 3, 2),
788 /* 1011 */ V(1, 3, 2),
789 /* 1100 */ V(3, 1, 2),
790 /* 1101 */ V(3, 1, 2),
791 /* 1110 */ V(3, 1, 2),
792 /* 1111 */ V(3, 1, 2),
793
794 /* 0011 ... */
795 /* 000 */ V(0, 3, 3), /* 64 */
796 /* 001 */ V(3, 0, 3),
797 /* 010 */ V(2, 2, 2),
798 /* 011 */ V(2, 2, 2),
799 /* 100 */ V(2, 1, 1),
800 /* 101 */ V(2, 1, 1),
801 /* 110 */ V(2, 1, 1),
802 /* 111 */ V(2, 1, 1),
803
804 /* 0101 ... */
805 /* 0 */ V(0, 2, 1), /* 72 */
806 /* 1 */ V(2, 0, 1),
807
808 /* 0000 0000 ... */
809 /* 00 */ V(7, 7, 2), /* 74 */
810 /* 01 */ V(6, 7, 2),
811 /* 10 */ V(7, 6, 2),
812 /* 11 */ V(7, 5, 2),
813
814 /* 0000 0001 ... */
815 /* 000 */ V(6, 6, 2), /* 78 */
816 /* 001 */ V(6, 6, 2),
817 /* 010 */ V(4, 7, 2),
818 /* 011 */ V(4, 7, 2),
819 /* 100 */ V(7, 4, 2),
820 /* 101 */ V(7, 4, 2),
821 /* 110 */ V(5, 7, 3),
822 /* 111 */ V(5, 5, 3),
823
824 /* 0000 0010 ... */
825 /* 00 */ V(5, 6, 2), /* 86 */
826 /* 01 */ V(6, 5, 2),
827 /* 10 */ V(3, 7, 1),
828 /* 11 */ V(3, 7, 1),
829
830 /* 0000 0011 ... */
831 /* 0 */ V(7, 3, 1), /* 90 */
832 /* 1 */ V(4, 6, 1),
833
834 /* 0000 0100 ... */
835 /* 00 */ V(4, 5, 2), /* 92 */
836 /* 01 */ V(5, 4, 2),
837 /* 10 */ V(3, 5, 2),
838 /* 11 */ V(5, 3, 2),
839
840 /* 0000 0111 ... */
841 /* 0 */ V(6, 4, 1), /* 96 */
842 /* 1 */ V(0, 7, 1),
843
844 /* 0000 1111 ... */
845 /* 0 */ V(4, 4, 1), /* 98 */
846 /* 1 */ V(2, 5, 1),
847
848 /* 0001 0000 ... */
849 /* 0 */ V(5, 2, 1), /* 100 */
850 /* 1 */ V(0, 5, 1),
851
852 /* 0001 1101 ... */
853 /* 0 */ V(4, 3, 1), /* 102 */
854 /* 1 */ V(3, 3, 1)
855};
856
857static
858union huffpair const hufftab12[] ICONST_ATTR_MPA_HUFFMAN = {
859 /* 0000 */ PTR(16, 4),
860 /* 0001 */ PTR(32, 4),
861 /* 0010 */ PTR(48, 4),
862 /* 0011 */ PTR(64, 2),
863 /* 0100 */ PTR(68, 3),
864 /* 0101 */ PTR(76, 1),
865 /* 0110 */ V(1, 2, 4),
866 /* 0111 */ V(2, 1, 4),
867 /* 1000 */ PTR(78, 1),
868 /* 1001 */ V(0, 0, 4),
869 /* 1010 */ V(1, 1, 3),
870 /* 1011 */ V(1, 1, 3),
871 /* 1100 */ V(0, 1, 3),
872 /* 1101 */ V(0, 1, 3),
873 /* 1110 */ V(1, 0, 3),
874 /* 1111 */ V(1, 0, 3),
875
876 /* 0000 ... */
877 /* 0000 */ PTR(80, 2), /* 16 */
878 /* 0001 */ PTR(84, 1),
879 /* 0010 */ PTR(86, 1),
880 /* 0011 */ PTR(88, 1),
881 /* 0100 */ V(5, 6, 4),
882 /* 0101 */ V(3, 7, 4),
883 /* 0110 */ PTR(90, 1),
884 /* 0111 */ V(2, 7, 4),
885 /* 1000 */ V(7, 2, 4),
886 /* 1001 */ V(4, 6, 4),
887 /* 1010 */ V(6, 4, 4),
888 /* 1011 */ V(1, 7, 4),
889 /* 1100 */ V(7, 1, 4),
890 /* 1101 */ PTR(92, 1),
891 /* 1110 */ V(3, 6, 4),
892 /* 1111 */ V(6, 3, 4),
893
894 /* 0001 ... */
895 /* 0000 */ V(4, 5, 4), /* 32 */
896 /* 0001 */ V(5, 4, 4),
897 /* 0010 */ V(4, 4, 4),
898 /* 0011 */ PTR(94, 1),
899 /* 0100 */ V(2, 6, 3),
900 /* 0101 */ V(2, 6, 3),
901 /* 0110 */ V(6, 2, 3),
902 /* 0111 */ V(6, 2, 3),
903 /* 1000 */ V(6, 1, 3),
904 /* 1001 */ V(6, 1, 3),
905 /* 1010 */ V(1, 6, 4),
906 /* 1011 */ V(6, 0, 4),
907 /* 1100 */ V(3, 5, 4),
908 /* 1101 */ V(5, 3, 4),
909 /* 1110 */ V(2, 5, 4),
910 /* 1111 */ V(5, 2, 4),
911
912 /* 0010 ... */
913 /* 0000 */ V(1, 5, 3), /* 48 */
914 /* 0001 */ V(1, 5, 3),
915 /* 0010 */ V(5, 1, 3),
916 /* 0011 */ V(5, 1, 3),
917 /* 0100 */ V(3, 4, 3),
918 /* 0101 */ V(3, 4, 3),
919 /* 0110 */ V(4, 3, 3),
920 /* 0111 */ V(4, 3, 3),
921 /* 1000 */ V(5, 0, 4),
922 /* 1001 */ V(0, 4, 4),
923 /* 1010 */ V(2, 4, 3),
924 /* 1011 */ V(2, 4, 3),
925 /* 1100 */ V(4, 2, 3),
926 /* 1101 */ V(4, 2, 3),
927 /* 1110 */ V(1, 4, 3),
928 /* 1111 */ V(1, 4, 3),
929
930 /* 0011 ... */
931 /* 00 */ V(3, 3, 2), /* 64 */
932 /* 01 */ V(4, 1, 2),
933 /* 10 */ V(2, 3, 2),
934 /* 11 */ V(3, 2, 2),
935
936 /* 0100 ... */
937 /* 000 */ V(4, 0, 3), /* 68 */
938 /* 001 */ V(0, 3, 3),
939 /* 010 */ V(3, 0, 2),
940 /* 011 */ V(3, 0, 2),
941 /* 100 */ V(1, 3, 1),
942 /* 101 */ V(1, 3, 1),
943 /* 110 */ V(1, 3, 1),
944 /* 111 */ V(1, 3, 1),
945
946 /* 0101 ... */
947 /* 0 */ V(3, 1, 1), /* 76 */
948 /* 1 */ V(2, 2, 1),
949
950 /* 1000 ... */
951 /* 0 */ V(0, 2, 1), /* 78 */
952 /* 1 */ V(2, 0, 1),
953
954 /* 0000 0000 ... */
955 /* 00 */ V(7, 7, 2), /* 80 */
956 /* 01 */ V(6, 7, 2),
957 /* 10 */ V(7, 6, 1),
958 /* 11 */ V(7, 6, 1),
959
960 /* 0000 0001 ... */
961 /* 0 */ V(5, 7, 1), /* 84 */
962 /* 1 */ V(7, 5, 1),
963
964 /* 0000 0010 ... */
965 /* 0 */ V(6, 6, 1), /* 86 */
966 /* 1 */ V(4, 7, 1),
967
968 /* 0000 0011 ... */
969 /* 0 */ V(7, 4, 1), /* 88 */
970 /* 1 */ V(6, 5, 1),
971
972 /* 0000 0110 ... */
973 /* 0 */ V(7, 3, 1), /* 90 */
974 /* 1 */ V(5, 5, 1),
975
976 /* 0000 1101 ... */
977 /* 0 */ V(0, 7, 1), /* 92 */
978 /* 1 */ V(7, 0, 1),
979
980 /* 0001 0011 ... */
981 /* 0 */ V(0, 6, 1), /* 94 */
982 /* 1 */ V(0, 5, 1)
983};
984
985static
986union huffpair const hufftab13[] ICONST_ATTR_MPA_HUFFMAN = {
987 /* 0000 */ PTR(16, 4),
988 /* 0001 */ PTR(32, 4),
989 /* 0010 */ PTR(48, 4),
990 /* 0011 */ PTR(64, 2),
991 /* 0100 */ V(1, 1, 4),
992 /* 0101 */ V(0, 1, 4),
993 /* 0110 */ V(1, 0, 3),
994 /* 0111 */ V(1, 0, 3),
995 /* 1000 */ V(0, 0, 1),
996 /* 1001 */ V(0, 0, 1),
997 /* 1010 */ V(0, 0, 1),
998 /* 1011 */ V(0, 0, 1),
999 /* 1100 */ V(0, 0, 1),
1000 /* 1101 */ V(0, 0, 1),
1001 /* 1110 */ V(0, 0, 1),
1002 /* 1111 */ V(0, 0, 1),
1003
1004 /* 0000 ... */
1005 /* 0000 */ PTR(68, 4), /* 16 */
1006 /* 0001 */ PTR(84, 4),
1007 /* 0010 */ PTR(100, 4),
1008 /* 0011 */ PTR(116, 4),
1009 /* 0100 */ PTR(132, 4),
1010 /* 0101 */ PTR(148, 4),
1011 /* 0110 */ PTR(164, 3),
1012 /* 0111 */ PTR(172, 3),
1013 /* 1000 */ PTR(180, 3),
1014 /* 1001 */ PTR(188, 3),
1015 /* 1010 */ PTR(196, 3),
1016 /* 1011 */ PTR(204, 3),
1017 /* 1100 */ PTR(212, 1),
1018 /* 1101 */ PTR(214, 2),
1019 /* 1110 */ PTR(218, 3),
1020 /* 1111 */ PTR(226, 1),
1021
1022 /* 0001 ... */
1023 /* 0000 */ PTR(228, 2), /* 32 */
1024 /* 0001 */ PTR(232, 2),
1025 /* 0010 */ PTR(236, 2),
1026 /* 0011 */ PTR(240, 2),
1027 /* 0100 */ V(8, 1, 4),
1028 /* 0101 */ PTR(244, 1),
1029 /* 0110 */ PTR(246, 1),
1030 /* 0111 */ PTR(248, 1),
1031 /* 1000 */ PTR(250, 2),
1032 /* 1001 */ PTR(254, 1),
1033 /* 1010 */ V(1, 5, 4),
1034 /* 1011 */ V(5, 1, 4),
1035 /* 1100 */ PTR(256, 1),
1036 /* 1101 */ PTR(258, 1),
1037 /* 1110 */ PTR(260, 1),
1038 /* 1111 */ V(1, 4, 4),
1039
1040 /* 0010 ... */
1041 /* 0000 */ V(4, 1, 3), /* 48 */
1042 /* 0001 */ V(4, 1, 3),
1043 /* 0010 */ V(0, 4, 4),
1044 /* 0011 */ V(4, 0, 4),
1045 /* 0100 */ V(2, 3, 4),
1046 /* 0101 */ V(3, 2, 4),
1047 /* 0110 */ V(1, 3, 3),
1048 /* 0111 */ V(1, 3, 3),
1049 /* 1000 */ V(3, 1, 3),
1050 /* 1001 */ V(3, 1, 3),
1051 /* 1010 */ V(0, 3, 3),
1052 /* 1011 */ V(0, 3, 3),
1053 /* 1100 */ V(3, 0, 3),
1054 /* 1101 */ V(3, 0, 3),
1055 /* 1110 */ V(2, 2, 3),
1056 /* 1111 */ V(2, 2, 3),
1057
1058 /* 0011 ... */
1059 /* 00 */ V(1, 2, 2), /* 64 */
1060 /* 01 */ V(2, 1, 2),
1061 /* 10 */ V(0, 2, 2),
1062 /* 11 */ V(2, 0, 2),
1063
1064 /* 0000 0000 ... */
1065 /* 0000 */ PTR(262, 4), /* 68 */
1066 /* 0001 */ PTR(278, 4),
1067 /* 0010 */ PTR(294, 4),
1068 /* 0011 */ PTR(310, 3),
1069 /* 0100 */ PTR(318, 2),
1070 /* 0101 */ PTR(322, 2),
1071 /* 0110 */ PTR(326, 3),
1072 /* 0111 */ PTR(334, 2),
1073 /* 1000 */ PTR(338, 1),
1074 /* 1001 */ PTR(340, 2),
1075 /* 1010 */ PTR(344, 2),
1076 /* 1011 */ PTR(348, 2),
1077 /* 1100 */ PTR(352, 2),
1078 /* 1101 */ PTR(356, 2),
1079 /* 1110 */ V(1, 15, 4),
1080 /* 1111 */ V(15, 1, 4),
1081
1082 /* 0000 0001 ... */
1083 /* 0000 */ V(15, 0, 4), /* 84 */
1084 /* 0001 */ PTR(360, 1),
1085 /* 0010 */ PTR(362, 1),
1086 /* 0011 */ PTR(364, 1),
1087 /* 0100 */ V(14, 2, 4),
1088 /* 0101 */ PTR(366, 1),
1089 /* 0110 */ V(1, 14, 4),
1090 /* 0111 */ V(14, 1, 4),
1091 /* 1000 */ PTR(368, 1),
1092 /* 1001 */ PTR(370, 1),
1093 /* 1010 */ PTR(372, 1),
1094 /* 1011 */ PTR(374, 1),
1095 /* 1100 */ PTR(376, 1),
1096 /* 1101 */ PTR(378, 1),
1097 /* 1110 */ V(12, 6, 4),
1098 /* 1111 */ V(3, 13, 4),
1099
1100 /* 0000 0010 ... */
1101 /* 0000 */ PTR(380, 1), /* 100 */
1102 /* 0001 */ V(2, 13, 4),
1103 /* 0010 */ V(13, 2, 4),
1104 /* 0011 */ V(1, 13, 4),
1105 /* 0100 */ V(11, 7, 4),
1106 /* 0101 */ PTR(382, 1),
1107 /* 0110 */ PTR(384, 1),
1108 /* 0111 */ V(12, 3, 4),
1109 /* 1000 */ PTR(386, 1),
1110 /* 1001 */ V(4, 11, 4),
1111 /* 1010 */ V(13, 1, 3),
1112 /* 1011 */ V(13, 1, 3),
1113 /* 1100 */ V(0, 13, 4),
1114 /* 1101 */ V(13, 0, 4),
1115 /* 1110 */ V(8, 10, 4),
1116 /* 1111 */ V(10, 8, 4),
1117
1118 /* 0000 0011 ... */
1119 /* 0000 */ V(4, 12, 4), /* 116 */
1120 /* 0001 */ V(12, 4, 4),
1121 /* 0010 */ V(6, 11, 4),
1122 /* 0011 */ V(11, 6, 4),
1123 /* 0100 */ V(3, 12, 3),
1124 /* 0101 */ V(3, 12, 3),
1125 /* 0110 */ V(2, 12, 3),
1126 /* 0111 */ V(2, 12, 3),
1127 /* 1000 */ V(12, 2, 3),
1128 /* 1001 */ V(12, 2, 3),
1129 /* 1010 */ V(5, 11, 3),
1130 /* 1011 */ V(5, 11, 3),
1131 /* 1100 */ V(11, 5, 4),
1132 /* 1101 */ V(8, 9, 4),
1133 /* 1110 */ V(1, 12, 3),
1134 /* 1111 */ V(1, 12, 3),
1135
1136 /* 0000 0100 ... */
1137 /* 0000 */ V(12, 1, 3), /* 132 */
1138 /* 0001 */ V(12, 1, 3),
1139 /* 0010 */ V(9, 8, 4),
1140 /* 0011 */ V(0, 12, 4),
1141 /* 0100 */ V(12, 0, 3),
1142 /* 0101 */ V(12, 0, 3),
1143 /* 0110 */ V(11, 4, 4),
1144 /* 0111 */ V(6, 10, 4),
1145 /* 1000 */ V(10, 6, 4),
1146 /* 1001 */ V(7, 9, 4),
1147 /* 1010 */ V(3, 11, 3),
1148 /* 1011 */ V(3, 11, 3),
1149 /* 1100 */ V(11, 3, 3),
1150 /* 1101 */ V(11, 3, 3),
1151 /* 1110 */ V(8, 8, 4),
1152 /* 1111 */ V(5, 10, 4),
1153
1154 /* 0000 0101 ... */
1155 /* 0000 */ V(2, 11, 3), /* 148 */
1156 /* 0001 */ V(2, 11, 3),
1157 /* 0010 */ V(10, 5, 4),
1158 /* 0011 */ V(6, 9, 4),
1159 /* 0100 */ V(10, 4, 3),
1160 /* 0101 */ V(10, 4, 3),
1161 /* 0110 */ V(7, 8, 4),
1162 /* 0111 */ V(8, 7, 4),
1163 /* 1000 */ V(9, 4, 3),
1164 /* 1001 */ V(9, 4, 3),
1165 /* 1010 */ V(7, 7, 4),
1166 /* 1011 */ V(7, 6, 4),
1167 /* 1100 */ V(11, 2, 2),
1168 /* 1101 */ V(11, 2, 2),
1169 /* 1110 */ V(11, 2, 2),
1170 /* 1111 */ V(11, 2, 2),
1171
1172 /* 0000 0110 ... */
1173 /* 000 */ V(1, 11, 2), /* 164 */
1174 /* 001 */ V(1, 11, 2),
1175 /* 010 */ V(11, 1, 2),
1176 /* 011 */ V(11, 1, 2),
1177 /* 100 */ V(0, 11, 3),
1178 /* 101 */ V(11, 0, 3),
1179 /* 110 */ V(9, 6, 3),
1180 /* 111 */ V(4, 10, 3),
1181
1182 /* 0000 0111 ... */
1183 /* 000 */ V(3, 10, 3), /* 172 */
1184 /* 001 */ V(10, 3, 3),
1185 /* 010 */ V(5, 9, 3),
1186 /* 011 */ V(9, 5, 3),
1187 /* 100 */ V(2, 10, 2),
1188 /* 101 */ V(2, 10, 2),
1189 /* 110 */ V(10, 2, 2),
1190 /* 111 */ V(10, 2, 2),
1191
1192 /* 0000 1000 ... */
1193 /* 000 */ V(1, 10, 2), /* 180 */
1194 /* 001 */ V(1, 10, 2),
1195 /* 010 */ V(10, 1, 2),
1196 /* 011 */ V(10, 1, 2),
1197 /* 100 */ V(0, 10, 3),
1198 /* 101 */ V(6, 8, 3),
1199 /* 110 */ V(10, 0, 2),
1200 /* 111 */ V(10, 0, 2),
1201
1202 /* 0000 1001 ... */
1203 /* 000 */ V(8, 6, 3), /* 188 */
1204 /* 001 */ V(4, 9, 3),
1205 /* 010 */ V(9, 3, 2),
1206 /* 011 */ V(9, 3, 2),
1207 /* 100 */ V(3, 9, 3),
1208 /* 101 */ V(5, 8, 3),
1209 /* 110 */ V(8, 5, 3),
1210 /* 111 */ V(6, 7, 3),
1211
1212 /* 0000 1010 ... */
1213 /* 000 */ V(2, 9, 2), /* 196 */
1214 /* 001 */ V(2, 9, 2),
1215 /* 010 */ V(9, 2, 2),
1216 /* 011 */ V(9, 2, 2),
1217 /* 100 */ V(5, 7, 3),
1218 /* 101 */ V(7, 5, 3),
1219 /* 110 */ V(3, 8, 2),
1220 /* 111 */ V(3, 8, 2),
1221
1222 /* 0000 1011 ... */
1223 /* 000 */ V(8, 3, 2), /* 204 */
1224 /* 001 */ V(8, 3, 2),
1225 /* 010 */ V(6, 6, 3),
1226 /* 011 */ V(4, 7, 3),
1227 /* 100 */ V(7, 4, 3),
1228 /* 101 */ V(5, 6, 3),
1229 /* 110 */ V(6, 5, 3),
1230 /* 111 */ V(7, 3, 3),
1231
1232 /* 0000 1100 ... */
1233 /* 0 */ V(1, 9, 1), /* 212 */
1234 /* 1 */ V(9, 1, 1),
1235
1236 /* 0000 1101 ... */
1237 /* 00 */ V(0, 9, 2), /* 214 */
1238 /* 01 */ V(9, 0, 2),
1239 /* 10 */ V(4, 8, 2),
1240 /* 11 */ V(8, 4, 2),
1241
1242 /* 0000 1110 ... */
1243 /* 000 */ V(7, 2, 2), /* 218 */
1244 /* 001 */ V(7, 2, 2),
1245 /* 010 */ V(4, 6, 3),
1246 /* 011 */ V(6, 4, 3),
1247 /* 100 */ V(2, 8, 1),
1248 /* 101 */ V(2, 8, 1),
1249 /* 110 */ V(2, 8, 1),
1250 /* 111 */ V(2, 8, 1),
1251
1252 /* 0000 1111 ... */
1253 /* 0 */ V(8, 2, 1), /* 226 */
1254 /* 1 */ V(1, 8, 1),
1255
1256 /* 0001 0000 ... */
1257 /* 00 */ V(3, 7, 2), /* 228 */
1258 /* 01 */ V(2, 7, 2),
1259 /* 10 */ V(1, 7, 1),
1260 /* 11 */ V(1, 7, 1),
1261
1262 /* 0001 0001 ... */
1263 /* 00 */ V(7, 1, 1), /* 232 */
1264 /* 01 */ V(7, 1, 1),
1265 /* 10 */ V(5, 5, 2),
1266 /* 11 */ V(0, 7, 2),
1267
1268 /* 0001 0010 ... */
1269 /* 00 */ V(7, 0, 2), /* 236 */
1270 /* 01 */ V(3, 6, 2),
1271 /* 10 */ V(6, 3, 2),
1272 /* 11 */ V(4, 5, 2),
1273
1274 /* 0001 0011 ... */
1275 /* 00 */ V(5, 4, 2), /* 240 */
1276 /* 01 */ V(2, 6, 2),
1277 /* 10 */ V(6, 2, 2),
1278 /* 11 */ V(3, 5, 2),
1279
1280 /* 0001 0101 ... */
1281 /* 0 */ V(0, 8, 1), /* 244 */
1282 /* 1 */ V(8, 0, 1),
1283
1284 /* 0001 0110 ... */
1285 /* 0 */ V(1, 6, 1), /* 246 */
1286 /* 1 */ V(6, 1, 1),
1287
1288 /* 0001 0111 ... */
1289 /* 0 */ V(0, 6, 1), /* 248 */
1290 /* 1 */ V(6, 0, 1),
1291
1292 /* 0001 1000 ... */
1293 /* 00 */ V(5, 3, 2), /* 250 */
1294 /* 01 */ V(4, 4, 2),
1295 /* 10 */ V(2, 5, 1),
1296 /* 11 */ V(2, 5, 1),
1297
1298 /* 0001 1001 ... */
1299 /* 0 */ V(5, 2, 1), /* 254 */
1300 /* 1 */ V(0, 5, 1),
1301
1302 /* 0001 1100 ... */
1303 /* 0 */ V(3, 4, 1), /* 256 */
1304 /* 1 */ V(4, 3, 1),
1305
1306 /* 0001 1101 ... */
1307 /* 0 */ V(5, 0, 1), /* 258 */
1308 /* 1 */ V(2, 4, 1),
1309
1310 /* 0001 1110 ... */
1311 /* 0 */ V(4, 2, 1), /* 260 */
1312 /* 1 */ V(3, 3, 1),
1313
1314 /* 0000 0000 0000 ... */
1315 /* 0000 */ PTR(388, 3), /* 262 */
1316 /* 0001 */ V(15, 15, 4),
1317 /* 0010 */ V(14, 15, 4),
1318 /* 0011 */ V(13, 15, 4),
1319 /* 0100 */ V(14, 14, 4),
1320 /* 0101 */ V(12, 15, 4),
1321 /* 0110 */ V(13, 14, 4),
1322 /* 0111 */ V(11, 15, 4),
1323 /* 1000 */ V(15, 11, 4),
1324 /* 1001 */ V(12, 14, 4),
1325 /* 1010 */ V(13, 12, 4),
1326 /* 1011 */ PTR(396, 1),
1327 /* 1100 */ V(14, 12, 3),
1328 /* 1101 */ V(14, 12, 3),
1329 /* 1110 */ V(13, 13, 3),
1330 /* 1111 */ V(13, 13, 3),
1331
1332 /* 0000 0000 0001 ... */
1333 /* 0000 */ V(15, 10, 4), /* 278 */
1334 /* 0001 */ V(12, 13, 4),
1335 /* 0010 */ V(11, 14, 3),
1336 /* 0011 */ V(11, 14, 3),
1337 /* 0100 */ V(14, 11, 3),
1338 /* 0101 */ V(14, 11, 3),
1339 /* 0110 */ V(9, 15, 3),
1340 /* 0111 */ V(9, 15, 3),
1341 /* 1000 */ V(15, 9, 3),
1342 /* 1001 */ V(15, 9, 3),
1343 /* 1010 */ V(14, 10, 3),
1344 /* 1011 */ V(14, 10, 3),
1345 /* 1100 */ V(11, 13, 3),
1346 /* 1101 */ V(11, 13, 3),
1347 /* 1110 */ V(13, 11, 3),
1348 /* 1111 */ V(13, 11, 3),
1349
1350 /* 0000 0000 0010 ... */
1351 /* 0000 */ V(8, 15, 3), /* 294 */
1352 /* 0001 */ V(8, 15, 3),
1353 /* 0010 */ V(15, 8, 3),
1354 /* 0011 */ V(15, 8, 3),
1355 /* 0100 */ V(12, 12, 3),
1356 /* 0101 */ V(12, 12, 3),
1357 /* 0110 */ V(10, 14, 4),
1358 /* 0111 */ V(9, 14, 4),
1359 /* 1000 */ V(8, 14, 3),
1360 /* 1001 */ V(8, 14, 3),
1361 /* 1010 */ V(7, 15, 4),
1362 /* 1011 */ V(7, 14, 4),
1363 /* 1100 */ V(15, 7, 2),
1364 /* 1101 */ V(15, 7, 2),
1365 /* 1110 */ V(15, 7, 2),
1366 /* 1111 */ V(15, 7, 2),
1367
1368 /* 0000 0000 0011 ... */
1369 /* 000 */ V(13, 10, 2), /* 310 */
1370 /* 001 */ V(13, 10, 2),
1371 /* 010 */ V(10, 13, 3),
1372 /* 011 */ V(11, 12, 3),
1373 /* 100 */ V(12, 11, 3),
1374 /* 101 */ V(15, 6, 3),
1375 /* 110 */ V(6, 15, 2),
1376 /* 111 */ V(6, 15, 2),
1377
1378 /* 0000 0000 0100 ... */
1379 /* 00 */ V(14, 8, 2), /* 318 */
1380 /* 01 */ V(5, 15, 2),
1381 /* 10 */ V(9, 13, 2),
1382 /* 11 */ V(13, 9, 2),
1383
1384 /* 0000 0000 0101 ... */
1385 /* 00 */ V(15, 5, 2), /* 322 */
1386 /* 01 */ V(14, 7, 2),
1387 /* 10 */ V(10, 12, 2),
1388 /* 11 */ V(11, 11, 2),
1389
1390 /* 0000 0000 0110 ... */
1391 /* 000 */ V(4, 15, 2), /* 326 */
1392 /* 001 */ V(4, 15, 2),
1393 /* 010 */ V(15, 4, 2),
1394 /* 011 */ V(15, 4, 2),
1395 /* 100 */ V(12, 10, 3),
1396 /* 101 */ V(14, 6, 3),
1397 /* 110 */ V(15, 3, 2),
1398 /* 111 */ V(15, 3, 2),
1399
1400 /* 0000 0000 0111 ... */
1401 /* 00 */ V(3, 15, 1), /* 334 */
1402 /* 01 */ V(3, 15, 1),
1403 /* 10 */ V(8, 13, 2),
1404 /* 11 */ V(13, 8, 2),
1405
1406 /* 0000 0000 1000 ... */
1407 /* 0 */ V(2, 15, 1), /* 338 */
1408 /* 1 */ V(15, 2, 1),
1409
1410 /* 0000 0000 1001 ... */
1411 /* 00 */ V(6, 14, 2), /* 340 */
1412 /* 01 */ V(9, 12, 2),
1413 /* 10 */ V(0, 15, 1),
1414 /* 11 */ V(0, 15, 1),
1415
1416 /* 0000 0000 1010 ... */
1417 /* 00 */ V(12, 9, 2), /* 344 */
1418 /* 01 */ V(5, 14, 2),
1419 /* 10 */ V(10, 11, 1),
1420 /* 11 */ V(10, 11, 1),
1421
1422 /* 0000 0000 1011 ... */
1423 /* 00 */ V(7, 13, 2), /* 348 */
1424 /* 01 */ V(13, 7, 2),
1425 /* 10 */ V(4, 14, 1),
1426 /* 11 */ V(4, 14, 1),
1427
1428 /* 0000 0000 1100 ... */
1429 /* 00 */ V(12, 8, 2), /* 352 */
1430 /* 01 */ V(13, 6, 2),
1431 /* 10 */ V(3, 14, 1),
1432 /* 11 */ V(3, 14, 1),
1433
1434 /* 0000 0000 1101 ... */
1435 /* 00 */ V(11, 9, 1), /* 356 */
1436 /* 01 */ V(11, 9, 1),
1437 /* 10 */ V(9, 11, 2),
1438 /* 11 */ V(10, 10, 2),
1439
1440 /* 0000 0001 0001 ... */
1441 /* 0 */ V(11, 10, 1), /* 360 */
1442 /* 1 */ V(14, 5, 1),
1443
1444 /* 0000 0001 0010 ... */
1445 /* 0 */ V(14, 4, 1), /* 362 */
1446 /* 1 */ V(8, 12, 1),
1447
1448 /* 0000 0001 0011 ... */
1449 /* 0 */ V(6, 13, 1), /* 364 */
1450 /* 1 */ V(14, 3, 1),
1451
1452 /* 0000 0001 0101 ... */
1453 /* 0 */ V(2, 14, 1), /* 366 */
1454 /* 1 */ V(0, 14, 1),
1455
1456 /* 0000 0001 1000 ... */
1457 /* 0 */ V(14, 0, 1), /* 368 */
1458 /* 1 */ V(5, 13, 1),
1459
1460 /* 0000 0001 1001 ... */
1461 /* 0 */ V(13, 5, 1), /* 370 */
1462 /* 1 */ V(7, 12, 1),
1463
1464 /* 0000 0001 1010 ... */
1465 /* 0 */ V(12, 7, 1), /* 372 */
1466 /* 1 */ V(4, 13, 1),
1467
1468 /* 0000 0001 1011 ... */
1469 /* 0 */ V(8, 11, 1), /* 374 */
1470 /* 1 */ V(11, 8, 1),
1471
1472 /* 0000 0001 1100 ... */
1473 /* 0 */ V(13, 4, 1), /* 376 */
1474 /* 1 */ V(9, 10, 1),
1475
1476 /* 0000 0001 1101 ... */
1477 /* 0 */ V(10, 9, 1), /* 378 */
1478 /* 1 */ V(6, 12, 1),
1479
1480 /* 0000 0010 0000 ... */
1481 /* 0 */ V(13, 3, 1), /* 380 */
1482 /* 1 */ V(7, 11, 1),
1483
1484 /* 0000 0010 0101 ... */
1485 /* 0 */ V(5, 12, 1), /* 382 */
1486 /* 1 */ V(12, 5, 1),
1487
1488 /* 0000 0010 0110 ... */
1489 /* 0 */ V(9, 9, 1), /* 384 */
1490 /* 1 */ V(7, 10, 1),
1491
1492 /* 0000 0010 1000 ... */
1493 /* 0 */ V(10, 7, 1), /* 386 */
1494 /* 1 */ V(9, 7, 1),
1495
1496 /* 0000 0000 0000 0000 ... */
1497 /* 000 */ V(15, 14, 3), /* 388 */
1498 /* 001 */ V(15, 12, 3),
1499 /* 010 */ V(15, 13, 2),
1500 /* 011 */ V(15, 13, 2),
1501 /* 100 */ V(14, 13, 1),
1502 /* 101 */ V(14, 13, 1),
1503 /* 110 */ V(14, 13, 1),
1504 /* 111 */ V(14, 13, 1),
1505
1506 /* 0000 0000 0000 1011 ... */
1507 /* 0 */ V(10, 15, 1), /* 396 */
1508 /* 1 */ V(14, 9, 1)
1509};
1510
1511static
1512union huffpair const hufftab15[] ICONST_ATTR_MPA_HUFFMAN = {
1513 /* 0000 */ PTR(16, 4),
1514 /* 0001 */ PTR(32, 4),
1515 /* 0010 */ PTR(48, 4),
1516 /* 0011 */ PTR(64, 4),
1517 /* 0100 */ PTR(80, 4),
1518 /* 0101 */ PTR(96, 3),
1519 /* 0110 */ PTR(104, 3),
1520 /* 0111 */ PTR(112, 2),
1521 /* 1000 */ PTR(116, 1),
1522 /* 1001 */ PTR(118, 1),
1523 /* 1010 */ V(1, 1, 3),
1524 /* 1011 */ V(1, 1, 3),
1525 /* 1100 */ V(0, 1, 4),
1526 /* 1101 */ V(1, 0, 4),
1527 /* 1110 */ V(0, 0, 3),
1528 /* 1111 */ V(0, 0, 3),
1529
1530 /* 0000 ... */
1531 /* 0000 */ PTR(120, 4), /* 16 */
1532 /* 0001 */ PTR(136, 4),
1533 /* 0010 */ PTR(152, 4),
1534 /* 0011 */ PTR(168, 4),
1535 /* 0100 */ PTR(184, 4),
1536 /* 0101 */ PTR(200, 3),
1537 /* 0110 */ PTR(208, 3),
1538 /* 0111 */ PTR(216, 4),
1539 /* 1000 */ PTR(232, 3),
1540 /* 1001 */ PTR(240, 3),
1541 /* 1010 */ PTR(248, 3),
1542 /* 1011 */ PTR(256, 3),
1543 /* 1100 */ PTR(264, 2),
1544 /* 1101 */ PTR(268, 3),
1545 /* 1110 */ PTR(276, 3),
1546 /* 1111 */ PTR(284, 2),
1547
1548 /* 0001 ... */
1549 /* 0000 */ PTR(288, 2), /* 32 */
1550 /* 0001 */ PTR(292, 2),
1551 /* 0010 */ PTR(296, 2),
1552 /* 0011 */ PTR(300, 2),
1553 /* 0100 */ PTR(304, 2),
1554 /* 0101 */ PTR(308, 2),
1555 /* 0110 */ PTR(312, 2),
1556 /* 0111 */ PTR(316, 2),
1557 /* 1000 */ PTR(320, 1),
1558 /* 1001 */ PTR(322, 1),
1559 /* 1010 */ PTR(324, 1),
1560 /* 1011 */ PTR(326, 2),
1561 /* 1100 */ PTR(330, 1),
1562 /* 1101 */ PTR(332, 1),
1563 /* 1110 */ PTR(334, 2),
1564 /* 1111 */ PTR(338, 1),
1565
1566 /* 0010 ... */
1567 /* 0000 */ PTR(340, 1), /* 48 */
1568 /* 0001 */ PTR(342, 1),
1569 /* 0010 */ V(9, 1, 4),
1570 /* 0011 */ PTR(344, 1),
1571 /* 0100 */ PTR(346, 1),
1572 /* 0101 */ PTR(348, 1),
1573 /* 0110 */ PTR(350, 1),
1574 /* 0111 */ PTR(352, 1),
1575 /* 1000 */ V(2, 8, 4),
1576 /* 1001 */ V(8, 2, 4),
1577 /* 1010 */ V(1, 8, 4),
1578 /* 1011 */ V(8, 1, 4),
1579 /* 1100 */ PTR(354, 1),
1580 /* 1101 */ PTR(356, 1),
1581 /* 1110 */ PTR(358, 1),
1582 /* 1111 */ PTR(360, 1),
1583
1584 /* 0011 ... */
1585 /* 0000 */ V(2, 7, 4), /* 64 */
1586 /* 0001 */ V(7, 2, 4),
1587 /* 0010 */ V(6, 4, 4),
1588 /* 0011 */ V(1, 7, 4),
1589 /* 0100 */ V(5, 5, 4),
1590 /* 0101 */ V(7, 1, 4),
1591 /* 0110 */ PTR(362, 1),
1592 /* 0111 */ V(3, 6, 4),
1593 /* 1000 */ V(6, 3, 4),
1594 /* 1001 */ V(4, 5, 4),
1595 /* 1010 */ V(5, 4, 4),
1596 /* 1011 */ V(2, 6, 4),
1597 /* 1100 */ V(6, 2, 4),
1598 /* 1101 */ V(1, 6, 4),
1599 /* 1110 */ PTR(364, 1),
1600 /* 1111 */ V(3, 5, 4),
1601
1602 /* 0100 ... */
1603 /* 0000 */ V(6, 1, 3), /* 80 */
1604 /* 0001 */ V(6, 1, 3),
1605 /* 0010 */ V(5, 3, 4),
1606 /* 0011 */ V(4, 4, 4),
1607 /* 0100 */ V(2, 5, 3),
1608 /* 0101 */ V(2, 5, 3),
1609 /* 0110 */ V(5, 2, 3),
1610 /* 0111 */ V(5, 2, 3),
1611 /* 1000 */ V(1, 5, 3),
1612 /* 1001 */ V(1, 5, 3),
1613 /* 1010 */ V(5, 1, 3),
1614 /* 1011 */ V(5, 1, 3),
1615 /* 1100 */ V(0, 5, 4),
1616 /* 1101 */ V(5, 0, 4),
1617 /* 1110 */ V(3, 4, 3),
1618 /* 1111 */ V(3, 4, 3),
1619
1620 /* 0101 ... */
1621 /* 000 */ V(4, 3, 3), /* 96 */
1622 /* 001 */ V(2, 4, 3),
1623 /* 010 */ V(4, 2, 3),
1624 /* 011 */ V(3, 3, 3),
1625 /* 100 */ V(4, 1, 2),
1626 /* 101 */ V(4, 1, 2),
1627 /* 110 */ V(1, 4, 3),
1628 /* 111 */ V(0, 4, 3),
1629
1630 /* 0110 ... */
1631 /* 000 */ V(2, 3, 2), /* 104 */
1632 /* 001 */ V(2, 3, 2),
1633 /* 010 */ V(3, 2, 2),
1634 /* 011 */ V(3, 2, 2),
1635 /* 100 */ V(4, 0, 3),
1636 /* 101 */ V(0, 3, 3),
1637 /* 110 */ V(1, 3, 2),
1638 /* 111 */ V(1, 3, 2),
1639
1640 /* 0111 ... */
1641 /* 00 */ V(3, 1, 2), /* 112 */
1642 /* 01 */ V(3, 0, 2),
1643 /* 10 */ V(2, 2, 1),
1644 /* 11 */ V(2, 2, 1),
1645
1646 /* 1000 ... */
1647 /* 0 */ V(1, 2, 1), /* 116 */
1648 /* 1 */ V(2, 1, 1),
1649
1650 /* 1001 ... */
1651 /* 0 */ V(0, 2, 1), /* 118 */
1652 /* 1 */ V(2, 0, 1),
1653
1654 /* 0000 0000 ... */
1655 /* 0000 */ PTR(366, 1), /* 120 */
1656 /* 0001 */ PTR(368, 1),
1657 /* 0010 */ V(14, 14, 4),
1658 /* 0011 */ PTR(370, 1),
1659 /* 0100 */ PTR(372, 1),
1660 /* 0101 */ PTR(374, 1),
1661 /* 0110 */ V(15, 11, 4),
1662 /* 0111 */ PTR(376, 1),
1663 /* 1000 */ V(13, 13, 4),
1664 /* 1001 */ V(10, 15, 4),
1665 /* 1010 */ V(15, 10, 4),
1666 /* 1011 */ V(11, 14, 4),
1667 /* 1100 */ V(14, 11, 4),
1668 /* 1101 */ V(12, 13, 4),
1669 /* 1110 */ V(13, 12, 4),
1670 /* 1111 */ V(9, 15, 4),
1671
1672 /* 0000 0001 ... */
1673 /* 0000 */ V(15, 9, 4), /* 136 */
1674 /* 0001 */ V(14, 10, 4),
1675 /* 0010 */ V(11, 13, 4),
1676 /* 0011 */ V(13, 11, 4),
1677 /* 0100 */ V(8, 15, 4),
1678 /* 0101 */ V(15, 8, 4),
1679 /* 0110 */ V(12, 12, 4),
1680 /* 0111 */ V(9, 14, 4),
1681 /* 1000 */ V(14, 9, 4),
1682 /* 1001 */ V(7, 15, 4),
1683 /* 1010 */ V(15, 7, 4),
1684 /* 1011 */ V(10, 13, 4),
1685 /* 1100 */ V(13, 10, 4),
1686 /* 1101 */ V(11, 12, 4),
1687 /* 1110 */ V(6, 15, 4),
1688 /* 1111 */ PTR(378, 1),
1689
1690 /* 0000 0010 ... */
1691 /* 0000 */ V(12, 11, 3), /* 152 */
1692 /* 0001 */ V(12, 11, 3),
1693 /* 0010 */ V(15, 6, 3),
1694 /* 0011 */ V(15, 6, 3),
1695 /* 0100 */ V(8, 14, 4),
1696 /* 0101 */ V(14, 8, 4),
1697 /* 0110 */ V(5, 15, 4),
1698 /* 0111 */ V(9, 13, 4),
1699 /* 1000 */ V(15, 5, 3),
1700 /* 1001 */ V(15, 5, 3),
1701 /* 1010 */ V(7, 14, 3),
1702 /* 1011 */ V(7, 14, 3),
1703 /* 1100 */ V(14, 7, 3),
1704 /* 1101 */ V(14, 7, 3),
1705 /* 1110 */ V(10, 12, 3),
1706 /* 1111 */ V(10, 12, 3),
1707
1708 /* 0000 0011 ... */
1709 /* 0000 */ V(12, 10, 3), /* 168 */
1710 /* 0001 */ V(12, 10, 3),
1711 /* 0010 */ V(11, 11, 3),
1712 /* 0011 */ V(11, 11, 3),
1713 /* 0100 */ V(13, 9, 4),
1714 /* 0101 */ V(8, 13, 4),
1715 /* 0110 */ V(4, 15, 3),
1716 /* 0111 */ V(4, 15, 3),
1717 /* 1000 */ V(15, 4, 3),
1718 /* 1001 */ V(15, 4, 3),
1719 /* 1010 */ V(3, 15, 3),
1720 /* 1011 */ V(3, 15, 3),
1721 /* 1100 */ V(15, 3, 3),
1722 /* 1101 */ V(15, 3, 3),
1723 /* 1110 */ V(13, 8, 3),
1724 /* 1111 */ V(13, 8, 3),
1725
1726 /* 0000 0100 ... */
1727 /* 0000 */ V(14, 6, 3), /* 184 */
1728 /* 0001 */ V(14, 6, 3),
1729 /* 0010 */ V(2, 15, 3),
1730 /* 0011 */ V(2, 15, 3),
1731 /* 0100 */ V(15, 2, 3),
1732 /* 0101 */ V(15, 2, 3),
1733 /* 0110 */ V(6, 14, 4),
1734 /* 0111 */ V(15, 0, 4),
1735 /* 1000 */ V(1, 15, 3),
1736 /* 1001 */ V(1, 15, 3),
1737 /* 1010 */ V(15, 1, 3),
1738 /* 1011 */ V(15, 1, 3),
1739 /* 1100 */ V(9, 12, 3),
1740 /* 1101 */ V(9, 12, 3),
1741 /* 1110 */ V(12, 9, 3),
1742 /* 1111 */ V(12, 9, 3),
1743
1744 /* 0000 0101 ... */
1745 /* 000 */ V(5, 14, 3), /* 200 */
1746 /* 001 */ V(10, 11, 3),
1747 /* 010 */ V(11, 10, 3),
1748 /* 011 */ V(14, 5, 3),
1749 /* 100 */ V(7, 13, 3),
1750 /* 101 */ V(13, 7, 3),
1751 /* 110 */ V(4, 14, 3),
1752 /* 111 */ V(14, 4, 3),
1753
1754 /* 0000 0110 ... */
1755 /* 000 */ V(8, 12, 3), /* 208 */
1756 /* 001 */ V(12, 8, 3),
1757 /* 010 */ V(3, 14, 3),
1758 /* 011 */ V(6, 13, 3),
1759 /* 100 */ V(13, 6, 3),
1760 /* 101 */ V(14, 3, 3),
1761 /* 110 */ V(9, 11, 3),
1762 /* 111 */ V(11, 9, 3),
1763
1764 /* 0000 0111 ... */
1765 /* 0000 */ V(2, 14, 3), /* 216 */
1766 /* 0001 */ V(2, 14, 3),
1767 /* 0010 */ V(10, 10, 3),
1768 /* 0011 */ V(10, 10, 3),
1769 /* 0100 */ V(14, 2, 3),
1770 /* 0101 */ V(14, 2, 3),
1771 /* 0110 */ V(1, 14, 3),
1772 /* 0111 */ V(1, 14, 3),
1773 /* 1000 */ V(14, 1, 3),
1774 /* 1001 */ V(14, 1, 3),
1775 /* 1010 */ V(0, 14, 4),
1776 /* 1011 */ V(14, 0, 4),
1777 /* 1100 */ V(5, 13, 3),
1778 /* 1101 */ V(5, 13, 3),
1779 /* 1110 */ V(13, 5, 3),
1780 /* 1111 */ V(13, 5, 3),
1781
1782 /* 0000 1000 ... */
1783 /* 000 */ V(7, 12, 3), /* 232 */
1784 /* 001 */ V(12, 7, 3),
1785 /* 010 */ V(4, 13, 3),
1786 /* 011 */ V(8, 11, 3),
1787 /* 100 */ V(13, 4, 2),
1788 /* 101 */ V(13, 4, 2),
1789 /* 110 */ V(11, 8, 3),
1790 /* 111 */ V(9, 10, 3),
1791
1792 /* 0000 1001 ... */
1793 /* 000 */ V(10, 9, 3), /* 240 */
1794 /* 001 */ V(6, 12, 3),
1795 /* 010 */ V(12, 6, 3),
1796 /* 011 */ V(3, 13, 3),
1797 /* 100 */ V(13, 3, 2),
1798 /* 101 */ V(13, 3, 2),
1799 /* 110 */ V(13, 2, 2),
1800 /* 111 */ V(13, 2, 2),
1801
1802 /* 0000 1010 ... */
1803 /* 000 */ V(2, 13, 3), /* 248 */
1804 /* 001 */ V(0, 13, 3),
1805 /* 010 */ V(1, 13, 2),
1806 /* 011 */ V(1, 13, 2),
1807 /* 100 */ V(7, 11, 2),
1808 /* 101 */ V(7, 11, 2),
1809 /* 110 */ V(11, 7, 2),
1810 /* 111 */ V(11, 7, 2),
1811
1812 /* 0000 1011 ... */
1813 /* 000 */ V(13, 1, 2), /* 256 */
1814 /* 001 */ V(13, 1, 2),
1815 /* 010 */ V(5, 12, 3),
1816 /* 011 */ V(13, 0, 3),
1817 /* 100 */ V(12, 5, 2),
1818 /* 101 */ V(12, 5, 2),
1819 /* 110 */ V(8, 10, 2),
1820 /* 111 */ V(8, 10, 2),
1821
1822 /* 0000 1100 ... */
1823 /* 00 */ V(10, 8, 2), /* 264 */
1824 /* 01 */ V(4, 12, 2),
1825 /* 10 */ V(12, 4, 2),
1826 /* 11 */ V(6, 11, 2),
1827
1828 /* 0000 1101 ... */
1829 /* 000 */ V(11, 6, 2), /* 268 */
1830 /* 001 */ V(11, 6, 2),
1831 /* 010 */ V(9, 9, 3),
1832 /* 011 */ V(0, 12, 3),
1833 /* 100 */ V(3, 12, 2),
1834 /* 101 */ V(3, 12, 2),
1835 /* 110 */ V(12, 3, 2),
1836 /* 111 */ V(12, 3, 2),
1837
1838 /* 0000 1110 ... */
1839 /* 000 */ V(7, 10, 2), /* 276 */
1840 /* 001 */ V(7, 10, 2),
1841 /* 010 */ V(10, 7, 2),
1842 /* 011 */ V(10, 7, 2),
1843 /* 100 */ V(10, 6, 2),
1844 /* 101 */ V(10, 6, 2),
1845 /* 110 */ V(12, 0, 3),
1846 /* 111 */ V(0, 11, 3),
1847
1848 /* 0000 1111 ... */
1849 /* 00 */ V(12, 2, 1), /* 284 */
1850 /* 01 */ V(12, 2, 1),
1851 /* 10 */ V(2, 12, 2),
1852 /* 11 */ V(5, 11, 2),
1853
1854 /* 0001 0000 ... */
1855 /* 00 */ V(11, 5, 2), /* 288 */
1856 /* 01 */ V(1, 12, 2),
1857 /* 10 */ V(8, 9, 2),
1858 /* 11 */ V(9, 8, 2),
1859
1860 /* 0001 0001 ... */
1861 /* 00 */ V(12, 1, 2), /* 292 */
1862 /* 01 */ V(4, 11, 2),
1863 /* 10 */ V(11, 4, 2),
1864 /* 11 */ V(6, 10, 2),
1865
1866 /* 0001 0010 ... */
1867 /* 00 */ V(3, 11, 2), /* 296 */
1868 /* 01 */ V(7, 9, 2),
1869 /* 10 */ V(11, 3, 1),
1870 /* 11 */ V(11, 3, 1),
1871
1872 /* 0001 0011 ... */
1873 /* 00 */ V(9, 7, 2), /* 300 */
1874 /* 01 */ V(8, 8, 2),
1875 /* 10 */ V(2, 11, 2),
1876 /* 11 */ V(5, 10, 2),
1877
1878 /* 0001 0100 ... */
1879 /* 00 */ V(11, 2, 1), /* 304 */
1880 /* 01 */ V(11, 2, 1),
1881 /* 10 */ V(10, 5, 2),
1882 /* 11 */ V(1, 11, 2),
1883
1884 /* 0001 0101 ... */
1885 /* 00 */ V(11, 1, 1), /* 308 */
1886 /* 01 */ V(11, 1, 1),
1887 /* 10 */ V(11, 0, 2),
1888 /* 11 */ V(6, 9, 2),
1889
1890 /* 0001 0110 ... */
1891 /* 00 */ V(9, 6, 2), /* 312 */
1892 /* 01 */ V(4, 10, 2),
1893 /* 10 */ V(10, 4, 2),
1894 /* 11 */ V(7, 8, 2),
1895
1896 /* 0001 0111 ... */
1897 /* 00 */ V(8, 7, 2), /* 316 */
1898 /* 01 */ V(3, 10, 2),
1899 /* 10 */ V(10, 3, 1),
1900 /* 11 */ V(10, 3, 1),
1901
1902 /* 0001 1000 ... */
1903 /* 0 */ V(5, 9, 1), /* 320 */
1904 /* 1 */ V(9, 5, 1),
1905
1906 /* 0001 1001 ... */
1907 /* 0 */ V(2, 10, 1), /* 322 */
1908 /* 1 */ V(10, 2, 1),
1909
1910 /* 0001 1010 ... */
1911 /* 0 */ V(1, 10, 1), /* 324 */
1912 /* 1 */ V(10, 1, 1),
1913
1914 /* 0001 1011 ... */
1915 /* 00 */ V(0, 10, 2), /* 326 */
1916 /* 01 */ V(10, 0, 2),
1917 /* 10 */ V(6, 8, 1),
1918 /* 11 */ V(6, 8, 1),
1919
1920 /* 0001 1100 ... */
1921 /* 0 */ V(8, 6, 1), /* 330 */
1922 /* 1 */ V(4, 9, 1),
1923
1924 /* 0001 1101 ... */
1925 /* 0 */ V(9, 4, 1), /* 332 */
1926 /* 1 */ V(3, 9, 1),
1927
1928 /* 0001 1110 ... */
1929 /* 00 */ V(9, 3, 1), /* 334 */
1930 /* 01 */ V(9, 3, 1),
1931 /* 10 */ V(7, 7, 2),
1932 /* 11 */ V(0, 9, 2),
1933
1934 /* 0001 1111 ... */
1935 /* 0 */ V(5, 8, 1), /* 338 */
1936 /* 1 */ V(8, 5, 1),
1937
1938 /* 0010 0000 ... */
1939 /* 0 */ V(2, 9, 1), /* 340 */
1940 /* 1 */ V(6, 7, 1),
1941
1942 /* 0010 0001 ... */
1943 /* 0 */ V(7, 6, 1), /* 342 */
1944 /* 1 */ V(9, 2, 1),
1945
1946 /* 0010 0011 ... */
1947 /* 0 */ V(1, 9, 1), /* 344 */
1948 /* 1 */ V(9, 0, 1),
1949
1950 /* 0010 0100 ... */
1951 /* 0 */ V(4, 8, 1), /* 346 */
1952 /* 1 */ V(8, 4, 1),
1953
1954 /* 0010 0101 ... */
1955 /* 0 */ V(5, 7, 1), /* 348 */
1956 /* 1 */ V(7, 5, 1),
1957
1958 /* 0010 0110 ... */
1959 /* 0 */ V(3, 8, 1), /* 350 */
1960 /* 1 */ V(8, 3, 1),
1961
1962 /* 0010 0111 ... */
1963 /* 0 */ V(6, 6, 1), /* 352 */
1964 /* 1 */ V(4, 7, 1),
1965
1966 /* 0010 1100 ... */
1967 /* 0 */ V(7, 4, 1), /* 354 */
1968 /* 1 */ V(0, 8, 1),
1969
1970 /* 0010 1101 ... */
1971 /* 0 */ V(8, 0, 1), /* 356 */
1972 /* 1 */ V(5, 6, 1),
1973
1974 /* 0010 1110 ... */
1975 /* 0 */ V(6, 5, 1), /* 358 */
1976 /* 1 */ V(3, 7, 1),
1977
1978 /* 0010 1111 ... */
1979 /* 0 */ V(7, 3, 1), /* 360 */
1980 /* 1 */ V(4, 6, 1),
1981
1982 /* 0011 0110 ... */
1983 /* 0 */ V(0, 7, 1), /* 362 */
1984 /* 1 */ V(7, 0, 1),
1985
1986 /* 0011 1110 ... */
1987 /* 0 */ V(0, 6, 1), /* 364 */
1988 /* 1 */ V(6, 0, 1),
1989
1990 /* 0000 0000 0000 ... */
1991 /* 0 */ V(15, 15, 1), /* 366 */
1992 /* 1 */ V(14, 15, 1),
1993
1994 /* 0000 0000 0001 ... */
1995 /* 0 */ V(15, 14, 1), /* 368 */
1996 /* 1 */ V(13, 15, 1),
1997
1998 /* 0000 0000 0011 ... */
1999 /* 0 */ V(15, 13, 1), /* 370 */
2000 /* 1 */ V(12, 15, 1),
2001
2002 /* 0000 0000 0100 ... */
2003 /* 0 */ V(15, 12, 1), /* 372 */
2004 /* 1 */ V(13, 14, 1),
2005
2006 /* 0000 0000 0101 ... */
2007 /* 0 */ V(14, 13, 1), /* 374 */
2008 /* 1 */ V(11, 15, 1),
2009
2010 /* 0000 0000 0111 ... */
2011 /* 0 */ V(12, 14, 1), /* 376 */
2012 /* 1 */ V(14, 12, 1),
2013
2014 /* 0000 0001 1111 ... */
2015 /* 0 */ V(10, 14, 1), /* 378 */
2016 /* 1 */ V(0, 15, 1)
2017};
2018
2019static
2020union huffpair const hufftab16[] ICONST_ATTR_MPA_HUFFMAN = {
2021 /* 0000 */ PTR(16, 4),
2022 /* 0001 */ PTR(32, 4),
2023 /* 0010 */ PTR(48, 4),
2024 /* 0011 */ PTR(64, 2),
2025 /* 0100 */ V(1, 1, 4),
2026 /* 0101 */ V(0, 1, 4),
2027 /* 0110 */ V(1, 0, 3),
2028 /* 0111 */ V(1, 0, 3),
2029 /* 1000 */ V(0, 0, 1),
2030 /* 1001 */ V(0, 0, 1),
2031 /* 1010 */ V(0, 0, 1),
2032 /* 1011 */ V(0, 0, 1),
2033 /* 1100 */ V(0, 0, 1),
2034 /* 1101 */ V(0, 0, 1),
2035 /* 1110 */ V(0, 0, 1),
2036 /* 1111 */ V(0, 0, 1),
2037
2038 /* 0000 ... */
2039 /* 0000 */ PTR(68, 3), /* 16 */
2040 /* 0001 */ PTR(76, 3),
2041 /* 0010 */ PTR(84, 2),
2042 /* 0011 */ V(15, 15, 4),
2043 /* 0100 */ PTR(88, 2),
2044 /* 0101 */ PTR(92, 1),
2045 /* 0110 */ PTR(94, 4),
2046 /* 0111 */ V(15, 2, 4),
2047 /* 1000 */ PTR(110, 1),
2048 /* 1001 */ V(1, 15, 4),
2049 /* 1010 */ V(15, 1, 4),
2050 /* 1011 */ PTR(112, 4),
2051 /* 1100 */ PTR(128, 4),
2052 /* 1101 */ PTR(144, 4),
2053 /* 1110 */ PTR(160, 4),
2054 /* 1111 */ PTR(176, 4),
2055
2056 /* 0001 ... */
2057 /* 0000 */ PTR(192, 4), /* 32 */
2058 /* 0001 */ PTR(208, 3),
2059 /* 0010 */ PTR(216, 3),
2060 /* 0011 */ PTR(224, 3),
2061 /* 0100 */ PTR(232, 3),
2062 /* 0101 */ PTR(240, 3),
2063 /* 0110 */ PTR(248, 3),
2064 /* 0111 */ PTR(256, 3),
2065 /* 1000 */ PTR(264, 2),
2066 /* 1001 */ PTR(268, 2),
2067 /* 1010 */ PTR(272, 1),
2068 /* 1011 */ PTR(274, 2),
2069 /* 1100 */ PTR(278, 2),
2070 /* 1101 */ PTR(282, 1),
2071 /* 1110 */ V(5, 1, 4),
2072 /* 1111 */ PTR(284, 1),
2073
2074 /* 0010 ... */
2075 /* 0000 */ PTR(286, 1), /* 48 */
2076 /* 0001 */ PTR(288, 1),
2077 /* 0010 */ PTR(290, 1),
2078 /* 0011 */ V(1, 4, 4),
2079 /* 0100 */ V(4, 1, 4),
2080 /* 0101 */ PTR(292, 1),
2081 /* 0110 */ V(2, 3, 4),
2082 /* 0111 */ V(3, 2, 4),
2083 /* 1000 */ V(1, 3, 3),
2084 /* 1001 */ V(1, 3, 3),
2085 /* 1010 */ V(3, 1, 3),
2086 /* 1011 */ V(3, 1, 3),
2087 /* 1100 */ V(0, 3, 4),
2088 /* 1101 */ V(3, 0, 4),
2089 /* 1110 */ V(2, 2, 3),
2090 /* 1111 */ V(2, 2, 3),
2091
2092 /* 0011 ... */
2093 /* 00 */ V(1, 2, 2), /* 64 */
2094 /* 01 */ V(2, 1, 2),
2095 /* 10 */ V(0, 2, 2),
2096 /* 11 */ V(2, 0, 2),
2097
2098 /* 0000 0000 ... */
2099 /* 000 */ V(14, 15, 3), /* 68 */
2100 /* 001 */ V(15, 14, 3),
2101 /* 010 */ V(13, 15, 3),
2102 /* 011 */ V(15, 13, 3),
2103 /* 100 */ V(12, 15, 3),
2104 /* 101 */ V(15, 12, 3),
2105 /* 110 */ V(11, 15, 3),
2106 /* 111 */ V(15, 11, 3),
2107
2108 /* 0000 0001 ... */
2109 /* 000 */ V(10, 15, 2), /* 76 */
2110 /* 001 */ V(10, 15, 2),
2111 /* 010 */ V(15, 10, 3),
2112 /* 011 */ V(9, 15, 3),
2113 /* 100 */ V(15, 9, 3),
2114 /* 101 */ V(15, 8, 3),
2115 /* 110 */ V(8, 15, 2),
2116 /* 111 */ V(8, 15, 2),
2117
2118 /* 0000 0010 ... */
2119 /* 00 */ V(7, 15, 2), /* 84 */
2120 /* 01 */ V(15, 7, 2),
2121 /* 10 */ V(6, 15, 2),
2122 /* 11 */ V(15, 6, 2),
2123
2124 /* 0000 0100 ... */
2125 /* 00 */ V(5, 15, 2), /* 88 */
2126 /* 01 */ V(15, 5, 2),
2127 /* 10 */ V(4, 15, 1),
2128 /* 11 */ V(4, 15, 1),
2129
2130 /* 0000 0101 ... */
2131 /* 0 */ V(15, 4, 1), /* 92 */
2132 /* 1 */ V(15, 3, 1),
2133
2134 /* 0000 0110 ... */
2135 /* 0000 */ V(15, 0, 1), /* 94 */
2136 /* 0001 */ V(15, 0, 1),
2137 /* 0010 */ V(15, 0, 1),
2138 /* 0011 */ V(15, 0, 1),
2139 /* 0100 */ V(15, 0, 1),
2140 /* 0101 */ V(15, 0, 1),
2141 /* 0110 */ V(15, 0, 1),
2142 /* 0111 */ V(15, 0, 1),
2143 /* 1000 */ V(3, 15, 2),
2144 /* 1001 */ V(3, 15, 2),
2145 /* 1010 */ V(3, 15, 2),
2146 /* 1011 */ V(3, 15, 2),
2147 /* 1100 */ PTR(294, 4),
2148 /* 1101 */ PTR(310, 3),
2149 /* 1110 */ PTR(318, 3),
2150 /* 1111 */ PTR(326, 3),
2151
2152 /* 0000 1000 ... */
2153 /* 0 */ V(2, 15, 1), /* 110 */
2154 /* 1 */ V(0, 15, 1),
2155
2156 /* 0000 1011 ... */
2157 /* 0000 */ PTR(334, 2), /* 112 */
2158 /* 0001 */ PTR(338, 2),
2159 /* 0010 */ PTR(342, 2),
2160 /* 0011 */ PTR(346, 1),
2161 /* 0100 */ PTR(348, 2),
2162 /* 0101 */ PTR(352, 2),
2163 /* 0110 */ PTR(356, 1),
2164 /* 0111 */ PTR(358, 2),
2165 /* 1000 */ PTR(362, 2),
2166 /* 1001 */ PTR(366, 2),
2167 /* 1010 */ PTR(370, 2),
2168 /* 1011 */ V(14, 3, 4),
2169 /* 1100 */ PTR(374, 1),
2170 /* 1101 */ PTR(376, 1),
2171 /* 1110 */ PTR(378, 1),
2172 /* 1111 */ PTR(380, 1),
2173
2174 /* 0000 1100 ... */
2175 /* 0000 */ PTR(382, 1), /* 128 */
2176 /* 0001 */ PTR(384, 1),
2177 /* 0010 */ PTR(386, 1),
2178 /* 0011 */ V(0, 13, 4),
2179 /* 0100 */ PTR(388, 1),
2180 /* 0101 */ PTR(390, 1),
2181 /* 0110 */ PTR(392, 1),
2182 /* 0111 */ V(3, 12, 4),
2183 /* 1000 */ PTR(394, 1),
2184 /* 1001 */ V(1, 12, 4),
2185 /* 1010 */ V(12, 0, 4),
2186 /* 1011 */ PTR(396, 1),
2187 /* 1100 */ V(14, 2, 3),
2188 /* 1101 */ V(14, 2, 3),
2189 /* 1110 */ V(2, 14, 4),
2190 /* 1111 */ V(1, 14, 4),
2191
2192 /* 0000 1101 ... */
2193 /* 0000 */ V(13, 3, 4), /* 144 */
2194 /* 0001 */ V(2, 13, 4),
2195 /* 0010 */ V(13, 2, 4),
2196 /* 0011 */ V(13, 1, 4),
2197 /* 0100 */ V(3, 11, 4),
2198 /* 0101 */ PTR(398, 1),
2199 /* 0110 */ V(1, 13, 3),
2200 /* 0111 */ V(1, 13, 3),
2201 /* 1000 */ V(12, 4, 4),
2202 /* 1001 */ V(6, 11, 4),
2203 /* 1010 */ V(12, 3, 4),
2204 /* 1011 */ V(10, 7, 4),
2205 /* 1100 */ V(2, 12, 3),
2206 /* 1101 */ V(2, 12, 3),
2207 /* 1110 */ V(12, 2, 4),
2208 /* 1111 */ V(11, 5, 4),
2209
2210 /* 0000 1110 ... */
2211 /* 0000 */ V(12, 1, 4), /* 160 */
2212 /* 0001 */ V(0, 12, 4),
2213 /* 0010 */ V(4, 11, 4),
2214 /* 0011 */ V(11, 4, 4),
2215 /* 0100 */ V(6, 10, 4),
2216 /* 0101 */ V(10, 6, 4),
2217 /* 0110 */ V(11, 3, 3),
2218 /* 0111 */ V(11, 3, 3),
2219 /* 1000 */ V(5, 10, 4),
2220 /* 1001 */ V(10, 5, 4),
2221 /* 1010 */ V(2, 11, 3),
2222 /* 1011 */ V(2, 11, 3),
2223 /* 1100 */ V(11, 2, 3),
2224 /* 1101 */ V(11, 2, 3),
2225 /* 1110 */ V(1, 11, 3),
2226 /* 1111 */ V(1, 11, 3),
2227
2228 /* 0000 1111 ... */
2229 /* 0000 */ V(11, 1, 3), /* 176 */
2230 /* 0001 */ V(11, 1, 3),
2231 /* 0010 */ V(0, 11, 4),
2232 /* 0011 */ V(11, 0, 4),
2233 /* 0100 */ V(6, 9, 4),
2234 /* 0101 */ V(9, 6, 4),
2235 /* 0110 */ V(4, 10, 4),
2236 /* 0111 */ V(10, 4, 4),
2237 /* 1000 */ V(7, 8, 4),
2238 /* 1001 */ V(8, 7, 4),
2239 /* 1010 */ V(10, 3, 3),
2240 /* 1011 */ V(10, 3, 3),
2241 /* 1100 */ V(3, 10, 4),
2242 /* 1101 */ V(5, 9, 4),
2243 /* 1110 */ V(2, 10, 3),
2244 /* 1111 */ V(2, 10, 3),
2245
2246 /* 0001 0000 ... */
2247 /* 0000 */ V(9, 5, 4), /* 192 */
2248 /* 0001 */ V(6, 8, 4),
2249 /* 0010 */ V(10, 1, 3),
2250 /* 0011 */ V(10, 1, 3),
2251 /* 0100 */ V(8, 6, 4),
2252 /* 0101 */ V(7, 7, 4),
2253 /* 0110 */ V(9, 4, 3),
2254 /* 0111 */ V(9, 4, 3),
2255 /* 1000 */ V(4, 9, 4),
2256 /* 1001 */ V(5, 7, 4),
2257 /* 1010 */ V(6, 7, 3),
2258 /* 1011 */ V(6, 7, 3),
2259 /* 1100 */ V(10, 2, 2),
2260 /* 1101 */ V(10, 2, 2),
2261 /* 1110 */ V(10, 2, 2),
2262 /* 1111 */ V(10, 2, 2),
2263
2264 /* 0001 0001 ... */
2265 /* 000 */ V(1, 10, 2), /* 208 */
2266 /* 001 */ V(1, 10, 2),
2267 /* 010 */ V(0, 10, 3),
2268 /* 011 */ V(10, 0, 3),
2269 /* 100 */ V(3, 9, 3),
2270 /* 101 */ V(9, 3, 3),
2271 /* 110 */ V(5, 8, 3),
2272 /* 111 */ V(8, 5, 3),
2273
2274 /* 0001 0010 ... */
2275 /* 000 */ V(2, 9, 2), /* 216 */
2276 /* 001 */ V(2, 9, 2),
2277 /* 010 */ V(9, 2, 2),
2278 /* 011 */ V(9, 2, 2),
2279 /* 100 */ V(7, 6, 3),
2280 /* 101 */ V(0, 9, 3),
2281 /* 110 */ V(1, 9, 2),
2282 /* 111 */ V(1, 9, 2),
2283
2284 /* 0001 0011 ... */
2285 /* 000 */ V(9, 1, 2), /* 224 */
2286 /* 001 */ V(9, 1, 2),
2287 /* 010 */ V(9, 0, 3),
2288 /* 011 */ V(4, 8, 3),
2289 /* 100 */ V(8, 4, 3),
2290 /* 101 */ V(7, 5, 3),
2291 /* 110 */ V(3, 8, 3),
2292 /* 111 */ V(8, 3, 3),
2293
2294 /* 0001 0100 ... */
2295 /* 000 */ V(6, 6, 3), /* 232 */
2296 /* 001 */ V(2, 8, 3),
2297 /* 010 */ V(8, 2, 2),
2298 /* 011 */ V(8, 2, 2),
2299 /* 100 */ V(4, 7, 3),
2300 /* 101 */ V(7, 4, 3),
2301 /* 110 */ V(1, 8, 2),
2302 /* 111 */ V(1, 8, 2),
2303
2304 /* 0001 0101 ... */
2305 /* 000 */ V(8, 1, 2), /* 240 */
2306 /* 001 */ V(8, 1, 2),
2307 /* 010 */ V(8, 0, 2),
2308 /* 011 */ V(8, 0, 2),
2309 /* 100 */ V(0, 8, 3),
2310 /* 101 */ V(5, 6, 3),
2311 /* 110 */ V(3, 7, 2),
2312 /* 111 */ V(3, 7, 2),
2313
2314 /* 0001 0110 ... */
2315 /* 000 */ V(7, 3, 2), /* 248 */
2316 /* 001 */ V(7, 3, 2),
2317 /* 010 */ V(6, 5, 3),
2318 /* 011 */ V(4, 6, 3),
2319 /* 100 */ V(2, 7, 2),
2320 /* 101 */ V(2, 7, 2),
2321 /* 110 */ V(7, 2, 2),
2322 /* 111 */ V(7, 2, 2),
2323
2324 /* 0001 0111 ... */
2325 /* 000 */ V(6, 4, 3), /* 256 */
2326 /* 001 */ V(5, 5, 3),
2327 /* 010 */ V(0, 7, 2),
2328 /* 011 */ V(0, 7, 2),
2329 /* 100 */ V(1, 7, 1),
2330 /* 101 */ V(1, 7, 1),
2331 /* 110 */ V(1, 7, 1),
2332 /* 111 */ V(1, 7, 1),
2333
2334 /* 0001 1000 ... */
2335 /* 00 */ V(7, 1, 1), /* 264 */
2336 /* 01 */ V(7, 1, 1),
2337 /* 10 */ V(7, 0, 2),
2338 /* 11 */ V(3, 6, 2),
2339
2340 /* 0001 1001 ... */
2341 /* 00 */ V(6, 3, 2), /* 268 */
2342 /* 01 */ V(4, 5, 2),
2343 /* 10 */ V(5, 4, 2),
2344 /* 11 */ V(2, 6, 2),
2345
2346 /* 0001 1010 ... */
2347 /* 0 */ V(6, 2, 1), /* 272 */
2348 /* 1 */ V(1, 6, 1),
2349
2350 /* 0001 1011 ... */
2351 /* 00 */ V(6, 1, 1), /* 274 */
2352 /* 01 */ V(6, 1, 1),
2353 /* 10 */ V(0, 6, 2),
2354 /* 11 */ V(6, 0, 2),
2355
2356 /* 0001 1100 ... */
2357 /* 00 */ V(5, 3, 1), /* 278 */
2358 /* 01 */ V(5, 3, 1),
2359 /* 10 */ V(3, 5, 2),
2360 /* 11 */ V(4, 4, 2),
2361
2362 /* 0001 1101 ... */
2363 /* 0 */ V(2, 5, 1), /* 282 */
2364 /* 1 */ V(5, 2, 1),
2365
2366 /* 0001 1111 ... */
2367 /* 0 */ V(1, 5, 1), /* 284 */
2368 /* 1 */ V(0, 5, 1),
2369
2370 /* 0010 0000 ... */
2371 /* 0 */ V(3, 4, 1), /* 286 */
2372 /* 1 */ V(4, 3, 1),
2373
2374 /* 0010 0001 ... */
2375 /* 0 */ V(5, 0, 1), /* 288 */
2376 /* 1 */ V(2, 4, 1),
2377
2378 /* 0010 0010 ... */
2379 /* 0 */ V(4, 2, 1), /* 290 */
2380 /* 1 */ V(3, 3, 1),
2381
2382 /* 0010 0101 ... */
2383 /* 0 */ V(0, 4, 1), /* 292 */
2384 /* 1 */ V(4, 0, 1),
2385
2386 /* 0000 0110 1100 ... */
2387 /* 0000 */ V(12, 14, 4), /* 294 */
2388 /* 0001 */ PTR(400, 1),
2389 /* 0010 */ V(13, 14, 3),
2390 /* 0011 */ V(13, 14, 3),
2391 /* 0100 */ V(14, 9, 3),
2392 /* 0101 */ V(14, 9, 3),
2393 /* 0110 */ V(14, 10, 4),
2394 /* 0111 */ V(13, 9, 4),
2395 /* 1000 */ V(14, 14, 2),
2396 /* 1001 */ V(14, 14, 2),
2397 /* 1010 */ V(14, 14, 2),
2398 /* 1011 */ V(14, 14, 2),
2399 /* 1100 */ V(14, 13, 3),
2400 /* 1101 */ V(14, 13, 3),
2401 /* 1110 */ V(14, 11, 3),
2402 /* 1111 */ V(14, 11, 3),
2403
2404 /* 0000 0110 1101 ... */
2405 /* 000 */ V(11, 14, 2), /* 310 */
2406 /* 001 */ V(11, 14, 2),
2407 /* 010 */ V(12, 13, 2),
2408 /* 011 */ V(12, 13, 2),
2409 /* 100 */ V(13, 12, 3),
2410 /* 101 */ V(13, 11, 3),
2411 /* 110 */ V(10, 14, 2),
2412 /* 111 */ V(10, 14, 2),
2413
2414 /* 0000 0110 1110 ... */
2415 /* 000 */ V(12, 12, 2), /* 318 */
2416 /* 001 */ V(12, 12, 2),
2417 /* 010 */ V(10, 13, 3),
2418 /* 011 */ V(13, 10, 3),
2419 /* 100 */ V(7, 14, 3),
2420 /* 101 */ V(10, 12, 3),
2421 /* 110 */ V(12, 10, 2),
2422 /* 111 */ V(12, 10, 2),
2423
2424 /* 0000 0110 1111 ... */
2425 /* 000 */ V(12, 9, 3), /* 326 */
2426 /* 001 */ V(7, 13, 3),
2427 /* 010 */ V(5, 14, 2),
2428 /* 011 */ V(5, 14, 2),
2429 /* 100 */ V(11, 13, 1),
2430 /* 101 */ V(11, 13, 1),
2431 /* 110 */ V(11, 13, 1),
2432 /* 111 */ V(11, 13, 1),
2433
2434 /* 0000 1011 0000 ... */
2435 /* 00 */ V(9, 14, 1), /* 334 */
2436 /* 01 */ V(9, 14, 1),
2437 /* 10 */ V(11, 12, 2),
2438 /* 11 */ V(12, 11, 2),
2439
2440 /* 0000 1011 0001 ... */
2441 /* 00 */ V(8, 14, 2), /* 338 */
2442 /* 01 */ V(14, 8, 2),
2443 /* 10 */ V(9, 13, 2),
2444 /* 11 */ V(14, 7, 2),
2445
2446 /* 0000 1011 0010 ... */
2447 /* 00 */ V(11, 11, 2), /* 342 */
2448 /* 01 */ V(8, 13, 2),
2449 /* 10 */ V(13, 8, 2),
2450 /* 11 */ V(6, 14, 2),
2451
2452 /* 0000 1011 0011 ... */
2453 /* 0 */ V(14, 6, 1), /* 346 */
2454 /* 1 */ V(9, 12, 1),
2455
2456 /* 0000 1011 0100 ... */
2457 /* 00 */ V(10, 11, 2), /* 348 */
2458 /* 01 */ V(11, 10, 2),
2459 /* 10 */ V(14, 5, 2),
2460 /* 11 */ V(13, 7, 2),
2461
2462 /* 0000 1011 0101 ... */
2463 /* 00 */ V(4, 14, 1), /* 352 */
2464 /* 01 */ V(4, 14, 1),
2465 /* 10 */ V(14, 4, 2),
2466 /* 11 */ V(8, 12, 2),
2467
2468 /* 0000 1011 0110 ... */
2469 /* 0 */ V(12, 8, 1), /* 356 */
2470 /* 1 */ V(3, 14, 1),
2471
2472 /* 0000 1011 0111 ... */
2473 /* 00 */ V(6, 13, 1), /* 358 */
2474 /* 01 */ V(6, 13, 1),
2475 /* 10 */ V(13, 6, 2),
2476 /* 11 */ V(9, 11, 2),
2477
2478 /* 0000 1011 1000 ... */
2479 /* 00 */ V(11, 9, 2), /* 362 */
2480 /* 01 */ V(10, 10, 2),
2481 /* 10 */ V(14, 1, 1),
2482 /* 11 */ V(14, 1, 1),
2483
2484 /* 0000 1011 1001 ... */
2485 /* 00 */ V(13, 4, 1), /* 366 */
2486 /* 01 */ V(13, 4, 1),
2487 /* 10 */ V(11, 8, 2),
2488 /* 11 */ V(10, 9, 2),
2489
2490 /* 0000 1011 1010 ... */
2491 /* 00 */ V(7, 11, 1), /* 370 */
2492 /* 01 */ V(7, 11, 1),
2493 /* 10 */ V(11, 7, 2),
2494 /* 11 */ V(13, 0, 2),
2495
2496 /* 0000 1011 1100 ... */
2497 /* 0 */ V(0, 14, 1), /* 374 */
2498 /* 1 */ V(14, 0, 1),
2499
2500 /* 0000 1011 1101 ... */
2501 /* 0 */ V(5, 13, 1), /* 376 */
2502 /* 1 */ V(13, 5, 1),
2503
2504 /* 0000 1011 1110 ... */
2505 /* 0 */ V(7, 12, 1), /* 378 */
2506 /* 1 */ V(12, 7, 1),
2507
2508 /* 0000 1011 1111 ... */
2509 /* 0 */ V(4, 13, 1), /* 380 */
2510 /* 1 */ V(8, 11, 1),
2511
2512 /* 0000 1100 0000 ... */
2513 /* 0 */ V(9, 10, 1), /* 382 */
2514 /* 1 */ V(6, 12, 1),
2515
2516 /* 0000 1100 0001 ... */
2517 /* 0 */ V(12, 6, 1), /* 384 */
2518 /* 1 */ V(3, 13, 1),
2519
2520 /* 0000 1100 0010 ... */
2521 /* 0 */ V(5, 12, 1), /* 386 */
2522 /* 1 */ V(12, 5, 1),
2523
2524 /* 0000 1100 0100 ... */
2525 /* 0 */ V(8, 10, 1), /* 388 */
2526 /* 1 */ V(10, 8, 1),
2527
2528 /* 0000 1100 0101 ... */
2529 /* 0 */ V(9, 9, 1), /* 390 */
2530 /* 1 */ V(4, 12, 1),
2531
2532 /* 0000 1100 0110 ... */
2533 /* 0 */ V(11, 6, 1), /* 392 */
2534 /* 1 */ V(7, 10, 1),
2535
2536 /* 0000 1100 1000 ... */
2537 /* 0 */ V(5, 11, 1), /* 394 */
2538 /* 1 */ V(8, 9, 1),
2539
2540 /* 0000 1100 1011 ... */
2541 /* 0 */ V(9, 8, 1), /* 396 */
2542 /* 1 */ V(7, 9, 1),
2543
2544 /* 0000 1101 0101 ... */
2545 /* 0 */ V(9, 7, 1), /* 398 */
2546 /* 1 */ V(8, 8, 1),
2547
2548 /* 0000 0110 1100 0001 ... */
2549 /* 0 */ V(14, 12, 1), /* 400 */
2550 /* 1 */ V(13, 13, 1)
2551};
2552
2553static
2554union huffpair const hufftab24[] ICONST_ATTR_MPA_HUFFMAN = {
2555 /* 0000 */ PTR(16, 4),
2556 /* 0001 */ PTR(32, 4),
2557 /* 0010 */ PTR(48, 4),
2558 /* 0011 */ V(15, 15, 4),
2559 /* 0100 */ PTR(64, 4),
2560 /* 0101 */ PTR(80, 4),
2561 /* 0110 */ PTR(96, 4),
2562 /* 0111 */ PTR(112, 4),
2563 /* 1000 */ PTR(128, 4),
2564 /* 1001 */ PTR(144, 4),
2565 /* 1010 */ PTR(160, 3),
2566 /* 1011 */ PTR(168, 2),
2567 /* 1100 */ V(1, 1, 4),
2568 /* 1101 */ V(0, 1, 4),
2569 /* 1110 */ V(1, 0, 4),
2570 /* 1111 */ V(0, 0, 4),
2571
2572 /* 0000 ... */
2573 /* 0000 */ V(14, 15, 4), /* 16 */
2574 /* 0001 */ V(15, 14, 4),
2575 /* 0010 */ V(13, 15, 4),
2576 /* 0011 */ V(15, 13, 4),
2577 /* 0100 */ V(12, 15, 4),
2578 /* 0101 */ V(15, 12, 4),
2579 /* 0110 */ V(11, 15, 4),
2580 /* 0111 */ V(15, 11, 4),
2581 /* 1000 */ V(15, 10, 3),
2582 /* 1001 */ V(15, 10, 3),
2583 /* 1010 */ V(10, 15, 4),
2584 /* 1011 */ V(9, 15, 4),
2585 /* 1100 */ V(15, 9, 3),
2586 /* 1101 */ V(15, 9, 3),
2587 /* 1110 */ V(15, 8, 3),
2588 /* 1111 */ V(15, 8, 3),
2589
2590 /* 0001 ... */
2591 /* 0000 */ V(8, 15, 4), /* 32 */
2592 /* 0001 */ V(7, 15, 4),
2593 /* 0010 */ V(15, 7, 3),
2594 /* 0011 */ V(15, 7, 3),
2595 /* 0100 */ V(6, 15, 3),
2596 /* 0101 */ V(6, 15, 3),
2597 /* 0110 */ V(15, 6, 3),
2598 /* 0111 */ V(15, 6, 3),
2599 /* 1000 */ V(5, 15, 3),
2600 /* 1001 */ V(5, 15, 3),
2601 /* 1010 */ V(15, 5, 3),
2602 /* 1011 */ V(15, 5, 3),
2603 /* 1100 */ V(4, 15, 3),
2604 /* 1101 */ V(4, 15, 3),
2605 /* 1110 */ V(15, 4, 3),
2606 /* 1111 */ V(15, 4, 3),
2607
2608 /* 0010 ... */
2609 /* 0000 */ V(3, 15, 3), /* 48 */
2610 /* 0001 */ V(3, 15, 3),
2611 /* 0010 */ V(15, 3, 3),
2612 /* 0011 */ V(15, 3, 3),
2613 /* 0100 */ V(2, 15, 3),
2614 /* 0101 */ V(2, 15, 3),
2615 /* 0110 */ V(15, 2, 3),
2616 /* 0111 */ V(15, 2, 3),
2617 /* 1000 */ V(15, 1, 3),
2618 /* 1001 */ V(15, 1, 3),
2619 /* 1010 */ V(1, 15, 4),
2620 /* 1011 */ V(15, 0, 4),
2621 /* 1100 */ PTR(172, 3),
2622 /* 1101 */ PTR(180, 3),
2623 /* 1110 */ PTR(188, 3),
2624 /* 1111 */ PTR(196, 3),
2625
2626 /* 0100 ... */
2627 /* 0000 */ PTR(204, 4), /* 64 */
2628 /* 0001 */ PTR(220, 3),
2629 /* 0010 */ PTR(228, 3),
2630 /* 0011 */ PTR(236, 3),
2631 /* 0100 */ PTR(244, 2),
2632 /* 0101 */ PTR(248, 2),
2633 /* 0110 */ PTR(252, 2),
2634 /* 0111 */ PTR(256, 2),
2635 /* 1000 */ PTR(260, 2),
2636 /* 1001 */ PTR(264, 2),
2637 /* 1010 */ PTR(268, 2),
2638 /* 1011 */ PTR(272, 2),
2639 /* 1100 */ PTR(276, 2),
2640 /* 1101 */ PTR(280, 3),
2641 /* 1110 */ PTR(288, 2),
2642 /* 1111 */ PTR(292, 2),
2643
2644 /* 0101 ... */
2645 /* 0000 */ PTR(296, 2), /* 80 */
2646 /* 0001 */ PTR(300, 3),
2647 /* 0010 */ PTR(308, 2),
2648 /* 0011 */ PTR(312, 3),
2649 /* 0100 */ PTR(320, 1),
2650 /* 0101 */ PTR(322, 2),
2651 /* 0110 */ PTR(326, 2),
2652 /* 0111 */ PTR(330, 1),
2653 /* 1000 */ PTR(332, 2),
2654 /* 1001 */ PTR(336, 1),
2655 /* 1010 */ PTR(338, 1),
2656 /* 1011 */ PTR(340, 1),
2657 /* 1100 */ PTR(342, 1),
2658 /* 1101 */ PTR(344, 1),
2659 /* 1110 */ PTR(346, 1),
2660 /* 1111 */ PTR(348, 1),
2661
2662 /* 0110 ... */
2663 /* 0000 */ PTR(350, 1), /* 96 */
2664 /* 0001 */ PTR(352, 1),
2665 /* 0010 */ PTR(354, 1),
2666 /* 0011 */ PTR(356, 1),
2667 /* 0100 */ PTR(358, 1),
2668 /* 0101 */ PTR(360, 1),
2669 /* 0110 */ PTR(362, 1),
2670 /* 0111 */ PTR(364, 1),
2671 /* 1000 */ PTR(366, 1),
2672 /* 1001 */ PTR(368, 1),
2673 /* 1010 */ PTR(370, 2),
2674 /* 1011 */ PTR(374, 1),
2675 /* 1100 */ PTR(376, 2),
2676 /* 1101 */ V(7, 3, 4),
2677 /* 1110 */ PTR(380, 1),
2678 /* 1111 */ V(7, 2, 4),
2679
2680 /* 0111 ... */
2681 /* 0000 */ V(4, 6, 4), /* 112 */
2682 /* 0001 */ V(6, 4, 4),
2683 /* 0010 */ V(5, 5, 4),
2684 /* 0011 */ V(7, 1, 4),
2685 /* 0100 */ V(3, 6, 4),
2686 /* 0101 */ V(6, 3, 4),
2687 /* 0110 */ V(4, 5, 4),
2688 /* 0111 */ V(5, 4, 4),
2689 /* 1000 */ V(2, 6, 4),
2690 /* 1001 */ V(6, 2, 4),
2691 /* 1010 */ V(1, 6, 4),
2692 /* 1011 */ V(6, 1, 4),
2693 /* 1100 */ PTR(382, 1),
2694 /* 1101 */ V(3, 5, 4),
2695 /* 1110 */ V(5, 3, 4),
2696 /* 1111 */ V(4, 4, 4),
2697
2698 /* 1000 ... */
2699 /* 0000 */ V(2, 5, 4), /* 128 */
2700 /* 0001 */ V(5, 2, 4),
2701 /* 0010 */ V(1, 5, 4),
2702 /* 0011 */ PTR(384, 1),
2703 /* 0100 */ V(5, 1, 3),
2704 /* 0101 */ V(5, 1, 3),
2705 /* 0110 */ V(3, 4, 4),
2706 /* 0111 */ V(4, 3, 4),
2707 /* 1000 */ V(2, 4, 3),
2708 /* 1001 */ V(2, 4, 3),
2709 /* 1010 */ V(4, 2, 3),
2710 /* 1011 */ V(4, 2, 3),
2711 /* 1100 */ V(3, 3, 3),
2712 /* 1101 */ V(3, 3, 3),
2713 /* 1110 */ V(1, 4, 3),
2714 /* 1111 */ V(1, 4, 3),
2715
2716 /* 1001 ... */
2717 /* 0000 */ V(4, 1, 3), /* 144 */
2718 /* 0001 */ V(4, 1, 3),
2719 /* 0010 */ V(0, 4, 4),
2720 /* 0011 */ V(4, 0, 4),
2721 /* 0100 */ V(2, 3, 3),
2722 /* 0101 */ V(2, 3, 3),
2723 /* 0110 */ V(3, 2, 3),
2724 /* 0111 */ V(3, 2, 3),
2725 /* 1000 */ V(1, 3, 2),
2726 /* 1001 */ V(1, 3, 2),
2727 /* 1010 */ V(1, 3, 2),
2728 /* 1011 */ V(1, 3, 2),
2729 /* 1100 */ V(3, 1, 2),
2730 /* 1101 */ V(3, 1, 2),
2731 /* 1110 */ V(3, 1, 2),
2732 /* 1111 */ V(3, 1, 2),
2733
2734 /* 1010 ... */
2735 /* 000 */ V(0, 3, 3), /* 160 */
2736 /* 001 */ V(3, 0, 3),
2737 /* 010 */ V(2, 2, 2),
2738 /* 011 */ V(2, 2, 2),
2739 /* 100 */ V(1, 2, 1),
2740 /* 101 */ V(1, 2, 1),
2741 /* 110 */ V(1, 2, 1),
2742 /* 111 */ V(1, 2, 1),
2743
2744 /* 1011 ... */
2745 /* 00 */ V(2, 1, 1), /* 168 */
2746 /* 01 */ V(2, 1, 1),
2747 /* 10 */ V(0, 2, 2),
2748 /* 11 */ V(2, 0, 2),
2749
2750 /* 0010 1100 ... */
2751 /* 000 */ V(0, 15, 1), /* 172 */
2752 /* 001 */ V(0, 15, 1),
2753 /* 010 */ V(0, 15, 1),
2754 /* 011 */ V(0, 15, 1),
2755 /* 100 */ V(14, 14, 3),
2756 /* 101 */ V(13, 14, 3),
2757 /* 110 */ V(14, 13, 3),
2758 /* 111 */ V(12, 14, 3),
2759
2760 /* 0010 1101 ... */
2761 /* 000 */ V(14, 12, 3), /* 180 */
2762 /* 001 */ V(13, 13, 3),
2763 /* 010 */ V(11, 14, 3),
2764 /* 011 */ V(14, 11, 3),
2765 /* 100 */ V(12, 13, 3),
2766 /* 101 */ V(13, 12, 3),
2767 /* 110 */ V(10, 14, 3),
2768 /* 111 */ V(14, 10, 3),
2769
2770 /* 0010 1110 ... */
2771 /* 000 */ V(11, 13, 3), /* 188 */
2772 /* 001 */ V(13, 11, 3),
2773 /* 010 */ V(12, 12, 3),
2774 /* 011 */ V(9, 14, 3),
2775 /* 100 */ V(14, 9, 3),
2776 /* 101 */ V(10, 13, 3),
2777 /* 110 */ V(13, 10, 3),
2778 /* 111 */ V(11, 12, 3),
2779
2780 /* 0010 1111 ... */
2781 /* 000 */ V(12, 11, 3), /* 196 */
2782 /* 001 */ V(8, 14, 3),
2783 /* 010 */ V(14, 8, 3),
2784 /* 011 */ V(9, 13, 3),
2785 /* 100 */ V(13, 9, 3),
2786 /* 101 */ V(7, 14, 3),
2787 /* 110 */ V(14, 7, 3),
2788 /* 111 */ V(10, 12, 3),
2789
2790 /* 0100 0000 ... */
2791 /* 0000 */ V(12, 10, 3), /* 204 */
2792 /* 0001 */ V(12, 10, 3),
2793 /* 0010 */ V(11, 11, 3),
2794 /* 0011 */ V(11, 11, 3),
2795 /* 0100 */ V(8, 13, 3),
2796 /* 0101 */ V(8, 13, 3),
2797 /* 0110 */ V(13, 8, 3),
2798 /* 0111 */ V(13, 8, 3),
2799 /* 1000 */ V(0, 14, 4),
2800 /* 1001 */ V(14, 0, 4),
2801 /* 1010 */ V(0, 13, 3),
2802 /* 1011 */ V(0, 13, 3),
2803 /* 1100 */ V(14, 6, 2),
2804 /* 1101 */ V(14, 6, 2),
2805 /* 1110 */ V(14, 6, 2),
2806 /* 1111 */ V(14, 6, 2),
2807
2808 /* 0100 0001 ... */
2809 /* 000 */ V(6, 14, 3), /* 220 */
2810 /* 001 */ V(9, 12, 3),
2811 /* 010 */ V(12, 9, 2),
2812 /* 011 */ V(12, 9, 2),
2813 /* 100 */ V(5, 14, 2),
2814 /* 101 */ V(5, 14, 2),
2815 /* 110 */ V(11, 10, 2),
2816 /* 111 */ V(11, 10, 2),
2817
2818 /* 0100 0010 ... */
2819 /* 000 */ V(14, 5, 2), /* 228 */
2820 /* 001 */ V(14, 5, 2),
2821 /* 010 */ V(10, 11, 3),
2822 /* 011 */ V(7, 13, 3),
2823 /* 100 */ V(13, 7, 2),
2824 /* 101 */ V(13, 7, 2),
2825 /* 110 */ V(14, 4, 2),
2826 /* 111 */ V(14, 4, 2),
2827
2828 /* 0100 0011 ... */
2829 /* 000 */ V(8, 12, 2), /* 236 */
2830 /* 001 */ V(8, 12, 2),
2831 /* 010 */ V(12, 8, 2),
2832 /* 011 */ V(12, 8, 2),
2833 /* 100 */ V(4, 14, 3),
2834 /* 101 */ V(2, 14, 3),
2835 /* 110 */ V(3, 14, 2),
2836 /* 111 */ V(3, 14, 2),
2837
2838 /* 0100 0100 ... */
2839 /* 00 */ V(6, 13, 2), /* 244 */
2840 /* 01 */ V(13, 6, 2),
2841 /* 10 */ V(14, 3, 2),
2842 /* 11 */ V(9, 11, 2),
2843
2844 /* 0100 0101 ... */
2845 /* 00 */ V(11, 9, 2), /* 248 */
2846 /* 01 */ V(10, 10, 2),
2847 /* 10 */ V(14, 2, 2),
2848 /* 11 */ V(1, 14, 2),
2849
2850 /* 0100 0110 ... */
2851 /* 00 */ V(14, 1, 2), /* 252 */
2852 /* 01 */ V(5, 13, 2),
2853 /* 10 */ V(13, 5, 2),
2854 /* 11 */ V(7, 12, 2),
2855
2856 /* 0100 0111 ... */
2857 /* 00 */ V(12, 7, 2), /* 256 */
2858 /* 01 */ V(4, 13, 2),
2859 /* 10 */ V(8, 11, 2),
2860 /* 11 */ V(11, 8, 2),
2861
2862 /* 0100 1000 ... */
2863 /* 00 */ V(13, 4, 2), /* 260 */
2864 /* 01 */ V(9, 10, 2),
2865 /* 10 */ V(10, 9, 2),
2866 /* 11 */ V(6, 12, 2),
2867
2868 /* 0100 1001 ... */
2869 /* 00 */ V(12, 6, 2), /* 264 */
2870 /* 01 */ V(3, 13, 2),
2871 /* 10 */ V(13, 3, 2),
2872 /* 11 */ V(2, 13, 2),
2873
2874 /* 0100 1010 ... */
2875 /* 00 */ V(13, 2, 2), /* 268 */
2876 /* 01 */ V(1, 13, 2),
2877 /* 10 */ V(7, 11, 2),
2878 /* 11 */ V(11, 7, 2),
2879
2880 /* 0100 1011 ... */
2881 /* 00 */ V(13, 1, 2), /* 272 */
2882 /* 01 */ V(5, 12, 2),
2883 /* 10 */ V(12, 5, 2),
2884 /* 11 */ V(8, 10, 2),
2885
2886 /* 0100 1100 ... */
2887 /* 00 */ V(10, 8, 2), /* 276 */
2888 /* 01 */ V(9, 9, 2),
2889 /* 10 */ V(4, 12, 2),
2890 /* 11 */ V(12, 4, 2),
2891
2892 /* 0100 1101 ... */
2893 /* 000 */ V(6, 11, 2), /* 280 */
2894 /* 001 */ V(6, 11, 2),
2895 /* 010 */ V(11, 6, 2),
2896 /* 011 */ V(11, 6, 2),
2897 /* 100 */ V(13, 0, 3),
2898 /* 101 */ V(0, 12, 3),
2899 /* 110 */ V(3, 12, 2),
2900 /* 111 */ V(3, 12, 2),
2901
2902 /* 0100 1110 ... */
2903 /* 00 */ V(12, 3, 2), /* 288 */
2904 /* 01 */ V(7, 10, 2),
2905 /* 10 */ V(10, 7, 2),
2906 /* 11 */ V(2, 12, 2),
2907
2908 /* 0100 1111 ... */
2909 /* 00 */ V(12, 2, 2), /* 292 */
2910 /* 01 */ V(5, 11, 2),
2911 /* 10 */ V(11, 5, 2),
2912 /* 11 */ V(1, 12, 2),
2913
2914 /* 0101 0000 ... */
2915 /* 00 */ V(8, 9, 2), /* 296 */
2916 /* 01 */ V(9, 8, 2),
2917 /* 10 */ V(12, 1, 2),
2918 /* 11 */ V(4, 11, 2),
2919
2920 /* 0101 0001 ... */
2921 /* 000 */ V(12, 0, 3), /* 300 */
2922 /* 001 */ V(0, 11, 3),
2923 /* 010 */ V(3, 11, 2),
2924 /* 011 */ V(3, 11, 2),
2925 /* 100 */ V(11, 0, 3),
2926 /* 101 */ V(0, 10, 3),
2927 /* 110 */ V(1, 10, 2),
2928 /* 111 */ V(1, 10, 2),
2929
2930 /* 0101 0010 ... */
2931 /* 00 */ V(11, 4, 1), /* 308 */
2932 /* 01 */ V(11, 4, 1),
2933 /* 10 */ V(6, 10, 2),
2934 /* 11 */ V(10, 6, 2),
2935
2936 /* 0101 0011 ... */
2937 /* 000 */ V(7, 9, 2), /* 312 */
2938 /* 001 */ V(7, 9, 2),
2939 /* 010 */ V(9, 7, 2),
2940 /* 011 */ V(9, 7, 2),
2941 /* 100 */ V(10, 0, 3),
2942 /* 101 */ V(0, 9, 3),
2943 /* 110 */ V(9, 0, 2),
2944 /* 111 */ V(9, 0, 2),
2945
2946 /* 0101 0100 ... */
2947 /* 0 */ V(11, 3, 1), /* 320 */
2948 /* 1 */ V(8, 8, 1),
2949
2950 /* 0101 0101 ... */
2951 /* 00 */ V(2, 11, 2), /* 322 */
2952 /* 01 */ V(5, 10, 2),
2953 /* 10 */ V(11, 2, 1),
2954 /* 11 */ V(11, 2, 1),
2955
2956 /* 0101 0110 ... */
2957 /* 00 */ V(10, 5, 2), /* 326 */
2958 /* 01 */ V(1, 11, 2),
2959 /* 10 */ V(11, 1, 2),
2960 /* 11 */ V(6, 9, 2),
2961
2962 /* 0101 0111 ... */
2963 /* 0 */ V(9, 6, 1), /* 330 */
2964 /* 1 */ V(10, 4, 1),
2965
2966 /* 0101 1000 ... */
2967 /* 00 */ V(4, 10, 2), /* 332 */
2968 /* 01 */ V(7, 8, 2),
2969 /* 10 */ V(8, 7, 1),
2970 /* 11 */ V(8, 7, 1),
2971
2972 /* 0101 1001 ... */
2973 /* 0 */ V(3, 10, 1), /* 336 */
2974 /* 1 */ V(10, 3, 1),
2975
2976 /* 0101 1010 ... */
2977 /* 0 */ V(5, 9, 1), /* 338 */
2978 /* 1 */ V(9, 5, 1),
2979
2980 /* 0101 1011 ... */
2981 /* 0 */ V(2, 10, 1), /* 340 */
2982 /* 1 */ V(10, 2, 1),
2983
2984 /* 0101 1100 ... */
2985 /* 0 */ V(10, 1, 1), /* 342 */
2986 /* 1 */ V(6, 8, 1),
2987
2988 /* 0101 1101 ... */
2989 /* 0 */ V(8, 6, 1), /* 344 */
2990 /* 1 */ V(7, 7, 1),
2991
2992 /* 0101 1110 ... */
2993 /* 0 */ V(4, 9, 1), /* 346 */
2994 /* 1 */ V(9, 4, 1),
2995
2996 /* 0101 1111 ... */
2997 /* 0 */ V(3, 9, 1), /* 348 */
2998 /* 1 */ V(9, 3, 1),
2999
3000 /* 0110 0000 ... */
3001 /* 0 */ V(5, 8, 1), /* 350 */
3002 /* 1 */ V(8, 5, 1),
3003
3004 /* 0110 0001 ... */
3005 /* 0 */ V(2, 9, 1), /* 352 */
3006 /* 1 */ V(6, 7, 1),
3007
3008 /* 0110 0010 ... */
3009 /* 0 */ V(7, 6, 1), /* 354 */
3010 /* 1 */ V(9, 2, 1),
3011
3012 /* 0110 0011 ... */
3013 /* 0 */ V(1, 9, 1), /* 356 */
3014 /* 1 */ V(9, 1, 1),
3015
3016 /* 0110 0100 ... */
3017 /* 0 */ V(4, 8, 1), /* 358 */
3018 /* 1 */ V(8, 4, 1),
3019
3020 /* 0110 0101 ... */
3021 /* 0 */ V(5, 7, 1), /* 360 */
3022 /* 1 */ V(7, 5, 1),
3023
3024 /* 0110 0110 ... */
3025 /* 0 */ V(3, 8, 1), /* 362 */
3026 /* 1 */ V(8, 3, 1),
3027
3028 /* 0110 0111 ... */
3029 /* 0 */ V(6, 6, 1), /* 364 */
3030 /* 1 */ V(2, 8, 1),
3031
3032 /* 0110 1000 ... */
3033 /* 0 */ V(8, 2, 1), /* 366 */
3034 /* 1 */ V(1, 8, 1),
3035
3036 /* 0110 1001 ... */
3037 /* 0 */ V(4, 7, 1), /* 368 */
3038 /* 1 */ V(7, 4, 1),
3039
3040 /* 0110 1010 ... */
3041 /* 00 */ V(8, 1, 1), /* 370 */
3042 /* 01 */ V(8, 1, 1),
3043 /* 10 */ V(0, 8, 2),
3044 /* 11 */ V(8, 0, 2),
3045
3046 /* 0110 1011 ... */
3047 /* 0 */ V(5, 6, 1), /* 374 */
3048 /* 1 */ V(6, 5, 1),
3049
3050 /* 0110 1100 ... */
3051 /* 00 */ V(1, 7, 1), /* 376 */
3052 /* 01 */ V(1, 7, 1),
3053 /* 10 */ V(0, 7, 2),
3054 /* 11 */ V(7, 0, 2),
3055
3056 /* 0110 1110 ... */
3057 /* 0 */ V(3, 7, 1), /* 380 */
3058 /* 1 */ V(2, 7, 1),
3059
3060 /* 0111 1100 ... */
3061 /* 0 */ V(0, 6, 1), /* 382 */
3062 /* 1 */ V(6, 0, 1),
3063
3064 /* 1000 0011 ... */
3065 /* 0 */ V(0, 5, 1), /* 384 */
3066 /* 1 */ V(5, 0, 1)
3067};
3068
3069# undef V
3070# undef PTR
3071
3072/* external tables */
3073
3074union huffquad const *const mad_huff_quad_table[2] = { hufftabA, hufftabB };
3075
3076struct hufftable const mad_huff_pair_table[32] = {
3077 /* 0 */ { hufftab0, 0, 0 },
3078 /* 1 */ { hufftab1, 0, 3 },
3079 /* 2 */ { hufftab2, 0, 3 },
3080 /* 3 */ { hufftab3, 0, 3 },
3081 /* 4 */ { hufftab0, 0, 0 }, /* not used */
3082 /* 5 */ { hufftab5, 0, 3 },
3083 /* 6 */ { hufftab6, 0, 4 },
3084 /* 7 */ { hufftab7, 0, 4 },
3085 /* 8 */ { hufftab8, 0, 4 },
3086 /* 9 */ { hufftab9, 0, 4 },
3087 /* 10 */ { hufftab10, 0, 4 },
3088 /* 11 */ { hufftab11, 0, 4 },
3089 /* 12 */ { hufftab12, 0, 4 },
3090 /* 13 */ { hufftab13, 0, 4 },
3091 /* 14 */ { hufftab0, 0, 0 }, /* not used */
3092 /* 15 */ { hufftab15, 0, 4 },
3093 /* 16 */ { hufftab16, 1, 4 },
3094 /* 17 */ { hufftab16, 2, 4 },
3095 /* 18 */ { hufftab16, 3, 4 },
3096 /* 19 */ { hufftab16, 4, 4 },
3097 /* 20 */ { hufftab16, 6, 4 },
3098 /* 21 */ { hufftab16, 8, 4 },
3099 /* 22 */ { hufftab16, 10, 4 },
3100 /* 23 */ { hufftab16, 13, 4 },
3101 /* 24 */ { hufftab24, 4, 4 },
3102 /* 25 */ { hufftab24, 5, 4 },
3103 /* 26 */ { hufftab24, 6, 4 },
3104 /* 27 */ { hufftab24, 7, 4 },
3105 /* 28 */ { hufftab24, 8, 4 },
3106 /* 29 */ { hufftab24, 9, 4 },
3107 /* 30 */ { hufftab24, 11, 4 },
3108 /* 31 */ { hufftab24, 13, 4 }
3109};
diff --git a/lib/rbcodec/codecs/libmad/huffman.h b/lib/rbcodec/codecs/libmad/huffman.h
new file mode 100644
index 0000000000..e4c1b35d93
--- /dev/null
+++ b/lib/rbcodec/codecs/libmad/huffman.h
@@ -0,0 +1,66 @@
1/*
2 * libmad - MPEG audio decoder library
3 * Copyright (C) 2000-2004 Underbit Technologies, Inc.
4 *
5 * This program is free software; you can redistribute it and/or modify
6 * it under the terms of the GNU General Public License as published by
7 * the Free Software Foundation; either version 2 of the License, or
8 * (at your option) any later version.
9 *
10 * This program is distributed in the hope that it will be useful,
11 * but WITHOUT ANY WARRANTY; without even the implied warranty of
12 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 * GNU General Public License for more details.
14 *
15 * You should have received a copy of the GNU General Public License
16 * along with this program; if not, write to the Free Software
17 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
18 *
19 * $Id$
20 */
21
22# ifndef LIBMAD_HUFFMAN_H
23# define LIBMAD_HUFFMAN_H
24
25union huffquad {
26 struct {
27 unsigned short final : 1;
28 unsigned short bits : 3;
29 unsigned short offset : 12;
30 } ptr;
31 struct {
32 unsigned short final : 1;
33 unsigned short hlen : 3;
34 unsigned short v : 1;
35 unsigned short w : 1;
36 unsigned short x : 1;
37 unsigned short y : 1;
38 } value;
39 unsigned short final : 1;
40};
41
42union huffpair {
43 struct {
44 unsigned short final : 1;
45 unsigned short bits : 3;
46 unsigned short offset : 12;
47 } ptr;
48 struct {
49 unsigned short final : 1;
50 unsigned short hlen : 3;
51 unsigned short x : 4;
52 unsigned short y : 4;
53 } value;
54 unsigned short final : 1;
55};
56
57struct hufftable {
58 union huffpair const *table;
59 unsigned short linbits;
60 unsigned short startbits;
61};
62
63extern union huffquad const *const mad_huff_quad_table[2];
64extern struct hufftable const mad_huff_pair_table[32];
65
66# endif
diff --git a/lib/rbcodec/codecs/libmad/imdct_l_arm.S b/lib/rbcodec/codecs/libmad/imdct_l_arm.S
new file mode 100644
index 0000000000..b511ff169d
--- /dev/null
+++ b/lib/rbcodec/codecs/libmad/imdct_l_arm.S
@@ -0,0 +1,1001 @@
1/*****************************************************************************
2* Copyright (C) 2000-2001 Andre McCurdy <armccurdy@yahoo.co.uk>
3*
4* This program is free software. you can redistribute it and/or modify
5* it under the terms of the GNU General Public License as published by
6* the Free Software Foundation@ either version 2 of the License, or
7* (at your option) any later version.
8*
9* This program is distributed in the hope that it will be useful,
10* but WITHOUT ANY WARRANTY, without even the implied warranty of
11* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12* GNU General Public License for more details.
13*
14* You should have received a copy of the GNU General Public License
15* along with this program@ if not, write to the Free Software
16* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
17*
18*****************************************************************************
19*
20* Notes:
21*
22*
23*****************************************************************************
24*
25* $Id$
26*
27* 2001/03/24: Andre McCurdy <armccurdy@yahoo.co.uk>
28* - Corrected PIC unsafe loading of address of 'imdct36_long_karray'
29*
30* 2000/09/20: Robert Leslie <rob@mars.org>
31* - Added a global symbol with leading underscore per suggestion of
32* Simon Burge to support linking with the a.out format.
33*
34* 2000/09/15: Robert Leslie <rob@mars.org>
35* - Fixed a small bug where flags were changed before a conditional branch.
36*
37* 2000/09/15: Andre McCurdy <armccurdy@yahoo.co.uk>
38* - Applied Nicolas Pitre's rounding optimisation in all remaining places.
39*
40* 2000/09/09: Nicolas Pitre <nico@cam.org>
41* - Optimized rounding + scaling operations.
42*
43* 2000/08/09: Andre McCurdy <armccurdy@yahoo.co.uk>
44* - Original created.
45*
46****************************************************************************/
47
48#include "config.h"
49
50/*
51 On entry:
52
53 r0 = pointer to 18 element input array
54 r1 = pointer to 36 element output array
55 r2 = windowing block type
56
57
58 Stack frame created during execution of the function:
59
60 Initial Holds:
61 Stack
62 pointer
63 minus:
64
65 0
66 4 lr
67 8 r11
68 12 r10
69 16 r9
70 20 r8
71 24 r7
72 28 r6
73 32 r5
74 36 r4
75
76 40 r2 : windowing block type
77
78 44 ct00 high
79 48 ct00 low
80 52 ct01 high
81 56 ct01 low
82 60 ct04 high
83 64 ct04 low
84 68 ct06 high
85 72 ct06 low
86 76 ct05 high
87 80 ct05 low
88 84 ct03 high
89 88 ct03 low
90 92 -ct05 high
91 96 -ct05 low
92 100 -ct07 high
93 104 -ct07 low
94 108 ct07 high
95 112 ct07 low
96 116 ct02 high
97 120 ct02 low
98*/
99
100#define BLOCK_MODE_NORMAL 0
101#define BLOCK_MODE_START 1
102#define BLOCK_MODE_STOP 3
103
104
105#define X0 0x00
106#define X1 0x04
107#define X2 0x08
108#define X3 0x0C
109#define X4 0x10
110#define X5 0x14
111#define X6 0x18
112#define X7 0x1c
113#define X8 0x20
114#define X9 0x24
115#define X10 0x28
116#define X11 0x2c
117#define X12 0x30
118#define X13 0x34
119#define X14 0x38
120#define X15 0x3c
121#define X16 0x40
122#define X17 0x44
123
124#define x0 0x00
125#define x1 0x04
126#define x2 0x08
127#define x3 0x0C
128#define x4 0x10
129#define x5 0x14
130#define x6 0x18
131#define x7 0x1c
132#define x8 0x20
133#define x9 0x24
134#define x10 0x28
135#define x11 0x2c
136#define x12 0x30
137#define x13 0x34
138#define x14 0x38
139#define x15 0x3c
140#define x16 0x40
141#define x17 0x44
142#define x18 0x48
143#define x19 0x4c
144#define x20 0x50
145#define x21 0x54
146#define x22 0x58
147#define x23 0x5c
148#define x24 0x60
149#define x25 0x64
150#define x26 0x68
151#define x27 0x6c
152#define x28 0x70
153#define x29 0x74
154#define x30 0x78
155#define x31 0x7c
156#define x32 0x80
157#define x33 0x84
158#define x34 0x88
159#define x35 0x8c
160
161#define K00 0x0ffc19fd
162#define K01 0x00b2aa3e
163#define K02 0x0fdcf549
164#define K03 0x0216a2a2
165#define K04 0x0f9ee890
166#define K05 0x03768962
167#define K06 0x0f426cb5
168#define K07 0x04cfb0e2
169#define K08 0x0ec835e8
170#define K09 0x061f78aa
171#define K10 0x0e313245
172#define K11 0x07635284
173#define K12 0x0d7e8807
174#define K13 0x0898c779
175#define K14 0x0cb19346
176#define K15 0x09bd7ca0
177#define K16 0x0bcbe352
178#define K17 0x0acf37ad
179
180#define minus_K02 0xf0230ab7
181
182#define WL0 0x00b2aa3e
183#define WL1 0x0216a2a2
184#define WL2 0x03768962
185#define WL3 0x04cfb0e2
186#define WL4 0x061f78aa
187#define WL5 0x07635284
188#define WL6 0x0898c779
189#define WL7 0x09bd7ca0
190#define WL8 0x0acf37ad
191#define WL9 0x0bcbe352
192#define WL10 0x0cb19346
193#define WL11 0x0d7e8807
194#define WL12 0x0e313245
195#define WL13 0x0ec835e8
196#define WL14 0x0f426cb5
197#define WL15 0x0f9ee890
198#define WL16 0x0fdcf549
199#define WL17 0x0ffc19fd
200
201
202@*****************************************************************************
203
204
205 .text
206 .align
207
208 .global III_imdct_l
209 .global _III_imdct_l
210
211III_imdct_l:
212_III_imdct_l:
213
214 stmdb sp!, { r2, r4 - r11, lr } @ all callee saved regs, plus arg3
215
216 ldr r4, =K08 @ r4 = K08
217 ldr r5, =K09 @ r5 = K09
218 ldr r8, [r0, #X4] @ r8 = X4
219 ldr r9, [r0, #X13] @ r9 = X13
220 rsb r6, r4, #0 @ r6 = -K08
221 rsb r7, r5, #0 @ r7 = -K09
222
223 smull r2, r3, r4, r8 @ r2..r3 = (X4 * K08)
224 smlal r2, r3, r5, r9 @ r2..r3 = (X4 * K08) + (X13 * K09) = ct01
225
226 smull r10, lr, r8, r5 @ r10..lr = (X4 * K09)
227 smlal r10, lr, r9, r6 @ r10..lr = (X4 * K09) + (X13 * -K08) = ct00
228
229 ldr r8, [r0, #X7] @ r8 = X7
230 ldr r9, [r0, #X16] @ r9 = X16
231
232 stmdb sp!, { r2, r3, r10, lr } @ stack ct00_h, ct00_l, ct01_h, ct01_l
233
234 add r8, r8, r9 @ r8 = (X7 + X16)
235 ldr r9, [r0, #X1] @ r9 = X1
236
237 smlal r2, r3, r6, r8 @ r2..r3 = ct01 + ((X7 + X16) * -K08)
238 smlal r2, r3, r7, r9 @ r2..r3 += (X1 * -K09)
239
240 ldr r7, [r0, #X10] @ r7 = X10
241
242 rsbs r10, r10, #0
243 rsc lr, lr, #0 @ r10..lr = -ct00
244
245 smlal r2, r3, r5, r7 @ r2..r3 += (X10 * K09) = ct06
246
247 smlal r10, lr, r9, r6 @ r10..lr = -ct00 + ( X1 * -K08)
248 smlal r10, lr, r8, r5 @ r10..lr += ((X7 + X16) * K09)
249 smlal r10, lr, r7, r4 @ r10..lr += ( X10 * K08) = ct04
250
251 stmdb sp!, { r2, r3, r10, lr } @ stack ct04_h, ct04_l, ct06_h, ct06_l
252
253 @----
254
255 ldr r7, [r0, #X0]
256 ldr r8, [r0, #X11]
257 ldr r9, [r0, #X12]
258 sub r7, r7, r8
259 sub r7, r7, r9 @ r7 = (X0 - X11 -X12) = ct14
260
261 ldr r9, [r0, #X3]
262 ldr r8, [r0, #X8]
263 ldr r11, [r0, #X15]
264 sub r8, r8, r9
265 add r8, r8, r11 @ r8 = (X8 - X3 + X15) = ct16
266
267 add r11, r7, r8 @ r11 = ct14 + ct16 = ct18
268
269 smlal r2, r3, r6, r11 @ r2..r3 = ct06 + ((X0 - X11 - X3 + X15 + X8 - X12) * -K08)
270
271 ldr r6, [r0, #X2]
272 ldr r9, [r0, #X9]
273 ldr r12, [r0, #X14]
274 sub r6, r6, r9
275 sub r6, r6, r12 @ r6 = (X2 - X9 - X14) = ct15
276
277 ldr r9, [r0, #X5]
278 ldr r12, [r0, #X6]
279 sub r9, r9, r12
280 ldr r12, [r0, #X17]
281 sub r9, r9, r12 @ r9 = (X5 - X6 - X17) = ct17
282
283 add r12, r9, r6 @ r12 = ct15 + ct17 = ct19
284
285 smlal r2, r3, r5, r12 @ r2..r3 += ((X2 - X9 + X5 - X6 - X17 - X14) * K09)
286
287 smlal r10, lr, r11, r5 @ r10..lr = ct04 + (ct18 * K09)
288 smlal r10, lr, r12, r4 @ r10..lr = ct04 + (ct18 * K09) + (ct19 * K08)
289
290 movs r2, r2, lsr #28
291 adc r2, r2, r3, lsl #4 @ r2 = bits[59..28] of r2..r3
292 str r2, [r1, #x22] @ store result x22
293
294 movs r10, r10, lsr #28
295 adc r10, r10, lr, lsl #4 @ r10 = bits[59..28] of r10..lr
296 str r10, [r1, #x4] @ store result x4
297
298 @----
299
300 ldmia sp, { r2, r3, r4, r5 } @ r2..r3 = ct06, r4..r5 = ct04 (dont update sp)
301
302 @ r2..r3 = ct06
303 @ r4..r5 = ct04
304 @ r6 = ct15
305 @ r7 = ct14
306 @ r8 = ct16
307 @ r9 = ct17
308 @ r10 = .
309 @ r11 = .
310 @ r12 = .
311 @ lr = .
312
313 ldr r10, =K03 @ r10 = K03
314 ldr lr, =K15 @ lr = K15
315
316 smlal r2, r3, r10, r7 @ r2..r3 = ct06 + (ct14 * K03)
317 smlal r4, r5, lr, r7 @ r4..r5 = ct04 + (ct14 * K15)
318
319 ldr r12, =K14 @ r12 = K14
320 rsb r10, r10, #0 @ r10 = -K03
321
322 smlal r2, r3, lr, r6 @ r2..r3 += (ct15 * K15)
323 smlal r4, r5, r10, r6 @ r4..r5 += (ct15 * -K03)
324 smlal r2, r3, r12, r8 @ r2..r3 += (ct16 * K14)
325
326 ldr r11, =minus_K02 @ r11 = -K02
327 rsb r12, r12, #0 @ r12 = -K14
328
329 smlal r4, r5, r12, r9 @ r4..r5 += (ct17 * -K14)
330 smlal r2, r3, r11, r9 @ r2..r3 += (ct17 * -K02)
331 smlal r4, r5, r11, r8 @ r4..r5 += (ct16 * -K02)
332
333 movs r2, r2, lsr #28
334 adc r2, r2, r3, lsl #4 @ r2 = bits[59..28] of r2..r3
335 str r2, [r1, #x7] @ store result x7
336
337 movs r4, r4, lsr #28
338 adc r4, r4, r5, lsl #4 @ r4 = bits[59..28] of r4..r5
339 str r4, [r1, #x1] @ store result x1
340
341 @----
342
343 ldmia sp, { r2, r3, r4, r5 } @ r2..r3 = ct06, r4..r5 = ct04 (dont update sp)
344
345 @ r2..r3 = ct06
346 @ r4..r5 = ct04
347 @ r6 = ct15
348 @ r7 = ct14
349 @ r8 = ct16
350 @ r9 = ct17
351 @ r10 = -K03
352 @ r11 = -K02
353 @ r12 = -K14
354 @ lr = K15
355
356 rsbs r2, r2, #0
357 rsc r3, r3, #0 @ r2..r3 = -ct06
358
359 smlal r2, r3, r12, r7 @ r2..r3 = -ct06 + (ct14 * -K14)
360 smlal r2, r3, r10, r8 @ r2..r3 += (ct16 * -K03)
361
362 smlal r4, r5, r12, r6 @ r4..r5 = ct04 + (ct15 * -K14)
363 smlal r4, r5, r10, r9 @ r4..r5 += (ct17 * -K03)
364 smlal r4, r5, lr, r8 @ r4..r5 += (ct16 * K15)
365 smlal r4, r5, r11, r7 @ r4..r5 += (ct14 * -K02)
366
367 rsb lr, lr, #0 @ lr = -K15
368 rsb r11, r11, #0 @ r11 = K02
369
370 smlal r2, r3, lr, r9 @ r2..r3 += (ct17 * -K15)
371 smlal r2, r3, r11, r6 @ r2..r3 += (ct15 * K02)
372
373 movs r4, r4, lsr #28
374 adc r4, r4, r5, lsl #4 @ r4 = bits[59..28] of r4..r5
375 str r4, [r1, #x25] @ store result x25
376
377 movs r2, r2, lsr #28
378 adc r2, r2, r3, lsl #4 @ r2 = bits[59..28] of r2..r3
379 str r2, [r1, #x19] @ store result x19
380
381 @----
382
383 ldr r2, [sp, #16] @ r2 = ct01_l
384 ldr r3, [sp, #20] @ r3 = ct01_h
385
386 ldr r6, [r0, #X1]
387 ldr r8, [r0, #X7]
388 ldr r9, [r0, #X10]
389 ldr r7, [r0, #X16]
390
391 rsbs r2, r2, #0
392 rsc r3, r3, #0 @ r2..r3 = -ct01
393
394 mov r4, r2
395 mov r5, r3 @ r4..r5 = -ct01
396
397 @ r2..r3 = -ct01
398 @ r4..r5 = -ct01
399 @ r6 = X1
400 @ r7 = X16
401 @ r8 = X7
402 @ r9 = X10
403 @ r10 = -K03
404 @ r11 = K02
405 @ r12 = -K14
406 @ lr = -K15
407
408 smlal r4, r5, r12, r7 @ r4..r5 = -ct01 + (X16 * -K14)
409 smlal r2, r3, lr, r9 @ r2..r3 = -ct01 + (X10 * -K15)
410
411 smlal r4, r5, r10, r8 @ r4..r5 += (X7 * -K03)
412 smlal r2, r3, r10, r7 @ r2..r3 += (X16 * -K03)
413
414 smlal r4, r5, r11, r9 @ r4..r5 += (X10 * K02)
415 smlal r2, r3, r12, r8 @ r2..r3 += (X7 * -K14)
416
417 rsb lr, lr, #0 @ lr = K15
418 rsb r11, r11, #0 @ r11 = -K02
419
420 smlal r4, r5, lr, r6 @ r4..r5 += (X1 * K15) = ct05
421 smlal r2, r3, r11, r6 @ r2..r3 += (X1 * -K02) = ct03
422
423 stmdb sp!, { r2, r3, r4, r5 } @ stack ct05_h, ct05_l, ct03_h, ct03_l
424
425 rsbs r4, r4, #0
426 rsc r5, r5, #0 @ r4..r5 = -ct05
427
428 stmdb sp!, { r4, r5 } @ stack -ct05_h, -ct05_l
429
430 ldr r2, [sp, #48] @ r2 = ct00_l
431 ldr r3, [sp, #52] @ r3 = ct00_h
432
433 rsb r10, r10, #0 @ r10 = K03
434
435 rsbs r4, r2, #0
436 rsc r5, r3, #0 @ r4..r5 = -ct00
437
438 @ r2..r3 = ct00
439 @ r4..r5 = -ct00
440 @ r6 = X1
441 @ r7 = X16
442 @ r8 = X7
443 @ r9 = X10
444 @ r10 = K03
445 @ r11 = -K02
446 @ r12 = -K14
447 @ lr = K15
448
449 smlal r4, r5, r10, r6 @ r4..r5 = -ct00 + (X1 * K03)
450 smlal r2, r3, r10, r9 @ r2..r3 = ct00 + (X10 * K03)
451
452 smlal r4, r5, r12, r9 @ r4..r5 += (X10 * -K14)
453 smlal r2, r3, r12, r6 @ r2..r3 += (X1 * -K14)
454
455 smlal r4, r5, r11, r7 @ r4..r5 += (X16 * -K02)
456 smlal r4, r5, lr, r8 @ r4..r5 += (X7 * K15) = ct07
457
458 rsb lr, lr, #0 @ lr = -K15
459 rsb r11, r11, #0 @ r11 = K02
460
461 smlal r2, r3, r11, r8 @ r2..r3 += (X7 * K02)
462 smlal r2, r3, lr, r7 @ r2..r3 += (X16 * -K15) = ct02
463
464 rsbs r6, r4, #0
465 rsc r7, r5, #0 @ r6..r7 = -ct07
466
467 stmdb sp!, { r2 - r7 } @ stack -ct07_h, -ct07_l, ct07_h, ct07_l, ct02_h, ct02_l
468
469
470 @----
471
472 add r2, pc, #(imdct36_long_karray-.-8) @ r2 = base address of Knn array (PIC safe ?)
473
474
475loop:
476 ldr r12, [r0, #X0]
477
478 ldmia r2!, { r5 - r11 } @ first 7 words from Karray element
479
480 smull r3, r4, r5, r12 @ sum = (Kxx * X0)
481 ldr r12, [r0, #X2]
482 ldr r5, [r0, #X3]
483 smlal r3, r4, r6, r12 @ sum += (Kxx * X2)
484 ldr r12, [r0, #X5]
485 ldr r6, [r0, #X6]
486 smlal r3, r4, r7, r5 @ sum += (Kxx * X3)
487 smlal r3, r4, r8, r12 @ sum += (Kxx * X5)
488 ldr r12, [r0, #X8]
489 ldr r5, [r0, #X9]
490 smlal r3, r4, r9, r6 @ sum += (Kxx * X6)
491 smlal r3, r4, r10, r12 @ sum += (Kxx * X8)
492 smlal r3, r4, r11, r5 @ sum += (Kxx * X9)
493
494 ldmia r2!, { r5 - r10 } @ final 6 words from Karray element
495
496 ldr r11, [r0, #X11]
497 ldr r12, [r0, #X12]
498 smlal r3, r4, r5, r11 @ sum += (Kxx * X11)
499 ldr r11, [r0, #X14]
500 ldr r5, [r0, #X15]
501 smlal r3, r4, r6, r12 @ sum += (Kxx * X12)
502 smlal r3, r4, r7, r11 @ sum += (Kxx * X14)
503 ldr r11, [r0, #X17]
504 smlal r3, r4, r8, r5 @ sum += (Kxx * X15)
505 smlal r3, r4, r9, r11 @ sum += (Kxx * X17)
506
507 add r5, sp, r10, lsr #16 @ create index back into stack for required ctxx
508
509 ldmia r5, { r6, r7 } @ r6..r7 = ctxx
510
511 mov r8, r10, lsl #16 @ push ctxx index off the top end
512
513 adds r3, r3, r6 @ add low words
514 adc r4, r4, r7 @ add high words, with carry
515 movs r3, r3, lsr #28
516 adc r3, r3, r4, lsl #4 @ r3 = bits[59..28] of r3..r4
517
518 str r3, [r1, r8, lsr #24] @ push completion flag off the bottom end
519
520 movs r8, r8, lsl #8 @ push result location index off the top end
521 beq loop @ loop back if completion flag not set
522 b imdct_l_windowing @ branch to windowing stage if looping finished
523
524imdct36_long_karray:
525
526 .word K17, -K13, K10, -K06, -K05, K01, -K00, K04, -K07, K11, K12, -K16, 0x00000000
527 .word K13, K07, K16, K01, K10, -K05, K04, -K11, K00, -K17, K06, -K12, 0x00200800
528 .word K11, K17, K05, K12, -K01, K06, -K07, K00, -K13, K04, -K16, K10, 0x00200c00
529 .word K07, K00, -K12, K05, -K16, -K10, K11, -K17, K04, K13, K01, K06, 0x00001400
530 .word K05, K10, -K00, -K17, K07, -K13, K12, K06, -K16, K01, -K11, -K04, 0x00181800
531 .word K01, K05, -K07, -K11, K13, K17, -K16, -K12, K10, K06, -K04, -K00, 0x00102000
532 .word -K16, K12, -K11, K07, K04, -K00, -K01, K05, -K06, K10, K13, -K17, 0x00284800
533 .word -K12, K06, K17, -K00, -K11, K04, K05, -K10, K01, K16, -K07, -K13, 0x00085000
534 .word -K10, K16, K04, -K13, -K00, K07, K06, -K01, -K12, -K05, K17, K11, 0x00105400
535 .word -K06, -K01, K13, K04, K17, -K11, -K10, -K16, -K05, K12, K00, K07, 0x00185c00
536 .word -K04, -K11, -K01, K16, K06, K12, K13, -K07, -K17, -K00, -K10, -K05, 0x00006000
537 .word -K00, -K04, -K06, -K10, -K12, -K16, -K17, -K13, -K11, -K07, -K05, -K01, 0x00206801
538
539
540 @----
541 @-------------------------------------------------------------------------
542 @----
543
544imdct_l_windowing:
545
546 ldr r11, [sp, #80] @ fetch function parameter 3 from out of the stack
547 ldmia r1!, { r0, r2 - r9 } @ load 9 words from x0, update pointer
548
549 @ r0 = x0
550 @ r1 = &x[9]
551 @ r2 = x1
552 @ r3 = x2
553 @ r4 = x3
554 @ r5 = x4
555 @ r6 = x5
556 @ r7 = x6
557 @ r8 = x7
558 @ r9 = x8
559 @ r10 = .
560 @ r11 = window mode: (0 == normal), (1 == start block), (3 == stop block)
561 @ r12 = .
562 @ lr = .
563
564 cmp r11, #BLOCK_MODE_STOP @ setup flags
565 rsb r10, r0, #0 @ r10 = -x0 (DONT change flags !!)
566 beq stop_block_x0_to_x17
567
568
569 @ start and normal blocks are treated the same for x[0]..x[17]
570
571normal_block_x0_to_x17:
572
573 ldr r12, =WL9 @ r12 = window_l[9]
574
575 rsb r0, r9, #0 @ r0 = -x8
576 rsb r9, r2, #0 @ r9 = -x1
577 rsb r2, r8, #0 @ r2 = -x7
578 rsb r8, r3, #0 @ r8 = -x2
579 rsb r3, r7, #0 @ r3 = -x6
580 rsb r7, r4, #0 @ r7 = -x3
581 rsb r4, r6, #0 @ r4 = -x5
582 rsb r6, r5, #0 @ r6 = -x4
583
584 @ r0 = -x8
585 @ r1 = &x[9]
586 @ r2 = -x7
587 @ r3 = -x6
588 @ r4 = -x5
589 @ r5 = .
590 @ r6 = -x4
591 @ r7 = -x3
592 @ r8 = -x2
593 @ r9 = -x1
594 @ r10 = -x0
595 @ r11 = window mode: (0 == normal), (1 == start block), (3 == stop block)
596 @ r12 = window_l[9]
597 @ lr = .
598
599 smull r5, lr, r12, r0 @ r5..lr = (window_l[9] * (x[9] == -x[8]))
600 ldr r12, =WL10 @ r12 = window_l[10]
601 movs r5, r5, lsr #28
602 adc r0, r5, lr, lsl #4 @ r0 = bits[59..28] of windowed x9
603
604 smull r5, lr, r12, r2 @ r5..lr = (window_l[10] * (x[10] == -x[7]))
605 ldr r12, =WL11 @ r12 = window_l[11]
606 movs r5, r5, lsr #28
607 adc r2, r5, lr, lsl #4 @ r2 = bits[59..28] of windowed x10
608
609 smull r5, lr, r12, r3 @ r5..lr = (window_l[11] * (x[11] == -x[6]))
610 ldr r12, =WL12 @ r12 = window_l[12]
611 movs r5, r5, lsr #28
612 adc r3, r5, lr, lsl #4 @ r3 = bits[59..28] of windowed x11
613
614 smull r5, lr, r12, r4 @ r5..lr = (window_l[12] * (x[12] == -x[5]))
615 ldr r12, =WL13 @ r12 = window_l[13]
616 movs r5, r5, lsr #28
617 adc r4, r5, lr, lsl #4 @ r4 = bits[59..28] of windowed x12
618
619 smull r5, lr, r12, r6 @ r5..lr = (window_l[13] * (x[13] == -x[4]))
620 ldr r12, =WL14 @ r12 = window_l[14]
621 movs r5, r5, lsr #28
622 adc r6, r5, lr, lsl #4 @ r6 = bits[59..28] of windowed x13
623
624 smull r5, lr, r12, r7 @ r5..lr = (window_l[14] * (x[14] == -x[3]))
625 ldr r12, =WL15 @ r12 = window_l[15]
626 movs r5, r5, lsr #28
627 adc r7, r5, lr, lsl #4 @ r7 = bits[59..28] of windowed x14
628
629 smull r5, lr, r12, r8 @ r5..lr = (window_l[15] * (x[15] == -x[2]))
630 ldr r12, =WL16 @ r12 = window_l[16]
631 movs r5, r5, lsr #28
632 adc r8, r5, lr, lsl #4 @ r8 = bits[59..28] of windowed x15
633
634 smull r5, lr, r12, r9 @ r5..lr = (window_l[16] * (x[16] == -x[1]))
635 ldr r12, =WL17 @ r12 = window_l[17]
636 movs r5, r5, lsr #28
637 adc r9, r5, lr, lsl #4 @ r9 = bits[59..28] of windowed x16
638
639 smull r5, lr, r12, r10 @ r5..lr = (window_l[17] * (x[17] == -x[0]))
640 ldr r12, =WL0 @ r12 = window_l[0]
641 movs r5, r5, lsr #28
642 adc r10, r5, lr, lsl #4 @ r10 = bits[59..28] of windowed x17
643
644
645 stmia r1, { r0, r2 - r4, r6 - r10 } @ store windowed x[9] .. x[17]
646 ldmdb r1!, { r0, r2 - r9 } @ load 9 words downto (and including) x0
647
648
649 smull r10, lr, r12, r0 @ r10..lr = (window_l[0] * x[0])
650 ldr r12, =WL1 @ r12 = window_l[1]
651 movs r10, r10, lsr #28
652 adc r0, r10, lr, lsl #4 @ r0 = bits[59..28] of windowed x0
653
654 smull r10, lr, r12, r2 @ r10..lr = (window_l[1] * x[1])
655 ldr r12, =WL2 @ r12 = window_l[2]
656 movs r10, r10, lsr #28
657 adc r2, r10, lr, lsl #4 @ r2 = bits[59..28] of windowed x1
658
659 smull r10, lr, r12, r3 @ r10..lr = (window_l[2] * x[2])
660 ldr r12, =WL3 @ r12 = window_l[3]
661 movs r10, r10, lsr #28
662 adc r3, r10, lr, lsl #4 @ r3 = bits[59..28] of windowed x2
663
664 smull r10, lr, r12, r4 @ r10..lr = (window_l[3] * x[3])
665 ldr r12, =WL4 @ r12 = window_l[4]
666 movs r10, r10, lsr #28
667 adc r4, r10, lr, lsl #4 @ r4 = bits[59..28] of windowed x3
668
669 smull r10, lr, r12, r5 @ r10..lr = (window_l[4] * x[4])
670 ldr r12, =WL5 @ r12 = window_l[5]
671 movs r10, r10, lsr #28
672 adc r5, r10, lr, lsl #4 @ r5 = bits[59..28] of windowed x4
673
674 smull r10, lr, r12, r6 @ r10..lr = (window_l[5] * x[5])
675 ldr r12, =WL6 @ r12 = window_l[6]
676 movs r10, r10, lsr #28
677 adc r6, r10, lr, lsl #4 @ r6 = bits[59..28] of windowed x5
678
679 smull r10, lr, r12, r7 @ r10..lr = (window_l[6] * x[6])
680 ldr r12, =WL7 @ r12 = window_l[7]
681 movs r10, r10, lsr #28
682 adc r7, r10, lr, lsl #4 @ r7 = bits[59..28] of windowed x6
683
684 smull r10, lr, r12, r8 @ r10..lr = (window_l[7] * x[7])
685 ldr r12, =WL8 @ r12 = window_l[8]
686 movs r10, r10, lsr #28
687 adc r8, r10, lr, lsl #4 @ r8 = bits[59..28] of windowed x7
688
689 smull r10, lr, r12, r9 @ r10..lr = (window_l[8] * x[8])
690 movs r10, r10, lsr #28
691 adc r9, r10, lr, lsl #4 @ r9 = bits[59..28] of windowed x8
692
693 stmia r1, { r0, r2 - r9 } @ store windowed x[0] .. x[8]
694
695 cmp r11, #BLOCK_MODE_START
696 beq start_block_x18_to_x35
697
698
699 @----
700
701
702normal_block_x18_to_x35:
703
704 ldr r11, =WL3 @ r11 = window_l[3]
705 ldr r12, =WL4 @ r12 = window_l[4]
706
707 add r1, r1, #(18*4) @ r1 = &x[18]
708
709 ldmia r1!, { r0, r2 - r4, r6 - r10 } @ load 9 words from x18, update pointer
710
711 @ r0 = x18
712 @ r1 = &x[27]
713 @ r2 = x19
714 @ r3 = x20
715 @ r4 = x21
716 @ r5 = .
717 @ r6 = x22
718 @ r7 = x23
719 @ r8 = x24
720 @ r9 = x25
721 @ r10 = x26
722 @ r11 = window_l[3]
723 @ r12 = window_l[4]
724 @ lr = .
725
726 smull r5, lr, r12, r6 @ r5..lr = (window_l[4] * (x[22] == x[31]))
727 movs r5, r5, lsr #28
728 adc r5, r5, lr, lsl #4 @ r5 = bits[59..28] of windowed x31
729
730 smull r6, lr, r11, r4 @ r5..lr = (window_l[3] * (x[21] == x[32]))
731 ldr r12, =WL5 @ r12 = window_l[5]
732 movs r6, r6, lsr #28
733 adc r6, r6, lr, lsl #4 @ r6 = bits[59..28] of windowed x32
734
735 smull r4, lr, r12, r7 @ r4..lr = (window_l[5] * (x[23] == x[30]))
736 ldr r11, =WL1 @ r11 = window_l[1]
737 ldr r12, =WL2 @ r12 = window_l[2]
738 movs r4, r4, lsr #28
739 adc r4, r4, lr, lsl #4 @ r4 = bits[59..28] of windowed x30
740
741 smull r7, lr, r12, r3 @ r7..lr = (window_l[2] * (x[20] == x[33]))
742 ldr r12, =WL6 @ r12 = window_l[6]
743 movs r7, r7, lsr #28
744 adc r7, r7, lr, lsl #4 @ r7 = bits[59..28] of windowed x33
745
746 smull r3, lr, r12, r8 @ r3..lr = (window_l[6] * (x[24] == x[29]))
747 movs r3, r3, lsr #28
748 adc r3, r3, lr, lsl #4 @ r3 = bits[59..28] of windowed x29
749
750 smull r8, lr, r11, r2 @ r7..lr = (window_l[1] * (x[19] == x[34]))
751 ldr r12, =WL7 @ r12 = window_l[7]
752 ldr r11, =WL8 @ r11 = window_l[8]
753 movs r8, r8, lsr #28
754 adc r8, r8, lr, lsl #4 @ r8 = bits[59..28] of windowed x34
755
756 smull r2, lr, r12, r9 @ r7..lr = (window_l[7] * (x[25] == x[28]))
757 ldr r12, =WL0 @ r12 = window_l[0]
758 movs r2, r2, lsr #28
759 adc r2, r2, lr, lsl #4 @ r2 = bits[59..28] of windowed x28
760
761 smull r9, lr, r12, r0 @ r3..lr = (window_l[0] * (x[18] == x[35]))
762 movs r9, r9, lsr #28
763 adc r9, r9, lr, lsl #4 @ r9 = bits[59..28] of windowed x35
764
765 smull r0, lr, r11, r10 @ r7..lr = (window_l[8] * (x[26] == x[27]))
766 ldr r11, =WL16 @ r11 = window_l[16]
767 ldr r12, =WL17 @ r12 = window_l[17]
768 movs r0, r0, lsr #28
769 adc r0, r0, lr, lsl #4 @ r0 = bits[59..28] of windowed x27
770
771
772 stmia r1, { r0, r2 - r9 } @ store windowed x[27] .. x[35]
773 ldmdb r1!, { r0, r2 - r9 } @ load 9 words downto (and including) x18
774
775
776 smull r10, lr, r12, r0 @ r10..lr = (window_l[17] * x[18])
777 movs r10, r10, lsr #28
778 adc r0, r10, lr, lsl #4 @ r0 = bits[59..28] of windowed x0
779
780 smull r10, lr, r11, r2 @ r10..lr = (window_l[16] * x[19])
781 ldr r11, =WL14 @ r11 = window_l[14]
782 ldr r12, =WL15 @ r12 = window_l[15]
783 movs r10, r10, lsr #28
784 adc r2, r10, lr, lsl #4 @ r2 = bits[59..28] of windowed x1
785
786 smull r10, lr, r12, r3 @ r10..lr = (window_l[15] * x[20])
787 movs r10, r10, lsr #28
788 adc r3, r10, lr, lsl #4 @ r3 = bits[59..28] of windowed x2
789
790 smull r10, lr, r11, r4 @ r10..lr = (window_l[14] * x[21])
791 ldr r11, =WL12 @ r11 = window_l[12]
792 ldr r12, =WL13 @ r12 = window_l[13]
793 movs r10, r10, lsr #28
794 adc r4, r10, lr, lsl #4 @ r4 = bits[59..28] of windowed x3
795
796 smull r10, lr, r12, r5 @ r10..lr = (window_l[13] * x[22])
797 movs r10, r10, lsr #28
798 adc r5, r10, lr, lsl #4 @ r5 = bits[59..28] of windowed x4
799
800 smull r10, lr, r11, r6 @ r10..lr = (window_l[12] * x[23])
801 ldr r11, =WL10 @ r12 = window_l[10]
802 ldr r12, =WL11 @ r12 = window_l[11]
803 movs r10, r10, lsr #28
804 adc r6, r10, lr, lsl #4 @ r6 = bits[59..28] of windowed x5
805
806 smull r10, lr, r12, r7 @ r10..lr = (window_l[11] * x[24])
807 movs r10, r10, lsr #28
808 adc r7, r10, lr, lsl #4 @ r7 = bits[59..28] of windowed x6
809
810 smull r10, lr, r11, r8 @ r10..lr = (window_l[10] * x[25])
811 ldr r12, =WL9 @ r12 = window_l[9]
812 movs r10, r10, lsr #28
813 adc r8, r10, lr, lsl #4 @ r8 = bits[59..28] of windowed x7
814
815 smull r10, lr, r12, r9 @ r10..lr = (window_l[9] * x[26])
816
817 movs r10, r10, lsr #28
818 adc r9, r10, lr, lsl #4 @ r9 = bits[59..28] of windowed x8
819
820 stmia r1, { r0, r2 - r9 } @ store windowed x[18] .. x[26]
821
822 @----
823 @ NB there are 2 possible exits from this function - this is only one of them
824 @----
825
826 add sp, sp, #(21*4) @ return stack frame
827 ldmpc regs=r4-r11 @ restore callee saved regs, and return
828
829 @----
830
831
832stop_block_x0_to_x17:
833
834 @ r0 = x0
835 @ r1 = &x[9]
836 @ r2 = x1
837 @ r3 = x2
838 @ r4 = x3
839 @ r5 = x4
840 @ r6 = x5
841 @ r7 = x6
842 @ r8 = x7
843 @ r9 = x8
844 @ r10 = -x0
845 @ r11 = window mode: (0 == normal), (1 == start block), (3 == stop block)
846 @ r12 = .
847 @ lr = .
848
849 rsb r0, r6, #0 @ r0 = -x5
850 rsb r6, r2, #0 @ r6 = -x1
851 rsb r2, r5, #0 @ r2 = -x4
852 rsb r5, r3, #0 @ r5 = -x2
853 rsb r3, r4, #0 @ r3 = -x3
854
855 add r1, r1, #(3*4) @ r1 = &x[12]
856 stmia r1, { r0, r2, r3, r5, r6, r10 } @ store unchanged x[12] .. x[17]
857
858 ldr r0, =WL1 @ r0 = window_l[1] == window_s[0]
859
860 rsb r10, r9, #0 @ r10 = -x8
861 rsb r12, r8, #0 @ r12 = -x7
862 rsb lr, r7, #0 @ lr = -x6
863
864 @ r0 = WL1
865 @ r1 = &x[12]
866 @ r2 = .
867 @ r3 = .
868 @ r4 = .
869 @ r5 = .
870 @ r6 = .
871 @ r7 = x6
872 @ r8 = x7
873 @ r9 = x8
874 @ r10 = -x8
875 @ r11 = window mode: (0 == normal), (1 == start block), (3 == stop block)
876 @ r12 = -x7
877 @ lr = -x6
878
879 smull r5, r6, r0, r7 @ r5..r6 = (window_l[1] * x[6])
880 ldr r2, =WL4 @ r2 = window_l[4] == window_s[1]
881 movs r5, r5, lsr #28
882 adc r7, r5, r6, lsl #4 @ r7 = bits[59..28] of windowed x6
883
884 smull r5, r6, r2, r8 @ r5..r6 = (window_l[4] * x[7])
885 ldr r3, =WL7 @ r3 = window_l[7] == window_s[2]
886 movs r5, r5, lsr #28
887 adc r8, r5, r6, lsl #4 @ r8 = bits[59..28] of windowed x7
888
889 smull r5, r6, r3, r9 @ r5..r6 = (window_l[7] * x[8])
890 ldr r4, =WL10 @ r4 = window_l[10] == window_s[3]
891 movs r5, r5, lsr #28
892 adc r9, r5, r6, lsl #4 @ r9 = bits[59..28] of windowed x8
893
894 smull r5, r6, r4, r10 @ r5..r6 = (window_l[10] * (x[9] == -x[8]))
895 ldr r0, =WL13 @ r0 = window_l[13] == window_s[4]
896 movs r5, r5, lsr #28
897 adc r10, r5, r6, lsl #4 @ r10 = bits[59..28] of windowed x9
898
899 smull r5, r6, r0, r12 @ r5..r6 = (window_l[13] * (x[10] == -x[7]))
900 ldr r2, =WL16 @ r2 = window_l[16] == window_s[5]
901 movs r5, r5, lsr #28
902 adc r12, r5, r6, lsl #4 @ r10 = bits[59..28] of windowed x9
903
904 smull r5, r6, r2, lr @ r5..r6 = (window_l[16] * (x[11] == -x[6]))
905
906 ldr r0, =0x00
907
908 movs r5, r5, lsr #28
909 adc lr, r5, r6, lsl #4 @ r10 = bits[59..28] of windowed x9
910
911 stmdb r1!, { r7 - r10, r12, lr } @ store windowed x[6] .. x[11]
912
913 ldr r5, =0x00
914 ldr r6, =0x00
915 ldr r2, =0x00
916 ldr r3, =0x00
917 ldr r4, =0x00
918
919 stmdb r1!, { r0, r2 - r6 } @ store windowed x[0] .. x[5]
920
921 b normal_block_x18_to_x35
922
923
924 @----
925
926
927start_block_x18_to_x35:
928
929 ldr r4, =WL1 @ r0 = window_l[1] == window_s[0]
930
931 add r1, r1, #(24*4) @ r1 = &x[24]
932
933 ldmia r1, { r0, r2, r3 } @ load 3 words from x24, dont update pointer
934
935 @ r0 = x24
936 @ r1 = &x[24]
937 @ r2 = x25
938 @ r3 = x26
939 @ r4 = WL1
940 @ r5 = WL4
941 @ r6 = WL7
942 @ r7 = WL10
943 @ r8 = WL13
944 @ r9 = WL16
945 @ r10 = .
946 @ r11 = .
947 @ r12 = .
948 @ lr = .
949
950 ldr r5, =WL4 @ r5 = window_l[4] == window_s[1]
951
952 smull r10, r11, r4, r0 @ r10..r11 = (window_l[1] * (x[24] == x[29]))
953 ldr r6, =WL7 @ r6 = window_l[7] == window_s[2]
954 movs r10, r10, lsr #28
955 adc lr, r10, r11, lsl #4 @ lr = bits[59..28] of windowed x29
956
957 smull r10, r11, r5, r2 @ r10..r11 = (window_l[4] * (x[25] == x[28]))
958 ldr r7, =WL10 @ r7 = window_l[10] == window_s[3]
959 movs r10, r10, lsr #28
960 adc r12, r10, r11, lsl #4 @ r12 = bits[59..28] of windowed x28
961
962 smull r10, r11, r6, r3 @ r10..r11 = (window_l[7] * (x[26] == x[27]))
963 ldr r8, =WL13 @ r8 = window_l[13] == window_s[4]
964 movs r10, r10, lsr #28
965 adc r4, r10, r11, lsl #4 @ r4 = bits[59..28] of windowed x27
966
967 smull r10, r11, r7, r3 @ r10..r11 = (window_l[10] * x[26])
968 ldr r9, =WL16 @ r9 = window_l[16] == window_s[5]
969 movs r10, r10, lsr #28
970 adc r3, r10, r11, lsl #4 @ r3 = bits[59..28] of windowed x26
971
972 smull r10, r11, r8, r2 @ r10..r11 = (window_l[13] * x[25])
973 ldr r5, =0x00
974 movs r10, r10, lsr #28
975 adc r2, r10, r11, lsl #4 @ r2 = bits[59..28] of windowed x25
976
977 smull r10, r11, r9, r0 @ r10..r11 = (window_l[16] * x[24])
978 ldr r6, =0x00
979 movs r10, r10, lsr #28
980 adc r0, r10, r11, lsl #4 @ r0 = bits[59..28] of windowed x24
981
982 stmia r1!, { r0, r2, r3, r4, r12, lr } @ store windowed x[24] .. x[29]
983
984 ldr r7, =0x00
985 ldr r8, =0x00
986 ldr r9, =0x00
987 ldr r10, =0x00
988
989 stmia r1!, { r5 - r10 } @ store windowed x[30] .. x[35]
990
991 @----
992 @ NB there are 2 possible exits from this function - this is only one of them
993 @----
994
995 add sp, sp, #(21*4) @ return stack frame
996 ldmpc regs=r4-r11 @ restore callee saved regs, and return
997
998 @----
999 @END
1000 @----
1001
diff --git a/lib/rbcodec/codecs/libmad/imdct_mcf5249.S b/lib/rbcodec/codecs/libmad/imdct_mcf5249.S
new file mode 100644
index 0000000000..b5e2a12b0f
--- /dev/null
+++ b/lib/rbcodec/codecs/libmad/imdct_mcf5249.S
@@ -0,0 +1,124 @@
1/***************************************************************************
2 * __________ __ ___.
3 * Open \______ \ ____ ____ | | _\_ |__ _______ ___
4 * Source | _// _ \_/ ___\| |/ /| __ \ / _ \ \/ /
5 * Jukebox | | ( <_> ) \___| < | \_\ ( <_> > < <
6 * Firmware |____|_ /\____/ \___ >__|_ \|___ /\____/__/\_ \
7 * \/ \/ \/ \/ \/
8 * $Id$
9 *
10 * Copyright (C) 2005 by Thom Johansen
11 *
12 * This program is free software; you can redistribute it and/or
13 * modify it under the terms of the GNU General Public License
14 * as published by the Free Software Foundation; either version 2
15 * of the License, or (at your option) any later version.
16 *
17 * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
18 * KIND, either express or implied.
19 *
20 ****************************************************************************/
21/* this will also be the home to III_imdct_l in the future */
22
23 .global III_imdct_s
24III_imdct_s:
25 /* we need to save 9 registers and 36 samples of temp buffer */
26 lea.l (-45*4, %sp), %sp
27 movem.l %d2-%d7/%a2-%a4, (36*4, %sp)
28 move.l (45*4 + 4, %sp), %a2 /* a2 = X */
29 move.l %sp, %a3
30
31 /* IMDCT */
32
33 /* if additional precision is needed in this block, it is possible to
34 * get more low bits out of the accext01 register _before_ doing the
35 * movclrs.
36 */
37 moveq.l #3, %d5 /* we do three outer loop iterations */
38.imdctloop: /* outer loop label */
39 lea.l imdct_s, %a1 /* load pointer to imdct coefs in a1 */
40 movem.l (%a2), %d0-%d4/%a0 /* load some input data in d0-d4/a0 */
41 lea.l (6*4, %a2), %a2
42
43 clr.l %d7 /* clear loop variable */
44 move.l (%a1)+, %a4 /* load imdct coef in a4 */
45.macloop: /* inner loop label */
46 mac.l %d0, %a4, (%a1)+, %a4, %acc0 /* mac sequence */
47 mac.l %d1, %a4, (%a1)+, %a4, %acc0
48 mac.l %d2, %a4, (%a1)+, %a4, %acc0
49 mac.l %d3, %a4, (%a1)+, %a4, %acc0
50 mac.l %d4, %a4, (%a1)+, %a4, %acc0
51 mac.l %a0, %a4, (%a1)+, %a4, %acc0
52 movclr.l %acc0, %d6 /* get result, left shifted once */
53 asl.l #3, %d6 /* one shift free, shift three more */
54 move.l %d6, (%a3, %d7.l*4) /* yptr[i] = result */
55 neg.l %d6
56 neg.l %d7
57 move.l %d6, (5*4, %a3, %d7.l*4) /* yptr[5 - i] = -result */
58 mac.l %d0, %a4, (%a1)+, %a4, %acc0 /* mac sequence */
59 mac.l %d1, %a4, (%a1)+, %a4, %acc0
60 mac.l %d2, %a4, (%a1)+, %a4, %acc0
61 mac.l %d3, %a4, (%a1)+, %a4, %acc0
62 mac.l %d4, %a4, (%a1)+, %a4, %acc0
63 mac.l %a0, %a4, (%a1)+, %a4, %acc0
64 movclr.l %acc0, %d6 /* get result */
65 asl.l #3, %d6
66 move.l %d6, (11*4, %a3, %d7.l*4) /* yptr[11 - i] = result */
67 neg.l %d7
68 move.l %d6, (6*4, %a3, %d7.l*4) /* yptr[i + 6] = result */
69 addq.l #1, %d7 /* increment inner loop variable */
70 moveq.l #3, %d6
71 cmp.l %d6, %d7 /* we do three inner loop iterations */
72 jne .macloop
73
74 lea.l (12*4, %a3), %a3 /* add pointer increment */
75 subq.l #1, %d5 /* decrement outer loop variable */
76 jne .imdctloop
77
78 /* windowing, overlapping and concatenation */
79
80 move.l (45*4 + 8, %sp), %a2 /* a2 = z */
81 move.l %sp, %a3 /* a3 = tmp buffer ptr */
82 lea.l window_s, %a4 /* a4 = window coef pointer */
83
84 moveq.l #6, %d7 /* six iterations */
85.overlaploop:
86 clr.l (%a2) /* z[i + 0] = 0 */
87 move.l (%a4), %d0
88 move.l (%a3), %d2
89 mac.l %d0, %d2, (6*4, %a4), %d1, %acc0
90 move.l (6*4, %a3), %d2
91 movclr.l %acc0, %d6
92 asl.l #3, %d6
93 move.l %d6, (6*4, %a2) /* z[i + 6] = result */
94
95 mac.l %d1, %d2, (12*4, %a3), %d2, %acc0
96 mac.l %d0, %d2, (18*4, %a3), %d2, %acc0
97 movclr.l %acc0, %d6
98 asl.l #3, %d6
99 move.l %d6, (12*4, %a2) /* z[i + 12] = result */
100
101 mac.l %d1, %d2, (24*4, %a3), %d2, %acc0
102 mac.l %d0, %d2, (30*4, %a3), %d2, %acc0
103 movclr.l %acc0, %d6
104 asl.l #3, %d6
105 move.l %d6, (18*4, %a2) /* z[i + 18] = result */
106
107 mac.l %d1, %d2, %acc0
108 movclr.l %acc0, %d6
109 asl.l #3, %d6
110 move.l %d6, (24*4, %a2) /* z[i + 24] = result */
111
112 clr.l (30*4, %a2) /* z[i + 30] = 0 */
113 addq.l #4, %a2 /* increment all pointers */
114 addq.l #4, %a3
115 addq.l #4, %a4
116 subq.l #1, %d7 /* decrement loop counter */
117 jne .overlaploop
118 /* fall through to exit if we're done */
119
120 /* clean up */
121 movem.l (36*4, %sp), %d2-%d7/%a2-%a4
122 lea.l (45*4, %sp), %sp
123 rts
124
diff --git a/lib/rbcodec/codecs/libmad/imdct_s.dat b/lib/rbcodec/codecs/libmad/imdct_s.dat
new file mode 100644
index 0000000000..0f1f3c9b60
--- /dev/null
+++ b/lib/rbcodec/codecs/libmad/imdct_s.dat
@@ -0,0 +1,62 @@
1/*
2 * libmad - MPEG audio decoder library
3 * Copyright (C) 2000-2004 Underbit Technologies, Inc.
4 *
5 * This program is free software; you can redistribute it and/or modify
6 * it under the terms of the GNU General Public License as published by
7 * the Free Software Foundation; either version 2 of the License, or
8 * (at your option) any later version.
9 *
10 * This program is distributed in the hope that it will be useful,
11 * but WITHOUT ANY WARRANTY; without even the implied warranty of
12 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 * GNU General Public License for more details.
14 *
15 * You should have received a copy of the GNU General Public License
16 * along with this program; if not, write to the Free Software
17 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
18 *
19 * $Id$
20 */
21
22 /* 0 */ { MAD_F(0x09bd7ca0) /* 0.608761429 */,
23 -MAD_F(0x0ec835e8) /* -0.923879533 */,
24 -MAD_F(0x0216a2a2) /* -0.130526192 */,
25 MAD_F(0x0fdcf549) /* 0.991444861 */,
26 -MAD_F(0x061f78aa) /* -0.382683432 */,
27 -MAD_F(0x0cb19346) /* -0.793353340 */ },
28
29 /* 6 */ { -MAD_F(0x0cb19346) /* -0.793353340 */,
30 MAD_F(0x061f78aa) /* 0.382683432 */,
31 MAD_F(0x0fdcf549) /* 0.991444861 */,
32 MAD_F(0x0216a2a2) /* 0.130526192 */,
33 -MAD_F(0x0ec835e8) /* -0.923879533 */,
34 -MAD_F(0x09bd7ca0) /* -0.608761429 */ },
35
36 /* 1 */ { MAD_F(0x061f78aa) /* 0.382683432 */,
37 -MAD_F(0x0ec835e8) /* -0.923879533 */,
38 MAD_F(0x0ec835e8) /* 0.923879533 */,
39 -MAD_F(0x061f78aa) /* -0.382683432 */,
40 -MAD_F(0x061f78aa) /* -0.382683432 */,
41 MAD_F(0x0ec835e8) /* 0.923879533 */ },
42
43 /* 7 */ { -MAD_F(0x0ec835e8) /* -0.923879533 */,
44 -MAD_F(0x061f78aa) /* -0.382683432 */,
45 MAD_F(0x061f78aa) /* 0.382683432 */,
46 MAD_F(0x0ec835e8) /* 0.923879533 */,
47 MAD_F(0x0ec835e8) /* 0.923879533 */,
48 MAD_F(0x061f78aa) /* 0.382683432 */ },
49
50 /* 2 */ { MAD_F(0x0216a2a2) /* 0.130526192 */,
51 -MAD_F(0x061f78aa) /* -0.382683432 */,
52 MAD_F(0x09bd7ca0) /* 0.608761429 */,
53 -MAD_F(0x0cb19346) /* -0.793353340 */,
54 MAD_F(0x0ec835e8) /* 0.923879533 */,
55 -MAD_F(0x0fdcf549) /* -0.991444861 */ },
56
57 /* 8 */ { -MAD_F(0x0fdcf549) /* -0.991444861 */,
58 -MAD_F(0x0ec835e8) /* -0.923879533 */,
59 -MAD_F(0x0cb19346) /* -0.793353340 */,
60 -MAD_F(0x09bd7ca0) /* -0.608761429 */,
61 -MAD_F(0x061f78aa) /* -0.382683432 */,
62 -MAD_F(0x0216a2a2) /* -0.130526192 */ }
diff --git a/lib/rbcodec/codecs/libmad/layer12.c b/lib/rbcodec/codecs/libmad/layer12.c
new file mode 100644
index 0000000000..e00bb64530
--- /dev/null
+++ b/lib/rbcodec/codecs/libmad/layer12.c
@@ -0,0 +1,537 @@
1/*
2 * libmad - MPEG audio decoder library
3 * Copyright (C) 2000-2004 Underbit Technologies, Inc.
4 *
5 * This program is free software; you can redistribute it and/or modify
6 * it under the terms of the GNU General Public License as published by
7 * the Free Software Foundation; either version 2 of the License, or
8 * (at your option) any later version.
9 *
10 * This program is distributed in the hope that it will be useful,
11 * but WITHOUT ANY WARRANTY; without even the implied warranty of
12 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 * GNU General Public License for more details.
14 *
15 * You should have received a copy of the GNU General Public License
16 * along with this program; if not, write to the Free Software
17 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
18 *
19 * $Id$
20 */
21
22# ifdef HAVE_CONFIG_H
23# include "config.h"
24# endif
25
26# include "global.h"
27
28# ifdef HAVE_LIMITS_H
29# include <limits.h>
30# else
31# undef CHAR_BIT
32# define CHAR_BIT 8
33# endif
34
35# include "fixed.h"
36# include "bit.h"
37# include "stream.h"
38# include "frame.h"
39# include "layer12.h"
40
41/*
42 * scalefactor table
43 * used in both Layer I and Layer II decoding
44 */
45static
46mad_fixed_t const sf_table[64] ICONST_ATTR = {
47# include "sf_table.dat"
48};
49
50/* --- Layer I ------------------------------------------------------------- */
51
52/* linear scaling table */
53static
54mad_fixed_t const linear_table[14] ICONST_ATTR = {
55 MAD_F(0x15555555), /* 2^2 / (2^2 - 1) == 1.33333333333333 */
56 MAD_F(0x12492492), /* 2^3 / (2^3 - 1) == 1.14285714285714 */
57 MAD_F(0x11111111), /* 2^4 / (2^4 - 1) == 1.06666666666667 */
58 MAD_F(0x10842108), /* 2^5 / (2^5 - 1) == 1.03225806451613 */
59 MAD_F(0x10410410), /* 2^6 / (2^6 - 1) == 1.01587301587302 */
60 MAD_F(0x10204081), /* 2^7 / (2^7 - 1) == 1.00787401574803 */
61 MAD_F(0x10101010), /* 2^8 / (2^8 - 1) == 1.00392156862745 */
62 MAD_F(0x10080402), /* 2^9 / (2^9 - 1) == 1.00195694716243 */
63 MAD_F(0x10040100), /* 2^10 / (2^10 - 1) == 1.00097751710655 */
64 MAD_F(0x10020040), /* 2^11 / (2^11 - 1) == 1.00048851978505 */
65 MAD_F(0x10010010), /* 2^12 / (2^12 - 1) == 1.00024420024420 */
66 MAD_F(0x10008004), /* 2^13 / (2^13 - 1) == 1.00012208521548 */
67 MAD_F(0x10004001), /* 2^14 / (2^14 - 1) == 1.00006103888177 */
68 MAD_F(0x10002000) /* 2^15 / (2^15 - 1) == 1.00003051850948 */
69};
70
71/*
72 * NAME: I_sample()
73 * DESCRIPTION: decode one requantized Layer I sample from a bitstream
74 */
75static inline
76mad_fixed_t I_sample(struct mad_bitptr *ptr, unsigned int nb)
77{
78 mad_fixed_t sample;
79
80 sample = mad_bit_read(ptr, nb);
81
82 /* invert most significant bit, extend sign, then scale to fixed format */
83
84 sample ^= 1 << (nb - 1);
85 sample |= -(sample & (1 << (nb - 1)));
86
87 sample <<= MAD_F_FRACBITS - (nb - 1);
88
89 /* requantize the sample */
90
91 /* s'' = (2^nb / (2^nb - 1)) * (s''' + 2^(-nb + 1)) */
92
93 sample += MAD_F_ONE >> (nb - 1);
94
95 return mad_f_mul(sample, linear_table[nb - 2]);
96
97 /* s' = factor * s'' */
98 /* (to be performed by caller) */
99}
100
101/*
102 * NAME: layer->I()
103 * DESCRIPTION: decode a single Layer I frame
104 */
105int mad_layer_I(struct mad_stream *stream, struct mad_frame *frame)
106{
107 struct mad_header *header = &frame->header;
108 unsigned int nch, bound, ch, s, sb, nb;
109 unsigned char allocation[2][32], scalefactor[2][32];
110
111 nch = MAD_NCHANNELS(header);
112
113 bound = 32;
114 if (header->mode == MAD_MODE_JOINT_STEREO) {
115 header->flags |= MAD_FLAG_I_STEREO;
116 bound = 4 + header->mode_extension * 4;
117 }
118
119 /* check CRC word */
120
121 if (header->flags & MAD_FLAG_PROTECTION) {
122 header->crc_check =
123 mad_bit_crc(stream->ptr, 4 * (bound * nch + (32 - bound)),
124 header->crc_check);
125
126 if (header->crc_check != header->crc_target &&
127 !(frame->options & MAD_OPTION_IGNORECRC)) {
128 stream->error = MAD_ERROR_BADCRC;
129 return -1;
130 }
131 }
132
133 /* decode bit allocations */
134
135 for (sb = 0; sb < bound; ++sb) {
136 for (ch = 0; ch < nch; ++ch) {
137 nb = mad_bit_read(&stream->ptr, 4);
138
139 if (nb == 15) {
140 stream->error = MAD_ERROR_BADBITALLOC;
141 return -1;
142 }
143
144 allocation[ch][sb] = nb ? nb + 1 : 0;
145 }
146 }
147
148 for (sb = bound; sb < 32; ++sb) {
149 nb = mad_bit_read(&stream->ptr, 4);
150
151 if (nb == 15) {
152 stream->error = MAD_ERROR_BADBITALLOC;
153 return -1;
154 }
155
156 allocation[0][sb] =
157 allocation[1][sb] = nb ? nb + 1 : 0;
158 }
159
160 /* decode scalefactors */
161
162 for (sb = 0; sb < 32; ++sb) {
163 for (ch = 0; ch < nch; ++ch) {
164 if (allocation[ch][sb]) {
165 scalefactor[ch][sb] = mad_bit_read(&stream->ptr, 6);
166
167# if defined(OPT_STRICT)
168 /*
169 * Scalefactor index 63 does not appear in Table B.1 of
170 * ISO/IEC 11172-3. Nonetheless, other implementations accept it,
171 * so we only reject it if OPT_STRICT is defined.
172 */
173 if (scalefactor[ch][sb] == 63) {
174 stream->error = MAD_ERROR_BADSCALEFACTOR;
175 return -1;
176 }
177# endif
178 }
179 }
180 }
181
182 /* decode samples */
183
184 for (s = 0; s < 12; ++s) {
185 for (sb = 0; sb < bound; ++sb) {
186 for (ch = 0; ch < nch; ++ch) {
187 nb = allocation[ch][sb];
188 (*frame->sbsample)[ch][s][sb] = nb ?
189 mad_f_mul(I_sample(&stream->ptr, nb),
190 sf_table[scalefactor[ch][sb]]) : 0;
191 }
192 }
193
194 for (sb = bound; sb < 32; ++sb) {
195 if ((nb = allocation[0][sb])) {
196 mad_fixed_t sample;
197
198 sample = I_sample(&stream->ptr, nb);
199
200 for (ch = 0; ch < nch; ++ch) {
201 (*frame->sbsample)[ch][s][sb] =
202 mad_f_mul(sample, sf_table[scalefactor[ch][sb]]);
203 }
204 }
205 else {
206 for (ch = 0; ch < nch; ++ch)
207 (*frame->sbsample)[ch][s][sb] = 0;
208 }
209 }
210 }
211
212 return 0;
213}
214
215/* --- Layer II ------------------------------------------------------------ */
216
217/* possible quantization per subband table */
218static
219struct {
220 unsigned int sblimit;
221 unsigned char const offsets[30];
222} const sbquant_table[5] = {
223 /* ISO/IEC 11172-3 Table B.2a */
224 { 27, { 7, 7, 7, 6, 6, 6, 6, 6, 6, 6, 6, 3, 3, 3, 3, 3, /* 0 */
225 3, 3, 3, 3, 3, 3, 3, 0, 0, 0, 0 } },
226 /* ISO/IEC 11172-3 Table B.2b */
227 { 30, { 7, 7, 7, 6, 6, 6, 6, 6, 6, 6, 6, 3, 3, 3, 3, 3, /* 1 */
228 3, 3, 3, 3, 3, 3, 3, 0, 0, 0, 0, 0, 0, 0 } },
229 /* ISO/IEC 11172-3 Table B.2c */
230 { 8, { 5, 5, 2, 2, 2, 2, 2, 2 } }, /* 2 */
231 /* ISO/IEC 11172-3 Table B.2d */
232 { 12, { 5, 5, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2 } }, /* 3 */
233 /* ISO/IEC 13818-3 Table B.1 */
234 { 30, { 4, 4, 4, 4, 2, 2, 2, 2, 2, 2, 2, 1, 1, 1, 1, 1, /* 4 */
235 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 } }
236};
237
238/* bit allocation table */
239static
240struct {
241 unsigned short nbal;
242 unsigned short offset;
243} const bitalloc_table[8] = {
244 { 2, 0 }, /* 0 */
245 { 2, 3 }, /* 1 */
246 { 3, 3 }, /* 2 */
247 { 3, 1 }, /* 3 */
248 { 4, 2 }, /* 4 */
249 { 4, 3 }, /* 5 */
250 { 4, 4 }, /* 6 */
251 { 4, 5 } /* 7 */
252};
253
254/* offsets into quantization class table */
255static
256unsigned char const offset_table[6][15] = {
257 { 0, 1, 16 }, /* 0 */
258 { 0, 1, 2, 3, 4, 5, 16 }, /* 1 */
259 { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14 }, /* 2 */
260 { 0, 1, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15 }, /* 3 */
261 { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 16 }, /* 4 */
262 { 0, 2, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16 } /* 5 */
263};
264
265/* quantization class table */
266static
267struct quantclass {
268 unsigned short nlevels;
269 unsigned char group;
270 unsigned char bits;
271 mad_fixed_t C;
272 mad_fixed_t D;
273} const qc_table[17] ICONST_ATTR = {
274# include "qc_table.dat"
275};
276
277/*
278 * NAME: II_samples()
279 * DESCRIPTION: decode three requantized Layer II samples from a bitstream
280 */
281static
282void II_samples(struct mad_bitptr *ptr,
283 struct quantclass const *quantclass,
284 mad_fixed_t output[3])
285{
286 unsigned int nb, s, sample[3];
287
288 if ((nb = quantclass->group)) {
289 unsigned int c, nlevels;
290
291 /* degrouping */
292 c = mad_bit_read(ptr, quantclass->bits);
293 nlevels = quantclass->nlevels;
294
295 for (s = 0; s < 3; ++s) {
296 sample[s] = c % nlevels;
297 c /= nlevels;
298 }
299 }
300 else {
301 nb = quantclass->bits;
302
303 for (s = 0; s < 3; ++s)
304 sample[s] = mad_bit_read(ptr, nb);
305 }
306
307 for (s = 0; s < 3; ++s) {
308 mad_fixed_t requantized;
309
310 /* invert most significant bit, extend sign, then scale to fixed format */
311
312 requantized = sample[s] ^ (1 << (nb - 1));
313 requantized |= -(requantized & (1 << (nb - 1)));
314
315 requantized <<= MAD_F_FRACBITS - (nb - 1);
316
317 /* requantize the sample */
318
319 /* s'' = C * (s''' + D) */
320
321 output[s] = mad_f_mul(requantized + quantclass->D, quantclass->C);
322
323 /* s' = factor * s'' */
324 /* (to be performed by caller) */
325 }
326}
327
328/*
329 * NAME: layer->II()
330 * DESCRIPTION: decode a single Layer II frame
331 */
332int mad_layer_II(struct mad_stream *stream, struct mad_frame *frame)
333{
334 struct mad_header *header = &frame->header;
335 struct mad_bitptr start;
336 unsigned int index, sblimit, nbal, nch, bound, gr, ch, s, sb;
337 unsigned char const *offsets;
338 unsigned char allocation[2][32], scfsi[2][32], scalefactor[2][32][3];
339 mad_fixed_t samples[3];
340
341 nch = MAD_NCHANNELS(header);
342
343 if (header->flags & MAD_FLAG_LSF_EXT)
344 index = 4;
345 else if (header->flags & MAD_FLAG_FREEFORMAT)
346 goto freeformat;
347 else {
348 unsigned long bitrate_per_channel;
349
350 bitrate_per_channel = header->bitrate;
351 if (nch == 2) {
352 bitrate_per_channel /= 2;
353
354# if defined(OPT_STRICT)
355 /*
356 * ISO/IEC 11172-3 allows only single channel mode for 32, 48, 56, and
357 * 80 kbps bitrates in Layer II, but some encoders ignore this
358 * restriction. We enforce it if OPT_STRICT is defined.
359 */
360 if (bitrate_per_channel <= 28000 || bitrate_per_channel == 40000) {
361 stream->error = MAD_ERROR_BADMODE;
362 return -1;
363 }
364# endif
365 }
366 else { /* nch == 1 */
367 if (bitrate_per_channel > 192000) {
368 /*
369 * ISO/IEC 11172-3 does not allow single channel mode for 224, 256,
370 * 320, or 384 kbps bitrates in Layer II.
371 */
372 stream->error = MAD_ERROR_BADMODE;
373 return -1;
374 }
375 }
376
377 if (bitrate_per_channel <= 48000)
378 index = (header->samplerate == 32000) ? 3 : 2;
379 else if (bitrate_per_channel <= 80000)
380 index = 0;
381 else {
382 freeformat:
383 index = (header->samplerate == 48000) ? 0 : 1;
384 }
385 }
386
387 sblimit = sbquant_table[index].sblimit;
388 offsets = sbquant_table[index].offsets;
389
390 bound = 32;
391 if (header->mode == MAD_MODE_JOINT_STEREO) {
392 header->flags |= MAD_FLAG_I_STEREO;
393 bound = 4 + header->mode_extension * 4;
394 }
395
396 if (bound > sblimit)
397 bound = sblimit;
398
399 start = stream->ptr;
400
401 /* decode bit allocations */
402
403 for (sb = 0; sb < bound; ++sb) {
404 nbal = bitalloc_table[offsets[sb]].nbal;
405
406 for (ch = 0; ch < nch; ++ch)
407 allocation[ch][sb] = mad_bit_read(&stream->ptr, nbal);
408 }
409
410 for (sb = bound; sb < sblimit; ++sb) {
411 nbal = bitalloc_table[offsets[sb]].nbal;
412
413 allocation[0][sb] =
414 allocation[1][sb] = mad_bit_read(&stream->ptr, nbal);
415 }
416
417 /* decode scalefactor selection info */
418
419 for (sb = 0; sb < sblimit; ++sb) {
420 for (ch = 0; ch < nch; ++ch) {
421 if (allocation[ch][sb])
422 scfsi[ch][sb] = mad_bit_read(&stream->ptr, 2);
423 }
424 }
425
426 /* check CRC word */
427
428 if (header->flags & MAD_FLAG_PROTECTION) {
429 header->crc_check =
430 mad_bit_crc(start, mad_bit_length(&start, &stream->ptr),
431 header->crc_check);
432
433 if (header->crc_check != header->crc_target &&
434 !(frame->options & MAD_OPTION_IGNORECRC)) {
435 stream->error = MAD_ERROR_BADCRC;
436 return -1;
437 }
438 }
439
440 /* decode scalefactors */
441
442 for (sb = 0; sb < sblimit; ++sb) {
443 for (ch = 0; ch < nch; ++ch) {
444 if (allocation[ch][sb]) {
445 scalefactor[ch][sb][0] = mad_bit_read(&stream->ptr, 6);
446
447 switch (scfsi[ch][sb]) {
448 case 2:
449 scalefactor[ch][sb][2] =
450 scalefactor[ch][sb][1] =
451 scalefactor[ch][sb][0];
452 break;
453
454 case 0:
455 scalefactor[ch][sb][1] = mad_bit_read(&stream->ptr, 6);
456 /* fall through */
457
458 case 1:
459 case 3:
460 scalefactor[ch][sb][2] = mad_bit_read(&stream->ptr, 6);
461 }
462
463 if (scfsi[ch][sb] & 1)
464 scalefactor[ch][sb][1] = scalefactor[ch][sb][scfsi[ch][sb] - 1];
465
466# if defined(OPT_STRICT)
467 /*
468 * Scalefactor index 63 does not appear in Table B.1 of
469 * ISO/IEC 11172-3. Nonetheless, other implementations accept it,
470 * so we only reject it if OPT_STRICT is defined.
471 */
472 if (scalefactor[ch][sb][0] == 63 ||
473 scalefactor[ch][sb][1] == 63 ||
474 scalefactor[ch][sb][2] == 63) {
475 stream->error = MAD_ERROR_BADSCALEFACTOR;
476 return -1;
477 }
478# endif
479 }
480 }
481 }
482
483 /* decode samples */
484
485 for (gr = 0; gr < 12; ++gr) {
486 for (sb = 0; sb < bound; ++sb) {
487 for (ch = 0; ch < nch; ++ch) {
488 if ((index = allocation[ch][sb])) {
489 int off = bitalloc_table[offsets[sb]].offset;
490 index = offset_table[off][index - 1];
491
492 II_samples(&stream->ptr, &qc_table[index], samples);
493
494 for (s = 0; s < 3; ++s) {
495 (*frame->sbsample)[ch][3 * gr + s][sb] =
496 mad_f_mul(samples[s], sf_table[scalefactor[ch][sb][gr / 4]]);
497 }
498 }
499 else {
500 for (s = 0; s < 3; ++s)
501 (*frame->sbsample)[ch][3 * gr + s][sb] = 0;
502 }
503 }
504 }
505
506 for (sb = bound; sb < sblimit; ++sb) {
507 if ((index = allocation[0][sb])) {
508 int off = bitalloc_table[offsets[sb]].offset;
509 index = offset_table[off][index - 1];
510
511 II_samples(&stream->ptr, &qc_table[index], samples);
512
513 for (ch = 0; ch < nch; ++ch) {
514 for (s = 0; s < 3; ++s) {
515 (*frame->sbsample)[ch][3 * gr + s][sb] =
516 mad_f_mul(samples[s], sf_table[scalefactor[ch][sb][gr / 4]]);
517 }
518 }
519 }
520 else {
521 for (ch = 0; ch < nch; ++ch) {
522 for (s = 0; s < 3; ++s)
523 (*frame->sbsample)[ch][3 * gr + s][sb] = 0;
524 }
525 }
526 }
527
528 for (ch = 0; ch < nch; ++ch) {
529 for (s = 0; s < 3; ++s) {
530 for (sb = sblimit; sb < 32; ++sb)
531 (*frame->sbsample)[ch][3 * gr + s][sb] = 0;
532 }
533 }
534 }
535
536 return 0;
537}
diff --git a/lib/rbcodec/codecs/libmad/layer12.h b/lib/rbcodec/codecs/libmad/layer12.h
new file mode 100644
index 0000000000..3fe6bd8b0f
--- /dev/null
+++ b/lib/rbcodec/codecs/libmad/layer12.h
@@ -0,0 +1,31 @@
1/*
2 * libmad - MPEG audio decoder library
3 * Copyright (C) 2000-2004 Underbit Technologies, Inc.
4 *
5 * This program is free software; you can redistribute it and/or modify
6 * it under the terms of the GNU General Public License as published by
7 * the Free Software Foundation; either version 2 of the License, or
8 * (at your option) any later version.
9 *
10 * This program is distributed in the hope that it will be useful,
11 * but WITHOUT ANY WARRANTY; without even the implied warranty of
12 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 * GNU General Public License for more details.
14 *
15 * You should have received a copy of the GNU General Public License
16 * along with this program; if not, write to the Free Software
17 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
18 *
19 * $Id$
20 */
21
22# ifndef LIBMAD_LAYER12_H
23# define LIBMAD_LAYER12_H
24
25# include "stream.h"
26# include "frame.h"
27
28int mad_layer_I(struct mad_stream *, struct mad_frame *);
29int mad_layer_II(struct mad_stream *, struct mad_frame *);
30
31# endif
diff --git a/lib/rbcodec/codecs/libmad/layer3.c b/lib/rbcodec/codecs/libmad/layer3.c
new file mode 100644
index 0000000000..ffb0fb20ff
--- /dev/null
+++ b/lib/rbcodec/codecs/libmad/layer3.c
@@ -0,0 +1,3107 @@
1/*
2 * libmad - MPEG audio decoder library
3 * Copyright (C) 2000-2004 Underbit Technologies, Inc.
4 *
5 * This program is free software; you can redistribute it and/or modify
6 * it under the terms of the GNU General Public License as published by
7 * the Free Software Foundation; either version 2 of the License, or
8 * (at your option) any later version.
9 *
10 * This program is distributed in the hope that it will be useful,
11 * but WITHOUT ANY WARRANTY; without even the implied warranty of
12 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 * GNU General Public License for more details.
14 *
15 * You should have received a copy of the GNU General Public License
16 * along with this program; if not, write to the Free Software
17 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
18 *
19 * $Id$
20 */
21
22# ifdef HAVE_CONFIG_H
23# include "config.h"
24# endif
25
26# include "global.h"
27
28# include <string.h>
29
30# ifdef HAVE_ASSERT_H
31# include <assert.h>
32# endif
33
34# ifdef HAVE_LIMITS_H
35# include <limits.h>
36# else
37# undef CHAR_BIT
38# define CHAR_BIT 8
39# endif
40
41# include "fixed.h"
42# include "bit.h"
43# include "stream.h"
44# include "frame.h"
45# include "huffman.h"
46# include "layer3.h"
47
48/* depending on the cpu "leftshift32" may be supported or not */
49# if defined(CPU_COLDFIRE)
50#define MAXLSHIFT 32
51#else
52#define MAXLSHIFT 31
53#endif
54
55/* --- Layer III ----------------------------------------------------------- */
56
57enum {
58 count1table_select = 0x01,
59 scalefac_scale = 0x02,
60 preflag = 0x04,
61 mixed_block_flag = 0x08
62};
63
64enum {
65 I_STEREO = 0x1,
66 MS_STEREO = 0x2
67};
68
69struct sideinfo {
70 unsigned int main_data_begin;
71 unsigned int private_bits;
72
73 unsigned char scfsi[2];
74
75 struct granule {
76 struct channel {
77 /* from side info */
78 unsigned short part2_3_length;
79 unsigned short big_values;
80 unsigned short global_gain;
81 unsigned short scalefac_compress;
82
83 unsigned char flags;
84 unsigned char block_type;
85 unsigned char table_select[3];
86 unsigned char subblock_gain[3];
87 unsigned char region0_count;
88 unsigned char region1_count;
89
90 /* from main_data */
91 unsigned char scalefac[39]; /* scalefac_l and/or scalefac_s */
92 } ch[2];
93 } gr[2];
94};
95
96/*
97 * scalefactor bit lengths
98 * derived from section 2.4.2.7 of ISO/IEC 11172-3
99 */
100static
101struct {
102 unsigned char slen1;
103 unsigned char slen2;
104} const sflen_table[16] = {
105 { 0, 0 }, { 0, 1 }, { 0, 2 }, { 0, 3 },
106 { 3, 0 }, { 1, 1 }, { 1, 2 }, { 1, 3 },
107 { 2, 1 }, { 2, 2 }, { 2, 3 }, { 3, 1 },
108 { 3, 2 }, { 3, 3 }, { 4, 2 }, { 4, 3 }
109};
110
111/*
112 * number of LSF scalefactor band values
113 * derived from section 2.4.3.2 of ISO/IEC 13818-3
114 */
115static
116unsigned char const nsfb_table[6][3][4] = {
117 { { 6, 5, 5, 5 },
118 { 9, 9, 9, 9 },
119 { 6, 9, 9, 9 } },
120
121 { { 6, 5, 7, 3 },
122 { 9, 9, 12, 6 },
123 { 6, 9, 12, 6 } },
124
125 { { 11, 10, 0, 0 },
126 { 18, 18, 0, 0 },
127 { 15, 18, 0, 0 } },
128
129 { { 7, 7, 7, 0 },
130 { 12, 12, 12, 0 },
131 { 6, 15, 12, 0 } },
132
133 { { 6, 6, 6, 3 },
134 { 12, 9, 9, 6 },
135 { 6, 12, 9, 6 } },
136
137 { { 8, 8, 5, 0 },
138 { 15, 12, 9, 0 },
139 { 6, 18, 9, 0 } }
140};
141
142/*
143 * MPEG-1 scalefactor band widths
144 * derived from Table B.8 of ISO/IEC 11172-3
145 */
146static
147unsigned char const sfb_48000_long[] = {
148 4, 4, 4, 4, 4, 4, 6, 6, 6, 8, 10,
149 12, 16, 18, 22, 28, 34, 40, 46, 54, 54, 192
150};
151
152static
153unsigned char const sfb_44100_long[] = {
154 4, 4, 4, 4, 4, 4, 6, 6, 8, 8, 10,
155 12, 16, 20, 24, 28, 34, 42, 50, 54, 76, 158
156};
157
158static
159unsigned char const sfb_32000_long[] = {
160 4, 4, 4, 4, 4, 4, 6, 6, 8, 10, 12,
161 16, 20, 24, 30, 38, 46, 56, 68, 84, 102, 26
162};
163
164static
165unsigned char const sfb_48000_short[] = {
166 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 6,
167 6, 6, 6, 6, 6, 10, 10, 10, 12, 12, 12, 14, 14,
168 14, 16, 16, 16, 20, 20, 20, 26, 26, 26, 66, 66, 66
169};
170
171static
172unsigned char const sfb_44100_short[] = {
173 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 6,
174 6, 6, 8, 8, 8, 10, 10, 10, 12, 12, 12, 14, 14,
175 14, 18, 18, 18, 22, 22, 22, 30, 30, 30, 56, 56, 56
176};
177
178static
179unsigned char const sfb_32000_short[] = {
180 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 6,
181 6, 6, 8, 8, 8, 12, 12, 12, 16, 16, 16, 20, 20,
182 20, 26, 26, 26, 34, 34, 34, 42, 42, 42, 12, 12, 12
183};
184
185static
186unsigned char const sfb_48000_mixed[] = {
187 /* long */ 4, 4, 4, 4, 4, 4, 6, 6,
188 /* short */ 4, 4, 4, 6, 6, 6, 6, 6, 6, 10,
189 10, 10, 12, 12, 12, 14, 14, 14, 16, 16,
190 16, 20, 20, 20, 26, 26, 26, 66, 66, 66
191};
192
193static
194unsigned char const sfb_44100_mixed[] = {
195 /* long */ 4, 4, 4, 4, 4, 4, 6, 6,
196 /* short */ 4, 4, 4, 6, 6, 6, 8, 8, 8, 10,
197 10, 10, 12, 12, 12, 14, 14, 14, 18, 18,
198 18, 22, 22, 22, 30, 30, 30, 56, 56, 56
199};
200
201static
202unsigned char const sfb_32000_mixed[] = {
203 /* long */ 4, 4, 4, 4, 4, 4, 6, 6,
204 /* short */ 4, 4, 4, 6, 6, 6, 8, 8, 8, 12,
205 12, 12, 16, 16, 16, 20, 20, 20, 26, 26,
206 26, 34, 34, 34, 42, 42, 42, 12, 12, 12
207};
208
209/*
210 * MPEG-2 scalefactor band widths
211 * derived from Table B.2 of ISO/IEC 13818-3
212 */
213static
214unsigned char const sfb_24000_long[] = {
215 6, 6, 6, 6, 6, 6, 8, 10, 12, 14, 16,
216 18, 22, 26, 32, 38, 46, 54, 62, 70, 76, 36
217};
218
219static
220unsigned char const sfb_22050_long[] = {
221 6, 6, 6, 6, 6, 6, 8, 10, 12, 14, 16,
222 20, 24, 28, 32, 38, 46, 52, 60, 68, 58, 54
223};
224
225# define sfb_16000_long sfb_22050_long
226
227static
228unsigned char const sfb_24000_short[] = {
229 4, 4, 4, 4, 4, 4, 4, 4, 4, 6, 6, 6, 8,
230 8, 8, 10, 10, 10, 12, 12, 12, 14, 14, 14, 18, 18,
231 18, 24, 24, 24, 32, 32, 32, 44, 44, 44, 12, 12, 12
232};
233
234static
235unsigned char const sfb_22050_short[] = {
236 4, 4, 4, 4, 4, 4, 4, 4, 4, 6, 6, 6, 6,
237 6, 6, 8, 8, 8, 10, 10, 10, 14, 14, 14, 18, 18,
238 18, 26, 26, 26, 32, 32, 32, 42, 42, 42, 18, 18, 18
239};
240
241static
242unsigned char const sfb_16000_short[] = {
243 4, 4, 4, 4, 4, 4, 4, 4, 4, 6, 6, 6, 8,
244 8, 8, 10, 10, 10, 12, 12, 12, 14, 14, 14, 18, 18,
245 18, 24, 24, 24, 30, 30, 30, 40, 40, 40, 18, 18, 18
246};
247
248static
249unsigned char const sfb_24000_mixed[] = {
250 /* long */ 6, 6, 6, 6, 6, 6,
251 /* short */ 6, 6, 6, 8, 8, 8, 10, 10, 10, 12,
252 12, 12, 14, 14, 14, 18, 18, 18, 24, 24,
253 24, 32, 32, 32, 44, 44, 44, 12, 12, 12
254};
255
256static
257unsigned char const sfb_22050_mixed[] = {
258 /* long */ 6, 6, 6, 6, 6, 6,
259 /* short */ 6, 6, 6, 6, 6, 6, 8, 8, 8, 10,
260 10, 10, 14, 14, 14, 18, 18, 18, 26, 26,
261 26, 32, 32, 32, 42, 42, 42, 18, 18, 18
262};
263
264static
265unsigned char const sfb_16000_mixed[] = {
266 /* long */ 6, 6, 6, 6, 6, 6,
267 /* short */ 6, 6, 6, 8, 8, 8, 10, 10, 10, 12,
268 12, 12, 14, 14, 14, 18, 18, 18, 24, 24,
269 24, 30, 30, 30, 40, 40, 40, 18, 18, 18
270};
271
272/*
273 * MPEG 2.5 scalefactor band widths
274 * derived from public sources
275 */
276# define sfb_12000_long sfb_16000_long
277# define sfb_11025_long sfb_12000_long
278
279static
280unsigned char const sfb_8000_long[] = {
281 12, 12, 12, 12, 12, 12, 16, 20, 24, 28, 32,
282 40, 48, 56, 64, 76, 90, 2, 2, 2, 2, 2
283};
284
285# define sfb_12000_short sfb_16000_short
286# define sfb_11025_short sfb_12000_short
287
288static
289unsigned char const sfb_8000_short[] = {
290 8, 8, 8, 8, 8, 8, 8, 8, 8, 12, 12, 12, 16,
291 16, 16, 20, 20, 20, 24, 24, 24, 28, 28, 28, 36, 36,
292 36, 2, 2, 2, 2, 2, 2, 2, 2, 2, 26, 26, 26
293};
294
295# define sfb_12000_mixed sfb_16000_mixed
296# define sfb_11025_mixed sfb_12000_mixed
297
298/* the 8000 Hz short block scalefactor bands do not break after
299 the first 36 frequency lines, so this is probably wrong */
300static
301unsigned char const sfb_8000_mixed[] = {
302 /* long */ 12, 12, 12,
303 /* short */ 4, 4, 4, 8, 8, 8, 12, 12, 12, 16, 16, 16,
304 20, 20, 20, 24, 24, 24, 28, 28, 28, 36, 36, 36,
305 2, 2, 2, 2, 2, 2, 2, 2, 2, 26, 26, 26
306};
307
308static
309struct {
310 unsigned char const *l;
311 unsigned char const *s;
312 unsigned char const *m;
313} const sfbwidth_table[9] = {
314 { sfb_48000_long, sfb_48000_short, sfb_48000_mixed },
315 { sfb_44100_long, sfb_44100_short, sfb_44100_mixed },
316 { sfb_32000_long, sfb_32000_short, sfb_32000_mixed },
317 { sfb_24000_long, sfb_24000_short, sfb_24000_mixed },
318 { sfb_22050_long, sfb_22050_short, sfb_22050_mixed },
319 { sfb_16000_long, sfb_16000_short, sfb_16000_mixed },
320 { sfb_12000_long, sfb_12000_short, sfb_12000_mixed },
321 { sfb_11025_long, sfb_11025_short, sfb_11025_mixed },
322 { sfb_8000_long, sfb_8000_short, sfb_8000_mixed }
323};
324
325/*
326 * scalefactor band preemphasis (used only when preflag is set)
327 * derived from Table B.6 of ISO/IEC 11172-3
328 */
329static
330unsigned char const pretab[22] = {
331 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 2, 2, 3, 3, 3, 2, 0
332};
333
334/*
335 * table for requantization
336 *
337 * rq_table[x].mantissa * 2^(rq_table[x].exponent) = x^(4/3)
338 *
339 * format rq_table: bit31-27=exponent bit26-0=mantissa
340 */
341static
342unsigned long const rq_table[8207] = {
343# include "rq_table.dat"
344};
345
346/*
347 * fractional powers of two
348 * used for requantization and joint stereo decoding
349 *
350 * root_table[3 + x] = 2^(x/4)
351 */
352mad_fixed_t const root_table[7] ICONST_ATTR MEM_ALIGN_ATTR = {
353 MAD_F(0x09837f05) /* 2^(-3/4) == 0.59460355750136 */,
354 MAD_F(0x0b504f33) /* 2^(-2/4) == 0.70710678118655 */,
355 MAD_F(0x0d744fcd) /* 2^(-1/4) == 0.84089641525371 */,
356 MAD_F(0x10000000) /* 2^( 0/4) == 1.00000000000000 */,
357 MAD_F(0x1306fe0a) /* 2^(+1/4) == 1.18920711500272 */,
358 MAD_F(0x16a09e66) /* 2^(+2/4) == 1.41421356237310 */,
359 MAD_F(0x1ae89f99) /* 2^(+3/4) == 1.68179283050743 */
360};
361
362/*
363 * coefficients for aliasing reduction
364 * derived from Table B.9 of ISO/IEC 11172-3
365 *
366 * c[] = { -0.6, -0.535, -0.33, -0.185, -0.095, -0.041, -0.0142, -0.0037 }
367 * cs[i] = 1 / sqrt(1 + c[i]^2)
368 * ca[i] = c[i] / sqrt(1 + c[i]^2)
369 */
370mad_fixed_t const cs[8] ICONST_ATTR MEM_ALIGN_ATTR = {
371 +MAD_F(0x0db84a81) /* +0.857492926 */, +MAD_F(0x0e1b9d7f) /* +0.881741997 */,
372 +MAD_F(0x0f31adcf) /* +0.949628649 */, +MAD_F(0x0fbba815) /* +0.983314592 */,
373 +MAD_F(0x0feda417) /* +0.995517816 */, +MAD_F(0x0ffc8fc8) /* +0.999160558 */,
374 +MAD_F(0x0fff964c) /* +0.999899195 */, +MAD_F(0x0ffff8d3) /* +0.999993155 */
375};
376
377mad_fixed_t const ca[8] ICONST_ATTR MEM_ALIGN_ATTR = {
378 -MAD_F(0x083b5fe7) /* -0.514495755 */, -MAD_F(0x078c36d2) /* -0.471731969 */,
379 -MAD_F(0x05039814) /* -0.313377454 */, -MAD_F(0x02e91dd1) /* -0.181913200 */,
380 -MAD_F(0x0183603a) /* -0.094574193 */, -MAD_F(0x00a7cb87) /* -0.040965583 */,
381 -MAD_F(0x003a2847) /* -0.014198569 */, -MAD_F(0x000f27b4) /* -0.003699975 */
382};
383
384/*
385 * IMDCT coefficients for short blocks
386 * derived from section 2.4.3.4.10.2 of ISO/IEC 11172-3
387 *
388 * imdct_s[i/even][k] = cos((PI / 24) * (2 * (i / 2) + 7) * (2 * k + 1))
389 * imdct_s[i /odd][k] = cos((PI / 24) * (2 * (6 + (i-1)/2) + 7) * (2 * k + 1))
390 */
391mad_fixed_t const imdct_s[6][6] ICONST_ATTR MEM_ALIGN_ATTR = {
392# include "imdct_s.dat"
393};
394
395# if !defined(FPM_ARM)
396/*
397 * windowing coefficients for long blocks
398 * derived from section 2.4.3.4.10.3 of ISO/IEC 11172-3
399 *
400 * window_l[i] = sin((PI / 36) * (i + 1/2))
401 */
402static
403mad_fixed_t const window_l[36] ICONST_ATTR MEM_ALIGN_ATTR = {
404 MAD_F(0x00b2aa3e) /* 0.043619387 */, MAD_F(0x0216a2a2) /* 0.130526192 */,
405 MAD_F(0x03768962) /* 0.216439614 */, MAD_F(0x04cfb0e2) /* 0.300705800 */,
406 MAD_F(0x061f78aa) /* 0.382683432 */, MAD_F(0x07635284) /* 0.461748613 */,
407 MAD_F(0x0898c779) /* 0.537299608 */, MAD_F(0x09bd7ca0) /* 0.608761429 */,
408 MAD_F(0x0acf37ad) /* 0.675590208 */, MAD_F(0x0bcbe352) /* 0.737277337 */,
409 MAD_F(0x0cb19346) /* 0.793353340 */, MAD_F(0x0d7e8807) /* 0.843391446 */,
410
411 MAD_F(0x0e313245) /* 0.887010833 */, MAD_F(0x0ec835e8) /* 0.923879533 */,
412 MAD_F(0x0f426cb5) /* 0.953716951 */, MAD_F(0x0f9ee890) /* 0.976296007 */,
413 MAD_F(0x0fdcf549) /* 0.991444861 */, MAD_F(0x0ffc19fd) /* 0.999048222 */,
414 MAD_F(0x0ffc19fd) /* 0.999048222 */, MAD_F(0x0fdcf549) /* 0.991444861 */,
415 MAD_F(0x0f9ee890) /* 0.976296007 */, MAD_F(0x0f426cb5) /* 0.953716951 */,
416 MAD_F(0x0ec835e8) /* 0.923879533 */, MAD_F(0x0e313245) /* 0.887010833 */,
417
418 MAD_F(0x0d7e8807) /* 0.843391446 */, MAD_F(0x0cb19346) /* 0.793353340 */,
419 MAD_F(0x0bcbe352) /* 0.737277337 */, MAD_F(0x0acf37ad) /* 0.675590208 */,
420 MAD_F(0x09bd7ca0) /* 0.608761429 */, MAD_F(0x0898c779) /* 0.537299608 */,
421 MAD_F(0x07635284) /* 0.461748613 */, MAD_F(0x061f78aa) /* 0.382683432 */,
422 MAD_F(0x04cfb0e2) /* 0.300705800 */, MAD_F(0x03768962) /* 0.216439614 */,
423 MAD_F(0x0216a2a2) /* 0.130526192 */, MAD_F(0x00b2aa3e) /* 0.043619387 */,
424};
425# endif /* FPM_ARM */
426
427/*
428 * windowing coefficients for short blocks
429 * derived from section 2.4.3.4.10.3 of ISO/IEC 11172-3
430 *
431 * window_s[i] = sin((PI / 12) * (i + 1/2))
432 */
433mad_fixed_t const window_s[12] ICONST_ATTR MEM_ALIGN_ATTR = {
434 MAD_F(0x0216a2a2) /* 0.130526192 */, MAD_F(0x061f78aa) /* 0.382683432 */,
435 MAD_F(0x09bd7ca0) /* 0.608761429 */, MAD_F(0x0cb19346) /* 0.793353340 */,
436 MAD_F(0x0ec835e8) /* 0.923879533 */, MAD_F(0x0fdcf549) /* 0.991444861 */,
437 MAD_F(0x0fdcf549) /* 0.991444861 */, MAD_F(0x0ec835e8) /* 0.923879533 */,
438 MAD_F(0x0cb19346) /* 0.793353340 */, MAD_F(0x09bd7ca0) /* 0.608761429 */,
439 MAD_F(0x061f78aa) /* 0.382683432 */, MAD_F(0x0216a2a2) /* 0.130526192 */,
440};
441
442/*
443 * coefficients for intensity stereo processing
444 * derived from section 2.4.3.4.9.3 of ISO/IEC 11172-3
445 *
446 * is_ratio[i] = tan(i * (PI / 12))
447 * is_table[i] = is_ratio[i] / (1 + is_ratio[i])
448 */
449static
450mad_fixed_t const is_table[7] = {
451 MAD_F(0x00000000) /* 0.000000000 */,
452 MAD_F(0x0361962f) /* 0.211324865 */,
453 MAD_F(0x05db3d74) /* 0.366025404 */,
454 MAD_F(0x08000000) /* 0.500000000 */,
455 MAD_F(0x0a24c28c) /* 0.633974596 */,
456 MAD_F(0x0c9e69d1) /* 0.788675135 */,
457 MAD_F(0x10000000) /* 1.000000000 */
458};
459
460/*
461 * coefficients for LSF intensity stereo processing
462 * derived from section 2.4.3.2 of ISO/IEC 13818-3
463 *
464 * is_lsf_table[0][i] = (1 / sqrt(sqrt(2)))^(i + 1)
465 * is_lsf_table[1][i] = (1 / sqrt(2)) ^(i + 1)
466 */
467static
468mad_fixed_t const is_lsf_table[2][15] = {
469 {
470 MAD_F(0x0d744fcd) /* 0.840896415 */,
471 MAD_F(0x0b504f33) /* 0.707106781 */,
472 MAD_F(0x09837f05) /* 0.594603558 */,
473 MAD_F(0x08000000) /* 0.500000000 */,
474 MAD_F(0x06ba27e6) /* 0.420448208 */,
475 MAD_F(0x05a8279a) /* 0.353553391 */,
476 MAD_F(0x04c1bf83) /* 0.297301779 */,
477 MAD_F(0x04000000) /* 0.250000000 */,
478 MAD_F(0x035d13f3) /* 0.210224104 */,
479 MAD_F(0x02d413cd) /* 0.176776695 */,
480 MAD_F(0x0260dfc1) /* 0.148650889 */,
481 MAD_F(0x02000000) /* 0.125000000 */,
482 MAD_F(0x01ae89fa) /* 0.105112052 */,
483 MAD_F(0x016a09e6) /* 0.088388348 */,
484 MAD_F(0x01306fe1) /* 0.074325445 */
485 }, {
486 MAD_F(0x0b504f33) /* 0.707106781 */,
487 MAD_F(0x08000000) /* 0.500000000 */,
488 MAD_F(0x05a8279a) /* 0.353553391 */,
489 MAD_F(0x04000000) /* 0.250000000 */,
490 MAD_F(0x02d413cd) /* 0.176776695 */,
491 MAD_F(0x02000000) /* 0.125000000 */,
492 MAD_F(0x016a09e6) /* 0.088388348 */,
493 MAD_F(0x01000000) /* 0.062500000 */,
494 MAD_F(0x00b504f3) /* 0.044194174 */,
495 MAD_F(0x00800000) /* 0.031250000 */,
496 MAD_F(0x005a827a) /* 0.022097087 */,
497 MAD_F(0x00400000) /* 0.015625000 */,
498 MAD_F(0x002d413d) /* 0.011048543 */,
499 MAD_F(0x00200000) /* 0.007812500 */,
500 MAD_F(0x0016a09e) /* 0.005524272 */
501 }
502};
503
504/*
505 * NAME: III_sideinfo()
506 * DESCRIPTION: decode frame side information from a bitstream
507 */
508static
509enum mad_error III_sideinfo(struct mad_bitptr *ptr, unsigned int nch,
510 int lsf, struct sideinfo *si,
511 unsigned int *data_bitlen,
512 unsigned int *priv_bitlen)
513{
514 unsigned int ngr, gr, ch, i;
515 enum mad_error result = MAD_ERROR_NONE;
516
517 *data_bitlen = 0;
518 *priv_bitlen = lsf ? ((nch == 1) ? 1 : 2) : ((nch == 1) ? 5 : 3);
519
520 si->main_data_begin = mad_bit_read(ptr, lsf ? 8 : 9);
521 si->private_bits = mad_bit_read(ptr, *priv_bitlen);
522
523 ngr = 1;
524 if (!lsf) {
525 ngr = 2;
526
527 for (ch = 0; ch < nch; ++ch)
528 si->scfsi[ch] = mad_bit_read(ptr, 4);
529 }
530
531 for (gr = 0; gr < ngr; ++gr) {
532 struct granule *granule = &si->gr[gr];
533
534 for (ch = 0; ch < nch; ++ch) {
535 struct channel *channel = &granule->ch[ch];
536
537 channel->part2_3_length = mad_bit_read(ptr, 12);
538 channel->big_values = mad_bit_read(ptr, 9);
539 channel->global_gain = mad_bit_read(ptr, 8);
540 channel->scalefac_compress = mad_bit_read(ptr, lsf ? 9 : 4);
541
542 *data_bitlen += channel->part2_3_length;
543
544 if (channel->big_values > 288 && result == 0)
545 result = MAD_ERROR_BADBIGVALUES;
546
547 channel->flags = 0;
548
549 /* window_switching_flag */
550 if (mad_bit_read(ptr, 1)) {
551 channel->block_type = mad_bit_read(ptr, 2);
552
553 if (channel->block_type == 0 && result == 0)
554 result = MAD_ERROR_BADBLOCKTYPE;
555
556 if (!lsf && channel->block_type == 2 && si->scfsi[ch] && result == 0)
557 result = MAD_ERROR_BADSCFSI;
558
559 channel->region0_count = 7;
560 channel->region1_count = 36;
561
562 if (mad_bit_read(ptr, 1))
563 channel->flags |= mixed_block_flag;
564 else if (channel->block_type == 2)
565 channel->region0_count = 8;
566
567 for (i = 0; i < 2; ++i)
568 channel->table_select[i] = mad_bit_read(ptr, 5);
569
570# if defined(DEBUG)
571 channel->table_select[2] = 4; /* not used */
572# endif
573
574 for (i = 0; i < 3; ++i)
575 channel->subblock_gain[i] = mad_bit_read(ptr, 3);
576 }
577 else {
578 channel->block_type = 0;
579
580 for (i = 0; i < 3; ++i)
581 channel->table_select[i] = mad_bit_read(ptr, 5);
582
583 channel->region0_count = mad_bit_read(ptr, 4);
584 channel->region1_count = mad_bit_read(ptr, 3);
585 }
586
587 /* [preflag,] scalefac_scale, count1table_select */
588 channel->flags |= mad_bit_read(ptr, lsf ? 2 : 3);
589 }
590 }
591
592 return result;
593}
594
595/*
596 * NAME: III_scalefactors_lsf()
597 * DESCRIPTION: decode channel scalefactors for LSF from a bitstream
598 */
599static
600unsigned int III_scalefactors_lsf(struct mad_bitptr *ptr,
601 struct channel *channel,
602 struct channel *gr1ch, int mode_extension)
603{
604 struct mad_bitptr start;
605 unsigned int scalefac_compress, index, slen[4], part, n, i;
606 unsigned char const *nsfb;
607
608 start = *ptr;
609
610 scalefac_compress = channel->scalefac_compress;
611 index = (channel->block_type == 2) ?
612 ((channel->flags & mixed_block_flag) ? 2 : 1) : 0;
613
614 if (!((mode_extension & I_STEREO) && gr1ch)) {
615 if (scalefac_compress < 400) {
616 slen[0] = (scalefac_compress >> 4) / 5;
617 slen[1] = (scalefac_compress >> 4) % 5;
618 slen[2] = (scalefac_compress % 16) >> 2;
619 slen[3] = scalefac_compress % 4;
620
621 nsfb = nsfb_table[0][index];
622 }
623 else if (scalefac_compress < 500) {
624 scalefac_compress -= 400;
625
626 slen[0] = (scalefac_compress >> 2) / 5;
627 slen[1] = (scalefac_compress >> 2) % 5;
628 slen[2] = scalefac_compress % 4;
629 slen[3] = 0;
630
631 nsfb = nsfb_table[1][index];
632 }
633 else {
634 scalefac_compress -= 500;
635
636 slen[0] = scalefac_compress / 3;
637 slen[1] = scalefac_compress % 3;
638 slen[2] = 0;
639 slen[3] = 0;
640
641 channel->flags |= preflag;
642
643 nsfb = nsfb_table[2][index];
644 }
645
646 n = 0;
647 for (part = 0; part < 4; ++part) {
648 for (i = 0; i < nsfb[part]; ++i)
649 channel->scalefac[n++] = mad_bit_read(ptr, slen[part]);
650 }
651
652 while (n < 39)
653 channel->scalefac[n++] = 0;
654 }
655 else { /* (mode_extension & I_STEREO) && gr1ch (i.e. ch == 1) */
656 scalefac_compress >>= 1;
657
658 if (scalefac_compress < 180) {
659 slen[0] = scalefac_compress / 36;
660 slen[1] = (scalefac_compress % 36) / 6;
661 slen[2] = (scalefac_compress % 36) % 6;
662 slen[3] = 0;
663
664 nsfb = nsfb_table[3][index];
665 }
666 else if (scalefac_compress < 244) {
667 scalefac_compress -= 180;
668
669 slen[0] = (scalefac_compress % 64) >> 4;
670 slen[1] = (scalefac_compress % 16) >> 2;
671 slen[2] = scalefac_compress % 4;
672 slen[3] = 0;
673
674 nsfb = nsfb_table[4][index];
675 }
676 else {
677 scalefac_compress -= 244;
678
679 slen[0] = scalefac_compress / 3;
680 slen[1] = scalefac_compress % 3;
681 slen[2] = 0;
682 slen[3] = 0;
683
684 nsfb = nsfb_table[5][index];
685 }
686
687 n = 0;
688 for (part = 0; part < 4; ++part) {
689 unsigned int max, is_pos;
690
691 max = (1 << slen[part]) - 1;
692
693 for (i = 0; i < nsfb[part]; ++i) {
694 is_pos = mad_bit_read(ptr, slen[part]);
695
696 channel->scalefac[n] = is_pos;
697 gr1ch->scalefac[n++] = (is_pos == max);
698 }
699 }
700
701 while (n < 39) {
702 channel->scalefac[n] = 0;
703 gr1ch->scalefac[n++] = 0; /* apparently not illegal */
704 }
705 }
706
707 return mad_bit_length(&start, ptr);
708}
709
710/*
711 * NAME: III_scalefactors()
712 * DESCRIPTION: decode channel scalefactors of one granule from a bitstream
713 */
714static
715unsigned int III_scalefactors(struct mad_bitptr *ptr, struct channel *channel,
716 struct channel const *gr0ch, unsigned int scfsi)
717{
718 struct mad_bitptr start;
719 unsigned int slen1, slen2, sfbi;
720
721 start = *ptr;
722
723 slen1 = sflen_table[channel->scalefac_compress].slen1;
724 slen2 = sflen_table[channel->scalefac_compress].slen2;
725
726 if (channel->block_type == 2) {
727 unsigned int nsfb;
728
729 sfbi = 0;
730
731 nsfb = (channel->flags & mixed_block_flag) ? 8 + 3 * 3 : 6 * 3;
732 while (nsfb--)
733 channel->scalefac[sfbi++] = mad_bit_read(ptr, slen1);
734
735 nsfb = 6 * 3;
736 while (nsfb--)
737 channel->scalefac[sfbi++] = mad_bit_read(ptr, slen2);
738
739 nsfb = 1 * 3;
740 while (nsfb--)
741 channel->scalefac[sfbi++] = 0;
742 }
743 else { /* channel->block_type != 2 */
744 if (scfsi & 0x8) {
745 for (sfbi = 0; sfbi < 6; ++sfbi)
746 channel->scalefac[sfbi] = gr0ch->scalefac[sfbi];
747 }
748 else {
749 for (sfbi = 0; sfbi < 6; ++sfbi)
750 channel->scalefac[sfbi] = mad_bit_read(ptr, slen1);
751 }
752
753 if (scfsi & 0x4) {
754 for (sfbi = 6; sfbi < 11; ++sfbi)
755 channel->scalefac[sfbi] = gr0ch->scalefac[sfbi];
756 }
757 else {
758 for (sfbi = 6; sfbi < 11; ++sfbi)
759 channel->scalefac[sfbi] = mad_bit_read(ptr, slen1);
760 }
761
762 if (scfsi & 0x2) {
763 for (sfbi = 11; sfbi < 16; ++sfbi)
764 channel->scalefac[sfbi] = gr0ch->scalefac[sfbi];
765 }
766 else {
767 for (sfbi = 11; sfbi < 16; ++sfbi)
768 channel->scalefac[sfbi] = mad_bit_read(ptr, slen2);
769 }
770
771 if (scfsi & 0x1) {
772 for (sfbi = 16; sfbi < 21; ++sfbi)
773 channel->scalefac[sfbi] = gr0ch->scalefac[sfbi];
774 }
775 else {
776 for (sfbi = 16; sfbi < 21; ++sfbi)
777 channel->scalefac[sfbi] = mad_bit_read(ptr, slen2);
778 }
779
780 channel->scalefac[21] = 0;
781 }
782
783 return mad_bit_length(&start, ptr);
784}
785
786/*
787 * The Layer III formula for requantization and scaling is defined by
788 * section 2.4.3.4.7.1 of ISO/IEC 11172-3, as follows:
789 *
790 * long blocks:
791 * xr[i] = sign(is[i]) * abs(is[i])^(4/3) *
792 * 2^((1/4) * (global_gain - 210)) *
793 * 2^-(scalefac_multiplier *
794 * (scalefac_l[sfb] + preflag * pretab[sfb]))
795 *
796 * short blocks:
797 * xr[i] = sign(is[i]) * abs(is[i])^(4/3) *
798 * 2^((1/4) * (global_gain - 210 - 8 * subblock_gain[w])) *
799 * 2^-(scalefac_multiplier * scalefac_s[sfb][w])
800 *
801 * where:
802 * scalefac_multiplier = (scalefac_scale + 1) / 2
803 *
804 * The routines III_exponents() and III_requantize() facilitate this
805 * calculation.
806 */
807
808/*
809 * NAME: III_exponents()
810 * DESCRIPTION: calculate scalefactor exponents
811 */
812static
813void III_exponents(struct channel const *channel,
814 unsigned char const *sfbwidth, signed int exponents[39])
815{
816 signed int gain;
817 unsigned int scalefac_multiplier, sfbi;
818
819 gain = (signed int) channel->global_gain - 210;
820 scalefac_multiplier = (channel->flags & scalefac_scale) ? 2 : 1;
821
822 if (channel->block_type == 2) {
823 unsigned int l;
824 signed int gain0, gain1, gain2;
825
826 sfbi = l = 0;
827
828 if (channel->flags & mixed_block_flag) {
829 unsigned int premask;
830
831 premask = (channel->flags & preflag) ? ~0 : 0;
832
833 /* long block subbands 0-1 */
834
835 while (l < 36) {
836 exponents[sfbi] = gain -
837 (signed int) ((channel->scalefac[sfbi] + (pretab[sfbi] & premask)) <<
838 scalefac_multiplier);
839
840 l += sfbwidth[sfbi++];
841 }
842 }
843
844 /* this is probably wrong for 8000 Hz short/mixed blocks */
845
846 gain0 = gain - 8 * (signed int) channel->subblock_gain[0];
847 gain1 = gain - 8 * (signed int) channel->subblock_gain[1];
848 gain2 = gain - 8 * (signed int) channel->subblock_gain[2];
849
850 while (l < 576) {
851 exponents[sfbi + 0] = gain0 -
852 (signed int) (channel->scalefac[sfbi + 0] << scalefac_multiplier);
853 exponents[sfbi + 1] = gain1 -
854 (signed int) (channel->scalefac[sfbi + 1] << scalefac_multiplier);
855 exponents[sfbi + 2] = gain2 -
856 (signed int) (channel->scalefac[sfbi + 2] << scalefac_multiplier);
857 unsigned int w = sfbwidth[sfbi];
858 l += 3 * w;
859 sfbi += 3;
860 }
861 }
862 else { /* channel->block_type != 2 */
863 if (channel->flags & preflag) {
864 for (sfbi = 0; sfbi < 22; ++sfbi) {
865 exponents[sfbi] = gain -
866 (signed int) ((channel->scalefac[sfbi] + pretab[sfbi]) <<
867 scalefac_multiplier);
868 }
869 }
870 else {
871 for (sfbi = 0; sfbi < 22; ++sfbi) {
872 exponents[sfbi] = gain -
873 (signed int) (channel->scalefac[sfbi] << scalefac_multiplier);
874 }
875 }
876 }
877}
878
879/*
880 * NAME: III_requantize()
881 * DESCRIPTION: requantize one (positive) value
882 */
883static
884mad_fixed_t III_requantize(unsigned int value, signed int exp)
885{
886 mad_fixed_t requantized;
887 signed int frac;
888 unsigned long power;
889
890 frac = exp % 4; /* assumes sign(frac) == sign(exp) */
891 exp /= 4;
892
893 /* format rq_table: bit31-27=exponent bit26-0=mantissa */
894 power = rq_table[value];
895 requantized = power & 0x07ffffff;
896 exp += power >> 27;
897
898 if (exp < 0) {
899 if (-exp >= (signed int) (sizeof(mad_fixed_t) * CHAR_BIT)) {
900 /* underflow */
901 requantized = 0;
902 }
903 else {
904 requantized += 1L << (-exp - 1);
905 requantized >>= -exp;
906 }
907 }
908 else {
909 if (exp >= 5) {
910 /* overflow */
911# if defined(DEBUG)
912 fprintf(stderr, "requantize overflow (%f * 2^%d)\n",
913 mad_f_todouble(requantized), exp);
914# endif
915 requantized = MAD_F_MAX;
916 }
917 else
918 requantized <<= exp;
919 }
920
921 return frac ? mad_f_mul(requantized, root_table[3 + frac]) : requantized;
922}
923
924/* we must take care that sz >= bits and sz < sizeof(long) lest bits == 0 */
925# if defined(CPU_ARM)
926# define MASK(cache, sz, bits) \
927 ({ unsigned long res; \
928 asm ("mov %0, #1\n\t" \
929 "rsb %0, %0, %0, lsl %3\n\t" \
930 "and %0, %0, %1, lsr %2" \
931 : "=&r" (res) : "r" (cache), "r" ((sz) - (bits)), "r" (bits)); \
932 res; \
933 })
934#else
935# define MASK(cache, sz, bits) \
936 (((cache) >> ((sz) - (bits))) & ((1 << (bits)) - 1))
937#endif
938# define MASK1BIT(cache, sz) \
939 ((cache) & (1 << ((sz) - 1)))
940
941/*
942 * NAME: III_huffdecode()
943 * DESCRIPTION: decode Huffman code words of one channel of one granule
944 */
945static
946enum mad_error III_huffdecode(struct mad_bitptr *ptr, mad_fixed_t xrarr[576],
947 struct channel *channel,
948 unsigned char const *sfbwidth,
949 unsigned int part2_length)
950{
951 unsigned int bits;
952 signed int exponents[39], exp;
953 signed int const *expptr;
954 struct mad_bitptr peek;
955 signed int bits_left, cachesz;
956 register mad_fixed_t *xr;
957 mad_fixed_t const *sfbound;
958 register unsigned long bitcache;
959
960 bits_left = (signed) channel->part2_3_length - (signed) part2_length;
961 if (bits_left < 0)
962 return MAD_ERROR_BADPART3LEN;
963
964 III_exponents(channel, sfbwidth, exponents);
965
966 peek = *ptr;
967 cachesz = 0;
968 sfbound = xr = xrarr;
969 mad_bit_skip(ptr, bits_left);
970
971 /* big_values */
972 {
973 int region;
974 struct hufftable const *entry;
975 union huffpair const *table;
976 unsigned int linbits, startbits, rcount;
977 mad_fixed_t reqcache[16];
978 mad_fixed_t const *xr_end, *xr_big_val;
979
980 rcount = 1;
981 expptr = &exponents[0];
982 region = -1;
983 exp = 0x3210; /* start value */
984 bitcache = 0;
985 linbits = startbits = 0;
986 table = NULL;
987 xr_big_val = xr + 2 * channel->big_values;
988
989 while(xr < xr_big_val)
990 {
991 sfbound += *sfbwidth++;
992 xr_end = sfbound > xr_big_val ? xr_big_val : sfbound;
993
994 /* change table if region boundary */
995 if(--rcount == 0)
996 {
997 if(exp == 0x3210)
998 rcount = channel->region0_count + 1;
999 else
1000 if(region == 0)
1001 rcount = channel->region1_count + 1;
1002 else
1003 rcount = 0; /* all remaining */
1004
1005 entry = &mad_huff_pair_table[channel->table_select[++region]];
1006 table = entry->table;
1007 linbits = entry->linbits;
1008 startbits = entry->startbits;
1009
1010 if(table == 0)
1011 return MAD_ERROR_BADHUFFTABLE;
1012 }
1013
1014 if(exp != *expptr)
1015 {
1016 exp = *expptr;
1017 /* clear cache */
1018 memset(reqcache, 0, sizeof(reqcache));
1019 }
1020
1021 ++expptr;
1022
1023 if(linbits)
1024 {
1025 for( ; xr<xr_end; xr+=2)
1026 {
1027 union huffpair const *pair;
1028 register mad_fixed_t requantized;
1029 unsigned int clumpsz, value;
1030
1031 /* maxhuffcode(hufftab16,hufftab24)=17bit + sign(x,y)=2bit */
1032 if(cachesz < 19)
1033 {
1034 if(cachesz < 0)
1035 return MAD_ERROR_BADHUFFDATA; /* cache underrun */
1036
1037 bits = MAXLSHIFT - cachesz;
1038 bitcache = (bitcache << bits) | mad_bit_read(&peek, bits);
1039 cachesz += bits;
1040 }
1041
1042 /* hcod (0..19) */
1043 clumpsz = startbits;
1044 pair = &table[MASK(bitcache, cachesz, clumpsz)];
1045
1046 while(!pair->final)
1047 {
1048 cachesz -= clumpsz;
1049 clumpsz = pair->ptr.bits;
1050 pair = &table[pair->ptr.offset + MASK(bitcache, cachesz, clumpsz)];
1051 }
1052
1053 cachesz -= pair->value.hlen;
1054
1055 /* x (0..14) */
1056 value = pair->value.x;
1057 if(value == 0)
1058 xr[0] = 0;
1059 else
1060 {
1061 if(value == 15)
1062 {
1063 /* maxlinbits=13bit + sign(x,y)=2bit */
1064 if(cachesz < 15)
1065 {
1066 if(cachesz < 0)
1067 return MAD_ERROR_BADHUFFDATA; /* cache underrun */
1068
1069 bits = MAXLSHIFT - cachesz;
1070 bitcache = (bitcache << bits) | mad_bit_read(&peek, bits);
1071 cachesz += bits;
1072 }
1073
1074 requantized = III_requantize(15+MASK(bitcache, cachesz, linbits), exp);
1075 cachesz -= linbits;
1076 }
1077 else
1078 {
1079 if(reqcache[value])
1080 requantized = reqcache[value];
1081 else
1082 requantized = reqcache[value] = III_requantize(value, exp);
1083 }
1084
1085 xr[0] = MASK1BIT(bitcache, cachesz--) ? -requantized : requantized;
1086 }
1087
1088 /* y (0..14) */
1089 value = pair->value.y;
1090 if(value == 0)
1091 xr[1] = 0;
1092 else
1093 {
1094 if(value == 15)
1095 {
1096 /* maxlinbits=13bit + sign(y)=1bit */
1097 if(cachesz < 14)
1098 {
1099 if(cachesz < 0)
1100 return MAD_ERROR_BADHUFFDATA; /* cache underrun */
1101
1102 bits = MAXLSHIFT - cachesz;
1103 bitcache = (bitcache << bits) | mad_bit_read(&peek, bits);
1104 cachesz += bits;
1105 }
1106
1107 requantized = III_requantize(15+MASK(bitcache, cachesz, linbits), exp);
1108 cachesz -= linbits;
1109 }
1110 else
1111 {
1112 if(reqcache[value])
1113 requantized = reqcache[value];
1114 else
1115 requantized = reqcache[value] = III_requantize(value, exp);
1116 }
1117 xr[1] = MASK1BIT(bitcache, cachesz--) ? -requantized : requantized;
1118 }
1119 }
1120 }
1121 else
1122 {
1123 for( ; xr<xr_end; xr+=2)
1124 {
1125 union huffpair const *pair;
1126 register mad_fixed_t requantized;
1127 unsigned int clumpsz, value;
1128
1129 /* maxlookup=4bit + sign(x,y)=2bit */
1130 if(cachesz < 6)
1131 {
1132 if(cachesz < 0)
1133 return MAD_ERROR_BADHUFFDATA; /* cache underrun */
1134
1135 bits = MAXLSHIFT - cachesz;
1136 bitcache = (bitcache << bits) | mad_bit_read(&peek, bits);
1137 cachesz += bits;
1138 }
1139
1140 /* hcod (0..19) */
1141 clumpsz = startbits;
1142 pair = &table[MASK(bitcache, cachesz, clumpsz)];
1143
1144 while(!pair->final)
1145 {
1146 cachesz -= clumpsz;
1147
1148 /* maxlookup=4bit + sign(x,y)=2bit */
1149 if(cachesz < 6)
1150 {
1151 if(cachesz < 0)
1152 return MAD_ERROR_BADHUFFDATA; /* cache underrun */
1153
1154 bits = MAXLSHIFT - cachesz;
1155 bitcache = (bitcache << bits) | mad_bit_read(&peek, bits);
1156 cachesz += bits;
1157 }
1158
1159 clumpsz = pair->ptr.bits;
1160 pair = &table[pair->ptr.offset + MASK(bitcache, cachesz, clumpsz)];
1161 }
1162
1163 cachesz -= pair->value.hlen;
1164
1165 /* x (0..1) */
1166 value = pair->value.x;
1167 if(value == 0)
1168 xr[0] = 0;
1169 else
1170 {
1171 if(reqcache[value])
1172 requantized = reqcache[value];
1173 else
1174 requantized = reqcache[value] = III_requantize(value, exp);
1175
1176 xr[0] = MASK1BIT(bitcache, cachesz--) ? -requantized : requantized;
1177 }
1178
1179 /* y (0..1) */
1180 value = pair->value.y;
1181 if(value == 0)
1182 xr[1] = 0;
1183 else
1184 {
1185 if(reqcache[value])
1186 requantized = reqcache[value];
1187 else
1188 requantized = reqcache[value] = III_requantize(value, exp);
1189
1190 xr[1] = MASK1BIT(bitcache, cachesz--) ? -requantized : requantized;
1191 }
1192 }
1193 }
1194 }
1195 }
1196
1197 bits_left = ptr->readbit - peek.readbit;
1198
1199 if(bits_left + cachesz < 0)
1200 return MAD_ERROR_BADHUFFDATA; /* big_values overrun */
1201
1202 /* count1 */
1203 {
1204 union huffquad const *table;
1205 register mad_fixed_t requantized;
1206
1207 table = mad_huff_quad_table[channel->flags & count1table_select];
1208
1209 requantized = III_requantize(1, exp);
1210
1211 while(xr <= &xrarr[572] && bits_left + cachesz > 0)
1212 {
1213 union huffquad const *quad;
1214
1215 /* hcod (1..6) */
1216 if(cachesz < 10)
1217 {
1218 if(cachesz < 0)
1219 return MAD_ERROR_BADHUFFDATA; /* cache underrun */
1220
1221 bits = MAXLSHIFT - cachesz;
1222 bitcache = (bitcache << bits) | mad_bit_read(&peek, bits);
1223 cachesz += bits;
1224 bits_left -= bits;
1225 }
1226
1227 quad = &table[MASK(bitcache, cachesz, 4)];
1228
1229 /* quad tables guaranteed to have at most one extra lookup */
1230 if (!quad->final) {
1231 cachesz -= 4;
1232
1233 quad = &table[quad->ptr.offset +
1234 MASK(bitcache, cachesz, quad->ptr.bits)];
1235 }
1236
1237 cachesz -= quad->value.hlen;
1238
1239 if (xr == sfbound) {
1240 sfbound += *sfbwidth++;
1241
1242 if (exp != *expptr) {
1243 exp = *expptr;
1244 requantized = III_requantize(1, exp);
1245 }
1246
1247 ++expptr;
1248 }
1249
1250 /* v (0..1) */
1251 xr[0] = quad->value.v ?
1252 (MASK1BIT(bitcache, cachesz--) ? -requantized : requantized) : 0;
1253
1254 /* w (0..1) */
1255 xr[1] = quad->value.w ?
1256 (MASK1BIT(bitcache, cachesz--) ? -requantized : requantized) : 0;
1257
1258 xr += 2;
1259
1260 if (xr == sfbound) {
1261 sfbound += *sfbwidth++;
1262
1263 if (exp != *expptr) {
1264 exp = *expptr;
1265 requantized = III_requantize(1, exp);
1266 }
1267
1268 ++expptr;
1269 }
1270
1271 /* x (0..1) */
1272 xr[0] = quad->value.x ?
1273 (MASK1BIT(bitcache, cachesz--) ? -requantized : requantized) : 0;
1274
1275 /* y (0..1) */
1276 xr[1] = quad->value.y ?
1277 (MASK1BIT(bitcache, cachesz--) ? -requantized : requantized) : 0;
1278
1279 xr += 2;
1280 }
1281
1282 if(bits_left + cachesz < 0)
1283 {
1284 /* technically the bitstream is misformatted, but apparently
1285 some encoders are just a bit sloppy with stuffing bits */
1286 xr -= 4;
1287 }
1288 }
1289
1290 /* rzero */
1291 memset(xr, 0, (char*)&xrarr[576] - (char*)xr);
1292
1293 return MAD_ERROR_NONE;
1294}
1295
1296# undef MASK
1297# undef MASK1BIT
1298
1299/*
1300 * NAME: III_reorder()
1301 * DESCRIPTION: reorder frequency lines of a short block into subband order
1302 */
1303static
1304void III_reorder(mad_fixed_t xr[576], struct channel const *channel,
1305 unsigned char const sfbwidth[39])
1306{
1307 mad_fixed_t tmp[32][3][6];
1308 unsigned int sb, l, f, w, sbw[3], sw[3];
1309
1310 /* this is probably wrong for 8000 Hz mixed blocks */
1311
1312 sb = 0;
1313 if (channel->flags & mixed_block_flag) {
1314 sb = 2;
1315
1316 l = 0;
1317 while (l < 36)
1318 l += *sfbwidth++;
1319 }
1320
1321 for (w = 0; w < 3; ++w) {
1322 sbw[w] = sb;
1323 sw[w] = 0;
1324 }
1325
1326 f = *sfbwidth++;
1327 w = 0;
1328
1329 for (l = 18 * sb; l < 576; ++l) {
1330 if (f-- == 0) {
1331 f = *sfbwidth++ - 1;
1332 w = (w + 1) % 3;
1333 }
1334
1335 unsigned int sbww = sbw[w];
1336 tmp[sbww][w][sw[w]++] = xr[l];
1337
1338 if (sw[w] == 6) {
1339 sw[w] = 0;
1340 ++sbw[w];
1341 }
1342 }
1343
1344 memcpy(&xr[18 * sb], &tmp[sb], (576 - 18 * sb) * sizeof(mad_fixed_t));
1345}
1346
1347/*
1348 * NAME: III_stereo()
1349 * DESCRIPTION: perform joint stereo processing on a granule
1350 */
1351static
1352enum mad_error III_stereo(mad_fixed_t xr[2][576],
1353 struct granule const *granule,
1354 struct mad_header *header,
1355 unsigned char const *sfbwidth)
1356{
1357 short modes[39];
1358 unsigned int sfbi, l, n, i;
1359
1360 if (granule->ch[0].block_type !=
1361 granule->ch[1].block_type ||
1362 (granule->ch[0].flags & mixed_block_flag) !=
1363 (granule->ch[1].flags & mixed_block_flag))
1364 return MAD_ERROR_BADSTEREO;
1365
1366 for (i = 0; i < 39; ++i)
1367 modes[i] = header->mode_extension;
1368
1369 /* intensity stereo */
1370
1371 if (header->mode_extension & I_STEREO) {
1372 struct channel const *right_ch = &granule->ch[1];
1373 mad_fixed_t const *right_xr = xr[1];
1374 unsigned int is_pos;
1375
1376 header->flags |= MAD_FLAG_I_STEREO;
1377
1378 /* first determine which scalefactor bands are to be processed */
1379
1380 if (right_ch->block_type == 2) {
1381 unsigned int lower, start, max, bound[3], w;
1382
1383 lower = start = max = bound[0] = bound[1] = bound[2] = 0;
1384
1385 sfbi = l = 0;
1386
1387 if (right_ch->flags & mixed_block_flag) {
1388 while (l < 36) {
1389 n = sfbwidth[sfbi++];
1390
1391 for (i = 0; i < n; ++i) {
1392 if (right_xr[i]) {
1393 lower = sfbi;
1394 break;
1395 }
1396 }
1397
1398 right_xr += n;
1399 l += n;
1400 }
1401
1402 start = sfbi;
1403 }
1404
1405 w = 0;
1406 while (l < 576) {
1407 n = sfbwidth[sfbi++];
1408
1409 for (i = 0; i < n; ++i) {
1410 if (right_xr[i]) {
1411 max = bound[w] = sfbi;
1412 break;
1413 }
1414 }
1415
1416 right_xr += n;
1417 l += n;
1418 w = (w + 1) % 3;
1419 }
1420
1421 if (max)
1422 lower = start;
1423
1424 /* long blocks */
1425
1426 for (i = 0; i < lower; ++i)
1427 modes[i] = header->mode_extension & ~I_STEREO;
1428
1429 /* short blocks */
1430
1431 w = 0;
1432 for (i = start; i < max; ++i) {
1433 if (i < bound[w])
1434 modes[i] = header->mode_extension & ~I_STEREO;
1435
1436 w = (w + 1) % 3;
1437 }
1438 }
1439 else { /* right_ch->block_type != 2 */
1440 unsigned int bound;
1441
1442 bound = 0;
1443 for (sfbi = l = 0; l < 576; l += n) {
1444 n = sfbwidth[sfbi++];
1445
1446 for (i = 0; i < n; ++i) {
1447 if (right_xr[i]) {
1448 bound = sfbi;
1449 break;
1450 }
1451 }
1452
1453 right_xr += n;
1454 }
1455
1456 for (i = 0; i < bound; ++i)
1457 modes[i] = header->mode_extension & ~I_STEREO;
1458 }
1459
1460 /* now do the actual processing */
1461
1462 if (header->flags & MAD_FLAG_LSF_EXT) {
1463 unsigned char const *illegal_pos = granule[1].ch[1].scalefac;
1464 mad_fixed_t const *lsf_scale;
1465
1466 /* intensity_scale */
1467 lsf_scale = is_lsf_table[right_ch->scalefac_compress & 0x1];
1468
1469 for (sfbi = l = 0; l < 576; ++sfbi, l += n) {
1470 n = sfbwidth[sfbi];
1471
1472 if (!(modes[sfbi] & I_STEREO))
1473 continue;
1474
1475 if (illegal_pos[sfbi]) {
1476 modes[sfbi] &= ~I_STEREO;
1477 continue;
1478 }
1479
1480 is_pos = right_ch->scalefac[sfbi];
1481
1482 for (i = 0; i < n; ++i) {
1483 register mad_fixed_t left;
1484
1485 left = xr[0][l + i];
1486
1487 if (is_pos == 0)
1488 xr[1][l + i] = left;
1489 else {
1490 register mad_fixed_t opposite;
1491
1492 opposite = mad_f_mul(left, lsf_scale[(is_pos - 1) / 2]);
1493
1494 if (is_pos & 1) {
1495 xr[0][l + i] = opposite;
1496 xr[1][l + i] = left;
1497 }
1498 else
1499 xr[1][l + i] = opposite;
1500 }
1501 }
1502 }
1503 }
1504 else { /* !(header->flags & MAD_FLAG_LSF_EXT) */
1505 for (sfbi = l = 0; l < 576; ++sfbi, l += n) {
1506 n = sfbwidth[sfbi];
1507
1508 if (!(modes[sfbi] & I_STEREO))
1509 continue;
1510
1511 is_pos = right_ch->scalefac[sfbi];
1512
1513 if (is_pos >= 7) { /* illegal intensity position */
1514 modes[sfbi] &= ~I_STEREO;
1515 continue;
1516 }
1517
1518 for (i = 0; i < n; ++i) {
1519 register mad_fixed_t left;
1520
1521 left = xr[0][l + i];
1522
1523 xr[0][l + i] = mad_f_mul(left, is_table[ is_pos]);
1524 xr[1][l + i] = mad_f_mul(left, is_table[6 - is_pos]);
1525 }
1526 }
1527 }
1528 }
1529
1530 /* middle/side stereo */
1531
1532 if (header->mode_extension & MS_STEREO) {
1533 register mad_fixed_t invsqrt2;
1534
1535 header->flags |= MAD_FLAG_MS_STEREO;
1536
1537 invsqrt2 = root_table[3 + -2];
1538
1539 for (sfbi = l = 0; l < 576; ++sfbi, l += n) {
1540 n = sfbwidth[sfbi];
1541
1542 if (modes[sfbi] != MS_STEREO)
1543 continue;
1544
1545 for (i = 0; i < n; ++i) {
1546 register mad_fixed_t m, s;
1547
1548 m = xr[0][l + i];
1549 s = xr[1][l + i];
1550
1551 xr[0][l + i] = mad_f_mul(m + s, invsqrt2); /* l = (m + s) / sqrt(2) */
1552 xr[1][l + i] = mad_f_mul(m - s, invsqrt2); /* r = (m - s) / sqrt(2) */
1553 }
1554 }
1555 }
1556
1557 return MAD_ERROR_NONE;
1558}
1559
1560#if defined(CPU_ARM)
1561void III_aliasreduce(mad_fixed_t xr[576], int lines);
1562#else
1563/*
1564 * NAME: III_aliasreduce()
1565 * DESCRIPTION: perform frequency line alias reduction
1566 */
1567static
1568void III_aliasreduce(mad_fixed_t xr[576], int lines)
1569{
1570 mad_fixed_t const *bound;
1571 int i;
1572
1573 bound = &xr[lines];
1574 for (xr += 18; xr < bound; xr += 18) {
1575 for (i = 0; i < 8; ++i) {
1576 register mad_fixed_t a, b;
1577 register mad_fixed64hi_t hi;
1578 register mad_fixed64lo_t lo;
1579
1580 a = xr[-1 - i];
1581 b = xr[ i];
1582
1583# if defined(CPU_COLDFIRE)
1584 (void)hi, (void)lo;
1585 asm volatile ("mac.l %[a], %[csi], %%acc0\n\t"
1586 "msac.l %[b], %[cai], %%acc0\n\t"
1587 "mac.l %[b], %[csi], %%acc1\n\t"
1588 "mac.l %[a], %[cai], %%acc1\n\t"
1589 "movclr.l %%acc0, %[a]\n\t"
1590 "asl.l #3, %[a]\n\t"
1591 "movclr.l %%acc1, %[b]\n\t"
1592 "asl.l #3, %[b]\n\t"
1593 : [a] "+d" (a), [b] "+d" (b)
1594 : [csi] "r" (cs[i]), [cai] "r" (ca[i]));
1595 xr[-1 - i] = a;
1596 xr[ i] = b;
1597# else
1598 MAD_F_ML0(hi, lo, a, cs[i]);
1599 MAD_F_MLA(hi, lo, -b, ca[i]);
1600
1601 xr[-1 - i] = MAD_F_MLZ(hi, lo);
1602
1603 MAD_F_ML0(hi, lo, b, cs[i]);
1604 MAD_F_MLA(hi, lo, a, ca[i]);
1605
1606 xr[ i] = MAD_F_MLZ(hi, lo);
1607# endif
1608 }
1609 }
1610}
1611#endif
1612
1613# if defined(FPM_ARM)
1614void III_imdct_l(mad_fixed_t const [18], mad_fixed_t [36], unsigned int);
1615# else
1616/*
1617 * NAME: imdct36
1618 * DESCRIPTION: perform X[18]->x[36] IMDCT
1619 */
1620# if defined(CPU_COLDFIRE)
1621/* emac optimized imdct36, it is very ugly and i hope to replace it soon.
1622 * for now it is actually somewhat faster than the stock implementation.
1623 */
1624static inline
1625void imdct36(mad_fixed_t const X[18], mad_fixed_t x[36])
1626{
1627 mad_fixed_t t[16];
1628 /* assumes FRACBITS = 28 */
1629 asm volatile (
1630 /* MAD_F_ML0(hi, lo, X[4], MAD_F(0x0ec835e8)); */
1631 /* MAD_F_MLA(hi, lo, X[13], MAD_F(0x061f78aa)); */
1632 /* t6 = MAD_F_MLZ(hi, lo); */
1633 "move.l (4*4, %[X]), %%d0\n"
1634 "move.l #0x0ec835e8, %%d1\n"
1635 "move.l #0x061f78aa, %%d2\n"
1636 "mac.l %%d1, %%d0, (13*4, %[X]), %%d0, %%acc0\n"
1637 "mac.l %%d2, %%d0, ( 1*4, %[X]), %%d0, %%acc0\n"
1638 "move.l %%acc0, %%d7\n"
1639 "asl.l #3, %%d7\n"
1640 "move.l %%d7, (6*4, %[t])\n"
1641
1642 /* MAD_F_ML0(hi, lo, (t14 = X[1] - X[10]), -MAD_F(0x0ec835e8)); */
1643 /* MAD_F_MLA(hi, lo, (t15 = X[7] + X[16]), MAD_F(0x061f78aa)); */
1644 /* t4 = MAD_F_MLZ(hi, lo); */
1645 /* MAD_F_MLA(hi, lo, t14, -MAD_F(0x061f78aa)); */
1646 /* MAD_F_MLA(hi, lo, t15, -MAD_F(0x0ec835e8)); */
1647 /* t0 = MAD_F_MLZ(hi, lo); */
1648 "sub.l (10*4, %[X]), %%d0\n" /* t14 */
1649 "msac.l %%d0, %%d1, %%acc1\n"
1650 "msac.l %%d0, %%d2, (7*4, %[X]), %%d5, %%acc0\n"
1651 "add.l (16*4, %[X]), %%d5\n" /* t15 */
1652 "mac.l %%d5, %%d2, %%acc1\n"
1653 "msac.l %%d5, %%d1, ( %[X]), %%d5, %%acc0\n"
1654 "movclr.l %%acc1, %%d6\n"
1655 "asl.l #3, %%d6\n" /* t4 */
1656 "move.l %%d6, (4*4, %[t])\n"
1657 "move.l %%acc0, %%d0\n"
1658 "asl.l #3, %%d0\n" /* t0 */
1659 "move.l %%d0, (0*4, %[t])\n"
1660
1661 /* MAD_F_MLA(hi, lo, (t8 =X[0]-X[11]-X[12]), MAD_F(0x0216a2a2)); */
1662 /* MAD_F_MLA(hi, lo, (t9 =X[2]-X[ 9]-X[14]), MAD_F(0x09bd7ca0)); */
1663 /* MAD_F_MLA(hi, lo, (t10=X[3]-X[ 8]-X[15]), -MAD_F(0x0cb19346)); */
1664 /* MAD_F_MLA(hi, lo, (t11=X[5]-X[ 6]-X[17]), -MAD_F(0x0fdcf549)); */
1665 /* x[10] = -(x[7] = MAD_F_MLZ(hi, lo)); */
1666
1667 /* MAD_F_ML0(hi, lo, t8, -MAD_F(0x0cb19346)); */
1668 /* MAD_F_MLA(hi, lo, t9, MAD_F(0x0fdcf549)); */
1669 /* MAD_F_MLA(hi, lo, t10, MAD_F(0x0216a2a2)); */
1670 /* MAD_F_MLA(hi, lo, t11, -MAD_F(0x09bd7ca0)); */
1671 /* x[19] = x[34] = MAD_F_MLZ(hi, lo) - t0; */
1672
1673 /* MAD_F_ML0(hi, lo, t8, MAD_F(0x09bd7ca0)); */
1674 /* MAD_F_MLA(hi, lo, t9, -MAD_F(0x0216a2a2)); */
1675 /* MAD_F_MLA(hi, lo, t10, MAD_F(0x0fdcf549)); */
1676 /* MAD_F_MLA(hi, lo, t11, -MAD_F(0x0cb19346)); */
1677 /* x[ 1] = MAD_F_MLZ(hi, lo); */
1678
1679 /* MAD_F_ML0(hi, lo, t8, -MAD_F(0x0fdcf549)); */
1680 /* MAD_F_MLA(hi, lo, t9, -MAD_F(0x0cb19346)); */
1681 /* MAD_F_MLA(hi, lo, t10, -MAD_F(0x09bd7ca0)); */
1682 /* MAD_F_MLA(hi, lo, t11, -MAD_F(0x0216a2a2)); */
1683 /* x[25] = MAD_F_MLZ(hi, lo); */
1684
1685 /* t12 = t8 - t10; */
1686 /* t13 = t9 + t11; */
1687 "move.l #0x0216a2a2, %%d1\n"
1688 "move.l #0x0cb19346, %%d2\n"
1689 "move.l #0x09bd7ca0, %%d3\n"
1690 "move.l #0x0fdcf549, %%d4\n"
1691 "sub.l (11*4, %[X]), %%d5\n"
1692 "sub.l (12*4, %[X]), %%d5\n"
1693 "mac.l %%d1, %%d5, %%acc0\n"
1694 "msac.l %%d2, %%d5, %%acc1\n"
1695 "mac.l %%d3, %%d5, %%acc2\n"
1696 "msac.l %%d4, %%d5, (2*4, %[X]), %%d6, %%acc3\n"
1697 "sub.l ( 9*4, %[X]), %%d6\n"
1698 "sub.l (14*4, %[X]), %%d6\n"
1699 "mac.l %%d3, %%d6, %%acc0\n"
1700 "mac.l %%d4, %%d6, %%acc1\n"
1701 "msac.l %%d1, %%d6, %%acc2\n"
1702 "msac.l %%d2, %%d6, (3*4, %[X]), %%d7, %%acc3\n"
1703 "sub.l ( 8*4, %[X]), %%d7\n"
1704 "sub.l (15*4, %[X]), %%d7\n"
1705 "sub.l %%d7, %%d5\n" /* d5: t12 */
1706 "move.l %%d5, (12*4, %[t])\n"
1707 "msac.l %%d2, %%d7, %%acc0\n"
1708 "mac.l %%d1, %%d7, %%acc1\n"
1709 "mac.l %%d4, %%d7, %%acc2\n"
1710 "msac.l %%d3, %%d7, (5*4, %[X]), %%d7, %%acc3\n"
1711 "sub.l ( 6*4, %[X]), %%d7\n"
1712 "sub.l (17*4, %[X]), %%d7\n"
1713 "add.l %%d7, %%d6\n" /* d6: t13 */
1714 "move.l %%d6, (13*4, %[t])\n"
1715 "msac.l %%d4, %%d7, %%acc0\n"
1716 "msac.l %%d3, %%d7, %%acc1\n"
1717 "msac.l %%d2, %%d7, %%acc2\n"
1718 "msac.l %%d1, %%d7, (1*4, %[X]), %%d5, %%acc3\n"
1719
1720 "movclr.l %%acc0, %%d7\n"
1721 "asl.l #3, %%d7\n"
1722 "move.l %%d7, (7*4, %[x])\n"
1723 "neg.l %%d7\n"
1724 "move.l %%d7, (10*4, %[x])\n"
1725
1726 "movclr.l %%acc1, %%d7\n"
1727 "asl.l #3, %%d7\n"
1728 "sub.l %%d0, %%d7\n"
1729 "move.l %%d7, (19*4, %[x])\n"
1730 "move.l %%d7, (34*4, %[x])\n"
1731
1732 "movclr.l %%acc2, %%d7\n"
1733 "asl.l #3, %%d7\n"
1734 "move.l %%d7, ( 1*4, %[x])\n"
1735
1736 "movclr.l %%acc3, %%d7\n"
1737 "asl.l #3, %%d7\n"
1738 "move.l %%d7, (25*4, %[x])\n"
1739
1740 /* MAD_F_ML0(hi, lo, X[1], -MAD_F(0x09bd7ca0)); */
1741 /* MAD_F_MLA(hi, lo, X[7], MAD_F(0x0216a2a2)); */
1742 /* MAD_F_MLA(hi, lo, X[10], -MAD_F(0x0fdcf549)); */
1743 /* MAD_F_MLA(hi, lo, X[16], MAD_F(0x0cb19346)); */
1744 /* t1 = MAD_F_MLZ(hi, lo) + t6; */
1745
1746 /* MAD_F_ML0(hi, lo, X[1], -MAD_F(0x0216a2a2)); */
1747 /* MAD_F_MLA(hi, lo, X[7], -MAD_F(0x09bd7ca0)); */
1748 /* MAD_F_MLA(hi, lo, X[10], MAD_F(0x0cb19346)); */
1749 /* MAD_F_MLA(hi, lo, X[16], MAD_F(0x0fdcf549)); */
1750 /* t3 = MAD_F_MLZ(hi, lo); */
1751
1752 /* MAD_F_ML0(hi, lo, X[1], -MAD_F(0x0fdcf549)); */
1753 /* MAD_F_MLA(hi, lo, X[7], -MAD_F(0x0cb19346)); */
1754 /* MAD_F_MLA(hi, lo, X[10], -MAD_F(0x09bd7ca0)); */
1755 /* MAD_F_MLA(hi, lo, X[16], -MAD_F(0x0216a2a2)); */
1756 /* t5 = MAD_F_MLZ(hi, lo) - t6; */
1757 "msac.l %%d3, %%d5, %%acc0\n"
1758 "msac.l %%d1, %%d5, %%acc1\n"
1759 "msac.l %%d4, %%d5, ( 7*4, %[X]), %%d5, %%acc2\n"
1760 "mac.l %%d1, %%d5, %%acc0\n"
1761 "msac.l %%d3, %%d5, %%acc1\n"
1762 "msac.l %%d2, %%d5, (10*4, %[X]), %%d5, %%acc2\n"
1763 "msac.l %%d4, %%d5, %%acc0\n"
1764 "mac.l %%d2, %%d5, %%acc1\n"
1765 "msac.l %%d3, %%d5, (16*4, %[X]), %%d5, %%acc2\n"
1766 "mac.l %%d2, %%d5, %%acc0\n"
1767 "mac.l %%d4, %%d5, %%acc1\n"
1768 "msac.l %%d1, %%d5, ( 0*4, %[X]), %%d0, %%acc2\n"
1769
1770 "movclr.l %%acc0, %%d7\n"
1771 "asl.l #3, %%d7\n"
1772 "add.l (6*4, %[t]), %%d7\n" /* t1 */
1773
1774 "movclr.l %%acc1, %%d5\n"
1775 "asl.l #3, %%d5\n" /* t3 */
1776
1777 "movclr.l %%acc2, %%d6\n"
1778 "asl.l #3, %%d6\n"
1779 "sub.l (6*4, %[t]), %%d6\n" /* t5 */
1780 "move.l %%d6, (5*4, %[t])\n"
1781
1782 /* MAD_F_ML0(hi, lo, X[0], MAD_F(0x03768962)); */
1783 /* MAD_F_MLA(hi, lo, X[2], MAD_F(0x0e313245)); */
1784 /* MAD_F_MLA(hi, lo, X[3], -MAD_F(0x0ffc19fd)); */
1785 /* MAD_F_MLA(hi, lo, X[5], -MAD_F(0x0acf37ad)); */
1786 /* MAD_F_MLA(hi, lo, X[6], MAD_F(0x04cfb0e2)); */
1787 /* MAD_F_MLA(hi, lo, X[8], -MAD_F(0x0898c779)); */
1788 /* MAD_F_MLA(hi, lo, X[9], MAD_F(0x0d7e8807)); */
1789 /* MAD_F_MLA(hi, lo, X[11], MAD_F(0x0f426cb5)); */
1790 /* MAD_F_MLA(hi, lo, X[12], -MAD_F(0x0bcbe352)); */
1791 /* MAD_F_MLA(hi, lo, X[14], MAD_F(0x00b2aa3e)); */
1792 /* MAD_F_MLA(hi, lo, X[15], -MAD_F(0x07635284)); */
1793 /* MAD_F_MLA(hi, lo, X[17], -MAD_F(0x0f9ee890)); */
1794 /* x[11] = -(x[6] = MAD_F_MLZ(hi, lo) + t1); */
1795 /* MAD_F_ML0(hi, lo, X[0], -MAD_F(0x0f426cb5)); */
1796 /* MAD_F_MLA(hi, lo, X[2], -MAD_F(0x00b2aa3e)); */
1797 /* MAD_F_MLA(hi, lo, X[3], MAD_F(0x0898c779)); */
1798 /* MAD_F_MLA(hi, lo, X[5], MAD_F(0x0f9ee890)); */
1799 /* MAD_F_MLA(hi, lo, X[6], MAD_F(0x0acf37ad)); */
1800 /* MAD_F_MLA(hi, lo, X[8], -MAD_F(0x07635284)); */
1801 /* MAD_F_MLA(hi, lo, X[9], -MAD_F(0x0e313245)); */
1802 /* MAD_F_MLA(hi, lo, X[11], -MAD_F(0x0bcbe352)); */
1803 /* MAD_F_MLA(hi, lo, X[12], -MAD_F(0x03768962)); */
1804 /* MAD_F_MLA(hi, lo, X[14], MAD_F(0x0d7e8807)); */
1805 /* MAD_F_MLA(hi, lo, X[15], MAD_F(0x0ffc19fd)); */
1806 /* MAD_F_MLA(hi, lo, X[17], MAD_F(0x04cfb0e2)); */
1807 /* x[23] = x[30] = MAD_F_MLZ(hi, lo) + t1; */
1808 /* MAD_F_ML0(hi, lo, X[0], -MAD_F(0x0bcbe352)); */
1809 /* MAD_F_MLA(hi, lo, X[2], MAD_F(0x0d7e8807)); */
1810 /* MAD_F_MLA(hi, lo, X[3], -MAD_F(0x07635284)); */
1811 /* MAD_F_MLA(hi, lo, X[5], MAD_F(0x04cfb0e2)); */
1812 /* MAD_F_MLA(hi, lo, X[6], MAD_F(0x0f9ee890)); */
1813 /* MAD_F_MLA(hi, lo, X[8], -MAD_F(0x0ffc19fd)); */
1814 /* MAD_F_MLA(hi, lo, X[9], -MAD_F(0x00b2aa3e)); */
1815 /* MAD_F_MLA(hi, lo, X[11], MAD_F(0x03768962)); */
1816 /* MAD_F_MLA(hi, lo, X[12], -MAD_F(0x0f426cb5)); */
1817 /* MAD_F_MLA(hi, lo, X[14], MAD_F(0x0e313245)); */
1818 /* MAD_F_MLA(hi, lo, X[15], MAD_F(0x0898c779)); */
1819 /* MAD_F_MLA(hi, lo, X[17], -MAD_F(0x0acf37ad)); */
1820 /* x[18] = x[35] = MAD_F_MLZ(hi, lo) - t1; */
1821 "move.l #0x03768962, %%d1\n"
1822 "move.l #0x0f426cb5, %%d2\n"
1823 "move.l #0x0bcbe352, %%d3\n"
1824 "mac.l %%d1, %%d0, %%acc0\n"
1825 "msac.l %%d2, %%d0, %%acc1\n"
1826 "msac.l %%d3, %%d0, (11*4, %[X]), %%d0, %%acc2\n"
1827 "mac.l %%d2, %%d0, %%acc0\n"
1828 "msac.l %%d3, %%d0, %%acc1\n"
1829 "mac.l %%d1, %%d0, (12*4, %[X]), %%d0, %%acc2\n"
1830 "msac.l %%d3, %%d0, %%acc0\n"
1831 "msac.l %%d1, %%d0, %%acc1\n"
1832 "msac.l %%d2, %%d0, ( 2*4, %[X]), %%d0, %%acc2\n"
1833 "move.l #0x0e313245, %%d1\n"
1834 "move.l #0x00b2aa3e, %%d2\n"
1835 "move.l #0x0d7e8807, %%d3\n"
1836 "mac.l %%d1, %%d0, %%acc0\n"
1837 "msac.l %%d2, %%d0, %%acc1\n"
1838 "mac.l %%d3, %%d0, ( 9*4, %[X]), %%d0, %%acc2\n"
1839 "mac.l %%d3, %%d0, %%acc0\n"
1840 "msac.l %%d1, %%d0, %%acc1\n"
1841 "msac.l %%d2, %%d0, (14*4, %[X]), %%d0, %%acc2\n"
1842 "mac.l %%d2, %%d0, %%acc0\n"
1843 "mac.l %%d3, %%d0, %%acc1\n"
1844 "mac.l %%d1, %%d0, ( 3*4, %[X]), %%d0, %%acc2\n"
1845 "move.l #0x0ffc19fd, %%d1\n"
1846 "move.l #0x0898c779, %%d2\n"
1847 "move.l #0x07635284, %%d3\n"
1848 "msac.l %%d1, %%d0, %%acc0\n"
1849 "mac.l %%d2, %%d0, %%acc1\n"
1850 "msac.l %%d3, %%d0, ( 8*4, %[X]), %%d0, %%acc2\n"
1851 "msac.l %%d2, %%d0, %%acc0\n"
1852 "msac.l %%d3, %%d0, %%acc1\n"
1853 "msac.l %%d1, %%d0, (15*4, %[X]), %%d0, %%acc2\n"
1854 "msac.l %%d3, %%d0, %%acc0\n"
1855 "mac.l %%d1, %%d0, %%acc1\n"
1856 "mac.l %%d2, %%d0, ( 5*4, %[X]), %%d0, %%acc2\n"
1857 "move.l #0x0acf37ad, %%d1\n"
1858 "move.l #0x0f9ee890, %%d2\n"
1859 "move.l #0x04cfb0e2, %%d3\n"
1860 "msac.l %%d1, %%d0, %%acc0\n"
1861 "mac.l %%d2, %%d0, %%acc1\n"
1862 "mac.l %%d3, %%d0, ( 6*4, %[X]), %%d0, %%acc2\n"
1863 "mac.l %%d3, %%d0, %%acc0\n"
1864 "mac.l %%d1, %%d0, %%acc1\n"
1865 "mac.l %%d2, %%d0, (17*4, %[X]), %%d0, %%acc2\n"
1866 "msac.l %%d2, %%d0, %%acc0\n"
1867 "mac.l %%d3, %%d0, %%acc1\n"
1868 "msac.l %%d1, %%d0, ( 4*4, %[X]), %%d0, %%acc2\n"
1869
1870 "movclr.l %%acc0, %%d6\n"
1871 "asl.l #3, %%d6\n"
1872 "add.l %%d7, %%d6\n"
1873 "move.l %%d6, (6*4, %[x])\n"
1874 "neg.l %%d6\n"
1875 "move.l %%d6, (11*4, %[x])\n"
1876
1877 "movclr.l %%acc1, %%d6\n"
1878 "asl.l #3, %%d6\n"
1879 "add.l %%d7, %%d6\n"
1880 "move.l %%d6, (23*4, %[x])\n"
1881 "move.l %%d6, (30*4, %[x])\n"
1882
1883 "movclr.l %%acc2, %%d6\n"
1884 "asl.l #3, %%d6\n"
1885 "sub.l %%d7, %%d6\n"
1886 "move.l %%d6, (18*4, %[x])\n"
1887 "move.l %%d6, (35*4, %[x])\n"
1888
1889 /* MAD_F_ML0(hi, lo, X[4], MAD_F(0x061f78aa)); */
1890 /* MAD_F_MLA(hi, lo, X[13], -MAD_F(0x0ec835e8)); */
1891 /* t3 += (t7 = MAD_F_MLZ(hi, lo)); */
1892 /* t4 -= t7; */
1893 "move.l #0x061f78aa, %%d1\n"
1894 "mac.l %%d1, %%d0, (13*4, %[X]), %%d0, %%acc0\n"
1895 "move.l #0x0ec835e8, %%d1\n"
1896 "msac.l %%d1, %%d0, (1*4, %[X]), %%d0, %%acc0\n"
1897 "move.l %%acc0, %%d6\n"
1898 "asl.l #3, %%d6\n" /* t7 */
1899 "add.l %%d6, %%d5\n" /* t3 */
1900 "move.l (4*4, %[t]), %%d1\n"
1901 "sub.l %%d6, %%d1\n" /* t4 */
1902 "move.l %%d1, (4*4, %[t])\n"
1903
1904 /* MAD_F_MLA(hi, lo, X[1], -MAD_F(0x0cb19346)); */
1905 /* MAD_F_MLA(hi, lo, X[7], MAD_F(0x0fdcf549)); */
1906 /* MAD_F_MLA(hi, lo, X[10], MAD_F(0x0216a2a2)); */
1907 /* MAD_F_MLA(hi, lo, X[16], -MAD_F(0x09bd7ca0)); */
1908 /* t2 = MAD_F_MLZ(hi, lo); */
1909 "move.l #0x0cb19346, %%d1\n"
1910 "msac.l %%d1, %%d0, ( 7*4, %[X]), %%d0, %%acc0\n"
1911 "move.l #0x0fdcf549, %%d1\n"
1912 "mac.l %%d1, %%d0, (10*4, %[X]), %%d0, %%acc0\n"
1913 "move.l #0x0216a2a2, %%d1\n"
1914 "mac.l %%d1, %%d0, (16*4, %[X]), %%d0, %%acc0\n"
1915 "move.l #0x09bd7ca0, %%d1\n"
1916 "msac.l %%d1, %%d0, ( %[X]), %%d0, %%acc0\n"
1917 "move.l %%acc0, %%d7\n"
1918 "asl.l #3, %%d7\n" /* t2 */
1919
1920 /* MAD_F_MLA(hi, lo, X[0], MAD_F(0x04cfb0e2)); */
1921 /* MAD_F_MLA(hi, lo, X[2], MAD_F(0x0ffc19fd)); */
1922 /* MAD_F_MLA(hi, lo, X[3], -MAD_F(0x0d7e8807)); */
1923 /* MAD_F_MLA(hi, lo, X[5], MAD_F(0x03768962)); */
1924 /* MAD_F_MLA(hi, lo, X[6], -MAD_F(0x0bcbe352)); */
1925 /* MAD_F_MLA(hi, lo, X[8], -MAD_F(0x0e313245)); */
1926 /* MAD_F_MLA(hi, lo, X[9], MAD_F(0x07635284)); */
1927 /* MAD_F_MLA(hi, lo, X[11], -MAD_F(0x0acf37ad)); */
1928 /* MAD_F_MLA(hi, lo, X[12], MAD_F(0x0f9ee890)); */
1929 /* MAD_F_MLA(hi, lo, X[14], MAD_F(0x0898c779)); */
1930 /* MAD_F_MLA(hi, lo, X[15], MAD_F(0x00b2aa3e)); */
1931 /* MAD_F_MLA(hi, lo, X[17], MAD_F(0x0f426cb5)); */
1932 /* x[12] = -(x[5] = MAD_F_MLZ(hi, lo)); */
1933 /* MAD_F_ML0(hi, lo, X[0], MAD_F(0x0acf37ad)); */
1934 /* MAD_F_MLA(hi, lo, X[2], -MAD_F(0x0898c779)); */
1935 /* MAD_F_MLA(hi, lo, X[3], MAD_F(0x0e313245)); */
1936 /* MAD_F_MLA(hi, lo, X[5], -MAD_F(0x0f426cb5)); */
1937 /* MAD_F_MLA(hi, lo, X[6], -MAD_F(0x03768962)); */
1938 /* MAD_F_MLA(hi, lo, X[8], MAD_F(0x00b2aa3e)); */
1939 /* MAD_F_MLA(hi, lo, X[9], -MAD_F(0x0ffc19fd)); */
1940 /* MAD_F_MLA(hi, lo, X[11], MAD_F(0x0f9ee890)); */
1941 /* MAD_F_MLA(hi, lo, X[12], -MAD_F(0x04cfb0e2)); */
1942 /* MAD_F_MLA(hi, lo, X[14], MAD_F(0x07635284)); */
1943 /* MAD_F_MLA(hi, lo, X[15], MAD_F(0x0d7e8807)); */
1944 /* MAD_F_MLA(hi, lo, X[17], -MAD_F(0x0bcbe352)); */
1945 /* x[17] = -(x[0] = MAD_F_MLZ(hi, lo) + t2); */
1946 /* MAD_F_ML0(hi, lo, X[0], -MAD_F(0x0f9ee890)); */
1947 /* MAD_F_MLA(hi, lo, X[2], -MAD_F(0x07635284)); */
1948 /* MAD_F_MLA(hi, lo, X[3], -MAD_F(0x00b2aa3e)); */
1949 /* MAD_F_MLA(hi, lo, X[5], MAD_F(0x0bcbe352)); */
1950 /* MAD_F_MLA(hi, lo, X[6], MAD_F(0x0f426cb5)); */
1951 /* MAD_F_MLA(hi, lo, X[8], MAD_F(0x0d7e8807)); */
1952 /* MAD_F_MLA(hi, lo, X[9], MAD_F(0x0898c779)); */
1953 /* MAD_F_MLA(hi, lo, X[11], -MAD_F(0x04cfb0e2)); */
1954 /* MAD_F_MLA(hi, lo, X[12], -MAD_F(0x0acf37ad)); */
1955 /* MAD_F_MLA(hi, lo, X[14], -MAD_F(0x0ffc19fd)); */
1956 /* MAD_F_MLA(hi, lo, X[15], -MAD_F(0x0e313245)); */
1957 /* MAD_F_MLA(hi, lo, X[17], -MAD_F(0x03768962)); */
1958 /* x[24] = x[29] = MAD_F_MLZ(hi, lo) + t2; */
1959 "move.l #0x0acf37ad, %%d1\n"
1960 "move.l #0x0f9ee890, %%d2\n"
1961 "move.l #0x04cfb0e2, %%d3\n"
1962 "mac.l %%d3, %%d0, %%acc0\n"
1963 "mac.l %%d1, %%d0, %%acc1\n"
1964 "msac.l %%d2, %%d0, (11*4, %[X]), %%d0, %%acc2\n"
1965 "msac.l %%d1, %%d0, %%acc0\n"
1966 "mac.l %%d2, %%d0, %%acc1\n"
1967 "msac.l %%d3, %%d0, (12*4, %[X]), %%d0, %%acc2\n"
1968 "mac.l %%d2, %%d0, %%acc0\n"
1969 "msac.l %%d3, %%d0, %%acc1\n"
1970 "msac.l %%d1, %%d0, ( 2*4, %[X]), %%d0, %%acc2\n"
1971 "move.l #0x0ffc19fd, %%d1\n"
1972 "move.l #0x0898c779, %%d2\n"
1973 "move.l #0x07635284, %%d3\n"
1974 "mac.l %%d1, %%d0, %%acc0\n"
1975 "msac.l %%d2, %%d0, %%acc1\n"
1976 "msac.l %%d3, %%d0, ( 9*4, %[X]), %%d0, %%acc2\n"
1977 "mac.l %%d3, %%d0, %%acc0\n"
1978 "msac.l %%d1, %%d0, %%acc1\n"
1979 "mac.l %%d2, %%d0, (14*4, %[X]), %%d0, %%acc2\n"
1980 "mac.l %%d2, %%d0, %%acc0\n"
1981 "mac.l %%d3, %%d0, %%acc1\n"
1982 "msac.l %%d1, %%d0, ( 3*4, %[X]), %%d0, %%acc2\n"
1983 "move.l #0x0e313245, %%d1\n"
1984 "move.l #0x00b2aa3e, %%d2\n"
1985 "move.l #0x0d7e8807, %%d3\n"
1986 "msac.l %%d3, %%d0, %%acc0\n"
1987 "mac.l %%d1, %%d0, %%acc1\n"
1988 "msac.l %%d2, %%d0, ( 8*4, %[X]), %%d0, %%acc2\n"
1989 "msac.l %%d1, %%d0, %%acc0\n"
1990 "mac.l %%d2, %%d0, %%acc1\n"
1991 "mac.l %%d3, %%d0, (15*4, %[X]), %%d0, %%acc2\n"
1992 "mac.l %%d2, %%d0, %%acc0\n"
1993 "mac.l %%d3, %%d0, %%acc1\n"
1994 "msac.l %%d1, %%d0, ( 5*4, %[X]), %%d0, %%acc2\n"
1995 "move.l #0x03768962, %%d1\n"
1996 "move.l #0x0f426cb5, %%d2\n"
1997 "move.l #0x0bcbe352, %%d3\n"
1998 "mac.l %%d1, %%d0, %%acc0\n"
1999 "msac.l %%d2, %%d0, %%acc1\n"
2000 "mac.l %%d3, %%d0, ( 6*4, %[X]), %%d0, %%acc2\n"
2001 "msac.l %%d3, %%d0, %%acc0\n"
2002 "msac.l %%d1, %%d0, %%acc1\n"
2003 "mac.l %%d2, %%d0, (17*4, %[X]), %%d0, %%acc2\n"
2004 "mac.l %%d2, %%d0, %%acc0\n"
2005 "msac.l %%d3, %%d0, %%acc1\n"
2006 "msac.l %%d1, %%d0, ( %[X]), %%d0, %%acc2\n"
2007
2008 "movclr.l %%acc0, %%d6\n"
2009 "asl.l #3, %%d6\n"
2010 "move.l %%d6, ( 5*4, %[x])\n"
2011 "neg.l %%d6\n"
2012 "move.l %%d6, (12*4, %[x])\n"
2013
2014 "movclr.l %%acc1, %%d6\n"
2015 "asl.l #3, %%d6\n"
2016 "add.l %%d7, %%d6\n"
2017 "move.l %%d6, ( %[x])\n"
2018 "neg.l %%d6\n"
2019 "move.l %%d6, (17*4, %[x])\n"
2020
2021 "movclr.l %%acc2, %%d6\n"
2022 "asl.l #3, %%d6\n"
2023 "add.l %%d7, %%d6\n"
2024 "move.l %%d6, (24*4, %[x])\n"
2025 "move.l %%d6, (29*4, %[x])\n"
2026
2027 /* MAD_F_ML0(hi, lo, X[0], MAD_F(0x00b2aa3e)); */
2028 /* MAD_F_MLA(hi, lo, X[2], MAD_F(0x03768962)); */
2029 /* MAD_F_MLA(hi, lo, X[3], -MAD_F(0x04cfb0e2)); */
2030 /* MAD_F_MLA(hi, lo, X[5], -MAD_F(0x07635284)); */
2031 /* MAD_F_MLA(hi, lo, X[6], MAD_F(0x0898c779)); */
2032 /* MAD_F_MLA(hi, lo, X[8], MAD_F(0x0acf37ad)); */
2033 /* MAD_F_MLA(hi, lo, X[9], -MAD_F(0x0bcbe352)); */
2034 /* MAD_F_MLA(hi, lo, X[11], -MAD_F(0x0d7e8807)); */
2035 /* MAD_F_MLA(hi, lo, X[12], MAD_F(0x0e313245)); */
2036 /* MAD_F_MLA(hi, lo, X[14], MAD_F(0x0f426cb5)); */
2037 /* MAD_F_MLA(hi, lo, X[15], -MAD_F(0x0f9ee890)); */
2038 /* MAD_F_MLA(hi, lo, X[17], -MAD_F(0x0ffc19fd)); */
2039 /* x[9] = -(x[8] = MAD_F_MLZ(hi, lo) + t3); */
2040
2041 /* MAD_F_ML0(hi, lo, X[0], -MAD_F(0x0e313245)); */
2042 /* MAD_F_MLA(hi, lo, X[2], MAD_F(0x0bcbe352)); */
2043 /* MAD_F_MLA(hi, lo, X[3], MAD_F(0x0f9ee890)); */
2044 /* MAD_F_MLA(hi, lo, X[5], -MAD_F(0x0898c779)); */
2045 /* MAD_F_MLA(hi, lo, X[6], -MAD_F(0x0ffc19fd)); */
2046 /* MAD_F_MLA(hi, lo, X[8], MAD_F(0x04cfb0e2)); */
2047 /* MAD_F_MLA(hi, lo, X[9], MAD_F(0x0f426cb5)); */
2048 /* MAD_F_MLA(hi, lo, X[11], -MAD_F(0x00b2aa3e)); */
2049 /* MAD_F_MLA(hi, lo, X[12], -MAD_F(0x0d7e8807)); */
2050 /* MAD_F_MLA(hi, lo, X[14], -MAD_F(0x03768962)); */
2051 /* MAD_F_MLA(hi, lo, X[15], MAD_F(0x0acf37ad)); */
2052 /* MAD_F_MLA(hi, lo, X[17], MAD_F(0x07635284)); */
2053 /* x[21] = x[32] = MAD_F_MLZ(hi, lo) + t3; */
2054
2055 /* MAD_F_ML0(hi, lo, X[0], -MAD_F(0x0d7e8807)); */
2056 /* MAD_F_MLA(hi, lo, X[2], MAD_F(0x0f426cb5)); */
2057 /* MAD_F_MLA(hi, lo, X[3], MAD_F(0x0acf37ad)); */
2058 /* MAD_F_MLA(hi, lo, X[5], -MAD_F(0x0ffc19fd)); */
2059 /* MAD_F_MLA(hi, lo, X[6], -MAD_F(0x07635284)); */
2060 /* MAD_F_MLA(hi, lo, X[8], MAD_F(0x0f9ee890)); */
2061 /* MAD_F_MLA(hi, lo, X[9], MAD_F(0x03768962)); */
2062 /* MAD_F_MLA(hi, lo, X[11], -MAD_F(0x0e313245)); */
2063 /* MAD_F_MLA(hi, lo, X[12], MAD_F(0x00b2aa3e)); */
2064 /* MAD_F_MLA(hi, lo, X[14], MAD_F(0x0bcbe352)); */
2065 /* MAD_F_MLA(hi, lo, X[15], -MAD_F(0x04cfb0e2)); */
2066 /* MAD_F_MLA(hi, lo, X[17], -MAD_F(0x0898c779)); */
2067 /* x[20] = x[33] = MAD_F_MLZ(hi, lo) - t3; */
2068 "move.l #0x0e313245, %%d1\n"
2069 "move.l #0x00b2aa3e, %%d2\n"
2070 "move.l #0x0d7e8807, %%d3\n"
2071 "mac.l %%d2, %%d0, %%acc0\n"
2072 "msac.l %%d1, %%d0, %%acc1\n"
2073 "msac.l %%d3, %%d0, (11*4, %[X]), %%d0, %%acc2\n"
2074 "msac.l %%d3, %%d0, %%acc0\n"
2075 "msac.l %%d2, %%d0, %%acc1\n"
2076 "msac.l %%d1, %%d0, (12*4, %[X]), %%d0, %%acc2\n"
2077 "mac.l %%d1, %%d0, %%acc0\n"
2078 "msac.l %%d3, %%d0, %%acc1\n"
2079 "mac.l %%d2, %%d0, ( 2*4, %[X]), %%d0, %%acc2\n"
2080 "move.l #0x03768962, %%d1\n"
2081 "move.l #0x0f426cb5, %%d2\n"
2082 "move.l #0x0bcbe352, %%d3\n"
2083 "mac.l %%d1, %%d0, %%acc0\n"
2084 "mac.l %%d3, %%d0, %%acc1\n"
2085 "mac.l %%d2, %%d0, ( 9*4, %[X]), %%d0, %%acc2\n"
2086 "msac.l %%d3, %%d0, %%acc0\n"
2087 "mac.l %%d2, %%d0, %%acc1\n"
2088 "mac.l %%d1, %%d0, (14*4, %[X]), %%d0, %%acc2\n"
2089 "mac.l %%d2, %%d0, %%acc0\n"
2090 "msac.l %%d1, %%d0, %%acc1\n"
2091 "mac.l %%d3, %%d0, ( 3*4, %[X]), %%d0, %%acc2\n"
2092 "move.l #0x0acf37ad, %%d1\n"
2093 "move.l #0x0f9ee890, %%d2\n"
2094 "move.l #0x04cfb0e2, %%d3\n"
2095 "msac.l %%d3, %%d0, %%acc0\n"
2096 "mac.l %%d2, %%d0, %%acc1\n"
2097 "mac.l %%d1, %%d0, ( 8*4, %[X]), %%d0, %%acc2\n"
2098 "mac.l %%d1, %%d0, %%acc0\n"
2099 "mac.l %%d3, %%d0, %%acc1\n"
2100 "mac.l %%d2, %%d0, (15*4, %[X]), %%d0, %%acc2\n"
2101 "msac.l %%d2, %%d0, %%acc0\n"
2102 "mac.l %%d1, %%d0, %%acc1\n"
2103 "msac.l %%d3, %%d0, ( 5*4, %[X]), %%d0, %%acc2\n"
2104 "move.l #0x0ffc19fd, %%d1\n"
2105 "move.l #0x0898c779, %%d2\n"
2106 "move.l #0x07635284, %%d3\n"
2107 "msac.l %%d3, %%d0, %%acc0\n"
2108 "msac.l %%d2, %%d0, %%acc1\n"
2109 "msac.l %%d1, %%d0, ( 6*4, %[X]), %%d0, %%acc2\n"
2110 "mac.l %%d2, %%d0, %%acc0\n"
2111 "msac.l %%d1, %%d0, %%acc1\n"
2112 "msac.l %%d3, %%d0, (17*4, %[X]), %%d0, %%acc2\n"
2113 "msac.l %%d1, %%d0, %%acc0\n"
2114 "mac.l %%d3, %%d0, %%acc1\n"
2115 "msac.l %%d2, %%d0, (12*4, %[t]), %%d0, %%acc2\n"
2116
2117 "movclr.l %%acc0, %%d6\n"
2118 "asl.l #3, %%d6\n"
2119 "add.l %%d5, %%d6\n"
2120 "move.l %%d6, (8*4, %[x])\n"
2121 "neg.l %%d6\n"
2122 "move.l %%d6, (9*4, %[x])\n"
2123
2124 "movclr.l %%acc1, %%d6\n"
2125 "asl.l #3, %%d6\n"
2126 "add.l %%d5, %%d6\n"
2127 "move.l %%d6, (21*4, %[x])\n"
2128 "move.l %%d6, (32*4, %[x])\n"
2129
2130 "movclr.l %%acc2, %%d6\n"
2131 "asl.l #3, %%d6\n"
2132 "sub.l %%d5, %%d6\n"
2133 "move.l %%d6, (20*4, %[x])\n"
2134 "move.l %%d6, (33*4, %[x])\n"
2135
2136 /* MAD_F_ML0(hi, lo, t12, -MAD_F(0x0ec835e8)); */
2137 /* MAD_F_MLA(hi, lo, t13, MAD_F(0x061f78aa)); */
2138 /* x[22] = x[31] = MAD_F_MLZ(hi, lo) + t0; */
2139 "move.l #0x0ec835e8, %%d1\n"
2140 "move.l #0x061f78aa, %%d2\n"
2141 "msac.l %%d1, %%d0, (13*4, %[t]), %%d3, %%acc0\n"
2142 "mac.l %%d2, %%d3, ( 1*4, %[x]), %%d4, %%acc0\n"
2143 "movclr.l %%acc0, %%d6\n"
2144 "asl.l #3, %%d6\n"
2145 "add.l (0*4, %[t]), %%d6\n"
2146 "move.l %%d6, (22*4, %[x])\n"
2147 "move.l %%d6, (31*4, %[x])\n"
2148
2149 /* MAD_F_ML0(hi, lo, t12, MAD_F(0x061f78aa)); */
2150 /* MAD_F_MLA(hi, lo, t13, MAD_F(0x0ec835e8)); */
2151 /* x[13] = -(x[4] = MAD_F_MLZ(hi, lo) + t4); */
2152 /* x[16] = -(x[1] = x[1] + t4); */
2153 /* x[25] = x[28] = x[25] + t4; */
2154 "mac.l %%d2, %%d0, (4*4, %[t]), %%d2, %%acc0\n"
2155 "mac.l %%d1, %%d3, ( %[X]), %%d0, %%acc0\n"
2156 "movclr.l %%acc0, %%d6\n"
2157 "asl.l #3, %%d6\n"
2158 "add.l %%d2, %%d6\n"
2159 "move.l %%d6, ( 4*4, %[x])\n"
2160 "neg.l %%d6\n"
2161 "move.l %%d6, (13*4, %[x])\n"
2162
2163 "add.l %%d2, %%d4\n"
2164 "move.l %%d4, ( 1*4, %[x])\n"
2165 "neg.l %%d4\n"
2166 "move.l %%d4, (16*4, %[x])\n"
2167
2168 "move.l (25*4, %[x]), %%d4\n"
2169 "add.l %%d2, %%d4\n"
2170 "move.l %%d4, (25*4, %[x])\n"
2171 "move.l %%d4, (28*4, %[x])\n"
2172
2173 /* MAD_F_ML0(hi, lo, X[0], MAD_F(0x0898c779)); */
2174 /* MAD_F_MLA(hi, lo, X[2], MAD_F(0x04cfb0e2)); */
2175 /* MAD_F_MLA(hi, lo, X[3], MAD_F(0x0bcbe352)); */
2176 /* MAD_F_MLA(hi, lo, X[5], MAD_F(0x00b2aa3e)); */
2177 /* MAD_F_MLA(hi, lo, X[6], MAD_F(0x0e313245)); */
2178 /* MAD_F_MLA(hi, lo, X[8], -MAD_F(0x03768962)); */
2179 /* MAD_F_MLA(hi, lo, X[9], MAD_F(0x0f9ee890)); */
2180 /* MAD_F_MLA(hi, lo, X[11], -MAD_F(0x07635284)); */
2181 /* MAD_F_MLA(hi, lo, X[12], MAD_F(0x0ffc19fd)); */
2182 /* MAD_F_MLA(hi, lo, X[14], -MAD_F(0x0acf37ad)); */
2183 /* MAD_F_MLA(hi, lo, X[15], MAD_F(0x0f426cb5)); */
2184 /* MAD_F_MLA(hi, lo, X[17], -MAD_F(0x0d7e8807)); */
2185 /* x[15] = -(x[2] = MAD_F_MLZ(hi, lo) + t5); */
2186 /* MAD_F_ML0(hi, lo, X[0], MAD_F(0x07635284)); */
2187 /* MAD_F_MLA(hi, lo, X[2], MAD_F(0x0acf37ad)); */
2188 /* MAD_F_MLA(hi, lo, X[3], MAD_F(0x03768962)); */
2189 /* MAD_F_MLA(hi, lo, X[5], MAD_F(0x0d7e8807)); */
2190 /* MAD_F_MLA(hi, lo, X[6], -MAD_F(0x00b2aa3e)); */
2191 /* MAD_F_MLA(hi, lo, X[8], MAD_F(0x0f426cb5)); */
2192 /* MAD_F_MLA(hi, lo, X[9], -MAD_F(0x04cfb0e2)); */
2193 /* MAD_F_MLA(hi, lo, X[11], MAD_F(0x0ffc19fd)); */
2194 /* MAD_F_MLA(hi, lo, X[12], -MAD_F(0x0898c779)); */
2195 /* MAD_F_MLA(hi, lo, X[14], MAD_F(0x0f9ee890)); */
2196 /* MAD_F_MLA(hi, lo, X[15], -MAD_F(0x0bcbe352)); */
2197 /* MAD_F_MLA(hi, lo, X[17], MAD_F(0x0e313245)); */
2198 /* x[14] = -(x[3] = MAD_F_MLZ(hi, lo) + t5); */
2199 /* MAD_F_ML0(hi, lo, X[0], -MAD_F(0x0ffc19fd)); */
2200 /* MAD_F_MLA(hi, lo, X[2], -MAD_F(0x0f9ee890)); */
2201 /* MAD_F_MLA(hi, lo, X[3], -MAD_F(0x0f426cb5)); */
2202 /* MAD_F_MLA(hi, lo, X[5], -MAD_F(0x0e313245)); */
2203 /* MAD_F_MLA(hi, lo, X[6], -MAD_F(0x0d7e8807)); */
2204 /* MAD_F_MLA(hi, lo, X[8], -MAD_F(0x0bcbe352)); */
2205 /* MAD_F_MLA(hi, lo, X[9], -MAD_F(0x0acf37ad)); */
2206 /* MAD_F_MLA(hi, lo, X[11], -MAD_F(0x0898c779)); */
2207 /* MAD_F_MLA(hi, lo, X[12], -MAD_F(0x07635284)); */
2208 /* MAD_F_MLA(hi, lo, X[14], -MAD_F(0x04cfb0e2)); */
2209 /* MAD_F_MLA(hi, lo, X[15], -MAD_F(0x03768962)); */
2210 /* MAD_F_MLA(hi, lo, X[17], -MAD_F(0x00b2aa3e)); */
2211 /* x[26] = x[27] = MAD_F_MLZ(hi, lo) + t5; */
2212 "move.l #0x0ffc19fd, %%d1\n"
2213 "move.l #0x0898c779, %%d2\n"
2214 "move.l #0x07635284, %%d3\n"
2215 "mac.l %%d2, %%d0, %%acc0\n"
2216 "mac.l %%d3, %%d0, %%acc1\n"
2217 "msac.l %%d1, %%d0, (11*4, %[X]), %%d0, %%acc2\n"
2218 "msac.l %%d3, %%d0, %%acc0\n"
2219 "mac.l %%d1, %%d0, %%acc1\n"
2220 "msac.l %%d2, %%d0, (12*4, %[X]), %%d0, %%acc2\n"
2221 "mac.l %%d1, %%d0, %%acc0\n"
2222 "msac.l %%d2, %%d0, %%acc1\n"
2223 "msac.l %%d3, %%d0, ( 2*4, %[X]), %%d0, %%acc2\n"
2224 "move.l #0x0acf37ad, %%d1\n"
2225 "move.l #0x0f9ee890, %%d2\n"
2226 "move.l #0x04cfb0e2, %%d3\n"
2227 "mac.l %%d3, %%d0, %%acc0\n"
2228 "mac.l %%d1, %%d0, %%acc1\n"
2229 "msac.l %%d2, %%d0, ( 9*4, %[X]), %%d0, %%acc2\n"
2230 "mac.l %%d2, %%d0, %%acc0\n"
2231 "msac.l %%d3, %%d0, %%acc1\n"
2232 "msac.l %%d1, %%d0, (14*4, %[X]), %%d0, %%acc2\n"
2233 "msac.l %%d1, %%d0, %%acc0\n"
2234 "mac.l %%d2, %%d0, %%acc1\n"
2235 "msac.l %%d3, %%d0, ( 3*4, %[X]), %%d0, %%acc2\n"
2236 "move.l #0x03768962, %%d1\n"
2237 "move.l #0x0f426cb5, %%d2\n"
2238 "move.l #0x0bcbe352, %%d3\n"
2239 "mac.l %%d3, %%d0, %%acc0\n"
2240 "mac.l %%d1, %%d0, %%acc1\n"
2241 "msac.l %%d2, %%d0, ( 8*4, %[X]), %%d0, %%acc2\n"
2242 "msac.l %%d1, %%d0, %%acc0\n"
2243 "mac.l %%d2, %%d0, %%acc1\n"
2244 "msac.l %%d3, %%d0, (15*4, %[X]), %%d0, %%acc2\n"
2245 "mac.l %%d2, %%d0, %%acc0\n"
2246 "msac.l %%d3, %%d0, %%acc1\n"
2247 "msac.l %%d1, %%d0, ( 5*4, %[X]), %%d0, %%acc2\n"
2248 "move.l #0x0e313245, %%d1\n"
2249 "move.l #0x00b2aa3e, %%d2\n"
2250 "move.l #0x0d7e8807, %%d3\n"
2251 "mac.l %%d2, %%d0, %%acc0\n"
2252 "mac.l %%d3, %%d0, %%acc1\n"
2253 "msac.l %%d1, %%d0, ( 6*4, %[X]), %%d0, %%acc2\n"
2254 "mac.l %%d1, %%d0, %%acc0\n"
2255 "msac.l %%d2, %%d0, %%acc1\n"
2256 "msac.l %%d3, %%d0, (17*4, %[X]), %%d0, %%acc2\n"
2257 "msac.l %%d3, %%d0, %%acc0\n"
2258 "mac.l %%d1, %%d0, %%acc1\n"
2259 "msac.l %%d2, %%d0, ( 5*4, %[t]), %%d6, %%acc2\n"
2260 "movclr.l %%acc0, %%d7\n"
2261 "asl.l #3, %%d7\n"
2262 "add.l %%d6, %%d7\n"
2263 "move.l %%d7, (2*4, %[x])\n"
2264 "neg.l %%d7\n"
2265 "move.l %%d7, (15*4, %[x])\n"
2266
2267 "movclr.l %%acc1, %%d7\n"
2268 "asl.l #3, %%d7\n"
2269 "add.l %%d6, %%d7\n"
2270 "move.l %%d7, (3*4, %[x])\n"
2271 "neg.l %%d7\n"
2272 "move.l %%d7, (14*4, %[x])\n"
2273
2274 "movclr.l %%acc2, %%d7\n"
2275 "asl.l #3, %%d7\n"
2276 "add.l %%d6, %%d7\n"
2277 "move.l %%d7, (26*4, %[x])\n"
2278 "move.l %%d7, (27*4, %[x])\n"
2279
2280 : : [X] "a" (X), [x] "a" (x), [t] "a" (t)
2281 : "d0", "d1", "d2", "d3", "d4", "d5", "d6", "d7");
2282 /* pfew */
2283}
2284
2285# else /* if defined(CPU_COLDFIRE) */
2286
2287static inline
2288void imdct36(mad_fixed_t const X[18], mad_fixed_t x[36])
2289{
2290 mad_fixed_t t0, t1, t2, t3, t4, t5, t6, t7;
2291 mad_fixed_t t8, t9, t10, t11, t12, t13, t14, t15;
2292 register mad_fixed64hi_t hi;
2293 register mad_fixed64lo_t lo;
2294
2295 MAD_F_ML0(hi, lo, (t14 = X[1] - X[10]), -MAD_F(0x0ec835e8));
2296 MAD_F_MLA(hi, lo, (t15 = X[7] + X[16]), MAD_F(0x061f78aa));
2297 t4 = MAD_F_MLZ(hi, lo);
2298
2299 MAD_F_ML0(hi, lo, X[4], MAD_F(0x0ec835e8));
2300 MAD_F_MLA(hi, lo, X[13], MAD_F(0x061f78aa));
2301 t6 = MAD_F_MLZ(hi, lo);
2302
2303 MAD_F_MLA(hi, lo, t14, -MAD_F(0x061f78aa));
2304 MAD_F_MLA(hi, lo, t15, -MAD_F(0x0ec835e8));
2305 t0 = MAD_F_MLZ(hi, lo);
2306
2307 MAD_F_MLA(hi, lo, (t8 =X[0]-X[11]-X[12]), MAD_F(0x0216a2a2));
2308 MAD_F_MLA(hi, lo, (t9 =X[2]-X[ 9]-X[14]), MAD_F(0x09bd7ca0));
2309 MAD_F_MLA(hi, lo, (t10=X[3]-X[ 8]-X[15]), -MAD_F(0x0cb19346));
2310 MAD_F_MLA(hi, lo, (t11=X[5]-X[ 6]-X[17]), -MAD_F(0x0fdcf549));
2311 x[10] = -(x[7] = MAD_F_MLZ(hi, lo));
2312
2313 MAD_F_ML0(hi, lo, t8, -MAD_F(0x0cb19346));
2314 MAD_F_MLA(hi, lo, t9, MAD_F(0x0fdcf549));
2315 MAD_F_MLA(hi, lo, t10, MAD_F(0x0216a2a2));
2316 MAD_F_MLA(hi, lo, t11, -MAD_F(0x09bd7ca0));
2317 x[19] = x[34] = MAD_F_MLZ(hi, lo) - t0;
2318
2319 MAD_F_ML0(hi, lo, t8, MAD_F(0x09bd7ca0));
2320 MAD_F_MLA(hi, lo, t9, -MAD_F(0x0216a2a2));
2321 MAD_F_MLA(hi, lo, t10, MAD_F(0x0fdcf549));
2322 MAD_F_MLA(hi, lo, t11, -MAD_F(0x0cb19346));
2323 x[ 1] = MAD_F_MLZ(hi, lo);
2324
2325 MAD_F_ML0(hi, lo, t8, -MAD_F(0x0fdcf549));
2326 MAD_F_MLA(hi, lo, t9, -MAD_F(0x0cb19346));
2327 MAD_F_MLA(hi, lo, t10, -MAD_F(0x09bd7ca0));
2328 MAD_F_MLA(hi, lo, t11, -MAD_F(0x0216a2a2));
2329 x[25] = MAD_F_MLZ(hi, lo);
2330
2331 t12 = t8 - t10;
2332 t13 = t9 + t11;
2333
2334 MAD_F_ML0(hi, lo, X[1], -MAD_F(0x09bd7ca0));
2335 MAD_F_MLA(hi, lo, X[7], MAD_F(0x0216a2a2));
2336 MAD_F_MLA(hi, lo, X[10], -MAD_F(0x0fdcf549));
2337 MAD_F_MLA(hi, lo, X[16], MAD_F(0x0cb19346));
2338 t1 = MAD_F_MLZ(hi, lo) + t6;
2339
2340 MAD_F_ML0(hi, lo, X[1], -MAD_F(0x0216a2a2));
2341 MAD_F_MLA(hi, lo, X[7], -MAD_F(0x09bd7ca0));
2342 MAD_F_MLA(hi, lo, X[10], MAD_F(0x0cb19346));
2343 MAD_F_MLA(hi, lo, X[16], MAD_F(0x0fdcf549));
2344 t3 = MAD_F_MLZ(hi, lo);
2345
2346 MAD_F_ML0(hi, lo, X[1], -MAD_F(0x0fdcf549));
2347 MAD_F_MLA(hi, lo, X[7], -MAD_F(0x0cb19346));
2348 MAD_F_MLA(hi, lo, X[10], -MAD_F(0x09bd7ca0));
2349 MAD_F_MLA(hi, lo, X[16], -MAD_F(0x0216a2a2));
2350 t5 = MAD_F_MLZ(hi, lo) - t6;
2351
2352 MAD_F_ML0(hi, lo, X[0], MAD_F(0x03768962));
2353 MAD_F_MLA(hi, lo, X[2], MAD_F(0x0e313245));
2354 MAD_F_MLA(hi, lo, X[3], -MAD_F(0x0ffc19fd));
2355 MAD_F_MLA(hi, lo, X[5], -MAD_F(0x0acf37ad));
2356 MAD_F_MLA(hi, lo, X[6], MAD_F(0x04cfb0e2));
2357 MAD_F_MLA(hi, lo, X[8], -MAD_F(0x0898c779));
2358 MAD_F_MLA(hi, lo, X[9], MAD_F(0x0d7e8807));
2359 MAD_F_MLA(hi, lo, X[11], MAD_F(0x0f426cb5));
2360 MAD_F_MLA(hi, lo, X[12], -MAD_F(0x0bcbe352));
2361 MAD_F_MLA(hi, lo, X[14], MAD_F(0x00b2aa3e));
2362 MAD_F_MLA(hi, lo, X[15], -MAD_F(0x07635284));
2363 MAD_F_MLA(hi, lo, X[17], -MAD_F(0x0f9ee890));
2364 x[11] = -(x[6] = MAD_F_MLZ(hi, lo) + t1);
2365
2366 MAD_F_ML0(hi, lo, X[0], -MAD_F(0x0f426cb5));
2367 MAD_F_MLA(hi, lo, X[2], -MAD_F(0x00b2aa3e));
2368 MAD_F_MLA(hi, lo, X[3], MAD_F(0x0898c779));
2369 MAD_F_MLA(hi, lo, X[5], MAD_F(0x0f9ee890));
2370 MAD_F_MLA(hi, lo, X[6], MAD_F(0x0acf37ad));
2371 MAD_F_MLA(hi, lo, X[8], -MAD_F(0x07635284));
2372 MAD_F_MLA(hi, lo, X[9], -MAD_F(0x0e313245));
2373 MAD_F_MLA(hi, lo, X[11], -MAD_F(0x0bcbe352));
2374 MAD_F_MLA(hi, lo, X[12], -MAD_F(0x03768962));
2375 MAD_F_MLA(hi, lo, X[14], MAD_F(0x0d7e8807));
2376 MAD_F_MLA(hi, lo, X[15], MAD_F(0x0ffc19fd));
2377 MAD_F_MLA(hi, lo, X[17], MAD_F(0x04cfb0e2));
2378 x[23] = x[30] = MAD_F_MLZ(hi, lo) + t1;
2379
2380 MAD_F_ML0(hi, lo, X[0], -MAD_F(0x0bcbe352));
2381 MAD_F_MLA(hi, lo, X[2], MAD_F(0x0d7e8807));
2382 MAD_F_MLA(hi, lo, X[3], -MAD_F(0x07635284));
2383 MAD_F_MLA(hi, lo, X[5], MAD_F(0x04cfb0e2));
2384 MAD_F_MLA(hi, lo, X[6], MAD_F(0x0f9ee890));
2385 MAD_F_MLA(hi, lo, X[8], -MAD_F(0x0ffc19fd));
2386 MAD_F_MLA(hi, lo, X[9], -MAD_F(0x00b2aa3e));
2387 MAD_F_MLA(hi, lo, X[11], MAD_F(0x03768962));
2388 MAD_F_MLA(hi, lo, X[12], -MAD_F(0x0f426cb5));
2389 MAD_F_MLA(hi, lo, X[14], MAD_F(0x0e313245));
2390 MAD_F_MLA(hi, lo, X[15], MAD_F(0x0898c779));
2391 MAD_F_MLA(hi, lo, X[17], -MAD_F(0x0acf37ad));
2392 x[18] = x[35] = MAD_F_MLZ(hi, lo) - t1;
2393
2394 MAD_F_ML0(hi, lo, X[4], MAD_F(0x061f78aa));
2395 MAD_F_MLA(hi, lo, X[13], -MAD_F(0x0ec835e8));
2396 t3+= (t7 = MAD_F_MLZ(hi, lo));
2397 t4-= t7;
2398
2399 MAD_F_MLA(hi, lo, X[1], -MAD_F(0x0cb19346));
2400 MAD_F_MLA(hi, lo, X[7], MAD_F(0x0fdcf549));
2401 MAD_F_MLA(hi, lo, X[10], MAD_F(0x0216a2a2));
2402 MAD_F_MLA(hi, lo, X[16], -MAD_F(0x09bd7ca0));
2403 t2 = MAD_F_MLZ(hi, lo);
2404
2405 MAD_F_MLA(hi, lo, X[0], MAD_F(0x04cfb0e2));
2406 MAD_F_MLA(hi, lo, X[2], MAD_F(0x0ffc19fd));
2407 MAD_F_MLA(hi, lo, X[3], -MAD_F(0x0d7e8807));
2408 MAD_F_MLA(hi, lo, X[5], MAD_F(0x03768962));
2409 MAD_F_MLA(hi, lo, X[6], -MAD_F(0x0bcbe352));
2410 MAD_F_MLA(hi, lo, X[8], -MAD_F(0x0e313245));
2411 MAD_F_MLA(hi, lo, X[9], MAD_F(0x07635284));
2412 MAD_F_MLA(hi, lo, X[11], -MAD_F(0x0acf37ad));
2413 MAD_F_MLA(hi, lo, X[12], MAD_F(0x0f9ee890));
2414 MAD_F_MLA(hi, lo, X[14], MAD_F(0x0898c779));
2415 MAD_F_MLA(hi, lo, X[15], MAD_F(0x00b2aa3e));
2416 MAD_F_MLA(hi, lo, X[17], MAD_F(0x0f426cb5));
2417 x[12] = -(x[5] = MAD_F_MLZ(hi, lo));
2418
2419 MAD_F_ML0(hi, lo, X[0], MAD_F(0x0acf37ad));
2420 MAD_F_MLA(hi, lo, X[2], -MAD_F(0x0898c779));
2421 MAD_F_MLA(hi, lo, X[3], MAD_F(0x0e313245));
2422 MAD_F_MLA(hi, lo, X[5], -MAD_F(0x0f426cb5));
2423 MAD_F_MLA(hi, lo, X[6], -MAD_F(0x03768962));
2424 MAD_F_MLA(hi, lo, X[8], MAD_F(0x00b2aa3e));
2425 MAD_F_MLA(hi, lo, X[9], -MAD_F(0x0ffc19fd));
2426 MAD_F_MLA(hi, lo, X[11], MAD_F(0x0f9ee890));
2427 MAD_F_MLA(hi, lo, X[12], -MAD_F(0x04cfb0e2));
2428 MAD_F_MLA(hi, lo, X[14], MAD_F(0x07635284));
2429 MAD_F_MLA(hi, lo, X[15], MAD_F(0x0d7e8807));
2430 MAD_F_MLA(hi, lo, X[17], -MAD_F(0x0bcbe352));
2431 x[17] = -(x[0] = MAD_F_MLZ(hi, lo) + t2);
2432
2433 MAD_F_ML0(hi, lo, X[0], -MAD_F(0x0f9ee890));
2434 MAD_F_MLA(hi, lo, X[2], -MAD_F(0x07635284));
2435 MAD_F_MLA(hi, lo, X[3], -MAD_F(0x00b2aa3e));
2436 MAD_F_MLA(hi, lo, X[5], MAD_F(0x0bcbe352));
2437 MAD_F_MLA(hi, lo, X[6], MAD_F(0x0f426cb5));
2438 MAD_F_MLA(hi, lo, X[8], MAD_F(0x0d7e8807));
2439 MAD_F_MLA(hi, lo, X[9], MAD_F(0x0898c779));
2440 MAD_F_MLA(hi, lo, X[11], -MAD_F(0x04cfb0e2));
2441 MAD_F_MLA(hi, lo, X[12], -MAD_F(0x0acf37ad));
2442 MAD_F_MLA(hi, lo, X[14], -MAD_F(0x0ffc19fd));
2443 MAD_F_MLA(hi, lo, X[15], -MAD_F(0x0e313245));
2444 MAD_F_MLA(hi, lo, X[17], -MAD_F(0x03768962));
2445 x[24] = x[29] = MAD_F_MLZ(hi, lo) + t2;
2446
2447 MAD_F_ML0(hi, lo, X[0], MAD_F(0x00b2aa3e));
2448 MAD_F_MLA(hi, lo, X[2], MAD_F(0x03768962));
2449 MAD_F_MLA(hi, lo, X[3], -MAD_F(0x04cfb0e2));
2450 MAD_F_MLA(hi, lo, X[5], -MAD_F(0x07635284));
2451 MAD_F_MLA(hi, lo, X[6], MAD_F(0x0898c779));
2452 MAD_F_MLA(hi, lo, X[8], MAD_F(0x0acf37ad));
2453 MAD_F_MLA(hi, lo, X[9], -MAD_F(0x0bcbe352));
2454 MAD_F_MLA(hi, lo, X[11], -MAD_F(0x0d7e8807));
2455 MAD_F_MLA(hi, lo, X[12], MAD_F(0x0e313245));
2456 MAD_F_MLA(hi, lo, X[14], MAD_F(0x0f426cb5));
2457 MAD_F_MLA(hi, lo, X[15], -MAD_F(0x0f9ee890));
2458 MAD_F_MLA(hi, lo, X[17], -MAD_F(0x0ffc19fd));
2459 x[9] = -(x[8] = MAD_F_MLZ(hi, lo) + t3);
2460
2461 MAD_F_ML0(hi, lo, X[0], -MAD_F(0x0e313245));
2462 MAD_F_MLA(hi, lo, X[2], MAD_F(0x0bcbe352));
2463 MAD_F_MLA(hi, lo, X[3], MAD_F(0x0f9ee890));
2464 MAD_F_MLA(hi, lo, X[5], -MAD_F(0x0898c779));
2465 MAD_F_MLA(hi, lo, X[6], -MAD_F(0x0ffc19fd));
2466 MAD_F_MLA(hi, lo, X[8], MAD_F(0x04cfb0e2));
2467 MAD_F_MLA(hi, lo, X[9], MAD_F(0x0f426cb5));
2468 MAD_F_MLA(hi, lo, X[11], -MAD_F(0x00b2aa3e));
2469 MAD_F_MLA(hi, lo, X[12], -MAD_F(0x0d7e8807));
2470 MAD_F_MLA(hi, lo, X[14], -MAD_F(0x03768962));
2471 MAD_F_MLA(hi, lo, X[15], MAD_F(0x0acf37ad));
2472 MAD_F_MLA(hi, lo, X[17], MAD_F(0x07635284));
2473 x[21] = x[32] = MAD_F_MLZ(hi, lo) + t3;
2474
2475 MAD_F_ML0(hi, lo, X[0], -MAD_F(0x0d7e8807));
2476 MAD_F_MLA(hi, lo, X[2], MAD_F(0x0f426cb5));
2477 MAD_F_MLA(hi, lo, X[3], MAD_F(0x0acf37ad));
2478 MAD_F_MLA(hi, lo, X[5], -MAD_F(0x0ffc19fd));
2479 MAD_F_MLA(hi, lo, X[6], -MAD_F(0x07635284));
2480 MAD_F_MLA(hi, lo, X[8], MAD_F(0x0f9ee890));
2481 MAD_F_MLA(hi, lo, X[9], MAD_F(0x03768962));
2482 MAD_F_MLA(hi, lo, X[11], -MAD_F(0x0e313245));
2483 MAD_F_MLA(hi, lo, X[12], MAD_F(0x00b2aa3e));
2484 MAD_F_MLA(hi, lo, X[14], MAD_F(0x0bcbe352));
2485 MAD_F_MLA(hi, lo, X[15], -MAD_F(0x04cfb0e2));
2486 MAD_F_MLA(hi, lo, X[17], -MAD_F(0x0898c779));
2487 x[20] = x[33] = MAD_F_MLZ(hi, lo) - t3;
2488
2489 MAD_F_ML0(hi, lo, t12, -MAD_F(0x0ec835e8));
2490 MAD_F_MLA(hi, lo, t13, MAD_F(0x061f78aa));
2491 x[22] = x[31] = MAD_F_MLZ(hi, lo) + t0;
2492
2493 MAD_F_ML0(hi, lo, t12, MAD_F(0x061f78aa));
2494 MAD_F_MLA(hi, lo, t13, MAD_F(0x0ec835e8));
2495 x[13] = -(x[4] = MAD_F_MLZ(hi, lo) + t4);
2496 x[16] = -(x[1] = x[1] + t4);
2497 x[25] = x[28] = x[25] + t4;
2498
2499 MAD_F_ML0(hi, lo, X[0], MAD_F(0x0898c779));
2500 MAD_F_MLA(hi, lo, X[2], MAD_F(0x04cfb0e2));
2501 MAD_F_MLA(hi, lo, X[3], MAD_F(0x0bcbe352));
2502 MAD_F_MLA(hi, lo, X[5], MAD_F(0x00b2aa3e));
2503 MAD_F_MLA(hi, lo, X[6], MAD_F(0x0e313245));
2504 MAD_F_MLA(hi, lo, X[8], -MAD_F(0x03768962));
2505 MAD_F_MLA(hi, lo, X[9], MAD_F(0x0f9ee890));
2506 MAD_F_MLA(hi, lo, X[11], -MAD_F(0x07635284));
2507 MAD_F_MLA(hi, lo, X[12], MAD_F(0x0ffc19fd));
2508 MAD_F_MLA(hi, lo, X[14], -MAD_F(0x0acf37ad));
2509 MAD_F_MLA(hi, lo, X[15], MAD_F(0x0f426cb5));
2510 MAD_F_MLA(hi, lo, X[17], -MAD_F(0x0d7e8807));
2511 x[15] = -(x[2] = MAD_F_MLZ(hi, lo) + t5);
2512
2513 MAD_F_ML0(hi, lo, X[0], MAD_F(0x07635284));
2514 MAD_F_MLA(hi, lo, X[2], MAD_F(0x0acf37ad));
2515 MAD_F_MLA(hi, lo, X[3], MAD_F(0x03768962));
2516 MAD_F_MLA(hi, lo, X[5], MAD_F(0x0d7e8807));
2517 MAD_F_MLA(hi, lo, X[6], -MAD_F(0x00b2aa3e));
2518 MAD_F_MLA(hi, lo, X[8], MAD_F(0x0f426cb5));
2519 MAD_F_MLA(hi, lo, X[9], -MAD_F(0x04cfb0e2));
2520 MAD_F_MLA(hi, lo, X[11], MAD_F(0x0ffc19fd));
2521 MAD_F_MLA(hi, lo, X[12], -MAD_F(0x0898c779));
2522 MAD_F_MLA(hi, lo, X[14], MAD_F(0x0f9ee890));
2523 MAD_F_MLA(hi, lo, X[15], -MAD_F(0x0bcbe352));
2524 MAD_F_MLA(hi, lo, X[17], MAD_F(0x0e313245));
2525 x[14] = -(x[3] = MAD_F_MLZ(hi, lo) + t5);
2526
2527 MAD_F_ML0(hi, lo, X[0], -MAD_F(0x0ffc19fd));
2528 MAD_F_MLA(hi, lo, X[2], -MAD_F(0x0f9ee890));
2529 MAD_F_MLA(hi, lo, X[3], -MAD_F(0x0f426cb5));
2530 MAD_F_MLA(hi, lo, X[5], -MAD_F(0x0e313245));
2531 MAD_F_MLA(hi, lo, X[6], -MAD_F(0x0d7e8807));
2532 MAD_F_MLA(hi, lo, X[8], -MAD_F(0x0bcbe352));
2533 MAD_F_MLA(hi, lo, X[9], -MAD_F(0x0acf37ad));
2534 MAD_F_MLA(hi, lo, X[11], -MAD_F(0x0898c779));
2535 MAD_F_MLA(hi, lo, X[12], -MAD_F(0x07635284));
2536 MAD_F_MLA(hi, lo, X[14], -MAD_F(0x04cfb0e2));
2537 MAD_F_MLA(hi, lo, X[15], -MAD_F(0x03768962));
2538 MAD_F_MLA(hi, lo, X[17], -MAD_F(0x00b2aa3e));
2539 x[26] = x[27] = MAD_F_MLZ(hi, lo) + t5;
2540}
2541# endif /* CPU_COLDFIRE */
2542
2543/*
2544 * NAME: III_imdct_l()
2545 * DESCRIPTION: perform IMDCT and windowing for long blocks
2546 */
2547static
2548void III_imdct_l(mad_fixed_t const X[18], mad_fixed_t z[36],
2549 unsigned int block_type)
2550{
2551 unsigned int i;
2552
2553 /* IMDCT */
2554
2555 imdct36(X, z);
2556
2557 /* windowing */
2558
2559 switch (block_type) {
2560 case 0: /* normal window */
2561# if 1
2562 /* loop unrolled implementation */
2563 for (i = 0; i < 36; i += 4) {
2564 z[i + 0] = mad_f_mul(z[i + 0], window_l[i + 0]);
2565 z[i + 1] = mad_f_mul(z[i + 1], window_l[i + 1]);
2566 z[i + 2] = mad_f_mul(z[i + 2], window_l[i + 2]);
2567 z[i + 3] = mad_f_mul(z[i + 3], window_l[i + 3]);
2568 }
2569# else
2570 /* reference implementation */
2571 for (i = 0; i < 36; ++i) z[i] = mad_f_mul(z[i], window_l[i]);
2572# endif
2573 break;
2574
2575 case 1: /* start block */
2576 for (i = 0; i < 18; i += 3) {
2577 z[i + 0] = mad_f_mul(z[i + 0], window_l[i + 0]);
2578 z[i + 1] = mad_f_mul(z[i + 1], window_l[i + 1]);
2579 z[i + 2] = mad_f_mul(z[i + 2], window_l[i + 2]);
2580 }
2581 /* (i = 18; i < 24; ++i) z[i] unchanged */
2582 for (i = 24; i < 30; ++i) z[i] = mad_f_mul(z[i], window_s[i - 18]);
2583 for (i = 30; i < 36; ++i) z[i] = 0;
2584 break;
2585
2586 case 3: /* stop block */
2587 for (i = 0; i < 6; ++i) z[i] = 0;
2588 for (i = 6; i < 12; ++i) z[i] = mad_f_mul(z[i], window_s[i - 6]);
2589 /* (i = 12; i < 18; ++i) z[i] unchanged */
2590 for (i = 18; i < 36; i += 3) {
2591 z[i + 0] = mad_f_mul(z[i + 0], window_l[i + 0]);
2592 z[i + 1] = mad_f_mul(z[i + 1], window_l[i + 1]);
2593 z[i + 2] = mad_f_mul(z[i + 2], window_l[i + 2]);
2594 }
2595 break;
2596 }
2597}
2598# endif /* FPM_ARM */
2599
2600/*
2601 * NAME: III_imdct_s()
2602 * DESCRIPTION: perform IMDCT and windowing for short blocks
2603 */
2604
2605# if defined(CPU_COLDFIRE)
2606void III_imdct_s(mad_fixed_t const X[18], mad_fixed_t z[36]);
2607#else
2608
2609static
2610void III_imdct_s(mad_fixed_t const X[18], mad_fixed_t z[36])
2611{
2612 mad_fixed_t y[36], *yptr;
2613 mad_fixed_t const *wptr;
2614 int w, i;
2615 register mad_fixed64hi_t hi;
2616 register mad_fixed64lo_t lo;
2617
2618 /* IMDCT */
2619
2620 yptr = &y[0];
2621
2622 for (w = 0; w < 3; ++w) {
2623 register mad_fixed_t const (*s)[6];
2624
2625 s = imdct_s;
2626
2627 for (i = 0; i < 3; ++i) {
2628 MAD_F_ML0(hi, lo, X[0], (*s)[0]);
2629 MAD_F_MLA(hi, lo, X[1], (*s)[1]);
2630 MAD_F_MLA(hi, lo, X[2], (*s)[2]);
2631 MAD_F_MLA(hi, lo, X[3], (*s)[3]);
2632 MAD_F_MLA(hi, lo, X[4], (*s)[4]);
2633 MAD_F_MLA(hi, lo, X[5], (*s)[5]);
2634
2635 yptr[i + 0] = MAD_F_MLZ(hi, lo);
2636 yptr[5 - i] = -yptr[i + 0];
2637
2638 ++s;
2639
2640 MAD_F_ML0(hi, lo, X[0], (*s)[0]);
2641 MAD_F_MLA(hi, lo, X[1], (*s)[1]);
2642 MAD_F_MLA(hi, lo, X[2], (*s)[2]);
2643 MAD_F_MLA(hi, lo, X[3], (*s)[3]);
2644 MAD_F_MLA(hi, lo, X[4], (*s)[4]);
2645 MAD_F_MLA(hi, lo, X[5], (*s)[5]);
2646
2647 yptr[ i + 6] = MAD_F_MLZ(hi, lo);
2648 yptr[11 - i] = yptr[i + 6];
2649
2650 ++s;
2651 }
2652
2653 yptr += 12;
2654 X += 6;
2655 }
2656
2657 /* windowing, overlapping and concatenation */
2658
2659 yptr = &y[0];
2660 wptr = &window_s[0];
2661
2662 for (i = 0; i < 6; ++i) {
2663 z[i + 0] = 0;
2664 z[i + 6] = mad_f_mul(yptr[ 0 + 0], wptr[0]);
2665
2666 MAD_F_ML0(hi, lo, yptr[ 0 + 6], wptr[6]);
2667 MAD_F_MLA(hi, lo, yptr[12 + 0], wptr[0]);
2668
2669 z[i + 12] = MAD_F_MLZ(hi, lo);
2670
2671 MAD_F_ML0(hi, lo, yptr[12 + 6], wptr[6]);
2672 MAD_F_MLA(hi, lo, yptr[24 + 0], wptr[0]);
2673
2674 z[i + 18] = MAD_F_MLZ(hi, lo);
2675
2676 z[i + 24] = mad_f_mul(yptr[24 + 6], wptr[6]);
2677 z[i + 30] = 0;
2678
2679 ++yptr;
2680 ++wptr;
2681 }
2682}
2683
2684#endif
2685
2686#ifdef CPU_ARM
2687void III_overlap(mad_fixed_t const output[36], mad_fixed_t overlap[18],
2688 mad_fixed_t sample[18][32], unsigned int sb);
2689#else
2690
2691/*
2692 * NAME: III_overlap()
2693 * DESCRIPTION: perform overlap-add of windowed IMDCT outputs
2694 */
2695static
2696void III_overlap(mad_fixed_t const output[36], mad_fixed_t overlap[18],
2697 mad_fixed_t sample[18][32], unsigned int sb)
2698{
2699 unsigned int i;
2700 for (i = 0; i < 18; ++i) {
2701 sample[i][sb] = output[i + 0] + overlap[i];
2702 overlap[i] = output[i + 18];
2703 }
2704}
2705#endif
2706
2707/*
2708 * NAME: III_overlap_z()
2709 * DESCRIPTION: perform "overlap-add" of zero IMDCT outputs
2710 */
2711static inline
2712void III_overlap_z(mad_fixed_t overlap[18],
2713 mad_fixed_t sample[18][32], unsigned int sb)
2714{
2715 unsigned int i;
2716 for (i = 0; i < 18; ++i) {
2717 sample[i][sb] = overlap[i];
2718 overlap[i] = 0;
2719 }
2720}
2721
2722/*
2723 * NAME: III_freqinver()
2724 * DESCRIPTION: perform subband frequency inversion for odd sample lines
2725 */
2726static
2727void III_freqinver(mad_fixed_t sample[18][32], unsigned int sb)
2728{
2729 unsigned int i;
2730 for (i = 1; i < 18; i += 2)
2731 sample[i][sb] = -sample[i][sb];
2732}
2733
2734/*
2735 * NAME: III_decode()
2736 * DESCRIPTION: decode frame main_data
2737 */
2738static
2739enum mad_error III_decode(struct mad_bitptr *ptr, struct mad_frame *frame,
2740 struct sideinfo *si, unsigned int nch)
2741{
2742 struct mad_header *header = &frame->header;
2743 unsigned int sfreqi, ngr, gr;
2744
2745 {
2746 unsigned int sfreq;
2747
2748 sfreq = header->samplerate;
2749 if (header->flags & MAD_FLAG_MPEG_2_5_EXT)
2750 sfreq *= 2;
2751
2752 /* 48000 => 0, 44100 => 1, 32000 => 2,
2753 24000 => 3, 22050 => 4, 16000 => 5 */
2754 sfreqi = ((sfreq >> 7) & 0x000f) +
2755 ((sfreq >> 15) & 0x0001) - 8;
2756
2757 if (header->flags & MAD_FLAG_MPEG_2_5_EXT)
2758 sfreqi += 3;
2759 }
2760
2761 /* scalefactors, Huffman decoding, requantization */
2762
2763 ngr = (header->flags & MAD_FLAG_LSF_EXT) ? 1 : 2;
2764
2765 for (gr = 0; gr < ngr; ++gr) {
2766 struct granule *granule = &si->gr[gr];
2767 unsigned char const *sfbwidth[2];
2768 mad_fixed_t xr[2][576];
2769 unsigned int ch;
2770 enum mad_error error;
2771
2772 for (ch = 0; ch < nch; ++ch) {
2773 struct channel *channel = &granule->ch[ch];
2774 unsigned int part2_length;
2775
2776 sfbwidth[ch] = sfbwidth_table[sfreqi].l;
2777 if (channel->block_type == 2) {
2778 sfbwidth[ch] = (channel->flags & mixed_block_flag) ?
2779 sfbwidth_table[sfreqi].m : sfbwidth_table[sfreqi].s;
2780 }
2781
2782 if (header->flags & MAD_FLAG_LSF_EXT) {
2783 part2_length = III_scalefactors_lsf(ptr, channel,
2784 ch == 0 ? 0 : &si->gr[1].ch[1],
2785 header->mode_extension);
2786 }
2787 else {
2788 part2_length = III_scalefactors(ptr, channel, &si->gr[0].ch[ch],
2789 gr == 0 ? 0 : si->scfsi[ch]);
2790 }
2791
2792 error = III_huffdecode(ptr, xr[ch], channel, sfbwidth[ch], part2_length);
2793 if (error)
2794 return error;
2795 }
2796
2797 /* joint stereo processing */
2798
2799 if (header->mode == MAD_MODE_JOINT_STEREO && header->mode_extension) {
2800 error = III_stereo(xr, granule, header, sfbwidth[0]);
2801 if (error)
2802 return error;
2803 }
2804
2805 /* reordering, alias reduction, IMDCT, overlap-add, frequency inversion */
2806
2807 for (ch = 0; ch < nch; ++ch) {
2808 struct channel const *channel = &granule->ch[ch];
2809 mad_fixed_t (*sample)[32] = &((*frame->sbsample)[ch][18 * gr]);
2810 unsigned int sb, l, i, sblimit;
2811 mad_fixed_t output[36];
2812
2813 if (channel->block_type == 2) {
2814 III_reorder(xr[ch], channel, sfbwidth[ch]);
2815
2816# if !defined(OPT_STRICT)
2817 /*
2818 * According to ISO/IEC 11172-3, "Alias reduction is not applied for
2819 * granules with block_type == 2 (short block)." However, other
2820 * sources suggest alias reduction should indeed be performed on the
2821 * lower two subbands of mixed blocks. Most other implementations do
2822 * this, so by default we will too.
2823 */
2824 if (channel->flags & mixed_block_flag)
2825 III_aliasreduce(xr[ch], 36);
2826# endif
2827 }
2828 else
2829 III_aliasreduce(xr[ch], 576);
2830
2831 l = 0;
2832
2833 /* subbands 0-1 */
2834
2835 if (channel->block_type != 2 || (channel->flags & mixed_block_flag)) {
2836 unsigned int block_type;
2837
2838 block_type = channel->block_type;
2839 if (channel->flags & mixed_block_flag)
2840 block_type = 0;
2841
2842 /* long blocks */
2843 for (sb = 0; sb < 2; ++sb, l += 18) {
2844 III_imdct_l(&xr[ch][l], output, block_type);
2845 III_overlap(output, (*frame->overlap)[ch][sb], sample, sb);
2846 }
2847 }
2848 else {
2849 /* short blocks */
2850 for (sb = 0; sb < 2; ++sb, l += 18) {
2851 III_imdct_s(&xr[ch][l], output);
2852 III_overlap(output, (*frame->overlap)[ch][sb], sample, sb);
2853 }
2854 }
2855
2856 III_freqinver(sample, 1);
2857
2858 /* (nonzero) subbands 2-31 */
2859
2860/*
2861 i = 576;
2862 while (i > 36 && xr[ch][i - 1] == 0)
2863 --i;
2864*/
2865
2866 {
2867 /* saves ~600k cycles */
2868 mad_fixed_t *p = &xr[ch][576];
2869 mad_fixed_t tmp = xr[ch][35];
2870 xr[ch][35] = 1;
2871 while (!*--p);
2872 xr[ch][35] = tmp;
2873 i = p - &xr[ch][0] + 1;
2874 }
2875 sblimit = 32 - (576 - i) / 18;
2876
2877 if (channel->block_type != 2) {
2878 /* long blocks */
2879 for (sb = 2; sb < sblimit; ++sb, l += 18) {
2880 III_imdct_l(&xr[ch][l], output, channel->block_type);
2881 III_overlap(output, (*frame->overlap)[ch][sb], sample, sb);
2882
2883 if (sb & 1)
2884 III_freqinver(sample, sb);
2885 }
2886 }
2887 else {
2888 /* short blocks */
2889 for (sb = 2; sb < sblimit; ++sb, l += 18) {
2890 III_imdct_s(&xr[ch][l], output);
2891 III_overlap(output, (*frame->overlap)[ch][sb], sample, sb);
2892
2893 if (sb & 1)
2894 III_freqinver(sample, sb);
2895 }
2896 }
2897
2898 /* remaining (zero) subbands */
2899
2900 for (sb = sblimit; sb < 32; ++sb) {
2901 III_overlap_z((*frame->overlap)[ch][sb], sample, sb);
2902
2903 if (sb & 1)
2904 III_freqinver(sample, sb);
2905 }
2906 }
2907 }
2908
2909 return MAD_ERROR_NONE;
2910}
2911
2912/*
2913 * NAME: layer->III()
2914 * DESCRIPTION: decode a single Layer III frame
2915 */
2916int mad_layer_III(struct mad_stream *stream, struct mad_frame *frame)
2917{
2918 struct mad_header *header = &frame->header;
2919 unsigned int nch, priv_bitlen, next_md_begin = 0;
2920 unsigned int si_len, data_bitlen, md_len;
2921 unsigned int frame_space, frame_used, frame_free;
2922 struct mad_bitptr ptr;
2923 struct sideinfo si;
2924 enum mad_error error;
2925 int result = 0;
2926
2927#if 0 /* rockbox: do not allocate */
2928 /* allocate Layer III dynamic structures */
2929 /* rockbox: not used. Both pointers are linked to an array in
2930 * ../mpa.c before calling this. */
2931 if (stream->main_data == 0) {
2932 stream->main_data = malloc(MAD_BUFFER_MDLEN);
2933 if (stream->main_data == 0) {
2934 stream->error = MAD_ERROR_NOMEM;
2935 return -1;
2936 }
2937 }
2938
2939 if (frame->overlap == 0) {
2940 frame->overlap = calloc(2 * 32 * 18, sizeof(mad_fixed_t));
2941 if (frame->overlap == 0) {
2942 stream->error = MAD_ERROR_NOMEM;
2943 return -1;
2944 }
2945 }
2946#else
2947 /* rockbox: This should not happen. Return with error. */
2948 if ((stream->main_data == 0) || (frame->overlap == 0)) {
2949 stream->error = MAD_ERROR_NOMEM;
2950 return -1;
2951 }
2952#endif /* rockbox */
2953
2954 nch = MAD_NCHANNELS(header);
2955 si_len = (header->flags & MAD_FLAG_LSF_EXT) ?
2956 (nch == 1 ? 9 : 17) : (nch == 1 ? 17 : 32);
2957
2958 /* check frame sanity */
2959
2960 if (stream->next_frame - mad_bit_nextbyte(&stream->ptr) <
2961 (signed int) si_len) {
2962 stream->error = MAD_ERROR_BADFRAMELEN;
2963 stream->md_len = 0;
2964 return -1;
2965 }
2966
2967 /* check CRC word */
2968
2969 if (header->flags & MAD_FLAG_PROTECTION) {
2970 header->crc_check =
2971 mad_bit_crc(stream->ptr, si_len * CHAR_BIT, header->crc_check);
2972
2973 if (header->crc_check != header->crc_target &&
2974 !(frame->options & MAD_OPTION_IGNORECRC)) {
2975 stream->error = MAD_ERROR_BADCRC;
2976 result = -1;
2977 }
2978 }
2979
2980 /* decode frame side information */
2981
2982 error = III_sideinfo(&stream->ptr, nch, header->flags & MAD_FLAG_LSF_EXT,
2983 &si, &data_bitlen, &priv_bitlen);
2984 if (error && result == 0) {
2985 stream->error = error;
2986 result = -1;
2987 }
2988
2989 header->flags |= priv_bitlen;
2990 header->private_bits |= si.private_bits;
2991
2992 /* find main_data of next frame */
2993
2994 {
2995 struct mad_bitptr peek;
2996 unsigned long header;
2997
2998 mad_bit_init(&peek, stream->next_frame);
2999
3000 header = mad_bit_read(&peek, 32);
3001 if ((header & 0xffe60000L) /* syncword | layer */ == 0xffe20000L) {
3002 if (!(header & 0x00010000L)) /* protection_bit */
3003 mad_bit_skip(&peek, 16); /* crc_check */
3004
3005 next_md_begin =
3006 mad_bit_read(&peek, (header & 0x00080000L) /* ID */ ? 9 : 8);
3007 }
3008
3009 mad_bit_finish(&peek);
3010 }
3011
3012 /* find main_data of this frame */
3013
3014 frame_space = stream->next_frame - mad_bit_nextbyte(&stream->ptr);
3015
3016 if (next_md_begin > si.main_data_begin + frame_space)
3017 next_md_begin = 0;
3018
3019 md_len = si.main_data_begin + frame_space - next_md_begin;
3020
3021 frame_used = 0;
3022
3023 if (si.main_data_begin == 0) {
3024 ptr = stream->ptr;
3025 stream->md_len = 0;
3026
3027 frame_used = md_len;
3028 }
3029 else {
3030 if (si.main_data_begin > stream->md_len) {
3031 if (result == 0) {
3032 stream->error = MAD_ERROR_BADDATAPTR;
3033 result = -1;
3034 }
3035 }
3036 else {
3037 mad_bit_init(&ptr,
3038 *stream->main_data + stream->md_len - si.main_data_begin);
3039
3040 if (md_len > si.main_data_begin) {
3041 assert(stream->md_len + md_len -
3042 si.main_data_begin <= MAD_BUFFER_MDLEN);
3043
3044 memcpy(*stream->main_data + stream->md_len,
3045 mad_bit_nextbyte(&stream->ptr),
3046 frame_used = md_len - si.main_data_begin);
3047 stream->md_len += frame_used;
3048 }
3049 }
3050 }
3051
3052 frame_free = frame_space - frame_used;
3053
3054 /* decode main_data */
3055
3056 if (result == 0) {
3057 error = III_decode(&ptr, frame, &si, nch);
3058 if (error) {
3059 stream->error = error;
3060 result = -1;
3061 }
3062
3063 /* designate ancillary bits */
3064
3065 stream->anc_ptr = ptr;
3066 stream->anc_bitlen = md_len * CHAR_BIT - data_bitlen;
3067 }
3068
3069# if 0 && defined(DEBUG)
3070 fprintf(stderr,
3071 "main_data_begin:%u, md_len:%u, frame_free:%u, "
3072 "data_bitlen:%u, anc_bitlen: %u\n",
3073 si.main_data_begin, md_len, frame_free,
3074 data_bitlen, stream->anc_bitlen);
3075# endif
3076
3077 /* preload main_data buffer with up to 511 bytes for next frame(s) */
3078
3079 if (frame_free >= next_md_begin) {
3080 memcpy(*stream->main_data,
3081 stream->next_frame - next_md_begin, next_md_begin);
3082 stream->md_len = next_md_begin;
3083 }
3084 else {
3085 if (md_len < si.main_data_begin) {
3086 unsigned int extra;
3087
3088 extra = si.main_data_begin - md_len;
3089 if (extra + frame_free > next_md_begin)
3090 extra = next_md_begin - frame_free;
3091
3092 if (extra < stream->md_len) {
3093 memmove(*stream->main_data,
3094 *stream->main_data + stream->md_len - extra, extra);
3095 stream->md_len = extra;
3096 }
3097 }
3098 else
3099 stream->md_len = 0;
3100
3101 memcpy(*stream->main_data + stream->md_len,
3102 stream->next_frame - frame_free, frame_free);
3103 stream->md_len += frame_free;
3104 }
3105
3106 return result;
3107}
diff --git a/lib/rbcodec/codecs/libmad/layer3.h b/lib/rbcodec/codecs/libmad/layer3.h
new file mode 100644
index 0000000000..15948037e9
--- /dev/null
+++ b/lib/rbcodec/codecs/libmad/layer3.h
@@ -0,0 +1,30 @@
1/*
2 * libmad - MPEG audio decoder library
3 * Copyright (C) 2000-2004 Underbit Technologies, Inc.
4 *
5 * This program is free software; you can redistribute it and/or modify
6 * it under the terms of the GNU General Public License as published by
7 * the Free Software Foundation; either version 2 of the License, or
8 * (at your option) any later version.
9 *
10 * This program is distributed in the hope that it will be useful,
11 * but WITHOUT ANY WARRANTY; without even the implied warranty of
12 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 * GNU General Public License for more details.
14 *
15 * You should have received a copy of the GNU General Public License
16 * along with this program; if not, write to the Free Software
17 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
18 *
19 * $Id$
20 */
21
22# ifndef LIBMAD_LAYER3_H
23# define LIBMAD_LAYER3_H
24
25# include "stream.h"
26# include "frame.h"
27
28int mad_layer_III(struct mad_stream *, struct mad_frame *);
29
30# endif
diff --git a/lib/rbcodec/codecs/libmad/libmad.make b/lib/rbcodec/codecs/libmad/libmad.make
new file mode 100644
index 0000000000..2a8c7b220f
--- /dev/null
+++ b/lib/rbcodec/codecs/libmad/libmad.make
@@ -0,0 +1,66 @@
1# __________ __ ___.
2# Open \______ \ ____ ____ | | _\_ |__ _______ ___
3# Source | _// _ \_/ ___\| |/ /| __ \ / _ \ \/ /
4# Jukebox | | ( <_> ) \___| < | \_\ ( <_> > < <
5# Firmware |____|_ /\____/ \___ >__|_ \|___ /\____/__/\_ \
6# \/ \/ \/ \/ \/
7# $Id$
8#
9
10# we need to build two different mad libraries
11# (one for codec, one for mpegplayer)
12# so a little trickery is necessary
13
14# Extract optimization level ('-O') from compile flags. Will be set later.
15MADFLAGS = $(filter-out -O%,$(CODECFLAGS)) -I$(RBCODECLIB_DIR)/codecs/libmad
16MADFLAGS += -UDEBUG -DNDEBUG -DHAVE_LIMITS_H
17
18# libmad is faster on ARM-targets with -O1 than -O2
19ifeq ($(ARCH),arch_arm)
20 MADFLAGS += -O1
21else
22 MADFLAGS += -O2
23endif
24
25# MPEGplayer
26MPEGMADFLAGS = $(MADFLAGS) -DMPEGPLAYER
27
28# libmad
29MADLIB := $(CODECDIR)/libmad.a
30MADLIB_SRC := $(call preprocess, $(RBCODECLIB_DIR)/codecs/libmad/SOURCES)
31MADLIB_OBJ := $(call c2obj, $(MADLIB_SRC))
32OTHER_SRC += $(MADLIB_SRC)
33
34$(MADLIB): $(MADLIB_OBJ)
35 $(SILENT)$(shell rm -f $@)
36 $(call PRINTS,AR $(@F))$(AR) rcs $@ $^ >/dev/null
37
38# libmad-mpeg
39MPEGMADLIB := $(CODECDIR)/libmad-mpeg.a
40MPEGMADLIB_SRC := $(call preprocess, $(RBCODECLIB_DIR)/codecs/libmad/SOURCES)
41MPEGMADLIB_OBJ := $(addsuffix .o,$(basename $(subst $(RBCODECLIB_DIR)/codecs/libmad,$(RBCODEC_BLD)/codecs/libmad-mpeg,$(MPEGMADLIB_SRC))))
42
43$(MPEGMADLIB): $(MPEGMADLIB_OBJ)
44 $(call PRINTS,AR $(@F))$(AR) rcs $@ $^ >/dev/null
45
46# pattern rules
47
48$(CODECDIR)/libmad-mpeg/%.o : $(RBCODECLIB_DIR)/codecs/libmad/%.c
49 $(SILENT)mkdir -p $(dir $@)
50 $(call PRINTS,CC $(subst $(ROOTDIR)/,,$<)) \
51 $(CC) $(MPEGMADFLAGS) -c $< -o $@
52
53$(CODECDIR)/libmad-mpeg/%.o : $(RBCODECLIB_DIR)/codecs/libmad/%.S
54 $(SILENT)mkdir -p $(dir $@)
55 $(call PRINTS,CC $(subst $(ROOTDIR)/,,$<)) \
56 $(CC) $(MPEGMADFLAGS) $(ASMFLAGS) -c $< -o $@
57
58$(CODECDIR)/libmad/%.o: $(RBCODECLIB_DIR)/codecs/libmad/%.c
59 $(SILENT)mkdir -p $(dir $@)
60 $(call PRINTS,CC $(subst $(ROOTDIR)/,,$<)) \
61 $(CC) $(MADFLAGS) -c $< -o $@
62
63$(CODECDIR)/libmad/%.o: $(RBCODECLIB_DIR)/codecs/libmad/%.S
64 $(SILENT)mkdir -p $(dir $@)
65 $(call PRINTS,CC $(subst $(ROOTDIR)/,,$<)) \
66 $(CC) $(MADFLAGS) $(ASMFLAGS) -c $< -o $@
diff --git a/lib/rbcodec/codecs/libmad/mad.h b/lib/rbcodec/codecs/libmad/mad.h
new file mode 100644
index 0000000000..3ae0d88a0e
--- /dev/null
+++ b/lib/rbcodec/codecs/libmad/mad.h
@@ -0,0 +1,31 @@
1/*
2 * libmad - MPEG audio decoder library
3 * Copyright (C) 2000-2004 Underbit Technologies, Inc.
4 *
5 * This program is free software; you can redistribute it and/or modify
6 * it under the terms of the GNU General Public License as published by
7 * the Free Software Foundation; either version 2 of the License, or
8 * (at your option) any later version.
9 *
10 * This program is distributed in the hope that it will be useful,
11 * but WITHOUT ANY WARRANTY; without even the implied warranty of
12 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 * GNU General Public License for more details.
14 *
15 * You should have received a copy of the GNU General Public License
16 * along with this program; if not, write to the Free Software
17 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
18 *
19 * If you would like to negotiate alternate licensing terms, you may do
20 * so by contacting: Underbit Technologies, Inc. <info@underbit.com>
21 */
22
23#include <inttypes.h>
24
25#define FPM_DEFAULT
26
27#include "fixed.h"
28#include "bit.h"
29#include "stream.h"
30#include "frame.h"
31#include "synth.h"
diff --git a/lib/rbcodec/codecs/libmad/mad_iram.h b/lib/rbcodec/codecs/libmad/mad_iram.h
new file mode 100644
index 0000000000..ac0b64cca9
--- /dev/null
+++ b/lib/rbcodec/codecs/libmad/mad_iram.h
@@ -0,0 +1,57 @@
1/***************************************************************************
2 * __________ __ ___.
3 * Open \______ \ ____ ____ | | _\_ |__ _______ ___
4 * Source | _// _ \_/ ___\| |/ /| __ \ / _ \ \/ /
5 * Jukebox | | ( <_> ) \___| < | \_\ ( <_> > < <
6 * Firmware |____|_ /\____/ \___ >__|_ \|___ /\____/__/\_ \
7 * \/ \/ \/ \/ \/
8 * $Id$
9 *
10 * Copyright (C) 2007 Dave Chapman
11 *
12 * This program is free software; you can redistribute it and/or
13 * modify it under the terms of the GNU General Public License
14 * as published by the Free Software Foundation; either version 2
15 * of the License, or (at your option) any later version.
16 *
17 * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
18 * KIND, either express or implied.
19 *
20 ****************************************************************************/
21
22/* Define how IRAM is used on the various targets. Note that this
23 file is included by both .c and .S files so must not contain any C
24 code.
25*/
26
27#ifndef _LIBMAD_IRAM_H
28#define _LIBMAD_IRAM_H
29
30#include "config.h"
31
32#if (CONFIG_PLATFORM&PLATFORM_HOSTED)
33#define ICODE_SECTION_MPA_ARM .text
34#define IBSS_SECTION_MPA_ARM .bss
35#define ICODE_ATTR_MPA_SYNTH
36#define ICONST_ATTR_MPA_HUFFMAN
37#else
38/* Code performs slower in IRAM on PP502x and there is no space in
39 mpegplayer on the PP5002. S3C2440 doesn't have any IRAM available for
40 codecs */
41#if defined(CPU_PP502x) || (CONFIG_CPU == PP5002 && defined(MPEGPLAYER))
42#define ICODE_SECTION_MPA_ARM .text
43#define ICODE_ATTR_MPA_SYNTH
44#else
45#define ICODE_SECTION_MPA_ARM .icode
46#define ICODE_ATTR_MPA_SYNTH ICODE_ATTR
47#endif
48
49#define IBSS_SECTION_MPA_ARM .ibss
50
51#ifndef ICONST_ATTR_MPA_HUFFMAN
52#define ICONST_ATTR_MPA_HUFFMAN ICONST_ATTR
53#endif
54
55#endif
56
57#endif /* MAD_IRAM_H */
diff --git a/lib/rbcodec/codecs/libmad/qc_table.dat b/lib/rbcodec/codecs/libmad/qc_table.dat
new file mode 100644
index 0000000000..d28a207049
--- /dev/null
+++ b/lib/rbcodec/codecs/libmad/qc_table.dat
@@ -0,0 +1,77 @@
1/*
2 * libmad - MPEG audio decoder library
3 * Copyright (C) 2000-2004 Underbit Technologies, Inc.
4 *
5 * This program is free software; you can redistribute it and/or modify
6 * it under the terms of the GNU General Public License as published by
7 * the Free Software Foundation; either version 2 of the License, or
8 * (at your option) any later version.
9 *
10 * This program is distributed in the hope that it will be useful,
11 * but WITHOUT ANY WARRANTY; without even the implied warranty of
12 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 * GNU General Public License for more details.
14 *
15 * You should have received a copy of the GNU General Public License
16 * along with this program; if not, write to the Free Software
17 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
18 *
19 * $Id$
20 */
21
22/*
23 * These are the Layer II classes of quantization.
24 * The table is derived from Table B.4 of ISO/IEC 11172-3.
25 */
26
27 { 3, 2, 5,
28 MAD_F(0x15555555) /* 1.33333333333 => 1.33333333209, e 0.00000000124 */,
29 MAD_F(0x08000000) /* 0.50000000000 => 0.50000000000, e 0.00000000000 */ },
30 { 5, 3, 7,
31 MAD_F(0x1999999a) /* 1.60000000000 => 1.60000000149, e -0.00000000149 */,
32 MAD_F(0x08000000) /* 0.50000000000 => 0.50000000000, e 0.00000000000 */ },
33 { 7, 0, 3,
34 MAD_F(0x12492492) /* 1.14285714286 => 1.14285714179, e 0.00000000107 */,
35 MAD_F(0x04000000) /* 0.25000000000 => 0.25000000000, e 0.00000000000 */ },
36 { 9, 4, 10,
37 MAD_F(0x1c71c71c) /* 1.77777777777 => 1.77777777612, e 0.00000000165 */,
38 MAD_F(0x08000000) /* 0.50000000000 => 0.50000000000, e 0.00000000000 */ },
39 { 15, 0, 4,
40 MAD_F(0x11111111) /* 1.06666666666 => 1.06666666642, e 0.00000000024 */,
41 MAD_F(0x02000000) /* 0.12500000000 => 0.12500000000, e 0.00000000000 */ },
42 { 31, 0, 5,
43 MAD_F(0x10842108) /* 1.03225806452 => 1.03225806355, e 0.00000000097 */,
44 MAD_F(0x01000000) /* 0.06250000000 => 0.06250000000, e 0.00000000000 */ },
45 { 63, 0, 6,
46 MAD_F(0x10410410) /* 1.01587301587 => 1.01587301493, e 0.00000000094 */,
47 MAD_F(0x00800000) /* 0.03125000000 => 0.03125000000, e 0.00000000000 */ },
48 { 127, 0, 7,
49 MAD_F(0x10204081) /* 1.00787401575 => 1.00787401572, e 0.00000000003 */,
50 MAD_F(0x00400000) /* 0.01562500000 => 0.01562500000, e 0.00000000000 */ },
51 { 255, 0, 8,
52 MAD_F(0x10101010) /* 1.00392156863 => 1.00392156839, e 0.00000000024 */,
53 MAD_F(0x00200000) /* 0.00781250000 => 0.00781250000, e 0.00000000000 */ },
54 { 511, 0, 9,
55 MAD_F(0x10080402) /* 1.00195694716 => 1.00195694715, e 0.00000000001 */,
56 MAD_F(0x00100000) /* 0.00390625000 => 0.00390625000, e 0.00000000000 */ },
57 { 1023, 0, 10,
58 MAD_F(0x10040100) /* 1.00097751711 => 1.00097751617, e 0.00000000094 */,
59 MAD_F(0x00080000) /* 0.00195312500 => 0.00195312500, e 0.00000000000 */ },
60 { 2047, 0, 11,
61 MAD_F(0x10020040) /* 1.00048851979 => 1.00048851967, e 0.00000000012 */,
62 MAD_F(0x00040000) /* 0.00097656250 => 0.00097656250, e 0.00000000000 */ },
63 { 4095, 0, 12,
64 MAD_F(0x10010010) /* 1.00024420024 => 1.00024420023, e 0.00000000001 */,
65 MAD_F(0x00020000) /* 0.00048828125 => 0.00048828125, e 0.00000000000 */ },
66 { 8191, 0, 13,
67 MAD_F(0x10008004) /* 1.00012208522 => 1.00012208521, e 0.00000000001 */,
68 MAD_F(0x00010000) /* 0.00024414063 => 0.00024414062, e 0.00000000000 */ },
69 { 16383, 0, 14,
70 MAD_F(0x10004001) /* 1.00006103888 => 1.00006103888, e -0.00000000000 */,
71 MAD_F(0x00008000) /* 0.00012207031 => 0.00012207031, e -0.00000000000 */ },
72 { 32767, 0, 15,
73 MAD_F(0x10002000) /* 1.00003051851 => 1.00003051758, e 0.00000000093 */,
74 MAD_F(0x00004000) /* 0.00006103516 => 0.00006103516, e 0.00000000000 */ },
75 { 65535, 0, 16,
76 MAD_F(0x10001000) /* 1.00001525902 => 1.00001525879, e 0.00000000023 */,
77 MAD_F(0x00002000) /* 0.00003051758 => 0.00003051758, e 0.00000000000 */ }
diff --git a/lib/rbcodec/codecs/libmad/rq_table.dat b/lib/rbcodec/codecs/libmad/rq_table.dat
new file mode 100644
index 0000000000..b3a37c13cd
--- /dev/null
+++ b/lib/rbcodec/codecs/libmad/rq_table.dat
@@ -0,0 +1,8747 @@
1/*
2 * libmad - MPEG audio decoder library
3 * Copyright (C) 2000-2004 Underbit Technologies, Inc.
4 *
5 * This program is free software; you can redistribute it and/or modify
6 * it under the terms of the GNU General Public License as published by
7 * the Free Software Foundation; either version 2 of the License, or
8 * (at your option) any later version.
9 *
10 * This program is distributed in the hope that it will be useful,
11 * but WITHOUT ANY WARRANTY; without even the implied warranty of
12 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 * GNU General Public License for more details.
14 *
15 * You should have received a copy of the GNU General Public License
16 * along with this program; if not, write to the Free Software
17 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
18 *
19 * $Id$
20 */
21
22/*
23 * This is the lookup table used to compute x^(4/3) for Layer III
24 * requantization. To maintain the best possible accuracy, the value is
25 * stored as a normalized mantissa with exponent. The requantization
26 * algorithm recombines these parts with appropriate scaling.
27 */
28
29 /* 0 */ 0x00000000 | (0 << 27) /* 0.000000000 */,
30 /* 1 */ 0x04000000 | (2 << 27) /* 0.250000000 */,
31 /* 2 */ 0x050a28be | (3 << 27) /* 0.314980262 */,
32 /* 3 */ 0x0453a5cd | (4 << 27) /* 0.270421794 */,
33 /* 4 */ 0x06597fa9 | (4 << 27) /* 0.396850263 */,
34 /* 5 */ 0x04466275 | (5 << 27) /* 0.267183742 */,
35 /* 6 */ 0x05738c72 | (5 << 27) /* 0.340710111 */,
36 /* 7 */ 0x06b1fc81 | (5 << 27) /* 0.418453696 */,
37 /* 8 */ 0x04000000 | (6 << 27) /* 0.250000000 */,
38 /* 9 */ 0x04ae20d7 | (6 << 27) /* 0.292511788 */,
39 /* 10 */ 0x0562d694 | (6 << 27) /* 0.336630420 */,
40 /* 11 */ 0x061dae96 | (6 << 27) /* 0.382246578 */,
41 /* 12 */ 0x06de47f4 | (6 << 27) /* 0.429267841 */,
42 /* 13 */ 0x07a44f7a | (6 << 27) /* 0.477614858 */,
43 /* 14 */ 0x0437be65 | (7 << 27) /* 0.263609310 */,
44 /* 15 */ 0x049fc824 | (7 << 27) /* 0.289009227 */,
45
46 /* 16 */ 0x050a28be | (7 << 27) /* 0.314980262 */,
47 /* 17 */ 0x0576c6f5 | (7 << 27) /* 0.341498336 */,
48 /* 18 */ 0x05e58c0b | (7 << 27) /* 0.368541759 */,
49 /* 19 */ 0x06566361 | (7 << 27) /* 0.396090870 */,
50 /* 20 */ 0x06c93a2e | (7 << 27) /* 0.424127753 */,
51 /* 21 */ 0x073dff3e | (7 << 27) /* 0.452635998 */,
52 /* 22 */ 0x07b4a2bc | (7 << 27) /* 0.481600510 */,
53 /* 23 */ 0x04168b05 | (8 << 27) /* 0.255503674 */,
54 /* 24 */ 0x0453a5cd | (8 << 27) /* 0.270421794 */,
55 /* 25 */ 0x04919b6a | (8 << 27) /* 0.285548607 */,
56 /* 26 */ 0x04d065fb | (8 << 27) /* 0.300878507 */,
57 /* 27 */ 0x05100000 | (8 << 27) /* 0.316406250 */,
58 /* 28 */ 0x05506451 | (8 << 27) /* 0.332126919 */,
59 /* 29 */ 0x05918e15 | (8 << 27) /* 0.348035890 */,
60 /* 30 */ 0x05d378bb | (8 << 27) /* 0.364128809 */,
61 /* 31 */ 0x06161ff3 | (8 << 27) /* 0.380401563 */,
62
63 /* 32 */ 0x06597fa9 | (8 << 27) /* 0.396850263 */,
64 /* 33 */ 0x069d9400 | (8 << 27) /* 0.413471222 */,
65 /* 34 */ 0x06e2594c | (8 << 27) /* 0.430260942 */,
66 /* 35 */ 0x0727cc11 | (8 << 27) /* 0.447216097 */,
67 /* 36 */ 0x076de8fc | (8 << 27) /* 0.464333519 */,
68 /* 37 */ 0x07b4ace3 | (8 << 27) /* 0.481610189 */,
69 /* 38 */ 0x07fc14bf | (8 << 27) /* 0.499043224 */,
70 /* 39 */ 0x04220ed7 | (9 << 27) /* 0.258314934 */,
71 /* 40 */ 0x04466275 | (9 << 27) /* 0.267183742 */,
72 /* 41 */ 0x046b03e7 | (9 << 27) /* 0.276126771 */,
73 /* 42 */ 0x048ff1e8 | (9 << 27) /* 0.285142811 */,
74 /* 43 */ 0x04b52b3f | (9 << 27) /* 0.294230696 */,
75 /* 44 */ 0x04daaec0 | (9 << 27) /* 0.303389310 */,
76 /* 45 */ 0x05007b49 | (9 << 27) /* 0.312617576 */,
77 /* 46 */ 0x05268fc6 | (9 << 27) /* 0.321914457 */,
78 /* 47 */ 0x054ceb2a | (9 << 27) /* 0.331278957 */,
79
80 /* 48 */ 0x05738c72 | (9 << 27) /* 0.340710111 */,
81 /* 49 */ 0x059a72a5 | (9 << 27) /* 0.350206992 */,
82 /* 50 */ 0x05c19cd3 | (9 << 27) /* 0.359768701 */,
83 /* 51 */ 0x05e90a12 | (9 << 27) /* 0.369394372 */,
84 /* 52 */ 0x0610b982 | (9 << 27) /* 0.379083164 */,
85 /* 53 */ 0x0638aa48 | (9 << 27) /* 0.388834268 */,
86 /* 54 */ 0x0660db91 | (9 << 27) /* 0.398646895 */,
87 /* 55 */ 0x06894c90 | (9 << 27) /* 0.408520284 */,
88 /* 56 */ 0x06b1fc81 | (9 << 27) /* 0.418453696 */,
89 /* 57 */ 0x06daeaa1 | (9 << 27) /* 0.428446415 */,
90 /* 58 */ 0x07041636 | (9 << 27) /* 0.438497744 */,
91 /* 59 */ 0x072d7e8b | (9 << 27) /* 0.448607009 */,
92 /* 60 */ 0x075722ef | (9 << 27) /* 0.458773552 */,
93 /* 61 */ 0x078102b8 | (9 << 27) /* 0.468996735 */,
94 /* 62 */ 0x07ab1d3e | (9 << 27) /* 0.479275937 */,
95 /* 63 */ 0x07d571e0 | (9 << 27) /* 0.489610555 */,
96
97 /* 64 */ 0x04000000 | (10 << 27) /* 0.250000000 */,
98 /* 65 */ 0x04156381 | (10 << 27) /* 0.255221850 */,
99 /* 66 */ 0x042ae32a | (10 << 27) /* 0.260470548 */,
100 /* 67 */ 0x04407eb1 | (10 << 27) /* 0.265745823 */,
101 /* 68 */ 0x045635cf | (10 << 27) /* 0.271047409 */,
102 /* 69 */ 0x046c083e | (10 << 27) /* 0.276375048 */,
103 /* 70 */ 0x0481f5bb | (10 << 27) /* 0.281728487 */,
104 /* 71 */ 0x0497fe03 | (10 << 27) /* 0.287107481 */,
105 /* 72 */ 0x04ae20d7 | (10 << 27) /* 0.292511788 */,
106 /* 73 */ 0x04c45df6 | (10 << 27) /* 0.297941173 */,
107 /* 74 */ 0x04dab524 | (10 << 27) /* 0.303395408 */,
108 /* 75 */ 0x04f12624 | (10 << 27) /* 0.308874267 */,
109 /* 76 */ 0x0507b0bc | (10 << 27) /* 0.314377532 */,
110 /* 77 */ 0x051e54b1 | (10 << 27) /* 0.319904987 */,
111 /* 78 */ 0x053511cb | (10 << 27) /* 0.325456423 */,
112 /* 79 */ 0x054be7d4 | (10 << 27) /* 0.331031635 */,
113
114 /* 80 */ 0x0562d694 | (10 << 27) /* 0.336630420 */,
115 /* 81 */ 0x0579ddd8 | (10 << 27) /* 0.342252584 */,
116 /* 82 */ 0x0590fd6c | (10 << 27) /* 0.347897931 */,
117 /* 83 */ 0x05a8351c | (10 << 27) /* 0.353566275 */,
118 /* 84 */ 0x05bf84b8 | (10 << 27) /* 0.359257429 */,
119 /* 85 */ 0x05d6ec0e | (10 << 27) /* 0.364971213 */,
120 /* 86 */ 0x05ee6aef | (10 << 27) /* 0.370707448 */,
121 /* 87 */ 0x0606012b | (10 << 27) /* 0.376465960 */,
122 /* 88 */ 0x061dae96 | (10 << 27) /* 0.382246578 */,
123 /* 89 */ 0x06357302 | (10 << 27) /* 0.388049134 */,
124 /* 90 */ 0x064d4e43 | (10 << 27) /* 0.393873464 */,
125 /* 91 */ 0x0665402d | (10 << 27) /* 0.399719406 */,
126 /* 92 */ 0x067d4896 | (10 << 27) /* 0.405586801 */,
127 /* 93 */ 0x06956753 | (10 << 27) /* 0.411475493 */,
128 /* 94 */ 0x06ad9c3d | (10 << 27) /* 0.417385331 */,
129 /* 95 */ 0x06c5e72b | (10 << 27) /* 0.423316162 */,
130
131 /* 96 */ 0x06de47f4 | (10 << 27) /* 0.429267841 */,
132 /* 97 */ 0x06f6be73 | (10 << 27) /* 0.435240221 */,
133 /* 98 */ 0x070f4a80 | (10 << 27) /* 0.441233161 */,
134 /* 99 */ 0x0727ebf7 | (10 << 27) /* 0.447246519 */,
135 /* 100 */ 0x0740a2b2 | (10 << 27) /* 0.453280160 */,
136 /* 101 */ 0x07596e8d | (10 << 27) /* 0.459333946 */,
137 /* 102 */ 0x07724f64 | (10 << 27) /* 0.465407744 */,
138 /* 103 */ 0x078b4514 | (10 << 27) /* 0.471501425 */,
139 /* 104 */ 0x07a44f7a | (10 << 27) /* 0.477614858 */,
140 /* 105 */ 0x07bd6e75 | (10 << 27) /* 0.483747918 */,
141 /* 106 */ 0x07d6a1e2 | (10 << 27) /* 0.489900479 */,
142 /* 107 */ 0x07efe9a1 | (10 << 27) /* 0.496072418 */,
143 /* 108 */ 0x0404a2c9 | (11 << 27) /* 0.251131807 */,
144 /* 109 */ 0x04115aca | (11 << 27) /* 0.254236974 */,
145 /* 110 */ 0x041e1cc4 | (11 << 27) /* 0.257351652 */,
146 /* 111 */ 0x042ae8a7 | (11 << 27) /* 0.260475783 */,
147
148 /* 112 */ 0x0437be65 | (11 << 27) /* 0.263609310 */,
149 /* 113 */ 0x04449dee | (11 << 27) /* 0.266752177 */,
150 /* 114 */ 0x04518733 | (11 << 27) /* 0.269904329 */,
151 /* 115 */ 0x045e7a26 | (11 << 27) /* 0.273065710 */,
152 /* 116 */ 0x046b76b9 | (11 << 27) /* 0.276236269 */,
153 /* 117 */ 0x04787cdc | (11 << 27) /* 0.279415952 */,
154 /* 118 */ 0x04858c83 | (11 << 27) /* 0.282604707 */,
155 /* 119 */ 0x0492a59f | (11 << 27) /* 0.285802482 */,
156 /* 120 */ 0x049fc824 | (11 << 27) /* 0.289009227 */,
157 /* 121 */ 0x04acf402 | (11 << 27) /* 0.292224893 */,
158 /* 122 */ 0x04ba292e | (11 << 27) /* 0.295449429 */,
159 /* 123 */ 0x04c7679a | (11 << 27) /* 0.298682788 */,
160 /* 124 */ 0x04d4af3a | (11 << 27) /* 0.301924921 */,
161 /* 125 */ 0x04e20000 | (11 << 27) /* 0.305175781 */,
162 /* 126 */ 0x04ef59e0 | (11 << 27) /* 0.308435322 */,
163 /* 127 */ 0x04fcbcce | (11 << 27) /* 0.311703498 */,
164
165 /* 128 */ 0x050a28be | (11 << 27) /* 0.314980262 */,
166 /* 129 */ 0x05179da4 | (11 << 27) /* 0.318265572 */,
167 /* 130 */ 0x05251b73 | (11 << 27) /* 0.321559381 */,
168 /* 131 */ 0x0532a220 | (11 << 27) /* 0.324861647 */,
169 /* 132 */ 0x054031a0 | (11 << 27) /* 0.328172327 */,
170 /* 133 */ 0x054dc9e7 | (11 << 27) /* 0.331491377 */,
171 /* 134 */ 0x055b6ae9 | (11 << 27) /* 0.334818756 */,
172 /* 135 */ 0x0569149c | (11 << 27) /* 0.338154423 */,
173 /* 136 */ 0x0576c6f5 | (11 << 27) /* 0.341498336 */,
174 /* 137 */ 0x058481e9 | (11 << 27) /* 0.344850455 */,
175 /* 138 */ 0x0592456d | (11 << 27) /* 0.348210741 */,
176 /* 139 */ 0x05a01176 | (11 << 27) /* 0.351579152 */,
177 /* 140 */ 0x05ade5fa | (11 << 27) /* 0.354955651 */,
178 /* 141 */ 0x05bbc2ef | (11 << 27) /* 0.358340200 */,
179 /* 142 */ 0x05c9a84a | (11 << 27) /* 0.361732758 */,
180 /* 143 */ 0x05d79601 | (11 << 27) /* 0.365133291 */,
181
182 /* 144 */ 0x05e58c0b | (11 << 27) /* 0.368541759 */,
183 /* 145 */ 0x05f38a5d | (11 << 27) /* 0.371958126 */,
184 /* 146 */ 0x060190ee | (11 << 27) /* 0.375382356 */,
185 /* 147 */ 0x060f9fb3 | (11 << 27) /* 0.378814413 */,
186 /* 148 */ 0x061db6a5 | (11 << 27) /* 0.382254261 */,
187 /* 149 */ 0x062bd5b8 | (11 << 27) /* 0.385701865 */,
188 /* 150 */ 0x0639fce4 | (11 << 27) /* 0.389157191 */,
189 /* 151 */ 0x06482c1f | (11 << 27) /* 0.392620204 */,
190 /* 152 */ 0x06566361 | (11 << 27) /* 0.396090870 */,
191 /* 153 */ 0x0664a2a0 | (11 << 27) /* 0.399569155 */,
192 /* 154 */ 0x0672e9d4 | (11 << 27) /* 0.403055027 */,
193 /* 155 */ 0x068138f3 | (11 << 27) /* 0.406548452 */,
194 /* 156 */ 0x068f8ff5 | (11 << 27) /* 0.410049398 */,
195 /* 157 */ 0x069deed1 | (11 << 27) /* 0.413557833 */,
196 /* 158 */ 0x06ac557f | (11 << 27) /* 0.417073724 */,
197 /* 159 */ 0x06bac3f6 | (11 << 27) /* 0.420597041 */,
198
199 /* 160 */ 0x06c93a2e | (11 << 27) /* 0.424127753 */,
200 /* 161 */ 0x06d7b81f | (11 << 27) /* 0.427665827 */,
201 /* 162 */ 0x06e63dc0 | (11 << 27) /* 0.431211234 */,
202 /* 163 */ 0x06f4cb09 | (11 << 27) /* 0.434763944 */,
203 /* 164 */ 0x07035ff3 | (11 << 27) /* 0.438323927 */,
204 /* 165 */ 0x0711fc75 | (11 << 27) /* 0.441891153 */,
205 /* 166 */ 0x0720a087 | (11 << 27) /* 0.445465593 */,
206 /* 167 */ 0x072f4c22 | (11 << 27) /* 0.449047217 */,
207 /* 168 */ 0x073dff3e | (11 << 27) /* 0.452635998 */,
208 /* 169 */ 0x074cb9d3 | (11 << 27) /* 0.456231906 */,
209 /* 170 */ 0x075b7bdb | (11 << 27) /* 0.459834914 */,
210 /* 171 */ 0x076a454c | (11 << 27) /* 0.463444993 */,
211 /* 172 */ 0x07791620 | (11 << 27) /* 0.467062117 */,
212 /* 173 */ 0x0787ee50 | (11 << 27) /* 0.470686258 */,
213 /* 174 */ 0x0796cdd4 | (11 << 27) /* 0.474317388 */,
214 /* 175 */ 0x07a5b4a5 | (11 << 27) /* 0.477955481 */,
215
216 /* 176 */ 0x07b4a2bc | (11 << 27) /* 0.481600510 */,
217 /* 177 */ 0x07c39812 | (11 << 27) /* 0.485252449 */,
218 /* 178 */ 0x07d294a0 | (11 << 27) /* 0.488911273 */,
219 /* 179 */ 0x07e1985f | (11 << 27) /* 0.492576954 */,
220 /* 180 */ 0x07f0a348 | (11 << 27) /* 0.496249468 */,
221 /* 181 */ 0x07ffb554 | (11 << 27) /* 0.499928790 */,
222 /* 182 */ 0x0407673f | (12 << 27) /* 0.251807447 */,
223 /* 183 */ 0x040ef75e | (12 << 27) /* 0.253653877 */,
224 /* 184 */ 0x04168b05 | (12 << 27) /* 0.255503674 */,
225 /* 185 */ 0x041e2230 | (12 << 27) /* 0.257356825 */,
226 /* 186 */ 0x0425bcdd | (12 << 27) /* 0.259213318 */,
227 /* 187 */ 0x042d5b07 | (12 << 27) /* 0.261073141 */,
228 /* 188 */ 0x0434fcad | (12 << 27) /* 0.262936282 */,
229 /* 189 */ 0x043ca1c9 | (12 << 27) /* 0.264802730 */,
230 /* 190 */ 0x04444a5a | (12 << 27) /* 0.266672472 */,
231 /* 191 */ 0x044bf65d | (12 << 27) /* 0.268545497 */,
232
233 /* 192 */ 0x0453a5cd | (12 << 27) /* 0.270421794 */,
234 /* 193 */ 0x045b58a9 | (12 << 27) /* 0.272301352 */,
235 /* 194 */ 0x04630eed | (12 << 27) /* 0.274184158 */,
236 /* 195 */ 0x046ac896 | (12 << 27) /* 0.276070203 */,
237 /* 196 */ 0x047285a2 | (12 << 27) /* 0.277959474 */,
238 /* 197 */ 0x047a460c | (12 << 27) /* 0.279851960 */,
239 /* 198 */ 0x048209d3 | (12 << 27) /* 0.281747652 */,
240 /* 199 */ 0x0489d0f4 | (12 << 27) /* 0.283646538 */,
241 /* 200 */ 0x04919b6a | (12 << 27) /* 0.285548607 */,
242 /* 201 */ 0x04996935 | (12 << 27) /* 0.287453849 */,
243 /* 202 */ 0x04a13a50 | (12 << 27) /* 0.289362253 */,
244 /* 203 */ 0x04a90eba | (12 << 27) /* 0.291273810 */,
245 /* 204 */ 0x04b0e66e | (12 << 27) /* 0.293188507 */,
246 /* 205 */ 0x04b8c16c | (12 << 27) /* 0.295106336 */,
247 /* 206 */ 0x04c09faf | (12 << 27) /* 0.297027285 */,
248 /* 207 */ 0x04c88135 | (12 << 27) /* 0.298951346 */,
249
250 /* 208 */ 0x04d065fb | (12 << 27) /* 0.300878507 */,
251 /* 209 */ 0x04d84dff | (12 << 27) /* 0.302808759 */,
252 /* 210 */ 0x04e0393e | (12 << 27) /* 0.304742092 */,
253 /* 211 */ 0x04e827b6 | (12 << 27) /* 0.306678497 */,
254 /* 212 */ 0x04f01963 | (12 << 27) /* 0.308617963 */,
255 /* 213 */ 0x04f80e44 | (12 << 27) /* 0.310560480 */,
256 /* 214 */ 0x05000655 | (12 << 27) /* 0.312506041 */,
257 /* 215 */ 0x05080195 | (12 << 27) /* 0.314454634 */,
258 /* 216 */ 0x05100000 | (12 << 27) /* 0.316406250 */,
259 /* 217 */ 0x05180194 | (12 << 27) /* 0.318360880 */,
260 /* 218 */ 0x0520064f | (12 << 27) /* 0.320318516 */,
261 /* 219 */ 0x05280e2d | (12 << 27) /* 0.322279147 */,
262 /* 220 */ 0x0530192e | (12 << 27) /* 0.324242764 */,
263 /* 221 */ 0x0538274e | (12 << 27) /* 0.326209359 */,
264 /* 222 */ 0x0540388a | (12 << 27) /* 0.328178922 */,
265 /* 223 */ 0x05484ce2 | (12 << 27) /* 0.330151445 */,
266
267 /* 224 */ 0x05506451 | (12 << 27) /* 0.332126919 */,
268 /* 225 */ 0x05587ed5 | (12 << 27) /* 0.334105334 */,
269 /* 226 */ 0x05609c6e | (12 << 27) /* 0.336086683 */,
270 /* 227 */ 0x0568bd17 | (12 << 27) /* 0.338070956 */,
271 /* 228 */ 0x0570e0cf | (12 << 27) /* 0.340058145 */,
272 /* 229 */ 0x05790793 | (12 << 27) /* 0.342048241 */,
273 /* 230 */ 0x05813162 | (12 << 27) /* 0.344041237 */,
274 /* 231 */ 0x05895e39 | (12 << 27) /* 0.346037122 */,
275 /* 232 */ 0x05918e15 | (12 << 27) /* 0.348035890 */,
276 /* 233 */ 0x0599c0f4 | (12 << 27) /* 0.350037532 */,
277 /* 234 */ 0x05a1f6d5 | (12 << 27) /* 0.352042040 */,
278 /* 235 */ 0x05aa2fb5 | (12 << 27) /* 0.354049405 */,
279 /* 236 */ 0x05b26b92 | (12 << 27) /* 0.356059619 */,
280 /* 237 */ 0x05baaa69 | (12 << 27) /* 0.358072674 */,
281 /* 238 */ 0x05c2ec39 | (12 << 27) /* 0.360088563 */,
282 /* 239 */ 0x05cb3100 | (12 << 27) /* 0.362107278 */,
283
284 /* 240 */ 0x05d378bb | (12 << 27) /* 0.364128809 */,
285 /* 241 */ 0x05dbc368 | (12 << 27) /* 0.366153151 */,
286 /* 242 */ 0x05e41105 | (12 << 27) /* 0.368180294 */,
287 /* 243 */ 0x05ec6190 | (12 << 27) /* 0.370210231 */,
288 /* 244 */ 0x05f4b507 | (12 << 27) /* 0.372242955 */,
289 /* 245 */ 0x05fd0b68 | (12 << 27) /* 0.374278458 */,
290 /* 246 */ 0x060564b1 | (12 << 27) /* 0.376316732 */,
291 /* 247 */ 0x060dc0e0 | (12 << 27) /* 0.378357769 */,
292 /* 248 */ 0x06161ff3 | (12 << 27) /* 0.380401563 */,
293 /* 249 */ 0x061e81e8 | (12 << 27) /* 0.382448106 */,
294 /* 250 */ 0x0626e6bc | (12 << 27) /* 0.384497391 */,
295 /* 251 */ 0x062f4e6f | (12 << 27) /* 0.386549409 */,
296 /* 252 */ 0x0637b8fd | (12 << 27) /* 0.388604155 */,
297 /* 253 */ 0x06402666 | (12 << 27) /* 0.390661620 */,
298 /* 254 */ 0x064896a7 | (12 << 27) /* 0.392721798 */,
299 /* 255 */ 0x065109be | (12 << 27) /* 0.394784681 */,
300
301 /* 256 */ 0x06597fa9 | (12 << 27) /* 0.396850263 */,
302 /* 257 */ 0x0661f867 | (12 << 27) /* 0.398918536 */,
303 /* 258 */ 0x066a73f5 | (12 << 27) /* 0.400989493 */,
304 /* 259 */ 0x0672f252 | (12 << 27) /* 0.403063128 */,
305 /* 260 */ 0x067b737c | (12 << 27) /* 0.405139433 */,
306 /* 261 */ 0x0683f771 | (12 << 27) /* 0.407218402 */,
307 /* 262 */ 0x068c7e2f | (12 << 27) /* 0.409300027 */,
308 /* 263 */ 0x069507b5 | (12 << 27) /* 0.411384303 */,
309 /* 264 */ 0x069d9400 | (12 << 27) /* 0.413471222 */,
310 /* 265 */ 0x06a6230f | (12 << 27) /* 0.415560778 */,
311 /* 266 */ 0x06aeb4e0 | (12 << 27) /* 0.417652964 */,
312 /* 267 */ 0x06b74971 | (12 << 27) /* 0.419747773 */,
313 /* 268 */ 0x06bfe0c0 | (12 << 27) /* 0.421845199 */,
314 /* 269 */ 0x06c87acc | (12 << 27) /* 0.423945235 */,
315 /* 270 */ 0x06d11794 | (12 << 27) /* 0.426047876 */,
316 /* 271 */ 0x06d9b714 | (12 << 27) /* 0.428153114 */,
317
318 /* 272 */ 0x06e2594c | (12 << 27) /* 0.430260942 */,
319 /* 273 */ 0x06eafe3a | (12 << 27) /* 0.432371356 */,
320 /* 274 */ 0x06f3a5dc | (12 << 27) /* 0.434484348 */,
321 /* 275 */ 0x06fc5030 | (12 << 27) /* 0.436599912 */,
322 /* 276 */ 0x0704fd35 | (12 << 27) /* 0.438718042 */,
323 /* 277 */ 0x070dacea | (12 << 27) /* 0.440838732 */,
324 /* 278 */ 0x07165f4b | (12 << 27) /* 0.442961975 */,
325 /* 279 */ 0x071f1459 | (12 << 27) /* 0.445087765 */,
326 /* 280 */ 0x0727cc11 | (12 << 27) /* 0.447216097 */,
327 /* 281 */ 0x07308671 | (12 << 27) /* 0.449346964 */,
328 /* 282 */ 0x07394378 | (12 << 27) /* 0.451480360 */,
329 /* 283 */ 0x07420325 | (12 << 27) /* 0.453616280 */,
330 /* 284 */ 0x074ac575 | (12 << 27) /* 0.455754717 */,
331 /* 285 */ 0x07538a67 | (12 << 27) /* 0.457895665 */,
332 /* 286 */ 0x075c51fa | (12 << 27) /* 0.460039119 */,
333 /* 287 */ 0x07651c2c | (12 << 27) /* 0.462185072 */,
334
335 /* 288 */ 0x076de8fc | (12 << 27) /* 0.464333519 */,
336 /* 289 */ 0x0776b867 | (12 << 27) /* 0.466484455 */,
337 /* 290 */ 0x077f8a6d | (12 << 27) /* 0.468637872 */,
338 /* 291 */ 0x07885f0b | (12 << 27) /* 0.470793767 */,
339 /* 292 */ 0x07913641 | (12 << 27) /* 0.472952132 */,
340 /* 293 */ 0x079a100c | (12 << 27) /* 0.475112962 */,
341 /* 294 */ 0x07a2ec6c | (12 << 27) /* 0.477276252 */,
342 /* 295 */ 0x07abcb5f | (12 << 27) /* 0.479441997 */,
343 /* 296 */ 0x07b4ace3 | (12 << 27) /* 0.481610189 */,
344 /* 297 */ 0x07bd90f6 | (12 << 27) /* 0.483780825 */,
345 /* 298 */ 0x07c67798 | (12 << 27) /* 0.485953899 */,
346 /* 299 */ 0x07cf60c7 | (12 << 27) /* 0.488129404 */,
347 /* 300 */ 0x07d84c81 | (12 << 27) /* 0.490307336 */,
348 /* 301 */ 0x07e13ac5 | (12 << 27) /* 0.492487690 */,
349 /* 302 */ 0x07ea2b92 | (12 << 27) /* 0.494670459 */,
350 /* 303 */ 0x07f31ee6 | (12 << 27) /* 0.496855639 */,
351
352 /* 304 */ 0x07fc14bf | (12 << 27) /* 0.499043224 */,
353 /* 305 */ 0x0402868e | (13 << 27) /* 0.250616605 */,
354 /* 306 */ 0x040703ff | (13 << 27) /* 0.251712795 */,
355 /* 307 */ 0x040b82b0 | (13 << 27) /* 0.252810180 */,
356 /* 308 */ 0x041002a1 | (13 << 27) /* 0.253908756 */,
357 /* 309 */ 0x041483d1 | (13 << 27) /* 0.255008523 */,
358 /* 310 */ 0x04190640 | (13 << 27) /* 0.256109476 */,
359 /* 311 */ 0x041d89ed | (13 << 27) /* 0.257211614 */,
360 /* 312 */ 0x04220ed7 | (13 << 27) /* 0.258314934 */,
361 /* 313 */ 0x042694fe | (13 << 27) /* 0.259419433 */,
362 /* 314 */ 0x042b1c60 | (13 << 27) /* 0.260525110 */,
363 /* 315 */ 0x042fa4fe | (13 << 27) /* 0.261631960 */,
364 /* 316 */ 0x04342ed7 | (13 << 27) /* 0.262739982 */,
365 /* 317 */ 0x0438b9e9 | (13 << 27) /* 0.263849174 */,
366 /* 318 */ 0x043d4635 | (13 << 27) /* 0.264959533 */,
367 /* 319 */ 0x0441d3b9 | (13 << 27) /* 0.266071056 */,
368
369 /* 320 */ 0x04466275 | (13 << 27) /* 0.267183742 */,
370 /* 321 */ 0x044af269 | (13 << 27) /* 0.268297587 */,
371 /* 322 */ 0x044f8393 | (13 << 27) /* 0.269412589 */,
372 /* 323 */ 0x045415f3 | (13 << 27) /* 0.270528746 */,
373 /* 324 */ 0x0458a989 | (13 << 27) /* 0.271646056 */,
374 /* 325 */ 0x045d3e53 | (13 << 27) /* 0.272764515 */,
375 /* 326 */ 0x0461d451 | (13 << 27) /* 0.273884123 */,
376 /* 327 */ 0x04666b83 | (13 << 27) /* 0.275004875 */,
377 /* 328 */ 0x046b03e7 | (13 << 27) /* 0.276126771 */,
378 /* 329 */ 0x046f9d7e | (13 << 27) /* 0.277249808 */,
379 /* 330 */ 0x04743847 | (13 << 27) /* 0.278373983 */,
380 /* 331 */ 0x0478d440 | (13 << 27) /* 0.279499294 */,
381 /* 332 */ 0x047d716a | (13 << 27) /* 0.280625739 */,
382 /* 333 */ 0x04820fc3 | (13 << 27) /* 0.281753315 */,
383 /* 334 */ 0x0486af4c | (13 << 27) /* 0.282882021 */,
384 /* 335 */ 0x048b5003 | (13 << 27) /* 0.284011853 */,
385
386 /* 336 */ 0x048ff1e8 | (13 << 27) /* 0.285142811 */,
387 /* 337 */ 0x049494fb | (13 << 27) /* 0.286274891 */,
388 /* 338 */ 0x0499393a | (13 << 27) /* 0.287408091 */,
389 /* 339 */ 0x049ddea5 | (13 << 27) /* 0.288542409 */,
390 /* 340 */ 0x04a2853c | (13 << 27) /* 0.289677844 */,
391 /* 341 */ 0x04a72cfe | (13 << 27) /* 0.290814392 */,
392 /* 342 */ 0x04abd5ea | (13 << 27) /* 0.291952051 */,
393 /* 343 */ 0x04b08000 | (13 << 27) /* 0.293090820 */,
394 /* 344 */ 0x04b52b3f | (13 << 27) /* 0.294230696 */,
395 /* 345 */ 0x04b9d7a7 | (13 << 27) /* 0.295371678 */,
396 /* 346 */ 0x04be8537 | (13 << 27) /* 0.296513762 */,
397 /* 347 */ 0x04c333ee | (13 << 27) /* 0.297656947 */,
398 /* 348 */ 0x04c7e3cc | (13 << 27) /* 0.298801231 */,
399 /* 349 */ 0x04cc94d1 | (13 << 27) /* 0.299946611 */,
400 /* 350 */ 0x04d146fb | (13 << 27) /* 0.301093085 */,
401 /* 351 */ 0x04d5fa4b | (13 << 27) /* 0.302240653 */,
402
403 /* 352 */ 0x04daaec0 | (13 << 27) /* 0.303389310 */,
404 /* 353 */ 0x04df6458 | (13 << 27) /* 0.304539056 */,
405 /* 354 */ 0x04e41b14 | (13 << 27) /* 0.305689888 */,
406 /* 355 */ 0x04e8d2f3 | (13 << 27) /* 0.306841804 */,
407 /* 356 */ 0x04ed8bf5 | (13 << 27) /* 0.307994802 */,
408 /* 357 */ 0x04f24618 | (13 << 27) /* 0.309148880 */,
409 /* 358 */ 0x04f7015d | (13 << 27) /* 0.310304037 */,
410 /* 359 */ 0x04fbbdc3 | (13 << 27) /* 0.311460269 */,
411 /* 360 */ 0x05007b49 | (13 << 27) /* 0.312617576 */,
412 /* 361 */ 0x050539ef | (13 << 27) /* 0.313775954 */,
413 /* 362 */ 0x0509f9b4 | (13 << 27) /* 0.314935403 */,
414 /* 363 */ 0x050eba98 | (13 << 27) /* 0.316095920 */,
415 /* 364 */ 0x05137c9a | (13 << 27) /* 0.317257503 */,
416 /* 365 */ 0x05183fba | (13 << 27) /* 0.318420150 */,
417 /* 366 */ 0x051d03f7 | (13 << 27) /* 0.319583859 */,
418 /* 367 */ 0x0521c950 | (13 << 27) /* 0.320748629 */,
419
420 /* 368 */ 0x05268fc6 | (13 << 27) /* 0.321914457 */,
421 /* 369 */ 0x052b5757 | (13 << 27) /* 0.323081342 */,
422 /* 370 */ 0x05302003 | (13 << 27) /* 0.324249281 */,
423 /* 371 */ 0x0534e9ca | (13 << 27) /* 0.325418273 */,
424 /* 372 */ 0x0539b4ab | (13 << 27) /* 0.326588316 */,
425 /* 373 */ 0x053e80a6 | (13 << 27) /* 0.327759407 */,
426 /* 374 */ 0x05434db9 | (13 << 27) /* 0.328931546 */,
427 /* 375 */ 0x05481be5 | (13 << 27) /* 0.330104730 */,
428 /* 376 */ 0x054ceb2a | (13 << 27) /* 0.331278957 */,
429 /* 377 */ 0x0551bb85 | (13 << 27) /* 0.332454225 */,
430 /* 378 */ 0x05568cf8 | (13 << 27) /* 0.333630533 */,
431 /* 379 */ 0x055b5f81 | (13 << 27) /* 0.334807879 */,
432 /* 380 */ 0x05603321 | (13 << 27) /* 0.335986261 */,
433 /* 381 */ 0x056507d6 | (13 << 27) /* 0.337165677 */,
434 /* 382 */ 0x0569dda0 | (13 << 27) /* 0.338346125 */,
435 /* 383 */ 0x056eb47f | (13 << 27) /* 0.339527604 */,
436
437 /* 384 */ 0x05738c72 | (13 << 27) /* 0.340710111 */,
438 /* 385 */ 0x05786578 | (13 << 27) /* 0.341893646 */,
439 /* 386 */ 0x057d3f92 | (13 << 27) /* 0.343078205 */,
440 /* 387 */ 0x05821abf | (13 << 27) /* 0.344263788 */,
441 /* 388 */ 0x0586f6fd | (13 << 27) /* 0.345450393 */,
442 /* 389 */ 0x058bd44e | (13 << 27) /* 0.346638017 */,
443 /* 390 */ 0x0590b2b0 | (13 << 27) /* 0.347826659 */,
444 /* 391 */ 0x05959222 | (13 << 27) /* 0.349016318 */,
445 /* 392 */ 0x059a72a5 | (13 << 27) /* 0.350206992 */,
446 /* 393 */ 0x059f5438 | (13 << 27) /* 0.351398678 */,
447 /* 394 */ 0x05a436da | (13 << 27) /* 0.352591376 */,
448 /* 395 */ 0x05a91a8c | (13 << 27) /* 0.353785083 */,
449 /* 396 */ 0x05adff4c | (13 << 27) /* 0.354979798 */,
450 /* 397 */ 0x05b2e51a | (13 << 27) /* 0.356175519 */,
451 /* 398 */ 0x05b7cbf5 | (13 << 27) /* 0.357372244 */,
452 /* 399 */ 0x05bcb3de | (13 << 27) /* 0.358569972 */,
453
454 /* 400 */ 0x05c19cd3 | (13 << 27) /* 0.359768701 */,
455 /* 401 */ 0x05c686d5 | (13 << 27) /* 0.360968429 */,
456 /* 402 */ 0x05cb71e2 | (13 << 27) /* 0.362169156 */,
457 /* 403 */ 0x05d05dfb | (13 << 27) /* 0.363370878 */,
458 /* 404 */ 0x05d54b1f | (13 << 27) /* 0.364573594 */,
459 /* 405 */ 0x05da394d | (13 << 27) /* 0.365777304 */,
460 /* 406 */ 0x05df2885 | (13 << 27) /* 0.366982004 */,
461 /* 407 */ 0x05e418c7 | (13 << 27) /* 0.368187694 */,
462 /* 408 */ 0x05e90a12 | (13 << 27) /* 0.369394372 */,
463 /* 409 */ 0x05edfc66 | (13 << 27) /* 0.370602036 */,
464 /* 410 */ 0x05f2efc2 | (13 << 27) /* 0.371810684 */,
465 /* 411 */ 0x05f7e426 | (13 << 27) /* 0.373020316 */,
466 /* 412 */ 0x05fcd992 | (13 << 27) /* 0.374230929 */,
467 /* 413 */ 0x0601d004 | (13 << 27) /* 0.375442522 */,
468 /* 414 */ 0x0606c77d | (13 << 27) /* 0.376655093 */,
469 /* 415 */ 0x060bbffd | (13 << 27) /* 0.377868641 */,
470
471 /* 416 */ 0x0610b982 | (13 << 27) /* 0.379083164 */,
472 /* 417 */ 0x0615b40c | (13 << 27) /* 0.380298661 */,
473 /* 418 */ 0x061aaf9c | (13 << 27) /* 0.381515130 */,
474 /* 419 */ 0x061fac2f | (13 << 27) /* 0.382732569 */,
475 /* 420 */ 0x0624a9c7 | (13 << 27) /* 0.383950977 */,
476 /* 421 */ 0x0629a863 | (13 << 27) /* 0.385170352 */,
477 /* 422 */ 0x062ea802 | (13 << 27) /* 0.386390694 */,
478 /* 423 */ 0x0633a8a3 | (13 << 27) /* 0.387611999 */,
479 /* 424 */ 0x0638aa48 | (13 << 27) /* 0.388834268 */,
480 /* 425 */ 0x063dacee | (13 << 27) /* 0.390057497 */,
481 /* 426 */ 0x0642b096 | (13 << 27) /* 0.391281687 */,
482 /* 427 */ 0x0647b53f | (13 << 27) /* 0.392506834 */,
483 /* 428 */ 0x064cbae9 | (13 << 27) /* 0.393732939 */,
484 /* 429 */ 0x0651c193 | (13 << 27) /* 0.394959999 */,
485 /* 430 */ 0x0656c93d | (13 << 27) /* 0.396188012 */,
486 /* 431 */ 0x065bd1e7 | (13 << 27) /* 0.397416978 */,
487
488 /* 432 */ 0x0660db91 | (13 << 27) /* 0.398646895 */,
489 /* 433 */ 0x0665e639 | (13 << 27) /* 0.399877761 */,
490 /* 434 */ 0x066af1df | (13 << 27) /* 0.401109575 */,
491 /* 435 */ 0x066ffe84 | (13 << 27) /* 0.402342335 */,
492 /* 436 */ 0x06750c26 | (13 << 27) /* 0.403576041 */,
493 /* 437 */ 0x067a1ac6 | (13 << 27) /* 0.404810690 */,
494 /* 438 */ 0x067f2a62 | (13 << 27) /* 0.406046281 */,
495 /* 439 */ 0x06843afb | (13 << 27) /* 0.407282813 */,
496 /* 440 */ 0x06894c90 | (13 << 27) /* 0.408520284 */,
497 /* 441 */ 0x068e5f21 | (13 << 27) /* 0.409758693 */,
498 /* 442 */ 0x069372ae | (13 << 27) /* 0.410998038 */,
499 /* 443 */ 0x06988735 | (13 << 27) /* 0.412238319 */,
500 /* 444 */ 0x069d9cb7 | (13 << 27) /* 0.413479532 */,
501 /* 445 */ 0x06a2b333 | (13 << 27) /* 0.414721679 */,
502 /* 446 */ 0x06a7caa9 | (13 << 27) /* 0.415964756 */,
503 /* 447 */ 0x06ace318 | (13 << 27) /* 0.417208762 */,
504
505 /* 448 */ 0x06b1fc81 | (13 << 27) /* 0.418453696 */,
506 /* 449 */ 0x06b716e2 | (13 << 27) /* 0.419699557 */,
507 /* 450 */ 0x06bc323b | (13 << 27) /* 0.420946343 */,
508 /* 451 */ 0x06c14e8d | (13 << 27) /* 0.422194054 */,
509 /* 452 */ 0x06c66bd6 | (13 << 27) /* 0.423442686 */,
510 /* 453 */ 0x06cb8a17 | (13 << 27) /* 0.424692240 */,
511 /* 454 */ 0x06d0a94e | (13 << 27) /* 0.425942714 */,
512 /* 455 */ 0x06d5c97c | (13 << 27) /* 0.427194106 */,
513 /* 456 */ 0x06daeaa1 | (13 << 27) /* 0.428446415 */,
514 /* 457 */ 0x06e00cbb | (13 << 27) /* 0.429699640 */,
515 /* 458 */ 0x06e52fca | (13 << 27) /* 0.430953779 */,
516 /* 459 */ 0x06ea53cf | (13 << 27) /* 0.432208832 */,
517 /* 460 */ 0x06ef78c8 | (13 << 27) /* 0.433464796 */,
518 /* 461 */ 0x06f49eb6 | (13 << 27) /* 0.434721671 */,
519 /* 462 */ 0x06f9c597 | (13 << 27) /* 0.435979455 */,
520 /* 463 */ 0x06feed6d | (13 << 27) /* 0.437238146 */,
521
522 /* 464 */ 0x07041636 | (13 << 27) /* 0.438497744 */,
523 /* 465 */ 0x07093ff2 | (13 << 27) /* 0.439758248 */,
524 /* 466 */ 0x070e6aa0 | (13 << 27) /* 0.441019655 */,
525 /* 467 */ 0x07139641 | (13 << 27) /* 0.442281965 */,
526 /* 468 */ 0x0718c2d3 | (13 << 27) /* 0.443545176 */,
527 /* 469 */ 0x071df058 | (13 << 27) /* 0.444809288 */,
528 /* 470 */ 0x07231ecd | (13 << 27) /* 0.446074298 */,
529 /* 471 */ 0x07284e34 | (13 << 27) /* 0.447340205 */,
530 /* 472 */ 0x072d7e8b | (13 << 27) /* 0.448607009 */,
531 /* 473 */ 0x0732afd2 | (13 << 27) /* 0.449874708 */,
532 /* 474 */ 0x0737e209 | (13 << 27) /* 0.451143300 */,
533 /* 475 */ 0x073d1530 | (13 << 27) /* 0.452412785 */,
534 /* 476 */ 0x07424946 | (13 << 27) /* 0.453683161 */,
535 /* 477 */ 0x07477e4b | (13 << 27) /* 0.454954427 */,
536 /* 478 */ 0x074cb43e | (13 << 27) /* 0.456226581 */,
537 /* 479 */ 0x0751eb20 | (13 << 27) /* 0.457499623 */,
538
539 /* 480 */ 0x075722ef | (13 << 27) /* 0.458773552 */,
540 /* 481 */ 0x075c5bac | (13 << 27) /* 0.460048365 */,
541 /* 482 */ 0x07619557 | (13 << 27) /* 0.461324062 */,
542 /* 483 */ 0x0766cfee | (13 << 27) /* 0.462600642 */,
543 /* 484 */ 0x076c0b72 | (13 << 27) /* 0.463878102 */,
544 /* 485 */ 0x077147e2 | (13 << 27) /* 0.465156443 */,
545 /* 486 */ 0x0776853e | (13 << 27) /* 0.466435663 */,
546 /* 487 */ 0x077bc385 | (13 << 27) /* 0.467715761 */,
547 /* 488 */ 0x078102b8 | (13 << 27) /* 0.468996735 */,
548 /* 489 */ 0x078642d6 | (13 << 27) /* 0.470278584 */,
549 /* 490 */ 0x078b83de | (13 << 27) /* 0.471561307 */,
550 /* 491 */ 0x0790c5d1 | (13 << 27) /* 0.472844904 */,
551 /* 492 */ 0x079608ae | (13 << 27) /* 0.474129372 */,
552 /* 493 */ 0x079b4c74 | (13 << 27) /* 0.475414710 */,
553 /* 494 */ 0x07a09124 | (13 << 27) /* 0.476700918 */,
554 /* 495 */ 0x07a5d6bd | (13 << 27) /* 0.477987994 */,
555
556 /* 496 */ 0x07ab1d3e | (13 << 27) /* 0.479275937 */,
557 /* 497 */ 0x07b064a8 | (13 << 27) /* 0.480564746 */,
558 /* 498 */ 0x07b5acfb | (13 << 27) /* 0.481854420 */,
559 /* 499 */ 0x07baf635 | (13 << 27) /* 0.483144957 */,
560 /* 500 */ 0x07c04056 | (13 << 27) /* 0.484436356 */,
561 /* 501 */ 0x07c58b5f | (13 << 27) /* 0.485728617 */,
562 /* 502 */ 0x07cad74e | (13 << 27) /* 0.487021738 */,
563 /* 503 */ 0x07d02424 | (13 << 27) /* 0.488315717 */,
564 /* 504 */ 0x07d571e0 | (13 << 27) /* 0.489610555 */,
565 /* 505 */ 0x07dac083 | (13 << 27) /* 0.490906249 */,
566 /* 506 */ 0x07e0100a | (13 << 27) /* 0.492202799 */,
567 /* 507 */ 0x07e56078 | (13 << 27) /* 0.493500203 */,
568 /* 508 */ 0x07eab1ca | (13 << 27) /* 0.494798460 */,
569 /* 509 */ 0x07f00401 | (13 << 27) /* 0.496097570 */,
570 /* 510 */ 0x07f5571d | (13 << 27) /* 0.497397530 */,
571 /* 511 */ 0x07faab1c | (13 << 27) /* 0.498698341 */,
572
573 /* 512 */ 0x04000000 | (14 << 27) /* 0.250000000 */,
574 /* 513 */ 0x0402aae3 | (14 << 27) /* 0.250651254 */,
575 /* 514 */ 0x04055638 | (14 << 27) /* 0.251302930 */,
576 /* 515 */ 0x040801ff | (14 << 27) /* 0.251955030 */,
577 /* 516 */ 0x040aae37 | (14 << 27) /* 0.252607552 */,
578 /* 517 */ 0x040d5ae0 | (14 << 27) /* 0.253260495 */,
579 /* 518 */ 0x041007fa | (14 << 27) /* 0.253913860 */,
580 /* 519 */ 0x0412b586 | (14 << 27) /* 0.254567645 */,
581 /* 520 */ 0x04156381 | (14 << 27) /* 0.255221850 */,
582 /* 521 */ 0x041811ee | (14 << 27) /* 0.255876475 */,
583 /* 522 */ 0x041ac0cb | (14 << 27) /* 0.256531518 */,
584 /* 523 */ 0x041d7018 | (14 << 27) /* 0.257186980 */,
585 /* 524 */ 0x04201fd5 | (14 << 27) /* 0.257842860 */,
586 /* 525 */ 0x0422d003 | (14 << 27) /* 0.258499157 */,
587 /* 526 */ 0x042580a0 | (14 << 27) /* 0.259155872 */,
588 /* 527 */ 0x042831ad | (14 << 27) /* 0.259813002 */,
589
590 /* 528 */ 0x042ae32a | (14 << 27) /* 0.260470548 */,
591 /* 529 */ 0x042d9516 | (14 << 27) /* 0.261128510 */,
592 /* 530 */ 0x04304772 | (14 << 27) /* 0.261786886 */,
593 /* 531 */ 0x0432fa3d | (14 << 27) /* 0.262445676 */,
594 /* 532 */ 0x0435ad76 | (14 << 27) /* 0.263104880 */,
595 /* 533 */ 0x0438611f | (14 << 27) /* 0.263764497 */,
596 /* 534 */ 0x043b1536 | (14 << 27) /* 0.264424527 */,
597 /* 535 */ 0x043dc9bc | (14 << 27) /* 0.265084969 */,
598 /* 536 */ 0x04407eb1 | (14 << 27) /* 0.265745823 */,
599 /* 537 */ 0x04433414 | (14 << 27) /* 0.266407088 */,
600 /* 538 */ 0x0445e9e5 | (14 << 27) /* 0.267068763 */,
601 /* 539 */ 0x0448a024 | (14 << 27) /* 0.267730848 */,
602 /* 540 */ 0x044b56d1 | (14 << 27) /* 0.268393343 */,
603 /* 541 */ 0x044e0dec | (14 << 27) /* 0.269056248 */,
604 /* 542 */ 0x0450c575 | (14 << 27) /* 0.269719560 */,
605 /* 543 */ 0x04537d6b | (14 << 27) /* 0.270383281 */,
606
607 /* 544 */ 0x045635cf | (14 << 27) /* 0.271047409 */,
608 /* 545 */ 0x0458ee9f | (14 << 27) /* 0.271711944 */,
609 /* 546 */ 0x045ba7dd | (14 << 27) /* 0.272376886 */,
610 /* 547 */ 0x045e6188 | (14 << 27) /* 0.273042234 */,
611 /* 548 */ 0x04611ba0 | (14 << 27) /* 0.273707988 */,
612 /* 549 */ 0x0463d625 | (14 << 27) /* 0.274374147 */,
613 /* 550 */ 0x04669116 | (14 << 27) /* 0.275040710 */,
614 /* 551 */ 0x04694c74 | (14 << 27) /* 0.275707677 */,
615 /* 552 */ 0x046c083e | (14 << 27) /* 0.276375048 */,
616 /* 553 */ 0x046ec474 | (14 << 27) /* 0.277042822 */,
617 /* 554 */ 0x04718116 | (14 << 27) /* 0.277710999 */,
618 /* 555 */ 0x04743e25 | (14 << 27) /* 0.278379578 */,
619 /* 556 */ 0x0476fb9f | (14 << 27) /* 0.279048558 */,
620 /* 557 */ 0x0479b984 | (14 << 27) /* 0.279717940 */,
621 /* 558 */ 0x047c77d6 | (14 << 27) /* 0.280387722 */,
622 /* 559 */ 0x047f3693 | (14 << 27) /* 0.281057905 */,
623
624 /* 560 */ 0x0481f5bb | (14 << 27) /* 0.281728487 */,
625 /* 561 */ 0x0484b54e | (14 << 27) /* 0.282399469 */,
626 /* 562 */ 0x0487754c | (14 << 27) /* 0.283070849 */,
627 /* 563 */ 0x048a35b6 | (14 << 27) /* 0.283742628 */,
628 /* 564 */ 0x048cf68a | (14 << 27) /* 0.284414805 */,
629 /* 565 */ 0x048fb7c8 | (14 << 27) /* 0.285087379 */,
630 /* 566 */ 0x04927972 | (14 << 27) /* 0.285760350 */,
631 /* 567 */ 0x04953b85 | (14 << 27) /* 0.286433717 */,
632 /* 568 */ 0x0497fe03 | (14 << 27) /* 0.287107481 */,
633 /* 569 */ 0x049ac0eb | (14 << 27) /* 0.287781640 */,
634 /* 570 */ 0x049d843e | (14 << 27) /* 0.288456194 */,
635 /* 571 */ 0x04a047fa | (14 << 27) /* 0.289131142 */,
636 /* 572 */ 0x04a30c20 | (14 << 27) /* 0.289806485 */,
637 /* 573 */ 0x04a5d0af | (14 << 27) /* 0.290482221 */,
638 /* 574 */ 0x04a895a8 | (14 << 27) /* 0.291158351 */,
639 /* 575 */ 0x04ab5b0b | (14 << 27) /* 0.291834873 */,
640
641 /* 576 */ 0x04ae20d7 | (14 << 27) /* 0.292511788 */,
642 /* 577 */ 0x04b0e70c | (14 << 27) /* 0.293189094 */,
643 /* 578 */ 0x04b3adaa | (14 << 27) /* 0.293866792 */,
644 /* 579 */ 0x04b674b1 | (14 << 27) /* 0.294544881 */,
645 /* 580 */ 0x04b93c21 | (14 << 27) /* 0.295223360 */,
646 /* 581 */ 0x04bc03fa | (14 << 27) /* 0.295902229 */,
647 /* 582 */ 0x04becc3b | (14 << 27) /* 0.296581488 */,
648 /* 583 */ 0x04c194e4 | (14 << 27) /* 0.297261136 */,
649 /* 584 */ 0x04c45df6 | (14 << 27) /* 0.297941173 */,
650 /* 585 */ 0x04c72771 | (14 << 27) /* 0.298621598 */,
651 /* 586 */ 0x04c9f153 | (14 << 27) /* 0.299302411 */,
652 /* 587 */ 0x04ccbb9d | (14 << 27) /* 0.299983611 */,
653 /* 588 */ 0x04cf864f | (14 << 27) /* 0.300665198 */,
654 /* 589 */ 0x04d25169 | (14 << 27) /* 0.301347172 */,
655 /* 590 */ 0x04d51ceb | (14 << 27) /* 0.302029532 */,
656 /* 591 */ 0x04d7e8d4 | (14 << 27) /* 0.302712277 */,
657
658 /* 592 */ 0x04dab524 | (14 << 27) /* 0.303395408 */,
659 /* 593 */ 0x04dd81dc | (14 << 27) /* 0.304078923 */,
660 /* 594 */ 0x04e04efb | (14 << 27) /* 0.304762823 */,
661 /* 595 */ 0x04e31c81 | (14 << 27) /* 0.305447106 */,
662 /* 596 */ 0x04e5ea6e | (14 << 27) /* 0.306131773 */,
663 /* 597 */ 0x04e8b8c2 | (14 << 27) /* 0.306816823 */,
664 /* 598 */ 0x04eb877c | (14 << 27) /* 0.307502256 */,
665 /* 599 */ 0x04ee569d | (14 << 27) /* 0.308188071 */,
666 /* 600 */ 0x04f12624 | (14 << 27) /* 0.308874267 */,
667 /* 601 */ 0x04f3f612 | (14 << 27) /* 0.309560845 */,
668 /* 602 */ 0x04f6c666 | (14 << 27) /* 0.310247804 */,
669 /* 603 */ 0x04f99721 | (14 << 27) /* 0.310935143 */,
670 /* 604 */ 0x04fc6841 | (14 << 27) /* 0.311622862 */,
671 /* 605 */ 0x04ff39c7 | (14 << 27) /* 0.312310961 */,
672 /* 606 */ 0x05020bb3 | (14 << 27) /* 0.312999439 */,
673 /* 607 */ 0x0504de05 | (14 << 27) /* 0.313688296 */,
674
675 /* 608 */ 0x0507b0bc | (14 << 27) /* 0.314377532 */,
676 /* 609 */ 0x050a83d8 | (14 << 27) /* 0.315067145 */,
677 /* 610 */ 0x050d575b | (14 << 27) /* 0.315757136 */,
678 /* 611 */ 0x05102b42 | (14 << 27) /* 0.316447504 */,
679 /* 612 */ 0x0512ff8e | (14 << 27) /* 0.317138249 */,
680 /* 613 */ 0x0515d440 | (14 << 27) /* 0.317829370 */,
681 /* 614 */ 0x0518a956 | (14 << 27) /* 0.318520867 */,
682 /* 615 */ 0x051b7ed1 | (14 << 27) /* 0.319212739 */,
683 /* 616 */ 0x051e54b1 | (14 << 27) /* 0.319904987 */,
684 /* 617 */ 0x05212af5 | (14 << 27) /* 0.320597609 */,
685 /* 618 */ 0x0524019e | (14 << 27) /* 0.321290606 */,
686 /* 619 */ 0x0526d8ab | (14 << 27) /* 0.321983976 */,
687 /* 620 */ 0x0529b01d | (14 << 27) /* 0.322677720 */,
688 /* 621 */ 0x052c87f2 | (14 << 27) /* 0.323371837 */,
689 /* 622 */ 0x052f602c | (14 << 27) /* 0.324066327 */,
690 /* 623 */ 0x053238ca | (14 << 27) /* 0.324761189 */,
691
692 /* 624 */ 0x053511cb | (14 << 27) /* 0.325456423 */,
693 /* 625 */ 0x0537eb30 | (14 << 27) /* 0.326152028 */,
694 /* 626 */ 0x053ac4f9 | (14 << 27) /* 0.326848005 */,
695 /* 627 */ 0x053d9f25 | (14 << 27) /* 0.327544352 */,
696 /* 628 */ 0x054079b5 | (14 << 27) /* 0.328241070 */,
697 /* 629 */ 0x054354a8 | (14 << 27) /* 0.328938157 */,
698 /* 630 */ 0x05462ffe | (14 << 27) /* 0.329635614 */,
699 /* 631 */ 0x05490bb7 | (14 << 27) /* 0.330333440 */,
700 /* 632 */ 0x054be7d4 | (14 << 27) /* 0.331031635 */,
701 /* 633 */ 0x054ec453 | (14 << 27) /* 0.331730198 */,
702 /* 634 */ 0x0551a134 | (14 << 27) /* 0.332429129 */,
703 /* 635 */ 0x05547e79 | (14 << 27) /* 0.333128427 */,
704 /* 636 */ 0x05575c20 | (14 << 27) /* 0.333828093 */,
705 /* 637 */ 0x055a3a2a | (14 << 27) /* 0.334528126 */,
706 /* 638 */ 0x055d1896 | (14 << 27) /* 0.335228525 */,
707 /* 639 */ 0x055ff764 | (14 << 27) /* 0.335929290 */,
708
709 /* 640 */ 0x0562d694 | (14 << 27) /* 0.336630420 */,
710 /* 641 */ 0x0565b627 | (14 << 27) /* 0.337331916 */,
711 /* 642 */ 0x0568961b | (14 << 27) /* 0.338033777 */,
712 /* 643 */ 0x056b7671 | (14 << 27) /* 0.338736002 */,
713 /* 644 */ 0x056e5729 | (14 << 27) /* 0.339438592 */,
714 /* 645 */ 0x05713843 | (14 << 27) /* 0.340141545 */,
715 /* 646 */ 0x057419be | (14 << 27) /* 0.340844862 */,
716 /* 647 */ 0x0576fb9a | (14 << 27) /* 0.341548541 */,
717 /* 648 */ 0x0579ddd8 | (14 << 27) /* 0.342252584 */,
718 /* 649 */ 0x057cc077 | (14 << 27) /* 0.342956988 */,
719 /* 650 */ 0x057fa378 | (14 << 27) /* 0.343661754 */,
720 /* 651 */ 0x058286d9 | (14 << 27) /* 0.344366882 */,
721 /* 652 */ 0x05856a9b | (14 << 27) /* 0.345072371 */,
722 /* 653 */ 0x05884ebe | (14 << 27) /* 0.345778221 */,
723 /* 654 */ 0x058b3342 | (14 << 27) /* 0.346484431 */,
724 /* 655 */ 0x058e1827 | (14 << 27) /* 0.347191002 */,
725
726 /* 656 */ 0x0590fd6c | (14 << 27) /* 0.347897931 */,
727 /* 657 */ 0x0593e311 | (14 << 27) /* 0.348605221 */,
728 /* 658 */ 0x0596c917 | (14 << 27) /* 0.349312869 */,
729 /* 659 */ 0x0599af7d | (14 << 27) /* 0.350020876 */,
730 /* 660 */ 0x059c9643 | (14 << 27) /* 0.350729240 */,
731 /* 661 */ 0x059f7d6a | (14 << 27) /* 0.351437963 */,
732 /* 662 */ 0x05a264f0 | (14 << 27) /* 0.352147044 */,
733 /* 663 */ 0x05a54cd6 | (14 << 27) /* 0.352856481 */,
734 /* 664 */ 0x05a8351c | (14 << 27) /* 0.353566275 */,
735 /* 665 */ 0x05ab1dc2 | (14 << 27) /* 0.354276426 */,
736 /* 666 */ 0x05ae06c7 | (14 << 27) /* 0.354986932 */,
737 /* 667 */ 0x05b0f02b | (14 << 27) /* 0.355697795 */,
738 /* 668 */ 0x05b3d9f0 | (14 << 27) /* 0.356409012 */,
739 /* 669 */ 0x05b6c413 | (14 << 27) /* 0.357120585 */,
740 /* 670 */ 0x05b9ae95 | (14 << 27) /* 0.357832512 */,
741 /* 671 */ 0x05bc9977 | (14 << 27) /* 0.358544794 */,
742
743 /* 672 */ 0x05bf84b8 | (14 << 27) /* 0.359257429 */,
744 /* 673 */ 0x05c27057 | (14 << 27) /* 0.359970419 */,
745 /* 674 */ 0x05c55c56 | (14 << 27) /* 0.360683761 */,
746 /* 675 */ 0x05c848b3 | (14 << 27) /* 0.361397456 */,
747 /* 676 */ 0x05cb356e | (14 << 27) /* 0.362111504 */,
748 /* 677 */ 0x05ce2289 | (14 << 27) /* 0.362825904 */,
749 /* 678 */ 0x05d11001 | (14 << 27) /* 0.363540655 */,
750 /* 679 */ 0x05d3fdd8 | (14 << 27) /* 0.364255759 */,
751 /* 680 */ 0x05d6ec0e | (14 << 27) /* 0.364971213 */,
752 /* 681 */ 0x05d9daa1 | (14 << 27) /* 0.365687018 */,
753 /* 682 */ 0x05dcc993 | (14 << 27) /* 0.366403174 */,
754 /* 683 */ 0x05dfb8e2 | (14 << 27) /* 0.367119680 */,
755 /* 684 */ 0x05e2a890 | (14 << 27) /* 0.367836535 */,
756 /* 685 */ 0x05e5989b | (14 << 27) /* 0.368553740 */,
757 /* 686 */ 0x05e88904 | (14 << 27) /* 0.369271294 */,
758 /* 687 */ 0x05eb79cb | (14 << 27) /* 0.369989197 */,
759
760 /* 688 */ 0x05ee6aef | (14 << 27) /* 0.370707448 */,
761 /* 689 */ 0x05f15c70 | (14 << 27) /* 0.371426047 */,
762 /* 690 */ 0x05f44e4f | (14 << 27) /* 0.372144994 */,
763 /* 691 */ 0x05f7408b | (14 << 27) /* 0.372864289 */,
764 /* 692 */ 0x05fa3324 | (14 << 27) /* 0.373583930 */,
765 /* 693 */ 0x05fd261b | (14 << 27) /* 0.374303918 */,
766 /* 694 */ 0x0600196e | (14 << 27) /* 0.375024253 */,
767 /* 695 */ 0x06030d1e | (14 << 27) /* 0.375744934 */,
768 /* 696 */ 0x0606012b | (14 << 27) /* 0.376465960 */,
769 /* 697 */ 0x0608f595 | (14 << 27) /* 0.377187332 */,
770 /* 698 */ 0x060bea5c | (14 << 27) /* 0.377909049 */,
771 /* 699 */ 0x060edf7f | (14 << 27) /* 0.378631110 */,
772 /* 700 */ 0x0611d4fe | (14 << 27) /* 0.379353516 */,
773 /* 701 */ 0x0614cada | (14 << 27) /* 0.380076266 */,
774 /* 702 */ 0x0617c112 | (14 << 27) /* 0.380799360 */,
775 /* 703 */ 0x061ab7a6 | (14 << 27) /* 0.381522798 */,
776
777 /* 704 */ 0x061dae96 | (14 << 27) /* 0.382246578 */,
778 /* 705 */ 0x0620a5e3 | (14 << 27) /* 0.382970701 */,
779 /* 706 */ 0x06239d8b | (14 << 27) /* 0.383695167 */,
780 /* 707 */ 0x0626958f | (14 << 27) /* 0.384419975 */,
781 /* 708 */ 0x06298def | (14 << 27) /* 0.385145124 */,
782 /* 709 */ 0x062c86aa | (14 << 27) /* 0.385870615 */,
783 /* 710 */ 0x062f7fc1 | (14 << 27) /* 0.386596448 */,
784 /* 711 */ 0x06327934 | (14 << 27) /* 0.387322621 */,
785 /* 712 */ 0x06357302 | (14 << 27) /* 0.388049134 */,
786 /* 713 */ 0x06386d2b | (14 << 27) /* 0.388775988 */,
787 /* 714 */ 0x063b67b0 | (14 << 27) /* 0.389503182 */,
788 /* 715 */ 0x063e6290 | (14 << 27) /* 0.390230715 */,
789 /* 716 */ 0x06415dcb | (14 << 27) /* 0.390958588 */,
790 /* 717 */ 0x06445960 | (14 << 27) /* 0.391686799 */,
791 /* 718 */ 0x06475551 | (14 << 27) /* 0.392415349 */,
792 /* 719 */ 0x064a519c | (14 << 27) /* 0.393144238 */,
793
794 /* 720 */ 0x064d4e43 | (14 << 27) /* 0.393873464 */,
795 /* 721 */ 0x06504b44 | (14 << 27) /* 0.394603028 */,
796 /* 722 */ 0x0653489f | (14 << 27) /* 0.395332930 */,
797 /* 723 */ 0x06564655 | (14 << 27) /* 0.396063168 */,
798 /* 724 */ 0x06594465 | (14 << 27) /* 0.396793743 */,
799 /* 725 */ 0x065c42d0 | (14 << 27) /* 0.397524655 */,
800 /* 726 */ 0x065f4195 | (14 << 27) /* 0.398255903 */,
801 /* 727 */ 0x066240b4 | (14 << 27) /* 0.398987487 */,
802 /* 728 */ 0x0665402d | (14 << 27) /* 0.399719406 */,
803 /* 729 */ 0x06684000 | (14 << 27) /* 0.400451660 */,
804 /* 730 */ 0x066b402d | (14 << 27) /* 0.401184249 */,
805 /* 731 */ 0x066e40b3 | (14 << 27) /* 0.401917173 */,
806 /* 732 */ 0x06714194 | (14 << 27) /* 0.402650431 */,
807 /* 733 */ 0x067442ce | (14 << 27) /* 0.403384024 */,
808 /* 734 */ 0x06774462 | (14 << 27) /* 0.404117949 */,
809 /* 735 */ 0x067a464f | (14 << 27) /* 0.404852209 */,
810
811 /* 736 */ 0x067d4896 | (14 << 27) /* 0.405586801 */,
812 /* 737 */ 0x06804b36 | (14 << 27) /* 0.406321726 */,
813 /* 738 */ 0x06834e2f | (14 << 27) /* 0.407056983 */,
814 /* 739 */ 0x06865181 | (14 << 27) /* 0.407792573 */,
815 /* 740 */ 0x0689552c | (14 << 27) /* 0.408528495 */,
816 /* 741 */ 0x068c5931 | (14 << 27) /* 0.409264748 */,
817 /* 742 */ 0x068f5d8e | (14 << 27) /* 0.410001332 */,
818 /* 743 */ 0x06926245 | (14 << 27) /* 0.410738247 */,
819 /* 744 */ 0x06956753 | (14 << 27) /* 0.411475493 */,
820 /* 745 */ 0x06986cbb | (14 << 27) /* 0.412213070 */,
821 /* 746 */ 0x069b727b | (14 << 27) /* 0.412950976 */,
822 /* 747 */ 0x069e7894 | (14 << 27) /* 0.413689213 */,
823 /* 748 */ 0x06a17f05 | (14 << 27) /* 0.414427779 */,
824 /* 749 */ 0x06a485cf | (14 << 27) /* 0.415166674 */,
825 /* 750 */ 0x06a78cf1 | (14 << 27) /* 0.415905897 */,
826 /* 751 */ 0x06aa946b | (14 << 27) /* 0.416645450 */,
827
828 /* 752 */ 0x06ad9c3d | (14 << 27) /* 0.417385331 */,
829 /* 753 */ 0x06b0a468 | (14 << 27) /* 0.418125540 */,
830 /* 754 */ 0x06b3acea | (14 << 27) /* 0.418866076 */,
831 /* 755 */ 0x06b6b5c4 | (14 << 27) /* 0.419606940 */,
832 /* 756 */ 0x06b9bef6 | (14 << 27) /* 0.420348132 */,
833 /* 757 */ 0x06bcc880 | (14 << 27) /* 0.421089650 */,
834 /* 758 */ 0x06bfd261 | (14 << 27) /* 0.421831494 */,
835 /* 759 */ 0x06c2dc9a | (14 << 27) /* 0.422573665 */,
836 /* 760 */ 0x06c5e72b | (14 << 27) /* 0.423316162 */,
837 /* 761 */ 0x06c8f213 | (14 << 27) /* 0.424058985 */,
838 /* 762 */ 0x06cbfd52 | (14 << 27) /* 0.424802133 */,
839 /* 763 */ 0x06cf08e9 | (14 << 27) /* 0.425545607 */,
840 /* 764 */ 0x06d214d7 | (14 << 27) /* 0.426289405 */,
841 /* 765 */ 0x06d5211c | (14 << 27) /* 0.427033528 */,
842 /* 766 */ 0x06d82db8 | (14 << 27) /* 0.427777975 */,
843 /* 767 */ 0x06db3aaa | (14 << 27) /* 0.428522746 */,
844
845 /* 768 */ 0x06de47f4 | (14 << 27) /* 0.429267841 */,
846 /* 769 */ 0x06e15595 | (14 << 27) /* 0.430013259 */,
847 /* 770 */ 0x06e4638d | (14 << 27) /* 0.430759001 */,
848 /* 771 */ 0x06e771db | (14 << 27) /* 0.431505065 */,
849 /* 772 */ 0x06ea807f | (14 << 27) /* 0.432251452 */,
850 /* 773 */ 0x06ed8f7b | (14 << 27) /* 0.432998162 */,
851 /* 774 */ 0x06f09ecc | (14 << 27) /* 0.433745193 */,
852 /* 775 */ 0x06f3ae75 | (14 << 27) /* 0.434492546 */,
853 /* 776 */ 0x06f6be73 | (14 << 27) /* 0.435240221 */,
854 /* 777 */ 0x06f9cec8 | (14 << 27) /* 0.435988217 */,
855 /* 778 */ 0x06fcdf72 | (14 << 27) /* 0.436736534 */,
856 /* 779 */ 0x06fff073 | (14 << 27) /* 0.437485172 */,
857 /* 780 */ 0x070301ca | (14 << 27) /* 0.438234130 */,
858 /* 781 */ 0x07061377 | (14 << 27) /* 0.438983408 */,
859 /* 782 */ 0x0709257a | (14 << 27) /* 0.439733006 */,
860 /* 783 */ 0x070c37d2 | (14 << 27) /* 0.440482924 */,
861
862 /* 784 */ 0x070f4a80 | (14 << 27) /* 0.441233161 */,
863 /* 785 */ 0x07125d84 | (14 << 27) /* 0.441983717 */,
864 /* 786 */ 0x071570de | (14 << 27) /* 0.442734592 */,
865 /* 787 */ 0x0718848d | (14 << 27) /* 0.443485785 */,
866 /* 788 */ 0x071b9891 | (14 << 27) /* 0.444237296 */,
867 /* 789 */ 0x071eaceb | (14 << 27) /* 0.444989126 */,
868 /* 790 */ 0x0721c19a | (14 << 27) /* 0.445741273 */,
869 /* 791 */ 0x0724d69e | (14 << 27) /* 0.446493738 */,
870 /* 792 */ 0x0727ebf7 | (14 << 27) /* 0.447246519 */,
871 /* 793 */ 0x072b01a6 | (14 << 27) /* 0.447999618 */,
872 /* 794 */ 0x072e17a9 | (14 << 27) /* 0.448753033 */,
873 /* 795 */ 0x07312e01 | (14 << 27) /* 0.449506765 */,
874 /* 796 */ 0x073444ae | (14 << 27) /* 0.450260813 */,
875 /* 797 */ 0x07375bb0 | (14 << 27) /* 0.451015176 */,
876 /* 798 */ 0x073a7307 | (14 << 27) /* 0.451769856 */,
877 /* 799 */ 0x073d8ab2 | (14 << 27) /* 0.452524850 */,
878
879 /* 800 */ 0x0740a2b2 | (14 << 27) /* 0.453280160 */,
880 /* 801 */ 0x0743bb06 | (14 << 27) /* 0.454035784 */,
881 /* 802 */ 0x0746d3af | (14 << 27) /* 0.454791723 */,
882 /* 803 */ 0x0749ecac | (14 << 27) /* 0.455547976 */,
883 /* 804 */ 0x074d05fe | (14 << 27) /* 0.456304543 */,
884 /* 805 */ 0x07501fa3 | (14 << 27) /* 0.457061423 */,
885 /* 806 */ 0x0753399d | (14 << 27) /* 0.457818618 */,
886 /* 807 */ 0x075653eb | (14 << 27) /* 0.458576125 */,
887 /* 808 */ 0x07596e8d | (14 << 27) /* 0.459333946 */,
888 /* 809 */ 0x075c8983 | (14 << 27) /* 0.460092079 */,
889 /* 810 */ 0x075fa4cc | (14 << 27) /* 0.460850524 */,
890 /* 811 */ 0x0762c06a | (14 << 27) /* 0.461609282 */,
891 /* 812 */ 0x0765dc5b | (14 << 27) /* 0.462368352 */,
892 /* 813 */ 0x0768f8a0 | (14 << 27) /* 0.463127733 */,
893 /* 814 */ 0x076c1538 | (14 << 27) /* 0.463887426 */,
894 /* 815 */ 0x076f3224 | (14 << 27) /* 0.464647430 */,
895
896 /* 816 */ 0x07724f64 | (14 << 27) /* 0.465407744 */,
897 /* 817 */ 0x07756cf7 | (14 << 27) /* 0.466168370 */,
898 /* 818 */ 0x07788add | (14 << 27) /* 0.466929306 */,
899 /* 819 */ 0x077ba916 | (14 << 27) /* 0.467690552 */,
900 /* 820 */ 0x077ec7a3 | (14 << 27) /* 0.468452108 */,
901 /* 821 */ 0x0781e683 | (14 << 27) /* 0.469213973 */,
902 /* 822 */ 0x078505b5 | (14 << 27) /* 0.469976148 */,
903 /* 823 */ 0x0788253b | (14 << 27) /* 0.470738632 */,
904 /* 824 */ 0x078b4514 | (14 << 27) /* 0.471501425 */,
905 /* 825 */ 0x078e653f | (14 << 27) /* 0.472264527 */,
906 /* 826 */ 0x079185be | (14 << 27) /* 0.473027937 */,
907 /* 827 */ 0x0794a68f | (14 << 27) /* 0.473791655 */,
908 /* 828 */ 0x0797c7b2 | (14 << 27) /* 0.474555681 */,
909 /* 829 */ 0x079ae929 | (14 << 27) /* 0.475320014 */,
910 /* 830 */ 0x079e0af1 | (14 << 27) /* 0.476084655 */,
911 /* 831 */ 0x07a12d0c | (14 << 27) /* 0.476849603 */,
912
913 /* 832 */ 0x07a44f7a | (14 << 27) /* 0.477614858 */,
914 /* 833 */ 0x07a7723a | (14 << 27) /* 0.478380420 */,
915 /* 834 */ 0x07aa954c | (14 << 27) /* 0.479146288 */,
916 /* 835 */ 0x07adb8b0 | (14 << 27) /* 0.479912463 */,
917 /* 836 */ 0x07b0dc67 | (14 << 27) /* 0.480678943 */,
918 /* 837 */ 0x07b4006f | (14 << 27) /* 0.481445729 */,
919 /* 838 */ 0x07b724ca | (14 << 27) /* 0.482212820 */,
920 /* 839 */ 0x07ba4976 | (14 << 27) /* 0.482980216 */,
921 /* 840 */ 0x07bd6e75 | (14 << 27) /* 0.483747918 */,
922 /* 841 */ 0x07c093c5 | (14 << 27) /* 0.484515924 */,
923 /* 842 */ 0x07c3b967 | (14 << 27) /* 0.485284235 */,
924 /* 843 */ 0x07c6df5a | (14 << 27) /* 0.486052849 */,
925 /* 844 */ 0x07ca059f | (14 << 27) /* 0.486821768 */,
926 /* 845 */ 0x07cd2c36 | (14 << 27) /* 0.487590991 */,
927 /* 846 */ 0x07d0531e | (14 << 27) /* 0.488360517 */,
928 /* 847 */ 0x07d37a57 | (14 << 27) /* 0.489130346 */,
929
930 /* 848 */ 0x07d6a1e2 | (14 << 27) /* 0.489900479 */,
931 /* 849 */ 0x07d9c9be | (14 << 27) /* 0.490670914 */,
932 /* 850 */ 0x07dcf1ec | (14 << 27) /* 0.491441651 */,
933 /* 851 */ 0x07e01a6a | (14 << 27) /* 0.492212691 */,
934 /* 852 */ 0x07e3433a | (14 << 27) /* 0.492984033 */,
935 /* 853 */ 0x07e66c5a | (14 << 27) /* 0.493755677 */,
936 /* 854 */ 0x07e995cc | (14 << 27) /* 0.494527623 */,
937 /* 855 */ 0x07ecbf8e | (14 << 27) /* 0.495299870 */,
938 /* 856 */ 0x07efe9a1 | (14 << 27) /* 0.496072418 */,
939 /* 857 */ 0x07f31405 | (14 << 27) /* 0.496845266 */,
940 /* 858 */ 0x07f63eba | (14 << 27) /* 0.497618416 */,
941 /* 859 */ 0x07f969c0 | (14 << 27) /* 0.498391866 */,
942 /* 860 */ 0x07fc9516 | (14 << 27) /* 0.499165616 */,
943 /* 861 */ 0x07ffc0bc | (14 << 27) /* 0.499939666 */,
944 /* 862 */ 0x04017659 | (15 << 27) /* 0.250357008 */,
945 /* 863 */ 0x04030c7d | (15 << 27) /* 0.250744333 */,
946
947 /* 864 */ 0x0404a2c9 | (15 << 27) /* 0.251131807 */,
948 /* 865 */ 0x0406393d | (15 << 27) /* 0.251519431 */,
949 /* 866 */ 0x0407cfd9 | (15 << 27) /* 0.251907204 */,
950 /* 867 */ 0x0409669d | (15 << 27) /* 0.252295127 */,
951 /* 868 */ 0x040afd89 | (15 << 27) /* 0.252683198 */,
952 /* 869 */ 0x040c949e | (15 << 27) /* 0.253071419 */,
953 /* 870 */ 0x040e2bda | (15 << 27) /* 0.253459789 */,
954 /* 871 */ 0x040fc33e | (15 << 27) /* 0.253848307 */,
955 /* 872 */ 0x04115aca | (15 << 27) /* 0.254236974 */,
956 /* 873 */ 0x0412f27e | (15 << 27) /* 0.254625790 */,
957 /* 874 */ 0x04148a5a | (15 << 27) /* 0.255014755 */,
958 /* 875 */ 0x0416225d | (15 << 27) /* 0.255403867 */,
959 /* 876 */ 0x0417ba89 | (15 << 27) /* 0.255793128 */,
960 /* 877 */ 0x041952dc | (15 << 27) /* 0.256182537 */,
961 /* 878 */ 0x041aeb57 | (15 << 27) /* 0.256572095 */,
962 /* 879 */ 0x041c83fa | (15 << 27) /* 0.256961800 */,
963
964 /* 880 */ 0x041e1cc4 | (15 << 27) /* 0.257351652 */,
965 /* 881 */ 0x041fb5b6 | (15 << 27) /* 0.257741653 */,
966 /* 882 */ 0x04214ed0 | (15 << 27) /* 0.258131801 */,
967 /* 883 */ 0x0422e811 | (15 << 27) /* 0.258522097 */,
968 /* 884 */ 0x04248179 | (15 << 27) /* 0.258912540 */,
969 /* 885 */ 0x04261b0a | (15 << 27) /* 0.259303130 */,
970 /* 886 */ 0x0427b4c2 | (15 << 27) /* 0.259693868 */,
971 /* 887 */ 0x04294ea1 | (15 << 27) /* 0.260084752 */,
972 /* 888 */ 0x042ae8a7 | (15 << 27) /* 0.260475783 */,
973 /* 889 */ 0x042c82d6 | (15 << 27) /* 0.260866961 */,
974 /* 890 */ 0x042e1d2b | (15 << 27) /* 0.261258286 */,
975 /* 891 */ 0x042fb7a8 | (15 << 27) /* 0.261649758 */,
976 /* 892 */ 0x0431524c | (15 << 27) /* 0.262041376 */,
977 /* 893 */ 0x0432ed17 | (15 << 27) /* 0.262433140 */,
978 /* 894 */ 0x0434880a | (15 << 27) /* 0.262825051 */,
979 /* 895 */ 0x04362324 | (15 << 27) /* 0.263217107 */,
980
981 /* 896 */ 0x0437be65 | (15 << 27) /* 0.263609310 */,
982 /* 897 */ 0x043959cd | (15 << 27) /* 0.264001659 */,
983 /* 898 */ 0x043af55d | (15 << 27) /* 0.264394153 */,
984 /* 899 */ 0x043c9113 | (15 << 27) /* 0.264786794 */,
985 /* 900 */ 0x043e2cf1 | (15 << 27) /* 0.265179580 */,
986 /* 901 */ 0x043fc8f6 | (15 << 27) /* 0.265572511 */,
987 /* 902 */ 0x04416522 | (15 << 27) /* 0.265965588 */,
988 /* 903 */ 0x04430174 | (15 << 27) /* 0.266358810 */,
989 /* 904 */ 0x04449dee | (15 << 27) /* 0.266752177 */,
990 /* 905 */ 0x04463a8f | (15 << 27) /* 0.267145689 */,
991 /* 906 */ 0x0447d756 | (15 << 27) /* 0.267539347 */,
992 /* 907 */ 0x04497445 | (15 << 27) /* 0.267933149 */,
993 /* 908 */ 0x044b115a | (15 << 27) /* 0.268327096 */,
994 /* 909 */ 0x044cae96 | (15 << 27) /* 0.268721187 */,
995 /* 910 */ 0x044e4bf9 | (15 << 27) /* 0.269115423 */,
996 /* 911 */ 0x044fe983 | (15 << 27) /* 0.269509804 */,
997
998 /* 912 */ 0x04518733 | (15 << 27) /* 0.269904329 */,
999 /* 913 */ 0x0453250a | (15 << 27) /* 0.270298998 */,
1000 /* 914 */ 0x0454c308 | (15 << 27) /* 0.270693811 */,
1001 /* 915 */ 0x0456612d | (15 << 27) /* 0.271088768 */,
1002 /* 916 */ 0x0457ff78 | (15 << 27) /* 0.271483869 */,
1003 /* 917 */ 0x04599dea | (15 << 27) /* 0.271879114 */,
1004 /* 918 */ 0x045b3c82 | (15 << 27) /* 0.272274503 */,
1005 /* 919 */ 0x045cdb41 | (15 << 27) /* 0.272670035 */,
1006 /* 920 */ 0x045e7a26 | (15 << 27) /* 0.273065710 */,
1007 /* 921 */ 0x04601932 | (15 << 27) /* 0.273461530 */,
1008 /* 922 */ 0x0461b864 | (15 << 27) /* 0.273857492 */,
1009 /* 923 */ 0x046357bd | (15 << 27) /* 0.274253597 */,
1010 /* 924 */ 0x0464f73c | (15 << 27) /* 0.274649846 */,
1011 /* 925 */ 0x046696e2 | (15 << 27) /* 0.275046238 */,
1012 /* 926 */ 0x046836ae | (15 << 27) /* 0.275442772 */,
1013 /* 927 */ 0x0469d6a0 | (15 << 27) /* 0.275839449 */,
1014
1015 /* 928 */ 0x046b76b9 | (15 << 27) /* 0.276236269 */,
1016 /* 929 */ 0x046d16f7 | (15 << 27) /* 0.276633232 */,
1017 /* 930 */ 0x046eb75c | (15 << 27) /* 0.277030337 */,
1018 /* 931 */ 0x047057e8 | (15 << 27) /* 0.277427584 */,
1019 /* 932 */ 0x0471f899 | (15 << 27) /* 0.277824973 */,
1020 /* 933 */ 0x04739971 | (15 << 27) /* 0.278222505 */,
1021 /* 934 */ 0x04753a6f | (15 << 27) /* 0.278620179 */,
1022 /* 935 */ 0x0476db92 | (15 << 27) /* 0.279017995 */,
1023 /* 936 */ 0x04787cdc | (15 << 27) /* 0.279415952 */,
1024 /* 937 */ 0x047a1e4c | (15 << 27) /* 0.279814051 */,
1025 /* 938 */ 0x047bbfe2 | (15 << 27) /* 0.280212292 */,
1026 /* 939 */ 0x047d619e | (15 << 27) /* 0.280610675 */,
1027 /* 940 */ 0x047f0380 | (15 << 27) /* 0.281009199 */,
1028 /* 941 */ 0x0480a588 | (15 << 27) /* 0.281407864 */,
1029 /* 942 */ 0x048247b6 | (15 << 27) /* 0.281806670 */,
1030 /* 943 */ 0x0483ea0a | (15 << 27) /* 0.282205618 */,
1031
1032 /* 944 */ 0x04858c83 | (15 << 27) /* 0.282604707 */,
1033 /* 945 */ 0x04872f22 | (15 << 27) /* 0.283003936 */,
1034 /* 946 */ 0x0488d1e8 | (15 << 27) /* 0.283403307 */,
1035 /* 947 */ 0x048a74d3 | (15 << 27) /* 0.283802818 */,
1036 /* 948 */ 0x048c17e3 | (15 << 27) /* 0.284202470 */,
1037 /* 949 */ 0x048dbb1a | (15 << 27) /* 0.284602263 */,
1038 /* 950 */ 0x048f5e76 | (15 << 27) /* 0.285002195 */,
1039 /* 951 */ 0x049101f8 | (15 << 27) /* 0.285402269 */,
1040 /* 952 */ 0x0492a59f | (15 << 27) /* 0.285802482 */,
1041 /* 953 */ 0x0494496c | (15 << 27) /* 0.286202836 */,
1042 /* 954 */ 0x0495ed5f | (15 << 27) /* 0.286603329 */,
1043 /* 955 */ 0x04979177 | (15 << 27) /* 0.287003963 */,
1044 /* 956 */ 0x049935b5 | (15 << 27) /* 0.287404737 */,
1045 /* 957 */ 0x049ada19 | (15 << 27) /* 0.287805650 */,
1046 /* 958 */ 0x049c7ea1 | (15 << 27) /* 0.288206703 */,
1047 /* 959 */ 0x049e2350 | (15 << 27) /* 0.288607895 */,
1048
1049 /* 960 */ 0x049fc824 | (15 << 27) /* 0.289009227 */,
1050 /* 961 */ 0x04a16d1d | (15 << 27) /* 0.289410699 */,
1051 /* 962 */ 0x04a3123b | (15 << 27) /* 0.289812309 */,
1052 /* 963 */ 0x04a4b77f | (15 << 27) /* 0.290214059 */,
1053 /* 964 */ 0x04a65ce8 | (15 << 27) /* 0.290615948 */,
1054 /* 965 */ 0x04a80277 | (15 << 27) /* 0.291017976 */,
1055 /* 966 */ 0x04a9a82b | (15 << 27) /* 0.291420143 */,
1056 /* 967 */ 0x04ab4e04 | (15 << 27) /* 0.291822449 */,
1057 /* 968 */ 0x04acf402 | (15 << 27) /* 0.292224893 */,
1058 /* 969 */ 0x04ae9a26 | (15 << 27) /* 0.292627476 */,
1059 /* 970 */ 0x04b0406e | (15 << 27) /* 0.293030197 */,
1060 /* 971 */ 0x04b1e6dc | (15 << 27) /* 0.293433057 */,
1061 /* 972 */ 0x04b38d6f | (15 << 27) /* 0.293836055 */,
1062 /* 973 */ 0x04b53427 | (15 << 27) /* 0.294239192 */,
1063 /* 974 */ 0x04b6db05 | (15 << 27) /* 0.294642466 */,
1064 /* 975 */ 0x04b88207 | (15 << 27) /* 0.295045879 */,
1065
1066 /* 976 */ 0x04ba292e | (15 << 27) /* 0.295449429 */,
1067 /* 977 */ 0x04bbd07a | (15 << 27) /* 0.295853118 */,
1068 /* 978 */ 0x04bd77ec | (15 << 27) /* 0.296256944 */,
1069 /* 979 */ 0x04bf1f82 | (15 << 27) /* 0.296660907 */,
1070 /* 980 */ 0x04c0c73d | (15 << 27) /* 0.297065009 */,
1071 /* 981 */ 0x04c26f1d | (15 << 27) /* 0.297469248 */,
1072 /* 982 */ 0x04c41722 | (15 << 27) /* 0.297873624 */,
1073 /* 983 */ 0x04c5bf4c | (15 << 27) /* 0.298278137 */,
1074 /* 984 */ 0x04c7679a | (15 << 27) /* 0.298682788 */,
1075 /* 985 */ 0x04c9100d | (15 << 27) /* 0.299087576 */,
1076 /* 986 */ 0x04cab8a6 | (15 << 27) /* 0.299492500 */,
1077 /* 987 */ 0x04cc6163 | (15 << 27) /* 0.299897562 */,
1078 /* 988 */ 0x04ce0a44 | (15 << 27) /* 0.300302761 */,
1079 /* 989 */ 0x04cfb34b | (15 << 27) /* 0.300708096 */,
1080 /* 990 */ 0x04d15c76 | (15 << 27) /* 0.301113568 */,
1081 /* 991 */ 0x04d305c5 | (15 << 27) /* 0.301519176 */,
1082
1083 /* 992 */ 0x04d4af3a | (15 << 27) /* 0.301924921 */,
1084 /* 993 */ 0x04d658d2 | (15 << 27) /* 0.302330802 */,
1085 /* 994 */ 0x04d80290 | (15 << 27) /* 0.302736820 */,
1086 /* 995 */ 0x04d9ac72 | (15 << 27) /* 0.303142973 */,
1087 /* 996 */ 0x04db5679 | (15 << 27) /* 0.303549263 */,
1088 /* 997 */ 0x04dd00a4 | (15 << 27) /* 0.303955689 */,
1089 /* 998 */ 0x04deaaf3 | (15 << 27) /* 0.304362251 */,
1090 /* 999 */ 0x04e05567 | (15 << 27) /* 0.304768948 */,
1091 /* 1000 */ 0x04e20000 | (15 << 27) /* 0.305175781 */,
1092 /* 1001 */ 0x04e3aabd | (15 << 27) /* 0.305582750 */,
1093 /* 1002 */ 0x04e5559e | (15 << 27) /* 0.305989854 */,
1094 /* 1003 */ 0x04e700a3 | (15 << 27) /* 0.306397094 */,
1095 /* 1004 */ 0x04e8abcd | (15 << 27) /* 0.306804470 */,
1096 /* 1005 */ 0x04ea571c | (15 << 27) /* 0.307211980 */,
1097 /* 1006 */ 0x04ec028e | (15 << 27) /* 0.307619626 */,
1098 /* 1007 */ 0x04edae25 | (15 << 27) /* 0.308027406 */,
1099
1100 /* 1008 */ 0x04ef59e0 | (15 << 27) /* 0.308435322 */,
1101 /* 1009 */ 0x04f105bf | (15 << 27) /* 0.308843373 */,
1102 /* 1010 */ 0x04f2b1c3 | (15 << 27) /* 0.309251558 */,
1103 /* 1011 */ 0x04f45dea | (15 << 27) /* 0.309659879 */,
1104 /* 1012 */ 0x04f60a36 | (15 << 27) /* 0.310068333 */,
1105 /* 1013 */ 0x04f7b6a6 | (15 << 27) /* 0.310476923 */,
1106 /* 1014 */ 0x04f9633a | (15 << 27) /* 0.310885647 */,
1107 /* 1015 */ 0x04fb0ff2 | (15 << 27) /* 0.311294505 */,
1108 /* 1016 */ 0x04fcbcce | (15 << 27) /* 0.311703498 */,
1109 /* 1017 */ 0x04fe69ce | (15 << 27) /* 0.312112625 */,
1110 /* 1018 */ 0x050016f3 | (15 << 27) /* 0.312521885 */,
1111 /* 1019 */ 0x0501c43b | (15 << 27) /* 0.312931280 */,
1112 /* 1020 */ 0x050371a7 | (15 << 27) /* 0.313340809 */,
1113 /* 1021 */ 0x05051f37 | (15 << 27) /* 0.313750472 */,
1114 /* 1022 */ 0x0506cceb | (15 << 27) /* 0.314160269 */,
1115 /* 1023 */ 0x05087ac2 | (15 << 27) /* 0.314570199 */,
1116
1117 /* 1024 */ 0x050a28be | (15 << 27) /* 0.314980262 */,
1118 /* 1025 */ 0x050bd6de | (15 << 27) /* 0.315390460 */,
1119 /* 1026 */ 0x050d8521 | (15 << 27) /* 0.315800790 */,
1120 /* 1027 */ 0x050f3388 | (15 << 27) /* 0.316211255 */,
1121 /* 1028 */ 0x0510e213 | (15 << 27) /* 0.316621852 */,
1122 /* 1029 */ 0x051290c2 | (15 << 27) /* 0.317032582 */,
1123 /* 1030 */ 0x05143f94 | (15 << 27) /* 0.317443446 */,
1124 /* 1031 */ 0x0515ee8a | (15 << 27) /* 0.317854442 */,
1125 /* 1032 */ 0x05179da4 | (15 << 27) /* 0.318265572 */,
1126 /* 1033 */ 0x05194ce1 | (15 << 27) /* 0.318676834 */,
1127 /* 1034 */ 0x051afc42 | (15 << 27) /* 0.319088229 */,
1128 /* 1035 */ 0x051cabc7 | (15 << 27) /* 0.319499756 */,
1129 /* 1036 */ 0x051e5b6f | (15 << 27) /* 0.319911417 */,
1130 /* 1037 */ 0x05200b3a | (15 << 27) /* 0.320323209 */,
1131 /* 1038 */ 0x0521bb2a | (15 << 27) /* 0.320735134 */,
1132 /* 1039 */ 0x05236b3d | (15 << 27) /* 0.321147192 */,
1133
1134 /* 1040 */ 0x05251b73 | (15 << 27) /* 0.321559381 */,
1135 /* 1041 */ 0x0526cbcd | (15 << 27) /* 0.321971703 */,
1136 /* 1042 */ 0x05287c4a | (15 << 27) /* 0.322384156 */,
1137 /* 1043 */ 0x052a2cea | (15 << 27) /* 0.322796742 */,
1138 /* 1044 */ 0x052bddae | (15 << 27) /* 0.323209460 */,
1139 /* 1045 */ 0x052d8e96 | (15 << 27) /* 0.323622309 */,
1140 /* 1046 */ 0x052f3fa1 | (15 << 27) /* 0.324035290 */,
1141 /* 1047 */ 0x0530f0cf | (15 << 27) /* 0.324448403 */,
1142 /* 1048 */ 0x0532a220 | (15 << 27) /* 0.324861647 */,
1143 /* 1049 */ 0x05345395 | (15 << 27) /* 0.325275023 */,
1144 /* 1050 */ 0x0536052d | (15 << 27) /* 0.325688530 */,
1145 /* 1051 */ 0x0537b6e8 | (15 << 27) /* 0.326102168 */,
1146 /* 1052 */ 0x053968c6 | (15 << 27) /* 0.326515938 */,
1147 /* 1053 */ 0x053b1ac8 | (15 << 27) /* 0.326929839 */,
1148 /* 1054 */ 0x053ccced | (15 << 27) /* 0.327343870 */,
1149 /* 1055 */ 0x053e7f35 | (15 << 27) /* 0.327758033 */,
1150
1151 /* 1056 */ 0x054031a0 | (15 << 27) /* 0.328172327 */,
1152 /* 1057 */ 0x0541e42e | (15 << 27) /* 0.328586751 */,
1153 /* 1058 */ 0x054396df | (15 << 27) /* 0.329001306 */,
1154 /* 1059 */ 0x054549b4 | (15 << 27) /* 0.329415992 */,
1155 /* 1060 */ 0x0546fcab | (15 << 27) /* 0.329830808 */,
1156 /* 1061 */ 0x0548afc6 | (15 << 27) /* 0.330245755 */,
1157 /* 1062 */ 0x054a6303 | (15 << 27) /* 0.330660832 */,
1158 /* 1063 */ 0x054c1663 | (15 << 27) /* 0.331076039 */,
1159 /* 1064 */ 0x054dc9e7 | (15 << 27) /* 0.331491377 */,
1160 /* 1065 */ 0x054f7d8d | (15 << 27) /* 0.331906845 */,
1161 /* 1066 */ 0x05513156 | (15 << 27) /* 0.332322443 */,
1162 /* 1067 */ 0x0552e542 | (15 << 27) /* 0.332738170 */,
1163 /* 1068 */ 0x05549951 | (15 << 27) /* 0.333154028 */,
1164 /* 1069 */ 0x05564d83 | (15 << 27) /* 0.333570016 */,
1165 /* 1070 */ 0x055801d8 | (15 << 27) /* 0.333986133 */,
1166 /* 1071 */ 0x0559b64f | (15 << 27) /* 0.334402380 */,
1167
1168 /* 1072 */ 0x055b6ae9 | (15 << 27) /* 0.334818756 */,
1169 /* 1073 */ 0x055d1fa6 | (15 << 27) /* 0.335235262 */,
1170 /* 1074 */ 0x055ed486 | (15 << 27) /* 0.335651898 */,
1171 /* 1075 */ 0x05608988 | (15 << 27) /* 0.336068662 */,
1172 /* 1076 */ 0x05623ead | (15 << 27) /* 0.336485556 */,
1173 /* 1077 */ 0x0563f3f5 | (15 << 27) /* 0.336902579 */,
1174 /* 1078 */ 0x0565a960 | (15 << 27) /* 0.337319732 */,
1175 /* 1079 */ 0x05675eed | (15 << 27) /* 0.337737013 */,
1176 /* 1080 */ 0x0569149c | (15 << 27) /* 0.338154423 */,
1177 /* 1081 */ 0x056aca6f | (15 << 27) /* 0.338571962 */,
1178 /* 1082 */ 0x056c8064 | (15 << 27) /* 0.338989630 */,
1179 /* 1083 */ 0x056e367b | (15 << 27) /* 0.339407426 */,
1180 /* 1084 */ 0x056fecb5 | (15 << 27) /* 0.339825351 */,
1181 /* 1085 */ 0x0571a311 | (15 << 27) /* 0.340243405 */,
1182 /* 1086 */ 0x05735990 | (15 << 27) /* 0.340661587 */,
1183 /* 1087 */ 0x05751032 | (15 << 27) /* 0.341079898 */,
1184
1185 /* 1088 */ 0x0576c6f5 | (15 << 27) /* 0.341498336 */,
1186 /* 1089 */ 0x05787ddc | (15 << 27) /* 0.341916903 */,
1187 /* 1090 */ 0x057a34e4 | (15 << 27) /* 0.342335598 */,
1188 /* 1091 */ 0x057bec0f | (15 << 27) /* 0.342754421 */,
1189 /* 1092 */ 0x057da35d | (15 << 27) /* 0.343173373 */,
1190 /* 1093 */ 0x057f5acc | (15 << 27) /* 0.343592452 */,
1191 /* 1094 */ 0x0581125e | (15 << 27) /* 0.344011659 */,
1192 /* 1095 */ 0x0582ca12 | (15 << 27) /* 0.344430993 */,
1193 /* 1096 */ 0x058481e9 | (15 << 27) /* 0.344850455 */,
1194 /* 1097 */ 0x058639e2 | (15 << 27) /* 0.345270045 */,
1195 /* 1098 */ 0x0587f1fd | (15 << 27) /* 0.345689763 */,
1196 /* 1099 */ 0x0589aa3a | (15 << 27) /* 0.346109608 */,
1197 /* 1100 */ 0x058b629a | (15 << 27) /* 0.346529580 */,
1198 /* 1101 */ 0x058d1b1b | (15 << 27) /* 0.346949679 */,
1199 /* 1102 */ 0x058ed3bf | (15 << 27) /* 0.347369906 */,
1200 /* 1103 */ 0x05908c85 | (15 << 27) /* 0.347790260 */,
1201
1202 /* 1104 */ 0x0592456d | (15 << 27) /* 0.348210741 */,
1203 /* 1105 */ 0x0593fe77 | (15 << 27) /* 0.348631348 */,
1204 /* 1106 */ 0x0595b7a3 | (15 << 27) /* 0.349052083 */,
1205 /* 1107 */ 0x059770f1 | (15 << 27) /* 0.349472945 */,
1206 /* 1108 */ 0x05992a61 | (15 << 27) /* 0.349893933 */,
1207 /* 1109 */ 0x059ae3f3 | (15 << 27) /* 0.350315048 */,
1208 /* 1110 */ 0x059c9da8 | (15 << 27) /* 0.350736290 */,
1209 /* 1111 */ 0x059e577e | (15 << 27) /* 0.351157658 */,
1210 /* 1112 */ 0x05a01176 | (15 << 27) /* 0.351579152 */,
1211 /* 1113 */ 0x05a1cb90 | (15 << 27) /* 0.352000773 */,
1212 /* 1114 */ 0x05a385cc | (15 << 27) /* 0.352422520 */,
1213 /* 1115 */ 0x05a5402a | (15 << 27) /* 0.352844394 */,
1214 /* 1116 */ 0x05a6faa9 | (15 << 27) /* 0.353266393 */,
1215 /* 1117 */ 0x05a8b54b | (15 << 27) /* 0.353688519 */,
1216 /* 1118 */ 0x05aa700e | (15 << 27) /* 0.354110771 */,
1217 /* 1119 */ 0x05ac2af3 | (15 << 27) /* 0.354533148 */,
1218
1219 /* 1120 */ 0x05ade5fa | (15 << 27) /* 0.354955651 */,
1220 /* 1121 */ 0x05afa123 | (15 << 27) /* 0.355378281 */,
1221 /* 1122 */ 0x05b15c6d | (15 << 27) /* 0.355801035 */,
1222 /* 1123 */ 0x05b317d9 | (15 << 27) /* 0.356223916 */,
1223 /* 1124 */ 0x05b4d367 | (15 << 27) /* 0.356646922 */,
1224 /* 1125 */ 0x05b68f16 | (15 << 27) /* 0.357070053 */,
1225 /* 1126 */ 0x05b84ae7 | (15 << 27) /* 0.357493310 */,
1226 /* 1127 */ 0x05ba06da | (15 << 27) /* 0.357916692 */,
1227 /* 1128 */ 0x05bbc2ef | (15 << 27) /* 0.358340200 */,
1228 /* 1129 */ 0x05bd7f25 | (15 << 27) /* 0.358763832 */,
1229 /* 1130 */ 0x05bf3b7c | (15 << 27) /* 0.359187590 */,
1230 /* 1131 */ 0x05c0f7f5 | (15 << 27) /* 0.359611472 */,
1231 /* 1132 */ 0x05c2b490 | (15 << 27) /* 0.360035480 */,
1232 /* 1133 */ 0x05c4714c | (15 << 27) /* 0.360459613 */,
1233 /* 1134 */ 0x05c62e2a | (15 << 27) /* 0.360883870 */,
1234 /* 1135 */ 0x05c7eb29 | (15 << 27) /* 0.361308252 */,
1235
1236 /* 1136 */ 0x05c9a84a | (15 << 27) /* 0.361732758 */,
1237 /* 1137 */ 0x05cb658c | (15 << 27) /* 0.362157390 */,
1238 /* 1138 */ 0x05cd22ef | (15 << 27) /* 0.362582145 */,
1239 /* 1139 */ 0x05cee074 | (15 << 27) /* 0.363007026 */,
1240 /* 1140 */ 0x05d09e1b | (15 << 27) /* 0.363432030 */,
1241 /* 1141 */ 0x05d25be2 | (15 << 27) /* 0.363857159 */,
1242 /* 1142 */ 0x05d419cb | (15 << 27) /* 0.364282412 */,
1243 /* 1143 */ 0x05d5d7d5 | (15 << 27) /* 0.364707789 */,
1244 /* 1144 */ 0x05d79601 | (15 << 27) /* 0.365133291 */,
1245 /* 1145 */ 0x05d9544e | (15 << 27) /* 0.365558916 */,
1246 /* 1146 */ 0x05db12bc | (15 << 27) /* 0.365984665 */,
1247 /* 1147 */ 0x05dcd14c | (15 << 27) /* 0.366410538 */,
1248 /* 1148 */ 0x05de8ffc | (15 << 27) /* 0.366836535 */,
1249 /* 1149 */ 0x05e04ece | (15 << 27) /* 0.367262655 */,
1250 /* 1150 */ 0x05e20dc1 | (15 << 27) /* 0.367688900 */,
1251 /* 1151 */ 0x05e3ccd5 | (15 << 27) /* 0.368115267 */,
1252
1253 /* 1152 */ 0x05e58c0b | (15 << 27) /* 0.368541759 */,
1254 /* 1153 */ 0x05e74b61 | (15 << 27) /* 0.368968373 */,
1255 /* 1154 */ 0x05e90ad9 | (15 << 27) /* 0.369395111 */,
1256 /* 1155 */ 0x05eaca72 | (15 << 27) /* 0.369821973 */,
1257 /* 1156 */ 0x05ec8a2b | (15 << 27) /* 0.370248957 */,
1258 /* 1157 */ 0x05ee4a06 | (15 << 27) /* 0.370676065 */,
1259 /* 1158 */ 0x05f00a02 | (15 << 27) /* 0.371103295 */,
1260 /* 1159 */ 0x05f1ca1f | (15 << 27) /* 0.371530649 */,
1261 /* 1160 */ 0x05f38a5d | (15 << 27) /* 0.371958126 */,
1262 /* 1161 */ 0x05f54abc | (15 << 27) /* 0.372385725 */,
1263 /* 1162 */ 0x05f70b3c | (15 << 27) /* 0.372813448 */,
1264 /* 1163 */ 0x05f8cbdc | (15 << 27) /* 0.373241292 */,
1265 /* 1164 */ 0x05fa8c9e | (15 << 27) /* 0.373669260 */,
1266 /* 1165 */ 0x05fc4d81 | (15 << 27) /* 0.374097350 */,
1267 /* 1166 */ 0x05fe0e84 | (15 << 27) /* 0.374525563 */,
1268 /* 1167 */ 0x05ffcfa8 | (15 << 27) /* 0.374953898 */,
1269
1270 /* 1168 */ 0x060190ee | (15 << 27) /* 0.375382356 */,
1271 /* 1169 */ 0x06035254 | (15 << 27) /* 0.375810936 */,
1272 /* 1170 */ 0x060513da | (15 << 27) /* 0.376239638 */,
1273 /* 1171 */ 0x0606d582 | (15 << 27) /* 0.376668462 */,
1274 /* 1172 */ 0x0608974a | (15 << 27) /* 0.377097408 */,
1275 /* 1173 */ 0x060a5934 | (15 << 27) /* 0.377526476 */,
1276 /* 1174 */ 0x060c1b3d | (15 << 27) /* 0.377955667 */,
1277 /* 1175 */ 0x060ddd68 | (15 << 27) /* 0.378384979 */,
1278 /* 1176 */ 0x060f9fb3 | (15 << 27) /* 0.378814413 */,
1279 /* 1177 */ 0x0611621f | (15 << 27) /* 0.379243968 */,
1280 /* 1178 */ 0x061324ac | (15 << 27) /* 0.379673646 */,
1281 /* 1179 */ 0x0614e759 | (15 << 27) /* 0.380103444 */,
1282 /* 1180 */ 0x0616aa27 | (15 << 27) /* 0.380533365 */,
1283 /* 1181 */ 0x06186d16 | (15 << 27) /* 0.380963407 */,
1284 /* 1182 */ 0x061a3025 | (15 << 27) /* 0.381393570 */,
1285 /* 1183 */ 0x061bf354 | (15 << 27) /* 0.381823855 */,
1286
1287 /* 1184 */ 0x061db6a5 | (15 << 27) /* 0.382254261 */,
1288 /* 1185 */ 0x061f7a15 | (15 << 27) /* 0.382684788 */,
1289 /* 1186 */ 0x06213da7 | (15 << 27) /* 0.383115436 */,
1290 /* 1187 */ 0x06230158 | (15 << 27) /* 0.383546205 */,
1291 /* 1188 */ 0x0624c52a | (15 << 27) /* 0.383977096 */,
1292 /* 1189 */ 0x0626891d | (15 << 27) /* 0.384408107 */,
1293 /* 1190 */ 0x06284d30 | (15 << 27) /* 0.384839239 */,
1294 /* 1191 */ 0x062a1164 | (15 << 27) /* 0.385270492 */,
1295 /* 1192 */ 0x062bd5b8 | (15 << 27) /* 0.385701865 */,
1296 /* 1193 */ 0x062d9a2c | (15 << 27) /* 0.386133359 */,
1297 /* 1194 */ 0x062f5ec1 | (15 << 27) /* 0.386564974 */,
1298 /* 1195 */ 0x06312376 | (15 << 27) /* 0.386996709 */,
1299 /* 1196 */ 0x0632e84b | (15 << 27) /* 0.387428565 */,
1300 /* 1197 */ 0x0634ad41 | (15 << 27) /* 0.387860541 */,
1301 /* 1198 */ 0x06367257 | (15 << 27) /* 0.388292637 */,
1302 /* 1199 */ 0x0638378d | (15 << 27) /* 0.388724854 */,
1303
1304 /* 1200 */ 0x0639fce4 | (15 << 27) /* 0.389157191 */,
1305 /* 1201 */ 0x063bc25b | (15 << 27) /* 0.389589648 */,
1306 /* 1202 */ 0x063d87f2 | (15 << 27) /* 0.390022225 */,
1307 /* 1203 */ 0x063f4da9 | (15 << 27) /* 0.390454922 */,
1308 /* 1204 */ 0x06411380 | (15 << 27) /* 0.390887739 */,
1309 /* 1205 */ 0x0642d978 | (15 << 27) /* 0.391320675 */,
1310 /* 1206 */ 0x06449f8f | (15 << 27) /* 0.391753732 */,
1311 /* 1207 */ 0x064665c7 | (15 << 27) /* 0.392186908 */,
1312 /* 1208 */ 0x06482c1f | (15 << 27) /* 0.392620204 */,
1313 /* 1209 */ 0x0649f297 | (15 << 27) /* 0.393053619 */,
1314 /* 1210 */ 0x064bb92f | (15 << 27) /* 0.393487154 */,
1315 /* 1211 */ 0x064d7fe8 | (15 << 27) /* 0.393920808 */,
1316 /* 1212 */ 0x064f46c0 | (15 << 27) /* 0.394354582 */,
1317 /* 1213 */ 0x06510db8 | (15 << 27) /* 0.394788475 */,
1318 /* 1214 */ 0x0652d4d0 | (15 << 27) /* 0.395222488 */,
1319 /* 1215 */ 0x06549c09 | (15 << 27) /* 0.395656619 */,
1320
1321 /* 1216 */ 0x06566361 | (15 << 27) /* 0.396090870 */,
1322 /* 1217 */ 0x06582ad9 | (15 << 27) /* 0.396525239 */,
1323 /* 1218 */ 0x0659f271 | (15 << 27) /* 0.396959728 */,
1324 /* 1219 */ 0x065bba29 | (15 << 27) /* 0.397394336 */,
1325 /* 1220 */ 0x065d8201 | (15 << 27) /* 0.397829062 */,
1326 /* 1221 */ 0x065f49f9 | (15 << 27) /* 0.398263907 */,
1327 /* 1222 */ 0x06611211 | (15 << 27) /* 0.398698871 */,
1328 /* 1223 */ 0x0662da49 | (15 << 27) /* 0.399133954 */,
1329 /* 1224 */ 0x0664a2a0 | (15 << 27) /* 0.399569155 */,
1330 /* 1225 */ 0x06666b17 | (15 << 27) /* 0.400004475 */,
1331 /* 1226 */ 0x066833ae | (15 << 27) /* 0.400439913 */,
1332 /* 1227 */ 0x0669fc65 | (15 << 27) /* 0.400875470 */,
1333 /* 1228 */ 0x066bc53c | (15 << 27) /* 0.401311145 */,
1334 /* 1229 */ 0x066d8e32 | (15 << 27) /* 0.401746938 */,
1335 /* 1230 */ 0x066f5748 | (15 << 27) /* 0.402182850 */,
1336 /* 1231 */ 0x0671207e | (15 << 27) /* 0.402618879 */,
1337
1338 /* 1232 */ 0x0672e9d4 | (15 << 27) /* 0.403055027 */,
1339 /* 1233 */ 0x0674b349 | (15 << 27) /* 0.403491293 */,
1340 /* 1234 */ 0x06767cde | (15 << 27) /* 0.403927676 */,
1341 /* 1235 */ 0x06784692 | (15 << 27) /* 0.404364178 */,
1342 /* 1236 */ 0x067a1066 | (15 << 27) /* 0.404800797 */,
1343 /* 1237 */ 0x067bda5a | (15 << 27) /* 0.405237535 */,
1344 /* 1238 */ 0x067da46d | (15 << 27) /* 0.405674390 */,
1345 /* 1239 */ 0x067f6ea0 | (15 << 27) /* 0.406111362 */,
1346 /* 1240 */ 0x068138f3 | (15 << 27) /* 0.406548452 */,
1347 /* 1241 */ 0x06830365 | (15 << 27) /* 0.406985660 */,
1348 /* 1242 */ 0x0684cdf6 | (15 << 27) /* 0.407422985 */,
1349 /* 1243 */ 0x068698a8 | (15 << 27) /* 0.407860427 */,
1350 /* 1244 */ 0x06886378 | (15 << 27) /* 0.408297987 */,
1351 /* 1245 */ 0x068a2e68 | (15 << 27) /* 0.408735664 */,
1352 /* 1246 */ 0x068bf978 | (15 << 27) /* 0.409173458 */,
1353 /* 1247 */ 0x068dc4a7 | (15 << 27) /* 0.409611370 */,
1354
1355 /* 1248 */ 0x068f8ff5 | (15 << 27) /* 0.410049398 */,
1356 /* 1249 */ 0x06915b63 | (15 << 27) /* 0.410487544 */,
1357 /* 1250 */ 0x069326f0 | (15 << 27) /* 0.410925806 */,
1358 /* 1251 */ 0x0694f29c | (15 << 27) /* 0.411364185 */,
1359 /* 1252 */ 0x0696be68 | (15 << 27) /* 0.411802681 */,
1360 /* 1253 */ 0x06988a54 | (15 << 27) /* 0.412241294 */,
1361 /* 1254 */ 0x069a565e | (15 << 27) /* 0.412680024 */,
1362 /* 1255 */ 0x069c2288 | (15 << 27) /* 0.413118870 */,
1363 /* 1256 */ 0x069deed1 | (15 << 27) /* 0.413557833 */,
1364 /* 1257 */ 0x069fbb3a | (15 << 27) /* 0.413996912 */,
1365 /* 1258 */ 0x06a187c1 | (15 << 27) /* 0.414436108 */,
1366 /* 1259 */ 0x06a35468 | (15 << 27) /* 0.414875420 */,
1367 /* 1260 */ 0x06a5212f | (15 << 27) /* 0.415314849 */,
1368 /* 1261 */ 0x06a6ee14 | (15 << 27) /* 0.415754393 */,
1369 /* 1262 */ 0x06a8bb18 | (15 << 27) /* 0.416194054 */,
1370 /* 1263 */ 0x06aa883c | (15 << 27) /* 0.416633831 */,
1371
1372 /* 1264 */ 0x06ac557f | (15 << 27) /* 0.417073724 */,
1373 /* 1265 */ 0x06ae22e1 | (15 << 27) /* 0.417513734 */,
1374 /* 1266 */ 0x06aff062 | (15 << 27) /* 0.417953859 */,
1375 /* 1267 */ 0x06b1be03 | (15 << 27) /* 0.418394100 */,
1376 /* 1268 */ 0x06b38bc2 | (15 << 27) /* 0.418834457 */,
1377 /* 1269 */ 0x06b559a1 | (15 << 27) /* 0.419274929 */,
1378 /* 1270 */ 0x06b7279e | (15 << 27) /* 0.419715518 */,
1379 /* 1271 */ 0x06b8f5bb | (15 << 27) /* 0.420156222 */,
1380 /* 1272 */ 0x06bac3f6 | (15 << 27) /* 0.420597041 */,
1381 /* 1273 */ 0x06bc9251 | (15 << 27) /* 0.421037977 */,
1382 /* 1274 */ 0x06be60cb | (15 << 27) /* 0.421479027 */,
1383 /* 1275 */ 0x06c02f63 | (15 << 27) /* 0.421920193 */,
1384 /* 1276 */ 0x06c1fe1b | (15 << 27) /* 0.422361475 */,
1385 /* 1277 */ 0x06c3ccf1 | (15 << 27) /* 0.422802871 */,
1386 /* 1278 */ 0x06c59be7 | (15 << 27) /* 0.423244383 */,
1387 /* 1279 */ 0x06c76afb | (15 << 27) /* 0.423686010 */,
1388
1389 /* 1280 */ 0x06c93a2e | (15 << 27) /* 0.424127753 */,
1390 /* 1281 */ 0x06cb0981 | (15 << 27) /* 0.424569610 */,
1391 /* 1282 */ 0x06ccd8f2 | (15 << 27) /* 0.425011582 */,
1392 /* 1283 */ 0x06cea881 | (15 << 27) /* 0.425453669 */,
1393 /* 1284 */ 0x06d07830 | (15 << 27) /* 0.425895871 */,
1394 /* 1285 */ 0x06d247fe | (15 << 27) /* 0.426338188 */,
1395 /* 1286 */ 0x06d417ea | (15 << 27) /* 0.426780620 */,
1396 /* 1287 */ 0x06d5e7f5 | (15 << 27) /* 0.427223166 */,
1397 /* 1288 */ 0x06d7b81f | (15 << 27) /* 0.427665827 */,
1398 /* 1289 */ 0x06d98868 | (15 << 27) /* 0.428108603 */,
1399 /* 1290 */ 0x06db58cf | (15 << 27) /* 0.428551493 */,
1400 /* 1291 */ 0x06dd2955 | (15 << 27) /* 0.428994497 */,
1401 /* 1292 */ 0x06def9fa | (15 << 27) /* 0.429437616 */,
1402 /* 1293 */ 0x06e0cabe | (15 << 27) /* 0.429880849 */,
1403 /* 1294 */ 0x06e29ba0 | (15 << 27) /* 0.430324197 */,
1404 /* 1295 */ 0x06e46ca1 | (15 << 27) /* 0.430767659 */,
1405
1406 /* 1296 */ 0x06e63dc0 | (15 << 27) /* 0.431211234 */,
1407 /* 1297 */ 0x06e80efe | (15 << 27) /* 0.431654924 */,
1408 /* 1298 */ 0x06e9e05b | (15 << 27) /* 0.432098728 */,
1409 /* 1299 */ 0x06ebb1d6 | (15 << 27) /* 0.432542647 */,
1410 /* 1300 */ 0x06ed8370 | (15 << 27) /* 0.432986678 */,
1411 /* 1301 */ 0x06ef5529 | (15 << 27) /* 0.433430824 */,
1412 /* 1302 */ 0x06f12700 | (15 << 27) /* 0.433875084 */,
1413 /* 1303 */ 0x06f2f8f5 | (15 << 27) /* 0.434319457 */,
1414 /* 1304 */ 0x06f4cb09 | (15 << 27) /* 0.434763944 */,
1415 /* 1305 */ 0x06f69d3c | (15 << 27) /* 0.435208545 */,
1416 /* 1306 */ 0x06f86f8d | (15 << 27) /* 0.435653259 */,
1417 /* 1307 */ 0x06fa41fd | (15 << 27) /* 0.436098087 */,
1418 /* 1308 */ 0x06fc148b | (15 << 27) /* 0.436543029 */,
1419 /* 1309 */ 0x06fde737 | (15 << 27) /* 0.436988083 */,
1420 /* 1310 */ 0x06ffba02 | (15 << 27) /* 0.437433251 */,
1421 /* 1311 */ 0x07018ceb | (15 << 27) /* 0.437878533 */,
1422
1423 /* 1312 */ 0x07035ff3 | (15 << 27) /* 0.438323927 */,
1424 /* 1313 */ 0x07053319 | (15 << 27) /* 0.438769435 */,
1425 /* 1314 */ 0x0707065d | (15 << 27) /* 0.439215056 */,
1426 /* 1315 */ 0x0708d9c0 | (15 << 27) /* 0.439660790 */,
1427 /* 1316 */ 0x070aad41 | (15 << 27) /* 0.440106636 */,
1428 /* 1317 */ 0x070c80e1 | (15 << 27) /* 0.440552596 */,
1429 /* 1318 */ 0x070e549f | (15 << 27) /* 0.440998669 */,
1430 /* 1319 */ 0x0710287b | (15 << 27) /* 0.441444855 */,
1431 /* 1320 */ 0x0711fc75 | (15 << 27) /* 0.441891153 */,
1432 /* 1321 */ 0x0713d08d | (15 << 27) /* 0.442337564 */,
1433 /* 1322 */ 0x0715a4c4 | (15 << 27) /* 0.442784088 */,
1434 /* 1323 */ 0x07177919 | (15 << 27) /* 0.443230724 */,
1435 /* 1324 */ 0x07194d8c | (15 << 27) /* 0.443677473 */,
1436 /* 1325 */ 0x071b221e | (15 << 27) /* 0.444124334 */,
1437 /* 1326 */ 0x071cf6ce | (15 << 27) /* 0.444571308 */,
1438 /* 1327 */ 0x071ecb9b | (15 << 27) /* 0.445018394 */,
1439
1440 /* 1328 */ 0x0720a087 | (15 << 27) /* 0.445465593 */,
1441 /* 1329 */ 0x07227591 | (15 << 27) /* 0.445912903 */,
1442 /* 1330 */ 0x07244ab9 | (15 << 27) /* 0.446360326 */,
1443 /* 1331 */ 0x07262000 | (15 << 27) /* 0.446807861 */,
1444 /* 1332 */ 0x0727f564 | (15 << 27) /* 0.447255509 */,
1445 /* 1333 */ 0x0729cae7 | (15 << 27) /* 0.447703268 */,
1446 /* 1334 */ 0x072ba087 | (15 << 27) /* 0.448151139 */,
1447 /* 1335 */ 0x072d7646 | (15 << 27) /* 0.448599122 */,
1448 /* 1336 */ 0x072f4c22 | (15 << 27) /* 0.449047217 */,
1449 /* 1337 */ 0x0731221d | (15 << 27) /* 0.449495424 */,
1450 /* 1338 */ 0x0732f835 | (15 << 27) /* 0.449943742 */,
1451 /* 1339 */ 0x0734ce6c | (15 << 27) /* 0.450392173 */,
1452 /* 1340 */ 0x0736a4c1 | (15 << 27) /* 0.450840715 */,
1453 /* 1341 */ 0x07387b33 | (15 << 27) /* 0.451289368 */,
1454 /* 1342 */ 0x073a51c4 | (15 << 27) /* 0.451738133 */,
1455 /* 1343 */ 0x073c2872 | (15 << 27) /* 0.452187010 */,
1456
1457 /* 1344 */ 0x073dff3e | (15 << 27) /* 0.452635998 */,
1458 /* 1345 */ 0x073fd628 | (15 << 27) /* 0.453085097 */,
1459 /* 1346 */ 0x0741ad30 | (15 << 27) /* 0.453534308 */,
1460 /* 1347 */ 0x07438456 | (15 << 27) /* 0.453983630 */,
1461 /* 1348 */ 0x07455b9a | (15 << 27) /* 0.454433063 */,
1462 /* 1349 */ 0x074732fc | (15 << 27) /* 0.454882607 */,
1463 /* 1350 */ 0x07490a7b | (15 << 27) /* 0.455332262 */,
1464 /* 1351 */ 0x074ae218 | (15 << 27) /* 0.455782029 */,
1465 /* 1352 */ 0x074cb9d3 | (15 << 27) /* 0.456231906 */,
1466 /* 1353 */ 0x074e91ac | (15 << 27) /* 0.456681894 */,
1467 /* 1354 */ 0x075069a3 | (15 << 27) /* 0.457131993 */,
1468 /* 1355 */ 0x075241b7 | (15 << 27) /* 0.457582203 */,
1469 /* 1356 */ 0x075419e9 | (15 << 27) /* 0.458032524 */,
1470 /* 1357 */ 0x0755f239 | (15 << 27) /* 0.458482956 */,
1471 /* 1358 */ 0x0757caa7 | (15 << 27) /* 0.458933498 */,
1472 /* 1359 */ 0x0759a332 | (15 << 27) /* 0.459384151 */,
1473
1474 /* 1360 */ 0x075b7bdb | (15 << 27) /* 0.459834914 */,
1475 /* 1361 */ 0x075d54a1 | (15 << 27) /* 0.460285788 */,
1476 /* 1362 */ 0x075f2d85 | (15 << 27) /* 0.460736772 */,
1477 /* 1363 */ 0x07610687 | (15 << 27) /* 0.461187867 */,
1478 /* 1364 */ 0x0762dfa6 | (15 << 27) /* 0.461639071 */,
1479 /* 1365 */ 0x0764b8e3 | (15 << 27) /* 0.462090387 */,
1480 /* 1366 */ 0x0766923e | (15 << 27) /* 0.462541812 */,
1481 /* 1367 */ 0x07686bb6 | (15 << 27) /* 0.462993348 */,
1482 /* 1368 */ 0x076a454c | (15 << 27) /* 0.463444993 */,
1483 /* 1369 */ 0x076c1eff | (15 << 27) /* 0.463896749 */,
1484 /* 1370 */ 0x076df8d0 | (15 << 27) /* 0.464348615 */,
1485 /* 1371 */ 0x076fd2be | (15 << 27) /* 0.464800591 */,
1486 /* 1372 */ 0x0771acca | (15 << 27) /* 0.465252676 */,
1487 /* 1373 */ 0x077386f3 | (15 << 27) /* 0.465704872 */,
1488 /* 1374 */ 0x0775613a | (15 << 27) /* 0.466157177 */,
1489 /* 1375 */ 0x07773b9e | (15 << 27) /* 0.466609592 */,
1490
1491 /* 1376 */ 0x07791620 | (15 << 27) /* 0.467062117 */,
1492 /* 1377 */ 0x077af0bf | (15 << 27) /* 0.467514751 */,
1493 /* 1378 */ 0x077ccb7c | (15 << 27) /* 0.467967495 */,
1494 /* 1379 */ 0x077ea656 | (15 << 27) /* 0.468420349 */,
1495 /* 1380 */ 0x0780814d | (15 << 27) /* 0.468873312 */,
1496 /* 1381 */ 0x07825c62 | (15 << 27) /* 0.469326384 */,
1497 /* 1382 */ 0x07843794 | (15 << 27) /* 0.469779566 */,
1498 /* 1383 */ 0x078612e3 | (15 << 27) /* 0.470232857 */,
1499 /* 1384 */ 0x0787ee50 | (15 << 27) /* 0.470686258 */,
1500 /* 1385 */ 0x0789c9da | (15 << 27) /* 0.471139767 */,
1501 /* 1386 */ 0x078ba581 | (15 << 27) /* 0.471593386 */,
1502 /* 1387 */ 0x078d8146 | (15 << 27) /* 0.472047114 */,
1503 /* 1388 */ 0x078f5d28 | (15 << 27) /* 0.472500951 */,
1504 /* 1389 */ 0x07913927 | (15 << 27) /* 0.472954896 */,
1505 /* 1390 */ 0x07931543 | (15 << 27) /* 0.473408951 */,
1506 /* 1391 */ 0x0794f17d | (15 << 27) /* 0.473863115 */,
1507
1508 /* 1392 */ 0x0796cdd4 | (15 << 27) /* 0.474317388 */,
1509 /* 1393 */ 0x0798aa48 | (15 << 27) /* 0.474771769 */,
1510 /* 1394 */ 0x079a86d9 | (15 << 27) /* 0.475226259 */,
1511 /* 1395 */ 0x079c6388 | (15 << 27) /* 0.475680858 */,
1512 /* 1396 */ 0x079e4053 | (15 << 27) /* 0.476135565 */,
1513 /* 1397 */ 0x07a01d3c | (15 << 27) /* 0.476590381 */,
1514 /* 1398 */ 0x07a1fa42 | (15 << 27) /* 0.477045306 */,
1515 /* 1399 */ 0x07a3d765 | (15 << 27) /* 0.477500339 */,
1516 /* 1400 */ 0x07a5b4a5 | (15 << 27) /* 0.477955481 */,
1517 /* 1401 */ 0x07a79202 | (15 << 27) /* 0.478410731 */,
1518 /* 1402 */ 0x07a96f7d | (15 << 27) /* 0.478866089 */,
1519 /* 1403 */ 0x07ab4d14 | (15 << 27) /* 0.479321555 */,
1520 /* 1404 */ 0x07ad2ac8 | (15 << 27) /* 0.479777130 */,
1521 /* 1405 */ 0x07af089a | (15 << 27) /* 0.480232813 */,
1522 /* 1406 */ 0x07b0e688 | (15 << 27) /* 0.480688604 */,
1523 /* 1407 */ 0x07b2c494 | (15 << 27) /* 0.481144503 */,
1524
1525 /* 1408 */ 0x07b4a2bc | (15 << 27) /* 0.481600510 */,
1526 /* 1409 */ 0x07b68102 | (15 << 27) /* 0.482056625 */,
1527 /* 1410 */ 0x07b85f64 | (15 << 27) /* 0.482512848 */,
1528 /* 1411 */ 0x07ba3de4 | (15 << 27) /* 0.482969179 */,
1529 /* 1412 */ 0x07bc1c80 | (15 << 27) /* 0.483425618 */,
1530 /* 1413 */ 0x07bdfb39 | (15 << 27) /* 0.483882164 */,
1531 /* 1414 */ 0x07bfda0f | (15 << 27) /* 0.484338818 */,
1532 /* 1415 */ 0x07c1b902 | (15 << 27) /* 0.484795580 */,
1533 /* 1416 */ 0x07c39812 | (15 << 27) /* 0.485252449 */,
1534 /* 1417 */ 0x07c5773f | (15 << 27) /* 0.485709426 */,
1535 /* 1418 */ 0x07c75689 | (15 << 27) /* 0.486166511 */,
1536 /* 1419 */ 0x07c935ef | (15 << 27) /* 0.486623703 */,
1537 /* 1420 */ 0x07cb1573 | (15 << 27) /* 0.487081002 */,
1538 /* 1421 */ 0x07ccf513 | (15 << 27) /* 0.487538409 */,
1539 /* 1422 */ 0x07ced4d0 | (15 << 27) /* 0.487995923 */,
1540 /* 1423 */ 0x07d0b4aa | (15 << 27) /* 0.488453544 */,
1541
1542 /* 1424 */ 0x07d294a0 | (15 << 27) /* 0.488911273 */,
1543 /* 1425 */ 0x07d474b3 | (15 << 27) /* 0.489369108 */,
1544 /* 1426 */ 0x07d654e4 | (15 << 27) /* 0.489827051 */,
1545 /* 1427 */ 0x07d83530 | (15 << 27) /* 0.490285101 */,
1546 /* 1428 */ 0x07da159a | (15 << 27) /* 0.490743258 */,
1547 /* 1429 */ 0x07dbf620 | (15 << 27) /* 0.491201522 */,
1548 /* 1430 */ 0x07ddd6c3 | (15 << 27) /* 0.491659892 */,
1549 /* 1431 */ 0x07dfb783 | (15 << 27) /* 0.492118370 */,
1550 /* 1432 */ 0x07e1985f | (15 << 27) /* 0.492576954 */,
1551 /* 1433 */ 0x07e37958 | (15 << 27) /* 0.493035645 */,
1552 /* 1434 */ 0x07e55a6e | (15 << 27) /* 0.493494443 */,
1553 /* 1435 */ 0x07e73ba0 | (15 << 27) /* 0.493953348 */,
1554 /* 1436 */ 0x07e91cef | (15 << 27) /* 0.494412359 */,
1555 /* 1437 */ 0x07eafe5a | (15 << 27) /* 0.494871476 */,
1556 /* 1438 */ 0x07ecdfe2 | (15 << 27) /* 0.495330701 */,
1557 /* 1439 */ 0x07eec187 | (15 << 27) /* 0.495790031 */,
1558
1559 /* 1440 */ 0x07f0a348 | (15 << 27) /* 0.496249468 */,
1560 /* 1441 */ 0x07f28526 | (15 << 27) /* 0.496709012 */,
1561 /* 1442 */ 0x07f46720 | (15 << 27) /* 0.497168662 */,
1562 /* 1443 */ 0x07f64937 | (15 << 27) /* 0.497628418 */,
1563 /* 1444 */ 0x07f82b6a | (15 << 27) /* 0.498088280 */,
1564 /* 1445 */ 0x07fa0dba | (15 << 27) /* 0.498548248 */,
1565 /* 1446 */ 0x07fbf026 | (15 << 27) /* 0.499008323 */,
1566 /* 1447 */ 0x07fdd2af | (15 << 27) /* 0.499468503 */,
1567 /* 1448 */ 0x07ffb554 | (15 << 27) /* 0.499928790 */,
1568 /* 1449 */ 0x0400cc0b | (16 << 27) /* 0.250194591 */,
1569 /* 1450 */ 0x0401bd7a | (16 << 27) /* 0.250424840 */,
1570 /* 1451 */ 0x0402aef7 | (16 << 27) /* 0.250655143 */,
1571 /* 1452 */ 0x0403a083 | (16 << 27) /* 0.250885498 */,
1572 /* 1453 */ 0x0404921c | (16 << 27) /* 0.251115906 */,
1573 /* 1454 */ 0x040583c4 | (16 << 27) /* 0.251346367 */,
1574 /* 1455 */ 0x0406757a | (16 << 27) /* 0.251576880 */,
1575
1576 /* 1456 */ 0x0407673f | (16 << 27) /* 0.251807447 */,
1577 /* 1457 */ 0x04085911 | (16 << 27) /* 0.252038066 */,
1578 /* 1458 */ 0x04094af1 | (16 << 27) /* 0.252268738 */,
1579 /* 1459 */ 0x040a3ce0 | (16 << 27) /* 0.252499463 */,
1580 /* 1460 */ 0x040b2edd | (16 << 27) /* 0.252730240 */,
1581 /* 1461 */ 0x040c20e8 | (16 << 27) /* 0.252961071 */,
1582 /* 1462 */ 0x040d1301 | (16 << 27) /* 0.253191953 */,
1583 /* 1463 */ 0x040e0529 | (16 << 27) /* 0.253422889 */,
1584 /* 1464 */ 0x040ef75e | (16 << 27) /* 0.253653877 */,
1585 /* 1465 */ 0x040fe9a1 | (16 << 27) /* 0.253884918 */,
1586 /* 1466 */ 0x0410dbf3 | (16 << 27) /* 0.254116011 */,
1587 /* 1467 */ 0x0411ce53 | (16 << 27) /* 0.254347157 */,
1588 /* 1468 */ 0x0412c0c1 | (16 << 27) /* 0.254578356 */,
1589 /* 1469 */ 0x0413b33d | (16 << 27) /* 0.254809606 */,
1590 /* 1470 */ 0x0414a5c7 | (16 << 27) /* 0.255040910 */,
1591 /* 1471 */ 0x0415985f | (16 << 27) /* 0.255272266 */,
1592
1593 /* 1472 */ 0x04168b05 | (16 << 27) /* 0.255503674 */,
1594 /* 1473 */ 0x04177db9 | (16 << 27) /* 0.255735135 */,
1595 /* 1474 */ 0x0418707c | (16 << 27) /* 0.255966648 */,
1596 /* 1475 */ 0x0419634c | (16 << 27) /* 0.256198213 */,
1597 /* 1476 */ 0x041a562a | (16 << 27) /* 0.256429831 */,
1598 /* 1477 */ 0x041b4917 | (16 << 27) /* 0.256661501 */,
1599 /* 1478 */ 0x041c3c11 | (16 << 27) /* 0.256893223 */,
1600 /* 1479 */ 0x041d2f1a | (16 << 27) /* 0.257124998 */,
1601 /* 1480 */ 0x041e2230 | (16 << 27) /* 0.257356825 */,
1602 /* 1481 */ 0x041f1555 | (16 << 27) /* 0.257588704 */,
1603 /* 1482 */ 0x04200888 | (16 << 27) /* 0.257820635 */,
1604 /* 1483 */ 0x0420fbc8 | (16 << 27) /* 0.258052619 */,
1605 /* 1484 */ 0x0421ef17 | (16 << 27) /* 0.258284654 */,
1606 /* 1485 */ 0x0422e273 | (16 << 27) /* 0.258516742 */,
1607 /* 1486 */ 0x0423d5de | (16 << 27) /* 0.258748882 */,
1608 /* 1487 */ 0x0424c956 | (16 << 27) /* 0.258981074 */,
1609
1610 /* 1488 */ 0x0425bcdd | (16 << 27) /* 0.259213318 */,
1611 /* 1489 */ 0x0426b071 | (16 << 27) /* 0.259445614 */,
1612 /* 1490 */ 0x0427a414 | (16 << 27) /* 0.259677962 */,
1613 /* 1491 */ 0x042897c4 | (16 << 27) /* 0.259910362 */,
1614 /* 1492 */ 0x04298b83 | (16 << 27) /* 0.260142814 */,
1615 /* 1493 */ 0x042a7f4f | (16 << 27) /* 0.260375318 */,
1616 /* 1494 */ 0x042b7329 | (16 << 27) /* 0.260607874 */,
1617 /* 1495 */ 0x042c6711 | (16 << 27) /* 0.260840481 */,
1618 /* 1496 */ 0x042d5b07 | (16 << 27) /* 0.261073141 */,
1619 /* 1497 */ 0x042e4f0b | (16 << 27) /* 0.261305852 */,
1620 /* 1498 */ 0x042f431d | (16 << 27) /* 0.261538616 */,
1621 /* 1499 */ 0x0430373d | (16 << 27) /* 0.261771431 */,
1622 /* 1500 */ 0x04312b6b | (16 << 27) /* 0.262004297 */,
1623 /* 1501 */ 0x04321fa6 | (16 << 27) /* 0.262237216 */,
1624 /* 1502 */ 0x043313f0 | (16 << 27) /* 0.262470186 */,
1625 /* 1503 */ 0x04340847 | (16 << 27) /* 0.262703208 */,
1626
1627 /* 1504 */ 0x0434fcad | (16 << 27) /* 0.262936282 */,
1628 /* 1505 */ 0x0435f120 | (16 << 27) /* 0.263169407 */,
1629 /* 1506 */ 0x0436e5a1 | (16 << 27) /* 0.263402584 */,
1630 /* 1507 */ 0x0437da2f | (16 << 27) /* 0.263635813 */,
1631 /* 1508 */ 0x0438cecc | (16 << 27) /* 0.263869093 */,
1632 /* 1509 */ 0x0439c377 | (16 << 27) /* 0.264102425 */,
1633 /* 1510 */ 0x043ab82f | (16 << 27) /* 0.264335808 */,
1634 /* 1511 */ 0x043bacf5 | (16 << 27) /* 0.264569243 */,
1635 /* 1512 */ 0x043ca1c9 | (16 << 27) /* 0.264802730 */,
1636 /* 1513 */ 0x043d96ab | (16 << 27) /* 0.265036267 */,
1637 /* 1514 */ 0x043e8b9b | (16 << 27) /* 0.265269857 */,
1638 /* 1515 */ 0x043f8098 | (16 << 27) /* 0.265503498 */,
1639 /* 1516 */ 0x044075a3 | (16 << 27) /* 0.265737190 */,
1640 /* 1517 */ 0x04416abc | (16 << 27) /* 0.265970933 */,
1641 /* 1518 */ 0x04425fe3 | (16 << 27) /* 0.266204728 */,
1642 /* 1519 */ 0x04435518 | (16 << 27) /* 0.266438574 */,
1643
1644 /* 1520 */ 0x04444a5a | (16 << 27) /* 0.266672472 */,
1645 /* 1521 */ 0x04453fab | (16 << 27) /* 0.266906421 */,
1646 /* 1522 */ 0x04463508 | (16 << 27) /* 0.267140421 */,
1647 /* 1523 */ 0x04472a74 | (16 << 27) /* 0.267374472 */,
1648 /* 1524 */ 0x04481fee | (16 << 27) /* 0.267608575 */,
1649 /* 1525 */ 0x04491575 | (16 << 27) /* 0.267842729 */,
1650 /* 1526 */ 0x044a0b0a | (16 << 27) /* 0.268076934 */,
1651 /* 1527 */ 0x044b00ac | (16 << 27) /* 0.268311190 */,
1652 /* 1528 */ 0x044bf65d | (16 << 27) /* 0.268545497 */,
1653 /* 1529 */ 0x044cec1b | (16 << 27) /* 0.268779856 */,
1654 /* 1530 */ 0x044de1e7 | (16 << 27) /* 0.269014265 */,
1655 /* 1531 */ 0x044ed7c0 | (16 << 27) /* 0.269248726 */,
1656 /* 1532 */ 0x044fcda8 | (16 << 27) /* 0.269483238 */,
1657 /* 1533 */ 0x0450c39c | (16 << 27) /* 0.269717800 */,
1658 /* 1534 */ 0x0451b99f | (16 << 27) /* 0.269952414 */,
1659 /* 1535 */ 0x0452afaf | (16 << 27) /* 0.270187079 */,
1660
1661 /* 1536 */ 0x0453a5cd | (16 << 27) /* 0.270421794 */,
1662 /* 1537 */ 0x04549bf9 | (16 << 27) /* 0.270656561 */,
1663 /* 1538 */ 0x04559232 | (16 << 27) /* 0.270891379 */,
1664 /* 1539 */ 0x04568879 | (16 << 27) /* 0.271126247 */,
1665 /* 1540 */ 0x04577ece | (16 << 27) /* 0.271361166 */,
1666 /* 1541 */ 0x04587530 | (16 << 27) /* 0.271596136 */,
1667 /* 1542 */ 0x04596ba0 | (16 << 27) /* 0.271831157 */,
1668 /* 1543 */ 0x045a621e | (16 << 27) /* 0.272066229 */,
1669 /* 1544 */ 0x045b58a9 | (16 << 27) /* 0.272301352 */,
1670 /* 1545 */ 0x045c4f42 | (16 << 27) /* 0.272536525 */,
1671 /* 1546 */ 0x045d45e9 | (16 << 27) /* 0.272771749 */,
1672 /* 1547 */ 0x045e3c9d | (16 << 27) /* 0.273007024 */,
1673 /* 1548 */ 0x045f335e | (16 << 27) /* 0.273242350 */,
1674 /* 1549 */ 0x04602a2e | (16 << 27) /* 0.273477726 */,
1675 /* 1550 */ 0x0461210b | (16 << 27) /* 0.273713153 */,
1676 /* 1551 */ 0x046217f5 | (16 << 27) /* 0.273948630 */,
1677
1678 /* 1552 */ 0x04630eed | (16 << 27) /* 0.274184158 */,
1679 /* 1553 */ 0x046405f3 | (16 << 27) /* 0.274419737 */,
1680 /* 1554 */ 0x0464fd06 | (16 << 27) /* 0.274655366 */,
1681 /* 1555 */ 0x0465f427 | (16 << 27) /* 0.274891046 */,
1682 /* 1556 */ 0x0466eb55 | (16 << 27) /* 0.275126776 */,
1683 /* 1557 */ 0x0467e291 | (16 << 27) /* 0.275362557 */,
1684 /* 1558 */ 0x0468d9db | (16 << 27) /* 0.275598389 */,
1685 /* 1559 */ 0x0469d132 | (16 << 27) /* 0.275834270 */,
1686 /* 1560 */ 0x046ac896 | (16 << 27) /* 0.276070203 */,
1687 /* 1561 */ 0x046bc009 | (16 << 27) /* 0.276306185 */,
1688 /* 1562 */ 0x046cb788 | (16 << 27) /* 0.276542218 */,
1689 /* 1563 */ 0x046daf15 | (16 << 27) /* 0.276778302 */,
1690 /* 1564 */ 0x046ea6b0 | (16 << 27) /* 0.277014435 */,
1691 /* 1565 */ 0x046f9e58 | (16 << 27) /* 0.277250619 */,
1692 /* 1566 */ 0x0470960e | (16 << 27) /* 0.277486854 */,
1693 /* 1567 */ 0x04718dd1 | (16 << 27) /* 0.277723139 */,
1694
1695 /* 1568 */ 0x047285a2 | (16 << 27) /* 0.277959474 */,
1696 /* 1569 */ 0x04737d80 | (16 << 27) /* 0.278195859 */,
1697 /* 1570 */ 0x0474756c | (16 << 27) /* 0.278432294 */,
1698 /* 1571 */ 0x04756d65 | (16 << 27) /* 0.278668780 */,
1699 /* 1572 */ 0x0476656b | (16 << 27) /* 0.278905316 */,
1700 /* 1573 */ 0x04775d7f | (16 << 27) /* 0.279141902 */,
1701 /* 1574 */ 0x047855a1 | (16 << 27) /* 0.279378538 */,
1702 /* 1575 */ 0x04794dd0 | (16 << 27) /* 0.279615224 */,
1703 /* 1576 */ 0x047a460c | (16 << 27) /* 0.279851960 */,
1704 /* 1577 */ 0x047b3e56 | (16 << 27) /* 0.280088747 */,
1705 /* 1578 */ 0x047c36ae | (16 << 27) /* 0.280325583 */,
1706 /* 1579 */ 0x047d2f12 | (16 << 27) /* 0.280562470 */,
1707 /* 1580 */ 0x047e2784 | (16 << 27) /* 0.280799406 */,
1708 /* 1581 */ 0x047f2004 | (16 << 27) /* 0.281036393 */,
1709 /* 1582 */ 0x04801891 | (16 << 27) /* 0.281273429 */,
1710 /* 1583 */ 0x0481112b | (16 << 27) /* 0.281510516 */,
1711
1712 /* 1584 */ 0x048209d3 | (16 << 27) /* 0.281747652 */,
1713 /* 1585 */ 0x04830288 | (16 << 27) /* 0.281984838 */,
1714 /* 1586 */ 0x0483fb4b | (16 << 27) /* 0.282222075 */,
1715 /* 1587 */ 0x0484f41b | (16 << 27) /* 0.282459361 */,
1716 /* 1588 */ 0x0485ecf8 | (16 << 27) /* 0.282696697 */,
1717 /* 1589 */ 0x0486e5e3 | (16 << 27) /* 0.282934082 */,
1718 /* 1590 */ 0x0487dedb | (16 << 27) /* 0.283171518 */,
1719 /* 1591 */ 0x0488d7e1 | (16 << 27) /* 0.283409003 */,
1720 /* 1592 */ 0x0489d0f4 | (16 << 27) /* 0.283646538 */,
1721 /* 1593 */ 0x048aca14 | (16 << 27) /* 0.283884123 */,
1722 /* 1594 */ 0x048bc341 | (16 << 27) /* 0.284121757 */,
1723 /* 1595 */ 0x048cbc7c | (16 << 27) /* 0.284359441 */,
1724 /* 1596 */ 0x048db5c4 | (16 << 27) /* 0.284597175 */,
1725 /* 1597 */ 0x048eaf1a | (16 << 27) /* 0.284834959 */,
1726 /* 1598 */ 0x048fa87d | (16 << 27) /* 0.285072792 */,
1727 /* 1599 */ 0x0490a1ed | (16 << 27) /* 0.285310675 */,
1728
1729 /* 1600 */ 0x04919b6a | (16 << 27) /* 0.285548607 */,
1730 /* 1601 */ 0x049294f5 | (16 << 27) /* 0.285786589 */,
1731 /* 1602 */ 0x04938e8d | (16 << 27) /* 0.286024621 */,
1732 /* 1603 */ 0x04948833 | (16 << 27) /* 0.286262702 */,
1733 /* 1604 */ 0x049581e5 | (16 << 27) /* 0.286500832 */,
1734 /* 1605 */ 0x04967ba5 | (16 << 27) /* 0.286739012 */,
1735 /* 1606 */ 0x04977573 | (16 << 27) /* 0.286977242 */,
1736 /* 1607 */ 0x04986f4d | (16 << 27) /* 0.287215521 */,
1737 /* 1608 */ 0x04996935 | (16 << 27) /* 0.287453849 */,
1738 /* 1609 */ 0x049a632a | (16 << 27) /* 0.287692227 */,
1739 /* 1610 */ 0x049b5d2c | (16 << 27) /* 0.287930654 */,
1740 /* 1611 */ 0x049c573c | (16 << 27) /* 0.288169131 */,
1741 /* 1612 */ 0x049d5159 | (16 << 27) /* 0.288407657 */,
1742 /* 1613 */ 0x049e4b83 | (16 << 27) /* 0.288646232 */,
1743 /* 1614 */ 0x049f45ba | (16 << 27) /* 0.288884857 */,
1744 /* 1615 */ 0x04a03ffe | (16 << 27) /* 0.289123530 */,
1745
1746 /* 1616 */ 0x04a13a50 | (16 << 27) /* 0.289362253 */,
1747 /* 1617 */ 0x04a234af | (16 << 27) /* 0.289601026 */,
1748 /* 1618 */ 0x04a32f1b | (16 << 27) /* 0.289839847 */,
1749 /* 1619 */ 0x04a42995 | (16 << 27) /* 0.290078718 */,
1750 /* 1620 */ 0x04a5241b | (16 << 27) /* 0.290317638 */,
1751 /* 1621 */ 0x04a61eaf | (16 << 27) /* 0.290556607 */,
1752 /* 1622 */ 0x04a71950 | (16 << 27) /* 0.290795626 */,
1753 /* 1623 */ 0x04a813fe | (16 << 27) /* 0.291034693 */,
1754 /* 1624 */ 0x04a90eba | (16 << 27) /* 0.291273810 */,
1755 /* 1625 */ 0x04aa0982 | (16 << 27) /* 0.291512975 */,
1756 /* 1626 */ 0x04ab0458 | (16 << 27) /* 0.291752190 */,
1757 /* 1627 */ 0x04abff3b | (16 << 27) /* 0.291991453 */,
1758 /* 1628 */ 0x04acfa2b | (16 << 27) /* 0.292230766 */,
1759 /* 1629 */ 0x04adf528 | (16 << 27) /* 0.292470128 */,
1760 /* 1630 */ 0x04aef032 | (16 << 27) /* 0.292709539 */,
1761 /* 1631 */ 0x04afeb4a | (16 << 27) /* 0.292948998 */,
1762
1763 /* 1632 */ 0x04b0e66e | (16 << 27) /* 0.293188507 */,
1764 /* 1633 */ 0x04b1e1a0 | (16 << 27) /* 0.293428065 */,
1765 /* 1634 */ 0x04b2dcdf | (16 << 27) /* 0.293667671 */,
1766 /* 1635 */ 0x04b3d82b | (16 << 27) /* 0.293907326 */,
1767 /* 1636 */ 0x04b4d384 | (16 << 27) /* 0.294147031 */,
1768 /* 1637 */ 0x04b5ceea | (16 << 27) /* 0.294386784 */,
1769 /* 1638 */ 0x04b6ca5e | (16 << 27) /* 0.294626585 */,
1770 /* 1639 */ 0x04b7c5de | (16 << 27) /* 0.294866436 */,
1771 /* 1640 */ 0x04b8c16c | (16 << 27) /* 0.295106336 */,
1772 /* 1641 */ 0x04b9bd06 | (16 << 27) /* 0.295346284 */,
1773 /* 1642 */ 0x04bab8ae | (16 << 27) /* 0.295586281 */,
1774 /* 1643 */ 0x04bbb463 | (16 << 27) /* 0.295826327 */,
1775 /* 1644 */ 0x04bcb024 | (16 << 27) /* 0.296066421 */,
1776 /* 1645 */ 0x04bdabf3 | (16 << 27) /* 0.296306564 */,
1777 /* 1646 */ 0x04bea7cf | (16 << 27) /* 0.296546756 */,
1778 /* 1647 */ 0x04bfa3b8 | (16 << 27) /* 0.296786996 */,
1779
1780 /* 1648 */ 0x04c09faf | (16 << 27) /* 0.297027285 */,
1781 /* 1649 */ 0x04c19bb2 | (16 << 27) /* 0.297267623 */,
1782 /* 1650 */ 0x04c297c2 | (16 << 27) /* 0.297508009 */,
1783 /* 1651 */ 0x04c393df | (16 << 27) /* 0.297748444 */,
1784 /* 1652 */ 0x04c49009 | (16 << 27) /* 0.297988927 */,
1785 /* 1653 */ 0x04c58c41 | (16 << 27) /* 0.298229459 */,
1786 /* 1654 */ 0x04c68885 | (16 << 27) /* 0.298470039 */,
1787 /* 1655 */ 0x04c784d6 | (16 << 27) /* 0.298710668 */,
1788 /* 1656 */ 0x04c88135 | (16 << 27) /* 0.298951346 */,
1789 /* 1657 */ 0x04c97da0 | (16 << 27) /* 0.299192071 */,
1790 /* 1658 */ 0x04ca7a18 | (16 << 27) /* 0.299432846 */,
1791 /* 1659 */ 0x04cb769e | (16 << 27) /* 0.299673668 */,
1792 /* 1660 */ 0x04cc7330 | (16 << 27) /* 0.299914539 */,
1793 /* 1661 */ 0x04cd6fcf | (16 << 27) /* 0.300155459 */,
1794 /* 1662 */ 0x04ce6c7b | (16 << 27) /* 0.300396426 */,
1795 /* 1663 */ 0x04cf6935 | (16 << 27) /* 0.300637443 */,
1796
1797 /* 1664 */ 0x04d065fb | (16 << 27) /* 0.300878507 */,
1798 /* 1665 */ 0x04d162ce | (16 << 27) /* 0.301119620 */,
1799 /* 1666 */ 0x04d25fae | (16 << 27) /* 0.301360781 */,
1800 /* 1667 */ 0x04d35c9b | (16 << 27) /* 0.301601990 */,
1801 /* 1668 */ 0x04d45995 | (16 << 27) /* 0.301843247 */,
1802 /* 1669 */ 0x04d5569c | (16 << 27) /* 0.302084553 */,
1803 /* 1670 */ 0x04d653b0 | (16 << 27) /* 0.302325907 */,
1804 /* 1671 */ 0x04d750d1 | (16 << 27) /* 0.302567309 */,
1805 /* 1672 */ 0x04d84dff | (16 << 27) /* 0.302808759 */,
1806 /* 1673 */ 0x04d94b3a | (16 << 27) /* 0.303050257 */,
1807 /* 1674 */ 0x04da4881 | (16 << 27) /* 0.303291804 */,
1808 /* 1675 */ 0x04db45d6 | (16 << 27) /* 0.303533399 */,
1809 /* 1676 */ 0x04dc4337 | (16 << 27) /* 0.303775041 */,
1810 /* 1677 */ 0x04dd40a6 | (16 << 27) /* 0.304016732 */,
1811 /* 1678 */ 0x04de3e21 | (16 << 27) /* 0.304258471 */,
1812 /* 1679 */ 0x04df3ba9 | (16 << 27) /* 0.304500257 */,
1813
1814 /* 1680 */ 0x04e0393e | (16 << 27) /* 0.304742092 */,
1815 /* 1681 */ 0x04e136e0 | (16 << 27) /* 0.304983975 */,
1816 /* 1682 */ 0x04e2348f | (16 << 27) /* 0.305225906 */,
1817 /* 1683 */ 0x04e3324b | (16 << 27) /* 0.305467885 */,
1818 /* 1684 */ 0x04e43013 | (16 << 27) /* 0.305709911 */,
1819 /* 1685 */ 0x04e52de9 | (16 << 27) /* 0.305951986 */,
1820 /* 1686 */ 0x04e62bcb | (16 << 27) /* 0.306194108 */,
1821 /* 1687 */ 0x04e729ba | (16 << 27) /* 0.306436279 */,
1822 /* 1688 */ 0x04e827b6 | (16 << 27) /* 0.306678497 */,
1823 /* 1689 */ 0x04e925bf | (16 << 27) /* 0.306920763 */,
1824 /* 1690 */ 0x04ea23d4 | (16 << 27) /* 0.307163077 */,
1825 /* 1691 */ 0x04eb21f7 | (16 << 27) /* 0.307405438 */,
1826 /* 1692 */ 0x04ec2026 | (16 << 27) /* 0.307647848 */,
1827 /* 1693 */ 0x04ed1e62 | (16 << 27) /* 0.307890305 */,
1828 /* 1694 */ 0x04ee1cab | (16 << 27) /* 0.308132810 */,
1829 /* 1695 */ 0x04ef1b01 | (16 << 27) /* 0.308375362 */,
1830
1831 /* 1696 */ 0x04f01963 | (16 << 27) /* 0.308617963 */,
1832 /* 1697 */ 0x04f117d3 | (16 << 27) /* 0.308860611 */,
1833 /* 1698 */ 0x04f2164f | (16 << 27) /* 0.309103306 */,
1834 /* 1699 */ 0x04f314d8 | (16 << 27) /* 0.309346050 */,
1835 /* 1700 */ 0x04f4136d | (16 << 27) /* 0.309588841 */,
1836 /* 1701 */ 0x04f51210 | (16 << 27) /* 0.309831679 */,
1837 /* 1702 */ 0x04f610bf | (16 << 27) /* 0.310074565 */,
1838 /* 1703 */ 0x04f70f7b | (16 << 27) /* 0.310317499 */,
1839 /* 1704 */ 0x04f80e44 | (16 << 27) /* 0.310560480 */,
1840 /* 1705 */ 0x04f90d19 | (16 << 27) /* 0.310803509 */,
1841 /* 1706 */ 0x04fa0bfc | (16 << 27) /* 0.311046586 */,
1842 /* 1707 */ 0x04fb0aeb | (16 << 27) /* 0.311289710 */,
1843 /* 1708 */ 0x04fc09e7 | (16 << 27) /* 0.311532881 */,
1844 /* 1709 */ 0x04fd08ef | (16 << 27) /* 0.311776100 */,
1845 /* 1710 */ 0x04fe0805 | (16 << 27) /* 0.312019366 */,
1846 /* 1711 */ 0x04ff0727 | (16 << 27) /* 0.312262680 */,
1847
1848 /* 1712 */ 0x05000655 | (16 << 27) /* 0.312506041 */,
1849 /* 1713 */ 0x05010591 | (16 << 27) /* 0.312749449 */,
1850 /* 1714 */ 0x050204d9 | (16 << 27) /* 0.312992905 */,
1851 /* 1715 */ 0x0503042e | (16 << 27) /* 0.313236408 */,
1852 /* 1716 */ 0x0504038f | (16 << 27) /* 0.313479959 */,
1853 /* 1717 */ 0x050502fe | (16 << 27) /* 0.313723556 */,
1854 /* 1718 */ 0x05060279 | (16 << 27) /* 0.313967202 */,
1855 /* 1719 */ 0x05070200 | (16 << 27) /* 0.314210894 */,
1856 /* 1720 */ 0x05080195 | (16 << 27) /* 0.314454634 */,
1857 /* 1721 */ 0x05090136 | (16 << 27) /* 0.314698420 */,
1858 /* 1722 */ 0x050a00e3 | (16 << 27) /* 0.314942255 */,
1859 /* 1723 */ 0x050b009e | (16 << 27) /* 0.315186136 */,
1860 /* 1724 */ 0x050c0065 | (16 << 27) /* 0.315430064 */,
1861 /* 1725 */ 0x050d0039 | (16 << 27) /* 0.315674040 */,
1862 /* 1726 */ 0x050e0019 | (16 << 27) /* 0.315918063 */,
1863 /* 1727 */ 0x050f0006 | (16 << 27) /* 0.316162133 */,
1864
1865 /* 1728 */ 0x05100000 | (16 << 27) /* 0.316406250 */,
1866 /* 1729 */ 0x05110006 | (16 << 27) /* 0.316650414 */,
1867 /* 1730 */ 0x05120019 | (16 << 27) /* 0.316894625 */,
1868 /* 1731 */ 0x05130039 | (16 << 27) /* 0.317138884 */,
1869 /* 1732 */ 0x05140065 | (16 << 27) /* 0.317383189 */,
1870 /* 1733 */ 0x0515009e | (16 << 27) /* 0.317627541 */,
1871 /* 1734 */ 0x051600e3 | (16 << 27) /* 0.317871941 */,
1872 /* 1735 */ 0x05170135 | (16 << 27) /* 0.318116387 */,
1873 /* 1736 */ 0x05180194 | (16 << 27) /* 0.318360880 */,
1874 /* 1737 */ 0x051901ff | (16 << 27) /* 0.318605421 */,
1875 /* 1738 */ 0x051a0277 | (16 << 27) /* 0.318850008 */,
1876 /* 1739 */ 0x051b02fc | (16 << 27) /* 0.319094642 */,
1877 /* 1740 */ 0x051c038d | (16 << 27) /* 0.319339323 */,
1878 /* 1741 */ 0x051d042a | (16 << 27) /* 0.319584051 */,
1879 /* 1742 */ 0x051e04d4 | (16 << 27) /* 0.319828826 */,
1880 /* 1743 */ 0x051f058b | (16 << 27) /* 0.320073647 */,
1881
1882 /* 1744 */ 0x0520064f | (16 << 27) /* 0.320318516 */,
1883 /* 1745 */ 0x0521071f | (16 << 27) /* 0.320563431 */,
1884 /* 1746 */ 0x052207fb | (16 << 27) /* 0.320808393 */,
1885 /* 1747 */ 0x052308e4 | (16 << 27) /* 0.321053402 */,
1886 /* 1748 */ 0x052409da | (16 << 27) /* 0.321298457 */,
1887 /* 1749 */ 0x05250adc | (16 << 27) /* 0.321543560 */,
1888 /* 1750 */ 0x05260bea | (16 << 27) /* 0.321788709 */,
1889 /* 1751 */ 0x05270d06 | (16 << 27) /* 0.322033904 */,
1890 /* 1752 */ 0x05280e2d | (16 << 27) /* 0.322279147 */,
1891 /* 1753 */ 0x05290f62 | (16 << 27) /* 0.322524436 */,
1892 /* 1754 */ 0x052a10a3 | (16 << 27) /* 0.322769771 */,
1893 /* 1755 */ 0x052b11f0 | (16 << 27) /* 0.323015154 */,
1894 /* 1756 */ 0x052c134a | (16 << 27) /* 0.323260583 */,
1895 /* 1757 */ 0x052d14b0 | (16 << 27) /* 0.323506058 */,
1896 /* 1758 */ 0x052e1623 | (16 << 27) /* 0.323751580 */,
1897 /* 1759 */ 0x052f17a2 | (16 << 27) /* 0.323997149 */,
1898
1899 /* 1760 */ 0x0530192e | (16 << 27) /* 0.324242764 */,
1900 /* 1761 */ 0x05311ac6 | (16 << 27) /* 0.324488426 */,
1901 /* 1762 */ 0x05321c6b | (16 << 27) /* 0.324734134 */,
1902 /* 1763 */ 0x05331e1c | (16 << 27) /* 0.324979889 */,
1903 /* 1764 */ 0x05341fda | (16 << 27) /* 0.325225690 */,
1904 /* 1765 */ 0x053521a4 | (16 << 27) /* 0.325471538 */,
1905 /* 1766 */ 0x0536237b | (16 << 27) /* 0.325717432 */,
1906 /* 1767 */ 0x0537255e | (16 << 27) /* 0.325963372 */,
1907 /* 1768 */ 0x0538274e | (16 << 27) /* 0.326209359 */,
1908 /* 1769 */ 0x0539294a | (16 << 27) /* 0.326455392 */,
1909 /* 1770 */ 0x053a2b52 | (16 << 27) /* 0.326701472 */,
1910 /* 1771 */ 0x053b2d67 | (16 << 27) /* 0.326947598 */,
1911 /* 1772 */ 0x053c2f89 | (16 << 27) /* 0.327193770 */,
1912 /* 1773 */ 0x053d31b6 | (16 << 27) /* 0.327439989 */,
1913 /* 1774 */ 0x053e33f1 | (16 << 27) /* 0.327686254 */,
1914 /* 1775 */ 0x053f3637 | (16 << 27) /* 0.327932565 */,
1915
1916 /* 1776 */ 0x0540388a | (16 << 27) /* 0.328178922 */,
1917 /* 1777 */ 0x05413aea | (16 << 27) /* 0.328425326 */,
1918 /* 1778 */ 0x05423d56 | (16 << 27) /* 0.328671776 */,
1919 /* 1779 */ 0x05433fce | (16 << 27) /* 0.328918272 */,
1920 /* 1780 */ 0x05444253 | (16 << 27) /* 0.329164814 */,
1921 /* 1781 */ 0x054544e4 | (16 << 27) /* 0.329411403 */,
1922 /* 1782 */ 0x05464781 | (16 << 27) /* 0.329658038 */,
1923 /* 1783 */ 0x05474a2b | (16 << 27) /* 0.329904718 */,
1924 /* 1784 */ 0x05484ce2 | (16 << 27) /* 0.330151445 */,
1925 /* 1785 */ 0x05494fa4 | (16 << 27) /* 0.330398218 */,
1926 /* 1786 */ 0x054a5273 | (16 << 27) /* 0.330645037 */,
1927 /* 1787 */ 0x054b554e | (16 << 27) /* 0.330891903 */,
1928 /* 1788 */ 0x054c5836 | (16 << 27) /* 0.331138814 */,
1929 /* 1789 */ 0x054d5b2a | (16 << 27) /* 0.331385771 */,
1930 /* 1790 */ 0x054e5e2b | (16 << 27) /* 0.331632774 */,
1931 /* 1791 */ 0x054f6138 | (16 << 27) /* 0.331879824 */,
1932
1933 /* 1792 */ 0x05506451 | (16 << 27) /* 0.332126919 */,
1934 /* 1793 */ 0x05516776 | (16 << 27) /* 0.332374060 */,
1935 /* 1794 */ 0x05526aa8 | (16 << 27) /* 0.332621247 */,
1936 /* 1795 */ 0x05536de6 | (16 << 27) /* 0.332868480 */,
1937 /* 1796 */ 0x05547131 | (16 << 27) /* 0.333115759 */,
1938 /* 1797 */ 0x05557487 | (16 << 27) /* 0.333363084 */,
1939 /* 1798 */ 0x055677ea | (16 << 27) /* 0.333610455 */,
1940 /* 1799 */ 0x05577b5a | (16 << 27) /* 0.333857872 */,
1941 /* 1800 */ 0x05587ed5 | (16 << 27) /* 0.334105334 */,
1942 /* 1801 */ 0x0559825e | (16 << 27) /* 0.334352843 */,
1943 /* 1802 */ 0x055a85f2 | (16 << 27) /* 0.334600397 */,
1944 /* 1803 */ 0x055b8992 | (16 << 27) /* 0.334847997 */,
1945 /* 1804 */ 0x055c8d3f | (16 << 27) /* 0.335095642 */,
1946 /* 1805 */ 0x055d90f9 | (16 << 27) /* 0.335343334 */,
1947 /* 1806 */ 0x055e94be | (16 << 27) /* 0.335591071 */,
1948 /* 1807 */ 0x055f9890 | (16 << 27) /* 0.335838854 */,
1949
1950 /* 1808 */ 0x05609c6e | (16 << 27) /* 0.336086683 */,
1951 /* 1809 */ 0x0561a058 | (16 << 27) /* 0.336334557 */,
1952 /* 1810 */ 0x0562a44f | (16 << 27) /* 0.336582477 */,
1953 /* 1811 */ 0x0563a851 | (16 << 27) /* 0.336830443 */,
1954 /* 1812 */ 0x0564ac60 | (16 << 27) /* 0.337078454 */,
1955 /* 1813 */ 0x0565b07c | (16 << 27) /* 0.337326511 */,
1956 /* 1814 */ 0x0566b4a3 | (16 << 27) /* 0.337574614 */,
1957 /* 1815 */ 0x0567b8d7 | (16 << 27) /* 0.337822762 */,
1958 /* 1816 */ 0x0568bd17 | (16 << 27) /* 0.338070956 */,
1959 /* 1817 */ 0x0569c163 | (16 << 27) /* 0.338319195 */,
1960 /* 1818 */ 0x056ac5bc | (16 << 27) /* 0.338567480 */,
1961 /* 1819 */ 0x056bca20 | (16 << 27) /* 0.338815811 */,
1962 /* 1820 */ 0x056cce91 | (16 << 27) /* 0.339064186 */,
1963 /* 1821 */ 0x056dd30e | (16 << 27) /* 0.339312608 */,
1964 /* 1822 */ 0x056ed798 | (16 << 27) /* 0.339561075 */,
1965 /* 1823 */ 0x056fdc2d | (16 << 27) /* 0.339809587 */,
1966
1967 /* 1824 */ 0x0570e0cf | (16 << 27) /* 0.340058145 */,
1968 /* 1825 */ 0x0571e57d | (16 << 27) /* 0.340306748 */,
1969 /* 1826 */ 0x0572ea37 | (16 << 27) /* 0.340555397 */,
1970 /* 1827 */ 0x0573eefd | (16 << 27) /* 0.340804091 */,
1971 /* 1828 */ 0x0574f3d0 | (16 << 27) /* 0.341052830 */,
1972 /* 1829 */ 0x0575f8ae | (16 << 27) /* 0.341301615 */,
1973 /* 1830 */ 0x0576fd99 | (16 << 27) /* 0.341550445 */,
1974 /* 1831 */ 0x05780290 | (16 << 27) /* 0.341799321 */,
1975 /* 1832 */ 0x05790793 | (16 << 27) /* 0.342048241 */,
1976 /* 1833 */ 0x057a0ca3 | (16 << 27) /* 0.342297207 */,
1977 /* 1834 */ 0x057b11be | (16 << 27) /* 0.342546219 */,
1978 /* 1835 */ 0x057c16e6 | (16 << 27) /* 0.342795275 */,
1979 /* 1836 */ 0x057d1c1a | (16 << 27) /* 0.343044377 */,
1980 /* 1837 */ 0x057e2159 | (16 << 27) /* 0.343293524 */,
1981 /* 1838 */ 0x057f26a6 | (16 << 27) /* 0.343542717 */,
1982 /* 1839 */ 0x05802bfe | (16 << 27) /* 0.343791954 */,
1983
1984 /* 1840 */ 0x05813162 | (16 << 27) /* 0.344041237 */,
1985 /* 1841 */ 0x058236d2 | (16 << 27) /* 0.344290564 */,
1986 /* 1842 */ 0x05833c4f | (16 << 27) /* 0.344539937 */,
1987 /* 1843 */ 0x058441d8 | (16 << 27) /* 0.344789356 */,
1988 /* 1844 */ 0x0585476c | (16 << 27) /* 0.345038819 */,
1989 /* 1845 */ 0x05864d0d | (16 << 27) /* 0.345288327 */,
1990 /* 1846 */ 0x058752ba | (16 << 27) /* 0.345537880 */,
1991 /* 1847 */ 0x05885873 | (16 << 27) /* 0.345787479 */,
1992 /* 1848 */ 0x05895e39 | (16 << 27) /* 0.346037122 */,
1993 /* 1849 */ 0x058a640a | (16 << 27) /* 0.346286811 */,
1994 /* 1850 */ 0x058b69e7 | (16 << 27) /* 0.346536545 */,
1995 /* 1851 */ 0x058c6fd1 | (16 << 27) /* 0.346786323 */,
1996 /* 1852 */ 0x058d75c6 | (16 << 27) /* 0.347036147 */,
1997 /* 1853 */ 0x058e7bc8 | (16 << 27) /* 0.347286015 */,
1998 /* 1854 */ 0x058f81d5 | (16 << 27) /* 0.347535929 */,
1999 /* 1855 */ 0x059087ef | (16 << 27) /* 0.347785887 */,
2000
2001 /* 1856 */ 0x05918e15 | (16 << 27) /* 0.348035890 */,
2002 /* 1857 */ 0x05929447 | (16 << 27) /* 0.348285939 */,
2003 /* 1858 */ 0x05939a84 | (16 << 27) /* 0.348536032 */,
2004 /* 1859 */ 0x0594a0ce | (16 << 27) /* 0.348786170 */,
2005 /* 1860 */ 0x0595a724 | (16 << 27) /* 0.349036353 */,
2006 /* 1861 */ 0x0596ad86 | (16 << 27) /* 0.349286580 */,
2007 /* 1862 */ 0x0597b3f4 | (16 << 27) /* 0.349536853 */,
2008 /* 1863 */ 0x0598ba6e | (16 << 27) /* 0.349787170 */,
2009 /* 1864 */ 0x0599c0f4 | (16 << 27) /* 0.350037532 */,
2010 /* 1865 */ 0x059ac786 | (16 << 27) /* 0.350287939 */,
2011 /* 1866 */ 0x059bce25 | (16 << 27) /* 0.350538391 */,
2012 /* 1867 */ 0x059cd4cf | (16 << 27) /* 0.350788887 */,
2013 /* 1868 */ 0x059ddb85 | (16 << 27) /* 0.351039428 */,
2014 /* 1869 */ 0x059ee247 | (16 << 27) /* 0.351290014 */,
2015 /* 1870 */ 0x059fe915 | (16 << 27) /* 0.351540645 */,
2016 /* 1871 */ 0x05a0efef | (16 << 27) /* 0.351791320 */,
2017
2018 /* 1872 */ 0x05a1f6d5 | (16 << 27) /* 0.352042040 */,
2019 /* 1873 */ 0x05a2fdc7 | (16 << 27) /* 0.352292804 */,
2020 /* 1874 */ 0x05a404c5 | (16 << 27) /* 0.352543613 */,
2021 /* 1875 */ 0x05a50bcf | (16 << 27) /* 0.352794467 */,
2022 /* 1876 */ 0x05a612e5 | (16 << 27) /* 0.353045365 */,
2023 /* 1877 */ 0x05a71a07 | (16 << 27) /* 0.353296308 */,
2024 /* 1878 */ 0x05a82135 | (16 << 27) /* 0.353547296 */,
2025 /* 1879 */ 0x05a9286f | (16 << 27) /* 0.353798328 */,
2026 /* 1880 */ 0x05aa2fb5 | (16 << 27) /* 0.354049405 */,
2027 /* 1881 */ 0x05ab3707 | (16 << 27) /* 0.354300526 */,
2028 /* 1882 */ 0x05ac3e65 | (16 << 27) /* 0.354551691 */,
2029 /* 1883 */ 0x05ad45ce | (16 << 27) /* 0.354802901 */,
2030 /* 1884 */ 0x05ae4d44 | (16 << 27) /* 0.355054156 */,
2031 /* 1885 */ 0x05af54c6 | (16 << 27) /* 0.355305455 */,
2032 /* 1886 */ 0x05b05c53 | (16 << 27) /* 0.355556799 */,
2033 /* 1887 */ 0x05b163ed | (16 << 27) /* 0.355808187 */,
2034
2035 /* 1888 */ 0x05b26b92 | (16 << 27) /* 0.356059619 */,
2036 /* 1889 */ 0x05b37343 | (16 << 27) /* 0.356311096 */,
2037 /* 1890 */ 0x05b47b00 | (16 << 27) /* 0.356562617 */,
2038 /* 1891 */ 0x05b582c9 | (16 << 27) /* 0.356814182 */,
2039 /* 1892 */ 0x05b68a9e | (16 << 27) /* 0.357065792 */,
2040 /* 1893 */ 0x05b7927f | (16 << 27) /* 0.357317446 */,
2041 /* 1894 */ 0x05b89a6c | (16 << 27) /* 0.357569145 */,
2042 /* 1895 */ 0x05b9a265 | (16 << 27) /* 0.357820887 */,
2043 /* 1896 */ 0x05baaa69 | (16 << 27) /* 0.358072674 */,
2044 /* 1897 */ 0x05bbb27a | (16 << 27) /* 0.358324506 */,
2045 /* 1898 */ 0x05bcba96 | (16 << 27) /* 0.358576381 */,
2046 /* 1899 */ 0x05bdc2be | (16 << 27) /* 0.358828301 */,
2047 /* 1900 */ 0x05becaf2 | (16 << 27) /* 0.359080265 */,
2048 /* 1901 */ 0x05bfd332 | (16 << 27) /* 0.359332273 */,
2049 /* 1902 */ 0x05c0db7e | (16 << 27) /* 0.359584326 */,
2050 /* 1903 */ 0x05c1e3d6 | (16 << 27) /* 0.359836423 */,
2051
2052 /* 1904 */ 0x05c2ec39 | (16 << 27) /* 0.360088563 */,
2053 /* 1905 */ 0x05c3f4a9 | (16 << 27) /* 0.360340748 */,
2054 /* 1906 */ 0x05c4fd24 | (16 << 27) /* 0.360592977 */,
2055 /* 1907 */ 0x05c605ab | (16 << 27) /* 0.360845251 */,
2056 /* 1908 */ 0x05c70e3e | (16 << 27) /* 0.361097568 */,
2057 /* 1909 */ 0x05c816dd | (16 << 27) /* 0.361349929 */,
2058 /* 1910 */ 0x05c91f87 | (16 << 27) /* 0.361602335 */,
2059 /* 1911 */ 0x05ca283e | (16 << 27) /* 0.361854784 */,
2060 /* 1912 */ 0x05cb3100 | (16 << 27) /* 0.362107278 */,
2061 /* 1913 */ 0x05cc39ce | (16 << 27) /* 0.362359815 */,
2062 /* 1914 */ 0x05cd42a8 | (16 << 27) /* 0.362612397 */,
2063 /* 1915 */ 0x05ce4b8d | (16 << 27) /* 0.362865022 */,
2064 /* 1916 */ 0x05cf547f | (16 << 27) /* 0.363117692 */,
2065 /* 1917 */ 0x05d05d7c | (16 << 27) /* 0.363370405 */,
2066 /* 1918 */ 0x05d16685 | (16 << 27) /* 0.363623163 */,
2067 /* 1919 */ 0x05d26f9a | (16 << 27) /* 0.363875964 */,
2068
2069 /* 1920 */ 0x05d378bb | (16 << 27) /* 0.364128809 */,
2070 /* 1921 */ 0x05d481e7 | (16 << 27) /* 0.364381698 */,
2071 /* 1922 */ 0x05d58b1f | (16 << 27) /* 0.364634632 */,
2072 /* 1923 */ 0x05d69463 | (16 << 27) /* 0.364887608 */,
2073 /* 1924 */ 0x05d79db3 | (16 << 27) /* 0.365140629 */,
2074 /* 1925 */ 0x05d8a70f | (16 << 27) /* 0.365393694 */,
2075 /* 1926 */ 0x05d9b076 | (16 << 27) /* 0.365646802 */,
2076 /* 1927 */ 0x05dab9e9 | (16 << 27) /* 0.365899955 */,
2077 /* 1928 */ 0x05dbc368 | (16 << 27) /* 0.366153151 */,
2078 /* 1929 */ 0x05dcccf2 | (16 << 27) /* 0.366406390 */,
2079 /* 1930 */ 0x05ddd689 | (16 << 27) /* 0.366659674 */,
2080 /* 1931 */ 0x05dee02b | (16 << 27) /* 0.366913001 */,
2081 /* 1932 */ 0x05dfe9d8 | (16 << 27) /* 0.367166372 */,
2082 /* 1933 */ 0x05e0f392 | (16 << 27) /* 0.367419787 */,
2083 /* 1934 */ 0x05e1fd57 | (16 << 27) /* 0.367673246 */,
2084 /* 1935 */ 0x05e30728 | (16 << 27) /* 0.367926748 */,
2085
2086 /* 1936 */ 0x05e41105 | (16 << 27) /* 0.368180294 */,
2087 /* 1937 */ 0x05e51aed | (16 << 27) /* 0.368433883 */,
2088 /* 1938 */ 0x05e624e1 | (16 << 27) /* 0.368687517 */,
2089 /* 1939 */ 0x05e72ee1 | (16 << 27) /* 0.368941193 */,
2090 /* 1940 */ 0x05e838ed | (16 << 27) /* 0.369194914 */,
2091 /* 1941 */ 0x05e94304 | (16 << 27) /* 0.369448678 */,
2092 /* 1942 */ 0x05ea4d27 | (16 << 27) /* 0.369702485 */,
2093 /* 1943 */ 0x05eb5756 | (16 << 27) /* 0.369956336 */,
2094 /* 1944 */ 0x05ec6190 | (16 << 27) /* 0.370210231 */,
2095 /* 1945 */ 0x05ed6bd6 | (16 << 27) /* 0.370464169 */,
2096 /* 1946 */ 0x05ee7628 | (16 << 27) /* 0.370718151 */,
2097 /* 1947 */ 0x05ef8085 | (16 << 27) /* 0.370972177 */,
2098 /* 1948 */ 0x05f08aee | (16 << 27) /* 0.371226245 */,
2099 /* 1949 */ 0x05f19563 | (16 << 27) /* 0.371480358 */,
2100 /* 1950 */ 0x05f29fe3 | (16 << 27) /* 0.371734513 */,
2101 /* 1951 */ 0x05f3aa6f | (16 << 27) /* 0.371988712 */,
2102
2103 /* 1952 */ 0x05f4b507 | (16 << 27) /* 0.372242955 */,
2104 /* 1953 */ 0x05f5bfab | (16 << 27) /* 0.372497241 */,
2105 /* 1954 */ 0x05f6ca5a | (16 << 27) /* 0.372751570 */,
2106 /* 1955 */ 0x05f7d514 | (16 << 27) /* 0.373005943 */,
2107 /* 1956 */ 0x05f8dfdb | (16 << 27) /* 0.373260359 */,
2108 /* 1957 */ 0x05f9eaad | (16 << 27) /* 0.373514819 */,
2109 /* 1958 */ 0x05faf58a | (16 << 27) /* 0.373769322 */,
2110 /* 1959 */ 0x05fc0073 | (16 << 27) /* 0.374023868 */,
2111 /* 1960 */ 0x05fd0b68 | (16 << 27) /* 0.374278458 */,
2112 /* 1961 */ 0x05fe1669 | (16 << 27) /* 0.374533091 */,
2113 /* 1962 */ 0x05ff2175 | (16 << 27) /* 0.374787767 */,
2114 /* 1963 */ 0x06002c8d | (16 << 27) /* 0.375042486 */,
2115 /* 1964 */ 0x060137b0 | (16 << 27) /* 0.375297249 */,
2116 /* 1965 */ 0x060242df | (16 << 27) /* 0.375552055 */,
2117 /* 1966 */ 0x06034e19 | (16 << 27) /* 0.375806904 */,
2118 /* 1967 */ 0x0604595f | (16 << 27) /* 0.376061796 */,
2119
2120 /* 1968 */ 0x060564b1 | (16 << 27) /* 0.376316732 */,
2121 /* 1969 */ 0x0606700f | (16 << 27) /* 0.376571710 */,
2122 /* 1970 */ 0x06077b77 | (16 << 27) /* 0.376826732 */,
2123 /* 1971 */ 0x060886ec | (16 << 27) /* 0.377081797 */,
2124 /* 1972 */ 0x0609926c | (16 << 27) /* 0.377336905 */,
2125 /* 1973 */ 0x060a9df8 | (16 << 27) /* 0.377592057 */,
2126 /* 1974 */ 0x060ba98f | (16 << 27) /* 0.377847251 */,
2127 /* 1975 */ 0x060cb532 | (16 << 27) /* 0.378102489 */,
2128 /* 1976 */ 0x060dc0e0 | (16 << 27) /* 0.378357769 */,
2129 /* 1977 */ 0x060ecc9a | (16 << 27) /* 0.378613093 */,
2130 /* 1978 */ 0x060fd860 | (16 << 27) /* 0.378868460 */,
2131 /* 1979 */ 0x0610e431 | (16 << 27) /* 0.379123870 */,
2132 /* 1980 */ 0x0611f00d | (16 << 27) /* 0.379379322 */,
2133 /* 1981 */ 0x0612fbf5 | (16 << 27) /* 0.379634818 */,
2134 /* 1982 */ 0x061407e9 | (16 << 27) /* 0.379890357 */,
2135 /* 1983 */ 0x061513e8 | (16 << 27) /* 0.380145939 */,
2136
2137 /* 1984 */ 0x06161ff3 | (16 << 27) /* 0.380401563 */,
2138 /* 1985 */ 0x06172c09 | (16 << 27) /* 0.380657231 */,
2139 /* 1986 */ 0x0618382b | (16 << 27) /* 0.380912942 */,
2140 /* 1987 */ 0x06194458 | (16 << 27) /* 0.381168695 */,
2141 /* 1988 */ 0x061a5091 | (16 << 27) /* 0.381424492 */,
2142 /* 1989 */ 0x061b5cd5 | (16 << 27) /* 0.381680331 */,
2143 /* 1990 */ 0x061c6925 | (16 << 27) /* 0.381936213 */,
2144 /* 1991 */ 0x061d7581 | (16 << 27) /* 0.382192138 */,
2145 /* 1992 */ 0x061e81e8 | (16 << 27) /* 0.382448106 */,
2146 /* 1993 */ 0x061f8e5a | (16 << 27) /* 0.382704117 */,
2147 /* 1994 */ 0x06209ad8 | (16 << 27) /* 0.382960171 */,
2148 /* 1995 */ 0x0621a761 | (16 << 27) /* 0.383216267 */,
2149 /* 1996 */ 0x0622b3f6 | (16 << 27) /* 0.383472406 */,
2150 /* 1997 */ 0x0623c096 | (16 << 27) /* 0.383728588 */,
2151 /* 1998 */ 0x0624cd42 | (16 << 27) /* 0.383984813 */,
2152 /* 1999 */ 0x0625d9f9 | (16 << 27) /* 0.384241080 */,
2153
2154 /* 2000 */ 0x0626e6bc | (16 << 27) /* 0.384497391 */,
2155 /* 2001 */ 0x0627f38a | (16 << 27) /* 0.384753744 */,
2156 /* 2002 */ 0x06290064 | (16 << 27) /* 0.385010139 */,
2157 /* 2003 */ 0x062a0d49 | (16 << 27) /* 0.385266578 */,
2158 /* 2004 */ 0x062b1a3a | (16 << 27) /* 0.385523059 */,
2159 /* 2005 */ 0x062c2736 | (16 << 27) /* 0.385779582 */,
2160 /* 2006 */ 0x062d343d | (16 << 27) /* 0.386036149 */,
2161 /* 2007 */ 0x062e4150 | (16 << 27) /* 0.386292758 */,
2162 /* 2008 */ 0x062f4e6f | (16 << 27) /* 0.386549409 */,
2163 /* 2009 */ 0x06305b99 | (16 << 27) /* 0.386806104 */,
2164 /* 2010 */ 0x063168ce | (16 << 27) /* 0.387062840 */,
2165 /* 2011 */ 0x0632760f | (16 << 27) /* 0.387319620 */,
2166 /* 2012 */ 0x0633835b | (16 << 27) /* 0.387576442 */,
2167 /* 2013 */ 0x063490b2 | (16 << 27) /* 0.387833306 */,
2168 /* 2014 */ 0x06359e15 | (16 << 27) /* 0.388090213 */,
2169 /* 2015 */ 0x0636ab83 | (16 << 27) /* 0.388347163 */,
2170
2171 /* 2016 */ 0x0637b8fd | (16 << 27) /* 0.388604155 */,
2172 /* 2017 */ 0x0638c682 | (16 << 27) /* 0.388861190 */,
2173 /* 2018 */ 0x0639d413 | (16 << 27) /* 0.389118267 */,
2174 /* 2019 */ 0x063ae1af | (16 << 27) /* 0.389375386 */,
2175 /* 2020 */ 0x063bef56 | (16 << 27) /* 0.389632548 */,
2176 /* 2021 */ 0x063cfd09 | (16 << 27) /* 0.389889752 */,
2177 /* 2022 */ 0x063e0ac7 | (16 << 27) /* 0.390146999 */,
2178 /* 2023 */ 0x063f1891 | (16 << 27) /* 0.390404289 */,
2179 /* 2024 */ 0x06402666 | (16 << 27) /* 0.390661620 */,
2180 /* 2025 */ 0x06413446 | (16 << 27) /* 0.390918994 */,
2181 /* 2026 */ 0x06424232 | (16 << 27) /* 0.391176411 */,
2182 /* 2027 */ 0x06435029 | (16 << 27) /* 0.391433869 */,
2183 /* 2028 */ 0x06445e2b | (16 << 27) /* 0.391691371 */,
2184 /* 2029 */ 0x06456c39 | (16 << 27) /* 0.391948914 */,
2185 /* 2030 */ 0x06467a52 | (16 << 27) /* 0.392206500 */,
2186 /* 2031 */ 0x06478877 | (16 << 27) /* 0.392464128 */,
2187
2188 /* 2032 */ 0x064896a7 | (16 << 27) /* 0.392721798 */,
2189 /* 2033 */ 0x0649a4e2 | (16 << 27) /* 0.392979511 */,
2190 /* 2034 */ 0x064ab328 | (16 << 27) /* 0.393237266 */,
2191 /* 2035 */ 0x064bc17a | (16 << 27) /* 0.393495063 */,
2192 /* 2036 */ 0x064ccfd8 | (16 << 27) /* 0.393752902 */,
2193 /* 2037 */ 0x064dde40 | (16 << 27) /* 0.394010784 */,
2194 /* 2038 */ 0x064eecb4 | (16 << 27) /* 0.394268707 */,
2195 /* 2039 */ 0x064ffb33 | (16 << 27) /* 0.394526673 */,
2196 /* 2040 */ 0x065109be | (16 << 27) /* 0.394784681 */,
2197 /* 2041 */ 0x06521854 | (16 << 27) /* 0.395042732 */,
2198 /* 2042 */ 0x065326f5 | (16 << 27) /* 0.395300824 */,
2199 /* 2043 */ 0x065435a1 | (16 << 27) /* 0.395558959 */,
2200 /* 2044 */ 0x06554459 | (16 << 27) /* 0.395817135 */,
2201 /* 2045 */ 0x0656531c | (16 << 27) /* 0.396075354 */,
2202 /* 2046 */ 0x065761ea | (16 << 27) /* 0.396333615 */,
2203 /* 2047 */ 0x065870c4 | (16 << 27) /* 0.396591918 */,
2204
2205 /* 2048 */ 0x06597fa9 | (16 << 27) /* 0.396850263 */,
2206 /* 2049 */ 0x065a8e99 | (16 << 27) /* 0.397108650 */,
2207 /* 2050 */ 0x065b9d95 | (16 << 27) /* 0.397367079 */,
2208 /* 2051 */ 0x065cac9c | (16 << 27) /* 0.397625550 */,
2209 /* 2052 */ 0x065dbbae | (16 << 27) /* 0.397884063 */,
2210 /* 2053 */ 0x065ecacb | (16 << 27) /* 0.398142619 */,
2211 /* 2054 */ 0x065fd9f4 | (16 << 27) /* 0.398401216 */,
2212 /* 2055 */ 0x0660e928 | (16 << 27) /* 0.398659855 */,
2213 /* 2056 */ 0x0661f867 | (16 << 27) /* 0.398918536 */,
2214 /* 2057 */ 0x066307b1 | (16 << 27) /* 0.399177259 */,
2215 /* 2058 */ 0x06641707 | (16 << 27) /* 0.399436024 */,
2216 /* 2059 */ 0x06652668 | (16 << 27) /* 0.399694831 */,
2217 /* 2060 */ 0x066635d4 | (16 << 27) /* 0.399953679 */,
2218 /* 2061 */ 0x0667454c | (16 << 27) /* 0.400212570 */,
2219 /* 2062 */ 0x066854ce | (16 << 27) /* 0.400471503 */,
2220 /* 2063 */ 0x0669645c | (16 << 27) /* 0.400730477 */,
2221
2222 /* 2064 */ 0x066a73f5 | (16 << 27) /* 0.400989493 */,
2223 /* 2065 */ 0x066b839a | (16 << 27) /* 0.401248551 */,
2224 /* 2066 */ 0x066c9349 | (16 << 27) /* 0.401507651 */,
2225 /* 2067 */ 0x066da304 | (16 << 27) /* 0.401766793 */,
2226 /* 2068 */ 0x066eb2ca | (16 << 27) /* 0.402025976 */,
2227 /* 2069 */ 0x066fc29b | (16 << 27) /* 0.402285202 */,
2228 /* 2070 */ 0x0670d278 | (16 << 27) /* 0.402544469 */,
2229 /* 2071 */ 0x0671e25f | (16 << 27) /* 0.402803777 */,
2230 /* 2072 */ 0x0672f252 | (16 << 27) /* 0.403063128 */,
2231 /* 2073 */ 0x06740250 | (16 << 27) /* 0.403322520 */,
2232 /* 2074 */ 0x0675125a | (16 << 27) /* 0.403581954 */,
2233 /* 2075 */ 0x0676226e | (16 << 27) /* 0.403841430 */,
2234 /* 2076 */ 0x0677328e | (16 << 27) /* 0.404100947 */,
2235 /* 2077 */ 0x067842b9 | (16 << 27) /* 0.404360506 */,
2236 /* 2078 */ 0x067952ef | (16 << 27) /* 0.404620107 */,
2237 /* 2079 */ 0x067a6330 | (16 << 27) /* 0.404879749 */,
2238
2239 /* 2080 */ 0x067b737c | (16 << 27) /* 0.405139433 */,
2240 /* 2081 */ 0x067c83d4 | (16 << 27) /* 0.405399159 */,
2241 /* 2082 */ 0x067d9436 | (16 << 27) /* 0.405658926 */,
2242 /* 2083 */ 0x067ea4a4 | (16 << 27) /* 0.405918735 */,
2243 /* 2084 */ 0x067fb51d | (16 << 27) /* 0.406178585 */,
2244 /* 2085 */ 0x0680c5a2 | (16 << 27) /* 0.406438477 */,
2245 /* 2086 */ 0x0681d631 | (16 << 27) /* 0.406698410 */,
2246 /* 2087 */ 0x0682e6cb | (16 << 27) /* 0.406958385 */,
2247 /* 2088 */ 0x0683f771 | (16 << 27) /* 0.407218402 */,
2248 /* 2089 */ 0x06850822 | (16 << 27) /* 0.407478460 */,
2249 /* 2090 */ 0x068618de | (16 << 27) /* 0.407738559 */,
2250 /* 2091 */ 0x068729a5 | (16 << 27) /* 0.407998700 */,
2251 /* 2092 */ 0x06883a77 | (16 << 27) /* 0.408258883 */,
2252 /* 2093 */ 0x06894b55 | (16 << 27) /* 0.408519107 */,
2253 /* 2094 */ 0x068a5c3d | (16 << 27) /* 0.408779372 */,
2254 /* 2095 */ 0x068b6d31 | (16 << 27) /* 0.409039679 */,
2255
2256 /* 2096 */ 0x068c7e2f | (16 << 27) /* 0.409300027 */,
2257 /* 2097 */ 0x068d8f39 | (16 << 27) /* 0.409560417 */,
2258 /* 2098 */ 0x068ea04e | (16 << 27) /* 0.409820848 */,
2259 /* 2099 */ 0x068fb16e | (16 << 27) /* 0.410081321 */,
2260 /* 2100 */ 0x0690c299 | (16 << 27) /* 0.410341834 */,
2261 /* 2101 */ 0x0691d3cf | (16 << 27) /* 0.410602390 */,
2262 /* 2102 */ 0x0692e511 | (16 << 27) /* 0.410862986 */,
2263 /* 2103 */ 0x0693f65d | (16 << 27) /* 0.411123624 */,
2264 /* 2104 */ 0x069507b5 | (16 << 27) /* 0.411384303 */,
2265 /* 2105 */ 0x06961917 | (16 << 27) /* 0.411645024 */,
2266 /* 2106 */ 0x06972a85 | (16 << 27) /* 0.411905785 */,
2267 /* 2107 */ 0x06983bfe | (16 << 27) /* 0.412166588 */,
2268 /* 2108 */ 0x06994d82 | (16 << 27) /* 0.412427433 */,
2269 /* 2109 */ 0x069a5f11 | (16 << 27) /* 0.412688318 */,
2270 /* 2110 */ 0x069b70ab | (16 << 27) /* 0.412949245 */,
2271 /* 2111 */ 0x069c8250 | (16 << 27) /* 0.413210213 */,
2272
2273 /* 2112 */ 0x069d9400 | (16 << 27) /* 0.413471222 */,
2274 /* 2113 */ 0x069ea5bb | (16 << 27) /* 0.413732273 */,
2275 /* 2114 */ 0x069fb781 | (16 << 27) /* 0.413993364 */,
2276 /* 2115 */ 0x06a0c953 | (16 << 27) /* 0.414254497 */,
2277 /* 2116 */ 0x06a1db2f | (16 << 27) /* 0.414515671 */,
2278 /* 2117 */ 0x06a2ed16 | (16 << 27) /* 0.414776886 */,
2279 /* 2118 */ 0x06a3ff09 | (16 << 27) /* 0.415038142 */,
2280 /* 2119 */ 0x06a51106 | (16 << 27) /* 0.415299440 */,
2281 /* 2120 */ 0x06a6230f | (16 << 27) /* 0.415560778 */,
2282 /* 2121 */ 0x06a73522 | (16 << 27) /* 0.415822157 */,
2283 /* 2122 */ 0x06a84741 | (16 << 27) /* 0.416083578 */,
2284 /* 2123 */ 0x06a9596a | (16 << 27) /* 0.416345040 */,
2285 /* 2124 */ 0x06aa6b9f | (16 << 27) /* 0.416606542 */,
2286 /* 2125 */ 0x06ab7ddf | (16 << 27) /* 0.416868086 */,
2287 /* 2126 */ 0x06ac9029 | (16 << 27) /* 0.417129671 */,
2288 /* 2127 */ 0x06ada27f | (16 << 27) /* 0.417391297 */,
2289
2290 /* 2128 */ 0x06aeb4e0 | (16 << 27) /* 0.417652964 */,
2291 /* 2129 */ 0x06afc74b | (16 << 27) /* 0.417914672 */,
2292 /* 2130 */ 0x06b0d9c2 | (16 << 27) /* 0.418176420 */,
2293 /* 2131 */ 0x06b1ec43 | (16 << 27) /* 0.418438210 */,
2294 /* 2132 */ 0x06b2fed0 | (16 << 27) /* 0.418700041 */,
2295 /* 2133 */ 0x06b41168 | (16 << 27) /* 0.418961912 */,
2296 /* 2134 */ 0x06b5240a | (16 << 27) /* 0.419223825 */,
2297 /* 2135 */ 0x06b636b8 | (16 << 27) /* 0.419485778 */,
2298 /* 2136 */ 0x06b74971 | (16 << 27) /* 0.419747773 */,
2299 /* 2137 */ 0x06b85c34 | (16 << 27) /* 0.420009808 */,
2300 /* 2138 */ 0x06b96f03 | (16 << 27) /* 0.420271884 */,
2301 /* 2139 */ 0x06ba81dc | (16 << 27) /* 0.420534001 */,
2302 /* 2140 */ 0x06bb94c1 | (16 << 27) /* 0.420796159 */,
2303 /* 2141 */ 0x06bca7b0 | (16 << 27) /* 0.421058358 */,
2304 /* 2142 */ 0x06bdbaaa | (16 << 27) /* 0.421320597 */,
2305 /* 2143 */ 0x06becdb0 | (16 << 27) /* 0.421582878 */,
2306
2307 /* 2144 */ 0x06bfe0c0 | (16 << 27) /* 0.421845199 */,
2308 /* 2145 */ 0x06c0f3db | (16 << 27) /* 0.422107561 */,
2309 /* 2146 */ 0x06c20702 | (16 << 27) /* 0.422369964 */,
2310 /* 2147 */ 0x06c31a33 | (16 << 27) /* 0.422632407 */,
2311 /* 2148 */ 0x06c42d6f | (16 << 27) /* 0.422894891 */,
2312 /* 2149 */ 0x06c540b6 | (16 << 27) /* 0.423157416 */,
2313 /* 2150 */ 0x06c65408 | (16 << 27) /* 0.423419982 */,
2314 /* 2151 */ 0x06c76765 | (16 << 27) /* 0.423682588 */,
2315 /* 2152 */ 0x06c87acc | (16 << 27) /* 0.423945235 */,
2316 /* 2153 */ 0x06c98e3f | (16 << 27) /* 0.424207923 */,
2317 /* 2154 */ 0x06caa1bd | (16 << 27) /* 0.424470652 */,
2318 /* 2155 */ 0x06cbb545 | (16 << 27) /* 0.424733421 */,
2319 /* 2156 */ 0x06ccc8d9 | (16 << 27) /* 0.424996230 */,
2320 /* 2157 */ 0x06cddc77 | (16 << 27) /* 0.425259081 */,
2321 /* 2158 */ 0x06cef020 | (16 << 27) /* 0.425521972 */,
2322 /* 2159 */ 0x06d003d4 | (16 << 27) /* 0.425784903 */,
2323
2324 /* 2160 */ 0x06d11794 | (16 << 27) /* 0.426047876 */,
2325 /* 2161 */ 0x06d22b5e | (16 << 27) /* 0.426310889 */,
2326 /* 2162 */ 0x06d33f32 | (16 << 27) /* 0.426573942 */,
2327 /* 2163 */ 0x06d45312 | (16 << 27) /* 0.426837036 */,
2328 /* 2164 */ 0x06d566fd | (16 << 27) /* 0.427100170 */,
2329 /* 2165 */ 0x06d67af2 | (16 << 27) /* 0.427363345 */,
2330 /* 2166 */ 0x06d78ef3 | (16 << 27) /* 0.427626561 */,
2331 /* 2167 */ 0x06d8a2fe | (16 << 27) /* 0.427889817 */,
2332 /* 2168 */ 0x06d9b714 | (16 << 27) /* 0.428153114 */,
2333 /* 2169 */ 0x06dacb35 | (16 << 27) /* 0.428416451 */,
2334 /* 2170 */ 0x06dbdf61 | (16 << 27) /* 0.428679828 */,
2335 /* 2171 */ 0x06dcf398 | (16 << 27) /* 0.428943246 */,
2336 /* 2172 */ 0x06de07d9 | (16 << 27) /* 0.429206704 */,
2337 /* 2173 */ 0x06df1c26 | (16 << 27) /* 0.429470203 */,
2338 /* 2174 */ 0x06e0307d | (16 << 27) /* 0.429733743 */,
2339 /* 2175 */ 0x06e144df | (16 << 27) /* 0.429997322 */,
2340
2341 /* 2176 */ 0x06e2594c | (16 << 27) /* 0.430260942 */,
2342 /* 2177 */ 0x06e36dc4 | (16 << 27) /* 0.430524603 */,
2343 /* 2178 */ 0x06e48246 | (16 << 27) /* 0.430788304 */,
2344 /* 2179 */ 0x06e596d4 | (16 << 27) /* 0.431052045 */,
2345 /* 2180 */ 0x06e6ab6c | (16 << 27) /* 0.431315826 */,
2346 /* 2181 */ 0x06e7c00f | (16 << 27) /* 0.431579648 */,
2347 /* 2182 */ 0x06e8d4bd | (16 << 27) /* 0.431843511 */,
2348 /* 2183 */ 0x06e9e976 | (16 << 27) /* 0.432107413 */,
2349 /* 2184 */ 0x06eafe3a | (16 << 27) /* 0.432371356 */,
2350 /* 2185 */ 0x06ec1308 | (16 << 27) /* 0.432635339 */,
2351 /* 2186 */ 0x06ed27e2 | (16 << 27) /* 0.432899362 */,
2352 /* 2187 */ 0x06ee3cc6 | (16 << 27) /* 0.433163426 */,
2353 /* 2188 */ 0x06ef51b4 | (16 << 27) /* 0.433427530 */,
2354 /* 2189 */ 0x06f066ae | (16 << 27) /* 0.433691674 */,
2355 /* 2190 */ 0x06f17bb3 | (16 << 27) /* 0.433955859 */,
2356 /* 2191 */ 0x06f290c2 | (16 << 27) /* 0.434220083 */,
2357
2358 /* 2192 */ 0x06f3a5dc | (16 << 27) /* 0.434484348 */,
2359 /* 2193 */ 0x06f4bb01 | (16 << 27) /* 0.434748653 */,
2360 /* 2194 */ 0x06f5d030 | (16 << 27) /* 0.435012998 */,
2361 /* 2195 */ 0x06f6e56b | (16 << 27) /* 0.435277383 */,
2362 /* 2196 */ 0x06f7fab0 | (16 << 27) /* 0.435541809 */,
2363 /* 2197 */ 0x06f91000 | (16 << 27) /* 0.435806274 */,
2364 /* 2198 */ 0x06fa255a | (16 << 27) /* 0.436070780 */,
2365 /* 2199 */ 0x06fb3ac0 | (16 << 27) /* 0.436335326 */,
2366 /* 2200 */ 0x06fc5030 | (16 << 27) /* 0.436599912 */,
2367 /* 2201 */ 0x06fd65ab | (16 << 27) /* 0.436864538 */,
2368 /* 2202 */ 0x06fe7b31 | (16 << 27) /* 0.437129204 */,
2369 /* 2203 */ 0x06ff90c2 | (16 << 27) /* 0.437393910 */,
2370 /* 2204 */ 0x0700a65d | (16 << 27) /* 0.437658657 */,
2371 /* 2205 */ 0x0701bc03 | (16 << 27) /* 0.437923443 */,
2372 /* 2206 */ 0x0702d1b4 | (16 << 27) /* 0.438188269 */,
2373 /* 2207 */ 0x0703e76f | (16 << 27) /* 0.438453136 */,
2374
2375 /* 2208 */ 0x0704fd35 | (16 << 27) /* 0.438718042 */,
2376 /* 2209 */ 0x07061306 | (16 << 27) /* 0.438982988 */,
2377 /* 2210 */ 0x070728e2 | (16 << 27) /* 0.439247975 */,
2378 /* 2211 */ 0x07083ec9 | (16 << 27) /* 0.439513001 */,
2379 /* 2212 */ 0x070954ba | (16 << 27) /* 0.439778067 */,
2380 /* 2213 */ 0x070a6ab6 | (16 << 27) /* 0.440043173 */,
2381 /* 2214 */ 0x070b80bc | (16 << 27) /* 0.440308320 */,
2382 /* 2215 */ 0x070c96ce | (16 << 27) /* 0.440573506 */,
2383 /* 2216 */ 0x070dacea | (16 << 27) /* 0.440838732 */,
2384 /* 2217 */ 0x070ec310 | (16 << 27) /* 0.441103997 */,
2385 /* 2218 */ 0x070fd942 | (16 << 27) /* 0.441369303 */,
2386 /* 2219 */ 0x0710ef7e | (16 << 27) /* 0.441634649 */,
2387 /* 2220 */ 0x071205c5 | (16 << 27) /* 0.441900034 */,
2388 /* 2221 */ 0x07131c17 | (16 << 27) /* 0.442165460 */,
2389 /* 2222 */ 0x07143273 | (16 << 27) /* 0.442430925 */,
2390 /* 2223 */ 0x071548da | (16 << 27) /* 0.442696430 */,
2391
2392 /* 2224 */ 0x07165f4b | (16 << 27) /* 0.442961975 */,
2393 /* 2225 */ 0x071775c8 | (16 << 27) /* 0.443227559 */,
2394 /* 2226 */ 0x07188c4f | (16 << 27) /* 0.443493184 */,
2395 /* 2227 */ 0x0719a2e0 | (16 << 27) /* 0.443758848 */,
2396 /* 2228 */ 0x071ab97d | (16 << 27) /* 0.444024552 */,
2397 /* 2229 */ 0x071bd024 | (16 << 27) /* 0.444290296 */,
2398 /* 2230 */ 0x071ce6d6 | (16 << 27) /* 0.444556079 */,
2399 /* 2231 */ 0x071dfd92 | (16 << 27) /* 0.444821902 */,
2400 /* 2232 */ 0x071f1459 | (16 << 27) /* 0.445087765 */,
2401 /* 2233 */ 0x07202b2b | (16 << 27) /* 0.445353668 */,
2402 /* 2234 */ 0x07214207 | (16 << 27) /* 0.445619610 */,
2403 /* 2235 */ 0x072258ee | (16 << 27) /* 0.445885592 */,
2404 /* 2236 */ 0x07236fe0 | (16 << 27) /* 0.446151614 */,
2405 /* 2237 */ 0x072486dc | (16 << 27) /* 0.446417675 */,
2406 /* 2238 */ 0x07259de3 | (16 << 27) /* 0.446683776 */,
2407 /* 2239 */ 0x0726b4f4 | (16 << 27) /* 0.446949917 */,
2408
2409 /* 2240 */ 0x0727cc11 | (16 << 27) /* 0.447216097 */,
2410 /* 2241 */ 0x0728e338 | (16 << 27) /* 0.447482317 */,
2411 /* 2242 */ 0x0729fa69 | (16 << 27) /* 0.447748576 */,
2412 /* 2243 */ 0x072b11a5 | (16 << 27) /* 0.448014875 */,
2413 /* 2244 */ 0x072c28ec | (16 << 27) /* 0.448281214 */,
2414 /* 2245 */ 0x072d403d | (16 << 27) /* 0.448547592 */,
2415 /* 2246 */ 0x072e5799 | (16 << 27) /* 0.448814010 */,
2416 /* 2247 */ 0x072f6f00 | (16 << 27) /* 0.449080467 */,
2417 /* 2248 */ 0x07308671 | (16 << 27) /* 0.449346964 */,
2418 /* 2249 */ 0x07319ded | (16 << 27) /* 0.449613501 */,
2419 /* 2250 */ 0x0732b573 | (16 << 27) /* 0.449880076 */,
2420 /* 2251 */ 0x0733cd04 | (16 << 27) /* 0.450146692 */,
2421 /* 2252 */ 0x0734e4a0 | (16 << 27) /* 0.450413347 */,
2422 /* 2253 */ 0x0735fc46 | (16 << 27) /* 0.450680041 */,
2423 /* 2254 */ 0x073713f7 | (16 << 27) /* 0.450946775 */,
2424 /* 2255 */ 0x07382bb2 | (16 << 27) /* 0.451213548 */,
2425
2426 /* 2256 */ 0x07394378 | (16 << 27) /* 0.451480360 */,
2427 /* 2257 */ 0x073a5b49 | (16 << 27) /* 0.451747213 */,
2428 /* 2258 */ 0x073b7324 | (16 << 27) /* 0.452014104 */,
2429 /* 2259 */ 0x073c8b0a | (16 << 27) /* 0.452281035 */,
2430 /* 2260 */ 0x073da2fa | (16 << 27) /* 0.452548005 */,
2431 /* 2261 */ 0x073ebaf5 | (16 << 27) /* 0.452815015 */,
2432 /* 2262 */ 0x073fd2fa | (16 << 27) /* 0.453082064 */,
2433 /* 2263 */ 0x0740eb0a | (16 << 27) /* 0.453349152 */,
2434 /* 2264 */ 0x07420325 | (16 << 27) /* 0.453616280 */,
2435 /* 2265 */ 0x07431b4a | (16 << 27) /* 0.453883447 */,
2436 /* 2266 */ 0x0744337a | (16 << 27) /* 0.454150653 */,
2437 /* 2267 */ 0x07454bb4 | (16 << 27) /* 0.454417899 */,
2438 /* 2268 */ 0x074663f8 | (16 << 27) /* 0.454685184 */,
2439 /* 2269 */ 0x07477c48 | (16 << 27) /* 0.454952508 */,
2440 /* 2270 */ 0x074894a2 | (16 << 27) /* 0.455219872 */,
2441 /* 2271 */ 0x0749ad06 | (16 << 27) /* 0.455487275 */,
2442
2443 /* 2272 */ 0x074ac575 | (16 << 27) /* 0.455754717 */,
2444 /* 2273 */ 0x074bddee | (16 << 27) /* 0.456022198 */,
2445 /* 2274 */ 0x074cf672 | (16 << 27) /* 0.456289719 */,
2446 /* 2275 */ 0x074e0f01 | (16 << 27) /* 0.456557278 */,
2447 /* 2276 */ 0x074f279a | (16 << 27) /* 0.456824877 */,
2448 /* 2277 */ 0x0750403e | (16 << 27) /* 0.457092516 */,
2449 /* 2278 */ 0x075158ec | (16 << 27) /* 0.457360193 */,
2450 /* 2279 */ 0x075271a4 | (16 << 27) /* 0.457627909 */,
2451 /* 2280 */ 0x07538a67 | (16 << 27) /* 0.457895665 */,
2452 /* 2281 */ 0x0754a335 | (16 << 27) /* 0.458163460 */,
2453 /* 2282 */ 0x0755bc0d | (16 << 27) /* 0.458431294 */,
2454 /* 2283 */ 0x0756d4f0 | (16 << 27) /* 0.458699167 */,
2455 /* 2284 */ 0x0757eddd | (16 << 27) /* 0.458967079 */,
2456 /* 2285 */ 0x075906d5 | (16 << 27) /* 0.459235030 */,
2457 /* 2286 */ 0x075a1fd7 | (16 << 27) /* 0.459503021 */,
2458 /* 2287 */ 0x075b38e3 | (16 << 27) /* 0.459771050 */,
2459
2460 /* 2288 */ 0x075c51fa | (16 << 27) /* 0.460039119 */,
2461 /* 2289 */ 0x075d6b1c | (16 << 27) /* 0.460307226 */,
2462 /* 2290 */ 0x075e8448 | (16 << 27) /* 0.460575373 */,
2463 /* 2291 */ 0x075f9d7f | (16 << 27) /* 0.460843559 */,
2464 /* 2292 */ 0x0760b6c0 | (16 << 27) /* 0.461111783 */,
2465 /* 2293 */ 0x0761d00b | (16 << 27) /* 0.461380047 */,
2466 /* 2294 */ 0x0762e961 | (16 << 27) /* 0.461648350 */,
2467 /* 2295 */ 0x076402c1 | (16 << 27) /* 0.461916691 */,
2468 /* 2296 */ 0x07651c2c | (16 << 27) /* 0.462185072 */,
2469 /* 2297 */ 0x076635a2 | (16 << 27) /* 0.462453492 */,
2470 /* 2298 */ 0x07674f22 | (16 << 27) /* 0.462721950 */,
2471 /* 2299 */ 0x076868ac | (16 << 27) /* 0.462990448 */,
2472 /* 2300 */ 0x07698240 | (16 << 27) /* 0.463258984 */,
2473 /* 2301 */ 0x076a9be0 | (16 << 27) /* 0.463527560 */,
2474 /* 2302 */ 0x076bb589 | (16 << 27) /* 0.463796174 */,
2475 /* 2303 */ 0x076ccf3d | (16 << 27) /* 0.464064827 */,
2476
2477 /* 2304 */ 0x076de8fc | (16 << 27) /* 0.464333519 */,
2478 /* 2305 */ 0x076f02c5 | (16 << 27) /* 0.464602250 */,
2479 /* 2306 */ 0x07701c98 | (16 << 27) /* 0.464871020 */,
2480 /* 2307 */ 0x07713676 | (16 << 27) /* 0.465139829 */,
2481 /* 2308 */ 0x0772505e | (16 << 27) /* 0.465408676 */,
2482 /* 2309 */ 0x07736a51 | (16 << 27) /* 0.465677563 */,
2483 /* 2310 */ 0x0774844e | (16 << 27) /* 0.465946488 */,
2484 /* 2311 */ 0x07759e55 | (16 << 27) /* 0.466215452 */,
2485 /* 2312 */ 0x0776b867 | (16 << 27) /* 0.466484455 */,
2486 /* 2313 */ 0x0777d283 | (16 << 27) /* 0.466753496 */,
2487 /* 2314 */ 0x0778ecaa | (16 << 27) /* 0.467022577 */,
2488 /* 2315 */ 0x077a06db | (16 << 27) /* 0.467291696 */,
2489 /* 2316 */ 0x077b2117 | (16 << 27) /* 0.467560854 */,
2490 /* 2317 */ 0x077c3b5d | (16 << 27) /* 0.467830050 */,
2491 /* 2318 */ 0x077d55ad | (16 << 27) /* 0.468099285 */,
2492 /* 2319 */ 0x077e7008 | (16 << 27) /* 0.468368560 */,
2493
2494 /* 2320 */ 0x077f8a6d | (16 << 27) /* 0.468637872 */,
2495 /* 2321 */ 0x0780a4dc | (16 << 27) /* 0.468907224 */,
2496 /* 2322 */ 0x0781bf56 | (16 << 27) /* 0.469176614 */,
2497 /* 2323 */ 0x0782d9da | (16 << 27) /* 0.469446043 */,
2498 /* 2324 */ 0x0783f469 | (16 << 27) /* 0.469715510 */,
2499 /* 2325 */ 0x07850f02 | (16 << 27) /* 0.469985016 */,
2500 /* 2326 */ 0x078629a5 | (16 << 27) /* 0.470254561 */,
2501 /* 2327 */ 0x07874453 | (16 << 27) /* 0.470524145 */,
2502 /* 2328 */ 0x07885f0b | (16 << 27) /* 0.470793767 */,
2503 /* 2329 */ 0x078979ce | (16 << 27) /* 0.471063427 */,
2504 /* 2330 */ 0x078a949a | (16 << 27) /* 0.471333126 */,
2505 /* 2331 */ 0x078baf72 | (16 << 27) /* 0.471602864 */,
2506 /* 2332 */ 0x078cca53 | (16 << 27) /* 0.471872641 */,
2507 /* 2333 */ 0x078de53f | (16 << 27) /* 0.472142456 */,
2508 /* 2334 */ 0x078f0035 | (16 << 27) /* 0.472412309 */,
2509 /* 2335 */ 0x07901b36 | (16 << 27) /* 0.472682201 */,
2510
2511 /* 2336 */ 0x07913641 | (16 << 27) /* 0.472952132 */,
2512 /* 2337 */ 0x07925156 | (16 << 27) /* 0.473222101 */,
2513 /* 2338 */ 0x07936c76 | (16 << 27) /* 0.473492108 */,
2514 /* 2339 */ 0x079487a0 | (16 << 27) /* 0.473762155 */,
2515 /* 2340 */ 0x0795a2d4 | (16 << 27) /* 0.474032239 */,
2516 /* 2341 */ 0x0796be13 | (16 << 27) /* 0.474302362 */,
2517 /* 2342 */ 0x0797d95c | (16 << 27) /* 0.474572524 */,
2518 /* 2343 */ 0x0798f4af | (16 << 27) /* 0.474842724 */,
2519 /* 2344 */ 0x079a100c | (16 << 27) /* 0.475112962 */,
2520 /* 2345 */ 0x079b2b74 | (16 << 27) /* 0.475383239 */,
2521 /* 2346 */ 0x079c46e7 | (16 << 27) /* 0.475653554 */,
2522 /* 2347 */ 0x079d6263 | (16 << 27) /* 0.475923908 */,
2523 /* 2348 */ 0x079e7dea | (16 << 27) /* 0.476194300 */,
2524 /* 2349 */ 0x079f997b | (16 << 27) /* 0.476464731 */,
2525 /* 2350 */ 0x07a0b516 | (16 << 27) /* 0.476735200 */,
2526 /* 2351 */ 0x07a1d0bc | (16 << 27) /* 0.477005707 */,
2527
2528 /* 2352 */ 0x07a2ec6c | (16 << 27) /* 0.477276252 */,
2529 /* 2353 */ 0x07a40827 | (16 << 27) /* 0.477546836 */,
2530 /* 2354 */ 0x07a523eb | (16 << 27) /* 0.477817459 */,
2531 /* 2355 */ 0x07a63fba | (16 << 27) /* 0.478088119 */,
2532 /* 2356 */ 0x07a75b93 | (16 << 27) /* 0.478358818 */,
2533 /* 2357 */ 0x07a87777 | (16 << 27) /* 0.478629555 */,
2534 /* 2358 */ 0x07a99364 | (16 << 27) /* 0.478900331 */,
2535 /* 2359 */ 0x07aaaf5c | (16 << 27) /* 0.479171145 */,
2536 /* 2360 */ 0x07abcb5f | (16 << 27) /* 0.479441997 */,
2537 /* 2361 */ 0x07ace76b | (16 << 27) /* 0.479712887 */,
2538 /* 2362 */ 0x07ae0382 | (16 << 27) /* 0.479983816 */,
2539 /* 2363 */ 0x07af1fa3 | (16 << 27) /* 0.480254782 */,
2540 /* 2364 */ 0x07b03bcf | (16 << 27) /* 0.480525787 */,
2541 /* 2365 */ 0x07b15804 | (16 << 27) /* 0.480796831 */,
2542 /* 2366 */ 0x07b27444 | (16 << 27) /* 0.481067912 */,
2543 /* 2367 */ 0x07b3908e | (16 << 27) /* 0.481339032 */,
2544
2545 /* 2368 */ 0x07b4ace3 | (16 << 27) /* 0.481610189 */,
2546 /* 2369 */ 0x07b5c941 | (16 << 27) /* 0.481881385 */,
2547 /* 2370 */ 0x07b6e5aa | (16 << 27) /* 0.482152620 */,
2548 /* 2371 */ 0x07b8021d | (16 << 27) /* 0.482423892 */,
2549 /* 2372 */ 0x07b91e9b | (16 << 27) /* 0.482695202 */,
2550 /* 2373 */ 0x07ba3b22 | (16 << 27) /* 0.482966551 */,
2551 /* 2374 */ 0x07bb57b4 | (16 << 27) /* 0.483237938 */,
2552 /* 2375 */ 0x07bc7450 | (16 << 27) /* 0.483509362 */,
2553 /* 2376 */ 0x07bd90f6 | (16 << 27) /* 0.483780825 */,
2554 /* 2377 */ 0x07beada7 | (16 << 27) /* 0.484052326 */,
2555 /* 2378 */ 0x07bfca61 | (16 << 27) /* 0.484323865 */,
2556 /* 2379 */ 0x07c0e726 | (16 << 27) /* 0.484595443 */,
2557 /* 2380 */ 0x07c203f5 | (16 << 27) /* 0.484867058 */,
2558 /* 2381 */ 0x07c320cf | (16 << 27) /* 0.485138711 */,
2559 /* 2382 */ 0x07c43db2 | (16 << 27) /* 0.485410402 */,
2560 /* 2383 */ 0x07c55aa0 | (16 << 27) /* 0.485682131 */,
2561
2562 /* 2384 */ 0x07c67798 | (16 << 27) /* 0.485953899 */,
2563 /* 2385 */ 0x07c7949a | (16 << 27) /* 0.486225704 */,
2564 /* 2386 */ 0x07c8b1a7 | (16 << 27) /* 0.486497547 */,
2565 /* 2387 */ 0x07c9cebd | (16 << 27) /* 0.486769429 */,
2566 /* 2388 */ 0x07caebde | (16 << 27) /* 0.487041348 */,
2567 /* 2389 */ 0x07cc0909 | (16 << 27) /* 0.487313305 */,
2568 /* 2390 */ 0x07cd263e | (16 << 27) /* 0.487585300 */,
2569 /* 2391 */ 0x07ce437d | (16 << 27) /* 0.487857333 */,
2570 /* 2392 */ 0x07cf60c7 | (16 << 27) /* 0.488129404 */,
2571 /* 2393 */ 0x07d07e1b | (16 << 27) /* 0.488401513 */,
2572 /* 2394 */ 0x07d19b79 | (16 << 27) /* 0.488673660 */,
2573 /* 2395 */ 0x07d2b8e1 | (16 << 27) /* 0.488945845 */,
2574 /* 2396 */ 0x07d3d653 | (16 << 27) /* 0.489218067 */,
2575 /* 2397 */ 0x07d4f3cf | (16 << 27) /* 0.489490328 */,
2576 /* 2398 */ 0x07d61156 | (16 << 27) /* 0.489762626 */,
2577 /* 2399 */ 0x07d72ee6 | (16 << 27) /* 0.490034962 */,
2578
2579 /* 2400 */ 0x07d84c81 | (16 << 27) /* 0.490307336 */,
2580 /* 2401 */ 0x07d96a26 | (16 << 27) /* 0.490579748 */,
2581 /* 2402 */ 0x07da87d5 | (16 << 27) /* 0.490852198 */,
2582 /* 2403 */ 0x07dba58f | (16 << 27) /* 0.491124686 */,
2583 /* 2404 */ 0x07dcc352 | (16 << 27) /* 0.491397211 */,
2584 /* 2405 */ 0x07dde120 | (16 << 27) /* 0.491669774 */,
2585 /* 2406 */ 0x07defef7 | (16 << 27) /* 0.491942375 */,
2586 /* 2407 */ 0x07e01cd9 | (16 << 27) /* 0.492215014 */,
2587 /* 2408 */ 0x07e13ac5 | (16 << 27) /* 0.492487690 */,
2588 /* 2409 */ 0x07e258bc | (16 << 27) /* 0.492760404 */,
2589 /* 2410 */ 0x07e376bc | (16 << 27) /* 0.493033156 */,
2590 /* 2411 */ 0x07e494c6 | (16 << 27) /* 0.493305946 */,
2591 /* 2412 */ 0x07e5b2db | (16 << 27) /* 0.493578773 */,
2592 /* 2413 */ 0x07e6d0f9 | (16 << 27) /* 0.493851638 */,
2593 /* 2414 */ 0x07e7ef22 | (16 << 27) /* 0.494124541 */,
2594 /* 2415 */ 0x07e90d55 | (16 << 27) /* 0.494397481 */,
2595
2596 /* 2416 */ 0x07ea2b92 | (16 << 27) /* 0.494670459 */,
2597 /* 2417 */ 0x07eb49d9 | (16 << 27) /* 0.494943475 */,
2598 /* 2418 */ 0x07ec682a | (16 << 27) /* 0.495216529 */,
2599 /* 2419 */ 0x07ed8686 | (16 << 27) /* 0.495489620 */,
2600 /* 2420 */ 0x07eea4eb | (16 << 27) /* 0.495762748 */,
2601 /* 2421 */ 0x07efc35b | (16 << 27) /* 0.496035915 */,
2602 /* 2422 */ 0x07f0e1d4 | (16 << 27) /* 0.496309119 */,
2603 /* 2423 */ 0x07f20058 | (16 << 27) /* 0.496582360 */,
2604 /* 2424 */ 0x07f31ee6 | (16 << 27) /* 0.496855639 */,
2605 /* 2425 */ 0x07f43d7e | (16 << 27) /* 0.497128956 */,
2606 /* 2426 */ 0x07f55c20 | (16 << 27) /* 0.497402310 */,
2607 /* 2427 */ 0x07f67acc | (16 << 27) /* 0.497675702 */,
2608 /* 2428 */ 0x07f79982 | (16 << 27) /* 0.497949132 */,
2609 /* 2429 */ 0x07f8b842 | (16 << 27) /* 0.498222598 */,
2610 /* 2430 */ 0x07f9d70c | (16 << 27) /* 0.498496103 */,
2611 /* 2431 */ 0x07faf5e1 | (16 << 27) /* 0.498769645 */,
2612
2613 /* 2432 */ 0x07fc14bf | (16 << 27) /* 0.499043224 */,
2614 /* 2433 */ 0x07fd33a8 | (16 << 27) /* 0.499316841 */,
2615 /* 2434 */ 0x07fe529a | (16 << 27) /* 0.499590496 */,
2616 /* 2435 */ 0x07ff7197 | (16 << 27) /* 0.499864188 */,
2617 /* 2436 */ 0x0400484f | (17 << 27) /* 0.250068959 */,
2618 /* 2437 */ 0x0400d7d7 | (17 << 27) /* 0.250205842 */,
2619 /* 2438 */ 0x04016764 | (17 << 27) /* 0.250342744 */,
2620 /* 2439 */ 0x0401f6f7 | (17 << 27) /* 0.250479665 */,
2621 /* 2440 */ 0x0402868e | (17 << 27) /* 0.250616605 */,
2622 /* 2441 */ 0x0403162b | (17 << 27) /* 0.250753563 */,
2623 /* 2442 */ 0x0403a5cc | (17 << 27) /* 0.250890540 */,
2624 /* 2443 */ 0x04043573 | (17 << 27) /* 0.251027536 */,
2625 /* 2444 */ 0x0404c51e | (17 << 27) /* 0.251164550 */,
2626 /* 2445 */ 0x040554cf | (17 << 27) /* 0.251301583 */,
2627 /* 2446 */ 0x0405e484 | (17 << 27) /* 0.251438635 */,
2628 /* 2447 */ 0x0406743f | (17 << 27) /* 0.251575706 */,
2629
2630 /* 2448 */ 0x040703ff | (17 << 27) /* 0.251712795 */,
2631 /* 2449 */ 0x040793c3 | (17 << 27) /* 0.251849903 */,
2632 /* 2450 */ 0x0408238d | (17 << 27) /* 0.251987029 */,
2633 /* 2451 */ 0x0408b35b | (17 << 27) /* 0.252124174 */,
2634 /* 2452 */ 0x0409432f | (17 << 27) /* 0.252261338 */,
2635 /* 2453 */ 0x0409d308 | (17 << 27) /* 0.252398520 */,
2636 /* 2454 */ 0x040a62e5 | (17 << 27) /* 0.252535721 */,
2637 /* 2455 */ 0x040af2c8 | (17 << 27) /* 0.252672941 */,
2638 /* 2456 */ 0x040b82b0 | (17 << 27) /* 0.252810180 */,
2639 /* 2457 */ 0x040c129c | (17 << 27) /* 0.252947436 */,
2640 /* 2458 */ 0x040ca28e | (17 << 27) /* 0.253084712 */,
2641 /* 2459 */ 0x040d3284 | (17 << 27) /* 0.253222006 */,
2642 /* 2460 */ 0x040dc280 | (17 << 27) /* 0.253359319 */,
2643 /* 2461 */ 0x040e5281 | (17 << 27) /* 0.253496651 */,
2644 /* 2462 */ 0x040ee286 | (17 << 27) /* 0.253634001 */,
2645 /* 2463 */ 0x040f7291 | (17 << 27) /* 0.253771369 */,
2646
2647 /* 2464 */ 0x041002a1 | (17 << 27) /* 0.253908756 */,
2648 /* 2465 */ 0x041092b5 | (17 << 27) /* 0.254046162 */,
2649 /* 2466 */ 0x041122cf | (17 << 27) /* 0.254183587 */,
2650 /* 2467 */ 0x0411b2ed | (17 << 27) /* 0.254321030 */,
2651 /* 2468 */ 0x04124311 | (17 << 27) /* 0.254458491 */,
2652 /* 2469 */ 0x0412d339 | (17 << 27) /* 0.254595971 */,
2653 /* 2470 */ 0x04136367 | (17 << 27) /* 0.254733470 */,
2654 /* 2471 */ 0x0413f399 | (17 << 27) /* 0.254870987 */,
2655 /* 2472 */ 0x041483d1 | (17 << 27) /* 0.255008523 */,
2656 /* 2473 */ 0x0415140d | (17 << 27) /* 0.255146077 */,
2657 /* 2474 */ 0x0415a44f | (17 << 27) /* 0.255283650 */,
2658 /* 2475 */ 0x04163495 | (17 << 27) /* 0.255421241 */,
2659 /* 2476 */ 0x0416c4e1 | (17 << 27) /* 0.255558851 */,
2660 /* 2477 */ 0x04175531 | (17 << 27) /* 0.255696480 */,
2661 /* 2478 */ 0x0417e586 | (17 << 27) /* 0.255834127 */,
2662 /* 2479 */ 0x041875e1 | (17 << 27) /* 0.255971792 */,
2663
2664 /* 2480 */ 0x04190640 | (17 << 27) /* 0.256109476 */,
2665 /* 2481 */ 0x041996a4 | (17 << 27) /* 0.256247179 */,
2666 /* 2482 */ 0x041a270d | (17 << 27) /* 0.256384900 */,
2667 /* 2483 */ 0x041ab77b | (17 << 27) /* 0.256522639 */,
2668 /* 2484 */ 0x041b47ef | (17 << 27) /* 0.256660397 */,
2669 /* 2485 */ 0x041bd867 | (17 << 27) /* 0.256798174 */,
2670 /* 2486 */ 0x041c68e4 | (17 << 27) /* 0.256935969 */,
2671 /* 2487 */ 0x041cf966 | (17 << 27) /* 0.257073782 */,
2672 /* 2488 */ 0x041d89ed | (17 << 27) /* 0.257211614 */,
2673 /* 2489 */ 0x041e1a79 | (17 << 27) /* 0.257349465 */,
2674 /* 2490 */ 0x041eab0a | (17 << 27) /* 0.257487334 */,
2675 /* 2491 */ 0x041f3b9f | (17 << 27) /* 0.257625221 */,
2676 /* 2492 */ 0x041fcc3a | (17 << 27) /* 0.257763127 */,
2677 /* 2493 */ 0x04205cda | (17 << 27) /* 0.257901051 */,
2678 /* 2494 */ 0x0420ed7f | (17 << 27) /* 0.258038994 */,
2679 /* 2495 */ 0x04217e28 | (17 << 27) /* 0.258176955 */,
2680
2681 /* 2496 */ 0x04220ed7 | (17 << 27) /* 0.258314934 */,
2682 /* 2497 */ 0x04229f8a | (17 << 27) /* 0.258452932 */,
2683 /* 2498 */ 0x04233043 | (17 << 27) /* 0.258590948 */,
2684 /* 2499 */ 0x0423c100 | (17 << 27) /* 0.258728983 */,
2685 /* 2500 */ 0x042451c3 | (17 << 27) /* 0.258867036 */,
2686 /* 2501 */ 0x0424e28a | (17 << 27) /* 0.259005108 */,
2687 /* 2502 */ 0x04257356 | (17 << 27) /* 0.259143198 */,
2688 /* 2503 */ 0x04260428 | (17 << 27) /* 0.259281307 */,
2689 /* 2504 */ 0x042694fe | (17 << 27) /* 0.259419433 */,
2690 /* 2505 */ 0x042725d9 | (17 << 27) /* 0.259557579 */,
2691 /* 2506 */ 0x0427b6b9 | (17 << 27) /* 0.259695742 */,
2692 /* 2507 */ 0x0428479e | (17 << 27) /* 0.259833924 */,
2693 /* 2508 */ 0x0428d888 | (17 << 27) /* 0.259972124 */,
2694 /* 2509 */ 0x04296976 | (17 << 27) /* 0.260110343 */,
2695 /* 2510 */ 0x0429fa6a | (17 << 27) /* 0.260248580 */,
2696 /* 2511 */ 0x042a8b63 | (17 << 27) /* 0.260386836 */,
2697
2698 /* 2512 */ 0x042b1c60 | (17 << 27) /* 0.260525110 */,
2699 /* 2513 */ 0x042bad63 | (17 << 27) /* 0.260663402 */,
2700 /* 2514 */ 0x042c3e6a | (17 << 27) /* 0.260801712 */,
2701 /* 2515 */ 0x042ccf77 | (17 << 27) /* 0.260940041 */,
2702 /* 2516 */ 0x042d6088 | (17 << 27) /* 0.261078388 */,
2703 /* 2517 */ 0x042df19e | (17 << 27) /* 0.261216754 */,
2704 /* 2518 */ 0x042e82b9 | (17 << 27) /* 0.261355137 */,
2705 /* 2519 */ 0x042f13d9 | (17 << 27) /* 0.261493540 */,
2706 /* 2520 */ 0x042fa4fe | (17 << 27) /* 0.261631960 */,
2707 /* 2521 */ 0x04303628 | (17 << 27) /* 0.261770399 */,
2708 /* 2522 */ 0x0430c757 | (17 << 27) /* 0.261908856 */,
2709 /* 2523 */ 0x0431588b | (17 << 27) /* 0.262047331 */,
2710 /* 2524 */ 0x0431e9c3 | (17 << 27) /* 0.262185825 */,
2711 /* 2525 */ 0x04327b01 | (17 << 27) /* 0.262324337 */,
2712 /* 2526 */ 0x04330c43 | (17 << 27) /* 0.262462867 */,
2713 /* 2527 */ 0x04339d8a | (17 << 27) /* 0.262601416 */,
2714
2715 /* 2528 */ 0x04342ed7 | (17 << 27) /* 0.262739982 */,
2716 /* 2529 */ 0x0434c028 | (17 << 27) /* 0.262878568 */,
2717 /* 2530 */ 0x0435517e | (17 << 27) /* 0.263017171 */,
2718 /* 2531 */ 0x0435e2d9 | (17 << 27) /* 0.263155792 */,
2719 /* 2532 */ 0x04367439 | (17 << 27) /* 0.263294432 */,
2720 /* 2533 */ 0x0437059e | (17 << 27) /* 0.263433090 */,
2721 /* 2534 */ 0x04379707 | (17 << 27) /* 0.263571767 */,
2722 /* 2535 */ 0x04382876 | (17 << 27) /* 0.263710461 */,
2723 /* 2536 */ 0x0438b9e9 | (17 << 27) /* 0.263849174 */,
2724 /* 2537 */ 0x04394b61 | (17 << 27) /* 0.263987905 */,
2725 /* 2538 */ 0x0439dcdf | (17 << 27) /* 0.264126655 */,
2726 /* 2539 */ 0x043a6e61 | (17 << 27) /* 0.264265422 */,
2727 /* 2540 */ 0x043affe8 | (17 << 27) /* 0.264404208 */,
2728 /* 2541 */ 0x043b9174 | (17 << 27) /* 0.264543012 */,
2729 /* 2542 */ 0x043c2305 | (17 << 27) /* 0.264681834 */,
2730 /* 2543 */ 0x043cb49a | (17 << 27) /* 0.264820674 */,
2731
2732 /* 2544 */ 0x043d4635 | (17 << 27) /* 0.264959533 */,
2733 /* 2545 */ 0x043dd7d4 | (17 << 27) /* 0.265098410 */,
2734 /* 2546 */ 0x043e6979 | (17 << 27) /* 0.265237305 */,
2735 /* 2547 */ 0x043efb22 | (17 << 27) /* 0.265376218 */,
2736 /* 2548 */ 0x043f8cd0 | (17 << 27) /* 0.265515149 */,
2737 /* 2549 */ 0x04401e83 | (17 << 27) /* 0.265654099 */,
2738 /* 2550 */ 0x0440b03b | (17 << 27) /* 0.265793066 */,
2739 /* 2551 */ 0x044141f7 | (17 << 27) /* 0.265932052 */,
2740 /* 2552 */ 0x0441d3b9 | (17 << 27) /* 0.266071056 */,
2741 /* 2553 */ 0x04426580 | (17 << 27) /* 0.266210078 */,
2742 /* 2554 */ 0x0442f74b | (17 << 27) /* 0.266349119 */,
2743 /* 2555 */ 0x0443891b | (17 << 27) /* 0.266488177 */,
2744 /* 2556 */ 0x04441af0 | (17 << 27) /* 0.266627254 */,
2745 /* 2557 */ 0x0444acca | (17 << 27) /* 0.266766349 */,
2746 /* 2558 */ 0x04453ea9 | (17 << 27) /* 0.266905462 */,
2747 /* 2559 */ 0x0445d08d | (17 << 27) /* 0.267044593 */,
2748
2749 /* 2560 */ 0x04466275 | (17 << 27) /* 0.267183742 */,
2750 /* 2561 */ 0x0446f463 | (17 << 27) /* 0.267322909 */,
2751 /* 2562 */ 0x04478655 | (17 << 27) /* 0.267462094 */,
2752 /* 2563 */ 0x0448184c | (17 << 27) /* 0.267601298 */,
2753 /* 2564 */ 0x0448aa48 | (17 << 27) /* 0.267740519 */,
2754 /* 2565 */ 0x04493c49 | (17 << 27) /* 0.267879759 */,
2755 /* 2566 */ 0x0449ce4f | (17 << 27) /* 0.268019017 */,
2756 /* 2567 */ 0x044a6059 | (17 << 27) /* 0.268158293 */,
2757 /* 2568 */ 0x044af269 | (17 << 27) /* 0.268297587 */,
2758 /* 2569 */ 0x044b847d | (17 << 27) /* 0.268436899 */,
2759 /* 2570 */ 0x044c1696 | (17 << 27) /* 0.268576229 */,
2760 /* 2571 */ 0x044ca8b4 | (17 << 27) /* 0.268715577 */,
2761 /* 2572 */ 0x044d3ad7 | (17 << 27) /* 0.268854943 */,
2762 /* 2573 */ 0x044dccff | (17 << 27) /* 0.268994328 */,
2763 /* 2574 */ 0x044e5f2b | (17 << 27) /* 0.269133730 */,
2764 /* 2575 */ 0x044ef15d | (17 << 27) /* 0.269273150 */,
2765
2766 /* 2576 */ 0x044f8393 | (17 << 27) /* 0.269412589 */,
2767 /* 2577 */ 0x045015ce | (17 << 27) /* 0.269552045 */,
2768 /* 2578 */ 0x0450a80e | (17 << 27) /* 0.269691520 */,
2769 /* 2579 */ 0x04513a53 | (17 << 27) /* 0.269831013 */,
2770 /* 2580 */ 0x0451cc9c | (17 << 27) /* 0.269970523 */,
2771 /* 2581 */ 0x04525eeb | (17 << 27) /* 0.270110052 */,
2772 /* 2582 */ 0x0452f13e | (17 << 27) /* 0.270249599 */,
2773 /* 2583 */ 0x04538396 | (17 << 27) /* 0.270389163 */,
2774 /* 2584 */ 0x045415f3 | (17 << 27) /* 0.270528746 */,
2775 /* 2585 */ 0x0454a855 | (17 << 27) /* 0.270668347 */,
2776 /* 2586 */ 0x04553abb | (17 << 27) /* 0.270807965 */,
2777 /* 2587 */ 0x0455cd27 | (17 << 27) /* 0.270947602 */,
2778 /* 2588 */ 0x04565f97 | (17 << 27) /* 0.271087257 */,
2779 /* 2589 */ 0x0456f20c | (17 << 27) /* 0.271226930 */,
2780 /* 2590 */ 0x04578486 | (17 << 27) /* 0.271366620 */,
2781 /* 2591 */ 0x04581705 | (17 << 27) /* 0.271506329 */,
2782
2783 /* 2592 */ 0x0458a989 | (17 << 27) /* 0.271646056 */,
2784 /* 2593 */ 0x04593c11 | (17 << 27) /* 0.271785800 */,
2785 /* 2594 */ 0x0459ce9e | (17 << 27) /* 0.271925563 */,
2786 /* 2595 */ 0x045a6130 | (17 << 27) /* 0.272065343 */,
2787 /* 2596 */ 0x045af3c7 | (17 << 27) /* 0.272205142 */,
2788 /* 2597 */ 0x045b8663 | (17 << 27) /* 0.272344958 */,
2789 /* 2598 */ 0x045c1903 | (17 << 27) /* 0.272484793 */,
2790 /* 2599 */ 0x045caba9 | (17 << 27) /* 0.272624645 */,
2791 /* 2600 */ 0x045d3e53 | (17 << 27) /* 0.272764515 */,
2792 /* 2601 */ 0x045dd102 | (17 << 27) /* 0.272904403 */,
2793 /* 2602 */ 0x045e63b6 | (17 << 27) /* 0.273044310 */,
2794 /* 2603 */ 0x045ef66e | (17 << 27) /* 0.273184234 */,
2795 /* 2604 */ 0x045f892b | (17 << 27) /* 0.273324176 */,
2796 /* 2605 */ 0x04601bee | (17 << 27) /* 0.273464136 */,
2797 /* 2606 */ 0x0460aeb5 | (17 << 27) /* 0.273604113 */,
2798 /* 2607 */ 0x04614180 | (17 << 27) /* 0.273744109 */,
2799
2800 /* 2608 */ 0x0461d451 | (17 << 27) /* 0.273884123 */,
2801 /* 2609 */ 0x04626727 | (17 << 27) /* 0.274024154 */,
2802 /* 2610 */ 0x0462fa01 | (17 << 27) /* 0.274164204 */,
2803 /* 2611 */ 0x04638ce0 | (17 << 27) /* 0.274304271 */,
2804 /* 2612 */ 0x04641fc4 | (17 << 27) /* 0.274444356 */,
2805 /* 2613 */ 0x0464b2ac | (17 << 27) /* 0.274584459 */,
2806 /* 2614 */ 0x0465459a | (17 << 27) /* 0.274724580 */,
2807 /* 2615 */ 0x0465d88c | (17 << 27) /* 0.274864719 */,
2808 /* 2616 */ 0x04666b83 | (17 << 27) /* 0.275004875 */,
2809 /* 2617 */ 0x0466fe7f | (17 << 27) /* 0.275145050 */,
2810 /* 2618 */ 0x0467917f | (17 << 27) /* 0.275285242 */,
2811 /* 2619 */ 0x04682485 | (17 << 27) /* 0.275425452 */,
2812 /* 2620 */ 0x0468b78f | (17 << 27) /* 0.275565681 */,
2813 /* 2621 */ 0x04694a9e | (17 << 27) /* 0.275705926 */,
2814 /* 2622 */ 0x0469ddb2 | (17 << 27) /* 0.275846190 */,
2815 /* 2623 */ 0x046a70ca | (17 << 27) /* 0.275986472 */,
2816
2817 /* 2624 */ 0x046b03e7 | (17 << 27) /* 0.276126771 */,
2818 /* 2625 */ 0x046b970a | (17 << 27) /* 0.276267088 */,
2819 /* 2626 */ 0x046c2a31 | (17 << 27) /* 0.276407423 */,
2820 /* 2627 */ 0x046cbd5c | (17 << 27) /* 0.276547776 */,
2821 /* 2628 */ 0x046d508d | (17 << 27) /* 0.276688147 */,
2822 /* 2629 */ 0x046de3c2 | (17 << 27) /* 0.276828535 */,
2823 /* 2630 */ 0x046e76fc | (17 << 27) /* 0.276968942 */,
2824 /* 2631 */ 0x046f0a3b | (17 << 27) /* 0.277109366 */,
2825 /* 2632 */ 0x046f9d7e | (17 << 27) /* 0.277249808 */,
2826 /* 2633 */ 0x047030c7 | (17 << 27) /* 0.277390267 */,
2827 /* 2634 */ 0x0470c414 | (17 << 27) /* 0.277530745 */,
2828 /* 2635 */ 0x04715766 | (17 << 27) /* 0.277671240 */,
2829 /* 2636 */ 0x0471eabc | (17 << 27) /* 0.277811753 */,
2830 /* 2637 */ 0x04727e18 | (17 << 27) /* 0.277952284 */,
2831 /* 2638 */ 0x04731178 | (17 << 27) /* 0.278092832 */,
2832 /* 2639 */ 0x0473a4dd | (17 << 27) /* 0.278233399 */,
2833
2834 /* 2640 */ 0x04743847 | (17 << 27) /* 0.278373983 */,
2835 /* 2641 */ 0x0474cbb5 | (17 << 27) /* 0.278514584 */,
2836 /* 2642 */ 0x04755f29 | (17 << 27) /* 0.278655204 */,
2837 /* 2643 */ 0x0475f2a1 | (17 << 27) /* 0.278795841 */,
2838 /* 2644 */ 0x0476861d | (17 << 27) /* 0.278936496 */,
2839 /* 2645 */ 0x0477199f | (17 << 27) /* 0.279077169 */,
2840 /* 2646 */ 0x0477ad25 | (17 << 27) /* 0.279217860 */,
2841 /* 2647 */ 0x047840b0 | (17 << 27) /* 0.279358568 */,
2842 /* 2648 */ 0x0478d440 | (17 << 27) /* 0.279499294 */,
2843 /* 2649 */ 0x047967d5 | (17 << 27) /* 0.279640037 */,
2844 /* 2650 */ 0x0479fb6e | (17 << 27) /* 0.279780799 */,
2845 /* 2651 */ 0x047a8f0c | (17 << 27) /* 0.279921578 */,
2846 /* 2652 */ 0x047b22af | (17 << 27) /* 0.280062375 */,
2847 /* 2653 */ 0x047bb657 | (17 << 27) /* 0.280203189 */,
2848 /* 2654 */ 0x047c4a03 | (17 << 27) /* 0.280344021 */,
2849 /* 2655 */ 0x047cddb4 | (17 << 27) /* 0.280484871 */,
2850
2851 /* 2656 */ 0x047d716a | (17 << 27) /* 0.280625739 */,
2852 /* 2657 */ 0x047e0524 | (17 << 27) /* 0.280766624 */,
2853 /* 2658 */ 0x047e98e4 | (17 << 27) /* 0.280907527 */,
2854 /* 2659 */ 0x047f2ca8 | (17 << 27) /* 0.281048447 */,
2855 /* 2660 */ 0x047fc071 | (17 << 27) /* 0.281189385 */,
2856 /* 2661 */ 0x0480543e | (17 << 27) /* 0.281330341 */,
2857 /* 2662 */ 0x0480e811 | (17 << 27) /* 0.281471315 */,
2858 /* 2663 */ 0x04817be8 | (17 << 27) /* 0.281612306 */,
2859 /* 2664 */ 0x04820fc3 | (17 << 27) /* 0.281753315 */,
2860 /* 2665 */ 0x0482a3a4 | (17 << 27) /* 0.281894341 */,
2861 /* 2666 */ 0x04833789 | (17 << 27) /* 0.282035386 */,
2862 /* 2667 */ 0x0483cb73 | (17 << 27) /* 0.282176447 */,
2863 /* 2668 */ 0x04845f62 | (17 << 27) /* 0.282317527 */,
2864 /* 2669 */ 0x0484f355 | (17 << 27) /* 0.282458624 */,
2865 /* 2670 */ 0x0485874d | (17 << 27) /* 0.282599738 */,
2866 /* 2671 */ 0x04861b4a | (17 << 27) /* 0.282740871 */,
2867
2868 /* 2672 */ 0x0486af4c | (17 << 27) /* 0.282882021 */,
2869 /* 2673 */ 0x04874352 | (17 << 27) /* 0.283023188 */,
2870 /* 2674 */ 0x0487d75d | (17 << 27) /* 0.283164373 */,
2871 /* 2675 */ 0x04886b6d | (17 << 27) /* 0.283305576 */,
2872 /* 2676 */ 0x0488ff82 | (17 << 27) /* 0.283446796 */,
2873 /* 2677 */ 0x0489939b | (17 << 27) /* 0.283588034 */,
2874 /* 2678 */ 0x048a27b9 | (17 << 27) /* 0.283729290 */,
2875 /* 2679 */ 0x048abbdc | (17 << 27) /* 0.283870563 */,
2876 /* 2680 */ 0x048b5003 | (17 << 27) /* 0.284011853 */,
2877 /* 2681 */ 0x048be42f | (17 << 27) /* 0.284153161 */,
2878 /* 2682 */ 0x048c7860 | (17 << 27) /* 0.284294487 */,
2879 /* 2683 */ 0x048d0c96 | (17 << 27) /* 0.284435831 */,
2880 /* 2684 */ 0x048da0d0 | (17 << 27) /* 0.284577192 */,
2881 /* 2685 */ 0x048e350f | (17 << 27) /* 0.284718570 */,
2882 /* 2686 */ 0x048ec953 | (17 << 27) /* 0.284859966 */,
2883 /* 2687 */ 0x048f5d9b | (17 << 27) /* 0.285001380 */,
2884
2885 /* 2688 */ 0x048ff1e8 | (17 << 27) /* 0.285142811 */,
2886 /* 2689 */ 0x0490863a | (17 << 27) /* 0.285284259 */,
2887 /* 2690 */ 0x04911a91 | (17 << 27) /* 0.285425726 */,
2888 /* 2691 */ 0x0491aeec | (17 << 27) /* 0.285567209 */,
2889 /* 2692 */ 0x0492434c | (17 << 27) /* 0.285708711 */,
2890 /* 2693 */ 0x0492d7b0 | (17 << 27) /* 0.285850229 */,
2891 /* 2694 */ 0x04936c1a | (17 << 27) /* 0.285991766 */,
2892 /* 2695 */ 0x04940088 | (17 << 27) /* 0.286133319 */,
2893 /* 2696 */ 0x049494fb | (17 << 27) /* 0.286274891 */,
2894 /* 2697 */ 0x04952972 | (17 << 27) /* 0.286416480 */,
2895 /* 2698 */ 0x0495bdee | (17 << 27) /* 0.286558086 */,
2896 /* 2699 */ 0x0496526f | (17 << 27) /* 0.286699710 */,
2897 /* 2700 */ 0x0496e6f5 | (17 << 27) /* 0.286841351 */,
2898 /* 2701 */ 0x04977b7f | (17 << 27) /* 0.286983010 */,
2899 /* 2702 */ 0x0498100e | (17 << 27) /* 0.287124686 */,
2900 /* 2703 */ 0x0498a4a1 | (17 << 27) /* 0.287266380 */,
2901
2902 /* 2704 */ 0x0499393a | (17 << 27) /* 0.287408091 */,
2903 /* 2705 */ 0x0499cdd7 | (17 << 27) /* 0.287549820 */,
2904 /* 2706 */ 0x049a6278 | (17 << 27) /* 0.287691566 */,
2905 /* 2707 */ 0x049af71f | (17 << 27) /* 0.287833330 */,
2906 /* 2708 */ 0x049b8bca | (17 << 27) /* 0.287975111 */,
2907 /* 2709 */ 0x049c207a | (17 << 27) /* 0.288116909 */,
2908 /* 2710 */ 0x049cb52e | (17 << 27) /* 0.288258725 */,
2909 /* 2711 */ 0x049d49e7 | (17 << 27) /* 0.288400559 */,
2910 /* 2712 */ 0x049ddea5 | (17 << 27) /* 0.288542409 */,
2911 /* 2713 */ 0x049e7367 | (17 << 27) /* 0.288684278 */,
2912 /* 2714 */ 0x049f082f | (17 << 27) /* 0.288826163 */,
2913 /* 2715 */ 0x049f9cfa | (17 << 27) /* 0.288968067 */,
2914 /* 2716 */ 0x04a031cb | (17 << 27) /* 0.289109987 */,
2915 /* 2717 */ 0x04a0c6a0 | (17 << 27) /* 0.289251925 */,
2916 /* 2718 */ 0x04a15b7a | (17 << 27) /* 0.289393881 */,
2917 /* 2719 */ 0x04a1f059 | (17 << 27) /* 0.289535854 */,
2918
2919 /* 2720 */ 0x04a2853c | (17 << 27) /* 0.289677844 */,
2920 /* 2721 */ 0x04a31a24 | (17 << 27) /* 0.289819851 */,
2921 /* 2722 */ 0x04a3af10 | (17 << 27) /* 0.289961876 */,
2922 /* 2723 */ 0x04a44401 | (17 << 27) /* 0.290103919 */,
2923 /* 2724 */ 0x04a4d8f7 | (17 << 27) /* 0.290245979 */,
2924 /* 2725 */ 0x04a56df2 | (17 << 27) /* 0.290388056 */,
2925 /* 2726 */ 0x04a602f1 | (17 << 27) /* 0.290530150 */,
2926 /* 2727 */ 0x04a697f5 | (17 << 27) /* 0.290672262 */,
2927 /* 2728 */ 0x04a72cfe | (17 << 27) /* 0.290814392 */,
2928 /* 2729 */ 0x04a7c20b | (17 << 27) /* 0.290956538 */,
2929 /* 2730 */ 0x04a8571d | (17 << 27) /* 0.291098703 */,
2930 /* 2731 */ 0x04a8ec33 | (17 << 27) /* 0.291240884 */,
2931 /* 2732 */ 0x04a9814e | (17 << 27) /* 0.291383083 */,
2932 /* 2733 */ 0x04aa166e | (17 << 27) /* 0.291525299 */,
2933 /* 2734 */ 0x04aaab93 | (17 << 27) /* 0.291667532 */,
2934 /* 2735 */ 0x04ab40bc | (17 << 27) /* 0.291809783 */,
2935
2936 /* 2736 */ 0x04abd5ea | (17 << 27) /* 0.291952051 */,
2937 /* 2737 */ 0x04ac6b1c | (17 << 27) /* 0.292094337 */,
2938 /* 2738 */ 0x04ad0053 | (17 << 27) /* 0.292236640 */,
2939 /* 2739 */ 0x04ad958f | (17 << 27) /* 0.292378960 */,
2940 /* 2740 */ 0x04ae2ad0 | (17 << 27) /* 0.292521297 */,
2941 /* 2741 */ 0x04aec015 | (17 << 27) /* 0.292663652 */,
2942 /* 2742 */ 0x04af555e | (17 << 27) /* 0.292806024 */,
2943 /* 2743 */ 0x04afeaad | (17 << 27) /* 0.292948414 */,
2944 /* 2744 */ 0x04b08000 | (17 << 27) /* 0.293090820 */,
2945 /* 2745 */ 0x04b11557 | (17 << 27) /* 0.293233244 */,
2946 /* 2746 */ 0x04b1aab4 | (17 << 27) /* 0.293375686 */,
2947 /* 2747 */ 0x04b24015 | (17 << 27) /* 0.293518144 */,
2948 /* 2748 */ 0x04b2d57a | (17 << 27) /* 0.293660620 */,
2949 /* 2749 */ 0x04b36ae4 | (17 << 27) /* 0.293803113 */,
2950 /* 2750 */ 0x04b40053 | (17 << 27) /* 0.293945624 */,
2951 /* 2751 */ 0x04b495c7 | (17 << 27) /* 0.294088151 */,
2952
2953 /* 2752 */ 0x04b52b3f | (17 << 27) /* 0.294230696 */,
2954 /* 2753 */ 0x04b5c0bc | (17 << 27) /* 0.294373259 */,
2955 /* 2754 */ 0x04b6563d | (17 << 27) /* 0.294515838 */,
2956 /* 2755 */ 0x04b6ebc3 | (17 << 27) /* 0.294658435 */,
2957 /* 2756 */ 0x04b7814e | (17 << 27) /* 0.294801049 */,
2958 /* 2757 */ 0x04b816dd | (17 << 27) /* 0.294943680 */,
2959 /* 2758 */ 0x04b8ac71 | (17 << 27) /* 0.295086329 */,
2960 /* 2759 */ 0x04b9420a | (17 << 27) /* 0.295228995 */,
2961 /* 2760 */ 0x04b9d7a7 | (17 << 27) /* 0.295371678 */,
2962 /* 2761 */ 0x04ba6d49 | (17 << 27) /* 0.295514378 */,
2963 /* 2762 */ 0x04bb02ef | (17 << 27) /* 0.295657095 */,
2964 /* 2763 */ 0x04bb989a | (17 << 27) /* 0.295799830 */,
2965 /* 2764 */ 0x04bc2e4a | (17 << 27) /* 0.295942582 */,
2966 /* 2765 */ 0x04bcc3fe | (17 << 27) /* 0.296085351 */,
2967 /* 2766 */ 0x04bd59b7 | (17 << 27) /* 0.296228138 */,
2968 /* 2767 */ 0x04bdef74 | (17 << 27) /* 0.296370941 */,
2969
2970 /* 2768 */ 0x04be8537 | (17 << 27) /* 0.296513762 */,
2971 /* 2769 */ 0x04bf1afd | (17 << 27) /* 0.296656600 */,
2972 /* 2770 */ 0x04bfb0c9 | (17 << 27) /* 0.296799455 */,
2973 /* 2771 */ 0x04c04699 | (17 << 27) /* 0.296942327 */,
2974 /* 2772 */ 0x04c0dc6d | (17 << 27) /* 0.297085217 */,
2975 /* 2773 */ 0x04c17247 | (17 << 27) /* 0.297228124 */,
2976 /* 2774 */ 0x04c20824 | (17 << 27) /* 0.297371048 */,
2977 /* 2775 */ 0x04c29e07 | (17 << 27) /* 0.297513989 */,
2978 /* 2776 */ 0x04c333ee | (17 << 27) /* 0.297656947 */,
2979 /* 2777 */ 0x04c3c9da | (17 << 27) /* 0.297799922 */,
2980 /* 2778 */ 0x04c45fca | (17 << 27) /* 0.297942915 */,
2981 /* 2779 */ 0x04c4f5bf | (17 << 27) /* 0.298085925 */,
2982 /* 2780 */ 0x04c58bb8 | (17 << 27) /* 0.298228951 */,
2983 /* 2781 */ 0x04c621b6 | (17 << 27) /* 0.298371996 */,
2984 /* 2782 */ 0x04c6b7b9 | (17 << 27) /* 0.298515057 */,
2985 /* 2783 */ 0x04c74dc0 | (17 << 27) /* 0.298658135 */,
2986
2987 /* 2784 */ 0x04c7e3cc | (17 << 27) /* 0.298801231 */,
2988 /* 2785 */ 0x04c879dd | (17 << 27) /* 0.298944343 */,
2989 /* 2786 */ 0x04c90ff2 | (17 << 27) /* 0.299087473 */,
2990 /* 2787 */ 0x04c9a60c | (17 << 27) /* 0.299230620 */,
2991 /* 2788 */ 0x04ca3c2a | (17 << 27) /* 0.299373784 */,
2992 /* 2789 */ 0x04cad24d | (17 << 27) /* 0.299516965 */,
2993 /* 2790 */ 0x04cb6874 | (17 << 27) /* 0.299660163 */,
2994 /* 2791 */ 0x04cbfea0 | (17 << 27) /* 0.299803378 */,
2995 /* 2792 */ 0x04cc94d1 | (17 << 27) /* 0.299946611 */,
2996 /* 2793 */ 0x04cd2b06 | (17 << 27) /* 0.300089860 */,
2997 /* 2794 */ 0x04cdc140 | (17 << 27) /* 0.300233127 */,
2998 /* 2795 */ 0x04ce577f | (17 << 27) /* 0.300376411 */,
2999 /* 2796 */ 0x04ceedc2 | (17 << 27) /* 0.300519711 */,
3000 /* 2797 */ 0x04cf8409 | (17 << 27) /* 0.300663029 */,
3001 /* 2798 */ 0x04d01a55 | (17 << 27) /* 0.300806364 */,
3002 /* 2799 */ 0x04d0b0a6 | (17 << 27) /* 0.300949716 */,
3003
3004 /* 2800 */ 0x04d146fb | (17 << 27) /* 0.301093085 */,
3005 /* 2801 */ 0x04d1dd55 | (17 << 27) /* 0.301236472 */,
3006 /* 2802 */ 0x04d273b4 | (17 << 27) /* 0.301379875 */,
3007 /* 2803 */ 0x04d30a17 | (17 << 27) /* 0.301523295 */,
3008 /* 2804 */ 0x04d3a07f | (17 << 27) /* 0.301666733 */,
3009 /* 2805 */ 0x04d436eb | (17 << 27) /* 0.301810187 */,
3010 /* 2806 */ 0x04d4cd5c | (17 << 27) /* 0.301953659 */,
3011 /* 2807 */ 0x04d563d1 | (17 << 27) /* 0.302097147 */,
3012 /* 2808 */ 0x04d5fa4b | (17 << 27) /* 0.302240653 */,
3013 /* 2809 */ 0x04d690ca | (17 << 27) /* 0.302384175 */,
3014 /* 2810 */ 0x04d7274d | (17 << 27) /* 0.302527715 */,
3015 /* 2811 */ 0x04d7bdd5 | (17 << 27) /* 0.302671271 */,
3016 /* 2812 */ 0x04d85461 | (17 << 27) /* 0.302814845 */,
3017 /* 2813 */ 0x04d8eaf2 | (17 << 27) /* 0.302958436 */,
3018 /* 2814 */ 0x04d98187 | (17 << 27) /* 0.303102044 */,
3019 /* 2815 */ 0x04da1821 | (17 << 27) /* 0.303245668 */,
3020
3021 /* 2816 */ 0x04daaec0 | (17 << 27) /* 0.303389310 */,
3022 /* 2817 */ 0x04db4563 | (17 << 27) /* 0.303532969 */,
3023 /* 2818 */ 0x04dbdc0a | (17 << 27) /* 0.303676645 */,
3024 /* 2819 */ 0x04dc72b7 | (17 << 27) /* 0.303820337 */,
3025 /* 2820 */ 0x04dd0967 | (17 << 27) /* 0.303964047 */,
3026 /* 2821 */ 0x04dda01d | (17 << 27) /* 0.304107774 */,
3027 /* 2822 */ 0x04de36d7 | (17 << 27) /* 0.304251517 */,
3028 /* 2823 */ 0x04decd95 | (17 << 27) /* 0.304395278 */,
3029 /* 2824 */ 0x04df6458 | (17 << 27) /* 0.304539056 */,
3030 /* 2825 */ 0x04dffb20 | (17 << 27) /* 0.304682850 */,
3031 /* 2826 */ 0x04e091ec | (17 << 27) /* 0.304826662 */,
3032 /* 2827 */ 0x04e128bc | (17 << 27) /* 0.304970491 */,
3033 /* 2828 */ 0x04e1bf92 | (17 << 27) /* 0.305114336 */,
3034 /* 2829 */ 0x04e2566b | (17 << 27) /* 0.305258199 */,
3035 /* 2830 */ 0x04e2ed4a | (17 << 27) /* 0.305402078 */,
3036 /* 2831 */ 0x04e3842d | (17 << 27) /* 0.305545974 */,
3037
3038 /* 2832 */ 0x04e41b14 | (17 << 27) /* 0.305689888 */,
3039 /* 2833 */ 0x04e4b200 | (17 << 27) /* 0.305833818 */,
3040 /* 2834 */ 0x04e548f1 | (17 << 27) /* 0.305977765 */,
3041 /* 2835 */ 0x04e5dfe6 | (17 << 27) /* 0.306121729 */,
3042 /* 2836 */ 0x04e676df | (17 << 27) /* 0.306265710 */,
3043 /* 2837 */ 0x04e70dde | (17 << 27) /* 0.306409708 */,
3044 /* 2838 */ 0x04e7a4e0 | (17 << 27) /* 0.306553723 */,
3045 /* 2839 */ 0x04e83be7 | (17 << 27) /* 0.306697755 */,
3046 /* 2840 */ 0x04e8d2f3 | (17 << 27) /* 0.306841804 */,
3047 /* 2841 */ 0x04e96a04 | (17 << 27) /* 0.306985869 */,
3048 /* 2842 */ 0x04ea0118 | (17 << 27) /* 0.307129952 */,
3049 /* 2843 */ 0x04ea9832 | (17 << 27) /* 0.307274051 */,
3050 /* 2844 */ 0x04eb2f50 | (17 << 27) /* 0.307418168 */,
3051 /* 2845 */ 0x04ebc672 | (17 << 27) /* 0.307562301 */,
3052 /* 2846 */ 0x04ec5d99 | (17 << 27) /* 0.307706451 */,
3053 /* 2847 */ 0x04ecf4c5 | (17 << 27) /* 0.307850618 */,
3054
3055 /* 2848 */ 0x04ed8bf5 | (17 << 27) /* 0.307994802 */,
3056 /* 2849 */ 0x04ee2329 | (17 << 27) /* 0.308139003 */,
3057 /* 2850 */ 0x04eeba63 | (17 << 27) /* 0.308283220 */,
3058 /* 2851 */ 0x04ef51a0 | (17 << 27) /* 0.308427455 */,
3059 /* 2852 */ 0x04efe8e2 | (17 << 27) /* 0.308571706 */,
3060 /* 2853 */ 0x04f08029 | (17 << 27) /* 0.308715974 */,
3061 /* 2854 */ 0x04f11774 | (17 << 27) /* 0.308860260 */,
3062 /* 2855 */ 0x04f1aec4 | (17 << 27) /* 0.309004561 */,
3063 /* 2856 */ 0x04f24618 | (17 << 27) /* 0.309148880 */,
3064 /* 2857 */ 0x04f2dd71 | (17 << 27) /* 0.309293216 */,
3065 /* 2858 */ 0x04f374cf | (17 << 27) /* 0.309437568 */,
3066 /* 2859 */ 0x04f40c30 | (17 << 27) /* 0.309581938 */,
3067 /* 2860 */ 0x04f4a397 | (17 << 27) /* 0.309726324 */,
3068 /* 2861 */ 0x04f53b02 | (17 << 27) /* 0.309870727 */,
3069 /* 2862 */ 0x04f5d271 | (17 << 27) /* 0.310015147 */,
3070 /* 2863 */ 0x04f669e5 | (17 << 27) /* 0.310159583 */,
3071
3072 /* 2864 */ 0x04f7015d | (17 << 27) /* 0.310304037 */,
3073 /* 2865 */ 0x04f798da | (17 << 27) /* 0.310448507 */,
3074 /* 2866 */ 0x04f8305c | (17 << 27) /* 0.310592994 */,
3075 /* 2867 */ 0x04f8c7e2 | (17 << 27) /* 0.310737498 */,
3076 /* 2868 */ 0x04f95f6c | (17 << 27) /* 0.310882018 */,
3077 /* 2869 */ 0x04f9f6fb | (17 << 27) /* 0.311026556 */,
3078 /* 2870 */ 0x04fa8e8f | (17 << 27) /* 0.311171110 */,
3079 /* 2871 */ 0x04fb2627 | (17 << 27) /* 0.311315681 */,
3080 /* 2872 */ 0x04fbbdc3 | (17 << 27) /* 0.311460269 */,
3081 /* 2873 */ 0x04fc5564 | (17 << 27) /* 0.311604874 */,
3082 /* 2874 */ 0x04fced0a | (17 << 27) /* 0.311749495 */,
3083 /* 2875 */ 0x04fd84b4 | (17 << 27) /* 0.311894133 */,
3084 /* 2876 */ 0x04fe1c62 | (17 << 27) /* 0.312038788 */,
3085 /* 2877 */ 0x04feb415 | (17 << 27) /* 0.312183460 */,
3086 /* 2878 */ 0x04ff4bcd | (17 << 27) /* 0.312328148 */,
3087 /* 2879 */ 0x04ffe389 | (17 << 27) /* 0.312472854 */,
3088
3089 /* 2880 */ 0x05007b49 | (17 << 27) /* 0.312617576 */,
3090 /* 2881 */ 0x0501130e | (17 << 27) /* 0.312762314 */,
3091 /* 2882 */ 0x0501aad8 | (17 << 27) /* 0.312907070 */,
3092 /* 2883 */ 0x050242a6 | (17 << 27) /* 0.313051842 */,
3093 /* 2884 */ 0x0502da78 | (17 << 27) /* 0.313196631 */,
3094 /* 2885 */ 0x0503724f | (17 << 27) /* 0.313341437 */,
3095 /* 2886 */ 0x05040a2b | (17 << 27) /* 0.313486259 */,
3096 /* 2887 */ 0x0504a20b | (17 << 27) /* 0.313631098 */,
3097 /* 2888 */ 0x050539ef | (17 << 27) /* 0.313775954 */,
3098 /* 2889 */ 0x0505d1d8 | (17 << 27) /* 0.313920827 */,
3099 /* 2890 */ 0x050669c5 | (17 << 27) /* 0.314065716 */,
3100 /* 2891 */ 0x050701b7 | (17 << 27) /* 0.314210622 */,
3101 /* 2892 */ 0x050799ae | (17 << 27) /* 0.314355545 */,
3102 /* 2893 */ 0x050831a9 | (17 << 27) /* 0.314500484 */,
3103 /* 2894 */ 0x0508c9a8 | (17 << 27) /* 0.314645440 */,
3104 /* 2895 */ 0x050961ac | (17 << 27) /* 0.314790413 */,
3105
3106 /* 2896 */ 0x0509f9b4 | (17 << 27) /* 0.314935403 */,
3107 /* 2897 */ 0x050a91c1 | (17 << 27) /* 0.315080409 */,
3108 /* 2898 */ 0x050b29d2 | (17 << 27) /* 0.315225432 */,
3109 /* 2899 */ 0x050bc1e8 | (17 << 27) /* 0.315370472 */,
3110 /* 2900 */ 0x050c5a02 | (17 << 27) /* 0.315515528 */,
3111 /* 2901 */ 0x050cf221 | (17 << 27) /* 0.315660601 */,
3112 /* 2902 */ 0x050d8a44 | (17 << 27) /* 0.315805690 */,
3113 /* 2903 */ 0x050e226c | (17 << 27) /* 0.315950797 */,
3114 /* 2904 */ 0x050eba98 | (17 << 27) /* 0.316095920 */,
3115 /* 2905 */ 0x050f52c9 | (17 << 27) /* 0.316241059 */,
3116 /* 2906 */ 0x050feafe | (17 << 27) /* 0.316386216 */,
3117 /* 2907 */ 0x05108337 | (17 << 27) /* 0.316531388 */,
3118 /* 2908 */ 0x05111b75 | (17 << 27) /* 0.316676578 */,
3119 /* 2909 */ 0x0511b3b8 | (17 << 27) /* 0.316821784 */,
3120 /* 2910 */ 0x05124bff | (17 << 27) /* 0.316967007 */,
3121 /* 2911 */ 0x0512e44a | (17 << 27) /* 0.317112247 */,
3122
3123 /* 2912 */ 0x05137c9a | (17 << 27) /* 0.317257503 */,
3124 /* 2913 */ 0x051414ee | (17 << 27) /* 0.317402775 */,
3125 /* 2914 */ 0x0514ad47 | (17 << 27) /* 0.317548065 */,
3126 /* 2915 */ 0x051545a5 | (17 << 27) /* 0.317693371 */,
3127 /* 2916 */ 0x0515de06 | (17 << 27) /* 0.317838693 */,
3128 /* 2917 */ 0x0516766d | (17 << 27) /* 0.317984033 */,
3129 /* 2918 */ 0x05170ed7 | (17 << 27) /* 0.318129388 */,
3130 /* 2919 */ 0x0517a746 | (17 << 27) /* 0.318274761 */,
3131 /* 2920 */ 0x05183fba | (17 << 27) /* 0.318420150 */,
3132 /* 2921 */ 0x0518d832 | (17 << 27) /* 0.318565555 */,
3133 /* 2922 */ 0x051970ae | (17 << 27) /* 0.318710978 */,
3134 /* 2923 */ 0x051a092f | (17 << 27) /* 0.318856416 */,
3135 /* 2924 */ 0x051aa1b5 | (17 << 27) /* 0.319001872 */,
3136 /* 2925 */ 0x051b3a3f | (17 << 27) /* 0.319147344 */,
3137 /* 2926 */ 0x051bd2cd | (17 << 27) /* 0.319292832 */,
3138 /* 2927 */ 0x051c6b60 | (17 << 27) /* 0.319438338 */,
3139
3140 /* 2928 */ 0x051d03f7 | (17 << 27) /* 0.319583859 */,
3141 /* 2929 */ 0x051d9c92 | (17 << 27) /* 0.319729398 */,
3142 /* 2930 */ 0x051e3532 | (17 << 27) /* 0.319874952 */,
3143 /* 2931 */ 0x051ecdd7 | (17 << 27) /* 0.320020524 */,
3144 /* 2932 */ 0x051f6680 | (17 << 27) /* 0.320166112 */,
3145 /* 2933 */ 0x051fff2d | (17 << 27) /* 0.320311716 */,
3146 /* 2934 */ 0x052097df | (17 << 27) /* 0.320457337 */,
3147 /* 2935 */ 0x05213095 | (17 << 27) /* 0.320602975 */,
3148 /* 2936 */ 0x0521c950 | (17 << 27) /* 0.320748629 */,
3149 /* 2937 */ 0x0522620f | (17 << 27) /* 0.320894300 */,
3150 /* 2938 */ 0x0522fad3 | (17 << 27) /* 0.321039987 */,
3151 /* 2939 */ 0x0523939b | (17 << 27) /* 0.321185691 */,
3152 /* 2940 */ 0x05242c68 | (17 << 27) /* 0.321331411 */,
3153 /* 2941 */ 0x0524c538 | (17 << 27) /* 0.321477148 */,
3154 /* 2942 */ 0x05255e0e | (17 << 27) /* 0.321622901 */,
3155 /* 2943 */ 0x0525f6e8 | (17 << 27) /* 0.321768671 */,
3156
3157 /* 2944 */ 0x05268fc6 | (17 << 27) /* 0.321914457 */,
3158 /* 2945 */ 0x052728a9 | (17 << 27) /* 0.322060260 */,
3159 /* 2946 */ 0x0527c190 | (17 << 27) /* 0.322206079 */,
3160 /* 2947 */ 0x05285a7b | (17 << 27) /* 0.322351915 */,
3161 /* 2948 */ 0x0528f36b | (17 << 27) /* 0.322497768 */,
3162 /* 2949 */ 0x05298c5f | (17 << 27) /* 0.322643636 */,
3163 /* 2950 */ 0x052a2558 | (17 << 27) /* 0.322789522 */,
3164 /* 2951 */ 0x052abe55 | (17 << 27) /* 0.322935424 */,
3165 /* 2952 */ 0x052b5757 | (17 << 27) /* 0.323081342 */,
3166 /* 2953 */ 0x052bf05d | (17 << 27) /* 0.323227277 */,
3167 /* 2954 */ 0x052c8968 | (17 << 27) /* 0.323373228 */,
3168 /* 2955 */ 0x052d2277 | (17 << 27) /* 0.323519196 */,
3169 /* 2956 */ 0x052dbb8a | (17 << 27) /* 0.323665180 */,
3170 /* 2957 */ 0x052e54a2 | (17 << 27) /* 0.323811180 */,
3171 /* 2958 */ 0x052eedbe | (17 << 27) /* 0.323957197 */,
3172 /* 2959 */ 0x052f86de | (17 << 27) /* 0.324103231 */,
3173
3174 /* 2960 */ 0x05302003 | (17 << 27) /* 0.324249281 */,
3175 /* 2961 */ 0x0530b92d | (17 << 27) /* 0.324395347 */,
3176 /* 2962 */ 0x0531525b | (17 << 27) /* 0.324541430 */,
3177 /* 2963 */ 0x0531eb8d | (17 << 27) /* 0.324687530 */,
3178 /* 2964 */ 0x053284c4 | (17 << 27) /* 0.324833646 */,
3179 /* 2965 */ 0x05331dff | (17 << 27) /* 0.324979778 */,
3180 /* 2966 */ 0x0533b73e | (17 << 27) /* 0.325125926 */,
3181 /* 2967 */ 0x05345082 | (17 << 27) /* 0.325272091 */,
3182 /* 2968 */ 0x0534e9ca | (17 << 27) /* 0.325418273 */,
3183 /* 2969 */ 0x05358317 | (17 << 27) /* 0.325564471 */,
3184 /* 2970 */ 0x05361c68 | (17 << 27) /* 0.325710685 */,
3185 /* 2971 */ 0x0536b5be | (17 << 27) /* 0.325856916 */,
3186 /* 2972 */ 0x05374f17 | (17 << 27) /* 0.326003163 */,
3187 /* 2973 */ 0x0537e876 | (17 << 27) /* 0.326149427 */,
3188 /* 2974 */ 0x053881d9 | (17 << 27) /* 0.326295707 */,
3189 /* 2975 */ 0x05391b40 | (17 << 27) /* 0.326442003 */,
3190
3191 /* 2976 */ 0x0539b4ab | (17 << 27) /* 0.326588316 */,
3192 /* 2977 */ 0x053a4e1b | (17 << 27) /* 0.326734645 */,
3193 /* 2978 */ 0x053ae78f | (17 << 27) /* 0.326880990 */,
3194 /* 2979 */ 0x053b8108 | (17 << 27) /* 0.327027352 */,
3195 /* 2980 */ 0x053c1a85 | (17 << 27) /* 0.327173730 */,
3196 /* 2981 */ 0x053cb407 | (17 << 27) /* 0.327320125 */,
3197 /* 2982 */ 0x053d4d8d | (17 << 27) /* 0.327466536 */,
3198 /* 2983 */ 0x053de717 | (17 << 27) /* 0.327612963 */,
3199 /* 2984 */ 0x053e80a6 | (17 << 27) /* 0.327759407 */,
3200 /* 2985 */ 0x053f1a39 | (17 << 27) /* 0.327905867 */,
3201 /* 2986 */ 0x053fb3d0 | (17 << 27) /* 0.328052344 */,
3202 /* 2987 */ 0x05404d6c | (17 << 27) /* 0.328198837 */,
3203 /* 2988 */ 0x0540e70c | (17 << 27) /* 0.328345346 */,
3204 /* 2989 */ 0x054180b1 | (17 << 27) /* 0.328491871 */,
3205 /* 2990 */ 0x05421a5a | (17 << 27) /* 0.328638413 */,
3206 /* 2991 */ 0x0542b407 | (17 << 27) /* 0.328784971 */,
3207
3208 /* 2992 */ 0x05434db9 | (17 << 27) /* 0.328931546 */,
3209 /* 2993 */ 0x0543e76f | (17 << 27) /* 0.329078137 */,
3210 /* 2994 */ 0x0544812a | (17 << 27) /* 0.329224744 */,
3211 /* 2995 */ 0x05451ae9 | (17 << 27) /* 0.329371367 */,
3212 /* 2996 */ 0x0545b4ac | (17 << 27) /* 0.329518007 */,
3213 /* 2997 */ 0x05464e74 | (17 << 27) /* 0.329664663 */,
3214 /* 2998 */ 0x0546e840 | (17 << 27) /* 0.329811336 */,
3215 /* 2999 */ 0x05478211 | (17 << 27) /* 0.329958024 */,
3216 /* 3000 */ 0x05481be5 | (17 << 27) /* 0.330104730 */,
3217 /* 3001 */ 0x0548b5bf | (17 << 27) /* 0.330251451 */,
3218 /* 3002 */ 0x05494f9c | (17 << 27) /* 0.330398189 */,
3219 /* 3003 */ 0x0549e97e | (17 << 27) /* 0.330544943 */,
3220 /* 3004 */ 0x054a8364 | (17 << 27) /* 0.330691713 */,
3221 /* 3005 */ 0x054b1d4f | (17 << 27) /* 0.330838499 */,
3222 /* 3006 */ 0x054bb73e | (17 << 27) /* 0.330985302 */,
3223 /* 3007 */ 0x054c5132 | (17 << 27) /* 0.331132121 */,
3224
3225 /* 3008 */ 0x054ceb2a | (17 << 27) /* 0.331278957 */,
3226 /* 3009 */ 0x054d8526 | (17 << 27) /* 0.331425808 */,
3227 /* 3010 */ 0x054e1f26 | (17 << 27) /* 0.331572676 */,
3228 /* 3011 */ 0x054eb92b | (17 << 27) /* 0.331719560 */,
3229 /* 3012 */ 0x054f5334 | (17 << 27) /* 0.331866461 */,
3230 /* 3013 */ 0x054fed42 | (17 << 27) /* 0.332013377 */,
3231 /* 3014 */ 0x05508754 | (17 << 27) /* 0.332160310 */,
3232 /* 3015 */ 0x0551216b | (17 << 27) /* 0.332307260 */,
3233 /* 3016 */ 0x0551bb85 | (17 << 27) /* 0.332454225 */,
3234 /* 3017 */ 0x055255a4 | (17 << 27) /* 0.332601207 */,
3235 /* 3018 */ 0x0552efc8 | (17 << 27) /* 0.332748205 */,
3236 /* 3019 */ 0x055389f0 | (17 << 27) /* 0.332895219 */,
3237 /* 3020 */ 0x0554241c | (17 << 27) /* 0.333042249 */,
3238 /* 3021 */ 0x0554be4c | (17 << 27) /* 0.333189296 */,
3239 /* 3022 */ 0x05555881 | (17 << 27) /* 0.333336359 */,
3240 /* 3023 */ 0x0555f2ba | (17 << 27) /* 0.333483438 */,
3241
3242 /* 3024 */ 0x05568cf8 | (17 << 27) /* 0.333630533 */,
3243 /* 3025 */ 0x0557273a | (17 << 27) /* 0.333777645 */,
3244 /* 3026 */ 0x0557c180 | (17 << 27) /* 0.333924772 */,
3245 /* 3027 */ 0x05585bcb | (17 << 27) /* 0.334071916 */,
3246 /* 3028 */ 0x0558f61a | (17 << 27) /* 0.334219076 */,
3247 /* 3029 */ 0x0559906d | (17 << 27) /* 0.334366253 */,
3248 /* 3030 */ 0x055a2ac5 | (17 << 27) /* 0.334513445 */,
3249 /* 3031 */ 0x055ac521 | (17 << 27) /* 0.334660654 */,
3250 /* 3032 */ 0x055b5f81 | (17 << 27) /* 0.334807879 */,
3251 /* 3033 */ 0x055bf9e6 | (17 << 27) /* 0.334955120 */,
3252 /* 3034 */ 0x055c944f | (17 << 27) /* 0.335102377 */,
3253 /* 3035 */ 0x055d2ebd | (17 << 27) /* 0.335249651 */,
3254 /* 3036 */ 0x055dc92e | (17 << 27) /* 0.335396941 */,
3255 /* 3037 */ 0x055e63a5 | (17 << 27) /* 0.335544246 */,
3256 /* 3038 */ 0x055efe1f | (17 << 27) /* 0.335691568 */,
3257 /* 3039 */ 0x055f989e | (17 << 27) /* 0.335838906 */,
3258
3259 /* 3040 */ 0x05603321 | (17 << 27) /* 0.335986261 */,
3260 /* 3041 */ 0x0560cda8 | (17 << 27) /* 0.336133631 */,
3261 /* 3042 */ 0x05616834 | (17 << 27) /* 0.336281018 */,
3262 /* 3043 */ 0x056202c4 | (17 << 27) /* 0.336428421 */,
3263 /* 3044 */ 0x05629d59 | (17 << 27) /* 0.336575840 */,
3264 /* 3045 */ 0x056337f2 | (17 << 27) /* 0.336723275 */,
3265 /* 3046 */ 0x0563d28f | (17 << 27) /* 0.336870726 */,
3266 /* 3047 */ 0x05646d30 | (17 << 27) /* 0.337018193 */,
3267 /* 3048 */ 0x056507d6 | (17 << 27) /* 0.337165677 */,
3268 /* 3049 */ 0x0565a280 | (17 << 27) /* 0.337313176 */,
3269 /* 3050 */ 0x05663d2f | (17 << 27) /* 0.337460692 */,
3270 /* 3051 */ 0x0566d7e1 | (17 << 27) /* 0.337608224 */,
3271 /* 3052 */ 0x05677298 | (17 << 27) /* 0.337755772 */,
3272 /* 3053 */ 0x05680d54 | (17 << 27) /* 0.337903336 */,
3273 /* 3054 */ 0x0568a814 | (17 << 27) /* 0.338050916 */,
3274 /* 3055 */ 0x056942d8 | (17 << 27) /* 0.338198513 */,
3275
3276 /* 3056 */ 0x0569dda0 | (17 << 27) /* 0.338346125 */,
3277 /* 3057 */ 0x056a786d | (17 << 27) /* 0.338493753 */,
3278 /* 3058 */ 0x056b133e | (17 << 27) /* 0.338641398 */,
3279 /* 3059 */ 0x056bae13 | (17 << 27) /* 0.338789059 */,
3280 /* 3060 */ 0x056c48ed | (17 << 27) /* 0.338936736 */,
3281 /* 3061 */ 0x056ce3cb | (17 << 27) /* 0.339084429 */,
3282 /* 3062 */ 0x056d7ead | (17 << 27) /* 0.339232138 */,
3283 /* 3063 */ 0x056e1994 | (17 << 27) /* 0.339379863 */,
3284 /* 3064 */ 0x056eb47f | (17 << 27) /* 0.339527604 */,
3285 /* 3065 */ 0x056f4f6e | (17 << 27) /* 0.339675361 */,
3286 /* 3066 */ 0x056fea62 | (17 << 27) /* 0.339823134 */,
3287 /* 3067 */ 0x0570855a | (17 << 27) /* 0.339970924 */,
3288 /* 3068 */ 0x05712056 | (17 << 27) /* 0.340118729 */,
3289 /* 3069 */ 0x0571bb56 | (17 << 27) /* 0.340266550 */,
3290 /* 3070 */ 0x0572565b | (17 << 27) /* 0.340414388 */,
3291 /* 3071 */ 0x0572f164 | (17 << 27) /* 0.340562242 */,
3292
3293 /* 3072 */ 0x05738c72 | (17 << 27) /* 0.340710111 */,
3294 /* 3073 */ 0x05742784 | (17 << 27) /* 0.340857997 */,
3295 /* 3074 */ 0x0574c29a | (17 << 27) /* 0.341005899 */,
3296 /* 3075 */ 0x05755db4 | (17 << 27) /* 0.341153816 */,
3297 /* 3076 */ 0x0575f8d3 | (17 << 27) /* 0.341301750 */,
3298 /* 3077 */ 0x057693f6 | (17 << 27) /* 0.341449700 */,
3299 /* 3078 */ 0x05772f1d | (17 << 27) /* 0.341597666 */,
3300 /* 3079 */ 0x0577ca49 | (17 << 27) /* 0.341745648 */,
3301 /* 3080 */ 0x05786578 | (17 << 27) /* 0.341893646 */,
3302 /* 3081 */ 0x057900ad | (17 << 27) /* 0.342041659 */,
3303 /* 3082 */ 0x05799be5 | (17 << 27) /* 0.342189689 */,
3304 /* 3083 */ 0x057a3722 | (17 << 27) /* 0.342337735 */,
3305 /* 3084 */ 0x057ad263 | (17 << 27) /* 0.342485797 */,
3306 /* 3085 */ 0x057b6da8 | (17 << 27) /* 0.342633875 */,
3307 /* 3086 */ 0x057c08f2 | (17 << 27) /* 0.342781969 */,
3308 /* 3087 */ 0x057ca440 | (17 << 27) /* 0.342930079 */,
3309
3310 /* 3088 */ 0x057d3f92 | (17 << 27) /* 0.343078205 */,
3311 /* 3089 */ 0x057ddae9 | (17 << 27) /* 0.343226347 */,
3312 /* 3090 */ 0x057e7644 | (17 << 27) /* 0.343374505 */,
3313 /* 3091 */ 0x057f11a3 | (17 << 27) /* 0.343522679 */,
3314 /* 3092 */ 0x057fad06 | (17 << 27) /* 0.343670869 */,
3315 /* 3093 */ 0x0580486e | (17 << 27) /* 0.343819075 */,
3316 /* 3094 */ 0x0580e3da | (17 << 27) /* 0.343967296 */,
3317 /* 3095 */ 0x05817f4a | (17 << 27) /* 0.344115534 */,
3318 /* 3096 */ 0x05821abf | (17 << 27) /* 0.344263788 */,
3319 /* 3097 */ 0x0582b638 | (17 << 27) /* 0.344412058 */,
3320 /* 3098 */ 0x058351b5 | (17 << 27) /* 0.344560343 */,
3321 /* 3099 */ 0x0583ed36 | (17 << 27) /* 0.344708645 */,
3322 /* 3100 */ 0x058488bc | (17 << 27) /* 0.344856963 */,
3323 /* 3101 */ 0x05852446 | (17 << 27) /* 0.345005296 */,
3324 /* 3102 */ 0x0585bfd4 | (17 << 27) /* 0.345153646 */,
3325 /* 3103 */ 0x05865b67 | (17 << 27) /* 0.345302011 */,
3326
3327 /* 3104 */ 0x0586f6fd | (17 << 27) /* 0.345450393 */,
3328 /* 3105 */ 0x05879298 | (17 << 27) /* 0.345598790 */,
3329 /* 3106 */ 0x05882e38 | (17 << 27) /* 0.345747203 */,
3330 /* 3107 */ 0x0588c9dc | (17 << 27) /* 0.345895632 */,
3331 /* 3108 */ 0x05896583 | (17 << 27) /* 0.346044077 */,
3332 /* 3109 */ 0x058a0130 | (17 << 27) /* 0.346192538 */,
3333 /* 3110 */ 0x058a9ce0 | (17 << 27) /* 0.346341015 */,
3334 /* 3111 */ 0x058b3895 | (17 << 27) /* 0.346489508 */,
3335 /* 3112 */ 0x058bd44e | (17 << 27) /* 0.346638017 */,
3336 /* 3113 */ 0x058c700b | (17 << 27) /* 0.346786542 */,
3337 /* 3114 */ 0x058d0bcd | (17 << 27) /* 0.346935082 */,
3338 /* 3115 */ 0x058da793 | (17 << 27) /* 0.347083639 */,
3339 /* 3116 */ 0x058e435d | (17 << 27) /* 0.347232211 */,
3340 /* 3117 */ 0x058edf2b | (17 << 27) /* 0.347380799 */,
3341 /* 3118 */ 0x058f7afe | (17 << 27) /* 0.347529403 */,
3342 /* 3119 */ 0x059016d5 | (17 << 27) /* 0.347678023 */,
3343
3344 /* 3120 */ 0x0590b2b0 | (17 << 27) /* 0.347826659 */,
3345 /* 3121 */ 0x05914e8f | (17 << 27) /* 0.347975311 */,
3346 /* 3122 */ 0x0591ea73 | (17 << 27) /* 0.348123979 */,
3347 /* 3123 */ 0x0592865b | (17 << 27) /* 0.348272662 */,
3348 /* 3124 */ 0x05932247 | (17 << 27) /* 0.348421362 */,
3349 /* 3125 */ 0x0593be37 | (17 << 27) /* 0.348570077 */,
3350 /* 3126 */ 0x05945a2c | (17 << 27) /* 0.348718808 */,
3351 /* 3127 */ 0x0594f625 | (17 << 27) /* 0.348867555 */,
3352 /* 3128 */ 0x05959222 | (17 << 27) /* 0.349016318 */,
3353 /* 3129 */ 0x05962e24 | (17 << 27) /* 0.349165097 */,
3354 /* 3130 */ 0x0596ca2a | (17 << 27) /* 0.349313892 */,
3355 /* 3131 */ 0x05976634 | (17 << 27) /* 0.349462702 */,
3356 /* 3132 */ 0x05980242 | (17 << 27) /* 0.349611528 */,
3357 /* 3133 */ 0x05989e54 | (17 << 27) /* 0.349760370 */,
3358 /* 3134 */ 0x05993a6b | (17 << 27) /* 0.349909228 */,
3359 /* 3135 */ 0x0599d686 | (17 << 27) /* 0.350058102 */,
3360
3361 /* 3136 */ 0x059a72a5 | (17 << 27) /* 0.350206992 */,
3362 /* 3137 */ 0x059b0ec9 | (17 << 27) /* 0.350355897 */,
3363 /* 3138 */ 0x059baaf1 | (17 << 27) /* 0.350504818 */,
3364 /* 3139 */ 0x059c471d | (17 << 27) /* 0.350653756 */,
3365 /* 3140 */ 0x059ce34d | (17 << 27) /* 0.350802708 */,
3366 /* 3141 */ 0x059d7f81 | (17 << 27) /* 0.350951677 */,
3367 /* 3142 */ 0x059e1bba | (17 << 27) /* 0.351100662 */,
3368 /* 3143 */ 0x059eb7f7 | (17 << 27) /* 0.351249662 */,
3369 /* 3144 */ 0x059f5438 | (17 << 27) /* 0.351398678 */,
3370 /* 3145 */ 0x059ff07e | (17 << 27) /* 0.351547710 */,
3371 /* 3146 */ 0x05a08cc7 | (17 << 27) /* 0.351696758 */,
3372 /* 3147 */ 0x05a12915 | (17 << 27) /* 0.351845821 */,
3373 /* 3148 */ 0x05a1c567 | (17 << 27) /* 0.351994901 */,
3374 /* 3149 */ 0x05a261be | (17 << 27) /* 0.352143996 */,
3375 /* 3150 */ 0x05a2fe18 | (17 << 27) /* 0.352293107 */,
3376 /* 3151 */ 0x05a39a77 | (17 << 27) /* 0.352442233 */,
3377
3378 /* 3152 */ 0x05a436da | (17 << 27) /* 0.352591376 */,
3379 /* 3153 */ 0x05a4d342 | (17 << 27) /* 0.352740534 */,
3380 /* 3154 */ 0x05a56fad | (17 << 27) /* 0.352889708 */,
3381 /* 3155 */ 0x05a60c1d | (17 << 27) /* 0.353038898 */,
3382 /* 3156 */ 0x05a6a891 | (17 << 27) /* 0.353188103 */,
3383 /* 3157 */ 0x05a7450a | (17 << 27) /* 0.353337325 */,
3384 /* 3158 */ 0x05a7e186 | (17 << 27) /* 0.353486562 */,
3385 /* 3159 */ 0x05a87e07 | (17 << 27) /* 0.353635814 */,
3386 /* 3160 */ 0x05a91a8c | (17 << 27) /* 0.353785083 */,
3387 /* 3161 */ 0x05a9b715 | (17 << 27) /* 0.353934367 */,
3388 /* 3162 */ 0x05aa53a2 | (17 << 27) /* 0.354083667 */,
3389 /* 3163 */ 0x05aaf034 | (17 << 27) /* 0.354232983 */,
3390 /* 3164 */ 0x05ab8cca | (17 << 27) /* 0.354382314 */,
3391 /* 3165 */ 0x05ac2964 | (17 << 27) /* 0.354531662 */,
3392 /* 3166 */ 0x05acc602 | (17 << 27) /* 0.354681025 */,
3393 /* 3167 */ 0x05ad62a5 | (17 << 27) /* 0.354830403 */,
3394
3395 /* 3168 */ 0x05adff4c | (17 << 27) /* 0.354979798 */,
3396 /* 3169 */ 0x05ae9bf7 | (17 << 27) /* 0.355129208 */,
3397 /* 3170 */ 0x05af38a6 | (17 << 27) /* 0.355278634 */,
3398 /* 3171 */ 0x05afd559 | (17 << 27) /* 0.355428075 */,
3399 /* 3172 */ 0x05b07211 | (17 << 27) /* 0.355577533 */,
3400 /* 3173 */ 0x05b10ecd | (17 << 27) /* 0.355727006 */,
3401 /* 3174 */ 0x05b1ab8d | (17 << 27) /* 0.355876494 */,
3402 /* 3175 */ 0x05b24851 | (17 << 27) /* 0.356025999 */,
3403 /* 3176 */ 0x05b2e51a | (17 << 27) /* 0.356175519 */,
3404 /* 3177 */ 0x05b381e6 | (17 << 27) /* 0.356325054 */,
3405 /* 3178 */ 0x05b41eb7 | (17 << 27) /* 0.356474606 */,
3406 /* 3179 */ 0x05b4bb8c | (17 << 27) /* 0.356624173 */,
3407 /* 3180 */ 0x05b55866 | (17 << 27) /* 0.356773756 */,
3408 /* 3181 */ 0x05b5f543 | (17 << 27) /* 0.356923354 */,
3409 /* 3182 */ 0x05b69225 | (17 << 27) /* 0.357072969 */,
3410 /* 3183 */ 0x05b72f0b | (17 << 27) /* 0.357222598 */,
3411
3412 /* 3184 */ 0x05b7cbf5 | (17 << 27) /* 0.357372244 */,
3413 /* 3185 */ 0x05b868e3 | (17 << 27) /* 0.357521905 */,
3414 /* 3186 */ 0x05b905d6 | (17 << 27) /* 0.357671582 */,
3415 /* 3187 */ 0x05b9a2cd | (17 << 27) /* 0.357821275 */,
3416 /* 3188 */ 0x05ba3fc8 | (17 << 27) /* 0.357970983 */,
3417 /* 3189 */ 0x05badcc7 | (17 << 27) /* 0.358120707 */,
3418 /* 3190 */ 0x05bb79ca | (17 << 27) /* 0.358270446 */,
3419 /* 3191 */ 0x05bc16d2 | (17 << 27) /* 0.358420201 */,
3420 /* 3192 */ 0x05bcb3de | (17 << 27) /* 0.358569972 */,
3421 /* 3193 */ 0x05bd50ee | (17 << 27) /* 0.358719758 */,
3422 /* 3194 */ 0x05bdee02 | (17 << 27) /* 0.358869560 */,
3423 /* 3195 */ 0x05be8b1a | (17 << 27) /* 0.359019378 */,
3424 /* 3196 */ 0x05bf2837 | (17 << 27) /* 0.359169211 */,
3425 /* 3197 */ 0x05bfc558 | (17 << 27) /* 0.359319060 */,
3426 /* 3198 */ 0x05c0627d | (17 << 27) /* 0.359468925 */,
3427 /* 3199 */ 0x05c0ffa6 | (17 << 27) /* 0.359618805 */,
3428
3429 /* 3200 */ 0x05c19cd3 | (17 << 27) /* 0.359768701 */,
3430 /* 3201 */ 0x05c23a05 | (17 << 27) /* 0.359918612 */,
3431 /* 3202 */ 0x05c2d73a | (17 << 27) /* 0.360068540 */,
3432 /* 3203 */ 0x05c37474 | (17 << 27) /* 0.360218482 */,
3433 /* 3204 */ 0x05c411b2 | (17 << 27) /* 0.360368440 */,
3434 /* 3205 */ 0x05c4aef5 | (17 << 27) /* 0.360518414 */,
3435 /* 3206 */ 0x05c54c3b | (17 << 27) /* 0.360668404 */,
3436 /* 3207 */ 0x05c5e986 | (17 << 27) /* 0.360818409 */,
3437 /* 3208 */ 0x05c686d5 | (17 << 27) /* 0.360968429 */,
3438 /* 3209 */ 0x05c72428 | (17 << 27) /* 0.361118466 */,
3439 /* 3210 */ 0x05c7c17f | (17 << 27) /* 0.361268517 */,
3440 /* 3211 */ 0x05c85eda | (17 << 27) /* 0.361418585 */,
3441 /* 3212 */ 0x05c8fc3a | (17 << 27) /* 0.361568668 */,
3442 /* 3213 */ 0x05c9999e | (17 << 27) /* 0.361718766 */,
3443 /* 3214 */ 0x05ca3706 | (17 << 27) /* 0.361868881 */,
3444 /* 3215 */ 0x05cad472 | (17 << 27) /* 0.362019010 */,
3445
3446 /* 3216 */ 0x05cb71e2 | (17 << 27) /* 0.362169156 */,
3447 /* 3217 */ 0x05cc0f57 | (17 << 27) /* 0.362319316 */,
3448 /* 3218 */ 0x05ccaccf | (17 << 27) /* 0.362469493 */,
3449 /* 3219 */ 0x05cd4a4c | (17 << 27) /* 0.362619685 */,
3450 /* 3220 */ 0x05cde7cd | (17 << 27) /* 0.362769892 */,
3451 /* 3221 */ 0x05ce8552 | (17 << 27) /* 0.362920115 */,
3452 /* 3222 */ 0x05cf22dc | (17 << 27) /* 0.363070354 */,
3453 /* 3223 */ 0x05cfc069 | (17 << 27) /* 0.363220608 */,
3454 /* 3224 */ 0x05d05dfb | (17 << 27) /* 0.363370878 */,
3455 /* 3225 */ 0x05d0fb91 | (17 << 27) /* 0.363521163 */,
3456 /* 3226 */ 0x05d1992b | (17 << 27) /* 0.363671464 */,
3457 /* 3227 */ 0x05d236c9 | (17 << 27) /* 0.363821780 */,
3458 /* 3228 */ 0x05d2d46c | (17 << 27) /* 0.363972112 */,
3459 /* 3229 */ 0x05d37212 | (17 << 27) /* 0.364122459 */,
3460 /* 3230 */ 0x05d40fbd | (17 << 27) /* 0.364272822 */,
3461 /* 3231 */ 0x05d4ad6c | (17 << 27) /* 0.364423200 */,
3462
3463 /* 3232 */ 0x05d54b1f | (17 << 27) /* 0.364573594 */,
3464 /* 3233 */ 0x05d5e8d6 | (17 << 27) /* 0.364724004 */,
3465 /* 3234 */ 0x05d68691 | (17 << 27) /* 0.364874429 */,
3466 /* 3235 */ 0x05d72451 | (17 << 27) /* 0.365024869 */,
3467 /* 3236 */ 0x05d7c215 | (17 << 27) /* 0.365175325 */,
3468 /* 3237 */ 0x05d85fdc | (17 << 27) /* 0.365325796 */,
3469 /* 3238 */ 0x05d8fda8 | (17 << 27) /* 0.365476283 */,
3470 /* 3239 */ 0x05d99b79 | (17 << 27) /* 0.365626786 */,
3471 /* 3240 */ 0x05da394d | (17 << 27) /* 0.365777304 */,
3472 /* 3241 */ 0x05dad726 | (17 << 27) /* 0.365927837 */,
3473 /* 3242 */ 0x05db7502 | (17 << 27) /* 0.366078386 */,
3474 /* 3243 */ 0x05dc12e3 | (17 << 27) /* 0.366228950 */,
3475 /* 3244 */ 0x05dcb0c8 | (17 << 27) /* 0.366379530 */,
3476 /* 3245 */ 0x05dd4eb1 | (17 << 27) /* 0.366530125 */,
3477 /* 3246 */ 0x05ddec9e | (17 << 27) /* 0.366680736 */,
3478 /* 3247 */ 0x05de8a90 | (17 << 27) /* 0.366831362 */,
3479
3480 /* 3248 */ 0x05df2885 | (17 << 27) /* 0.366982004 */,
3481 /* 3249 */ 0x05dfc67f | (17 << 27) /* 0.367132661 */,
3482 /* 3250 */ 0x05e0647d | (17 << 27) /* 0.367283334 */,
3483 /* 3251 */ 0x05e1027f | (17 << 27) /* 0.367434022 */,
3484 /* 3252 */ 0x05e1a085 | (17 << 27) /* 0.367584725 */,
3485 /* 3253 */ 0x05e23e8f | (17 << 27) /* 0.367735444 */,
3486 /* 3254 */ 0x05e2dc9e | (17 << 27) /* 0.367886179 */,
3487 /* 3255 */ 0x05e37ab0 | (17 << 27) /* 0.368036929 */,
3488 /* 3256 */ 0x05e418c7 | (17 << 27) /* 0.368187694 */,
3489 /* 3257 */ 0x05e4b6e2 | (17 << 27) /* 0.368338475 */,
3490 /* 3258 */ 0x05e55501 | (17 << 27) /* 0.368489271 */,
3491 /* 3259 */ 0x05e5f324 | (17 << 27) /* 0.368640082 */,
3492 /* 3260 */ 0x05e6914c | (17 << 27) /* 0.368790909 */,
3493 /* 3261 */ 0x05e72f77 | (17 << 27) /* 0.368941752 */,
3494 /* 3262 */ 0x05e7cda7 | (17 << 27) /* 0.369092610 */,
3495 /* 3263 */ 0x05e86bda | (17 << 27) /* 0.369243483 */,
3496
3497 /* 3264 */ 0x05e90a12 | (17 << 27) /* 0.369394372 */,
3498 /* 3265 */ 0x05e9a84e | (17 << 27) /* 0.369545276 */,
3499 /* 3266 */ 0x05ea468e | (17 << 27) /* 0.369696195 */,
3500 /* 3267 */ 0x05eae4d3 | (17 << 27) /* 0.369847130 */,
3501 /* 3268 */ 0x05eb831b | (17 << 27) /* 0.369998080 */,
3502 /* 3269 */ 0x05ec2168 | (17 << 27) /* 0.370149046 */,
3503 /* 3270 */ 0x05ecbfb8 | (17 << 27) /* 0.370300027 */,
3504 /* 3271 */ 0x05ed5e0d | (17 << 27) /* 0.370451024 */,
3505 /* 3272 */ 0x05edfc66 | (17 << 27) /* 0.370602036 */,
3506 /* 3273 */ 0x05ee9ac3 | (17 << 27) /* 0.370753063 */,
3507 /* 3274 */ 0x05ef3924 | (17 << 27) /* 0.370904105 */,
3508 /* 3275 */ 0x05efd78a | (17 << 27) /* 0.371055163 */,
3509 /* 3276 */ 0x05f075f3 | (17 << 27) /* 0.371206237 */,
3510 /* 3277 */ 0x05f11461 | (17 << 27) /* 0.371357326 */,
3511 /* 3278 */ 0x05f1b2d3 | (17 << 27) /* 0.371508430 */,
3512 /* 3279 */ 0x05f25148 | (17 << 27) /* 0.371659549 */,
3513
3514 /* 3280 */ 0x05f2efc2 | (17 << 27) /* 0.371810684 */,
3515 /* 3281 */ 0x05f38e40 | (17 << 27) /* 0.371961834 */,
3516 /* 3282 */ 0x05f42cc3 | (17 << 27) /* 0.372113000 */,
3517 /* 3283 */ 0x05f4cb49 | (17 << 27) /* 0.372264181 */,
3518 /* 3284 */ 0x05f569d3 | (17 << 27) /* 0.372415377 */,
3519 /* 3285 */ 0x05f60862 | (17 << 27) /* 0.372566589 */,
3520 /* 3286 */ 0x05f6a6f5 | (17 << 27) /* 0.372717816 */,
3521 /* 3287 */ 0x05f7458b | (17 << 27) /* 0.372869058 */,
3522 /* 3288 */ 0x05f7e426 | (17 << 27) /* 0.373020316 */,
3523 /* 3289 */ 0x05f882c5 | (17 << 27) /* 0.373171589 */,
3524 /* 3290 */ 0x05f92169 | (17 << 27) /* 0.373322877 */,
3525 /* 3291 */ 0x05f9c010 | (17 << 27) /* 0.373474181 */,
3526 /* 3292 */ 0x05fa5ebb | (17 << 27) /* 0.373625500 */,
3527 /* 3293 */ 0x05fafd6b | (17 << 27) /* 0.373776834 */,
3528 /* 3294 */ 0x05fb9c1e | (17 << 27) /* 0.373928184 */,
3529 /* 3295 */ 0x05fc3ad6 | (17 << 27) /* 0.374079549 */,
3530
3531 /* 3296 */ 0x05fcd992 | (17 << 27) /* 0.374230929 */,
3532 /* 3297 */ 0x05fd7852 | (17 << 27) /* 0.374382325 */,
3533 /* 3298 */ 0x05fe1716 | (17 << 27) /* 0.374533735 */,
3534 /* 3299 */ 0x05feb5de | (17 << 27) /* 0.374685162 */,
3535 /* 3300 */ 0x05ff54aa | (17 << 27) /* 0.374836603 */,
3536 /* 3301 */ 0x05fff37b | (17 << 27) /* 0.374988060 */,
3537 /* 3302 */ 0x0600924f | (17 << 27) /* 0.375139532 */,
3538 /* 3303 */ 0x06013128 | (17 << 27) /* 0.375291019 */,
3539 /* 3304 */ 0x0601d004 | (17 << 27) /* 0.375442522 */,
3540 /* 3305 */ 0x06026ee5 | (17 << 27) /* 0.375594040 */,
3541 /* 3306 */ 0x06030dca | (17 << 27) /* 0.375745573 */,
3542 /* 3307 */ 0x0603acb3 | (17 << 27) /* 0.375897122 */,
3543 /* 3308 */ 0x06044ba0 | (17 << 27) /* 0.376048685 */,
3544 /* 3309 */ 0x0604ea91 | (17 << 27) /* 0.376200265 */,
3545 /* 3310 */ 0x06058987 | (17 << 27) /* 0.376351859 */,
3546 /* 3311 */ 0x06062880 | (17 << 27) /* 0.376503468 */,
3547
3548 /* 3312 */ 0x0606c77d | (17 << 27) /* 0.376655093 */,
3549 /* 3313 */ 0x0607667f | (17 << 27) /* 0.376806733 */,
3550 /* 3314 */ 0x06080585 | (17 << 27) /* 0.376958389 */,
3551 /* 3315 */ 0x0608a48f | (17 << 27) /* 0.377110059 */,
3552 /* 3316 */ 0x0609439c | (17 << 27) /* 0.377261745 */,
3553 /* 3317 */ 0x0609e2ae | (17 << 27) /* 0.377413446 */,
3554 /* 3318 */ 0x060a81c4 | (17 << 27) /* 0.377565163 */,
3555 /* 3319 */ 0x060b20df | (17 << 27) /* 0.377716894 */,
3556 /* 3320 */ 0x060bbffd | (17 << 27) /* 0.377868641 */,
3557 /* 3321 */ 0x060c5f1f | (17 << 27) /* 0.378020403 */,
3558 /* 3322 */ 0x060cfe46 | (17 << 27) /* 0.378172181 */,
3559 /* 3323 */ 0x060d9d70 | (17 << 27) /* 0.378323973 */,
3560 /* 3324 */ 0x060e3c9f | (17 << 27) /* 0.378475781 */,
3561 /* 3325 */ 0x060edbd1 | (17 << 27) /* 0.378627604 */,
3562 /* 3326 */ 0x060f7b08 | (17 << 27) /* 0.378779442 */,
3563 /* 3327 */ 0x06101a43 | (17 << 27) /* 0.378931296 */,
3564
3565 /* 3328 */ 0x0610b982 | (17 << 27) /* 0.379083164 */,
3566 /* 3329 */ 0x061158c5 | (17 << 27) /* 0.379235048 */,
3567 /* 3330 */ 0x0611f80c | (17 << 27) /* 0.379386947 */,
3568 /* 3331 */ 0x06129757 | (17 << 27) /* 0.379538862 */,
3569 /* 3332 */ 0x061336a6 | (17 << 27) /* 0.379690791 */,
3570 /* 3333 */ 0x0613d5fa | (17 << 27) /* 0.379842736 */,
3571 /* 3334 */ 0x06147551 | (17 << 27) /* 0.379994696 */,
3572 /* 3335 */ 0x061514ad | (17 << 27) /* 0.380146671 */,
3573 /* 3336 */ 0x0615b40c | (17 << 27) /* 0.380298661 */,
3574 /* 3337 */ 0x06165370 | (17 << 27) /* 0.380450666 */,
3575 /* 3338 */ 0x0616f2d8 | (17 << 27) /* 0.380602687 */,
3576 /* 3339 */ 0x06179243 | (17 << 27) /* 0.380754723 */,
3577 /* 3340 */ 0x061831b3 | (17 << 27) /* 0.380906774 */,
3578 /* 3341 */ 0x0618d127 | (17 << 27) /* 0.381058840 */,
3579 /* 3342 */ 0x0619709f | (17 << 27) /* 0.381210921 */,
3580 /* 3343 */ 0x061a101b | (17 << 27) /* 0.381363018 */,
3581
3582 /* 3344 */ 0x061aaf9c | (17 << 27) /* 0.381515130 */,
3583 /* 3345 */ 0x061b4f20 | (17 << 27) /* 0.381667257 */,
3584 /* 3346 */ 0x061beea8 | (17 << 27) /* 0.381819399 */,
3585 /* 3347 */ 0x061c8e34 | (17 << 27) /* 0.381971556 */,
3586 /* 3348 */ 0x061d2dc5 | (17 << 27) /* 0.382123728 */,
3587 /* 3349 */ 0x061dcd59 | (17 << 27) /* 0.382275916 */,
3588 /* 3350 */ 0x061e6cf2 | (17 << 27) /* 0.382428118 */,
3589 /* 3351 */ 0x061f0c8f | (17 << 27) /* 0.382580336 */,
3590 /* 3352 */ 0x061fac2f | (17 << 27) /* 0.382732569 */,
3591 /* 3353 */ 0x06204bd4 | (17 << 27) /* 0.382884817 */,
3592 /* 3354 */ 0x0620eb7d | (17 << 27) /* 0.383037080 */,
3593 /* 3355 */ 0x06218b2a | (17 << 27) /* 0.383189358 */,
3594 /* 3356 */ 0x06222adb | (17 << 27) /* 0.383341652 */,
3595 /* 3357 */ 0x0622ca90 | (17 << 27) /* 0.383493960 */,
3596 /* 3358 */ 0x06236a49 | (17 << 27) /* 0.383646284 */,
3597 /* 3359 */ 0x06240a06 | (17 << 27) /* 0.383798623 */,
3598
3599 /* 3360 */ 0x0624a9c7 | (17 << 27) /* 0.383950977 */,
3600 /* 3361 */ 0x0625498d | (17 << 27) /* 0.384103346 */,
3601 /* 3362 */ 0x0625e956 | (17 << 27) /* 0.384255730 */,
3602 /* 3363 */ 0x06268923 | (17 << 27) /* 0.384408129 */,
3603 /* 3364 */ 0x062728f5 | (17 << 27) /* 0.384560544 */,
3604 /* 3365 */ 0x0627c8ca | (17 << 27) /* 0.384712973 */,
3605 /* 3366 */ 0x062868a4 | (17 << 27) /* 0.384865418 */,
3606 /* 3367 */ 0x06290881 | (17 << 27) /* 0.385017878 */,
3607 /* 3368 */ 0x0629a863 | (17 << 27) /* 0.385170352 */,
3608 /* 3369 */ 0x062a4849 | (17 << 27) /* 0.385322842 */,
3609 /* 3370 */ 0x062ae832 | (17 << 27) /* 0.385475347 */,
3610 /* 3371 */ 0x062b8820 | (17 << 27) /* 0.385627867 */,
3611 /* 3372 */ 0x062c2812 | (17 << 27) /* 0.385780402 */,
3612 /* 3373 */ 0x062cc808 | (17 << 27) /* 0.385932953 */,
3613 /* 3374 */ 0x062d6802 | (17 << 27) /* 0.386085518 */,
3614 /* 3375 */ 0x062e0800 | (17 << 27) /* 0.386238098 */,
3615
3616 /* 3376 */ 0x062ea802 | (17 << 27) /* 0.386390694 */,
3617 /* 3377 */ 0x062f4808 | (17 << 27) /* 0.386543304 */,
3618 /* 3378 */ 0x062fe812 | (17 << 27) /* 0.386695930 */,
3619 /* 3379 */ 0x06308820 | (17 << 27) /* 0.386848570 */,
3620 /* 3380 */ 0x06312832 | (17 << 27) /* 0.387001226 */,
3621 /* 3381 */ 0x0631c849 | (17 << 27) /* 0.387153897 */,
3622 /* 3382 */ 0x06326863 | (17 << 27) /* 0.387306582 */,
3623 /* 3383 */ 0x06330881 | (17 << 27) /* 0.387459283 */,
3624 /* 3384 */ 0x0633a8a3 | (17 << 27) /* 0.387611999 */,
3625 /* 3385 */ 0x063448ca | (17 << 27) /* 0.387764730 */,
3626 /* 3386 */ 0x0634e8f4 | (17 << 27) /* 0.387917476 */,
3627 /* 3387 */ 0x06358923 | (17 << 27) /* 0.388070237 */,
3628 /* 3388 */ 0x06362955 | (17 << 27) /* 0.388223013 */,
3629 /* 3389 */ 0x0636c98c | (17 << 27) /* 0.388375804 */,
3630 /* 3390 */ 0x063769c6 | (17 << 27) /* 0.388528610 */,
3631 /* 3391 */ 0x06380a05 | (17 << 27) /* 0.388681431 */,
3632
3633 /* 3392 */ 0x0638aa48 | (17 << 27) /* 0.388834268 */,
3634 /* 3393 */ 0x06394a8e | (17 << 27) /* 0.388987119 */,
3635 /* 3394 */ 0x0639ead9 | (17 << 27) /* 0.389139985 */,
3636 /* 3395 */ 0x063a8b28 | (17 << 27) /* 0.389292866 */,
3637 /* 3396 */ 0x063b2b7b | (17 << 27) /* 0.389445762 */,
3638 /* 3397 */ 0x063bcbd1 | (17 << 27) /* 0.389598674 */,
3639 /* 3398 */ 0x063c6c2c | (17 << 27) /* 0.389751600 */,
3640 /* 3399 */ 0x063d0c8b | (17 << 27) /* 0.389904541 */,
3641 /* 3400 */ 0x063dacee | (17 << 27) /* 0.390057497 */,
3642 /* 3401 */ 0x063e4d55 | (17 << 27) /* 0.390210468 */,
3643 /* 3402 */ 0x063eedc0 | (17 << 27) /* 0.390363455 */,
3644 /* 3403 */ 0x063f8e2f | (17 << 27) /* 0.390516456 */,
3645 /* 3404 */ 0x06402ea2 | (17 << 27) /* 0.390669472 */,
3646 /* 3405 */ 0x0640cf19 | (17 << 27) /* 0.390822503 */,
3647 /* 3406 */ 0x06416f94 | (17 << 27) /* 0.390975549 */,
3648 /* 3407 */ 0x06421013 | (17 << 27) /* 0.391128611 */,
3649
3650 /* 3408 */ 0x0642b096 | (17 << 27) /* 0.391281687 */,
3651 /* 3409 */ 0x0643511d | (17 << 27) /* 0.391434778 */,
3652 /* 3410 */ 0x0643f1a8 | (17 << 27) /* 0.391587884 */,
3653 /* 3411 */ 0x06449237 | (17 << 27) /* 0.391741005 */,
3654 /* 3412 */ 0x064532ca | (17 << 27) /* 0.391894141 */,
3655 /* 3413 */ 0x0645d361 | (17 << 27) /* 0.392047292 */,
3656 /* 3414 */ 0x064673fc | (17 << 27) /* 0.392200458 */,
3657 /* 3415 */ 0x0647149c | (17 << 27) /* 0.392353638 */,
3658 /* 3416 */ 0x0647b53f | (17 << 27) /* 0.392506834 */,
3659 /* 3417 */ 0x064855e6 | (17 << 27) /* 0.392660045 */,
3660 /* 3418 */ 0x0648f691 | (17 << 27) /* 0.392813271 */,
3661 /* 3419 */ 0x06499740 | (17 << 27) /* 0.392966511 */,
3662 /* 3420 */ 0x064a37f4 | (17 << 27) /* 0.393119767 */,
3663 /* 3421 */ 0x064ad8ab | (17 << 27) /* 0.393273038 */,
3664 /* 3422 */ 0x064b7966 | (17 << 27) /* 0.393426323 */,
3665 /* 3423 */ 0x064c1a25 | (17 << 27) /* 0.393579623 */,
3666
3667 /* 3424 */ 0x064cbae9 | (17 << 27) /* 0.393732939 */,
3668 /* 3425 */ 0x064d5bb0 | (17 << 27) /* 0.393886269 */,
3669 /* 3426 */ 0x064dfc7b | (17 << 27) /* 0.394039614 */,
3670 /* 3427 */ 0x064e9d4b | (17 << 27) /* 0.394192974 */,
3671 /* 3428 */ 0x064f3e1e | (17 << 27) /* 0.394346349 */,
3672 /* 3429 */ 0x064fdef5 | (17 << 27) /* 0.394499739 */,
3673 /* 3430 */ 0x06507fd0 | (17 << 27) /* 0.394653144 */,
3674 /* 3431 */ 0x065120b0 | (17 << 27) /* 0.394806564 */,
3675 /* 3432 */ 0x0651c193 | (17 << 27) /* 0.394959999 */,
3676 /* 3433 */ 0x0652627a | (17 << 27) /* 0.395113448 */,
3677 /* 3434 */ 0x06530366 | (17 << 27) /* 0.395266913 */,
3678 /* 3435 */ 0x0653a455 | (17 << 27) /* 0.395420392 */,
3679 /* 3436 */ 0x06544548 | (17 << 27) /* 0.395573886 */,
3680 /* 3437 */ 0x0654e640 | (17 << 27) /* 0.395727395 */,
3681 /* 3438 */ 0x0655873b | (17 << 27) /* 0.395880919 */,
3682 /* 3439 */ 0x0656283a | (17 << 27) /* 0.396034458 */,
3683
3684 /* 3440 */ 0x0656c93d | (17 << 27) /* 0.396188012 */,
3685 /* 3441 */ 0x06576a45 | (17 << 27) /* 0.396341581 */,
3686 /* 3442 */ 0x06580b50 | (17 << 27) /* 0.396495164 */,
3687 /* 3443 */ 0x0658ac5f | (17 << 27) /* 0.396648763 */,
3688 /* 3444 */ 0x06594d73 | (17 << 27) /* 0.396802376 */,
3689 /* 3445 */ 0x0659ee8a | (17 << 27) /* 0.396956004 */,
3690 /* 3446 */ 0x065a8fa5 | (17 << 27) /* 0.397109647 */,
3691 /* 3447 */ 0x065b30c4 | (17 << 27) /* 0.397263305 */,
3692 /* 3448 */ 0x065bd1e7 | (17 << 27) /* 0.397416978 */,
3693 /* 3449 */ 0x065c730f | (17 << 27) /* 0.397570666 */,
3694 /* 3450 */ 0x065d143a | (17 << 27) /* 0.397724368 */,
3695 /* 3451 */ 0x065db569 | (17 << 27) /* 0.397878085 */,
3696 /* 3452 */ 0x065e569c | (17 << 27) /* 0.398031818 */,
3697 /* 3453 */ 0x065ef7d3 | (17 << 27) /* 0.398185565 */,
3698 /* 3454 */ 0x065f990e | (17 << 27) /* 0.398339326 */,
3699 /* 3455 */ 0x06603a4e | (17 << 27) /* 0.398493103 */,
3700
3701 /* 3456 */ 0x0660db91 | (17 << 27) /* 0.398646895 */,
3702 /* 3457 */ 0x06617cd8 | (17 << 27) /* 0.398800701 */,
3703 /* 3458 */ 0x06621e23 | (17 << 27) /* 0.398954522 */,
3704 /* 3459 */ 0x0662bf72 | (17 << 27) /* 0.399108358 */,
3705 /* 3460 */ 0x066360c5 | (17 << 27) /* 0.399262209 */,
3706 /* 3461 */ 0x0664021c | (17 << 27) /* 0.399416075 */,
3707 /* 3462 */ 0x0664a377 | (17 << 27) /* 0.399569955 */,
3708 /* 3463 */ 0x066544d6 | (17 << 27) /* 0.399723851 */,
3709 /* 3464 */ 0x0665e639 | (17 << 27) /* 0.399877761 */,
3710 /* 3465 */ 0x066687a0 | (17 << 27) /* 0.400031686 */,
3711 /* 3466 */ 0x0667290b | (17 << 27) /* 0.400185625 */,
3712 /* 3467 */ 0x0667ca79 | (17 << 27) /* 0.400339580 */,
3713 /* 3468 */ 0x06686bec | (17 << 27) /* 0.400493549 */,
3714 /* 3469 */ 0x06690d63 | (17 << 27) /* 0.400647534 */,
3715 /* 3470 */ 0x0669aede | (17 << 27) /* 0.400801533 */,
3716 /* 3471 */ 0x066a505d | (17 << 27) /* 0.400955546 */,
3717
3718 /* 3472 */ 0x066af1df | (17 << 27) /* 0.401109575 */,
3719 /* 3473 */ 0x066b9366 | (17 << 27) /* 0.401263618 */,
3720 /* 3474 */ 0x066c34f1 | (17 << 27) /* 0.401417676 */,
3721 /* 3475 */ 0x066cd67f | (17 << 27) /* 0.401571749 */,
3722 /* 3476 */ 0x066d7812 | (17 << 27) /* 0.401725837 */,
3723 /* 3477 */ 0x066e19a9 | (17 << 27) /* 0.401879939 */,
3724 /* 3478 */ 0x066ebb43 | (17 << 27) /* 0.402034056 */,
3725 /* 3479 */ 0x066f5ce2 | (17 << 27) /* 0.402188188 */,
3726 /* 3480 */ 0x066ffe84 | (17 << 27) /* 0.402342335 */,
3727 /* 3481 */ 0x0670a02a | (17 << 27) /* 0.402496497 */,
3728 /* 3482 */ 0x067141d5 | (17 << 27) /* 0.402650673 */,
3729 /* 3483 */ 0x0671e383 | (17 << 27) /* 0.402804864 */,
3730 /* 3484 */ 0x06728535 | (17 << 27) /* 0.402959070 */,
3731 /* 3485 */ 0x067326ec | (17 << 27) /* 0.403113291 */,
3732 /* 3486 */ 0x0673c8a6 | (17 << 27) /* 0.403267526 */,
3733 /* 3487 */ 0x06746a64 | (17 << 27) /* 0.403421776 */,
3734
3735 /* 3488 */ 0x06750c26 | (17 << 27) /* 0.403576041 */,
3736 /* 3489 */ 0x0675adec | (17 << 27) /* 0.403730320 */,
3737 /* 3490 */ 0x06764fb6 | (17 << 27) /* 0.403884615 */,
3738 /* 3491 */ 0x0676f184 | (17 << 27) /* 0.404038924 */,
3739 /* 3492 */ 0x06779356 | (17 << 27) /* 0.404193247 */,
3740 /* 3493 */ 0x0678352c | (17 << 27) /* 0.404347586 */,
3741 /* 3494 */ 0x0678d706 | (17 << 27) /* 0.404501939 */,
3742 /* 3495 */ 0x067978e4 | (17 << 27) /* 0.404656307 */,
3743 /* 3496 */ 0x067a1ac6 | (17 << 27) /* 0.404810690 */,
3744 /* 3497 */ 0x067abcac | (17 << 27) /* 0.404965087 */,
3745 /* 3498 */ 0x067b5e95 | (17 << 27) /* 0.405119499 */,
3746 /* 3499 */ 0x067c0083 | (17 << 27) /* 0.405273926 */,
3747 /* 3500 */ 0x067ca275 | (17 << 27) /* 0.405428368 */,
3748 /* 3501 */ 0x067d446a | (17 << 27) /* 0.405582824 */,
3749 /* 3502 */ 0x067de664 | (17 << 27) /* 0.405737295 */,
3750 /* 3503 */ 0x067e8861 | (17 << 27) /* 0.405891781 */,
3751
3752 /* 3504 */ 0x067f2a62 | (17 << 27) /* 0.406046281 */,
3753 /* 3505 */ 0x067fcc68 | (17 << 27) /* 0.406200796 */,
3754 /* 3506 */ 0x06806e71 | (17 << 27) /* 0.406355326 */,
3755 /* 3507 */ 0x0681107e | (17 << 27) /* 0.406509870 */,
3756 /* 3508 */ 0x0681b28f | (17 << 27) /* 0.406664429 */,
3757 /* 3509 */ 0x068254a4 | (17 << 27) /* 0.406819003 */,
3758 /* 3510 */ 0x0682f6bd | (17 << 27) /* 0.406973592 */,
3759 /* 3511 */ 0x068398da | (17 << 27) /* 0.407128195 */,
3760 /* 3512 */ 0x06843afb | (17 << 27) /* 0.407282813 */,
3761 /* 3513 */ 0x0684dd20 | (17 << 27) /* 0.407437445 */,
3762 /* 3514 */ 0x06857f49 | (17 << 27) /* 0.407592093 */,
3763 /* 3515 */ 0x06862176 | (17 << 27) /* 0.407746754 */,
3764 /* 3516 */ 0x0686c3a6 | (17 << 27) /* 0.407901431 */,
3765 /* 3517 */ 0x068765db | (17 << 27) /* 0.408056122 */,
3766 /* 3518 */ 0x06880814 | (17 << 27) /* 0.408210828 */,
3767 /* 3519 */ 0x0688aa50 | (17 << 27) /* 0.408365549 */,
3768
3769 /* 3520 */ 0x06894c90 | (17 << 27) /* 0.408520284 */,
3770 /* 3521 */ 0x0689eed5 | (17 << 27) /* 0.408675034 */,
3771 /* 3522 */ 0x068a911d | (17 << 27) /* 0.408829798 */,
3772 /* 3523 */ 0x068b3369 | (17 << 27) /* 0.408984577 */,
3773 /* 3524 */ 0x068bd5b9 | (17 << 27) /* 0.409139371 */,
3774 /* 3525 */ 0x068c780e | (17 << 27) /* 0.409294180 */,
3775 /* 3526 */ 0x068d1a66 | (17 << 27) /* 0.409449003 */,
3776 /* 3527 */ 0x068dbcc1 | (17 << 27) /* 0.409603840 */,
3777 /* 3528 */ 0x068e5f21 | (17 << 27) /* 0.409758693 */,
3778 /* 3529 */ 0x068f0185 | (17 << 27) /* 0.409913560 */,
3779 /* 3530 */ 0x068fa3ed | (17 << 27) /* 0.410068441 */,
3780 /* 3531 */ 0x06904658 | (17 << 27) /* 0.410223338 */,
3781 /* 3532 */ 0x0690e8c8 | (17 << 27) /* 0.410378249 */,
3782 /* 3533 */ 0x06918b3c | (17 << 27) /* 0.410533174 */,
3783 /* 3534 */ 0x06922db3 | (17 << 27) /* 0.410688114 */,
3784 /* 3535 */ 0x0692d02e | (17 << 27) /* 0.410843069 */,
3785
3786 /* 3536 */ 0x069372ae | (17 << 27) /* 0.410998038 */,
3787 /* 3537 */ 0x06941531 | (17 << 27) /* 0.411153022 */,
3788 /* 3538 */ 0x0694b7b8 | (17 << 27) /* 0.411308021 */,
3789 /* 3539 */ 0x06955a43 | (17 << 27) /* 0.411463034 */,
3790 /* 3540 */ 0x0695fcd2 | (17 << 27) /* 0.411618062 */,
3791 /* 3541 */ 0x06969f65 | (17 << 27) /* 0.411773104 */,
3792 /* 3542 */ 0x069741fb | (17 << 27) /* 0.411928161 */,
3793 /* 3543 */ 0x0697e496 | (17 << 27) /* 0.412083232 */,
3794 /* 3544 */ 0x06988735 | (17 << 27) /* 0.412238319 */,
3795 /* 3545 */ 0x069929d7 | (17 << 27) /* 0.412393419 */,
3796 /* 3546 */ 0x0699cc7e | (17 << 27) /* 0.412548535 */,
3797 /* 3547 */ 0x069a6f28 | (17 << 27) /* 0.412703664 */,
3798 /* 3548 */ 0x069b11d6 | (17 << 27) /* 0.412858809 */,
3799 /* 3549 */ 0x069bb489 | (17 << 27) /* 0.413013968 */,
3800 /* 3550 */ 0x069c573f | (17 << 27) /* 0.413169142 */,
3801 /* 3551 */ 0x069cf9f9 | (17 << 27) /* 0.413324330 */,
3802
3803 /* 3552 */ 0x069d9cb7 | (17 << 27) /* 0.413479532 */,
3804 /* 3553 */ 0x069e3f78 | (17 << 27) /* 0.413634750 */,
3805 /* 3554 */ 0x069ee23e | (17 << 27) /* 0.413789982 */,
3806 /* 3555 */ 0x069f8508 | (17 << 27) /* 0.413945228 */,
3807 /* 3556 */ 0x06a027d5 | (17 << 27) /* 0.414100489 */,
3808 /* 3557 */ 0x06a0caa7 | (17 << 27) /* 0.414255765 */,
3809 /* 3558 */ 0x06a16d7c | (17 << 27) /* 0.414411055 */,
3810 /* 3559 */ 0x06a21055 | (17 << 27) /* 0.414566359 */,
3811 /* 3560 */ 0x06a2b333 | (17 << 27) /* 0.414721679 */,
3812 /* 3561 */ 0x06a35614 | (17 << 27) /* 0.414877012 */,
3813 /* 3562 */ 0x06a3f8f9 | (17 << 27) /* 0.415032361 */,
3814 /* 3563 */ 0x06a49be2 | (17 << 27) /* 0.415187723 */,
3815 /* 3564 */ 0x06a53ece | (17 << 27) /* 0.415343101 */,
3816 /* 3565 */ 0x06a5e1bf | (17 << 27) /* 0.415498493 */,
3817 /* 3566 */ 0x06a684b4 | (17 << 27) /* 0.415653899 */,
3818 /* 3567 */ 0x06a727ac | (17 << 27) /* 0.415809320 */,
3819
3820 /* 3568 */ 0x06a7caa9 | (17 << 27) /* 0.415964756 */,
3821 /* 3569 */ 0x06a86da9 | (17 << 27) /* 0.416120206 */,
3822 /* 3570 */ 0x06a910ad | (17 << 27) /* 0.416275670 */,
3823 /* 3571 */ 0x06a9b3b5 | (17 << 27) /* 0.416431149 */,
3824 /* 3572 */ 0x06aa56c1 | (17 << 27) /* 0.416586643 */,
3825 /* 3573 */ 0x06aaf9d1 | (17 << 27) /* 0.416742151 */,
3826 /* 3574 */ 0x06ab9ce5 | (17 << 27) /* 0.416897673 */,
3827 /* 3575 */ 0x06ac3ffc | (17 << 27) /* 0.417053210 */,
3828 /* 3576 */ 0x06ace318 | (17 << 27) /* 0.417208762 */,
3829 /* 3577 */ 0x06ad8637 | (17 << 27) /* 0.417364328 */,
3830 /* 3578 */ 0x06ae295b | (17 << 27) /* 0.417519909 */,
3831 /* 3579 */ 0x06aecc82 | (17 << 27) /* 0.417675504 */,
3832 /* 3580 */ 0x06af6fad | (17 << 27) /* 0.417831113 */,
3833 /* 3581 */ 0x06b012dc | (17 << 27) /* 0.417986737 */,
3834 /* 3582 */ 0x06b0b60f | (17 << 27) /* 0.418142376 */,
3835 /* 3583 */ 0x06b15946 | (17 << 27) /* 0.418298029 */,
3836
3837 /* 3584 */ 0x06b1fc81 | (17 << 27) /* 0.418453696 */,
3838 /* 3585 */ 0x06b29fbf | (17 << 27) /* 0.418609378 */,
3839 /* 3586 */ 0x06b34302 | (17 << 27) /* 0.418765075 */,
3840 /* 3587 */ 0x06b3e648 | (17 << 27) /* 0.418920786 */,
3841 /* 3588 */ 0x06b48992 | (17 << 27) /* 0.419076511 */,
3842 /* 3589 */ 0x06b52ce0 | (17 << 27) /* 0.419232251 */,
3843 /* 3590 */ 0x06b5d032 | (17 << 27) /* 0.419388005 */,
3844 /* 3591 */ 0x06b67388 | (17 << 27) /* 0.419543774 */,
3845 /* 3592 */ 0x06b716e2 | (17 << 27) /* 0.419699557 */,
3846 /* 3593 */ 0x06b7ba3f | (17 << 27) /* 0.419855355 */,
3847 /* 3594 */ 0x06b85da1 | (17 << 27) /* 0.420011167 */,
3848 /* 3595 */ 0x06b90106 | (17 << 27) /* 0.420166994 */,
3849 /* 3596 */ 0x06b9a470 | (17 << 27) /* 0.420322835 */,
3850 /* 3597 */ 0x06ba47dd | (17 << 27) /* 0.420478690 */,
3851 /* 3598 */ 0x06baeb4e | (17 << 27) /* 0.420634560 */,
3852 /* 3599 */ 0x06bb8ec3 | (17 << 27) /* 0.420790445 */,
3853
3854 /* 3600 */ 0x06bc323b | (17 << 27) /* 0.420946343 */,
3855 /* 3601 */ 0x06bcd5b8 | (17 << 27) /* 0.421102257 */,
3856 /* 3602 */ 0x06bd7939 | (17 << 27) /* 0.421258184 */,
3857 /* 3603 */ 0x06be1cbd | (17 << 27) /* 0.421414127 */,
3858 /* 3604 */ 0x06bec045 | (17 << 27) /* 0.421570083 */,
3859 /* 3605 */ 0x06bf63d1 | (17 << 27) /* 0.421726054 */,
3860 /* 3606 */ 0x06c00761 | (17 << 27) /* 0.421882040 */,
3861 /* 3607 */ 0x06c0aaf5 | (17 << 27) /* 0.422038039 */,
3862 /* 3608 */ 0x06c14e8d | (17 << 27) /* 0.422194054 */,
3863 /* 3609 */ 0x06c1f229 | (17 << 27) /* 0.422350082 */,
3864 /* 3610 */ 0x06c295c8 | (17 << 27) /* 0.422506125 */,
3865 /* 3611 */ 0x06c3396c | (17 << 27) /* 0.422662183 */,
3866 /* 3612 */ 0x06c3dd13 | (17 << 27) /* 0.422818255 */,
3867 /* 3613 */ 0x06c480be | (17 << 27) /* 0.422974341 */,
3868 /* 3614 */ 0x06c5246d | (17 << 27) /* 0.423130442 */,
3869 /* 3615 */ 0x06c5c820 | (17 << 27) /* 0.423286557 */,
3870
3871 /* 3616 */ 0x06c66bd6 | (17 << 27) /* 0.423442686 */,
3872 /* 3617 */ 0x06c70f91 | (17 << 27) /* 0.423598830 */,
3873 /* 3618 */ 0x06c7b34f | (17 << 27) /* 0.423754988 */,
3874 /* 3619 */ 0x06c85712 | (17 << 27) /* 0.423911161 */,
3875 /* 3620 */ 0x06c8fad8 | (17 << 27) /* 0.424067348 */,
3876 /* 3621 */ 0x06c99ea2 | (17 << 27) /* 0.424223550 */,
3877 /* 3622 */ 0x06ca4270 | (17 << 27) /* 0.424379765 */,
3878 /* 3623 */ 0x06cae641 | (17 << 27) /* 0.424535996 */,
3879 /* 3624 */ 0x06cb8a17 | (17 << 27) /* 0.424692240 */,
3880 /* 3625 */ 0x06cc2df0 | (17 << 27) /* 0.424848499 */,
3881 /* 3626 */ 0x06ccd1ce | (17 << 27) /* 0.425004772 */,
3882 /* 3627 */ 0x06cd75af | (17 << 27) /* 0.425161060 */,
3883 /* 3628 */ 0x06ce1994 | (17 << 27) /* 0.425317362 */,
3884 /* 3629 */ 0x06cebd7d | (17 << 27) /* 0.425473678 */,
3885 /* 3630 */ 0x06cf6169 | (17 << 27) /* 0.425630009 */,
3886 /* 3631 */ 0x06d0055a | (17 << 27) /* 0.425786354 */,
3887
3888 /* 3632 */ 0x06d0a94e | (17 << 27) /* 0.425942714 */,
3889 /* 3633 */ 0x06d14d47 | (17 << 27) /* 0.426099088 */,
3890 /* 3634 */ 0x06d1f143 | (17 << 27) /* 0.426255476 */,
3891 /* 3635 */ 0x06d29543 | (17 << 27) /* 0.426411878 */,
3892 /* 3636 */ 0x06d33947 | (17 << 27) /* 0.426568295 */,
3893 /* 3637 */ 0x06d3dd4e | (17 << 27) /* 0.426724726 */,
3894 /* 3638 */ 0x06d4815a | (17 << 27) /* 0.426881172 */,
3895 /* 3639 */ 0x06d52569 | (17 << 27) /* 0.427037632 */,
3896 /* 3640 */ 0x06d5c97c | (17 << 27) /* 0.427194106 */,
3897 /* 3641 */ 0x06d66d93 | (17 << 27) /* 0.427350594 */,
3898 /* 3642 */ 0x06d711ae | (17 << 27) /* 0.427507097 */,
3899 /* 3643 */ 0x06d7b5cd | (17 << 27) /* 0.427663614 */,
3900 /* 3644 */ 0x06d859f0 | (17 << 27) /* 0.427820146 */,
3901 /* 3645 */ 0x06d8fe16 | (17 << 27) /* 0.427976692 */,
3902 /* 3646 */ 0x06d9a240 | (17 << 27) /* 0.428133252 */,
3903 /* 3647 */ 0x06da466f | (17 << 27) /* 0.428289826 */,
3904
3905 /* 3648 */ 0x06daeaa1 | (17 << 27) /* 0.428446415 */,
3906 /* 3649 */ 0x06db8ed6 | (17 << 27) /* 0.428603018 */,
3907 /* 3650 */ 0x06dc3310 | (17 << 27) /* 0.428759635 */,
3908 /* 3651 */ 0x06dcd74d | (17 << 27) /* 0.428916267 */,
3909 /* 3652 */ 0x06dd7b8f | (17 << 27) /* 0.429072913 */,
3910 /* 3653 */ 0x06de1fd4 | (17 << 27) /* 0.429229573 */,
3911 /* 3654 */ 0x06dec41d | (17 << 27) /* 0.429386248 */,
3912 /* 3655 */ 0x06df686a | (17 << 27) /* 0.429542937 */,
3913 /* 3656 */ 0x06e00cbb | (17 << 27) /* 0.429699640 */,
3914 /* 3657 */ 0x06e0b10f | (17 << 27) /* 0.429856357 */,
3915 /* 3658 */ 0x06e15567 | (17 << 27) /* 0.430013089 */,
3916 /* 3659 */ 0x06e1f9c4 | (17 << 27) /* 0.430169835 */,
3917 /* 3660 */ 0x06e29e24 | (17 << 27) /* 0.430326595 */,
3918 /* 3661 */ 0x06e34287 | (17 << 27) /* 0.430483370 */,
3919 /* 3662 */ 0x06e3e6ef | (17 << 27) /* 0.430640159 */,
3920 /* 3663 */ 0x06e48b5b | (17 << 27) /* 0.430796962 */,
3921
3922 /* 3664 */ 0x06e52fca | (17 << 27) /* 0.430953779 */,
3923 /* 3665 */ 0x06e5d43d | (17 << 27) /* 0.431110611 */,
3924 /* 3666 */ 0x06e678b4 | (17 << 27) /* 0.431267457 */,
3925 /* 3667 */ 0x06e71d2f | (17 << 27) /* 0.431424317 */,
3926 /* 3668 */ 0x06e7c1ae | (17 << 27) /* 0.431581192 */,
3927 /* 3669 */ 0x06e86630 | (17 << 27) /* 0.431738080 */,
3928 /* 3670 */ 0x06e90ab7 | (17 << 27) /* 0.431894983 */,
3929 /* 3671 */ 0x06e9af41 | (17 << 27) /* 0.432051900 */,
3930 /* 3672 */ 0x06ea53cf | (17 << 27) /* 0.432208832 */,
3931 /* 3673 */ 0x06eaf860 | (17 << 27) /* 0.432365778 */,
3932 /* 3674 */ 0x06eb9cf6 | (17 << 27) /* 0.432522737 */,
3933 /* 3675 */ 0x06ec418f | (17 << 27) /* 0.432679712 */,
3934 /* 3676 */ 0x06ece62d | (17 << 27) /* 0.432836700 */,
3935 /* 3677 */ 0x06ed8ace | (17 << 27) /* 0.432993703 */,
3936 /* 3678 */ 0x06ee2f73 | (17 << 27) /* 0.433150720 */,
3937 /* 3679 */ 0x06eed41b | (17 << 27) /* 0.433307751 */,
3938
3939 /* 3680 */ 0x06ef78c8 | (17 << 27) /* 0.433464796 */,
3940 /* 3681 */ 0x06f01d78 | (17 << 27) /* 0.433621856 */,
3941 /* 3682 */ 0x06f0c22c | (17 << 27) /* 0.433778929 */,
3942 /* 3683 */ 0x06f166e4 | (17 << 27) /* 0.433936017 */,
3943 /* 3684 */ 0x06f20ba0 | (17 << 27) /* 0.434093120 */,
3944 /* 3685 */ 0x06f2b060 | (17 << 27) /* 0.434250236 */,
3945 /* 3686 */ 0x06f35523 | (17 << 27) /* 0.434407367 */,
3946 /* 3687 */ 0x06f3f9eb | (17 << 27) /* 0.434564512 */,
3947 /* 3688 */ 0x06f49eb6 | (17 << 27) /* 0.434721671 */,
3948 /* 3689 */ 0x06f54385 | (17 << 27) /* 0.434878844 */,
3949 /* 3690 */ 0x06f5e857 | (17 << 27) /* 0.435036032 */,
3950 /* 3691 */ 0x06f68d2e | (17 << 27) /* 0.435193233 */,
3951 /* 3692 */ 0x06f73208 | (17 << 27) /* 0.435350449 */,
3952 /* 3693 */ 0x06f7d6e6 | (17 << 27) /* 0.435507679 */,
3953 /* 3694 */ 0x06f87bc8 | (17 << 27) /* 0.435664924 */,
3954 /* 3695 */ 0x06f920ae | (17 << 27) /* 0.435822182 */,
3955
3956 /* 3696 */ 0x06f9c597 | (17 << 27) /* 0.435979455 */,
3957 /* 3697 */ 0x06fa6a85 | (17 << 27) /* 0.436136741 */,
3958 /* 3698 */ 0x06fb0f76 | (17 << 27) /* 0.436294042 */,
3959 /* 3699 */ 0x06fbb46b | (17 << 27) /* 0.436451358 */,
3960 /* 3700 */ 0x06fc5964 | (17 << 27) /* 0.436608687 */,
3961 /* 3701 */ 0x06fcfe60 | (17 << 27) /* 0.436766031 */,
3962 /* 3702 */ 0x06fda361 | (17 << 27) /* 0.436923388 */,
3963 /* 3703 */ 0x06fe4865 | (17 << 27) /* 0.437080760 */,
3964 /* 3704 */ 0x06feed6d | (17 << 27) /* 0.437238146 */,
3965 /* 3705 */ 0x06ff9279 | (17 << 27) /* 0.437395547 */,
3966 /* 3706 */ 0x07003788 | (17 << 27) /* 0.437552961 */,
3967 /* 3707 */ 0x0700dc9c | (17 << 27) /* 0.437710389 */,
3968 /* 3708 */ 0x070181b3 | (17 << 27) /* 0.437867832 */,
3969 /* 3709 */ 0x070226ce | (17 << 27) /* 0.438025289 */,
3970 /* 3710 */ 0x0702cbed | (17 << 27) /* 0.438182760 */,
3971 /* 3711 */ 0x0703710f | (17 << 27) /* 0.438340245 */,
3972
3973 /* 3712 */ 0x07041636 | (17 << 27) /* 0.438497744 */,
3974 /* 3713 */ 0x0704bb60 | (17 << 27) /* 0.438655258 */,
3975 /* 3714 */ 0x0705608e | (17 << 27) /* 0.438812785 */,
3976 /* 3715 */ 0x070605c0 | (17 << 27) /* 0.438970327 */,
3977 /* 3716 */ 0x0706aaf5 | (17 << 27) /* 0.439127883 */,
3978 /* 3717 */ 0x0707502f | (17 << 27) /* 0.439285453 */,
3979 /* 3718 */ 0x0707f56c | (17 << 27) /* 0.439443037 */,
3980 /* 3719 */ 0x07089aad | (17 << 27) /* 0.439600635 */,
3981 /* 3720 */ 0x07093ff2 | (17 << 27) /* 0.439758248 */,
3982 /* 3721 */ 0x0709e53a | (17 << 27) /* 0.439915874 */,
3983 /* 3722 */ 0x070a8a86 | (17 << 27) /* 0.440073515 */,
3984 /* 3723 */ 0x070b2fd7 | (17 << 27) /* 0.440231170 */,
3985 /* 3724 */ 0x070bd52a | (17 << 27) /* 0.440388839 */,
3986 /* 3725 */ 0x070c7a82 | (17 << 27) /* 0.440546522 */,
3987 /* 3726 */ 0x070d1fde | (17 << 27) /* 0.440704219 */,
3988 /* 3727 */ 0x070dc53d | (17 << 27) /* 0.440861930 */,
3989
3990 /* 3728 */ 0x070e6aa0 | (17 << 27) /* 0.441019655 */,
3991 /* 3729 */ 0x070f1007 | (17 << 27) /* 0.441177395 */,
3992 /* 3730 */ 0x070fb571 | (17 << 27) /* 0.441335148 */,
3993 /* 3731 */ 0x07105ae0 | (17 << 27) /* 0.441492916 */,
3994 /* 3732 */ 0x07110052 | (17 << 27) /* 0.441650697 */,
3995 /* 3733 */ 0x0711a5c8 | (17 << 27) /* 0.441808493 */,
3996 /* 3734 */ 0x07124b42 | (17 << 27) /* 0.441966303 */,
3997 /* 3735 */ 0x0712f0bf | (17 << 27) /* 0.442124127 */,
3998 /* 3736 */ 0x07139641 | (17 << 27) /* 0.442281965 */,
3999 /* 3737 */ 0x07143bc6 | (17 << 27) /* 0.442439817 */,
4000 /* 3738 */ 0x0714e14f | (17 << 27) /* 0.442597683 */,
4001 /* 3739 */ 0x071586db | (17 << 27) /* 0.442755564 */,
4002 /* 3740 */ 0x07162c6c | (17 << 27) /* 0.442913458 */,
4003 /* 3741 */ 0x0716d200 | (17 << 27) /* 0.443071366 */,
4004 /* 3742 */ 0x07177798 | (17 << 27) /* 0.443229289 */,
4005 /* 3743 */ 0x07181d34 | (17 << 27) /* 0.443387226 */,
4006
4007 /* 3744 */ 0x0718c2d3 | (17 << 27) /* 0.443545176 */,
4008 /* 3745 */ 0x07196877 | (17 << 27) /* 0.443703141 */,
4009 /* 3746 */ 0x071a0e1e | (17 << 27) /* 0.443861120 */,
4010 /* 3747 */ 0x071ab3c9 | (17 << 27) /* 0.444019113 */,
4011 /* 3748 */ 0x071b5977 | (17 << 27) /* 0.444177119 */,
4012 /* 3749 */ 0x071bff2a | (17 << 27) /* 0.444335140 */,
4013 /* 3750 */ 0x071ca4e0 | (17 << 27) /* 0.444493175 */,
4014 /* 3751 */ 0x071d4a9a | (17 << 27) /* 0.444651224 */,
4015 /* 3752 */ 0x071df058 | (17 << 27) /* 0.444809288 */,
4016 /* 3753 */ 0x071e9619 | (17 << 27) /* 0.444967365 */,
4017 /* 3754 */ 0x071f3bde | (17 << 27) /* 0.445125456 */,
4018 /* 3755 */ 0x071fe1a8 | (17 << 27) /* 0.445283561 */,
4019 /* 3756 */ 0x07208774 | (17 << 27) /* 0.445441680 */,
4020 /* 3757 */ 0x07212d45 | (17 << 27) /* 0.445599814 */,
4021 /* 3758 */ 0x0721d319 | (17 << 27) /* 0.445757961 */,
4022 /* 3759 */ 0x072278f1 | (17 << 27) /* 0.445916122 */,
4023
4024 /* 3760 */ 0x07231ecd | (17 << 27) /* 0.446074298 */,
4025 /* 3761 */ 0x0723c4ad | (17 << 27) /* 0.446232487 */,
4026 /* 3762 */ 0x07246a90 | (17 << 27) /* 0.446390690 */,
4027 /* 3763 */ 0x07251077 | (17 << 27) /* 0.446548908 */,
4028 /* 3764 */ 0x0725b662 | (17 << 27) /* 0.446707139 */,
4029 /* 3765 */ 0x07265c51 | (17 << 27) /* 0.446865385 */,
4030 /* 3766 */ 0x07270244 | (17 << 27) /* 0.447023644 */,
4031 /* 3767 */ 0x0727a83a | (17 << 27) /* 0.447181918 */,
4032 /* 3768 */ 0x07284e34 | (17 << 27) /* 0.447340205 */,
4033 /* 3769 */ 0x0728f431 | (17 << 27) /* 0.447498507 */,
4034 /* 3770 */ 0x07299a33 | (17 << 27) /* 0.447656822 */,
4035 /* 3771 */ 0x072a4038 | (17 << 27) /* 0.447815152 */,
4036 /* 3772 */ 0x072ae641 | (17 << 27) /* 0.447973495 */,
4037 /* 3773 */ 0x072b8c4e | (17 << 27) /* 0.448131853 */,
4038 /* 3774 */ 0x072c325e | (17 << 27) /* 0.448290224 */,
4039 /* 3775 */ 0x072cd873 | (17 << 27) /* 0.448448609 */,
4040
4041 /* 3776 */ 0x072d7e8b | (17 << 27) /* 0.448607009 */,
4042 /* 3777 */ 0x072e24a7 | (17 << 27) /* 0.448765422 */,
4043 /* 3778 */ 0x072ecac6 | (17 << 27) /* 0.448923850 */,
4044 /* 3779 */ 0x072f70e9 | (17 << 27) /* 0.449082291 */,
4045 /* 3780 */ 0x07301710 | (17 << 27) /* 0.449240746 */,
4046 /* 3781 */ 0x0730bd3b | (17 << 27) /* 0.449399216 */,
4047 /* 3782 */ 0x0731636a | (17 << 27) /* 0.449557699 */,
4048 /* 3783 */ 0x0732099c | (17 << 27) /* 0.449716196 */,
4049 /* 3784 */ 0x0732afd2 | (17 << 27) /* 0.449874708 */,
4050 /* 3785 */ 0x0733560c | (17 << 27) /* 0.450033233 */,
4051 /* 3786 */ 0x0733fc49 | (17 << 27) /* 0.450191772 */,
4052 /* 3787 */ 0x0734a28b | (17 << 27) /* 0.450350325 */,
4053 /* 3788 */ 0x073548d0 | (17 << 27) /* 0.450508892 */,
4054 /* 3789 */ 0x0735ef18 | (17 << 27) /* 0.450667473 */,
4055 /* 3790 */ 0x07369565 | (17 << 27) /* 0.450826068 */,
4056 /* 3791 */ 0x07373bb5 | (17 << 27) /* 0.450984677 */,
4057
4058 /* 3792 */ 0x0737e209 | (17 << 27) /* 0.451143300 */,
4059 /* 3793 */ 0x07388861 | (17 << 27) /* 0.451301937 */,
4060 /* 3794 */ 0x07392ebc | (17 << 27) /* 0.451460588 */,
4061 /* 3795 */ 0x0739d51c | (17 << 27) /* 0.451619252 */,
4062 /* 3796 */ 0x073a7b7f | (17 << 27) /* 0.451777931 */,
4063 /* 3797 */ 0x073b21e5 | (17 << 27) /* 0.451936623 */,
4064 /* 3798 */ 0x073bc850 | (17 << 27) /* 0.452095330 */,
4065 /* 3799 */ 0x073c6ebe | (17 << 27) /* 0.452254050 */,
4066 /* 3800 */ 0x073d1530 | (17 << 27) /* 0.452412785 */,
4067 /* 3801 */ 0x073dbba6 | (17 << 27) /* 0.452571533 */,
4068 /* 3802 */ 0x073e621f | (17 << 27) /* 0.452730295 */,
4069 /* 3803 */ 0x073f089c | (17 << 27) /* 0.452889071 */,
4070 /* 3804 */ 0x073faf1d | (17 << 27) /* 0.453047861 */,
4071 /* 3805 */ 0x074055a2 | (17 << 27) /* 0.453206665 */,
4072 /* 3806 */ 0x0740fc2a | (17 << 27) /* 0.453365483 */,
4073 /* 3807 */ 0x0741a2b6 | (17 << 27) /* 0.453524315 */,
4074
4075 /* 3808 */ 0x07424946 | (17 << 27) /* 0.453683161 */,
4076 /* 3809 */ 0x0742efd9 | (17 << 27) /* 0.453842020 */,
4077 /* 3810 */ 0x07439671 | (17 << 27) /* 0.454000894 */,
4078 /* 3811 */ 0x07443d0c | (17 << 27) /* 0.454159781 */,
4079 /* 3812 */ 0x0744e3aa | (17 << 27) /* 0.454318683 */,
4080 /* 3813 */ 0x07458a4d | (17 << 27) /* 0.454477598 */,
4081 /* 3814 */ 0x074630f3 | (17 << 27) /* 0.454636527 */,
4082 /* 3815 */ 0x0746d79d | (17 << 27) /* 0.454795470 */,
4083 /* 3816 */ 0x07477e4b | (17 << 27) /* 0.454954427 */,
4084 /* 3817 */ 0x074824fc | (17 << 27) /* 0.455113397 */,
4085 /* 3818 */ 0x0748cbb1 | (17 << 27) /* 0.455272382 */,
4086 /* 3819 */ 0x0749726a | (17 << 27) /* 0.455431381 */,
4087 /* 3820 */ 0x074a1927 | (17 << 27) /* 0.455590393 */,
4088 /* 3821 */ 0x074abfe7 | (17 << 27) /* 0.455749419 */,
4089 /* 3822 */ 0x074b66ab | (17 << 27) /* 0.455908459 */,
4090 /* 3823 */ 0x074c0d73 | (17 << 27) /* 0.456067513 */,
4091
4092 /* 3824 */ 0x074cb43e | (17 << 27) /* 0.456226581 */,
4093 /* 3825 */ 0x074d5b0d | (17 << 27) /* 0.456385663 */,
4094 /* 3826 */ 0x074e01e0 | (17 << 27) /* 0.456544759 */,
4095 /* 3827 */ 0x074ea8b7 | (17 << 27) /* 0.456703868 */,
4096 /* 3828 */ 0x074f4f91 | (17 << 27) /* 0.456862992 */,
4097 /* 3829 */ 0x074ff66f | (17 << 27) /* 0.457022129 */,
4098 /* 3830 */ 0x07509d51 | (17 << 27) /* 0.457181280 */,
4099 /* 3831 */ 0x07514437 | (17 << 27) /* 0.457340445 */,
4100 /* 3832 */ 0x0751eb20 | (17 << 27) /* 0.457499623 */,
4101 /* 3833 */ 0x0752920d | (17 << 27) /* 0.457658816 */,
4102 /* 3834 */ 0x075338fd | (17 << 27) /* 0.457818022 */,
4103 /* 3835 */ 0x0753dff2 | (17 << 27) /* 0.457977243 */,
4104 /* 3836 */ 0x075486ea | (17 << 27) /* 0.458136477 */,
4105 /* 3837 */ 0x07552de6 | (17 << 27) /* 0.458295725 */,
4106 /* 3838 */ 0x0755d4e5 | (17 << 27) /* 0.458454987 */,
4107 /* 3839 */ 0x07567be8 | (17 << 27) /* 0.458614262 */,
4108
4109 /* 3840 */ 0x075722ef | (17 << 27) /* 0.458773552 */,
4110 /* 3841 */ 0x0757c9fa | (17 << 27) /* 0.458932855 */,
4111 /* 3842 */ 0x07587108 | (17 << 27) /* 0.459092172 */,
4112 /* 3843 */ 0x0759181a | (17 << 27) /* 0.459251503 */,
4113 /* 3844 */ 0x0759bf30 | (17 << 27) /* 0.459410848 */,
4114 /* 3845 */ 0x075a664a | (17 << 27) /* 0.459570206 */,
4115 /* 3846 */ 0x075b0d67 | (17 << 27) /* 0.459729579 */,
4116 /* 3847 */ 0x075bb488 | (17 << 27) /* 0.459888965 */,
4117 /* 3848 */ 0x075c5bac | (17 << 27) /* 0.460048365 */,
4118 /* 3849 */ 0x075d02d5 | (17 << 27) /* 0.460207779 */,
4119 /* 3850 */ 0x075daa01 | (17 << 27) /* 0.460367206 */,
4120 /* 3851 */ 0x075e5130 | (17 << 27) /* 0.460526648 */,
4121 /* 3852 */ 0x075ef864 | (17 << 27) /* 0.460686103 */,
4122 /* 3853 */ 0x075f9f9b | (17 << 27) /* 0.460845572 */,
4123 /* 3854 */ 0x076046d6 | (17 << 27) /* 0.461005055 */,
4124 /* 3855 */ 0x0760ee14 | (17 << 27) /* 0.461164552 */,
4125
4126 /* 3856 */ 0x07619557 | (17 << 27) /* 0.461324062 */,
4127 /* 3857 */ 0x07623c9d | (17 << 27) /* 0.461483586 */,
4128 /* 3858 */ 0x0762e3e6 | (17 << 27) /* 0.461643124 */,
4129 /* 3859 */ 0x07638b34 | (17 << 27) /* 0.461802676 */,
4130 /* 3860 */ 0x07643285 | (17 << 27) /* 0.461962242 */,
4131 /* 3861 */ 0x0764d9d9 | (17 << 27) /* 0.462121821 */,
4132 /* 3862 */ 0x07658132 | (17 << 27) /* 0.462281414 */,
4133 /* 3863 */ 0x0766288e | (17 << 27) /* 0.462441021 */,
4134 /* 3864 */ 0x0766cfee | (17 << 27) /* 0.462600642 */,
4135 /* 3865 */ 0x07677751 | (17 << 27) /* 0.462760276 */,
4136 /* 3866 */ 0x07681eb9 | (17 << 27) /* 0.462919924 */,
4137 /* 3867 */ 0x0768c624 | (17 << 27) /* 0.463079586 */,
4138 /* 3868 */ 0x07696d92 | (17 << 27) /* 0.463239262 */,
4139 /* 3869 */ 0x076a1505 | (17 << 27) /* 0.463398951 */,
4140 /* 3870 */ 0x076abc7b | (17 << 27) /* 0.463558655 */,
4141 /* 3871 */ 0x076b63f4 | (17 << 27) /* 0.463718372 */,
4142
4143 /* 3872 */ 0x076c0b72 | (17 << 27) /* 0.463878102 */,
4144 /* 3873 */ 0x076cb2f3 | (17 << 27) /* 0.464037847 */,
4145 /* 3874 */ 0x076d5a78 | (17 << 27) /* 0.464197605 */,
4146 /* 3875 */ 0x076e0200 | (17 << 27) /* 0.464357377 */,
4147 /* 3876 */ 0x076ea98c | (17 << 27) /* 0.464517163 */,
4148 /* 3877 */ 0x076f511c | (17 << 27) /* 0.464676962 */,
4149 /* 3878 */ 0x076ff8b0 | (17 << 27) /* 0.464836776 */,
4150 /* 3879 */ 0x0770a047 | (17 << 27) /* 0.464996603 */,
4151 /* 3880 */ 0x077147e2 | (17 << 27) /* 0.465156443 */,
4152 /* 3881 */ 0x0771ef80 | (17 << 27) /* 0.465316298 */,
4153 /* 3882 */ 0x07729723 | (17 << 27) /* 0.465476166 */,
4154 /* 3883 */ 0x07733ec9 | (17 << 27) /* 0.465636048 */,
4155 /* 3884 */ 0x0773e672 | (17 << 27) /* 0.465795943 */,
4156 /* 3885 */ 0x07748e20 | (17 << 27) /* 0.465955853 */,
4157 /* 3886 */ 0x077535d1 | (17 << 27) /* 0.466115776 */,
4158 /* 3887 */ 0x0775dd85 | (17 << 27) /* 0.466275713 */,
4159
4160 /* 3888 */ 0x0776853e | (17 << 27) /* 0.466435663 */,
4161 /* 3889 */ 0x07772cfa | (17 << 27) /* 0.466595627 */,
4162 /* 3890 */ 0x0777d4ba | (17 << 27) /* 0.466755605 */,
4163 /* 3891 */ 0x07787c7d | (17 << 27) /* 0.466915597 */,
4164 /* 3892 */ 0x07792444 | (17 << 27) /* 0.467075602 */,
4165 /* 3893 */ 0x0779cc0f | (17 << 27) /* 0.467235621 */,
4166 /* 3894 */ 0x077a73dd | (17 << 27) /* 0.467395654 */,
4167 /* 3895 */ 0x077b1baf | (17 << 27) /* 0.467555701 */,
4168 /* 3896 */ 0x077bc385 | (17 << 27) /* 0.467715761 */,
4169 /* 3897 */ 0x077c6b5f | (17 << 27) /* 0.467875835 */,
4170 /* 3898 */ 0x077d133c | (17 << 27) /* 0.468035922 */,
4171 /* 3899 */ 0x077dbb1d | (17 << 27) /* 0.468196023 */,
4172 /* 3900 */ 0x077e6301 | (17 << 27) /* 0.468356138 */,
4173 /* 3901 */ 0x077f0ae9 | (17 << 27) /* 0.468516267 */,
4174 /* 3902 */ 0x077fb2d5 | (17 << 27) /* 0.468676409 */,
4175 /* 3903 */ 0x07805ac5 | (17 << 27) /* 0.468836565 */,
4176
4177 /* 3904 */ 0x078102b8 | (17 << 27) /* 0.468996735 */,
4178 /* 3905 */ 0x0781aaaf | (17 << 27) /* 0.469156918 */,
4179 /* 3906 */ 0x078252aa | (17 << 27) /* 0.469317115 */,
4180 /* 3907 */ 0x0782faa8 | (17 << 27) /* 0.469477326 */,
4181 /* 3908 */ 0x0783a2aa | (17 << 27) /* 0.469637550 */,
4182 /* 3909 */ 0x07844aaf | (17 << 27) /* 0.469797788 */,
4183 /* 3910 */ 0x0784f2b8 | (17 << 27) /* 0.469958040 */,
4184 /* 3911 */ 0x07859ac5 | (17 << 27) /* 0.470118305 */,
4185 /* 3912 */ 0x078642d6 | (17 << 27) /* 0.470278584 */,
4186 /* 3913 */ 0x0786eaea | (17 << 27) /* 0.470438877 */,
4187 /* 3914 */ 0x07879302 | (17 << 27) /* 0.470599183 */,
4188 /* 3915 */ 0x07883b1e | (17 << 27) /* 0.470759503 */,
4189 /* 3916 */ 0x0788e33d | (17 << 27) /* 0.470919836 */,
4190 /* 3917 */ 0x07898b60 | (17 << 27) /* 0.471080184 */,
4191 /* 3918 */ 0x078a3386 | (17 << 27) /* 0.471240545 */,
4192 /* 3919 */ 0x078adbb0 | (17 << 27) /* 0.471400919 */,
4193
4194 /* 3920 */ 0x078b83de | (17 << 27) /* 0.471561307 */,
4195 /* 3921 */ 0x078c2c10 | (17 << 27) /* 0.471721709 */,
4196 /* 3922 */ 0x078cd445 | (17 << 27) /* 0.471882125 */,
4197 /* 3923 */ 0x078d7c7e | (17 << 27) /* 0.472042554 */,
4198 /* 3924 */ 0x078e24ba | (17 << 27) /* 0.472202996 */,
4199 /* 3925 */ 0x078eccfb | (17 << 27) /* 0.472363453 */,
4200 /* 3926 */ 0x078f753e | (17 << 27) /* 0.472523923 */,
4201 /* 3927 */ 0x07901d86 | (17 << 27) /* 0.472684406 */,
4202 /* 3928 */ 0x0790c5d1 | (17 << 27) /* 0.472844904 */,
4203 /* 3929 */ 0x07916e20 | (17 << 27) /* 0.473005414 */,
4204 /* 3930 */ 0x07921672 | (17 << 27) /* 0.473165939 */,
4205 /* 3931 */ 0x0792bec8 | (17 << 27) /* 0.473326477 */,
4206 /* 3932 */ 0x07936722 | (17 << 27) /* 0.473487029 */,
4207 /* 3933 */ 0x07940f80 | (17 << 27) /* 0.473647594 */,
4208 /* 3934 */ 0x0794b7e1 | (17 << 27) /* 0.473808173 */,
4209 /* 3935 */ 0x07956045 | (17 << 27) /* 0.473968765 */,
4210
4211 /* 3936 */ 0x079608ae | (17 << 27) /* 0.474129372 */,
4212 /* 3937 */ 0x0796b11a | (17 << 27) /* 0.474289991 */,
4213 /* 3938 */ 0x0797598a | (17 << 27) /* 0.474450625 */,
4214 /* 3939 */ 0x079801fd | (17 << 27) /* 0.474611272 */,
4215 /* 3940 */ 0x0798aa74 | (17 << 27) /* 0.474771932 */,
4216 /* 3941 */ 0x079952ee | (17 << 27) /* 0.474932606 */,
4217 /* 3942 */ 0x0799fb6d | (17 << 27) /* 0.475093294 */,
4218 /* 3943 */ 0x079aa3ef | (17 << 27) /* 0.475253995 */,
4219 /* 3944 */ 0x079b4c74 | (17 << 27) /* 0.475414710 */,
4220 /* 3945 */ 0x079bf4fd | (17 << 27) /* 0.475575439 */,
4221 /* 3946 */ 0x079c9d8a | (17 << 27) /* 0.475736181 */,
4222 /* 3947 */ 0x079d461b | (17 << 27) /* 0.475896936 */,
4223 /* 3948 */ 0x079deeaf | (17 << 27) /* 0.476057705 */,
4224 /* 3949 */ 0x079e9747 | (17 << 27) /* 0.476218488 */,
4225 /* 3950 */ 0x079f3fe2 | (17 << 27) /* 0.476379285 */,
4226 /* 3951 */ 0x079fe881 | (17 << 27) /* 0.476540095 */,
4227
4228 /* 3952 */ 0x07a09124 | (17 << 27) /* 0.476700918 */,
4229 /* 3953 */ 0x07a139ca | (17 << 27) /* 0.476861755 */,
4230 /* 3954 */ 0x07a1e274 | (17 << 27) /* 0.477022606 */,
4231 /* 3955 */ 0x07a28b22 | (17 << 27) /* 0.477183470 */,
4232 /* 3956 */ 0x07a333d3 | (17 << 27) /* 0.477344348 */,
4233 /* 3957 */ 0x07a3dc88 | (17 << 27) /* 0.477505239 */,
4234 /* 3958 */ 0x07a48541 | (17 << 27) /* 0.477666144 */,
4235 /* 3959 */ 0x07a52dfd | (17 << 27) /* 0.477827062 */,
4236 /* 3960 */ 0x07a5d6bd | (17 << 27) /* 0.477987994 */,
4237 /* 3961 */ 0x07a67f80 | (17 << 27) /* 0.478148940 */,
4238 /* 3962 */ 0x07a72847 | (17 << 27) /* 0.478309899 */,
4239 /* 3963 */ 0x07a7d112 | (17 << 27) /* 0.478470871 */,
4240 /* 3964 */ 0x07a879e1 | (17 << 27) /* 0.478631857 */,
4241 /* 3965 */ 0x07a922b3 | (17 << 27) /* 0.478792857 */,
4242 /* 3966 */ 0x07a9cb88 | (17 << 27) /* 0.478953870 */,
4243 /* 3967 */ 0x07aa7462 | (17 << 27) /* 0.479114897 */,
4244
4245 /* 3968 */ 0x07ab1d3e | (17 << 27) /* 0.479275937 */,
4246 /* 3969 */ 0x07abc61f | (17 << 27) /* 0.479436991 */,
4247 /* 3970 */ 0x07ac6f03 | (17 << 27) /* 0.479598058 */,
4248 /* 3971 */ 0x07ad17eb | (17 << 27) /* 0.479759139 */,
4249 /* 3972 */ 0x07adc0d6 | (17 << 27) /* 0.479920233 */,
4250 /* 3973 */ 0x07ae69c6 | (17 << 27) /* 0.480081341 */,
4251 /* 3974 */ 0x07af12b8 | (17 << 27) /* 0.480242463 */,
4252 /* 3975 */ 0x07afbbaf | (17 << 27) /* 0.480403598 */,
4253 /* 3976 */ 0x07b064a8 | (17 << 27) /* 0.480564746 */,
4254 /* 3977 */ 0x07b10da6 | (17 << 27) /* 0.480725908 */,
4255 /* 3978 */ 0x07b1b6a7 | (17 << 27) /* 0.480887083 */,
4256 /* 3979 */ 0x07b25fac | (17 << 27) /* 0.481048272 */,
4257 /* 3980 */ 0x07b308b5 | (17 << 27) /* 0.481209475 */,
4258 /* 3981 */ 0x07b3b1c1 | (17 << 27) /* 0.481370691 */,
4259 /* 3982 */ 0x07b45ad0 | (17 << 27) /* 0.481531920 */,
4260 /* 3983 */ 0x07b503e4 | (17 << 27) /* 0.481693163 */,
4261
4262 /* 3984 */ 0x07b5acfb | (17 << 27) /* 0.481854420 */,
4263 /* 3985 */ 0x07b65615 | (17 << 27) /* 0.482015690 */,
4264 /* 3986 */ 0x07b6ff33 | (17 << 27) /* 0.482176973 */,
4265 /* 3987 */ 0x07b7a855 | (17 << 27) /* 0.482338270 */,
4266 /* 3988 */ 0x07b8517b | (17 << 27) /* 0.482499580 */,
4267 /* 3989 */ 0x07b8faa4 | (17 << 27) /* 0.482660904 */,
4268 /* 3990 */ 0x07b9a3d0 | (17 << 27) /* 0.482822242 */,
4269 /* 3991 */ 0x07ba4d01 | (17 << 27) /* 0.482983592 */,
4270 /* 3992 */ 0x07baf635 | (17 << 27) /* 0.483144957 */,
4271 /* 3993 */ 0x07bb9f6c | (17 << 27) /* 0.483306335 */,
4272 /* 3994 */ 0x07bc48a7 | (17 << 27) /* 0.483467726 */,
4273 /* 3995 */ 0x07bcf1e6 | (17 << 27) /* 0.483629131 */,
4274 /* 3996 */ 0x07bd9b28 | (17 << 27) /* 0.483790549 */,
4275 /* 3997 */ 0x07be446e | (17 << 27) /* 0.483951980 */,
4276 /* 3998 */ 0x07beedb8 | (17 << 27) /* 0.484113426 */,
4277 /* 3999 */ 0x07bf9705 | (17 << 27) /* 0.484274884 */,
4278
4279 /* 4000 */ 0x07c04056 | (17 << 27) /* 0.484436356 */,
4280 /* 4001 */ 0x07c0e9aa | (17 << 27) /* 0.484597842 */,
4281 /* 4002 */ 0x07c19302 | (17 << 27) /* 0.484759341 */,
4282 /* 4003 */ 0x07c23c5e | (17 << 27) /* 0.484920853 */,
4283 /* 4004 */ 0x07c2e5bd | (17 << 27) /* 0.485082379 */,
4284 /* 4005 */ 0x07c38f20 | (17 << 27) /* 0.485243918 */,
4285 /* 4006 */ 0x07c43887 | (17 << 27) /* 0.485405471 */,
4286 /* 4007 */ 0x07c4e1f1 | (17 << 27) /* 0.485567037 */,
4287 /* 4008 */ 0x07c58b5f | (17 << 27) /* 0.485728617 */,
4288 /* 4009 */ 0x07c634d0 | (17 << 27) /* 0.485890210 */,
4289 /* 4010 */ 0x07c6de45 | (17 << 27) /* 0.486051817 */,
4290 /* 4011 */ 0x07c787bd | (17 << 27) /* 0.486213436 */,
4291 /* 4012 */ 0x07c83139 | (17 << 27) /* 0.486375070 */,
4292 /* 4013 */ 0x07c8dab9 | (17 << 27) /* 0.486536717 */,
4293 /* 4014 */ 0x07c9843c | (17 << 27) /* 0.486698377 */,
4294 /* 4015 */ 0x07ca2dc3 | (17 << 27) /* 0.486860051 */,
4295
4296 /* 4016 */ 0x07cad74e | (17 << 27) /* 0.487021738 */,
4297 /* 4017 */ 0x07cb80dc | (17 << 27) /* 0.487183438 */,
4298 /* 4018 */ 0x07cc2a6e | (17 << 27) /* 0.487345152 */,
4299 /* 4019 */ 0x07ccd403 | (17 << 27) /* 0.487506879 */,
4300 /* 4020 */ 0x07cd7d9c | (17 << 27) /* 0.487668620 */,
4301 /* 4021 */ 0x07ce2739 | (17 << 27) /* 0.487830374 */,
4302 /* 4022 */ 0x07ced0d9 | (17 << 27) /* 0.487992142 */,
4303 /* 4023 */ 0x07cf7a7d | (17 << 27) /* 0.488153923 */,
4304 /* 4024 */ 0x07d02424 | (17 << 27) /* 0.488315717 */,
4305 /* 4025 */ 0x07d0cdcf | (17 << 27) /* 0.488477525 */,
4306 /* 4026 */ 0x07d1777e | (17 << 27) /* 0.488639346 */,
4307 /* 4027 */ 0x07d22130 | (17 << 27) /* 0.488801181 */,
4308 /* 4028 */ 0x07d2cae5 | (17 << 27) /* 0.488963029 */,
4309 /* 4029 */ 0x07d3749f | (17 << 27) /* 0.489124890 */,
4310 /* 4030 */ 0x07d41e5c | (17 << 27) /* 0.489286765 */,
4311 /* 4031 */ 0x07d4c81c | (17 << 27) /* 0.489448653 */,
4312
4313 /* 4032 */ 0x07d571e0 | (17 << 27) /* 0.489610555 */,
4314 /* 4033 */ 0x07d61ba8 | (17 << 27) /* 0.489772470 */,
4315 /* 4034 */ 0x07d6c573 | (17 << 27) /* 0.489934398 */,
4316 /* 4035 */ 0x07d76f42 | (17 << 27) /* 0.490096340 */,
4317 /* 4036 */ 0x07d81915 | (17 << 27) /* 0.490258295 */,
4318 /* 4037 */ 0x07d8c2eb | (17 << 27) /* 0.490420263 */,
4319 /* 4038 */ 0x07d96cc4 | (17 << 27) /* 0.490582245 */,
4320 /* 4039 */ 0x07da16a2 | (17 << 27) /* 0.490744240 */,
4321 /* 4040 */ 0x07dac083 | (17 << 27) /* 0.490906249 */,
4322 /* 4041 */ 0x07db6a67 | (17 << 27) /* 0.491068271 */,
4323 /* 4042 */ 0x07dc144f | (17 << 27) /* 0.491230306 */,
4324 /* 4043 */ 0x07dcbe3b | (17 << 27) /* 0.491392355 */,
4325 /* 4044 */ 0x07dd682a | (17 << 27) /* 0.491554417 */,
4326 /* 4045 */ 0x07de121d | (17 << 27) /* 0.491716492 */,
4327 /* 4046 */ 0x07debc13 | (17 << 27) /* 0.491878581 */,
4328 /* 4047 */ 0x07df660d | (17 << 27) /* 0.492040683 */,
4329
4330 /* 4048 */ 0x07e0100a | (17 << 27) /* 0.492202799 */,
4331 /* 4049 */ 0x07e0ba0c | (17 << 27) /* 0.492364928 */,
4332 /* 4050 */ 0x07e16410 | (17 << 27) /* 0.492527070 */,
4333 /* 4051 */ 0x07e20e19 | (17 << 27) /* 0.492689225 */,
4334 /* 4052 */ 0x07e2b824 | (17 << 27) /* 0.492851394 */,
4335 /* 4053 */ 0x07e36234 | (17 << 27) /* 0.493013576 */,
4336 /* 4054 */ 0x07e40c47 | (17 << 27) /* 0.493175772 */,
4337 /* 4055 */ 0x07e4b65e | (17 << 27) /* 0.493337981 */,
4338 /* 4056 */ 0x07e56078 | (17 << 27) /* 0.493500203 */,
4339 /* 4057 */ 0x07e60a95 | (17 << 27) /* 0.493662438 */,
4340 /* 4058 */ 0x07e6b4b7 | (17 << 27) /* 0.493824687 */,
4341 /* 4059 */ 0x07e75edc | (17 << 27) /* 0.493986949 */,
4342 /* 4060 */ 0x07e80904 | (17 << 27) /* 0.494149225 */,
4343 /* 4061 */ 0x07e8b330 | (17 << 27) /* 0.494311514 */,
4344 /* 4062 */ 0x07e95d60 | (17 << 27) /* 0.494473816 */,
4345 /* 4063 */ 0x07ea0793 | (17 << 27) /* 0.494636131 */,
4346
4347 /* 4064 */ 0x07eab1ca | (17 << 27) /* 0.494798460 */,
4348 /* 4065 */ 0x07eb5c04 | (17 << 27) /* 0.494960802 */,
4349 /* 4066 */ 0x07ec0642 | (17 << 27) /* 0.495123158 */,
4350 /* 4067 */ 0x07ecb084 | (17 << 27) /* 0.495285526 */,
4351 /* 4068 */ 0x07ed5ac9 | (17 << 27) /* 0.495447908 */,
4352 /* 4069 */ 0x07ee0512 | (17 << 27) /* 0.495610304 */,
4353 /* 4070 */ 0x07eeaf5e | (17 << 27) /* 0.495772712 */,
4354 /* 4071 */ 0x07ef59ae | (17 << 27) /* 0.495935134 */,
4355 /* 4072 */ 0x07f00401 | (17 << 27) /* 0.496097570 */,
4356 /* 4073 */ 0x07f0ae58 | (17 << 27) /* 0.496260018 */,
4357 /* 4074 */ 0x07f158b3 | (17 << 27) /* 0.496422480 */,
4358 /* 4075 */ 0x07f20311 | (17 << 27) /* 0.496584955 */,
4359 /* 4076 */ 0x07f2ad72 | (17 << 27) /* 0.496747444 */,
4360 /* 4077 */ 0x07f357d8 | (17 << 27) /* 0.496909945 */,
4361 /* 4078 */ 0x07f40240 | (17 << 27) /* 0.497072460 */,
4362 /* 4079 */ 0x07f4acad | (17 << 27) /* 0.497234989 */,
4363
4364 /* 4080 */ 0x07f5571d | (17 << 27) /* 0.497397530 */,
4365 /* 4081 */ 0x07f60190 | (17 << 27) /* 0.497560085 */,
4366 /* 4082 */ 0x07f6ac07 | (17 << 27) /* 0.497722653 */,
4367 /* 4083 */ 0x07f75682 | (17 << 27) /* 0.497885235 */,
4368 /* 4084 */ 0x07f80100 | (17 << 27) /* 0.498047829 */,
4369 /* 4085 */ 0x07f8ab82 | (17 << 27) /* 0.498210437 */,
4370 /* 4086 */ 0x07f95607 | (17 << 27) /* 0.498373058 */,
4371 /* 4087 */ 0x07fa0090 | (17 << 27) /* 0.498535693 */,
4372 /* 4088 */ 0x07faab1c | (17 << 27) /* 0.498698341 */,
4373 /* 4089 */ 0x07fb55ac | (17 << 27) /* 0.498861002 */,
4374 /* 4090 */ 0x07fc0040 | (17 << 27) /* 0.499023676 */,
4375 /* 4091 */ 0x07fcaad7 | (17 << 27) /* 0.499186364 */,
4376 /* 4092 */ 0x07fd5572 | (17 << 27) /* 0.499349064 */,
4377 /* 4093 */ 0x07fe0010 | (17 << 27) /* 0.499511778 */,
4378 /* 4094 */ 0x07feaab2 | (17 << 27) /* 0.499674506 */,
4379 /* 4095 */ 0x07ff5557 | (17 << 27) /* 0.499837246 */,
4380
4381 /* 4096 */ 0x04000000 | (18 << 27) /* 0.250000000 */,
4382 /* 4097 */ 0x04005556 | (18 << 27) /* 0.250081384 */,
4383 /* 4098 */ 0x0400aaae | (18 << 27) /* 0.250162774 */,
4384 /* 4099 */ 0x04010008 | (18 << 27) /* 0.250244170 */,
4385 /* 4100 */ 0x04015563 | (18 << 27) /* 0.250325574 */,
4386 /* 4101 */ 0x0401aac1 | (18 << 27) /* 0.250406984 */,
4387 /* 4102 */ 0x04020020 | (18 << 27) /* 0.250488400 */,
4388 /* 4103 */ 0x04025581 | (18 << 27) /* 0.250569824 */,
4389 /* 4104 */ 0x0402aae3 | (18 << 27) /* 0.250651254 */,
4390 /* 4105 */ 0x04030048 | (18 << 27) /* 0.250732690 */,
4391 /* 4106 */ 0x040355ae | (18 << 27) /* 0.250814133 */,
4392 /* 4107 */ 0x0403ab16 | (18 << 27) /* 0.250895583 */,
4393 /* 4108 */ 0x04040080 | (18 << 27) /* 0.250977039 */,
4394 /* 4109 */ 0x040455eb | (18 << 27) /* 0.251058502 */,
4395 /* 4110 */ 0x0404ab59 | (18 << 27) /* 0.251139971 */,
4396 /* 4111 */ 0x040500c8 | (18 << 27) /* 0.251221448 */,
4397
4398 /* 4112 */ 0x04055638 | (18 << 27) /* 0.251302930 */,
4399 /* 4113 */ 0x0405abab | (18 << 27) /* 0.251384420 */,
4400 /* 4114 */ 0x0406011f | (18 << 27) /* 0.251465916 */,
4401 /* 4115 */ 0x04065696 | (18 << 27) /* 0.251547418 */,
4402 /* 4116 */ 0x0406ac0e | (18 << 27) /* 0.251628927 */,
4403 /* 4117 */ 0x04070187 | (18 << 27) /* 0.251710443 */,
4404 /* 4118 */ 0x04075703 | (18 << 27) /* 0.251791965 */,
4405 /* 4119 */ 0x0407ac80 | (18 << 27) /* 0.251873494 */,
4406 /* 4120 */ 0x040801ff | (18 << 27) /* 0.251955030 */,
4407 /* 4121 */ 0x04085780 | (18 << 27) /* 0.252036572 */,
4408 /* 4122 */ 0x0408ad02 | (18 << 27) /* 0.252118121 */,
4409 /* 4123 */ 0x04090287 | (18 << 27) /* 0.252199676 */,
4410 /* 4124 */ 0x0409580d | (18 << 27) /* 0.252281238 */,
4411 /* 4125 */ 0x0409ad95 | (18 << 27) /* 0.252362807 */,
4412 /* 4126 */ 0x040a031e | (18 << 27) /* 0.252444382 */,
4413 /* 4127 */ 0x040a58aa | (18 << 27) /* 0.252525963 */,
4414
4415 /* 4128 */ 0x040aae37 | (18 << 27) /* 0.252607552 */,
4416 /* 4129 */ 0x040b03c6 | (18 << 27) /* 0.252689147 */,
4417 /* 4130 */ 0x040b5957 | (18 << 27) /* 0.252770748 */,
4418 /* 4131 */ 0x040baee9 | (18 << 27) /* 0.252852356 */,
4419 /* 4132 */ 0x040c047e | (18 << 27) /* 0.252933971 */,
4420 /* 4133 */ 0x040c5a14 | (18 << 27) /* 0.253015592 */,
4421 /* 4134 */ 0x040cafab | (18 << 27) /* 0.253097220 */,
4422 /* 4135 */ 0x040d0545 | (18 << 27) /* 0.253178854 */,
4423 /* 4136 */ 0x040d5ae0 | (18 << 27) /* 0.253260495 */,
4424 /* 4137 */ 0x040db07d | (18 << 27) /* 0.253342143 */,
4425 /* 4138 */ 0x040e061c | (18 << 27) /* 0.253423797 */,
4426 /* 4139 */ 0x040e5bbd | (18 << 27) /* 0.253505457 */,
4427 /* 4140 */ 0x040eb15f | (18 << 27) /* 0.253587125 */,
4428 /* 4141 */ 0x040f0703 | (18 << 27) /* 0.253668799 */,
4429 /* 4142 */ 0x040f5ca9 | (18 << 27) /* 0.253750479 */,
4430 /* 4143 */ 0x040fb251 | (18 << 27) /* 0.253832166 */,
4431
4432 /* 4144 */ 0x041007fa | (18 << 27) /* 0.253913860 */,
4433 /* 4145 */ 0x04105da6 | (18 << 27) /* 0.253995560 */,
4434 /* 4146 */ 0x0410b353 | (18 << 27) /* 0.254077266 */,
4435 /* 4147 */ 0x04110901 | (18 << 27) /* 0.254158980 */,
4436 /* 4148 */ 0x04115eb2 | (18 << 27) /* 0.254240700 */,
4437 /* 4149 */ 0x0411b464 | (18 << 27) /* 0.254322426 */,
4438 /* 4150 */ 0x04120a18 | (18 << 27) /* 0.254404159 */,
4439 /* 4151 */ 0x04125fce | (18 << 27) /* 0.254485899 */,
4440 /* 4152 */ 0x0412b586 | (18 << 27) /* 0.254567645 */,
4441 /* 4153 */ 0x04130b3f | (18 << 27) /* 0.254649397 */,
4442 /* 4154 */ 0x041360fa | (18 << 27) /* 0.254731157 */,
4443 /* 4155 */ 0x0413b6b7 | (18 << 27) /* 0.254812922 */,
4444 /* 4156 */ 0x04140c75 | (18 << 27) /* 0.254894695 */,
4445 /* 4157 */ 0x04146236 | (18 << 27) /* 0.254976474 */,
4446 /* 4158 */ 0x0414b7f8 | (18 << 27) /* 0.255058259 */,
4447 /* 4159 */ 0x04150dbc | (18 << 27) /* 0.255140051 */,
4448
4449 /* 4160 */ 0x04156381 | (18 << 27) /* 0.255221850 */,
4450 /* 4161 */ 0x0415b949 | (18 << 27) /* 0.255303655 */,
4451 /* 4162 */ 0x04160f12 | (18 << 27) /* 0.255385467 */,
4452 /* 4163 */ 0x041664dd | (18 << 27) /* 0.255467285 */,
4453 /* 4164 */ 0x0416baaa | (18 << 27) /* 0.255549110 */,
4454 /* 4165 */ 0x04171078 | (18 << 27) /* 0.255630941 */,
4455 /* 4166 */ 0x04176648 | (18 << 27) /* 0.255712779 */,
4456 /* 4167 */ 0x0417bc1a | (18 << 27) /* 0.255794624 */,
4457 /* 4168 */ 0x041811ee | (18 << 27) /* 0.255876475 */,
4458 /* 4169 */ 0x041867c3 | (18 << 27) /* 0.255958332 */,
4459 /* 4170 */ 0x0418bd9b | (18 << 27) /* 0.256040196 */,
4460 /* 4171 */ 0x04191374 | (18 << 27) /* 0.256122067 */,
4461 /* 4172 */ 0x0419694e | (18 << 27) /* 0.256203944 */,
4462 /* 4173 */ 0x0419bf2b | (18 << 27) /* 0.256285828 */,
4463 /* 4174 */ 0x041a1509 | (18 << 27) /* 0.256367718 */,
4464 /* 4175 */ 0x041a6ae9 | (18 << 27) /* 0.256449615 */,
4465
4466 /* 4176 */ 0x041ac0cb | (18 << 27) /* 0.256531518 */,
4467 /* 4177 */ 0x041b16ae | (18 << 27) /* 0.256613428 */,
4468 /* 4178 */ 0x041b6c94 | (18 << 27) /* 0.256695344 */,
4469 /* 4179 */ 0x041bc27b | (18 << 27) /* 0.256777267 */,
4470 /* 4180 */ 0x041c1863 | (18 << 27) /* 0.256859197 */,
4471 /* 4181 */ 0x041c6e4e | (18 << 27) /* 0.256941133 */,
4472 /* 4182 */ 0x041cc43a | (18 << 27) /* 0.257023076 */,
4473 /* 4183 */ 0x041d1a28 | (18 << 27) /* 0.257105025 */,
4474 /* 4184 */ 0x041d7018 | (18 << 27) /* 0.257186980 */,
4475 /* 4185 */ 0x041dc60a | (18 << 27) /* 0.257268942 */,
4476 /* 4186 */ 0x041e1bfd | (18 << 27) /* 0.257350911 */,
4477 /* 4187 */ 0x041e71f2 | (18 << 27) /* 0.257432886 */,
4478 /* 4188 */ 0x041ec7e9 | (18 << 27) /* 0.257514868 */,
4479 /* 4189 */ 0x041f1de1 | (18 << 27) /* 0.257596856 */,
4480 /* 4190 */ 0x041f73dc | (18 << 27) /* 0.257678851 */,
4481 /* 4191 */ 0x041fc9d8 | (18 << 27) /* 0.257760852 */,
4482
4483 /* 4192 */ 0x04201fd5 | (18 << 27) /* 0.257842860 */,
4484 /* 4193 */ 0x042075d5 | (18 << 27) /* 0.257924875 */,
4485 /* 4194 */ 0x0420cbd6 | (18 << 27) /* 0.258006895 */,
4486 /* 4195 */ 0x042121d9 | (18 << 27) /* 0.258088923 */,
4487 /* 4196 */ 0x042177de | (18 << 27) /* 0.258170957 */,
4488 /* 4197 */ 0x0421cde5 | (18 << 27) /* 0.258252997 */,
4489 /* 4198 */ 0x042223ed | (18 << 27) /* 0.258335044 */,
4490 /* 4199 */ 0x042279f7 | (18 << 27) /* 0.258417097 */,
4491 /* 4200 */ 0x0422d003 | (18 << 27) /* 0.258499157 */,
4492 /* 4201 */ 0x04232611 | (18 << 27) /* 0.258581224 */,
4493 /* 4202 */ 0x04237c20 | (18 << 27) /* 0.258663297 */,
4494 /* 4203 */ 0x0423d231 | (18 << 27) /* 0.258745376 */,
4495 /* 4204 */ 0x04242844 | (18 << 27) /* 0.258827462 */,
4496 /* 4205 */ 0x04247e58 | (18 << 27) /* 0.258909555 */,
4497 /* 4206 */ 0x0424d46e | (18 << 27) /* 0.258991654 */,
4498 /* 4207 */ 0x04252a87 | (18 << 27) /* 0.259073760 */,
4499
4500 /* 4208 */ 0x042580a0 | (18 << 27) /* 0.259155872 */,
4501 /* 4209 */ 0x0425d6bc | (18 << 27) /* 0.259237990 */,
4502 /* 4210 */ 0x04262cd9 | (18 << 27) /* 0.259320115 */,
4503 /* 4211 */ 0x042682f8 | (18 << 27) /* 0.259402247 */,
4504 /* 4212 */ 0x0426d919 | (18 << 27) /* 0.259484385 */,
4505 /* 4213 */ 0x04272f3b | (18 << 27) /* 0.259566529 */,
4506 /* 4214 */ 0x04278560 | (18 << 27) /* 0.259648680 */,
4507 /* 4215 */ 0x0427db86 | (18 << 27) /* 0.259730838 */,
4508 /* 4216 */ 0x042831ad | (18 << 27) /* 0.259813002 */,
4509 /* 4217 */ 0x042887d7 | (18 << 27) /* 0.259895173 */,
4510 /* 4218 */ 0x0428de02 | (18 << 27) /* 0.259977350 */,
4511 /* 4219 */ 0x0429342f | (18 << 27) /* 0.260059533 */,
4512 /* 4220 */ 0x04298a5e | (18 << 27) /* 0.260141723 */,
4513 /* 4221 */ 0x0429e08e | (18 << 27) /* 0.260223920 */,
4514 /* 4222 */ 0x042a36c0 | (18 << 27) /* 0.260306123 */,
4515 /* 4223 */ 0x042a8cf4 | (18 << 27) /* 0.260388332 */,
4516
4517 /* 4224 */ 0x042ae32a | (18 << 27) /* 0.260470548 */,
4518 /* 4225 */ 0x042b3962 | (18 << 27) /* 0.260552771 */,
4519 /* 4226 */ 0x042b8f9b | (18 << 27) /* 0.260635000 */,
4520 /* 4227 */ 0x042be5d6 | (18 << 27) /* 0.260717235 */,
4521 /* 4228 */ 0x042c3c12 | (18 << 27) /* 0.260799477 */,
4522 /* 4229 */ 0x042c9251 | (18 << 27) /* 0.260881725 */,
4523 /* 4230 */ 0x042ce891 | (18 << 27) /* 0.260963980 */,
4524 /* 4231 */ 0x042d3ed3 | (18 << 27) /* 0.261046242 */,
4525 /* 4232 */ 0x042d9516 | (18 << 27) /* 0.261128510 */,
4526 /* 4233 */ 0x042deb5c | (18 << 27) /* 0.261210784 */,
4527 /* 4234 */ 0x042e41a3 | (18 << 27) /* 0.261293065 */,
4528 /* 4235 */ 0x042e97ec | (18 << 27) /* 0.261375352 */,
4529 /* 4236 */ 0x042eee36 | (18 << 27) /* 0.261457646 */,
4530 /* 4237 */ 0x042f4482 | (18 << 27) /* 0.261539946 */,
4531 /* 4238 */ 0x042f9ad1 | (18 << 27) /* 0.261622253 */,
4532 /* 4239 */ 0x042ff120 | (18 << 27) /* 0.261704566 */,
4533
4534 /* 4240 */ 0x04304772 | (18 << 27) /* 0.261786886 */,
4535 /* 4241 */ 0x04309dc5 | (18 << 27) /* 0.261869212 */,
4536 /* 4242 */ 0x0430f41a | (18 << 27) /* 0.261951545 */,
4537 /* 4243 */ 0x04314a71 | (18 << 27) /* 0.262033884 */,
4538 /* 4244 */ 0x0431a0c9 | (18 << 27) /* 0.262116229 */,
4539 /* 4245 */ 0x0431f723 | (18 << 27) /* 0.262198581 */,
4540 /* 4246 */ 0x04324d7f | (18 << 27) /* 0.262280940 */,
4541 /* 4247 */ 0x0432a3dd | (18 << 27) /* 0.262363305 */,
4542 /* 4248 */ 0x0432fa3d | (18 << 27) /* 0.262445676 */,
4543 /* 4249 */ 0x0433509e | (18 << 27) /* 0.262528054 */,
4544 /* 4250 */ 0x0433a701 | (18 << 27) /* 0.262610438 */,
4545 /* 4251 */ 0x0433fd65 | (18 << 27) /* 0.262692829 */,
4546 /* 4252 */ 0x043453cc | (18 << 27) /* 0.262775227 */,
4547 /* 4253 */ 0x0434aa34 | (18 << 27) /* 0.262857630 */,
4548 /* 4254 */ 0x0435009d | (18 << 27) /* 0.262940040 */,
4549 /* 4255 */ 0x04355709 | (18 << 27) /* 0.263022457 */,
4550
4551 /* 4256 */ 0x0435ad76 | (18 << 27) /* 0.263104880 */,
4552 /* 4257 */ 0x043603e5 | (18 << 27) /* 0.263187310 */,
4553 /* 4258 */ 0x04365a56 | (18 << 27) /* 0.263269746 */,
4554 /* 4259 */ 0x0436b0c9 | (18 << 27) /* 0.263352188 */,
4555 /* 4260 */ 0x0437073d | (18 << 27) /* 0.263434637 */,
4556 /* 4261 */ 0x04375db3 | (18 << 27) /* 0.263517093 */,
4557 /* 4262 */ 0x0437b42a | (18 << 27) /* 0.263599554 */,
4558 /* 4263 */ 0x04380aa4 | (18 << 27) /* 0.263682023 */,
4559 /* 4264 */ 0x0438611f | (18 << 27) /* 0.263764497 */,
4560 /* 4265 */ 0x0438b79c | (18 << 27) /* 0.263846979 */,
4561 /* 4266 */ 0x04390e1a | (18 << 27) /* 0.263929466 */,
4562 /* 4267 */ 0x0439649b | (18 << 27) /* 0.264011960 */,
4563 /* 4268 */ 0x0439bb1d | (18 << 27) /* 0.264094461 */,
4564 /* 4269 */ 0x043a11a1 | (18 << 27) /* 0.264176968 */,
4565 /* 4270 */ 0x043a6826 | (18 << 27) /* 0.264259481 */,
4566 /* 4271 */ 0x043abead | (18 << 27) /* 0.264342001 */,
4567
4568 /* 4272 */ 0x043b1536 | (18 << 27) /* 0.264424527 */,
4569 /* 4273 */ 0x043b6bc1 | (18 << 27) /* 0.264507060 */,
4570 /* 4274 */ 0x043bc24d | (18 << 27) /* 0.264589599 */,
4571 /* 4275 */ 0x043c18dc | (18 << 27) /* 0.264672145 */,
4572 /* 4276 */ 0x043c6f6c | (18 << 27) /* 0.264754697 */,
4573 /* 4277 */ 0x043cc5fd | (18 << 27) /* 0.264837255 */,
4574 /* 4278 */ 0x043d1c91 | (18 << 27) /* 0.264919820 */,
4575 /* 4279 */ 0x043d7326 | (18 << 27) /* 0.265002392 */,
4576 /* 4280 */ 0x043dc9bc | (18 << 27) /* 0.265084969 */,
4577 /* 4281 */ 0x043e2055 | (18 << 27) /* 0.265167554 */,
4578 /* 4282 */ 0x043e76ef | (18 << 27) /* 0.265250144 */,
4579 /* 4283 */ 0x043ecd8b | (18 << 27) /* 0.265332741 */,
4580 /* 4284 */ 0x043f2429 | (18 << 27) /* 0.265415345 */,
4581 /* 4285 */ 0x043f7ac8 | (18 << 27) /* 0.265497955 */,
4582 /* 4286 */ 0x043fd169 | (18 << 27) /* 0.265580571 */,
4583 /* 4287 */ 0x0440280c | (18 << 27) /* 0.265663194 */,
4584
4585 /* 4288 */ 0x04407eb1 | (18 << 27) /* 0.265745823 */,
4586 /* 4289 */ 0x0440d557 | (18 << 27) /* 0.265828459 */,
4587 /* 4290 */ 0x04412bff | (18 << 27) /* 0.265911101 */,
4588 /* 4291 */ 0x044182a9 | (18 << 27) /* 0.265993749 */,
4589 /* 4292 */ 0x0441d955 | (18 << 27) /* 0.266076404 */,
4590 /* 4293 */ 0x04423002 | (18 << 27) /* 0.266159065 */,
4591 /* 4294 */ 0x044286b1 | (18 << 27) /* 0.266241733 */,
4592 /* 4295 */ 0x0442dd61 | (18 << 27) /* 0.266324407 */,
4593 /* 4296 */ 0x04433414 | (18 << 27) /* 0.266407088 */,
4594 /* 4297 */ 0x04438ac8 | (18 << 27) /* 0.266489775 */,
4595 /* 4298 */ 0x0443e17e | (18 << 27) /* 0.266572468 */,
4596 /* 4299 */ 0x04443835 | (18 << 27) /* 0.266655168 */,
4597 /* 4300 */ 0x04448eef | (18 << 27) /* 0.266737874 */,
4598 /* 4301 */ 0x0444e5aa | (18 << 27) /* 0.266820587 */,
4599 /* 4302 */ 0x04453c66 | (18 << 27) /* 0.266903306 */,
4600 /* 4303 */ 0x04459325 | (18 << 27) /* 0.266986031 */,
4601
4602 /* 4304 */ 0x0445e9e5 | (18 << 27) /* 0.267068763 */,
4603 /* 4305 */ 0x044640a7 | (18 << 27) /* 0.267151501 */,
4604 /* 4306 */ 0x0446976a | (18 << 27) /* 0.267234246 */,
4605 /* 4307 */ 0x0446ee30 | (18 << 27) /* 0.267316997 */,
4606 /* 4308 */ 0x044744f7 | (18 << 27) /* 0.267399755 */,
4607 /* 4309 */ 0x04479bc0 | (18 << 27) /* 0.267482518 */,
4608 /* 4310 */ 0x0447f28a | (18 << 27) /* 0.267565289 */,
4609 /* 4311 */ 0x04484956 | (18 << 27) /* 0.267648065 */,
4610 /* 4312 */ 0x0448a024 | (18 << 27) /* 0.267730848 */,
4611 /* 4313 */ 0x0448f6f4 | (18 << 27) /* 0.267813638 */,
4612 /* 4314 */ 0x04494dc5 | (18 << 27) /* 0.267896434 */,
4613 /* 4315 */ 0x0449a498 | (18 << 27) /* 0.267979236 */,
4614 /* 4316 */ 0x0449fb6d | (18 << 27) /* 0.268062045 */,
4615 /* 4317 */ 0x044a5243 | (18 << 27) /* 0.268144860 */,
4616 /* 4318 */ 0x044aa91c | (18 << 27) /* 0.268227681 */,
4617 /* 4319 */ 0x044afff6 | (18 << 27) /* 0.268310509 */,
4618
4619 /* 4320 */ 0x044b56d1 | (18 << 27) /* 0.268393343 */,
4620 /* 4321 */ 0x044badaf | (18 << 27) /* 0.268476184 */,
4621 /* 4322 */ 0x044c048e | (18 << 27) /* 0.268559031 */,
4622 /* 4323 */ 0x044c5b6f | (18 << 27) /* 0.268641885 */,
4623 /* 4324 */ 0x044cb251 | (18 << 27) /* 0.268724744 */,
4624 /* 4325 */ 0x044d0935 | (18 << 27) /* 0.268807611 */,
4625 /* 4326 */ 0x044d601b | (18 << 27) /* 0.268890483 */,
4626 /* 4327 */ 0x044db703 | (18 << 27) /* 0.268973362 */,
4627 /* 4328 */ 0x044e0dec | (18 << 27) /* 0.269056248 */,
4628 /* 4329 */ 0x044e64d7 | (18 << 27) /* 0.269139139 */,
4629 /* 4330 */ 0x044ebbc4 | (18 << 27) /* 0.269222037 */,
4630 /* 4331 */ 0x044f12b3 | (18 << 27) /* 0.269304942 */,
4631 /* 4332 */ 0x044f69a3 | (18 << 27) /* 0.269387853 */,
4632 /* 4333 */ 0x044fc095 | (18 << 27) /* 0.269470770 */,
4633 /* 4334 */ 0x04501788 | (18 << 27) /* 0.269553694 */,
4634 /* 4335 */ 0x04506e7e | (18 << 27) /* 0.269636624 */,
4635
4636 /* 4336 */ 0x0450c575 | (18 << 27) /* 0.269719560 */,
4637 /* 4337 */ 0x04511c6e | (18 << 27) /* 0.269802503 */,
4638 /* 4338 */ 0x04517368 | (18 << 27) /* 0.269885452 */,
4639 /* 4339 */ 0x0451ca64 | (18 << 27) /* 0.269968408 */,
4640 /* 4340 */ 0x04522162 | (18 << 27) /* 0.270051370 */,
4641 /* 4341 */ 0x04527862 | (18 << 27) /* 0.270134338 */,
4642 /* 4342 */ 0x0452cf63 | (18 << 27) /* 0.270217312 */,
4643 /* 4343 */ 0x04532666 | (18 << 27) /* 0.270300293 */,
4644 /* 4344 */ 0x04537d6b | (18 << 27) /* 0.270383281 */,
4645 /* 4345 */ 0x0453d472 | (18 << 27) /* 0.270466275 */,
4646 /* 4346 */ 0x04542b7a | (18 << 27) /* 0.270549275 */,
4647 /* 4347 */ 0x04548284 | (18 << 27) /* 0.270632281 */,
4648 /* 4348 */ 0x0454d98f | (18 << 27) /* 0.270715294 */,
4649 /* 4349 */ 0x0455309c | (18 << 27) /* 0.270798313 */,
4650 /* 4350 */ 0x045587ab | (18 << 27) /* 0.270881339 */,
4651 /* 4351 */ 0x0455debc | (18 << 27) /* 0.270964371 */,
4652
4653 /* 4352 */ 0x045635cf | (18 << 27) /* 0.271047409 */,
4654 /* 4353 */ 0x04568ce3 | (18 << 27) /* 0.271130454 */,
4655 /* 4354 */ 0x0456e3f9 | (18 << 27) /* 0.271213505 */,
4656 /* 4355 */ 0x04573b10 | (18 << 27) /* 0.271296562 */,
4657 /* 4356 */ 0x04579229 | (18 << 27) /* 0.271379626 */,
4658 /* 4357 */ 0x0457e944 | (18 << 27) /* 0.271462696 */,
4659 /* 4358 */ 0x04584061 | (18 << 27) /* 0.271545772 */,
4660 /* 4359 */ 0x0458977f | (18 << 27) /* 0.271628855 */,
4661 /* 4360 */ 0x0458ee9f | (18 << 27) /* 0.271711944 */,
4662 /* 4361 */ 0x045945c1 | (18 << 27) /* 0.271795040 */,
4663 /* 4362 */ 0x04599ce5 | (18 << 27) /* 0.271878142 */,
4664 /* 4363 */ 0x0459f40a | (18 << 27) /* 0.271961250 */,
4665 /* 4364 */ 0x045a4b31 | (18 << 27) /* 0.272044365 */,
4666 /* 4365 */ 0x045aa259 | (18 << 27) /* 0.272127486 */,
4667 /* 4366 */ 0x045af984 | (18 << 27) /* 0.272210613 */,
4668 /* 4367 */ 0x045b50b0 | (18 << 27) /* 0.272293746 */,
4669
4670 /* 4368 */ 0x045ba7dd | (18 << 27) /* 0.272376886 */,
4671 /* 4369 */ 0x045bff0d | (18 << 27) /* 0.272460033 */,
4672 /* 4370 */ 0x045c563e | (18 << 27) /* 0.272543185 */,
4673 /* 4371 */ 0x045cad71 | (18 << 27) /* 0.272626344 */,
4674 /* 4372 */ 0x045d04a5 | (18 << 27) /* 0.272709510 */,
4675 /* 4373 */ 0x045d5bdc | (18 << 27) /* 0.272792681 */,
4676 /* 4374 */ 0x045db313 | (18 << 27) /* 0.272875859 */,
4677 /* 4375 */ 0x045e0a4d | (18 << 27) /* 0.272959044 */,
4678 /* 4376 */ 0x045e6188 | (18 << 27) /* 0.273042234 */,
4679 /* 4377 */ 0x045eb8c5 | (18 << 27) /* 0.273125431 */,
4680 /* 4378 */ 0x045f1004 | (18 << 27) /* 0.273208635 */,
4681 /* 4379 */ 0x045f6745 | (18 << 27) /* 0.273291844 */,
4682 /* 4380 */ 0x045fbe87 | (18 << 27) /* 0.273375060 */,
4683 /* 4381 */ 0x046015cb | (18 << 27) /* 0.273458283 */,
4684 /* 4382 */ 0x04606d10 | (18 << 27) /* 0.273541511 */,
4685 /* 4383 */ 0x0460c457 | (18 << 27) /* 0.273624747 */,
4686
4687 /* 4384 */ 0x04611ba0 | (18 << 27) /* 0.273707988 */,
4688 /* 4385 */ 0x046172eb | (18 << 27) /* 0.273791236 */,
4689 /* 4386 */ 0x0461ca37 | (18 << 27) /* 0.273874490 */,
4690 /* 4387 */ 0x04622185 | (18 << 27) /* 0.273957750 */,
4691 /* 4388 */ 0x046278d5 | (18 << 27) /* 0.274041017 */,
4692 /* 4389 */ 0x0462d026 | (18 << 27) /* 0.274124290 */,
4693 /* 4390 */ 0x0463277a | (18 << 27) /* 0.274207569 */,
4694 /* 4391 */ 0x04637ece | (18 << 27) /* 0.274290855 */,
4695 /* 4392 */ 0x0463d625 | (18 << 27) /* 0.274374147 */,
4696 /* 4393 */ 0x04642d7d | (18 << 27) /* 0.274457445 */,
4697 /* 4394 */ 0x046484d7 | (18 << 27) /* 0.274540749 */,
4698 /* 4395 */ 0x0464dc33 | (18 << 27) /* 0.274624060 */,
4699 /* 4396 */ 0x04653390 | (18 << 27) /* 0.274707378 */,
4700 /* 4397 */ 0x04658aef | (18 << 27) /* 0.274790701 */,
4701 /* 4398 */ 0x0465e250 | (18 << 27) /* 0.274874031 */,
4702 /* 4399 */ 0x046639b2 | (18 << 27) /* 0.274957367 */,
4703
4704 /* 4400 */ 0x04669116 | (18 << 27) /* 0.275040710 */,
4705 /* 4401 */ 0x0466e87c | (18 << 27) /* 0.275124059 */,
4706 /* 4402 */ 0x04673fe3 | (18 << 27) /* 0.275207414 */,
4707 /* 4403 */ 0x0467974d | (18 << 27) /* 0.275290775 */,
4708 /* 4404 */ 0x0467eeb7 | (18 << 27) /* 0.275374143 */,
4709 /* 4405 */ 0x04684624 | (18 << 27) /* 0.275457517 */,
4710 /* 4406 */ 0x04689d92 | (18 << 27) /* 0.275540897 */,
4711 /* 4407 */ 0x0468f502 | (18 << 27) /* 0.275624284 */,
4712 /* 4408 */ 0x04694c74 | (18 << 27) /* 0.275707677 */,
4713 /* 4409 */ 0x0469a3e7 | (18 << 27) /* 0.275791076 */,
4714 /* 4410 */ 0x0469fb5c | (18 << 27) /* 0.275874482 */,
4715 /* 4411 */ 0x046a52d3 | (18 << 27) /* 0.275957894 */,
4716 /* 4412 */ 0x046aaa4b | (18 << 27) /* 0.276041312 */,
4717 /* 4413 */ 0x046b01c5 | (18 << 27) /* 0.276124737 */,
4718 /* 4414 */ 0x046b5941 | (18 << 27) /* 0.276208167 */,
4719 /* 4415 */ 0x046bb0bf | (18 << 27) /* 0.276291605 */,
4720
4721 /* 4416 */ 0x046c083e | (18 << 27) /* 0.276375048 */,
4722 /* 4417 */ 0x046c5fbf | (18 << 27) /* 0.276458498 */,
4723 /* 4418 */ 0x046cb741 | (18 << 27) /* 0.276541954 */,
4724 /* 4419 */ 0x046d0ec5 | (18 << 27) /* 0.276625416 */,
4725 /* 4420 */ 0x046d664b | (18 << 27) /* 0.276708885 */,
4726 /* 4421 */ 0x046dbdd3 | (18 << 27) /* 0.276792360 */,
4727 /* 4422 */ 0x046e155c | (18 << 27) /* 0.276875841 */,
4728 /* 4423 */ 0x046e6ce7 | (18 << 27) /* 0.276959328 */,
4729 /* 4424 */ 0x046ec474 | (18 << 27) /* 0.277042822 */,
4730 /* 4425 */ 0x046f1c02 | (18 << 27) /* 0.277126322 */,
4731 /* 4426 */ 0x046f7392 | (18 << 27) /* 0.277209829 */,
4732 /* 4427 */ 0x046fcb24 | (18 << 27) /* 0.277293341 */,
4733 /* 4428 */ 0x047022b8 | (18 << 27) /* 0.277376860 */,
4734 /* 4429 */ 0x04707a4d | (18 << 27) /* 0.277460385 */,
4735 /* 4430 */ 0x0470d1e4 | (18 << 27) /* 0.277543917 */,
4736 /* 4431 */ 0x0471297c | (18 << 27) /* 0.277627455 */,
4737
4738 /* 4432 */ 0x04718116 | (18 << 27) /* 0.277710999 */,
4739 /* 4433 */ 0x0471d8b2 | (18 << 27) /* 0.277794549 */,
4740 /* 4434 */ 0x04723050 | (18 << 27) /* 0.277878106 */,
4741 /* 4435 */ 0x047287ef | (18 << 27) /* 0.277961669 */,
4742 /* 4436 */ 0x0472df90 | (18 << 27) /* 0.278045238 */,
4743 /* 4437 */ 0x04733733 | (18 << 27) /* 0.278128813 */,
4744 /* 4438 */ 0x04738ed7 | (18 << 27) /* 0.278212395 */,
4745 /* 4439 */ 0x0473e67d | (18 << 27) /* 0.278295983 */,
4746 /* 4440 */ 0x04743e25 | (18 << 27) /* 0.278379578 */,
4747 /* 4441 */ 0x047495ce | (18 << 27) /* 0.278463178 */,
4748 /* 4442 */ 0x0474ed79 | (18 << 27) /* 0.278546785 */,
4749 /* 4443 */ 0x04754526 | (18 << 27) /* 0.278630398 */,
4750 /* 4444 */ 0x04759cd4 | (18 << 27) /* 0.278714018 */,
4751 /* 4445 */ 0x0475f484 | (18 << 27) /* 0.278797643 */,
4752 /* 4446 */ 0x04764c36 | (18 << 27) /* 0.278881275 */,
4753 /* 4447 */ 0x0476a3ea | (18 << 27) /* 0.278964914 */,
4754
4755 /* 4448 */ 0x0476fb9f | (18 << 27) /* 0.279048558 */,
4756 /* 4449 */ 0x04775356 | (18 << 27) /* 0.279132209 */,
4757 /* 4450 */ 0x0477ab0e | (18 << 27) /* 0.279215866 */,
4758 /* 4451 */ 0x047802c8 | (18 << 27) /* 0.279299529 */,
4759 /* 4452 */ 0x04785a84 | (18 << 27) /* 0.279383199 */,
4760 /* 4453 */ 0x0478b242 | (18 << 27) /* 0.279466875 */,
4761 /* 4454 */ 0x04790a01 | (18 << 27) /* 0.279550557 */,
4762 /* 4455 */ 0x047961c2 | (18 << 27) /* 0.279634245 */,
4763 /* 4456 */ 0x0479b984 | (18 << 27) /* 0.279717940 */,
4764 /* 4457 */ 0x047a1149 | (18 << 27) /* 0.279801641 */,
4765 /* 4458 */ 0x047a690f | (18 << 27) /* 0.279885348 */,
4766 /* 4459 */ 0x047ac0d6 | (18 << 27) /* 0.279969061 */,
4767 /* 4460 */ 0x047b18a0 | (18 << 27) /* 0.280052781 */,
4768 /* 4461 */ 0x047b706b | (18 << 27) /* 0.280136507 */,
4769 /* 4462 */ 0x047bc837 | (18 << 27) /* 0.280220239 */,
4770 /* 4463 */ 0x047c2006 | (18 << 27) /* 0.280303978 */,
4771
4772 /* 4464 */ 0x047c77d6 | (18 << 27) /* 0.280387722 */,
4773 /* 4465 */ 0x047ccfa8 | (18 << 27) /* 0.280471473 */,
4774 /* 4466 */ 0x047d277b | (18 << 27) /* 0.280555230 */,
4775 /* 4467 */ 0x047d7f50 | (18 << 27) /* 0.280638994 */,
4776 /* 4468 */ 0x047dd727 | (18 << 27) /* 0.280722764 */,
4777 /* 4469 */ 0x047e2eff | (18 << 27) /* 0.280806540 */,
4778 /* 4470 */ 0x047e86d9 | (18 << 27) /* 0.280890322 */,
4779 /* 4471 */ 0x047edeb5 | (18 << 27) /* 0.280974110 */,
4780 /* 4472 */ 0x047f3693 | (18 << 27) /* 0.281057905 */,
4781 /* 4473 */ 0x047f8e72 | (18 << 27) /* 0.281141706 */,
4782 /* 4474 */ 0x047fe653 | (18 << 27) /* 0.281225513 */,
4783 /* 4475 */ 0x04803e35 | (18 << 27) /* 0.281309326 */,
4784 /* 4476 */ 0x04809619 | (18 << 27) /* 0.281393146 */,
4785 /* 4477 */ 0x0480edff | (18 << 27) /* 0.281476972 */,
4786 /* 4478 */ 0x048145e7 | (18 << 27) /* 0.281560804 */,
4787 /* 4479 */ 0x04819dd0 | (18 << 27) /* 0.281644643 */,
4788
4789 /* 4480 */ 0x0481f5bb | (18 << 27) /* 0.281728487 */,
4790 /* 4481 */ 0x04824da7 | (18 << 27) /* 0.281812338 */,
4791 /* 4482 */ 0x0482a595 | (18 << 27) /* 0.281896195 */,
4792 /* 4483 */ 0x0482fd85 | (18 << 27) /* 0.281980059 */,
4793 /* 4484 */ 0x04835577 | (18 << 27) /* 0.282063928 */,
4794 /* 4485 */ 0x0483ad6a | (18 << 27) /* 0.282147804 */,
4795 /* 4486 */ 0x0484055f | (18 << 27) /* 0.282231686 */,
4796 /* 4487 */ 0x04845d56 | (18 << 27) /* 0.282315574 */,
4797 /* 4488 */ 0x0484b54e | (18 << 27) /* 0.282399469 */,
4798 /* 4489 */ 0x04850d48 | (18 << 27) /* 0.282483370 */,
4799 /* 4490 */ 0x04856544 | (18 << 27) /* 0.282567277 */,
4800 /* 4491 */ 0x0485bd41 | (18 << 27) /* 0.282651190 */,
4801 /* 4492 */ 0x04861540 | (18 << 27) /* 0.282735109 */,
4802 /* 4493 */ 0x04866d40 | (18 << 27) /* 0.282819035 */,
4803 /* 4494 */ 0x0486c543 | (18 << 27) /* 0.282902967 */,
4804 /* 4495 */ 0x04871d47 | (18 << 27) /* 0.282986905 */,
4805
4806 /* 4496 */ 0x0487754c | (18 << 27) /* 0.283070849 */,
4807 /* 4497 */ 0x0487cd54 | (18 << 27) /* 0.283154800 */,
4808 /* 4498 */ 0x0488255d | (18 << 27) /* 0.283238757 */,
4809 /* 4499 */ 0x04887d67 | (18 << 27) /* 0.283322720 */,
4810 /* 4500 */ 0x0488d574 | (18 << 27) /* 0.283406689 */,
4811 /* 4501 */ 0x04892d82 | (18 << 27) /* 0.283490665 */,
4812 /* 4502 */ 0x04898591 | (18 << 27) /* 0.283574646 */,
4813 /* 4503 */ 0x0489dda3 | (18 << 27) /* 0.283658634 */,
4814 /* 4504 */ 0x048a35b6 | (18 << 27) /* 0.283742628 */,
4815 /* 4505 */ 0x048a8dca | (18 << 27) /* 0.283826629 */,
4816 /* 4506 */ 0x048ae5e1 | (18 << 27) /* 0.283910635 */,
4817 /* 4507 */ 0x048b3df9 | (18 << 27) /* 0.283994648 */,
4818 /* 4508 */ 0x048b9612 | (18 << 27) /* 0.284078667 */,
4819 /* 4509 */ 0x048bee2e | (18 << 27) /* 0.284162692 */,
4820 /* 4510 */ 0x048c464b | (18 << 27) /* 0.284246723 */,
4821 /* 4511 */ 0x048c9e69 | (18 << 27) /* 0.284330761 */,
4822
4823 /* 4512 */ 0x048cf68a | (18 << 27) /* 0.284414805 */,
4824 /* 4513 */ 0x048d4eac | (18 << 27) /* 0.284498855 */,
4825 /* 4514 */ 0x048da6cf | (18 << 27) /* 0.284582911 */,
4826 /* 4515 */ 0x048dfef5 | (18 << 27) /* 0.284666974 */,
4827 /* 4516 */ 0x048e571c | (18 << 27) /* 0.284751042 */,
4828 /* 4517 */ 0x048eaf44 | (18 << 27) /* 0.284835117 */,
4829 /* 4518 */ 0x048f076f | (18 << 27) /* 0.284919198 */,
4830 /* 4519 */ 0x048f5f9b | (18 << 27) /* 0.285003285 */,
4831 /* 4520 */ 0x048fb7c8 | (18 << 27) /* 0.285087379 */,
4832 /* 4521 */ 0x04900ff8 | (18 << 27) /* 0.285171479 */,
4833 /* 4522 */ 0x04906829 | (18 << 27) /* 0.285255584 */,
4834 /* 4523 */ 0x0490c05b | (18 << 27) /* 0.285339697 */,
4835 /* 4524 */ 0x04911890 | (18 << 27) /* 0.285423815 */,
4836 /* 4525 */ 0x049170c6 | (18 << 27) /* 0.285507939 */,
4837 /* 4526 */ 0x0491c8fd | (18 << 27) /* 0.285592070 */,
4838 /* 4527 */ 0x04922137 | (18 << 27) /* 0.285676207 */,
4839
4840 /* 4528 */ 0x04927972 | (18 << 27) /* 0.285760350 */,
4841 /* 4529 */ 0x0492d1ae | (18 << 27) /* 0.285844499 */,
4842 /* 4530 */ 0x049329ed | (18 << 27) /* 0.285928655 */,
4843 /* 4531 */ 0x0493822c | (18 << 27) /* 0.286012816 */,
4844 /* 4532 */ 0x0493da6e | (18 << 27) /* 0.286096984 */,
4845 /* 4533 */ 0x049432b1 | (18 << 27) /* 0.286181158 */,
4846 /* 4534 */ 0x04948af6 | (18 << 27) /* 0.286265338 */,
4847 /* 4535 */ 0x0494e33d | (18 << 27) /* 0.286349525 */,
4848 /* 4536 */ 0x04953b85 | (18 << 27) /* 0.286433717 */,
4849 /* 4537 */ 0x049593cf | (18 << 27) /* 0.286517916 */,
4850 /* 4538 */ 0x0495ec1b | (18 << 27) /* 0.286602121 */,
4851 /* 4539 */ 0x04964468 | (18 << 27) /* 0.286686332 */,
4852 /* 4540 */ 0x04969cb7 | (18 << 27) /* 0.286770550 */,
4853 /* 4541 */ 0x0496f508 | (18 << 27) /* 0.286854773 */,
4854 /* 4542 */ 0x04974d5a | (18 << 27) /* 0.286939003 */,
4855 /* 4543 */ 0x0497a5ae | (18 << 27) /* 0.287023239 */,
4856
4857 /* 4544 */ 0x0497fe03 | (18 << 27) /* 0.287107481 */,
4858 /* 4545 */ 0x0498565a | (18 << 27) /* 0.287191729 */,
4859 /* 4546 */ 0x0498aeb3 | (18 << 27) /* 0.287275983 */,
4860 /* 4547 */ 0x0499070e | (18 << 27) /* 0.287360244 */,
4861 /* 4548 */ 0x04995f6a | (18 << 27) /* 0.287444511 */,
4862 /* 4549 */ 0x0499b7c8 | (18 << 27) /* 0.287528784 */,
4863 /* 4550 */ 0x049a1027 | (18 << 27) /* 0.287613063 */,
4864 /* 4551 */ 0x049a6889 | (18 << 27) /* 0.287697348 */,
4865 /* 4552 */ 0x049ac0eb | (18 << 27) /* 0.287781640 */,
4866 /* 4553 */ 0x049b1950 | (18 << 27) /* 0.287865937 */,
4867 /* 4554 */ 0x049b71b6 | (18 << 27) /* 0.287950241 */,
4868 /* 4555 */ 0x049bca1e | (18 << 27) /* 0.288034551 */,
4869 /* 4556 */ 0x049c2287 | (18 << 27) /* 0.288118867 */,
4870 /* 4557 */ 0x049c7af2 | (18 << 27) /* 0.288203190 */,
4871 /* 4558 */ 0x049cd35f | (18 << 27) /* 0.288287518 */,
4872 /* 4559 */ 0x049d2bce | (18 << 27) /* 0.288371853 */,
4873
4874 /* 4560 */ 0x049d843e | (18 << 27) /* 0.288456194 */,
4875 /* 4561 */ 0x049ddcaf | (18 << 27) /* 0.288540541 */,
4876 /* 4562 */ 0x049e3523 | (18 << 27) /* 0.288624894 */,
4877 /* 4563 */ 0x049e8d98 | (18 << 27) /* 0.288709253 */,
4878 /* 4564 */ 0x049ee60e | (18 << 27) /* 0.288793619 */,
4879 /* 4565 */ 0x049f3e87 | (18 << 27) /* 0.288877990 */,
4880 /* 4566 */ 0x049f9701 | (18 << 27) /* 0.288962368 */,
4881 /* 4567 */ 0x049fef7c | (18 << 27) /* 0.289046752 */,
4882 /* 4568 */ 0x04a047fa | (18 << 27) /* 0.289131142 */,
4883 /* 4569 */ 0x04a0a079 | (18 << 27) /* 0.289215538 */,
4884 /* 4570 */ 0x04a0f8f9 | (18 << 27) /* 0.289299941 */,
4885 /* 4571 */ 0x04a1517c | (18 << 27) /* 0.289384349 */,
4886 /* 4572 */ 0x04a1a9ff | (18 << 27) /* 0.289468764 */,
4887 /* 4573 */ 0x04a20285 | (18 << 27) /* 0.289553185 */,
4888 /* 4574 */ 0x04a25b0c | (18 << 27) /* 0.289637612 */,
4889 /* 4575 */ 0x04a2b395 | (18 << 27) /* 0.289722045 */,
4890
4891 /* 4576 */ 0x04a30c20 | (18 << 27) /* 0.289806485 */,
4892 /* 4577 */ 0x04a364ac | (18 << 27) /* 0.289890930 */,
4893 /* 4578 */ 0x04a3bd3a | (18 << 27) /* 0.289975382 */,
4894 /* 4579 */ 0x04a415c9 | (18 << 27) /* 0.290059840 */,
4895 /* 4580 */ 0x04a46e5a | (18 << 27) /* 0.290144304 */,
4896 /* 4581 */ 0x04a4c6ed | (18 << 27) /* 0.290228774 */,
4897 /* 4582 */ 0x04a51f81 | (18 << 27) /* 0.290313250 */,
4898 /* 4583 */ 0x04a57818 | (18 << 27) /* 0.290397733 */,
4899 /* 4584 */ 0x04a5d0af | (18 << 27) /* 0.290482221 */,
4900 /* 4585 */ 0x04a62949 | (18 << 27) /* 0.290566716 */,
4901 /* 4586 */ 0x04a681e4 | (18 << 27) /* 0.290651217 */,
4902 /* 4587 */ 0x04a6da80 | (18 << 27) /* 0.290735724 */,
4903 /* 4588 */ 0x04a7331f | (18 << 27) /* 0.290820237 */,
4904 /* 4589 */ 0x04a78bbf | (18 << 27) /* 0.290904756 */,
4905 /* 4590 */ 0x04a7e460 | (18 << 27) /* 0.290989281 */,
4906 /* 4591 */ 0x04a83d03 | (18 << 27) /* 0.291073813 */,
4907
4908 /* 4592 */ 0x04a895a8 | (18 << 27) /* 0.291158351 */,
4909 /* 4593 */ 0x04a8ee4f | (18 << 27) /* 0.291242894 */,
4910 /* 4594 */ 0x04a946f7 | (18 << 27) /* 0.291327444 */,
4911 /* 4595 */ 0x04a99fa1 | (18 << 27) /* 0.291412001 */,
4912 /* 4596 */ 0x04a9f84c | (18 << 27) /* 0.291496563 */,
4913 /* 4597 */ 0x04aa50fa | (18 << 27) /* 0.291581131 */,
4914 /* 4598 */ 0x04aaa9a8 | (18 << 27) /* 0.291665706 */,
4915 /* 4599 */ 0x04ab0259 | (18 << 27) /* 0.291750286 */,
4916 /* 4600 */ 0x04ab5b0b | (18 << 27) /* 0.291834873 */,
4917 /* 4601 */ 0x04abb3bf | (18 << 27) /* 0.291919466 */,
4918 /* 4602 */ 0x04ac0c74 | (18 << 27) /* 0.292004065 */,
4919 /* 4603 */ 0x04ac652b | (18 << 27) /* 0.292088670 */,
4920 /* 4604 */ 0x04acbde4 | (18 << 27) /* 0.292173281 */,
4921 /* 4605 */ 0x04ad169e | (18 << 27) /* 0.292257899 */,
4922 /* 4606 */ 0x04ad6f5a | (18 << 27) /* 0.292342522 */,
4923 /* 4607 */ 0x04adc818 | (18 << 27) /* 0.292427152 */,
4924
4925 /* 4608 */ 0x04ae20d7 | (18 << 27) /* 0.292511788 */,
4926 /* 4609 */ 0x04ae7998 | (18 << 27) /* 0.292596430 */,
4927 /* 4610 */ 0x04aed25a | (18 << 27) /* 0.292681078 */,
4928 /* 4611 */ 0x04af2b1e | (18 << 27) /* 0.292765732 */,
4929 /* 4612 */ 0x04af83e4 | (18 << 27) /* 0.292850392 */,
4930 /* 4613 */ 0x04afdcac | (18 << 27) /* 0.292935058 */,
4931 /* 4614 */ 0x04b03575 | (18 << 27) /* 0.293019731 */,
4932 /* 4615 */ 0x04b08e40 | (18 << 27) /* 0.293104409 */,
4933 /* 4616 */ 0x04b0e70c | (18 << 27) /* 0.293189094 */,
4934 /* 4617 */ 0x04b13fda | (18 << 27) /* 0.293273785 */,
4935 /* 4618 */ 0x04b198aa | (18 << 27) /* 0.293358482 */,
4936 /* 4619 */ 0x04b1f17b | (18 << 27) /* 0.293443185 */,
4937 /* 4620 */ 0x04b24a4e | (18 << 27) /* 0.293527894 */,
4938 /* 4621 */ 0x04b2a322 | (18 << 27) /* 0.293612609 */,
4939 /* 4622 */ 0x04b2fbf9 | (18 << 27) /* 0.293697331 */,
4940 /* 4623 */ 0x04b354d1 | (18 << 27) /* 0.293782058 */,
4941
4942 /* 4624 */ 0x04b3adaa | (18 << 27) /* 0.293866792 */,
4943 /* 4625 */ 0x04b40685 | (18 << 27) /* 0.293951532 */,
4944 /* 4626 */ 0x04b45f62 | (18 << 27) /* 0.294036278 */,
4945 /* 4627 */ 0x04b4b840 | (18 << 27) /* 0.294121029 */,
4946 /* 4628 */ 0x04b51120 | (18 << 27) /* 0.294205788 */,
4947 /* 4629 */ 0x04b56a02 | (18 << 27) /* 0.294290552 */,
4948 /* 4630 */ 0x04b5c2e6 | (18 << 27) /* 0.294375322 */,
4949 /* 4631 */ 0x04b61bcb | (18 << 27) /* 0.294460098 */,
4950 /* 4632 */ 0x04b674b1 | (18 << 27) /* 0.294544881 */,
4951 /* 4633 */ 0x04b6cd99 | (18 << 27) /* 0.294629669 */,
4952 /* 4634 */ 0x04b72683 | (18 << 27) /* 0.294714464 */,
4953 /* 4635 */ 0x04b77f6f | (18 << 27) /* 0.294799265 */,
4954 /* 4636 */ 0x04b7d85c | (18 << 27) /* 0.294884072 */,
4955 /* 4637 */ 0x04b8314b | (18 << 27) /* 0.294968885 */,
4956 /* 4638 */ 0x04b88a3b | (18 << 27) /* 0.295053704 */,
4957 /* 4639 */ 0x04b8e32d | (18 << 27) /* 0.295138529 */,
4958
4959 /* 4640 */ 0x04b93c21 | (18 << 27) /* 0.295223360 */,
4960 /* 4641 */ 0x04b99516 | (18 << 27) /* 0.295308197 */,
4961 /* 4642 */ 0x04b9ee0d | (18 << 27) /* 0.295393041 */,
4962 /* 4643 */ 0x04ba4706 | (18 << 27) /* 0.295477890 */,
4963 /* 4644 */ 0x04baa000 | (18 << 27) /* 0.295562746 */,
4964 /* 4645 */ 0x04baf8fc | (18 << 27) /* 0.295647608 */,
4965 /* 4646 */ 0x04bb51fa | (18 << 27) /* 0.295732476 */,
4966 /* 4647 */ 0x04bbaaf9 | (18 << 27) /* 0.295817349 */,
4967 /* 4648 */ 0x04bc03fa | (18 << 27) /* 0.295902229 */,
4968 /* 4649 */ 0x04bc5cfc | (18 << 27) /* 0.295987115 */,
4969 /* 4650 */ 0x04bcb600 | (18 << 27) /* 0.296072008 */,
4970 /* 4651 */ 0x04bd0f06 | (18 << 27) /* 0.296156906 */,
4971 /* 4652 */ 0x04bd680d | (18 << 27) /* 0.296241810 */,
4972 /* 4653 */ 0x04bdc116 | (18 << 27) /* 0.296326721 */,
4973 /* 4654 */ 0x04be1a21 | (18 << 27) /* 0.296411637 */,
4974 /* 4655 */ 0x04be732d | (18 << 27) /* 0.296496560 */,
4975
4976 /* 4656 */ 0x04becc3b | (18 << 27) /* 0.296581488 */,
4977 /* 4657 */ 0x04bf254a | (18 << 27) /* 0.296666423 */,
4978 /* 4658 */ 0x04bf7e5b | (18 << 27) /* 0.296751364 */,
4979 /* 4659 */ 0x04bfd76e | (18 << 27) /* 0.296836311 */,
4980 /* 4660 */ 0x04c03083 | (18 << 27) /* 0.296921264 */,
4981 /* 4661 */ 0x04c08999 | (18 << 27) /* 0.297006223 */,
4982 /* 4662 */ 0x04c0e2b0 | (18 << 27) /* 0.297091188 */,
4983 /* 4663 */ 0x04c13bca | (18 << 27) /* 0.297176159 */,
4984 /* 4664 */ 0x04c194e4 | (18 << 27) /* 0.297261136 */,
4985 /* 4665 */ 0x04c1ee01 | (18 << 27) /* 0.297346120 */,
4986 /* 4666 */ 0x04c2471f | (18 << 27) /* 0.297431109 */,
4987 /* 4667 */ 0x04c2a03f | (18 << 27) /* 0.297516105 */,
4988 /* 4668 */ 0x04c2f960 | (18 << 27) /* 0.297601106 */,
4989 /* 4669 */ 0x04c35283 | (18 << 27) /* 0.297686114 */,
4990 /* 4670 */ 0x04c3aba8 | (18 << 27) /* 0.297771128 */,
4991 /* 4671 */ 0x04c404ce | (18 << 27) /* 0.297856147 */,
4992
4993 /* 4672 */ 0x04c45df6 | (18 << 27) /* 0.297941173 */,
4994 /* 4673 */ 0x04c4b720 | (18 << 27) /* 0.298026205 */,
4995 /* 4674 */ 0x04c5104b | (18 << 27) /* 0.298111243 */,
4996 /* 4675 */ 0x04c56978 | (18 << 27) /* 0.298196287 */,
4997 /* 4676 */ 0x04c5c2a7 | (18 << 27) /* 0.298281337 */,
4998 /* 4677 */ 0x04c61bd7 | (18 << 27) /* 0.298366393 */,
4999 /* 4678 */ 0x04c67508 | (18 << 27) /* 0.298451456 */,
5000 /* 4679 */ 0x04c6ce3c | (18 << 27) /* 0.298536524 */,
5001 /* 4680 */ 0x04c72771 | (18 << 27) /* 0.298621598 */,
5002 /* 4681 */ 0x04c780a7 | (18 << 27) /* 0.298706679 */,
5003 /* 4682 */ 0x04c7d9df | (18 << 27) /* 0.298791765 */,
5004 /* 4683 */ 0x04c83319 | (18 << 27) /* 0.298876858 */,
5005 /* 4684 */ 0x04c88c55 | (18 << 27) /* 0.298961956 */,
5006 /* 4685 */ 0x04c8e592 | (18 << 27) /* 0.299047061 */,
5007 /* 4686 */ 0x04c93ed1 | (18 << 27) /* 0.299132172 */,
5008 /* 4687 */ 0x04c99811 | (18 << 27) /* 0.299217288 */,
5009
5010 /* 4688 */ 0x04c9f153 | (18 << 27) /* 0.299302411 */,
5011 /* 4689 */ 0x04ca4a97 | (18 << 27) /* 0.299387540 */,
5012 /* 4690 */ 0x04caa3dc | (18 << 27) /* 0.299472675 */,
5013 /* 4691 */ 0x04cafd23 | (18 << 27) /* 0.299557816 */,
5014 /* 4692 */ 0x04cb566b | (18 << 27) /* 0.299642963 */,
5015 /* 4693 */ 0x04cbafb5 | (18 << 27) /* 0.299728116 */,
5016 /* 4694 */ 0x04cc0901 | (18 << 27) /* 0.299813275 */,
5017 /* 4695 */ 0x04cc624e | (18 << 27) /* 0.299898440 */,
5018 /* 4696 */ 0x04ccbb9d | (18 << 27) /* 0.299983611 */,
5019 /* 4697 */ 0x04cd14ee | (18 << 27) /* 0.300068789 */,
5020 /* 4698 */ 0x04cd6e40 | (18 << 27) /* 0.300153972 */,
5021 /* 4699 */ 0x04cdc794 | (18 << 27) /* 0.300239161 */,
5022 /* 4700 */ 0x04ce20e9 | (18 << 27) /* 0.300324357 */,
5023 /* 4701 */ 0x04ce7a40 | (18 << 27) /* 0.300409558 */,
5024 /* 4702 */ 0x04ced399 | (18 << 27) /* 0.300494765 */,
5025 /* 4703 */ 0x04cf2cf3 | (18 << 27) /* 0.300579979 */,
5026
5027 /* 4704 */ 0x04cf864f | (18 << 27) /* 0.300665198 */,
5028 /* 4705 */ 0x04cfdfad | (18 << 27) /* 0.300750424 */,
5029 /* 4706 */ 0x04d0390c | (18 << 27) /* 0.300835656 */,
5030 /* 4707 */ 0x04d0926d | (18 << 27) /* 0.300920893 */,
5031 /* 4708 */ 0x04d0ebcf | (18 << 27) /* 0.301006137 */,
5032 /* 4709 */ 0x04d14533 | (18 << 27) /* 0.301091387 */,
5033 /* 4710 */ 0x04d19e99 | (18 << 27) /* 0.301176643 */,
5034 /* 4711 */ 0x04d1f800 | (18 << 27) /* 0.301261904 */,
5035 /* 4712 */ 0x04d25169 | (18 << 27) /* 0.301347172 */,
5036 /* 4713 */ 0x04d2aad4 | (18 << 27) /* 0.301432446 */,
5037 /* 4714 */ 0x04d30440 | (18 << 27) /* 0.301517726 */,
5038 /* 4715 */ 0x04d35dae | (18 << 27) /* 0.301603012 */,
5039 /* 4716 */ 0x04d3b71d | (18 << 27) /* 0.301688304 */,
5040 /* 4717 */ 0x04d4108e | (18 << 27) /* 0.301773602 */,
5041 /* 4718 */ 0x04d46a01 | (18 << 27) /* 0.301858906 */,
5042 /* 4719 */ 0x04d4c375 | (18 << 27) /* 0.301944216 */,
5043
5044 /* 4720 */ 0x04d51ceb | (18 << 27) /* 0.302029532 */,
5045 /* 4721 */ 0x04d57662 | (18 << 27) /* 0.302114854 */,
5046 /* 4722 */ 0x04d5cfdb | (18 << 27) /* 0.302200182 */,
5047 /* 4723 */ 0x04d62956 | (18 << 27) /* 0.302285516 */,
5048 /* 4724 */ 0x04d682d2 | (18 << 27) /* 0.302370856 */,
5049 /* 4725 */ 0x04d6dc50 | (18 << 27) /* 0.302456203 */,
5050 /* 4726 */ 0x04d735d0 | (18 << 27) /* 0.302541555 */,
5051 /* 4727 */ 0x04d78f51 | (18 << 27) /* 0.302626913 */,
5052 /* 4728 */ 0x04d7e8d4 | (18 << 27) /* 0.302712277 */,
5053 /* 4729 */ 0x04d84258 | (18 << 27) /* 0.302797648 */,
5054 /* 4730 */ 0x04d89bde | (18 << 27) /* 0.302883024 */,
5055 /* 4731 */ 0x04d8f566 | (18 << 27) /* 0.302968406 */,
5056 /* 4732 */ 0x04d94eef | (18 << 27) /* 0.303053794 */,
5057 /* 4733 */ 0x04d9a87a | (18 << 27) /* 0.303139189 */,
5058 /* 4734 */ 0x04da0207 | (18 << 27) /* 0.303224589 */,
5059 /* 4735 */ 0x04da5b95 | (18 << 27) /* 0.303309995 */,
5060
5061 /* 4736 */ 0x04dab524 | (18 << 27) /* 0.303395408 */,
5062 /* 4737 */ 0x04db0eb6 | (18 << 27) /* 0.303480826 */,
5063 /* 4738 */ 0x04db6849 | (18 << 27) /* 0.303566251 */,
5064 /* 4739 */ 0x04dbc1dd | (18 << 27) /* 0.303651681 */,
5065 /* 4740 */ 0x04dc1b73 | (18 << 27) /* 0.303737117 */,
5066 /* 4741 */ 0x04dc750b | (18 << 27) /* 0.303822560 */,
5067 /* 4742 */ 0x04dccea5 | (18 << 27) /* 0.303908008 */,
5068 /* 4743 */ 0x04dd2840 | (18 << 27) /* 0.303993463 */,
5069 /* 4744 */ 0x04dd81dc | (18 << 27) /* 0.304078923 */,
5070 /* 4745 */ 0x04dddb7a | (18 << 27) /* 0.304164390 */,
5071 /* 4746 */ 0x04de351a | (18 << 27) /* 0.304249862 */,
5072 /* 4747 */ 0x04de8ebc | (18 << 27) /* 0.304335340 */,
5073 /* 4748 */ 0x04dee85f | (18 << 27) /* 0.304420825 */,
5074 /* 4749 */ 0x04df4203 | (18 << 27) /* 0.304506315 */,
5075 /* 4750 */ 0x04df9baa | (18 << 27) /* 0.304591812 */,
5076 /* 4751 */ 0x04dff552 | (18 << 27) /* 0.304677314 */,
5077
5078 /* 4752 */ 0x04e04efb | (18 << 27) /* 0.304762823 */,
5079 /* 4753 */ 0x04e0a8a6 | (18 << 27) /* 0.304848337 */,
5080 /* 4754 */ 0x04e10253 | (18 << 27) /* 0.304933858 */,
5081 /* 4755 */ 0x04e15c01 | (18 << 27) /* 0.305019384 */,
5082 /* 4756 */ 0x04e1b5b1 | (18 << 27) /* 0.305104917 */,
5083 /* 4757 */ 0x04e20f63 | (18 << 27) /* 0.305190455 */,
5084 /* 4758 */ 0x04e26916 | (18 << 27) /* 0.305275999 */,
5085 /* 4759 */ 0x04e2c2cb | (18 << 27) /* 0.305361550 */,
5086 /* 4760 */ 0x04e31c81 | (18 << 27) /* 0.305447106 */,
5087 /* 4761 */ 0x04e37639 | (18 << 27) /* 0.305532669 */,
5088 /* 4762 */ 0x04e3cff3 | (18 << 27) /* 0.305618237 */,
5089 /* 4763 */ 0x04e429ae | (18 << 27) /* 0.305703811 */,
5090 /* 4764 */ 0x04e4836b | (18 << 27) /* 0.305789392 */,
5091 /* 4765 */ 0x04e4dd29 | (18 << 27) /* 0.305874978 */,
5092 /* 4766 */ 0x04e536e9 | (18 << 27) /* 0.305960571 */,
5093 /* 4767 */ 0x04e590ab | (18 << 27) /* 0.306046169 */,
5094
5095 /* 4768 */ 0x04e5ea6e | (18 << 27) /* 0.306131773 */,
5096 /* 4769 */ 0x04e64433 | (18 << 27) /* 0.306217383 */,
5097 /* 4770 */ 0x04e69df9 | (18 << 27) /* 0.306303000 */,
5098 /* 4771 */ 0x04e6f7c1 | (18 << 27) /* 0.306388622 */,
5099 /* 4772 */ 0x04e7518b | (18 << 27) /* 0.306474250 */,
5100 /* 4773 */ 0x04e7ab56 | (18 << 27) /* 0.306559885 */,
5101 /* 4774 */ 0x04e80523 | (18 << 27) /* 0.306645525 */,
5102 /* 4775 */ 0x04e85ef2 | (18 << 27) /* 0.306731171 */,
5103 /* 4776 */ 0x04e8b8c2 | (18 << 27) /* 0.306816823 */,
5104 /* 4777 */ 0x04e91293 | (18 << 27) /* 0.306902481 */,
5105 /* 4778 */ 0x04e96c67 | (18 << 27) /* 0.306988145 */,
5106 /* 4779 */ 0x04e9c63b | (18 << 27) /* 0.307073816 */,
5107 /* 4780 */ 0x04ea2012 | (18 << 27) /* 0.307159492 */,
5108 /* 4781 */ 0x04ea79ea | (18 << 27) /* 0.307245174 */,
5109 /* 4782 */ 0x04ead3c4 | (18 << 27) /* 0.307330862 */,
5110 /* 4783 */ 0x04eb2d9f | (18 << 27) /* 0.307416556 */,
5111
5112 /* 4784 */ 0x04eb877c | (18 << 27) /* 0.307502256 */,
5113 /* 4785 */ 0x04ebe15b | (18 << 27) /* 0.307587962 */,
5114 /* 4786 */ 0x04ec3b3b | (18 << 27) /* 0.307673674 */,
5115 /* 4787 */ 0x04ec951c | (18 << 27) /* 0.307759392 */,
5116 /* 4788 */ 0x04ecef00 | (18 << 27) /* 0.307845115 */,
5117 /* 4789 */ 0x04ed48e5 | (18 << 27) /* 0.307930845 */,
5118 /* 4790 */ 0x04eda2cb | (18 << 27) /* 0.308016581 */,
5119 /* 4791 */ 0x04edfcb3 | (18 << 27) /* 0.308102323 */,
5120 /* 4792 */ 0x04ee569d | (18 << 27) /* 0.308188071 */,
5121 /* 4793 */ 0x04eeb088 | (18 << 27) /* 0.308273824 */,
5122 /* 4794 */ 0x04ef0a75 | (18 << 27) /* 0.308359584 */,
5123 /* 4795 */ 0x04ef6464 | (18 << 27) /* 0.308445350 */,
5124 /* 4796 */ 0x04efbe54 | (18 << 27) /* 0.308531121 */,
5125 /* 4797 */ 0x04f01846 | (18 << 27) /* 0.308616899 */,
5126 /* 4798 */ 0x04f07239 | (18 << 27) /* 0.308702682 */,
5127 /* 4799 */ 0x04f0cc2e | (18 << 27) /* 0.308788472 */,
5128
5129 /* 4800 */ 0x04f12624 | (18 << 27) /* 0.308874267 */,
5130 /* 4801 */ 0x04f1801d | (18 << 27) /* 0.308960068 */,
5131 /* 4802 */ 0x04f1da16 | (18 << 27) /* 0.309045876 */,
5132 /* 4803 */ 0x04f23412 | (18 << 27) /* 0.309131689 */,
5133 /* 4804 */ 0x04f28e0f | (18 << 27) /* 0.309217508 */,
5134 /* 4805 */ 0x04f2e80d | (18 << 27) /* 0.309303334 */,
5135 /* 4806 */ 0x04f3420d | (18 << 27) /* 0.309389165 */,
5136 /* 4807 */ 0x04f39c0f | (18 << 27) /* 0.309475002 */,
5137 /* 4808 */ 0x04f3f612 | (18 << 27) /* 0.309560845 */,
5138 /* 4809 */ 0x04f45017 | (18 << 27) /* 0.309646694 */,
5139 /* 4810 */ 0x04f4aa1e | (18 << 27) /* 0.309732549 */,
5140 /* 4811 */ 0x04f50426 | (18 << 27) /* 0.309818410 */,
5141 /* 4812 */ 0x04f55e30 | (18 << 27) /* 0.309904277 */,
5142 /* 4813 */ 0x04f5b83b | (18 << 27) /* 0.309990150 */,
5143 /* 4814 */ 0x04f61248 | (18 << 27) /* 0.310076028 */,
5144 /* 4815 */ 0x04f66c56 | (18 << 27) /* 0.310161913 */,
5145
5146 /* 4816 */ 0x04f6c666 | (18 << 27) /* 0.310247804 */,
5147 /* 4817 */ 0x04f72078 | (18 << 27) /* 0.310333700 */,
5148 /* 4818 */ 0x04f77a8b | (18 << 27) /* 0.310419603 */,
5149 /* 4819 */ 0x04f7d4a0 | (18 << 27) /* 0.310505511 */,
5150 /* 4820 */ 0x04f82eb7 | (18 << 27) /* 0.310591426 */,
5151 /* 4821 */ 0x04f888cf | (18 << 27) /* 0.310677346 */,
5152 /* 4822 */ 0x04f8e2e9 | (18 << 27) /* 0.310763272 */,
5153 /* 4823 */ 0x04f93d04 | (18 << 27) /* 0.310849205 */,
5154 /* 4824 */ 0x04f99721 | (18 << 27) /* 0.310935143 */,
5155 /* 4825 */ 0x04f9f13f | (18 << 27) /* 0.311021087 */,
5156 /* 4826 */ 0x04fa4b5f | (18 << 27) /* 0.311107037 */,
5157 /* 4827 */ 0x04faa581 | (18 << 27) /* 0.311192993 */,
5158 /* 4828 */ 0x04faffa4 | (18 << 27) /* 0.311278955 */,
5159 /* 4829 */ 0x04fb59c9 | (18 << 27) /* 0.311364923 */,
5160 /* 4830 */ 0x04fbb3ef | (18 << 27) /* 0.311450897 */,
5161 /* 4831 */ 0x04fc0e17 | (18 << 27) /* 0.311536877 */,
5162
5163 /* 4832 */ 0x04fc6841 | (18 << 27) /* 0.311622862 */,
5164 /* 4833 */ 0x04fcc26c | (18 << 27) /* 0.311708854 */,
5165 /* 4834 */ 0x04fd1c99 | (18 << 27) /* 0.311794851 */,
5166 /* 4835 */ 0x04fd76c7 | (18 << 27) /* 0.311880855 */,
5167 /* 4836 */ 0x04fdd0f7 | (18 << 27) /* 0.311966864 */,
5168 /* 4837 */ 0x04fe2b29 | (18 << 27) /* 0.312052880 */,
5169 /* 4838 */ 0x04fe855c | (18 << 27) /* 0.312138901 */,
5170 /* 4839 */ 0x04fedf91 | (18 << 27) /* 0.312224928 */,
5171 /* 4840 */ 0x04ff39c7 | (18 << 27) /* 0.312310961 */,
5172 /* 4841 */ 0x04ff93ff | (18 << 27) /* 0.312397000 */,
5173 /* 4842 */ 0x04ffee38 | (18 << 27) /* 0.312483045 */,
5174 /* 4843 */ 0x05004874 | (18 << 27) /* 0.312569096 */,
5175 /* 4844 */ 0x0500a2b0 | (18 << 27) /* 0.312655153 */,
5176 /* 4845 */ 0x0500fcef | (18 << 27) /* 0.312741216 */,
5177 /* 4846 */ 0x0501572e | (18 << 27) /* 0.312827284 */,
5178 /* 4847 */ 0x0501b170 | (18 << 27) /* 0.312913359 */,
5179
5180 /* 4848 */ 0x05020bb3 | (18 << 27) /* 0.312999439 */,
5181 /* 4849 */ 0x050265f8 | (18 << 27) /* 0.313085526 */,
5182 /* 4850 */ 0x0502c03e | (18 << 27) /* 0.313171618 */,
5183 /* 4851 */ 0x05031a86 | (18 << 27) /* 0.313257716 */,
5184 /* 4852 */ 0x050374cf | (18 << 27) /* 0.313343820 */,
5185 /* 4853 */ 0x0503cf1a | (18 << 27) /* 0.313429931 */,
5186 /* 4854 */ 0x05042967 | (18 << 27) /* 0.313516047 */,
5187 /* 4855 */ 0x050483b5 | (18 << 27) /* 0.313602168 */,
5188 /* 4856 */ 0x0504de05 | (18 << 27) /* 0.313688296 */,
5189 /* 4857 */ 0x05053856 | (18 << 27) /* 0.313774430 */,
5190 /* 4858 */ 0x050592a9 | (18 << 27) /* 0.313860570 */,
5191 /* 4859 */ 0x0505ecfd | (18 << 27) /* 0.313946715 */,
5192 /* 4860 */ 0x05064754 | (18 << 27) /* 0.314032867 */,
5193 /* 4861 */ 0x0506a1ab | (18 << 27) /* 0.314119024 */,
5194 /* 4862 */ 0x0506fc04 | (18 << 27) /* 0.314205187 */,
5195 /* 4863 */ 0x0507565f | (18 << 27) /* 0.314291357 */,
5196
5197 /* 4864 */ 0x0507b0bc | (18 << 27) /* 0.314377532 */,
5198 /* 4865 */ 0x05080b1a | (18 << 27) /* 0.314463713 */,
5199 /* 4866 */ 0x05086579 | (18 << 27) /* 0.314549900 */,
5200 /* 4867 */ 0x0508bfdb | (18 << 27) /* 0.314636092 */,
5201 /* 4868 */ 0x05091a3d | (18 << 27) /* 0.314722291 */,
5202 /* 4869 */ 0x050974a2 | (18 << 27) /* 0.314808496 */,
5203 /* 4870 */ 0x0509cf08 | (18 << 27) /* 0.314894706 */,
5204 /* 4871 */ 0x050a296f | (18 << 27) /* 0.314980923 */,
5205 /* 4872 */ 0x050a83d8 | (18 << 27) /* 0.315067145 */,
5206 /* 4873 */ 0x050ade43 | (18 << 27) /* 0.315153373 */,
5207 /* 4874 */ 0x050b38af | (18 << 27) /* 0.315239607 */,
5208 /* 4875 */ 0x050b931d | (18 << 27) /* 0.315325847 */,
5209 /* 4876 */ 0x050bed8d | (18 << 27) /* 0.315412093 */,
5210 /* 4877 */ 0x050c47fe | (18 << 27) /* 0.315498345 */,
5211 /* 4878 */ 0x050ca271 | (18 << 27) /* 0.315584603 */,
5212 /* 4879 */ 0x050cfce5 | (18 << 27) /* 0.315670866 */,
5213
5214 /* 4880 */ 0x050d575b | (18 << 27) /* 0.315757136 */,
5215 /* 4881 */ 0x050db1d2 | (18 << 27) /* 0.315843411 */,
5216 /* 4882 */ 0x050e0c4b | (18 << 27) /* 0.315929693 */,
5217 /* 4883 */ 0x050e66c5 | (18 << 27) /* 0.316015980 */,
5218 /* 4884 */ 0x050ec141 | (18 << 27) /* 0.316102273 */,
5219 /* 4885 */ 0x050f1bbf | (18 << 27) /* 0.316188572 */,
5220 /* 4886 */ 0x050f763e | (18 << 27) /* 0.316274877 */,
5221 /* 4887 */ 0x050fd0bf | (18 << 27) /* 0.316361187 */,
5222 /* 4888 */ 0x05102b42 | (18 << 27) /* 0.316447504 */,
5223 /* 4889 */ 0x051085c6 | (18 << 27) /* 0.316533826 */,
5224 /* 4890 */ 0x0510e04b | (18 << 27) /* 0.316620155 */,
5225 /* 4891 */ 0x05113ad3 | (18 << 27) /* 0.316706489 */,
5226 /* 4892 */ 0x0511955b | (18 << 27) /* 0.316792829 */,
5227 /* 4893 */ 0x0511efe6 | (18 << 27) /* 0.316879175 */,
5228 /* 4894 */ 0x05124a72 | (18 << 27) /* 0.316965527 */,
5229 /* 4895 */ 0x0512a4ff | (18 << 27) /* 0.317051885 */,
5230
5231 /* 4896 */ 0x0512ff8e | (18 << 27) /* 0.317138249 */,
5232 /* 4897 */ 0x05135a1f | (18 << 27) /* 0.317224618 */,
5233 /* 4898 */ 0x0513b4b1 | (18 << 27) /* 0.317310994 */,
5234 /* 4899 */ 0x05140f45 | (18 << 27) /* 0.317397375 */,
5235 /* 4900 */ 0x051469da | (18 << 27) /* 0.317483762 */,
5236 /* 4901 */ 0x0514c471 | (18 << 27) /* 0.317570155 */,
5237 /* 4902 */ 0x05151f0a | (18 << 27) /* 0.317656554 */,
5238 /* 4903 */ 0x051579a4 | (18 << 27) /* 0.317742959 */,
5239 /* 4904 */ 0x0515d440 | (18 << 27) /* 0.317829370 */,
5240 /* 4905 */ 0x05162edd | (18 << 27) /* 0.317915786 */,
5241 /* 4906 */ 0x0516897c | (18 << 27) /* 0.318002209 */,
5242 /* 4907 */ 0x0516e41c | (18 << 27) /* 0.318088637 */,
5243 /* 4908 */ 0x05173ebe | (18 << 27) /* 0.318175071 */,
5244 /* 4909 */ 0x05179962 | (18 << 27) /* 0.318261511 */,
5245 /* 4910 */ 0x0517f407 | (18 << 27) /* 0.318347957 */,
5246 /* 4911 */ 0x05184eae | (18 << 27) /* 0.318434409 */,
5247
5248 /* 4912 */ 0x0518a956 | (18 << 27) /* 0.318520867 */,
5249 /* 4913 */ 0x05190400 | (18 << 27) /* 0.318607330 */,
5250 /* 4914 */ 0x05195eab | (18 << 27) /* 0.318693800 */,
5251 /* 4915 */ 0x0519b958 | (18 << 27) /* 0.318780275 */,
5252 /* 4916 */ 0x051a1407 | (18 << 27) /* 0.318866756 */,
5253 /* 4917 */ 0x051a6eb7 | (18 << 27) /* 0.318953243 */,
5254 /* 4918 */ 0x051ac969 | (18 << 27) /* 0.319039736 */,
5255 /* 4919 */ 0x051b241c | (18 << 27) /* 0.319126235 */,
5256 /* 4920 */ 0x051b7ed1 | (18 << 27) /* 0.319212739 */,
5257 /* 4921 */ 0x051bd987 | (18 << 27) /* 0.319299250 */,
5258 /* 4922 */ 0x051c3440 | (18 << 27) /* 0.319385766 */,
5259 /* 4923 */ 0x051c8ef9 | (18 << 27) /* 0.319472288 */,
5260 /* 4924 */ 0x051ce9b4 | (18 << 27) /* 0.319558816 */,
5261 /* 4925 */ 0x051d4471 | (18 << 27) /* 0.319645350 */,
5262 /* 4926 */ 0x051d9f2f | (18 << 27) /* 0.319731890 */,
5263 /* 4927 */ 0x051df9ef | (18 << 27) /* 0.319818435 */,
5264
5265 /* 4928 */ 0x051e54b1 | (18 << 27) /* 0.319904987 */,
5266 /* 4929 */ 0x051eaf74 | (18 << 27) /* 0.319991544 */,
5267 /* 4930 */ 0x051f0a38 | (18 << 27) /* 0.320078107 */,
5268 /* 4931 */ 0x051f64ff | (18 << 27) /* 0.320164676 */,
5269 /* 4932 */ 0x051fbfc6 | (18 << 27) /* 0.320251251 */,
5270 /* 4933 */ 0x05201a90 | (18 << 27) /* 0.320337832 */,
5271 /* 4934 */ 0x0520755b | (18 << 27) /* 0.320424419 */,
5272 /* 4935 */ 0x0520d027 | (18 << 27) /* 0.320511011 */,
5273 /* 4936 */ 0x05212af5 | (18 << 27) /* 0.320597609 */,
5274 /* 4937 */ 0x052185c5 | (18 << 27) /* 0.320684213 */,
5275 /* 4938 */ 0x0521e096 | (18 << 27) /* 0.320770823 */,
5276 /* 4939 */ 0x05223b69 | (18 << 27) /* 0.320857439 */,
5277 /* 4940 */ 0x0522963d | (18 << 27) /* 0.320944061 */,
5278 /* 4941 */ 0x0522f113 | (18 << 27) /* 0.321030688 */,
5279 /* 4942 */ 0x05234bea | (18 << 27) /* 0.321117322 */,
5280 /* 4943 */ 0x0523a6c3 | (18 << 27) /* 0.321203961 */,
5281
5282 /* 4944 */ 0x0524019e | (18 << 27) /* 0.321290606 */,
5283 /* 4945 */ 0x05245c7a | (18 << 27) /* 0.321377257 */,
5284 /* 4946 */ 0x0524b758 | (18 << 27) /* 0.321463913 */,
5285 /* 4947 */ 0x05251237 | (18 << 27) /* 0.321550576 */,
5286 /* 4948 */ 0x05256d18 | (18 << 27) /* 0.321637244 */,
5287 /* 4949 */ 0x0525c7fb | (18 << 27) /* 0.321723919 */,
5288 /* 4950 */ 0x052622df | (18 << 27) /* 0.321810599 */,
5289 /* 4951 */ 0x05267dc4 | (18 << 27) /* 0.321897285 */,
5290 /* 4952 */ 0x0526d8ab | (18 << 27) /* 0.321983976 */,
5291 /* 4953 */ 0x05273394 | (18 << 27) /* 0.322070674 */,
5292 /* 4954 */ 0x05278e7e | (18 << 27) /* 0.322157377 */,
5293 /* 4955 */ 0x0527e96a | (18 << 27) /* 0.322244087 */,
5294 /* 4956 */ 0x05284457 | (18 << 27) /* 0.322330802 */,
5295 /* 4957 */ 0x05289f46 | (18 << 27) /* 0.322417523 */,
5296 /* 4958 */ 0x0528fa37 | (18 << 27) /* 0.322504249 */,
5297 /* 4959 */ 0x05295529 | (18 << 27) /* 0.322590982 */,
5298
5299 /* 4960 */ 0x0529b01d | (18 << 27) /* 0.322677720 */,
5300 /* 4961 */ 0x052a0b12 | (18 << 27) /* 0.322764465 */,
5301 /* 4962 */ 0x052a6609 | (18 << 27) /* 0.322851215 */,
5302 /* 4963 */ 0x052ac101 | (18 << 27) /* 0.322937971 */,
5303 /* 4964 */ 0x052b1bfb | (18 << 27) /* 0.323024732 */,
5304 /* 4965 */ 0x052b76f7 | (18 << 27) /* 0.323111500 */,
5305 /* 4966 */ 0x052bd1f4 | (18 << 27) /* 0.323198273 */,
5306 /* 4967 */ 0x052c2cf2 | (18 << 27) /* 0.323285052 */,
5307 /* 4968 */ 0x052c87f2 | (18 << 27) /* 0.323371837 */,
5308 /* 4969 */ 0x052ce2f4 | (18 << 27) /* 0.323458628 */,
5309 /* 4970 */ 0x052d3df7 | (18 << 27) /* 0.323545425 */,
5310 /* 4971 */ 0x052d98fc | (18 << 27) /* 0.323632227 */,
5311 /* 4972 */ 0x052df403 | (18 << 27) /* 0.323719036 */,
5312 /* 4973 */ 0x052e4f0b | (18 << 27) /* 0.323805850 */,
5313 /* 4974 */ 0x052eaa14 | (18 << 27) /* 0.323892670 */,
5314 /* 4975 */ 0x052f051f | (18 << 27) /* 0.323979496 */,
5315
5316 /* 4976 */ 0x052f602c | (18 << 27) /* 0.324066327 */,
5317 /* 4977 */ 0x052fbb3a | (18 << 27) /* 0.324153165 */,
5318 /* 4978 */ 0x0530164a | (18 << 27) /* 0.324240008 */,
5319 /* 4979 */ 0x0530715b | (18 << 27) /* 0.324326857 */,
5320 /* 4980 */ 0x0530cc6e | (18 << 27) /* 0.324413712 */,
5321 /* 4981 */ 0x05312783 | (18 << 27) /* 0.324500572 */,
5322 /* 4982 */ 0x05318299 | (18 << 27) /* 0.324587439 */,
5323 /* 4983 */ 0x0531ddb0 | (18 << 27) /* 0.324674311 */,
5324 /* 4984 */ 0x053238ca | (18 << 27) /* 0.324761189 */,
5325 /* 4985 */ 0x053293e4 | (18 << 27) /* 0.324848073 */,
5326 /* 4986 */ 0x0532ef01 | (18 << 27) /* 0.324934963 */,
5327 /* 4987 */ 0x05334a1e | (18 << 27) /* 0.325021858 */,
5328 /* 4988 */ 0x0533a53e | (18 << 27) /* 0.325108760 */,
5329 /* 4989 */ 0x0534005f | (18 << 27) /* 0.325195667 */,
5330 /* 4990 */ 0x05345b81 | (18 << 27) /* 0.325282580 */,
5331 /* 4991 */ 0x0534b6a5 | (18 << 27) /* 0.325369498 */,
5332
5333 /* 4992 */ 0x053511cb | (18 << 27) /* 0.325456423 */,
5334 /* 4993 */ 0x05356cf2 | (18 << 27) /* 0.325543353 */,
5335 /* 4994 */ 0x0535c81b | (18 << 27) /* 0.325630290 */,
5336 /* 4995 */ 0x05362345 | (18 << 27) /* 0.325717232 */,
5337 /* 4996 */ 0x05367e71 | (18 << 27) /* 0.325804179 */,
5338 /* 4997 */ 0x0536d99f | (18 << 27) /* 0.325891133 */,
5339 /* 4998 */ 0x053734ce | (18 << 27) /* 0.325978092 */,
5340 /* 4999 */ 0x05378ffe | (18 << 27) /* 0.326065057 */,
5341 /* 5000 */ 0x0537eb30 | (18 << 27) /* 0.326152028 */,
5342 /* 5001 */ 0x05384664 | (18 << 27) /* 0.326239005 */,
5343 /* 5002 */ 0x0538a199 | (18 << 27) /* 0.326325988 */,
5344 /* 5003 */ 0x0538fcd0 | (18 << 27) /* 0.326412976 */,
5345 /* 5004 */ 0x05395808 | (18 << 27) /* 0.326499970 */,
5346 /* 5005 */ 0x0539b342 | (18 << 27) /* 0.326586970 */,
5347 /* 5006 */ 0x053a0e7d | (18 << 27) /* 0.326673976 */,
5348 /* 5007 */ 0x053a69ba | (18 << 27) /* 0.326760988 */,
5349
5350 /* 5008 */ 0x053ac4f9 | (18 << 27) /* 0.326848005 */,
5351 /* 5009 */ 0x053b2039 | (18 << 27) /* 0.326935028 */,
5352 /* 5010 */ 0x053b7b7b | (18 << 27) /* 0.327022057 */,
5353 /* 5011 */ 0x053bd6be | (18 << 27) /* 0.327109092 */,
5354 /* 5012 */ 0x053c3203 | (18 << 27) /* 0.327196132 */,
5355 /* 5013 */ 0x053c8d49 | (18 << 27) /* 0.327283178 */,
5356 /* 5014 */ 0x053ce891 | (18 << 27) /* 0.327370231 */,
5357 /* 5015 */ 0x053d43da | (18 << 27) /* 0.327457288 */,
5358 /* 5016 */ 0x053d9f25 | (18 << 27) /* 0.327544352 */,
5359 /* 5017 */ 0x053dfa72 | (18 << 27) /* 0.327631421 */,
5360 /* 5018 */ 0x053e55c0 | (18 << 27) /* 0.327718497 */,
5361 /* 5019 */ 0x053eb10f | (18 << 27) /* 0.327805578 */,
5362 /* 5020 */ 0x053f0c61 | (18 << 27) /* 0.327892665 */,
5363 /* 5021 */ 0x053f67b3 | (18 << 27) /* 0.327979757 */,
5364 /* 5022 */ 0x053fc308 | (18 << 27) /* 0.328066855 */,
5365 /* 5023 */ 0x05401e5e | (18 << 27) /* 0.328153960 */,
5366
5367 /* 5024 */ 0x054079b5 | (18 << 27) /* 0.328241070 */,
5368 /* 5025 */ 0x0540d50e | (18 << 27) /* 0.328328185 */,
5369 /* 5026 */ 0x05413068 | (18 << 27) /* 0.328415307 */,
5370 /* 5027 */ 0x05418bc4 | (18 << 27) /* 0.328502434 */,
5371 /* 5028 */ 0x0541e722 | (18 << 27) /* 0.328589567 */,
5372 /* 5029 */ 0x05424281 | (18 << 27) /* 0.328676706 */,
5373 /* 5030 */ 0x05429de2 | (18 << 27) /* 0.328763850 */,
5374 /* 5031 */ 0x0542f944 | (18 << 27) /* 0.328851001 */,
5375 /* 5032 */ 0x054354a8 | (18 << 27) /* 0.328938157 */,
5376 /* 5033 */ 0x0543b00d | (18 << 27) /* 0.329025319 */,
5377 /* 5034 */ 0x05440b74 | (18 << 27) /* 0.329112486 */,
5378 /* 5035 */ 0x054466dd | (18 << 27) /* 0.329199660 */,
5379 /* 5036 */ 0x0544c247 | (18 << 27) /* 0.329286839 */,
5380 /* 5037 */ 0x05451db2 | (18 << 27) /* 0.329374024 */,
5381 /* 5038 */ 0x0545791f | (18 << 27) /* 0.329461215 */,
5382 /* 5039 */ 0x0545d48e | (18 << 27) /* 0.329548411 */,
5383
5384 /* 5040 */ 0x05462ffe | (18 << 27) /* 0.329635614 */,
5385 /* 5041 */ 0x05468b70 | (18 << 27) /* 0.329722822 */,
5386 /* 5042 */ 0x0546e6e3 | (18 << 27) /* 0.329810036 */,
5387 /* 5043 */ 0x05474258 | (18 << 27) /* 0.329897255 */,
5388 /* 5044 */ 0x05479dce | (18 << 27) /* 0.329984481 */,
5389 /* 5045 */ 0x0547f946 | (18 << 27) /* 0.330071712 */,
5390 /* 5046 */ 0x054854c0 | (18 << 27) /* 0.330158949 */,
5391 /* 5047 */ 0x0548b03b | (18 << 27) /* 0.330246191 */,
5392 /* 5048 */ 0x05490bb7 | (18 << 27) /* 0.330333440 */,
5393 /* 5049 */ 0x05496735 | (18 << 27) /* 0.330420694 */,
5394 /* 5050 */ 0x0549c2b5 | (18 << 27) /* 0.330507954 */,
5395 /* 5051 */ 0x054a1e36 | (18 << 27) /* 0.330595220 */,
5396 /* 5052 */ 0x054a79b9 | (18 << 27) /* 0.330682491 */,
5397 /* 5053 */ 0x054ad53d | (18 << 27) /* 0.330769768 */,
5398 /* 5054 */ 0x054b30c3 | (18 << 27) /* 0.330857051 */,
5399 /* 5055 */ 0x054b8c4b | (18 << 27) /* 0.330944340 */,
5400
5401 /* 5056 */ 0x054be7d4 | (18 << 27) /* 0.331031635 */,
5402 /* 5057 */ 0x054c435e | (18 << 27) /* 0.331118935 */,
5403 /* 5058 */ 0x054c9eea | (18 << 27) /* 0.331206241 */,
5404 /* 5059 */ 0x054cfa78 | (18 << 27) /* 0.331293553 */,
5405 /* 5060 */ 0x054d5607 | (18 << 27) /* 0.331380870 */,
5406 /* 5061 */ 0x054db197 | (18 << 27) /* 0.331468193 */,
5407 /* 5062 */ 0x054e0d2a | (18 << 27) /* 0.331555522 */,
5408 /* 5063 */ 0x054e68bd | (18 << 27) /* 0.331642857 */,
5409 /* 5064 */ 0x054ec453 | (18 << 27) /* 0.331730198 */,
5410 /* 5065 */ 0x054f1fe9 | (18 << 27) /* 0.331817544 */,
5411 /* 5066 */ 0x054f7b82 | (18 << 27) /* 0.331904896 */,
5412 /* 5067 */ 0x054fd71c | (18 << 27) /* 0.331992254 */,
5413 /* 5068 */ 0x055032b7 | (18 << 27) /* 0.332079617 */,
5414 /* 5069 */ 0x05508e54 | (18 << 27) /* 0.332166986 */,
5415 /* 5070 */ 0x0550e9f3 | (18 << 27) /* 0.332254361 */,
5416 /* 5071 */ 0x05514593 | (18 << 27) /* 0.332341742 */,
5417
5418 /* 5072 */ 0x0551a134 | (18 << 27) /* 0.332429129 */,
5419 /* 5073 */ 0x0551fcd8 | (18 << 27) /* 0.332516521 */,
5420 /* 5074 */ 0x0552587c | (18 << 27) /* 0.332603919 */,
5421 /* 5075 */ 0x0552b423 | (18 << 27) /* 0.332691323 */,
5422 /* 5076 */ 0x05530fca | (18 << 27) /* 0.332778732 */,
5423 /* 5077 */ 0x05536b74 | (18 << 27) /* 0.332866147 */,
5424 /* 5078 */ 0x0553c71f | (18 << 27) /* 0.332953568 */,
5425 /* 5079 */ 0x055422cb | (18 << 27) /* 0.333040995 */,
5426 /* 5080 */ 0x05547e79 | (18 << 27) /* 0.333128427 */,
5427 /* 5081 */ 0x0554da29 | (18 << 27) /* 0.333215865 */,
5428 /* 5082 */ 0x055535da | (18 << 27) /* 0.333303309 */,
5429 /* 5083 */ 0x0555918c | (18 << 27) /* 0.333390759 */,
5430 /* 5084 */ 0x0555ed40 | (18 << 27) /* 0.333478214 */,
5431 /* 5085 */ 0x055648f6 | (18 << 27) /* 0.333565675 */,
5432 /* 5086 */ 0x0556a4ad | (18 << 27) /* 0.333653142 */,
5433 /* 5087 */ 0x05570066 | (18 << 27) /* 0.333740615 */,
5434
5435 /* 5088 */ 0x05575c20 | (18 << 27) /* 0.333828093 */,
5436 /* 5089 */ 0x0557b7dc | (18 << 27) /* 0.333915577 */,
5437 /* 5090 */ 0x05581399 | (18 << 27) /* 0.334003067 */,
5438 /* 5091 */ 0x05586f58 | (18 << 27) /* 0.334090562 */,
5439 /* 5092 */ 0x0558cb19 | (18 << 27) /* 0.334178063 */,
5440 /* 5093 */ 0x055926db | (18 << 27) /* 0.334265570 */,
5441 /* 5094 */ 0x0559829e | (18 << 27) /* 0.334353083 */,
5442 /* 5095 */ 0x0559de63 | (18 << 27) /* 0.334440601 */,
5443 /* 5096 */ 0x055a3a2a | (18 << 27) /* 0.334528126 */,
5444 /* 5097 */ 0x055a95f2 | (18 << 27) /* 0.334615655 */,
5445 /* 5098 */ 0x055af1bb | (18 << 27) /* 0.334703191 */,
5446 /* 5099 */ 0x055b4d87 | (18 << 27) /* 0.334790732 */,
5447 /* 5100 */ 0x055ba953 | (18 << 27) /* 0.334878279 */,
5448 /* 5101 */ 0x055c0522 | (18 << 27) /* 0.334965832 */,
5449 /* 5102 */ 0x055c60f1 | (18 << 27) /* 0.335053391 */,
5450 /* 5103 */ 0x055cbcc3 | (18 << 27) /* 0.335140955 */,
5451
5452 /* 5104 */ 0x055d1896 | (18 << 27) /* 0.335228525 */,
5453 /* 5105 */ 0x055d746a | (18 << 27) /* 0.335316100 */,
5454 /* 5106 */ 0x055dd040 | (18 << 27) /* 0.335403682 */,
5455 /* 5107 */ 0x055e2c17 | (18 << 27) /* 0.335491269 */,
5456 /* 5108 */ 0x055e87f0 | (18 << 27) /* 0.335578861 */,
5457 /* 5109 */ 0x055ee3cb | (18 << 27) /* 0.335666460 */,
5458 /* 5110 */ 0x055f3fa7 | (18 << 27) /* 0.335754064 */,
5459 /* 5111 */ 0x055f9b85 | (18 << 27) /* 0.335841674 */,
5460 /* 5112 */ 0x055ff764 | (18 << 27) /* 0.335929290 */,
5461 /* 5113 */ 0x05605344 | (18 << 27) /* 0.336016911 */,
5462 /* 5114 */ 0x0560af27 | (18 << 27) /* 0.336104538 */,
5463 /* 5115 */ 0x05610b0a | (18 << 27) /* 0.336192171 */,
5464 /* 5116 */ 0x056166f0 | (18 << 27) /* 0.336279809 */,
5465 /* 5117 */ 0x0561c2d7 | (18 << 27) /* 0.336367453 */,
5466 /* 5118 */ 0x05621ebf | (18 << 27) /* 0.336455103 */,
5467 /* 5119 */ 0x05627aa9 | (18 << 27) /* 0.336542759 */,
5468
5469 /* 5120 */ 0x0562d694 | (18 << 27) /* 0.336630420 */,
5470 /* 5121 */ 0x05633281 | (18 << 27) /* 0.336718087 */,
5471 /* 5122 */ 0x05638e70 | (18 << 27) /* 0.336805760 */,
5472 /* 5123 */ 0x0563ea60 | (18 << 27) /* 0.336893439 */,
5473 /* 5124 */ 0x05644651 | (18 << 27) /* 0.336981123 */,
5474 /* 5125 */ 0x0564a244 | (18 << 27) /* 0.337068813 */,
5475 /* 5126 */ 0x0564fe39 | (18 << 27) /* 0.337156508 */,
5476 /* 5127 */ 0x05655a2f | (18 << 27) /* 0.337244209 */,
5477 /* 5128 */ 0x0565b627 | (18 << 27) /* 0.337331916 */,
5478 /* 5129 */ 0x05661220 | (18 << 27) /* 0.337419629 */,
5479 /* 5130 */ 0x05666e1a | (18 << 27) /* 0.337507347 */,
5480 /* 5131 */ 0x0566ca17 | (18 << 27) /* 0.337595071 */,
5481 /* 5132 */ 0x05672614 | (18 << 27) /* 0.337682801 */,
5482 /* 5133 */ 0x05678214 | (18 << 27) /* 0.337770537 */,
5483 /* 5134 */ 0x0567de15 | (18 << 27) /* 0.337858278 */,
5484 /* 5135 */ 0x05683a17 | (18 << 27) /* 0.337946025 */,
5485
5486 /* 5136 */ 0x0568961b | (18 << 27) /* 0.338033777 */,
5487 /* 5137 */ 0x0568f220 | (18 << 27) /* 0.338121535 */,
5488 /* 5138 */ 0x05694e27 | (18 << 27) /* 0.338209299 */,
5489 /* 5139 */ 0x0569aa30 | (18 << 27) /* 0.338297069 */,
5490 /* 5140 */ 0x056a063a | (18 << 27) /* 0.338384844 */,
5491 /* 5141 */ 0x056a6245 | (18 << 27) /* 0.338472625 */,
5492 /* 5142 */ 0x056abe52 | (18 << 27) /* 0.338560412 */,
5493 /* 5143 */ 0x056b1a61 | (18 << 27) /* 0.338648204 */,
5494 /* 5144 */ 0x056b7671 | (18 << 27) /* 0.338736002 */,
5495 /* 5145 */ 0x056bd283 | (18 << 27) /* 0.338823806 */,
5496 /* 5146 */ 0x056c2e96 | (18 << 27) /* 0.338911616 */,
5497 /* 5147 */ 0x056c8aab | (18 << 27) /* 0.338999431 */,
5498 /* 5148 */ 0x056ce6c1 | (18 << 27) /* 0.339087252 */,
5499 /* 5149 */ 0x056d42d9 | (18 << 27) /* 0.339175078 */,
5500 /* 5150 */ 0x056d9ef2 | (18 << 27) /* 0.339262910 */,
5501 /* 5151 */ 0x056dfb0d | (18 << 27) /* 0.339350748 */,
5502
5503 /* 5152 */ 0x056e5729 | (18 << 27) /* 0.339438592 */,
5504 /* 5153 */ 0x056eb347 | (18 << 27) /* 0.339526441 */,
5505 /* 5154 */ 0x056f0f66 | (18 << 27) /* 0.339614296 */,
5506 /* 5155 */ 0x056f6b87 | (18 << 27) /* 0.339702157 */,
5507 /* 5156 */ 0x056fc7aa | (18 << 27) /* 0.339790023 */,
5508 /* 5157 */ 0x057023cd | (18 << 27) /* 0.339877895 */,
5509 /* 5158 */ 0x05707ff3 | (18 << 27) /* 0.339965773 */,
5510 /* 5159 */ 0x0570dc1a | (18 << 27) /* 0.340053656 */,
5511 /* 5160 */ 0x05713843 | (18 << 27) /* 0.340141545 */,
5512 /* 5161 */ 0x0571946d | (18 << 27) /* 0.340229440 */,
5513 /* 5162 */ 0x0571f098 | (18 << 27) /* 0.340317340 */,
5514 /* 5163 */ 0x05724cc5 | (18 << 27) /* 0.340405246 */,
5515 /* 5164 */ 0x0572a8f4 | (18 << 27) /* 0.340493158 */,
5516 /* 5165 */ 0x05730524 | (18 << 27) /* 0.340581075 */,
5517 /* 5166 */ 0x05736156 | (18 << 27) /* 0.340668999 */,
5518 /* 5167 */ 0x0573bd89 | (18 << 27) /* 0.340756927 */,
5519
5520 /* 5168 */ 0x057419be | (18 << 27) /* 0.340844862 */,
5521 /* 5169 */ 0x057475f4 | (18 << 27) /* 0.340932802 */,
5522 /* 5170 */ 0x0574d22c | (18 << 27) /* 0.341020748 */,
5523 /* 5171 */ 0x05752e65 | (18 << 27) /* 0.341108699 */,
5524 /* 5172 */ 0x05758aa0 | (18 << 27) /* 0.341196656 */,
5525 /* 5173 */ 0x0575e6dc | (18 << 27) /* 0.341284619 */,
5526 /* 5174 */ 0x0576431a | (18 << 27) /* 0.341372587 */,
5527 /* 5175 */ 0x05769f59 | (18 << 27) /* 0.341460562 */,
5528 /* 5176 */ 0x0576fb9a | (18 << 27) /* 0.341548541 */,
5529 /* 5177 */ 0x057757dd | (18 << 27) /* 0.341636527 */,
5530 /* 5178 */ 0x0577b421 | (18 << 27) /* 0.341724518 */,
5531 /* 5179 */ 0x05781066 | (18 << 27) /* 0.341812515 */,
5532 /* 5180 */ 0x05786cad | (18 << 27) /* 0.341900517 */,
5533 /* 5181 */ 0x0578c8f5 | (18 << 27) /* 0.341988525 */,
5534 /* 5182 */ 0x0579253f | (18 << 27) /* 0.342076539 */,
5535 /* 5183 */ 0x0579818b | (18 << 27) /* 0.342164558 */,
5536
5537 /* 5184 */ 0x0579ddd8 | (18 << 27) /* 0.342252584 */,
5538 /* 5185 */ 0x057a3a27 | (18 << 27) /* 0.342340614 */,
5539 /* 5186 */ 0x057a9677 | (18 << 27) /* 0.342428651 */,
5540 /* 5187 */ 0x057af2c8 | (18 << 27) /* 0.342516693 */,
5541 /* 5188 */ 0x057b4f1c | (18 << 27) /* 0.342604741 */,
5542 /* 5189 */ 0x057bab70 | (18 << 27) /* 0.342692794 */,
5543 /* 5190 */ 0x057c07c6 | (18 << 27) /* 0.342780853 */,
5544 /* 5191 */ 0x057c641e | (18 << 27) /* 0.342868918 */,
5545 /* 5192 */ 0x057cc077 | (18 << 27) /* 0.342956988 */,
5546 /* 5193 */ 0x057d1cd2 | (18 << 27) /* 0.343045064 */,
5547 /* 5194 */ 0x057d792e | (18 << 27) /* 0.343133146 */,
5548 /* 5195 */ 0x057dd58c | (18 << 27) /* 0.343221233 */,
5549 /* 5196 */ 0x057e31eb | (18 << 27) /* 0.343309326 */,
5550 /* 5197 */ 0x057e8e4c | (18 << 27) /* 0.343397425 */,
5551 /* 5198 */ 0x057eeaae | (18 << 27) /* 0.343485529 */,
5552 /* 5199 */ 0x057f4712 | (18 << 27) /* 0.343573639 */,
5553
5554 /* 5200 */ 0x057fa378 | (18 << 27) /* 0.343661754 */,
5555 /* 5201 */ 0x057fffde | (18 << 27) /* 0.343749876 */,
5556 /* 5202 */ 0x05805c47 | (18 << 27) /* 0.343838003 */,
5557 /* 5203 */ 0x0580b8b1 | (18 << 27) /* 0.343926135 */,
5558 /* 5204 */ 0x0581151c | (18 << 27) /* 0.344014273 */,
5559 /* 5205 */ 0x05817189 | (18 << 27) /* 0.344102417 */,
5560 /* 5206 */ 0x0581cdf7 | (18 << 27) /* 0.344190566 */,
5561 /* 5207 */ 0x05822a67 | (18 << 27) /* 0.344278722 */,
5562 /* 5208 */ 0x058286d9 | (18 << 27) /* 0.344366882 */,
5563 /* 5209 */ 0x0582e34c | (18 << 27) /* 0.344455049 */,
5564 /* 5210 */ 0x05833fc0 | (18 << 27) /* 0.344543221 */,
5565 /* 5211 */ 0x05839c36 | (18 << 27) /* 0.344631398 */,
5566 /* 5212 */ 0x0583f8ae | (18 << 27) /* 0.344719582 */,
5567 /* 5213 */ 0x05845527 | (18 << 27) /* 0.344807771 */,
5568 /* 5214 */ 0x0584b1a1 | (18 << 27) /* 0.344895965 */,
5569 /* 5215 */ 0x05850e1e | (18 << 27) /* 0.344984165 */,
5570
5571 /* 5216 */ 0x05856a9b | (18 << 27) /* 0.345072371 */,
5572 /* 5217 */ 0x0585c71a | (18 << 27) /* 0.345160583 */,
5573 /* 5218 */ 0x0586239b | (18 << 27) /* 0.345248800 */,
5574 /* 5219 */ 0x0586801d | (18 << 27) /* 0.345337023 */,
5575 /* 5220 */ 0x0586dca1 | (18 << 27) /* 0.345425251 */,
5576 /* 5221 */ 0x05873926 | (18 << 27) /* 0.345513485 */,
5577 /* 5222 */ 0x058795ac | (18 << 27) /* 0.345601725 */,
5578 /* 5223 */ 0x0587f235 | (18 << 27) /* 0.345689970 */,
5579 /* 5224 */ 0x05884ebe | (18 << 27) /* 0.345778221 */,
5580 /* 5225 */ 0x0588ab49 | (18 << 27) /* 0.345866478 */,
5581 /* 5226 */ 0x058907d6 | (18 << 27) /* 0.345954740 */,
5582 /* 5227 */ 0x05896464 | (18 << 27) /* 0.346043008 */,
5583 /* 5228 */ 0x0589c0f4 | (18 << 27) /* 0.346131281 */,
5584 /* 5229 */ 0x058a1d85 | (18 << 27) /* 0.346219560 */,
5585 /* 5230 */ 0x058a7a18 | (18 << 27) /* 0.346307845 */,
5586 /* 5231 */ 0x058ad6ac | (18 << 27) /* 0.346396135 */,
5587
5588 /* 5232 */ 0x058b3342 | (18 << 27) /* 0.346484431 */,
5589 /* 5233 */ 0x058b8fd9 | (18 << 27) /* 0.346572733 */,
5590 /* 5234 */ 0x058bec72 | (18 << 27) /* 0.346661040 */,
5591 /* 5235 */ 0x058c490c | (18 << 27) /* 0.346749353 */,
5592 /* 5236 */ 0x058ca5a8 | (18 << 27) /* 0.346837671 */,
5593 /* 5237 */ 0x058d0246 | (18 << 27) /* 0.346925996 */,
5594 /* 5238 */ 0x058d5ee4 | (18 << 27) /* 0.347014325 */,
5595 /* 5239 */ 0x058dbb85 | (18 << 27) /* 0.347102661 */,
5596 /* 5240 */ 0x058e1827 | (18 << 27) /* 0.347191002 */,
5597 /* 5241 */ 0x058e74ca | (18 << 27) /* 0.347279348 */,
5598 /* 5242 */ 0x058ed16f | (18 << 27) /* 0.347367700 */,
5599 /* 5243 */ 0x058f2e15 | (18 << 27) /* 0.347456058 */,
5600 /* 5244 */ 0x058f8abd | (18 << 27) /* 0.347544422 */,
5601 /* 5245 */ 0x058fe766 | (18 << 27) /* 0.347632791 */,
5602 /* 5246 */ 0x05904411 | (18 << 27) /* 0.347721165 */,
5603 /* 5247 */ 0x0590a0be | (18 << 27) /* 0.347809546 */,
5604
5605 /* 5248 */ 0x0590fd6c | (18 << 27) /* 0.347897931 */,
5606 /* 5249 */ 0x05915a1b | (18 << 27) /* 0.347986323 */,
5607 /* 5250 */ 0x0591b6cc | (18 << 27) /* 0.348074720 */,
5608 /* 5251 */ 0x0592137e | (18 << 27) /* 0.348163123 */,
5609 /* 5252 */ 0x05927032 | (18 << 27) /* 0.348251531 */,
5610 /* 5253 */ 0x0592cce8 | (18 << 27) /* 0.348339945 */,
5611 /* 5254 */ 0x0593299f | (18 << 27) /* 0.348428365 */,
5612 /* 5255 */ 0x05938657 | (18 << 27) /* 0.348516790 */,
5613 /* 5256 */ 0x0593e311 | (18 << 27) /* 0.348605221 */,
5614 /* 5257 */ 0x05943fcd | (18 << 27) /* 0.348693657 */,
5615 /* 5258 */ 0x05949c8a | (18 << 27) /* 0.348782099 */,
5616 /* 5259 */ 0x0594f948 | (18 << 27) /* 0.348870547 */,
5617 /* 5260 */ 0x05955608 | (18 << 27) /* 0.348959000 */,
5618 /* 5261 */ 0x0595b2ca | (18 << 27) /* 0.349047459 */,
5619 /* 5262 */ 0x05960f8c | (18 << 27) /* 0.349135923 */,
5620 /* 5263 */ 0x05966c51 | (18 << 27) /* 0.349224393 */,
5621
5622 /* 5264 */ 0x0596c917 | (18 << 27) /* 0.349312869 */,
5623 /* 5265 */ 0x059725de | (18 << 27) /* 0.349401350 */,
5624 /* 5266 */ 0x059782a7 | (18 << 27) /* 0.349489837 */,
5625 /* 5267 */ 0x0597df72 | (18 << 27) /* 0.349578329 */,
5626 /* 5268 */ 0x05983c3e | (18 << 27) /* 0.349666827 */,
5627 /* 5269 */ 0x0598990c | (18 << 27) /* 0.349755331 */,
5628 /* 5270 */ 0x0598f5db | (18 << 27) /* 0.349843840 */,
5629 /* 5271 */ 0x059952ab | (18 << 27) /* 0.349932355 */,
5630 /* 5272 */ 0x0599af7d | (18 << 27) /* 0.350020876 */,
5631 /* 5273 */ 0x059a0c51 | (18 << 27) /* 0.350109402 */,
5632 /* 5274 */ 0x059a6926 | (18 << 27) /* 0.350197933 */,
5633 /* 5275 */ 0x059ac5fc | (18 << 27) /* 0.350286470 */,
5634 /* 5276 */ 0x059b22d4 | (18 << 27) /* 0.350375013 */,
5635 /* 5277 */ 0x059b7fae | (18 << 27) /* 0.350463562 */,
5636 /* 5278 */ 0x059bdc89 | (18 << 27) /* 0.350552116 */,
5637 /* 5279 */ 0x059c3965 | (18 << 27) /* 0.350640675 */,
5638
5639 /* 5280 */ 0x059c9643 | (18 << 27) /* 0.350729240 */,
5640 /* 5281 */ 0x059cf323 | (18 << 27) /* 0.350817811 */,
5641 /* 5282 */ 0x059d5004 | (18 << 27) /* 0.350906388 */,
5642 /* 5283 */ 0x059dace6 | (18 << 27) /* 0.350994970 */,
5643 /* 5284 */ 0x059e09cb | (18 << 27) /* 0.351083557 */,
5644 /* 5285 */ 0x059e66b0 | (18 << 27) /* 0.351172150 */,
5645 /* 5286 */ 0x059ec397 | (18 << 27) /* 0.351260749 */,
5646 /* 5287 */ 0x059f2080 | (18 << 27) /* 0.351349353 */,
5647 /* 5288 */ 0x059f7d6a | (18 << 27) /* 0.351437963 */,
5648 /* 5289 */ 0x059fda55 | (18 << 27) /* 0.351526579 */,
5649 /* 5290 */ 0x05a03742 | (18 << 27) /* 0.351615200 */,
5650 /* 5291 */ 0x05a09431 | (18 << 27) /* 0.351703827 */,
5651 /* 5292 */ 0x05a0f121 | (18 << 27) /* 0.351792459 */,
5652 /* 5293 */ 0x05a14e12 | (18 << 27) /* 0.351881097 */,
5653 /* 5294 */ 0x05a1ab05 | (18 << 27) /* 0.351969740 */,
5654 /* 5295 */ 0x05a207fa | (18 << 27) /* 0.352058389 */,
5655
5656 /* 5296 */ 0x05a264f0 | (18 << 27) /* 0.352147044 */,
5657 /* 5297 */ 0x05a2c1e7 | (18 << 27) /* 0.352235704 */,
5658 /* 5298 */ 0x05a31ee1 | (18 << 27) /* 0.352324369 */,
5659 /* 5299 */ 0x05a37bdb | (18 << 27) /* 0.352413041 */,
5660 /* 5300 */ 0x05a3d8d7 | (18 << 27) /* 0.352501718 */,
5661 /* 5301 */ 0x05a435d5 | (18 << 27) /* 0.352590400 */,
5662 /* 5302 */ 0x05a492d4 | (18 << 27) /* 0.352679088 */,
5663 /* 5303 */ 0x05a4efd4 | (18 << 27) /* 0.352767782 */,
5664 /* 5304 */ 0x05a54cd6 | (18 << 27) /* 0.352856481 */,
5665 /* 5305 */ 0x05a5a9da | (18 << 27) /* 0.352945186 */,
5666 /* 5306 */ 0x05a606df | (18 << 27) /* 0.353033896 */,
5667 /* 5307 */ 0x05a663e5 | (18 << 27) /* 0.353122612 */,
5668 /* 5308 */ 0x05a6c0ed | (18 << 27) /* 0.353211333 */,
5669 /* 5309 */ 0x05a71df7 | (18 << 27) /* 0.353300061 */,
5670 /* 5310 */ 0x05a77b02 | (18 << 27) /* 0.353388793 */,
5671 /* 5311 */ 0x05a7d80e | (18 << 27) /* 0.353477531 */,
5672
5673 /* 5312 */ 0x05a8351c | (18 << 27) /* 0.353566275 */,
5674 /* 5313 */ 0x05a8922c | (18 << 27) /* 0.353655024 */,
5675 /* 5314 */ 0x05a8ef3c | (18 << 27) /* 0.353743779 */,
5676 /* 5315 */ 0x05a94c4f | (18 << 27) /* 0.353832540 */,
5677 /* 5316 */ 0x05a9a963 | (18 << 27) /* 0.353921306 */,
5678 /* 5317 */ 0x05aa0678 | (18 << 27) /* 0.354010077 */,
5679 /* 5318 */ 0x05aa638f | (18 << 27) /* 0.354098855 */,
5680 /* 5319 */ 0x05aac0a8 | (18 << 27) /* 0.354187637 */,
5681 /* 5320 */ 0x05ab1dc2 | (18 << 27) /* 0.354276426 */,
5682 /* 5321 */ 0x05ab7add | (18 << 27) /* 0.354365220 */,
5683 /* 5322 */ 0x05abd7fa | (18 << 27) /* 0.354454019 */,
5684 /* 5323 */ 0x05ac3518 | (18 << 27) /* 0.354542824 */,
5685 /* 5324 */ 0x05ac9238 | (18 << 27) /* 0.354631635 */,
5686 /* 5325 */ 0x05acef5a | (18 << 27) /* 0.354720451 */,
5687 /* 5326 */ 0x05ad4c7d | (18 << 27) /* 0.354809272 */,
5688 /* 5327 */ 0x05ada9a1 | (18 << 27) /* 0.354898100 */,
5689
5690 /* 5328 */ 0x05ae06c7 | (18 << 27) /* 0.354986932 */,
5691 /* 5329 */ 0x05ae63ee | (18 << 27) /* 0.355075771 */,
5692 /* 5330 */ 0x05aec117 | (18 << 27) /* 0.355164615 */,
5693 /* 5331 */ 0x05af1e41 | (18 << 27) /* 0.355253464 */,
5694 /* 5332 */ 0x05af7b6d | (18 << 27) /* 0.355342319 */,
5695 /* 5333 */ 0x05afd89b | (18 << 27) /* 0.355431180 */,
5696 /* 5334 */ 0x05b035c9 | (18 << 27) /* 0.355520046 */,
5697 /* 5335 */ 0x05b092fa | (18 << 27) /* 0.355608917 */,
5698 /* 5336 */ 0x05b0f02b | (18 << 27) /* 0.355697795 */,
5699 /* 5337 */ 0x05b14d5f | (18 << 27) /* 0.355786677 */,
5700 /* 5338 */ 0x05b1aa94 | (18 << 27) /* 0.355875566 */,
5701 /* 5339 */ 0x05b207ca | (18 << 27) /* 0.355964460 */,
5702 /* 5340 */ 0x05b26502 | (18 << 27) /* 0.356053359 */,
5703 /* 5341 */ 0x05b2c23b | (18 << 27) /* 0.356142264 */,
5704 /* 5342 */ 0x05b31f76 | (18 << 27) /* 0.356231175 */,
5705 /* 5343 */ 0x05b37cb2 | (18 << 27) /* 0.356320091 */,
5706
5707 /* 5344 */ 0x05b3d9f0 | (18 << 27) /* 0.356409012 */,
5708 /* 5345 */ 0x05b4372f | (18 << 27) /* 0.356497940 */,
5709 /* 5346 */ 0x05b4946f | (18 << 27) /* 0.356586872 */,
5710 /* 5347 */ 0x05b4f1b2 | (18 << 27) /* 0.356675811 */,
5711 /* 5348 */ 0x05b54ef5 | (18 << 27) /* 0.356764754 */,
5712 /* 5349 */ 0x05b5ac3a | (18 << 27) /* 0.356853704 */,
5713 /* 5350 */ 0x05b60981 | (18 << 27) /* 0.356942659 */,
5714 /* 5351 */ 0x05b666c9 | (18 << 27) /* 0.357031619 */,
5715 /* 5352 */ 0x05b6c413 | (18 << 27) /* 0.357120585 */,
5716 /* 5353 */ 0x05b7215e | (18 << 27) /* 0.357209557 */,
5717 /* 5354 */ 0x05b77eab | (18 << 27) /* 0.357298534 */,
5718 /* 5355 */ 0x05b7dbf9 | (18 << 27) /* 0.357387516 */,
5719 /* 5356 */ 0x05b83948 | (18 << 27) /* 0.357476504 */,
5720 /* 5357 */ 0x05b89699 | (18 << 27) /* 0.357565498 */,
5721 /* 5358 */ 0x05b8f3ec | (18 << 27) /* 0.357654497 */,
5722 /* 5359 */ 0x05b95140 | (18 << 27) /* 0.357743502 */,
5723
5724 /* 5360 */ 0x05b9ae95 | (18 << 27) /* 0.357832512 */,
5725 /* 5361 */ 0x05ba0bec | (18 << 27) /* 0.357921528 */,
5726 /* 5362 */ 0x05ba6945 | (18 << 27) /* 0.358010550 */,
5727 /* 5363 */ 0x05bac69f | (18 << 27) /* 0.358099576 */,
5728 /* 5364 */ 0x05bb23fa | (18 << 27) /* 0.358188609 */,
5729 /* 5365 */ 0x05bb8157 | (18 << 27) /* 0.358277647 */,
5730 /* 5366 */ 0x05bbdeb6 | (18 << 27) /* 0.358366690 */,
5731 /* 5367 */ 0x05bc3c16 | (18 << 27) /* 0.358455739 */,
5732 /* 5368 */ 0x05bc9977 | (18 << 27) /* 0.358544794 */,
5733 /* 5369 */ 0x05bcf6da | (18 << 27) /* 0.358633854 */,
5734 /* 5370 */ 0x05bd543e | (18 << 27) /* 0.358722920 */,
5735 /* 5371 */ 0x05bdb1a4 | (18 << 27) /* 0.358811991 */,
5736 /* 5372 */ 0x05be0f0b | (18 << 27) /* 0.358901067 */,
5737 /* 5373 */ 0x05be6c74 | (18 << 27) /* 0.358990150 */,
5738 /* 5374 */ 0x05bec9df | (18 << 27) /* 0.359079237 */,
5739 /* 5375 */ 0x05bf274a | (18 << 27) /* 0.359168331 */,
5740
5741 /* 5376 */ 0x05bf84b8 | (18 << 27) /* 0.359257429 */,
5742 /* 5377 */ 0x05bfe226 | (18 << 27) /* 0.359346534 */,
5743 /* 5378 */ 0x05c03f97 | (18 << 27) /* 0.359435644 */,
5744 /* 5379 */ 0x05c09d08 | (18 << 27) /* 0.359524759 */,
5745 /* 5380 */ 0x05c0fa7c | (18 << 27) /* 0.359613880 */,
5746 /* 5381 */ 0x05c157f0 | (18 << 27) /* 0.359703006 */,
5747 /* 5382 */ 0x05c1b566 | (18 << 27) /* 0.359792138 */,
5748 /* 5383 */ 0x05c212de | (18 << 27) /* 0.359881276 */,
5749 /* 5384 */ 0x05c27057 | (18 << 27) /* 0.359970419 */,
5750 /* 5385 */ 0x05c2cdd2 | (18 << 27) /* 0.360059567 */,
5751 /* 5386 */ 0x05c32b4e | (18 << 27) /* 0.360148721 */,
5752 /* 5387 */ 0x05c388cb | (18 << 27) /* 0.360237881 */,
5753 /* 5388 */ 0x05c3e64b | (18 << 27) /* 0.360327046 */,
5754 /* 5389 */ 0x05c443cb | (18 << 27) /* 0.360416216 */,
5755 /* 5390 */ 0x05c4a14d | (18 << 27) /* 0.360505392 */,
5756 /* 5391 */ 0x05c4fed1 | (18 << 27) /* 0.360594574 */,
5757
5758 /* 5392 */ 0x05c55c56 | (18 << 27) /* 0.360683761 */,
5759 /* 5393 */ 0x05c5b9dc | (18 << 27) /* 0.360772953 */,
5760 /* 5394 */ 0x05c61764 | (18 << 27) /* 0.360862152 */,
5761 /* 5395 */ 0x05c674ed | (18 << 27) /* 0.360951355 */,
5762 /* 5396 */ 0x05c6d278 | (18 << 27) /* 0.361040564 */,
5763 /* 5397 */ 0x05c73005 | (18 << 27) /* 0.361129779 */,
5764 /* 5398 */ 0x05c78d93 | (18 << 27) /* 0.361218999 */,
5765 /* 5399 */ 0x05c7eb22 | (18 << 27) /* 0.361308225 */,
5766 /* 5400 */ 0x05c848b3 | (18 << 27) /* 0.361397456 */,
5767 /* 5401 */ 0x05c8a645 | (18 << 27) /* 0.361486693 */,
5768 /* 5402 */ 0x05c903d9 | (18 << 27) /* 0.361575935 */,
5769 /* 5403 */ 0x05c9616e | (18 << 27) /* 0.361665183 */,
5770 /* 5404 */ 0x05c9bf05 | (18 << 27) /* 0.361754436 */,
5771 /* 5405 */ 0x05ca1c9d | (18 << 27) /* 0.361843695 */,
5772 /* 5406 */ 0x05ca7a37 | (18 << 27) /* 0.361932959 */,
5773 /* 5407 */ 0x05cad7d2 | (18 << 27) /* 0.362022229 */,
5774
5775 /* 5408 */ 0x05cb356e | (18 << 27) /* 0.362111504 */,
5776 /* 5409 */ 0x05cb930d | (18 << 27) /* 0.362200785 */,
5777 /* 5410 */ 0x05cbf0ac | (18 << 27) /* 0.362290071 */,
5778 /* 5411 */ 0x05cc4e4d | (18 << 27) /* 0.362379362 */,
5779 /* 5412 */ 0x05ccabf0 | (18 << 27) /* 0.362468660 */,
5780 /* 5413 */ 0x05cd0994 | (18 << 27) /* 0.362557962 */,
5781 /* 5414 */ 0x05cd6739 | (18 << 27) /* 0.362647271 */,
5782 /* 5415 */ 0x05cdc4e0 | (18 << 27) /* 0.362736584 */,
5783 /* 5416 */ 0x05ce2289 | (18 << 27) /* 0.362825904 */,
5784 /* 5417 */ 0x05ce8033 | (18 << 27) /* 0.362915228 */,
5785 /* 5418 */ 0x05ceddde | (18 << 27) /* 0.363004559 */,
5786 /* 5419 */ 0x05cf3b8b | (18 << 27) /* 0.363093894 */,
5787 /* 5420 */ 0x05cf9939 | (18 << 27) /* 0.363183236 */,
5788 /* 5421 */ 0x05cff6e9 | (18 << 27) /* 0.363272582 */,
5789 /* 5422 */ 0x05d0549a | (18 << 27) /* 0.363361935 */,
5790 /* 5423 */ 0x05d0b24d | (18 << 27) /* 0.363451292 */,
5791
5792 /* 5424 */ 0x05d11001 | (18 << 27) /* 0.363540655 */,
5793 /* 5425 */ 0x05d16db7 | (18 << 27) /* 0.363630024 */,
5794 /* 5426 */ 0x05d1cb6e | (18 << 27) /* 0.363719398 */,
5795 /* 5427 */ 0x05d22927 | (18 << 27) /* 0.363808778 */,
5796 /* 5428 */ 0x05d286e1 | (18 << 27) /* 0.363898163 */,
5797 /* 5429 */ 0x05d2e49d | (18 << 27) /* 0.363987554 */,
5798 /* 5430 */ 0x05d3425a | (18 << 27) /* 0.364076950 */,
5799 /* 5431 */ 0x05d3a018 | (18 << 27) /* 0.364166352 */,
5800 /* 5432 */ 0x05d3fdd8 | (18 << 27) /* 0.364255759 */,
5801 /* 5433 */ 0x05d45b9a | (18 << 27) /* 0.364345171 */,
5802 /* 5434 */ 0x05d4b95d | (18 << 27) /* 0.364434589 */,
5803 /* 5435 */ 0x05d51721 | (18 << 27) /* 0.364524013 */,
5804 /* 5436 */ 0x05d574e7 | (18 << 27) /* 0.364613442 */,
5805 /* 5437 */ 0x05d5d2af | (18 << 27) /* 0.364702877 */,
5806 /* 5438 */ 0x05d63078 | (18 << 27) /* 0.364792317 */,
5807 /* 5439 */ 0x05d68e42 | (18 << 27) /* 0.364881762 */,
5808
5809 /* 5440 */ 0x05d6ec0e | (18 << 27) /* 0.364971213 */,
5810 /* 5441 */ 0x05d749db | (18 << 27) /* 0.365060669 */,
5811 /* 5442 */ 0x05d7a7aa | (18 << 27) /* 0.365150131 */,
5812 /* 5443 */ 0x05d8057a | (18 << 27) /* 0.365239599 */,
5813 /* 5444 */ 0x05d8634c | (18 << 27) /* 0.365329072 */,
5814 /* 5445 */ 0x05d8c11f | (18 << 27) /* 0.365418550 */,
5815 /* 5446 */ 0x05d91ef4 | (18 << 27) /* 0.365508034 */,
5816 /* 5447 */ 0x05d97cca | (18 << 27) /* 0.365597523 */,
5817 /* 5448 */ 0x05d9daa1 | (18 << 27) /* 0.365687018 */,
5818 /* 5449 */ 0x05da387a | (18 << 27) /* 0.365776518 */,
5819 /* 5450 */ 0x05da9655 | (18 << 27) /* 0.365866024 */,
5820 /* 5451 */ 0x05daf431 | (18 << 27) /* 0.365955536 */,
5821 /* 5452 */ 0x05db520e | (18 << 27) /* 0.366045052 */,
5822 /* 5453 */ 0x05dbafed | (18 << 27) /* 0.366134574 */,
5823 /* 5454 */ 0x05dc0dce | (18 << 27) /* 0.366224102 */,
5824 /* 5455 */ 0x05dc6baf | (18 << 27) /* 0.366313635 */,
5825
5826 /* 5456 */ 0x05dcc993 | (18 << 27) /* 0.366403174 */,
5827 /* 5457 */ 0x05dd2778 | (18 << 27) /* 0.366492718 */,
5828 /* 5458 */ 0x05dd855e | (18 << 27) /* 0.366582267 */,
5829 /* 5459 */ 0x05dde346 | (18 << 27) /* 0.366671822 */,
5830 /* 5460 */ 0x05de412f | (18 << 27) /* 0.366761383 */,
5831 /* 5461 */ 0x05de9f1a | (18 << 27) /* 0.366850949 */,
5832 /* 5462 */ 0x05defd06 | (18 << 27) /* 0.366940520 */,
5833 /* 5463 */ 0x05df5af3 | (18 << 27) /* 0.367030097 */,
5834 /* 5464 */ 0x05dfb8e2 | (18 << 27) /* 0.367119680 */,
5835 /* 5465 */ 0x05e016d3 | (18 << 27) /* 0.367209267 */,
5836 /* 5466 */ 0x05e074c5 | (18 << 27) /* 0.367298861 */,
5837 /* 5467 */ 0x05e0d2b8 | (18 << 27) /* 0.367388459 */,
5838 /* 5468 */ 0x05e130ad | (18 << 27) /* 0.367478064 */,
5839 /* 5469 */ 0x05e18ea4 | (18 << 27) /* 0.367567673 */,
5840 /* 5470 */ 0x05e1ec9c | (18 << 27) /* 0.367657288 */,
5841 /* 5471 */ 0x05e24a95 | (18 << 27) /* 0.367746909 */,
5842
5843 /* 5472 */ 0x05e2a890 | (18 << 27) /* 0.367836535 */,
5844 /* 5473 */ 0x05e3068c | (18 << 27) /* 0.367926167 */,
5845 /* 5474 */ 0x05e3648a | (18 << 27) /* 0.368015804 */,
5846 /* 5475 */ 0x05e3c289 | (18 << 27) /* 0.368105446 */,
5847 /* 5476 */ 0x05e4208a | (18 << 27) /* 0.368195094 */,
5848 /* 5477 */ 0x05e47e8c | (18 << 27) /* 0.368284747 */,
5849 /* 5478 */ 0x05e4dc8f | (18 << 27) /* 0.368374406 */,
5850 /* 5479 */ 0x05e53a94 | (18 << 27) /* 0.368464070 */,
5851 /* 5480 */ 0x05e5989b | (18 << 27) /* 0.368553740 */,
5852 /* 5481 */ 0x05e5f6a3 | (18 << 27) /* 0.368643415 */,
5853 /* 5482 */ 0x05e654ac | (18 << 27) /* 0.368733096 */,
5854 /* 5483 */ 0x05e6b2b7 | (18 << 27) /* 0.368822782 */,
5855 /* 5484 */ 0x05e710c4 | (18 << 27) /* 0.368912473 */,
5856 /* 5485 */ 0x05e76ed2 | (18 << 27) /* 0.369002170 */,
5857 /* 5486 */ 0x05e7cce1 | (18 << 27) /* 0.369091873 */,
5858 /* 5487 */ 0x05e82af2 | (18 << 27) /* 0.369181581 */,
5859
5860 /* 5488 */ 0x05e88904 | (18 << 27) /* 0.369271294 */,
5861 /* 5489 */ 0x05e8e718 | (18 << 27) /* 0.369361013 */,
5862 /* 5490 */ 0x05e9452d | (18 << 27) /* 0.369450737 */,
5863 /* 5491 */ 0x05e9a343 | (18 << 27) /* 0.369540467 */,
5864 /* 5492 */ 0x05ea015c | (18 << 27) /* 0.369630202 */,
5865 /* 5493 */ 0x05ea5f75 | (18 << 27) /* 0.369719942 */,
5866 /* 5494 */ 0x05eabd90 | (18 << 27) /* 0.369809688 */,
5867 /* 5495 */ 0x05eb1bad | (18 << 27) /* 0.369899440 */,
5868 /* 5496 */ 0x05eb79cb | (18 << 27) /* 0.369989197 */,
5869 /* 5497 */ 0x05ebd7ea | (18 << 27) /* 0.370078959 */,
5870 /* 5498 */ 0x05ec360b | (18 << 27) /* 0.370168727 */,
5871 /* 5499 */ 0x05ec942d | (18 << 27) /* 0.370258500 */,
5872 /* 5500 */ 0x05ecf251 | (18 << 27) /* 0.370348279 */,
5873 /* 5501 */ 0x05ed5076 | (18 << 27) /* 0.370438063 */,
5874 /* 5502 */ 0x05edae9d | (18 << 27) /* 0.370527853 */,
5875 /* 5503 */ 0x05ee0cc5 | (18 << 27) /* 0.370617648 */,
5876
5877 /* 5504 */ 0x05ee6aef | (18 << 27) /* 0.370707448 */,
5878 /* 5505 */ 0x05eec91a | (18 << 27) /* 0.370797254 */,
5879 /* 5506 */ 0x05ef2746 | (18 << 27) /* 0.370887065 */,
5880 /* 5507 */ 0x05ef8574 | (18 << 27) /* 0.370976882 */,
5881 /* 5508 */ 0x05efe3a4 | (18 << 27) /* 0.371066704 */,
5882 /* 5509 */ 0x05f041d5 | (18 << 27) /* 0.371156532 */,
5883 /* 5510 */ 0x05f0a007 | (18 << 27) /* 0.371246365 */,
5884 /* 5511 */ 0x05f0fe3b | (18 << 27) /* 0.371336203 */,
5885 /* 5512 */ 0x05f15c70 | (18 << 27) /* 0.371426047 */,
5886 /* 5513 */ 0x05f1baa7 | (18 << 27) /* 0.371515897 */,
5887 /* 5514 */ 0x05f218df | (18 << 27) /* 0.371605751 */,
5888 /* 5515 */ 0x05f27719 | (18 << 27) /* 0.371695612 */,
5889 /* 5516 */ 0x05f2d554 | (18 << 27) /* 0.371785477 */,
5890 /* 5517 */ 0x05f33390 | (18 << 27) /* 0.371875348 */,
5891 /* 5518 */ 0x05f391cf | (18 << 27) /* 0.371965225 */,
5892 /* 5519 */ 0x05f3f00e | (18 << 27) /* 0.372055107 */,
5893
5894 /* 5520 */ 0x05f44e4f | (18 << 27) /* 0.372144994 */,
5895 /* 5521 */ 0x05f4ac91 | (18 << 27) /* 0.372234887 */,
5896 /* 5522 */ 0x05f50ad5 | (18 << 27) /* 0.372324785 */,
5897 /* 5523 */ 0x05f5691b | (18 << 27) /* 0.372414689 */,
5898 /* 5524 */ 0x05f5c761 | (18 << 27) /* 0.372504598 */,
5899 /* 5525 */ 0x05f625aa | (18 << 27) /* 0.372594513 */,
5900 /* 5526 */ 0x05f683f3 | (18 << 27) /* 0.372684433 */,
5901 /* 5527 */ 0x05f6e23f | (18 << 27) /* 0.372774358 */,
5902 /* 5528 */ 0x05f7408b | (18 << 27) /* 0.372864289 */,
5903 /* 5529 */ 0x05f79ed9 | (18 << 27) /* 0.372954225 */,
5904 /* 5530 */ 0x05f7fd29 | (18 << 27) /* 0.373044167 */,
5905 /* 5531 */ 0x05f85b7a | (18 << 27) /* 0.373134114 */,
5906 /* 5532 */ 0x05f8b9cc | (18 << 27) /* 0.373224066 */,
5907 /* 5533 */ 0x05f91820 | (18 << 27) /* 0.373314024 */,
5908 /* 5534 */ 0x05f97675 | (18 << 27) /* 0.373403987 */,
5909 /* 5535 */ 0x05f9d4cc | (18 << 27) /* 0.373493956 */,
5910
5911 /* 5536 */ 0x05fa3324 | (18 << 27) /* 0.373583930 */,
5912 /* 5537 */ 0x05fa917e | (18 << 27) /* 0.373673910 */,
5913 /* 5538 */ 0x05faefd9 | (18 << 27) /* 0.373763895 */,
5914 /* 5539 */ 0x05fb4e36 | (18 << 27) /* 0.373853885 */,
5915 /* 5540 */ 0x05fbac94 | (18 << 27) /* 0.373943881 */,
5916 /* 5541 */ 0x05fc0af3 | (18 << 27) /* 0.374033882 */,
5917 /* 5542 */ 0x05fc6954 | (18 << 27) /* 0.374123889 */,
5918 /* 5543 */ 0x05fcc7b7 | (18 << 27) /* 0.374213901 */,
5919 /* 5544 */ 0x05fd261b | (18 << 27) /* 0.374303918 */,
5920 /* 5545 */ 0x05fd8480 | (18 << 27) /* 0.374393941 */,
5921 /* 5546 */ 0x05fde2e7 | (18 << 27) /* 0.374483970 */,
5922 /* 5547 */ 0x05fe414f | (18 << 27) /* 0.374574003 */,
5923 /* 5548 */ 0x05fe9fb9 | (18 << 27) /* 0.374664042 */,
5924 /* 5549 */ 0x05fefe24 | (18 << 27) /* 0.374754087 */,
5925 /* 5550 */ 0x05ff5c91 | (18 << 27) /* 0.374844137 */,
5926 /* 5551 */ 0x05ffbaff | (18 << 27) /* 0.374934192 */,
5927
5928 /* 5552 */ 0x0600196e | (18 << 27) /* 0.375024253 */,
5929 /* 5553 */ 0x060077df | (18 << 27) /* 0.375114319 */,
5930 /* 5554 */ 0x0600d651 | (18 << 27) /* 0.375204391 */,
5931 /* 5555 */ 0x060134c5 | (18 << 27) /* 0.375294468 */,
5932 /* 5556 */ 0x0601933b | (18 << 27) /* 0.375384550 */,
5933 /* 5557 */ 0x0601f1b1 | (18 << 27) /* 0.375474638 */,
5934 /* 5558 */ 0x0602502a | (18 << 27) /* 0.375564731 */,
5935 /* 5559 */ 0x0602aea3 | (18 << 27) /* 0.375654830 */,
5936 /* 5560 */ 0x06030d1e | (18 << 27) /* 0.375744934 */,
5937 /* 5561 */ 0x06036b9b | (18 << 27) /* 0.375835043 */,
5938 /* 5562 */ 0x0603ca19 | (18 << 27) /* 0.375925158 */,
5939 /* 5563 */ 0x06042898 | (18 << 27) /* 0.376015278 */,
5940 /* 5564 */ 0x06048719 | (18 << 27) /* 0.376105404 */,
5941 /* 5565 */ 0x0604e59c | (18 << 27) /* 0.376195535 */,
5942 /* 5566 */ 0x0605441f | (18 << 27) /* 0.376285671 */,
5943 /* 5567 */ 0x0605a2a5 | (18 << 27) /* 0.376375813 */,
5944
5945 /* 5568 */ 0x0606012b | (18 << 27) /* 0.376465960 */,
5946 /* 5569 */ 0x06065fb4 | (18 << 27) /* 0.376556113 */,
5947 /* 5570 */ 0x0606be3d | (18 << 27) /* 0.376646271 */,
5948 /* 5571 */ 0x06071cc8 | (18 << 27) /* 0.376736434 */,
5949 /* 5572 */ 0x06077b55 | (18 << 27) /* 0.376826603 */,
5950 /* 5573 */ 0x0607d9e3 | (18 << 27) /* 0.376916777 */,
5951 /* 5574 */ 0x06083872 | (18 << 27) /* 0.377006957 */,
5952 /* 5575 */ 0x06089703 | (18 << 27) /* 0.377097141 */,
5953 /* 5576 */ 0x0608f595 | (18 << 27) /* 0.377187332 */,
5954 /* 5577 */ 0x06095429 | (18 << 27) /* 0.377277528 */,
5955 /* 5578 */ 0x0609b2be | (18 << 27) /* 0.377367729 */,
5956 /* 5579 */ 0x060a1155 | (18 << 27) /* 0.377457935 */,
5957 /* 5580 */ 0x060a6fed | (18 << 27) /* 0.377548147 */,
5958 /* 5581 */ 0x060ace86 | (18 << 27) /* 0.377638364 */,
5959 /* 5582 */ 0x060b2d21 | (18 << 27) /* 0.377728587 */,
5960 /* 5583 */ 0x060b8bbe | (18 << 27) /* 0.377818815 */,
5961
5962 /* 5584 */ 0x060bea5c | (18 << 27) /* 0.377909049 */,
5963 /* 5585 */ 0x060c48fb | (18 << 27) /* 0.377999288 */,
5964 /* 5586 */ 0x060ca79c | (18 << 27) /* 0.378089532 */,
5965 /* 5587 */ 0x060d063e | (18 << 27) /* 0.378179781 */,
5966 /* 5588 */ 0x060d64e1 | (18 << 27) /* 0.378270036 */,
5967 /* 5589 */ 0x060dc387 | (18 << 27) /* 0.378360297 */,
5968 /* 5590 */ 0x060e222d | (18 << 27) /* 0.378450563 */,
5969 /* 5591 */ 0x060e80d5 | (18 << 27) /* 0.378540834 */,
5970 /* 5592 */ 0x060edf7f | (18 << 27) /* 0.378631110 */,
5971 /* 5593 */ 0x060f3e29 | (18 << 27) /* 0.378721392 */,
5972 /* 5594 */ 0x060f9cd6 | (18 << 27) /* 0.378811680 */,
5973 /* 5595 */ 0x060ffb83 | (18 << 27) /* 0.378901972 */,
5974 /* 5596 */ 0x06105a33 | (18 << 27) /* 0.378992270 */,
5975 /* 5597 */ 0x0610b8e3 | (18 << 27) /* 0.379082574 */,
5976 /* 5598 */ 0x06111795 | (18 << 27) /* 0.379172883 */,
5977 /* 5599 */ 0x06117649 | (18 << 27) /* 0.379263197 */,
5978
5979 /* 5600 */ 0x0611d4fe | (18 << 27) /* 0.379353516 */,
5980 /* 5601 */ 0x061233b4 | (18 << 27) /* 0.379443841 */,
5981 /* 5602 */ 0x0612926c | (18 << 27) /* 0.379534172 */,
5982 /* 5603 */ 0x0612f125 | (18 << 27) /* 0.379624507 */,
5983 /* 5604 */ 0x06134fe0 | (18 << 27) /* 0.379714848 */,
5984 /* 5605 */ 0x0613ae9c | (18 << 27) /* 0.379805195 */,
5985 /* 5606 */ 0x06140d5a | (18 << 27) /* 0.379895547 */,
5986 /* 5607 */ 0x06146c19 | (18 << 27) /* 0.379985904 */,
5987 /* 5608 */ 0x0614cada | (18 << 27) /* 0.380076266 */,
5988 /* 5609 */ 0x0615299c | (18 << 27) /* 0.380166634 */,
5989 /* 5610 */ 0x0615885f | (18 << 27) /* 0.380257008 */,
5990 /* 5611 */ 0x0615e724 | (18 << 27) /* 0.380347386 */,
5991 /* 5612 */ 0x061645ea | (18 << 27) /* 0.380437770 */,
5992 /* 5613 */ 0x0616a4b2 | (18 << 27) /* 0.380528160 */,
5993 /* 5614 */ 0x0617037b | (18 << 27) /* 0.380618555 */,
5994 /* 5615 */ 0x06176246 | (18 << 27) /* 0.380708955 */,
5995
5996 /* 5616 */ 0x0617c112 | (18 << 27) /* 0.380799360 */,
5997 /* 5617 */ 0x06181fdf | (18 << 27) /* 0.380889771 */,
5998 /* 5618 */ 0x06187eae | (18 << 27) /* 0.380980187 */,
5999 /* 5619 */ 0x0618dd7e | (18 << 27) /* 0.381070609 */,
6000 /* 5620 */ 0x06193c50 | (18 << 27) /* 0.381161036 */,
6001 /* 5621 */ 0x06199b24 | (18 << 27) /* 0.381251468 */,
6002 /* 5622 */ 0x0619f9f8 | (18 << 27) /* 0.381341906 */,
6003 /* 5623 */ 0x061a58ce | (18 << 27) /* 0.381432349 */,
6004 /* 5624 */ 0x061ab7a6 | (18 << 27) /* 0.381522798 */,
6005 /* 5625 */ 0x061b167f | (18 << 27) /* 0.381613251 */,
6006 /* 5626 */ 0x061b7559 | (18 << 27) /* 0.381703711 */,
6007 /* 5627 */ 0x061bd435 | (18 << 27) /* 0.381794175 */,
6008 /* 5628 */ 0x061c3313 | (18 << 27) /* 0.381884645 */,
6009 /* 5629 */ 0x061c91f1 | (18 << 27) /* 0.381975120 */,
6010 /* 5630 */ 0x061cf0d2 | (18 << 27) /* 0.382065601 */,
6011 /* 5631 */ 0x061d4fb3 | (18 << 27) /* 0.382156087 */,
6012
6013 /* 5632 */ 0x061dae96 | (18 << 27) /* 0.382246578 */,
6014 /* 5633 */ 0x061e0d7b | (18 << 27) /* 0.382337075 */,
6015 /* 5634 */ 0x061e6c61 | (18 << 27) /* 0.382427577 */,
6016 /* 5635 */ 0x061ecb48 | (18 << 27) /* 0.382518084 */,
6017 /* 5636 */ 0x061f2a31 | (18 << 27) /* 0.382608597 */,
6018 /* 5637 */ 0x061f891b | (18 << 27) /* 0.382699115 */,
6019 /* 5638 */ 0x061fe807 | (18 << 27) /* 0.382789638 */,
6020 /* 5639 */ 0x062046f4 | (18 << 27) /* 0.382880167 */,
6021 /* 5640 */ 0x0620a5e3 | (18 << 27) /* 0.382970701 */,
6022 /* 5641 */ 0x062104d3 | (18 << 27) /* 0.383061241 */,
6023 /* 5642 */ 0x062163c4 | (18 << 27) /* 0.383151786 */,
6024 /* 5643 */ 0x0621c2b7 | (18 << 27) /* 0.383242336 */,
6025 /* 5644 */ 0x062221ab | (18 << 27) /* 0.383332891 */,
6026 /* 5645 */ 0x062280a1 | (18 << 27) /* 0.383423452 */,
6027 /* 5646 */ 0x0622df98 | (18 << 27) /* 0.383514018 */,
6028 /* 5647 */ 0x06233e91 | (18 << 27) /* 0.383604590 */,
6029
6030 /* 5648 */ 0x06239d8b | (18 << 27) /* 0.383695167 */,
6031 /* 5649 */ 0x0623fc86 | (18 << 27) /* 0.383785749 */,
6032 /* 5650 */ 0x06245b83 | (18 << 27) /* 0.383876337 */,
6033 /* 5651 */ 0x0624ba82 | (18 << 27) /* 0.383966930 */,
6034 /* 5652 */ 0x06251981 | (18 << 27) /* 0.384057528 */,
6035 /* 5653 */ 0x06257883 | (18 << 27) /* 0.384148132 */,
6036 /* 5654 */ 0x0625d785 | (18 << 27) /* 0.384238741 */,
6037 /* 5655 */ 0x06263689 | (18 << 27) /* 0.384329355 */,
6038 /* 5656 */ 0x0626958f | (18 << 27) /* 0.384419975 */,
6039 /* 5657 */ 0x0626f496 | (18 << 27) /* 0.384510600 */,
6040 /* 5658 */ 0x0627539e | (18 << 27) /* 0.384601230 */,
6041 /* 5659 */ 0x0627b2a8 | (18 << 27) /* 0.384691866 */,
6042 /* 5660 */ 0x062811b3 | (18 << 27) /* 0.384782507 */,
6043 /* 5661 */ 0x062870c0 | (18 << 27) /* 0.384873153 */,
6044 /* 5662 */ 0x0628cfce | (18 << 27) /* 0.384963805 */,
6045 /* 5663 */ 0x06292ede | (18 << 27) /* 0.385054462 */,
6046
6047 /* 5664 */ 0x06298def | (18 << 27) /* 0.385145124 */,
6048 /* 5665 */ 0x0629ed01 | (18 << 27) /* 0.385235792 */,
6049 /* 5666 */ 0x062a4c15 | (18 << 27) /* 0.385326465 */,
6050 /* 5667 */ 0x062aab2a | (18 << 27) /* 0.385417143 */,
6051 /* 5668 */ 0x062b0a41 | (18 << 27) /* 0.385507827 */,
6052 /* 5669 */ 0x062b6959 | (18 << 27) /* 0.385598516 */,
6053 /* 5670 */ 0x062bc873 | (18 << 27) /* 0.385689211 */,
6054 /* 5671 */ 0x062c278e | (18 << 27) /* 0.385779910 */,
6055 /* 5672 */ 0x062c86aa | (18 << 27) /* 0.385870615 */,
6056 /* 5673 */ 0x062ce5c8 | (18 << 27) /* 0.385961326 */,
6057 /* 5674 */ 0x062d44e8 | (18 << 27) /* 0.386052041 */,
6058 /* 5675 */ 0x062da408 | (18 << 27) /* 0.386142762 */,
6059 /* 5676 */ 0x062e032a | (18 << 27) /* 0.386233489 */,
6060 /* 5677 */ 0x062e624e | (18 << 27) /* 0.386324221 */,
6061 /* 5678 */ 0x062ec173 | (18 << 27) /* 0.386414958 */,
6062 /* 5679 */ 0x062f209a | (18 << 27) /* 0.386505700 */,
6063
6064 /* 5680 */ 0x062f7fc1 | (18 << 27) /* 0.386596448 */,
6065 /* 5681 */ 0x062fdeeb | (18 << 27) /* 0.386687201 */,
6066 /* 5682 */ 0x06303e16 | (18 << 27) /* 0.386777959 */,
6067 /* 5683 */ 0x06309d42 | (18 << 27) /* 0.386868723 */,
6068 /* 5684 */ 0x0630fc6f | (18 << 27) /* 0.386959492 */,
6069 /* 5685 */ 0x06315b9e | (18 << 27) /* 0.387050266 */,
6070 /* 5686 */ 0x0631bacf | (18 << 27) /* 0.387141045 */,
6071 /* 5687 */ 0x06321a01 | (18 << 27) /* 0.387231830 */,
6072 /* 5688 */ 0x06327934 | (18 << 27) /* 0.387322621 */,
6073 /* 5689 */ 0x0632d869 | (18 << 27) /* 0.387413416 */,
6074 /* 5690 */ 0x0633379f | (18 << 27) /* 0.387504217 */,
6075 /* 5691 */ 0x063396d7 | (18 << 27) /* 0.387595023 */,
6076 /* 5692 */ 0x0633f610 | (18 << 27) /* 0.387685835 */,
6077 /* 5693 */ 0x0634554a | (18 << 27) /* 0.387776652 */,
6078 /* 5694 */ 0x0634b486 | (18 << 27) /* 0.387867474 */,
6079 /* 5695 */ 0x063513c3 | (18 << 27) /* 0.387958301 */,
6080
6081 /* 5696 */ 0x06357302 | (18 << 27) /* 0.388049134 */,
6082 /* 5697 */ 0x0635d242 | (18 << 27) /* 0.388139972 */,
6083 /* 5698 */ 0x06363184 | (18 << 27) /* 0.388230816 */,
6084 /* 5699 */ 0x063690c7 | (18 << 27) /* 0.388321665 */,
6085 /* 5700 */ 0x0636f00b | (18 << 27) /* 0.388412519 */,
6086 /* 5701 */ 0x06374f51 | (18 << 27) /* 0.388503378 */,
6087 /* 5702 */ 0x0637ae99 | (18 << 27) /* 0.388594243 */,
6088 /* 5703 */ 0x06380de1 | (18 << 27) /* 0.388685113 */,
6089 /* 5704 */ 0x06386d2b | (18 << 27) /* 0.388775988 */,
6090 /* 5705 */ 0x0638cc77 | (18 << 27) /* 0.388866869 */,
6091 /* 5706 */ 0x06392bc4 | (18 << 27) /* 0.388957755 */,
6092 /* 5707 */ 0x06398b12 | (18 << 27) /* 0.389048646 */,
6093 /* 5708 */ 0x0639ea62 | (18 << 27) /* 0.389139542 */,
6094 /* 5709 */ 0x063a49b4 | (18 << 27) /* 0.389230444 */,
6095 /* 5710 */ 0x063aa906 | (18 << 27) /* 0.389321352 */,
6096 /* 5711 */ 0x063b085a | (18 << 27) /* 0.389412264 */,
6097
6098 /* 5712 */ 0x063b67b0 | (18 << 27) /* 0.389503182 */,
6099 /* 5713 */ 0x063bc707 | (18 << 27) /* 0.389594105 */,
6100 /* 5714 */ 0x063c265f | (18 << 27) /* 0.389685033 */,
6101 /* 5715 */ 0x063c85b9 | (18 << 27) /* 0.389775967 */,
6102 /* 5716 */ 0x063ce514 | (18 << 27) /* 0.389866906 */,
6103 /* 5717 */ 0x063d4471 | (18 << 27) /* 0.389957850 */,
6104 /* 5718 */ 0x063da3cf | (18 << 27) /* 0.390048800 */,
6105 /* 5719 */ 0x063e032f | (18 << 27) /* 0.390139755 */,
6106 /* 5720 */ 0x063e6290 | (18 << 27) /* 0.390230715 */,
6107 /* 5721 */ 0x063ec1f2 | (18 << 27) /* 0.390321681 */,
6108 /* 5722 */ 0x063f2156 | (18 << 27) /* 0.390412651 */,
6109 /* 5723 */ 0x063f80bb | (18 << 27) /* 0.390503628 */,
6110 /* 5724 */ 0x063fe022 | (18 << 27) /* 0.390594609 */,
6111 /* 5725 */ 0x06403f8a | (18 << 27) /* 0.390685596 */,
6112 /* 5726 */ 0x06409ef3 | (18 << 27) /* 0.390776588 */,
6113 /* 5727 */ 0x0640fe5e | (18 << 27) /* 0.390867585 */,
6114
6115 /* 5728 */ 0x06415dcb | (18 << 27) /* 0.390958588 */,
6116 /* 5729 */ 0x0641bd38 | (18 << 27) /* 0.391049596 */,
6117 /* 5730 */ 0x06421ca7 | (18 << 27) /* 0.391140609 */,
6118 /* 5731 */ 0x06427c18 | (18 << 27) /* 0.391231627 */,
6119 /* 5732 */ 0x0642db8a | (18 << 27) /* 0.391322651 */,
6120 /* 5733 */ 0x06433afd | (18 << 27) /* 0.391413680 */,
6121 /* 5734 */ 0x06439a72 | (18 << 27) /* 0.391504714 */,
6122 /* 5735 */ 0x0643f9e9 | (18 << 27) /* 0.391595754 */,
6123 /* 5736 */ 0x06445960 | (18 << 27) /* 0.391686799 */,
6124 /* 5737 */ 0x0644b8d9 | (18 << 27) /* 0.391777849 */,
6125 /* 5738 */ 0x06451854 | (18 << 27) /* 0.391868905 */,
6126 /* 5739 */ 0x064577d0 | (18 << 27) /* 0.391959966 */,
6127 /* 5740 */ 0x0645d74d | (18 << 27) /* 0.392051032 */,
6128 /* 5741 */ 0x064636cc | (18 << 27) /* 0.392142103 */,
6129 /* 5742 */ 0x0646964c | (18 << 27) /* 0.392233180 */,
6130 /* 5743 */ 0x0646f5ce | (18 << 27) /* 0.392324262 */,
6131
6132 /* 5744 */ 0x06475551 | (18 << 27) /* 0.392415349 */,
6133 /* 5745 */ 0x0647b4d5 | (18 << 27) /* 0.392506442 */,
6134 /* 5746 */ 0x0648145b | (18 << 27) /* 0.392597540 */,
6135 /* 5747 */ 0x064873e3 | (18 << 27) /* 0.392688643 */,
6136 /* 5748 */ 0x0648d36b | (18 << 27) /* 0.392779751 */,
6137 /* 5749 */ 0x064932f6 | (18 << 27) /* 0.392870865 */,
6138 /* 5750 */ 0x06499281 | (18 << 27) /* 0.392961984 */,
6139 /* 5751 */ 0x0649f20e | (18 << 27) /* 0.393053108 */,
6140 /* 5752 */ 0x064a519c | (18 << 27) /* 0.393144238 */,
6141 /* 5753 */ 0x064ab12c | (18 << 27) /* 0.393235372 */,
6142 /* 5754 */ 0x064b10be | (18 << 27) /* 0.393326513 */,
6143 /* 5755 */ 0x064b7050 | (18 << 27) /* 0.393417658 */,
6144 /* 5756 */ 0x064bcfe4 | (18 << 27) /* 0.393508809 */,
6145 /* 5757 */ 0x064c2f7a | (18 << 27) /* 0.393599965 */,
6146 /* 5758 */ 0x064c8f11 | (18 << 27) /* 0.393691126 */,
6147 /* 5759 */ 0x064ceea9 | (18 << 27) /* 0.393782292 */,
6148
6149 /* 5760 */ 0x064d4e43 | (18 << 27) /* 0.393873464 */,
6150 /* 5761 */ 0x064dadde | (18 << 27) /* 0.393964641 */,
6151 /* 5762 */ 0x064e0d7a | (18 << 27) /* 0.394055823 */,
6152 /* 5763 */ 0x064e6d18 | (18 << 27) /* 0.394147011 */,
6153 /* 5764 */ 0x064eccb8 | (18 << 27) /* 0.394238204 */,
6154 /* 5765 */ 0x064f2c59 | (18 << 27) /* 0.394329402 */,
6155 /* 5766 */ 0x064f8bfb | (18 << 27) /* 0.394420605 */,
6156 /* 5767 */ 0x064feb9e | (18 << 27) /* 0.394511814 */,
6157 /* 5768 */ 0x06504b44 | (18 << 27) /* 0.394603028 */,
6158 /* 5769 */ 0x0650aaea | (18 << 27) /* 0.394694247 */,
6159 /* 5770 */ 0x06510a92 | (18 << 27) /* 0.394785472 */,
6160 /* 5771 */ 0x06516a3b | (18 << 27) /* 0.394876702 */,
6161 /* 5772 */ 0x0651c9e6 | (18 << 27) /* 0.394967937 */,
6162 /* 5773 */ 0x06522992 | (18 << 27) /* 0.395059177 */,
6163 /* 5774 */ 0x06528940 | (18 << 27) /* 0.395150423 */,
6164 /* 5775 */ 0x0652e8ef | (18 << 27) /* 0.395241673 */,
6165
6166 /* 5776 */ 0x0653489f | (18 << 27) /* 0.395332930 */,
6167 /* 5777 */ 0x0653a851 | (18 << 27) /* 0.395424191 */,
6168 /* 5778 */ 0x06540804 | (18 << 27) /* 0.395515458 */,
6169 /* 5779 */ 0x065467b9 | (18 << 27) /* 0.395606730 */,
6170 /* 5780 */ 0x0654c76f | (18 << 27) /* 0.395698007 */,
6171 /* 5781 */ 0x06552726 | (18 << 27) /* 0.395789289 */,
6172 /* 5782 */ 0x065586df | (18 << 27) /* 0.395880577 */,
6173 /* 5783 */ 0x0655e699 | (18 << 27) /* 0.395971870 */,
6174 /* 5784 */ 0x06564655 | (18 << 27) /* 0.396063168 */,
6175 /* 5785 */ 0x0656a612 | (18 << 27) /* 0.396154472 */,
6176 /* 5786 */ 0x065705d0 | (18 << 27) /* 0.396245780 */,
6177 /* 5787 */ 0x06576590 | (18 << 27) /* 0.396337094 */,
6178 /* 5788 */ 0x0657c552 | (18 << 27) /* 0.396428414 */,
6179 /* 5789 */ 0x06582514 | (18 << 27) /* 0.396519738 */,
6180 /* 5790 */ 0x065884d9 | (18 << 27) /* 0.396611068 */,
6181 /* 5791 */ 0x0658e49e | (18 << 27) /* 0.396702403 */,
6182
6183 /* 5792 */ 0x06594465 | (18 << 27) /* 0.396793743 */,
6184 /* 5793 */ 0x0659a42e | (18 << 27) /* 0.396885089 */,
6185 /* 5794 */ 0x065a03f7 | (18 << 27) /* 0.396976440 */,
6186 /* 5795 */ 0x065a63c3 | (18 << 27) /* 0.397067796 */,
6187 /* 5796 */ 0x065ac38f | (18 << 27) /* 0.397159157 */,
6188 /* 5797 */ 0x065b235d | (18 << 27) /* 0.397250524 */,
6189 /* 5798 */ 0x065b832d | (18 << 27) /* 0.397341896 */,
6190 /* 5799 */ 0x065be2fe | (18 << 27) /* 0.397433273 */,
6191 /* 5800 */ 0x065c42d0 | (18 << 27) /* 0.397524655 */,
6192 /* 5801 */ 0x065ca2a3 | (18 << 27) /* 0.397616043 */,
6193 /* 5802 */ 0x065d0279 | (18 << 27) /* 0.397707436 */,
6194 /* 5803 */ 0x065d624f | (18 << 27) /* 0.397798834 */,
6195 /* 5804 */ 0x065dc227 | (18 << 27) /* 0.397890237 */,
6196 /* 5805 */ 0x065e2200 | (18 << 27) /* 0.397981646 */,
6197 /* 5806 */ 0x065e81db | (18 << 27) /* 0.398073059 */,
6198 /* 5807 */ 0x065ee1b7 | (18 << 27) /* 0.398164479 */,
6199
6200 /* 5808 */ 0x065f4195 | (18 << 27) /* 0.398255903 */,
6201 /* 5809 */ 0x065fa174 | (18 << 27) /* 0.398347333 */,
6202 /* 5810 */ 0x06600154 | (18 << 27) /* 0.398438767 */,
6203 /* 5811 */ 0x06606136 | (18 << 27) /* 0.398530207 */,
6204 /* 5812 */ 0x0660c119 | (18 << 27) /* 0.398621653 */,
6205 /* 5813 */ 0x066120fd | (18 << 27) /* 0.398713103 */,
6206 /* 5814 */ 0x066180e3 | (18 << 27) /* 0.398804559 */,
6207 /* 5815 */ 0x0661e0cb | (18 << 27) /* 0.398896020 */,
6208 /* 5816 */ 0x066240b4 | (18 << 27) /* 0.398987487 */,
6209 /* 5817 */ 0x0662a09e | (18 << 27) /* 0.399078958 */,
6210 /* 5818 */ 0x06630089 | (18 << 27) /* 0.399170435 */,
6211 /* 5819 */ 0x06636077 | (18 << 27) /* 0.399261917 */,
6212 /* 5820 */ 0x0663c065 | (18 << 27) /* 0.399353404 */,
6213 /* 5821 */ 0x06642055 | (18 << 27) /* 0.399444897 */,
6214 /* 5822 */ 0x06648046 | (18 << 27) /* 0.399536395 */,
6215 /* 5823 */ 0x0664e039 | (18 << 27) /* 0.399627898 */,
6216
6217 /* 5824 */ 0x0665402d | (18 << 27) /* 0.399719406 */,
6218 /* 5825 */ 0x0665a022 | (18 << 27) /* 0.399810919 */,
6219 /* 5826 */ 0x06660019 | (18 << 27) /* 0.399902438 */,
6220 /* 5827 */ 0x06666011 | (18 << 27) /* 0.399993962 */,
6221 /* 5828 */ 0x0666c00b | (18 << 27) /* 0.400085491 */,
6222 /* 5829 */ 0x06672006 | (18 << 27) /* 0.400177026 */,
6223 /* 5830 */ 0x06678003 | (18 << 27) /* 0.400268565 */,
6224 /* 5831 */ 0x0667e000 | (18 << 27) /* 0.400360110 */,
6225 /* 5832 */ 0x06684000 | (18 << 27) /* 0.400451660 */,
6226 /* 5833 */ 0x0668a000 | (18 << 27) /* 0.400543216 */,
6227 /* 5834 */ 0x06690003 | (18 << 27) /* 0.400634776 */,
6228 /* 5835 */ 0x06696006 | (18 << 27) /* 0.400726342 */,
6229 /* 5836 */ 0x0669c00b | (18 << 27) /* 0.400817913 */,
6230 /* 5837 */ 0x066a2011 | (18 << 27) /* 0.400909489 */,
6231 /* 5838 */ 0x066a8019 | (18 << 27) /* 0.401001071 */,
6232 /* 5839 */ 0x066ae022 | (18 << 27) /* 0.401092657 */,
6233
6234 /* 5840 */ 0x066b402d | (18 << 27) /* 0.401184249 */,
6235 /* 5841 */ 0x066ba039 | (18 << 27) /* 0.401275847 */,
6236 /* 5842 */ 0x066c0046 | (18 << 27) /* 0.401367449 */,
6237 /* 5843 */ 0x066c6055 | (18 << 27) /* 0.401459057 */,
6238 /* 5844 */ 0x066cc065 | (18 << 27) /* 0.401550670 */,
6239 /* 5845 */ 0x066d2076 | (18 << 27) /* 0.401642288 */,
6240 /* 5846 */ 0x066d8089 | (18 << 27) /* 0.401733911 */,
6241 /* 5847 */ 0x066de09e | (18 << 27) /* 0.401825540 */,
6242 /* 5848 */ 0x066e40b3 | (18 << 27) /* 0.401917173 */,
6243 /* 5849 */ 0x066ea0cb | (18 << 27) /* 0.402008812 */,
6244 /* 5850 */ 0x066f00e3 | (18 << 27) /* 0.402100457 */,
6245 /* 5851 */ 0x066f60fd | (18 << 27) /* 0.402192106 */,
6246 /* 5852 */ 0x066fc118 | (18 << 27) /* 0.402283761 */,
6247 /* 5853 */ 0x06702135 | (18 << 27) /* 0.402375420 */,
6248 /* 5854 */ 0x06708153 | (18 << 27) /* 0.402467086 */,
6249 /* 5855 */ 0x0670e173 | (18 << 27) /* 0.402558756 */,
6250
6251 /* 5856 */ 0x06714194 | (18 << 27) /* 0.402650431 */,
6252 /* 5857 */ 0x0671a1b6 | (18 << 27) /* 0.402742112 */,
6253 /* 5858 */ 0x067201da | (18 << 27) /* 0.402833798 */,
6254 /* 5859 */ 0x067261ff | (18 << 27) /* 0.402925489 */,
6255 /* 5860 */ 0x0672c226 | (18 << 27) /* 0.403017186 */,
6256 /* 5861 */ 0x0673224e | (18 << 27) /* 0.403108887 */,
6257 /* 5862 */ 0x06738277 | (18 << 27) /* 0.403200594 */,
6258 /* 5863 */ 0x0673e2a2 | (18 << 27) /* 0.403292306 */,
6259 /* 5864 */ 0x067442ce | (18 << 27) /* 0.403384024 */,
6260 /* 5865 */ 0x0674a2fc | (18 << 27) /* 0.403475746 */,
6261 /* 5866 */ 0x0675032b | (18 << 27) /* 0.403567474 */,
6262 /* 5867 */ 0x0675635b | (18 << 27) /* 0.403659207 */,
6263 /* 5868 */ 0x0675c38d | (18 << 27) /* 0.403750945 */,
6264 /* 5869 */ 0x067623c0 | (18 << 27) /* 0.403842688 */,
6265 /* 5870 */ 0x067683f4 | (18 << 27) /* 0.403934437 */,
6266 /* 5871 */ 0x0676e42a | (18 << 27) /* 0.404026190 */,
6267
6268 /* 5872 */ 0x06774462 | (18 << 27) /* 0.404117949 */,
6269 /* 5873 */ 0x0677a49b | (18 << 27) /* 0.404209714 */,
6270 /* 5874 */ 0x067804d5 | (18 << 27) /* 0.404301483 */,
6271 /* 5875 */ 0x06786510 | (18 << 27) /* 0.404393258 */,
6272 /* 5876 */ 0x0678c54d | (18 << 27) /* 0.404485037 */,
6273 /* 5877 */ 0x0679258c | (18 << 27) /* 0.404576822 */,
6274 /* 5878 */ 0x067985cb | (18 << 27) /* 0.404668613 */,
6275 /* 5879 */ 0x0679e60c | (18 << 27) /* 0.404760408 */,
6276 /* 5880 */ 0x067a464f | (18 << 27) /* 0.404852209 */,
6277 /* 5881 */ 0x067aa693 | (18 << 27) /* 0.404944014 */,
6278 /* 5882 */ 0x067b06d8 | (18 << 27) /* 0.405035825 */,
6279 /* 5883 */ 0x067b671f | (18 << 27) /* 0.405127642 */,
6280 /* 5884 */ 0x067bc767 | (18 << 27) /* 0.405219463 */,
6281 /* 5885 */ 0x067c27b1 | (18 << 27) /* 0.405311290 */,
6282 /* 5886 */ 0x067c87fc | (18 << 27) /* 0.405403122 */,
6283 /* 5887 */ 0x067ce848 | (18 << 27) /* 0.405494959 */,
6284
6285 /* 5888 */ 0x067d4896 | (18 << 27) /* 0.405586801 */,
6286 /* 5889 */ 0x067da8e5 | (18 << 27) /* 0.405678648 */,
6287 /* 5890 */ 0x067e0935 | (18 << 27) /* 0.405770501 */,
6288 /* 5891 */ 0x067e6987 | (18 << 27) /* 0.405862359 */,
6289 /* 5892 */ 0x067ec9da | (18 << 27) /* 0.405954222 */,
6290 /* 5893 */ 0x067f2a2f | (18 << 27) /* 0.406046090 */,
6291 /* 5894 */ 0x067f8a85 | (18 << 27) /* 0.406137963 */,
6292 /* 5895 */ 0x067feadd | (18 << 27) /* 0.406229842 */,
6293 /* 5896 */ 0x06804b36 | (18 << 27) /* 0.406321726 */,
6294 /* 5897 */ 0x0680ab90 | (18 << 27) /* 0.406413615 */,
6295 /* 5898 */ 0x06810beb | (18 << 27) /* 0.406505509 */,
6296 /* 5899 */ 0x06816c49 | (18 << 27) /* 0.406597408 */,
6297 /* 5900 */ 0x0681cca7 | (18 << 27) /* 0.406689313 */,
6298 /* 5901 */ 0x06822d07 | (18 << 27) /* 0.406781223 */,
6299 /* 5902 */ 0x06828d68 | (18 << 27) /* 0.406873138 */,
6300 /* 5903 */ 0x0682edcb | (18 << 27) /* 0.406965058 */,
6301
6302 /* 5904 */ 0x06834e2f | (18 << 27) /* 0.407056983 */,
6303 /* 5905 */ 0x0683ae94 | (18 << 27) /* 0.407148914 */,
6304 /* 5906 */ 0x06840efb | (18 << 27) /* 0.407240850 */,
6305 /* 5907 */ 0x06846f63 | (18 << 27) /* 0.407332791 */,
6306 /* 5908 */ 0x0684cfcd | (18 << 27) /* 0.407424737 */,
6307 /* 5909 */ 0x06853038 | (18 << 27) /* 0.407516688 */,
6308 /* 5910 */ 0x068590a4 | (18 << 27) /* 0.407608645 */,
6309 /* 5911 */ 0x0685f112 | (18 << 27) /* 0.407700606 */,
6310 /* 5912 */ 0x06865181 | (18 << 27) /* 0.407792573 */,
6311 /* 5913 */ 0x0686b1f2 | (18 << 27) /* 0.407884545 */,
6312 /* 5914 */ 0x06871264 | (18 << 27) /* 0.407976522 */,
6313 /* 5915 */ 0x068772d7 | (18 << 27) /* 0.408068505 */,
6314 /* 5916 */ 0x0687d34c | (18 << 27) /* 0.408160492 */,
6315 /* 5917 */ 0x068833c2 | (18 << 27) /* 0.408252485 */,
6316 /* 5918 */ 0x06889439 | (18 << 27) /* 0.408344483 */,
6317 /* 5919 */ 0x0688f4b2 | (18 << 27) /* 0.408436486 */,
6318
6319 /* 5920 */ 0x0689552c | (18 << 27) /* 0.408528495 */,
6320 /* 5921 */ 0x0689b5a8 | (18 << 27) /* 0.408620508 */,
6321 /* 5922 */ 0x068a1625 | (18 << 27) /* 0.408712527 */,
6322 /* 5923 */ 0x068a76a4 | (18 << 27) /* 0.408804551 */,
6323 /* 5924 */ 0x068ad724 | (18 << 27) /* 0.408896580 */,
6324 /* 5925 */ 0x068b37a5 | (18 << 27) /* 0.408988614 */,
6325 /* 5926 */ 0x068b9827 | (18 << 27) /* 0.409080653 */,
6326 /* 5927 */ 0x068bf8ac | (18 << 27) /* 0.409172698 */,
6327 /* 5928 */ 0x068c5931 | (18 << 27) /* 0.409264748 */,
6328 /* 5929 */ 0x068cb9b8 | (18 << 27) /* 0.409356803 */,
6329 /* 5930 */ 0x068d1a40 | (18 << 27) /* 0.409448863 */,
6330 /* 5931 */ 0x068d7aca | (18 << 27) /* 0.409540928 */,
6331 /* 5932 */ 0x068ddb54 | (18 << 27) /* 0.409632999 */,
6332 /* 5933 */ 0x068e3be1 | (18 << 27) /* 0.409725074 */,
6333 /* 5934 */ 0x068e9c6f | (18 << 27) /* 0.409817155 */,
6334 /* 5935 */ 0x068efcfe | (18 << 27) /* 0.409909241 */,
6335
6336 /* 5936 */ 0x068f5d8e | (18 << 27) /* 0.410001332 */,
6337 /* 5937 */ 0x068fbe20 | (18 << 27) /* 0.410093428 */,
6338 /* 5938 */ 0x06901eb4 | (18 << 27) /* 0.410185530 */,
6339 /* 5939 */ 0x06907f48 | (18 << 27) /* 0.410277637 */,
6340 /* 5940 */ 0x0690dfde | (18 << 27) /* 0.410369748 */,
6341 /* 5941 */ 0x06914076 | (18 << 27) /* 0.410461865 */,
6342 /* 5942 */ 0x0691a10f | (18 << 27) /* 0.410553988 */,
6343 /* 5943 */ 0x069201a9 | (18 << 27) /* 0.410646115 */,
6344 /* 5944 */ 0x06926245 | (18 << 27) /* 0.410738247 */,
6345 /* 5945 */ 0x0692c2e2 | (18 << 27) /* 0.410830385 */,
6346 /* 5946 */ 0x06932380 | (18 << 27) /* 0.410922528 */,
6347 /* 5947 */ 0x06938420 | (18 << 27) /* 0.411014676 */,
6348 /* 5948 */ 0x0693e4c1 | (18 << 27) /* 0.411106829 */,
6349 /* 5949 */ 0x06944563 | (18 << 27) /* 0.411198987 */,
6350 /* 5950 */ 0x0694a607 | (18 << 27) /* 0.411291151 */,
6351 /* 5951 */ 0x069506ad | (18 << 27) /* 0.411383320 */,
6352
6353 /* 5952 */ 0x06956753 | (18 << 27) /* 0.411475493 */,
6354 /* 5953 */ 0x0695c7fc | (18 << 27) /* 0.411567672 */,
6355 /* 5954 */ 0x069628a5 | (18 << 27) /* 0.411659857 */,
6356 /* 5955 */ 0x06968950 | (18 << 27) /* 0.411752046 */,
6357 /* 5956 */ 0x0696e9fc | (18 << 27) /* 0.411844240 */,
6358 /* 5957 */ 0x06974aaa | (18 << 27) /* 0.411936440 */,
6359 /* 5958 */ 0x0697ab59 | (18 << 27) /* 0.412028645 */,
6360 /* 5959 */ 0x06980c09 | (18 << 27) /* 0.412120855 */,
6361 /* 5960 */ 0x06986cbb | (18 << 27) /* 0.412213070 */,
6362 /* 5961 */ 0x0698cd6e | (18 << 27) /* 0.412305290 */,
6363 /* 5962 */ 0x06992e23 | (18 << 27) /* 0.412397516 */,
6364 /* 5963 */ 0x06998ed9 | (18 << 27) /* 0.412489746 */,
6365 /* 5964 */ 0x0699ef90 | (18 << 27) /* 0.412581982 */,
6366 /* 5965 */ 0x069a5049 | (18 << 27) /* 0.412674223 */,
6367 /* 5966 */ 0x069ab103 | (18 << 27) /* 0.412766469 */,
6368 /* 5967 */ 0x069b11bf | (18 << 27) /* 0.412858720 */,
6369
6370 /* 5968 */ 0x069b727b | (18 << 27) /* 0.412950976 */,
6371 /* 5969 */ 0x069bd33a | (18 << 27) /* 0.413043238 */,
6372 /* 5970 */ 0x069c33f9 | (18 << 27) /* 0.413135505 */,
6373 /* 5971 */ 0x069c94ba | (18 << 27) /* 0.413227776 */,
6374 /* 5972 */ 0x069cf57d | (18 << 27) /* 0.413320053 */,
6375 /* 5973 */ 0x069d5641 | (18 << 27) /* 0.413412335 */,
6376 /* 5974 */ 0x069db706 | (18 << 27) /* 0.413504623 */,
6377 /* 5975 */ 0x069e17cc | (18 << 27) /* 0.413596915 */,
6378 /* 5976 */ 0x069e7894 | (18 << 27) /* 0.413689213 */,
6379 /* 5977 */ 0x069ed95e | (18 << 27) /* 0.413781515 */,
6380 /* 5978 */ 0x069f3a28 | (18 << 27) /* 0.413873823 */,
6381 /* 5979 */ 0x069f9af4 | (18 << 27) /* 0.413966136 */,
6382 /* 5980 */ 0x069ffbc2 | (18 << 27) /* 0.414058454 */,
6383 /* 5981 */ 0x06a05c91 | (18 << 27) /* 0.414150778 */,
6384 /* 5982 */ 0x06a0bd61 | (18 << 27) /* 0.414243106 */,
6385 /* 5983 */ 0x06a11e32 | (18 << 27) /* 0.414335440 */,
6386
6387 /* 5984 */ 0x06a17f05 | (18 << 27) /* 0.414427779 */,
6388 /* 5985 */ 0x06a1dfda | (18 << 27) /* 0.414520122 */,
6389 /* 5986 */ 0x06a240b0 | (18 << 27) /* 0.414612471 */,
6390 /* 5987 */ 0x06a2a187 | (18 << 27) /* 0.414704826 */,
6391 /* 5988 */ 0x06a3025f | (18 << 27) /* 0.414797185 */,
6392 /* 5989 */ 0x06a36339 | (18 << 27) /* 0.414889549 */,
6393 /* 5990 */ 0x06a3c414 | (18 << 27) /* 0.414981919 */,
6394 /* 5991 */ 0x06a424f1 | (18 << 27) /* 0.415074294 */,
6395 /* 5992 */ 0x06a485cf | (18 << 27) /* 0.415166674 */,
6396 /* 5993 */ 0x06a4e6ae | (18 << 27) /* 0.415259059 */,
6397 /* 5994 */ 0x06a5478f | (18 << 27) /* 0.415351449 */,
6398 /* 5995 */ 0x06a5a871 | (18 << 27) /* 0.415443844 */,
6399 /* 5996 */ 0x06a60955 | (18 << 27) /* 0.415536244 */,
6400 /* 5997 */ 0x06a66a3a | (18 << 27) /* 0.415628650 */,
6401 /* 5998 */ 0x06a6cb20 | (18 << 27) /* 0.415721061 */,
6402 /* 5999 */ 0x06a72c08 | (18 << 27) /* 0.415813476 */,
6403
6404 /* 6000 */ 0x06a78cf1 | (18 << 27) /* 0.415905897 */,
6405 /* 6001 */ 0x06a7eddb | (18 << 27) /* 0.415998324 */,
6406 /* 6002 */ 0x06a84ec7 | (18 << 27) /* 0.416090755 */,
6407 /* 6003 */ 0x06a8afb4 | (18 << 27) /* 0.416183191 */,
6408 /* 6004 */ 0x06a910a3 | (18 << 27) /* 0.416275633 */,
6409 /* 6005 */ 0x06a97193 | (18 << 27) /* 0.416368079 */,
6410 /* 6006 */ 0x06a9d284 | (18 << 27) /* 0.416460531 */,
6411 /* 6007 */ 0x06aa3377 | (18 << 27) /* 0.416552988 */,
6412 /* 6008 */ 0x06aa946b | (18 << 27) /* 0.416645450 */,
6413 /* 6009 */ 0x06aaf561 | (18 << 27) /* 0.416737917 */,
6414 /* 6010 */ 0x06ab5657 | (18 << 27) /* 0.416830389 */,
6415 /* 6011 */ 0x06abb750 | (18 << 27) /* 0.416922867 */,
6416 /* 6012 */ 0x06ac1849 | (18 << 27) /* 0.417015349 */,
6417 /* 6013 */ 0x06ac7944 | (18 << 27) /* 0.417107837 */,
6418 /* 6014 */ 0x06acda41 | (18 << 27) /* 0.417200330 */,
6419 /* 6015 */ 0x06ad3b3e | (18 << 27) /* 0.417292828 */,
6420
6421 /* 6016 */ 0x06ad9c3d | (18 << 27) /* 0.417385331 */,
6422 /* 6017 */ 0x06adfd3e | (18 << 27) /* 0.417477839 */,
6423 /* 6018 */ 0x06ae5e40 | (18 << 27) /* 0.417570352 */,
6424 /* 6019 */ 0x06aebf43 | (18 << 27) /* 0.417662871 */,
6425 /* 6020 */ 0x06af2047 | (18 << 27) /* 0.417755394 */,
6426 /* 6021 */ 0x06af814d | (18 << 27) /* 0.417847923 */,
6427 /* 6022 */ 0x06afe255 | (18 << 27) /* 0.417940457 */,
6428 /* 6023 */ 0x06b0435e | (18 << 27) /* 0.418032996 */,
6429 /* 6024 */ 0x06b0a468 | (18 << 27) /* 0.418125540 */,
6430 /* 6025 */ 0x06b10573 | (18 << 27) /* 0.418218089 */,
6431 /* 6026 */ 0x06b16680 | (18 << 27) /* 0.418310643 */,
6432 /* 6027 */ 0x06b1c78e | (18 << 27) /* 0.418403203 */,
6433 /* 6028 */ 0x06b2289e | (18 << 27) /* 0.418495767 */,
6434 /* 6029 */ 0x06b289af | (18 << 27) /* 0.418588337 */,
6435 /* 6030 */ 0x06b2eac1 | (18 << 27) /* 0.418680911 */,
6436 /* 6031 */ 0x06b34bd5 | (18 << 27) /* 0.418773491 */,
6437
6438 /* 6032 */ 0x06b3acea | (18 << 27) /* 0.418866076 */,
6439 /* 6033 */ 0x06b40e00 | (18 << 27) /* 0.418958666 */,
6440 /* 6034 */ 0x06b46f18 | (18 << 27) /* 0.419051262 */,
6441 /* 6035 */ 0x06b4d031 | (18 << 27) /* 0.419143862 */,
6442 /* 6036 */ 0x06b5314c | (18 << 27) /* 0.419236467 */,
6443 /* 6037 */ 0x06b59268 | (18 << 27) /* 0.419329078 */,
6444 /* 6038 */ 0x06b5f385 | (18 << 27) /* 0.419421694 */,
6445 /* 6039 */ 0x06b654a4 | (18 << 27) /* 0.419514314 */,
6446 /* 6040 */ 0x06b6b5c4 | (18 << 27) /* 0.419606940 */,
6447 /* 6041 */ 0x06b716e6 | (18 << 27) /* 0.419699571 */,
6448 /* 6042 */ 0x06b77808 | (18 << 27) /* 0.419792208 */,
6449 /* 6043 */ 0x06b7d92d | (18 << 27) /* 0.419884849 */,
6450 /* 6044 */ 0x06b83a52 | (18 << 27) /* 0.419977495 */,
6451 /* 6045 */ 0x06b89b79 | (18 << 27) /* 0.420070147 */,
6452 /* 6046 */ 0x06b8fca1 | (18 << 27) /* 0.420162803 */,
6453 /* 6047 */ 0x06b95dcb | (18 << 27) /* 0.420255465 */,
6454
6455 /* 6048 */ 0x06b9bef6 | (18 << 27) /* 0.420348132 */,
6456 /* 6049 */ 0x06ba2023 | (18 << 27) /* 0.420440803 */,
6457 /* 6050 */ 0x06ba8150 | (18 << 27) /* 0.420533481 */,
6458 /* 6051 */ 0x06bae280 | (18 << 27) /* 0.420626163 */,
6459 /* 6052 */ 0x06bb43b0 | (18 << 27) /* 0.420718850 */,
6460 /* 6053 */ 0x06bba4e2 | (18 << 27) /* 0.420811542 */,
6461 /* 6054 */ 0x06bc0615 | (18 << 27) /* 0.420904240 */,
6462 /* 6055 */ 0x06bc674a | (18 << 27) /* 0.420996942 */,
6463 /* 6056 */ 0x06bcc880 | (18 << 27) /* 0.421089650 */,
6464 /* 6057 */ 0x06bd29b7 | (18 << 27) /* 0.421182362 */,
6465 /* 6058 */ 0x06bd8af0 | (18 << 27) /* 0.421275080 */,
6466 /* 6059 */ 0x06bdec2a | (18 << 27) /* 0.421367803 */,
6467 /* 6060 */ 0x06be4d66 | (18 << 27) /* 0.421460531 */,
6468 /* 6061 */ 0x06beaea3 | (18 << 27) /* 0.421553264 */,
6469 /* 6062 */ 0x06bf0fe1 | (18 << 27) /* 0.421646003 */,
6470 /* 6063 */ 0x06bf7120 | (18 << 27) /* 0.421738746 */,
6471
6472 /* 6064 */ 0x06bfd261 | (18 << 27) /* 0.421831494 */,
6473 /* 6065 */ 0x06c033a4 | (18 << 27) /* 0.421924248 */,
6474 /* 6066 */ 0x06c094e7 | (18 << 27) /* 0.422017007 */,
6475 /* 6067 */ 0x06c0f62c | (18 << 27) /* 0.422109770 */,
6476 /* 6068 */ 0x06c15773 | (18 << 27) /* 0.422202539 */,
6477 /* 6069 */ 0x06c1b8bb | (18 << 27) /* 0.422295313 */,
6478 /* 6070 */ 0x06c21a04 | (18 << 27) /* 0.422388092 */,
6479 /* 6071 */ 0x06c27b4e | (18 << 27) /* 0.422480876 */,
6480 /* 6072 */ 0x06c2dc9a | (18 << 27) /* 0.422573665 */,
6481 /* 6073 */ 0x06c33de8 | (18 << 27) /* 0.422666460 */,
6482 /* 6074 */ 0x06c39f36 | (18 << 27) /* 0.422759259 */,
6483 /* 6075 */ 0x06c40086 | (18 << 27) /* 0.422852064 */,
6484 /* 6076 */ 0x06c461d8 | (18 << 27) /* 0.422944873 */,
6485 /* 6077 */ 0x06c4c32a | (18 << 27) /* 0.423037688 */,
6486 /* 6078 */ 0x06c5247f | (18 << 27) /* 0.423130508 */,
6487 /* 6079 */ 0x06c585d4 | (18 << 27) /* 0.423223333 */,
6488
6489 /* 6080 */ 0x06c5e72b | (18 << 27) /* 0.423316162 */,
6490 /* 6081 */ 0x06c64883 | (18 << 27) /* 0.423408997 */,
6491 /* 6082 */ 0x06c6a9dd | (18 << 27) /* 0.423501838 */,
6492 /* 6083 */ 0x06c70b38 | (18 << 27) /* 0.423594683 */,
6493 /* 6084 */ 0x06c76c94 | (18 << 27) /* 0.423687533 */,
6494 /* 6085 */ 0x06c7cdf2 | (18 << 27) /* 0.423780389 */,
6495 /* 6086 */ 0x06c82f51 | (18 << 27) /* 0.423873249 */,
6496 /* 6087 */ 0x06c890b1 | (18 << 27) /* 0.423966115 */,
6497 /* 6088 */ 0x06c8f213 | (18 << 27) /* 0.424058985 */,
6498 /* 6089 */ 0x06c95376 | (18 << 27) /* 0.424151861 */,
6499 /* 6090 */ 0x06c9b4da | (18 << 27) /* 0.424244742 */,
6500 /* 6091 */ 0x06ca1640 | (18 << 27) /* 0.424337628 */,
6501 /* 6092 */ 0x06ca77a8 | (18 << 27) /* 0.424430519 */,
6502 /* 6093 */ 0x06cad910 | (18 << 27) /* 0.424523415 */,
6503 /* 6094 */ 0x06cb3a7a | (18 << 27) /* 0.424616316 */,
6504 /* 6095 */ 0x06cb9be5 | (18 << 27) /* 0.424709222 */,
6505
6506 /* 6096 */ 0x06cbfd52 | (18 << 27) /* 0.424802133 */,
6507 /* 6097 */ 0x06cc5ec0 | (18 << 27) /* 0.424895050 */,
6508 /* 6098 */ 0x06ccc030 | (18 << 27) /* 0.424987971 */,
6509 /* 6099 */ 0x06cd21a0 | (18 << 27) /* 0.425080898 */,
6510 /* 6100 */ 0x06cd8313 | (18 << 27) /* 0.425173829 */,
6511 /* 6101 */ 0x06cde486 | (18 << 27) /* 0.425266766 */,
6512 /* 6102 */ 0x06ce45fb | (18 << 27) /* 0.425359708 */,
6513 /* 6103 */ 0x06cea771 | (18 << 27) /* 0.425452655 */,
6514 /* 6104 */ 0x06cf08e9 | (18 << 27) /* 0.425545607 */,
6515 /* 6105 */ 0x06cf6a62 | (18 << 27) /* 0.425638564 */,
6516 /* 6106 */ 0x06cfcbdc | (18 << 27) /* 0.425731526 */,
6517 /* 6107 */ 0x06d02d58 | (18 << 27) /* 0.425824493 */,
6518 /* 6108 */ 0x06d08ed5 | (18 << 27) /* 0.425917465 */,
6519 /* 6109 */ 0x06d0f053 | (18 << 27) /* 0.426010443 */,
6520 /* 6110 */ 0x06d151d3 | (18 << 27) /* 0.426103425 */,
6521 /* 6111 */ 0x06d1b354 | (18 << 27) /* 0.426196412 */,
6522
6523 /* 6112 */ 0x06d214d7 | (18 << 27) /* 0.426289405 */,
6524 /* 6113 */ 0x06d2765a | (18 << 27) /* 0.426382403 */,
6525 /* 6114 */ 0x06d2d7e0 | (18 << 27) /* 0.426475405 */,
6526 /* 6115 */ 0x06d33966 | (18 << 27) /* 0.426568413 */,
6527 /* 6116 */ 0x06d39aee | (18 << 27) /* 0.426661426 */,
6528 /* 6117 */ 0x06d3fc77 | (18 << 27) /* 0.426754444 */,
6529 /* 6118 */ 0x06d45e02 | (18 << 27) /* 0.426847467 */,
6530 /* 6119 */ 0x06d4bf8e | (18 << 27) /* 0.426940495 */,
6531 /* 6120 */ 0x06d5211c | (18 << 27) /* 0.427033528 */,
6532 /* 6121 */ 0x06d582aa | (18 << 27) /* 0.427126566 */,
6533 /* 6122 */ 0x06d5e43a | (18 << 27) /* 0.427219609 */,
6534 /* 6123 */ 0x06d645cc | (18 << 27) /* 0.427312657 */,
6535 /* 6124 */ 0x06d6a75f | (18 << 27) /* 0.427405711 */,
6536 /* 6125 */ 0x06d708f3 | (18 << 27) /* 0.427498769 */,
6537 /* 6126 */ 0x06d76a88 | (18 << 27) /* 0.427591833 */,
6538 /* 6127 */ 0x06d7cc1f | (18 << 27) /* 0.427684901 */,
6539
6540 /* 6128 */ 0x06d82db8 | (18 << 27) /* 0.427777975 */,
6541 /* 6129 */ 0x06d88f51 | (18 << 27) /* 0.427871054 */,
6542 /* 6130 */ 0x06d8f0ec | (18 << 27) /* 0.427964137 */,
6543 /* 6131 */ 0x06d95288 | (18 << 27) /* 0.428057226 */,
6544 /* 6132 */ 0x06d9b426 | (18 << 27) /* 0.428150320 */,
6545 /* 6133 */ 0x06da15c5 | (18 << 27) /* 0.428243419 */,
6546 /* 6134 */ 0x06da7766 | (18 << 27) /* 0.428336523 */,
6547 /* 6135 */ 0x06dad907 | (18 << 27) /* 0.428429632 */,
6548 /* 6136 */ 0x06db3aaa | (18 << 27) /* 0.428522746 */,
6549 /* 6137 */ 0x06db9c4f | (18 << 27) /* 0.428615865 */,
6550 /* 6138 */ 0x06dbfdf5 | (18 << 27) /* 0.428708989 */,
6551 /* 6139 */ 0x06dc5f9c | (18 << 27) /* 0.428802119 */,
6552 /* 6140 */ 0x06dcc145 | (18 << 27) /* 0.428895253 */,
6553 /* 6141 */ 0x06dd22ee | (18 << 27) /* 0.428988392 */,
6554 /* 6142 */ 0x06dd849a | (18 << 27) /* 0.429081537 */,
6555 /* 6143 */ 0x06dde646 | (18 << 27) /* 0.429174686 */,
6556
6557 /* 6144 */ 0x06de47f4 | (18 << 27) /* 0.429267841 */,
6558 /* 6145 */ 0x06dea9a4 | (18 << 27) /* 0.429361001 */,
6559 /* 6146 */ 0x06df0b54 | (18 << 27) /* 0.429454165 */,
6560 /* 6147 */ 0x06df6d06 | (18 << 27) /* 0.429547335 */,
6561 /* 6148 */ 0x06dfceba | (18 << 27) /* 0.429640510 */,
6562 /* 6149 */ 0x06e0306f | (18 << 27) /* 0.429733690 */,
6563 /* 6150 */ 0x06e09225 | (18 << 27) /* 0.429826874 */,
6564 /* 6151 */ 0x06e0f3dc | (18 << 27) /* 0.429920064 */,
6565 /* 6152 */ 0x06e15595 | (18 << 27) /* 0.430013259 */,
6566 /* 6153 */ 0x06e1b74f | (18 << 27) /* 0.430106459 */,
6567 /* 6154 */ 0x06e2190b | (18 << 27) /* 0.430199664 */,
6568 /* 6155 */ 0x06e27ac8 | (18 << 27) /* 0.430292875 */,
6569 /* 6156 */ 0x06e2dc86 | (18 << 27) /* 0.430386090 */,
6570 /* 6157 */ 0x06e33e46 | (18 << 27) /* 0.430479310 */,
6571 /* 6158 */ 0x06e3a007 | (18 << 27) /* 0.430572535 */,
6572 /* 6159 */ 0x06e401c9 | (18 << 27) /* 0.430665765 */,
6573
6574 /* 6160 */ 0x06e4638d | (18 << 27) /* 0.430759001 */,
6575 /* 6161 */ 0x06e4c552 | (18 << 27) /* 0.430852241 */,
6576 /* 6162 */ 0x06e52718 | (18 << 27) /* 0.430945487 */,
6577 /* 6163 */ 0x06e588e0 | (18 << 27) /* 0.431038737 */,
6578 /* 6164 */ 0x06e5eaa9 | (18 << 27) /* 0.431131993 */,
6579 /* 6165 */ 0x06e64c73 | (18 << 27) /* 0.431225253 */,
6580 /* 6166 */ 0x06e6ae3f | (18 << 27) /* 0.431318519 */,
6581 /* 6167 */ 0x06e7100c | (18 << 27) /* 0.431411790 */,
6582 /* 6168 */ 0x06e771db | (18 << 27) /* 0.431505065 */,
6583 /* 6169 */ 0x06e7d3ab | (18 << 27) /* 0.431598346 */,
6584 /* 6170 */ 0x06e8357c | (18 << 27) /* 0.431691632 */,
6585 /* 6171 */ 0x06e8974e | (18 << 27) /* 0.431784923 */,
6586 /* 6172 */ 0x06e8f922 | (18 << 27) /* 0.431878218 */,
6587 /* 6173 */ 0x06e95af8 | (18 << 27) /* 0.431971519 */,
6588 /* 6174 */ 0x06e9bcce | (18 << 27) /* 0.432064825 */,
6589 /* 6175 */ 0x06ea1ea6 | (18 << 27) /* 0.432158136 */,
6590
6591 /* 6176 */ 0x06ea807f | (18 << 27) /* 0.432251452 */,
6592 /* 6177 */ 0x06eae25a | (18 << 27) /* 0.432344773 */,
6593 /* 6178 */ 0x06eb4436 | (18 << 27) /* 0.432438099 */,
6594 /* 6179 */ 0x06eba614 | (18 << 27) /* 0.432531431 */,
6595 /* 6180 */ 0x06ec07f2 | (18 << 27) /* 0.432624767 */,
6596 /* 6181 */ 0x06ec69d2 | (18 << 27) /* 0.432718108 */,
6597 /* 6182 */ 0x06eccbb4 | (18 << 27) /* 0.432811454 */,
6598 /* 6183 */ 0x06ed2d97 | (18 << 27) /* 0.432904805 */,
6599 /* 6184 */ 0x06ed8f7b | (18 << 27) /* 0.432998162 */,
6600 /* 6185 */ 0x06edf160 | (18 << 27) /* 0.433091523 */,
6601 /* 6186 */ 0x06ee5347 | (18 << 27) /* 0.433184889 */,
6602 /* 6187 */ 0x06eeb52f | (18 << 27) /* 0.433278261 */,
6603 /* 6188 */ 0x06ef1719 | (18 << 27) /* 0.433371637 */,
6604 /* 6189 */ 0x06ef7904 | (18 << 27) /* 0.433465019 */,
6605 /* 6190 */ 0x06efdaf0 | (18 << 27) /* 0.433558405 */,
6606 /* 6191 */ 0x06f03cde | (18 << 27) /* 0.433651797 */,
6607
6608 /* 6192 */ 0x06f09ecc | (18 << 27) /* 0.433745193 */,
6609 /* 6193 */ 0x06f100bd | (18 << 27) /* 0.433838595 */,
6610 /* 6194 */ 0x06f162ae | (18 << 27) /* 0.433932001 */,
6611 /* 6195 */ 0x06f1c4a1 | (18 << 27) /* 0.434025413 */,
6612 /* 6196 */ 0x06f22696 | (18 << 27) /* 0.434118830 */,
6613 /* 6197 */ 0x06f2888b | (18 << 27) /* 0.434212251 */,
6614 /* 6198 */ 0x06f2ea82 | (18 << 27) /* 0.434305678 */,
6615 /* 6199 */ 0x06f34c7b | (18 << 27) /* 0.434399110 */,
6616 /* 6200 */ 0x06f3ae75 | (18 << 27) /* 0.434492546 */,
6617 /* 6201 */ 0x06f41070 | (18 << 27) /* 0.434585988 */,
6618 /* 6202 */ 0x06f4726c | (18 << 27) /* 0.434679435 */,
6619 /* 6203 */ 0x06f4d46a | (18 << 27) /* 0.434772887 */,
6620 /* 6204 */ 0x06f53669 | (18 << 27) /* 0.434866344 */,
6621 /* 6205 */ 0x06f59869 | (18 << 27) /* 0.434959806 */,
6622 /* 6206 */ 0x06f5fa6b | (18 << 27) /* 0.435053272 */,
6623 /* 6207 */ 0x06f65c6e | (18 << 27) /* 0.435146744 */,
6624
6625 /* 6208 */ 0x06f6be73 | (18 << 27) /* 0.435240221 */,
6626 /* 6209 */ 0x06f72079 | (18 << 27) /* 0.435333703 */,
6627 /* 6210 */ 0x06f78280 | (18 << 27) /* 0.435427190 */,
6628 /* 6211 */ 0x06f7e489 | (18 << 27) /* 0.435520682 */,
6629 /* 6212 */ 0x06f84693 | (18 << 27) /* 0.435614179 */,
6630 /* 6213 */ 0x06f8a89e | (18 << 27) /* 0.435707681 */,
6631 /* 6214 */ 0x06f90aaa | (18 << 27) /* 0.435801188 */,
6632 /* 6215 */ 0x06f96cb8 | (18 << 27) /* 0.435894700 */,
6633 /* 6216 */ 0x06f9cec8 | (18 << 27) /* 0.435988217 */,
6634 /* 6217 */ 0x06fa30d8 | (18 << 27) /* 0.436081739 */,
6635 /* 6218 */ 0x06fa92ea | (18 << 27) /* 0.436175266 */,
6636 /* 6219 */ 0x06faf4fe | (18 << 27) /* 0.436268799 */,
6637 /* 6220 */ 0x06fb5712 | (18 << 27) /* 0.436362336 */,
6638 /* 6221 */ 0x06fbb928 | (18 << 27) /* 0.436455878 */,
6639 /* 6222 */ 0x06fc1b40 | (18 << 27) /* 0.436549425 */,
6640 /* 6223 */ 0x06fc7d58 | (18 << 27) /* 0.436642977 */,
6641
6642 /* 6224 */ 0x06fcdf72 | (18 << 27) /* 0.436736534 */,
6643 /* 6225 */ 0x06fd418e | (18 << 27) /* 0.436830096 */,
6644 /* 6226 */ 0x06fda3ab | (18 << 27) /* 0.436923664 */,
6645 /* 6227 */ 0x06fe05c9 | (18 << 27) /* 0.437017236 */,
6646 /* 6228 */ 0x06fe67e8 | (18 << 27) /* 0.437110813 */,
6647 /* 6229 */ 0x06feca09 | (18 << 27) /* 0.437204395 */,
6648 /* 6230 */ 0x06ff2c2b | (18 << 27) /* 0.437297982 */,
6649 /* 6231 */ 0x06ff8e4f | (18 << 27) /* 0.437391575 */,
6650 /* 6232 */ 0x06fff073 | (18 << 27) /* 0.437485172 */,
6651 /* 6233 */ 0x0700529a | (18 << 27) /* 0.437578774 */,
6652 /* 6234 */ 0x0700b4c1 | (18 << 27) /* 0.437672381 */,
6653 /* 6235 */ 0x070116ea | (18 << 27) /* 0.437765994 */,
6654 /* 6236 */ 0x07017914 | (18 << 27) /* 0.437859611 */,
6655 /* 6237 */ 0x0701db40 | (18 << 27) /* 0.437953233 */,
6656 /* 6238 */ 0x07023d6c | (18 << 27) /* 0.438046860 */,
6657 /* 6239 */ 0x07029f9b | (18 << 27) /* 0.438140493 */,
6658
6659 /* 6240 */ 0x070301ca | (18 << 27) /* 0.438234130 */,
6660 /* 6241 */ 0x070363fb | (18 << 27) /* 0.438327772 */,
6661 /* 6242 */ 0x0703c62d | (18 << 27) /* 0.438421419 */,
6662 /* 6243 */ 0x07042861 | (18 << 27) /* 0.438515072 */,
6663 /* 6244 */ 0x07048a96 | (18 << 27) /* 0.438608729 */,
6664 /* 6245 */ 0x0704eccc | (18 << 27) /* 0.438702391 */,
6665 /* 6246 */ 0x07054f04 | (18 << 27) /* 0.438796059 */,
6666 /* 6247 */ 0x0705b13d | (18 << 27) /* 0.438889731 */,
6667 /* 6248 */ 0x07061377 | (18 << 27) /* 0.438983408 */,
6668 /* 6249 */ 0x070675b3 | (18 << 27) /* 0.439077090 */,
6669 /* 6250 */ 0x0706d7f0 | (18 << 27) /* 0.439170778 */,
6670 /* 6251 */ 0x07073a2e | (18 << 27) /* 0.439264470 */,
6671 /* 6252 */ 0x07079c6e | (18 << 27) /* 0.439358167 */,
6672 /* 6253 */ 0x0707feaf | (18 << 27) /* 0.439451869 */,
6673 /* 6254 */ 0x070860f1 | (18 << 27) /* 0.439545577 */,
6674 /* 6255 */ 0x0708c335 | (18 << 27) /* 0.439639289 */,
6675
6676 /* 6256 */ 0x0709257a | (18 << 27) /* 0.439733006 */,
6677 /* 6257 */ 0x070987c0 | (18 << 27) /* 0.439826728 */,
6678 /* 6258 */ 0x0709ea08 | (18 << 27) /* 0.439920456 */,
6679 /* 6259 */ 0x070a4c51 | (18 << 27) /* 0.440014188 */,
6680 /* 6260 */ 0x070aae9b | (18 << 27) /* 0.440107925 */,
6681 /* 6261 */ 0x070b10e7 | (18 << 27) /* 0.440201667 */,
6682 /* 6262 */ 0x070b7334 | (18 << 27) /* 0.440295414 */,
6683 /* 6263 */ 0x070bd583 | (18 << 27) /* 0.440389167 */,
6684 /* 6264 */ 0x070c37d2 | (18 << 27) /* 0.440482924 */,
6685 /* 6265 */ 0x070c9a23 | (18 << 27) /* 0.440576686 */,
6686 /* 6266 */ 0x070cfc76 | (18 << 27) /* 0.440670453 */,
6687 /* 6267 */ 0x070d5eca | (18 << 27) /* 0.440764225 */,
6688 /* 6268 */ 0x070dc11f | (18 << 27) /* 0.440858002 */,
6689 /* 6269 */ 0x070e2375 | (18 << 27) /* 0.440951784 */,
6690 /* 6270 */ 0x070e85cd | (18 << 27) /* 0.441045572 */,
6691 /* 6271 */ 0x070ee826 | (18 << 27) /* 0.441139364 */,
6692
6693 /* 6272 */ 0x070f4a80 | (18 << 27) /* 0.441233161 */,
6694 /* 6273 */ 0x070facdc | (18 << 27) /* 0.441326963 */,
6695 /* 6274 */ 0x07100f39 | (18 << 27) /* 0.441420770 */,
6696 /* 6275 */ 0x07107198 | (18 << 27) /* 0.441514582 */,
6697 /* 6276 */ 0x0710d3f8 | (18 << 27) /* 0.441608399 */,
6698 /* 6277 */ 0x07113659 | (18 << 27) /* 0.441702221 */,
6699 /* 6278 */ 0x071198bb | (18 << 27) /* 0.441796048 */,
6700 /* 6279 */ 0x0711fb1f | (18 << 27) /* 0.441889880 */,
6701 /* 6280 */ 0x07125d84 | (18 << 27) /* 0.441983717 */,
6702 /* 6281 */ 0x0712bfeb | (18 << 27) /* 0.442077559 */,
6703 /* 6282 */ 0x07132253 | (18 << 27) /* 0.442171406 */,
6704 /* 6283 */ 0x071384bc | (18 << 27) /* 0.442265257 */,
6705 /* 6284 */ 0x0713e726 | (18 << 27) /* 0.442359114 */,
6706 /* 6285 */ 0x07144992 | (18 << 27) /* 0.442452976 */,
6707 /* 6286 */ 0x0714abff | (18 << 27) /* 0.442546843 */,
6708 /* 6287 */ 0x07150e6e | (18 << 27) /* 0.442640715 */,
6709
6710 /* 6288 */ 0x071570de | (18 << 27) /* 0.442734592 */,
6711 /* 6289 */ 0x0715d34f | (18 << 27) /* 0.442828473 */,
6712 /* 6290 */ 0x071635c1 | (18 << 27) /* 0.442922360 */,
6713 /* 6291 */ 0x07169835 | (18 << 27) /* 0.443016252 */,
6714 /* 6292 */ 0x0716faaa | (18 << 27) /* 0.443110148 */,
6715 /* 6293 */ 0x07175d21 | (18 << 27) /* 0.443204050 */,
6716 /* 6294 */ 0x0717bf99 | (18 << 27) /* 0.443297957 */,
6717 /* 6295 */ 0x07182212 | (18 << 27) /* 0.443391868 */,
6718 /* 6296 */ 0x0718848d | (18 << 27) /* 0.443485785 */,
6719 /* 6297 */ 0x0718e709 | (18 << 27) /* 0.443579706 */,
6720 /* 6298 */ 0x07194986 | (18 << 27) /* 0.443673633 */,
6721 /* 6299 */ 0x0719ac04 | (18 << 27) /* 0.443767564 */,
6722 /* 6300 */ 0x071a0e84 | (18 << 27) /* 0.443861501 */,
6723 /* 6301 */ 0x071a7105 | (18 << 27) /* 0.443955442 */,
6724 /* 6302 */ 0x071ad388 | (18 << 27) /* 0.444049389 */,
6725 /* 6303 */ 0x071b360c | (18 << 27) /* 0.444143340 */,
6726
6727 /* 6304 */ 0x071b9891 | (18 << 27) /* 0.444237296 */,
6728 /* 6305 */ 0x071bfb18 | (18 << 27) /* 0.444331258 */,
6729 /* 6306 */ 0x071c5d9f | (18 << 27) /* 0.444425224 */,
6730 /* 6307 */ 0x071cc029 | (18 << 27) /* 0.444519195 */,
6731 /* 6308 */ 0x071d22b3 | (18 << 27) /* 0.444613171 */,
6732 /* 6309 */ 0x071d853f | (18 << 27) /* 0.444707153 */,
6733 /* 6310 */ 0x071de7cc | (18 << 27) /* 0.444801139 */,
6734 /* 6311 */ 0x071e4a5b | (18 << 27) /* 0.444895130 */,
6735 /* 6312 */ 0x071eaceb | (18 << 27) /* 0.444989126 */,
6736 /* 6313 */ 0x071f0f7c | (18 << 27) /* 0.445083127 */,
6737 /* 6314 */ 0x071f720e | (18 << 27) /* 0.445177133 */,
6738 /* 6315 */ 0x071fd4a2 | (18 << 27) /* 0.445271144 */,
6739 /* 6316 */ 0x07203737 | (18 << 27) /* 0.445365160 */,
6740 /* 6317 */ 0x072099ce | (18 << 27) /* 0.445459181 */,
6741 /* 6318 */ 0x0720fc66 | (18 << 27) /* 0.445553206 */,
6742 /* 6319 */ 0x07215eff | (18 << 27) /* 0.445647237 */,
6743
6744 /* 6320 */ 0x0721c19a | (18 << 27) /* 0.445741273 */,
6745 /* 6321 */ 0x07222436 | (18 << 27) /* 0.445835314 */,
6746 /* 6322 */ 0x072286d3 | (18 << 27) /* 0.445929359 */,
6747 /* 6323 */ 0x0722e971 | (18 << 27) /* 0.446023410 */,
6748 /* 6324 */ 0x07234c11 | (18 << 27) /* 0.446117466 */,
6749 /* 6325 */ 0x0723aeb2 | (18 << 27) /* 0.446211526 */,
6750 /* 6326 */ 0x07241155 | (18 << 27) /* 0.446305592 */,
6751 /* 6327 */ 0x072473f9 | (18 << 27) /* 0.446399662 */,
6752 /* 6328 */ 0x0724d69e | (18 << 27) /* 0.446493738 */,
6753 /* 6329 */ 0x07253944 | (18 << 27) /* 0.446587818 */,
6754 /* 6330 */ 0x07259bec | (18 << 27) /* 0.446681903 */,
6755 /* 6331 */ 0x0725fe95 | (18 << 27) /* 0.446775994 */,
6756 /* 6332 */ 0x07266140 | (18 << 27) /* 0.446870089 */,
6757 /* 6333 */ 0x0726c3ec | (18 << 27) /* 0.446964189 */,
6758 /* 6334 */ 0x07272699 | (18 << 27) /* 0.447058294 */,
6759 /* 6335 */ 0x07278947 | (18 << 27) /* 0.447152404 */,
6760
6761 /* 6336 */ 0x0727ebf7 | (18 << 27) /* 0.447246519 */,
6762 /* 6337 */ 0x07284ea8 | (18 << 27) /* 0.447340639 */,
6763 /* 6338 */ 0x0728b15b | (18 << 27) /* 0.447434764 */,
6764 /* 6339 */ 0x0729140f | (18 << 27) /* 0.447528894 */,
6765 /* 6340 */ 0x072976c4 | (18 << 27) /* 0.447623029 */,
6766 /* 6341 */ 0x0729d97a | (18 << 27) /* 0.447717169 */,
6767 /* 6342 */ 0x072a3c32 | (18 << 27) /* 0.447811314 */,
6768 /* 6343 */ 0x072a9eeb | (18 << 27) /* 0.447905463 */,
6769 /* 6344 */ 0x072b01a6 | (18 << 27) /* 0.447999618 */,
6770 /* 6345 */ 0x072b6461 | (18 << 27) /* 0.448093778 */,
6771 /* 6346 */ 0x072bc71e | (18 << 27) /* 0.448187942 */,
6772 /* 6347 */ 0x072c29dd | (18 << 27) /* 0.448282112 */,
6773 /* 6348 */ 0x072c8c9d | (18 << 27) /* 0.448376286 */,
6774 /* 6349 */ 0x072cef5e | (18 << 27) /* 0.448470466 */,
6775 /* 6350 */ 0x072d5220 | (18 << 27) /* 0.448564650 */,
6776 /* 6351 */ 0x072db4e4 | (18 << 27) /* 0.448658839 */,
6777
6778 /* 6352 */ 0x072e17a9 | (18 << 27) /* 0.448753033 */,
6779 /* 6353 */ 0x072e7a6f | (18 << 27) /* 0.448847233 */,
6780 /* 6354 */ 0x072edd37 | (18 << 27) /* 0.448941437 */,
6781 /* 6355 */ 0x072f4000 | (18 << 27) /* 0.449035646 */,
6782 /* 6356 */ 0x072fa2ca | (18 << 27) /* 0.449129860 */,
6783 /* 6357 */ 0x07300596 | (18 << 27) /* 0.449224079 */,
6784 /* 6358 */ 0x07306863 | (18 << 27) /* 0.449318303 */,
6785 /* 6359 */ 0x0730cb32 | (18 << 27) /* 0.449412531 */,
6786 /* 6360 */ 0x07312e01 | (18 << 27) /* 0.449506765 */,
6787 /* 6361 */ 0x073190d2 | (18 << 27) /* 0.449601004 */,
6788 /* 6362 */ 0x0731f3a5 | (18 << 27) /* 0.449695247 */,
6789 /* 6363 */ 0x07325678 | (18 << 27) /* 0.449789496 */,
6790 /* 6364 */ 0x0732b94d | (18 << 27) /* 0.449883749 */,
6791 /* 6365 */ 0x07331c23 | (18 << 27) /* 0.449978008 */,
6792 /* 6366 */ 0x07337efb | (18 << 27) /* 0.450072271 */,
6793 /* 6367 */ 0x0733e1d4 | (18 << 27) /* 0.450166540 */,
6794
6795 /* 6368 */ 0x073444ae | (18 << 27) /* 0.450260813 */,
6796 /* 6369 */ 0x0734a78a | (18 << 27) /* 0.450355091 */,
6797 /* 6370 */ 0x07350a67 | (18 << 27) /* 0.450449374 */,
6798 /* 6371 */ 0x07356d45 | (18 << 27) /* 0.450543662 */,
6799 /* 6372 */ 0x0735d025 | (18 << 27) /* 0.450637955 */,
6800 /* 6373 */ 0x07363306 | (18 << 27) /* 0.450732253 */,
6801 /* 6374 */ 0x073695e8 | (18 << 27) /* 0.450826556 */,
6802 /* 6375 */ 0x0736f8cb | (18 << 27) /* 0.450920864 */,
6803 /* 6376 */ 0x07375bb0 | (18 << 27) /* 0.451015176 */,
6804 /* 6377 */ 0x0737be96 | (18 << 27) /* 0.451109494 */,
6805 /* 6378 */ 0x0738217e | (18 << 27) /* 0.451203817 */,
6806 /* 6379 */ 0x07388467 | (18 << 27) /* 0.451298144 */,
6807 /* 6380 */ 0x0738e751 | (18 << 27) /* 0.451392477 */,
6808 /* 6381 */ 0x07394a3d | (18 << 27) /* 0.451486814 */,
6809 /* 6382 */ 0x0739ad29 | (18 << 27) /* 0.451581156 */,
6810 /* 6383 */ 0x073a1017 | (18 << 27) /* 0.451675503 */,
6811
6812 /* 6384 */ 0x073a7307 | (18 << 27) /* 0.451769856 */,
6813 /* 6385 */ 0x073ad5f8 | (18 << 27) /* 0.451864213 */,
6814 /* 6386 */ 0x073b38ea | (18 << 27) /* 0.451958575 */,
6815 /* 6387 */ 0x073b9bdd | (18 << 27) /* 0.452052942 */,
6816 /* 6388 */ 0x073bfed2 | (18 << 27) /* 0.452147313 */,
6817 /* 6389 */ 0x073c61c8 | (18 << 27) /* 0.452241690 */,
6818 /* 6390 */ 0x073cc4bf | (18 << 27) /* 0.452336072 */,
6819 /* 6391 */ 0x073d27b8 | (18 << 27) /* 0.452430458 */,
6820 /* 6392 */ 0x073d8ab2 | (18 << 27) /* 0.452524850 */,
6821 /* 6393 */ 0x073dedae | (18 << 27) /* 0.452619246 */,
6822 /* 6394 */ 0x073e50aa | (18 << 27) /* 0.452713648 */,
6823 /* 6395 */ 0x073eb3a8 | (18 << 27) /* 0.452808054 */,
6824 /* 6396 */ 0x073f16a8 | (18 << 27) /* 0.452902465 */,
6825 /* 6397 */ 0x073f79a8 | (18 << 27) /* 0.452996882 */,
6826 /* 6398 */ 0x073fdcaa | (18 << 27) /* 0.453091303 */,
6827 /* 6399 */ 0x07403fad | (18 << 27) /* 0.453185729 */,
6828
6829 /* 6400 */ 0x0740a2b2 | (18 << 27) /* 0.453280160 */,
6830 /* 6401 */ 0x074105b8 | (18 << 27) /* 0.453374595 */,
6831 /* 6402 */ 0x074168bf | (18 << 27) /* 0.453469036 */,
6832 /* 6403 */ 0x0741cbc8 | (18 << 27) /* 0.453563482 */,
6833 /* 6404 */ 0x07422ed2 | (18 << 27) /* 0.453657932 */,
6834 /* 6405 */ 0x074291dd | (18 << 27) /* 0.453752388 */,
6835 /* 6406 */ 0x0742f4e9 | (18 << 27) /* 0.453846848 */,
6836 /* 6407 */ 0x074357f7 | (18 << 27) /* 0.453941314 */,
6837 /* 6408 */ 0x0743bb06 | (18 << 27) /* 0.454035784 */,
6838 /* 6409 */ 0x07441e17 | (18 << 27) /* 0.454130259 */,
6839 /* 6410 */ 0x07448129 | (18 << 27) /* 0.454224739 */,
6840 /* 6411 */ 0x0744e43c | (18 << 27) /* 0.454319224 */,
6841 /* 6412 */ 0x07454750 | (18 << 27) /* 0.454413714 */,
6842 /* 6413 */ 0x0745aa66 | (18 << 27) /* 0.454508209 */,
6843 /* 6414 */ 0x07460d7d | (18 << 27) /* 0.454602708 */,
6844 /* 6415 */ 0x07467095 | (18 << 27) /* 0.454697213 */,
6845
6846 /* 6416 */ 0x0746d3af | (18 << 27) /* 0.454791723 */,
6847 /* 6417 */ 0x074736ca | (18 << 27) /* 0.454886237 */,
6848 /* 6418 */ 0x074799e7 | (18 << 27) /* 0.454980756 */,
6849 /* 6419 */ 0x0747fd04 | (18 << 27) /* 0.455075281 */,
6850 /* 6420 */ 0x07486023 | (18 << 27) /* 0.455169810 */,
6851 /* 6421 */ 0x0748c344 | (18 << 27) /* 0.455264344 */,
6852 /* 6422 */ 0x07492665 | (18 << 27) /* 0.455358883 */,
6853 /* 6423 */ 0x07498988 | (18 << 27) /* 0.455453427 */,
6854 /* 6424 */ 0x0749ecac | (18 << 27) /* 0.455547976 */,
6855 /* 6425 */ 0x074a4fd2 | (18 << 27) /* 0.455642529 */,
6856 /* 6426 */ 0x074ab2f9 | (18 << 27) /* 0.455737088 */,
6857 /* 6427 */ 0x074b1621 | (18 << 27) /* 0.455831652 */,
6858 /* 6428 */ 0x074b794b | (18 << 27) /* 0.455926220 */,
6859 /* 6429 */ 0x074bdc75 | (18 << 27) /* 0.456020793 */,
6860 /* 6430 */ 0x074c3fa1 | (18 << 27) /* 0.456115372 */,
6861 /* 6431 */ 0x074ca2cf | (18 << 27) /* 0.456209955 */,
6862
6863 /* 6432 */ 0x074d05fe | (18 << 27) /* 0.456304543 */,
6864 /* 6433 */ 0x074d692e | (18 << 27) /* 0.456399136 */,
6865 /* 6434 */ 0x074dcc5f | (18 << 27) /* 0.456493733 */,
6866 /* 6435 */ 0x074e2f92 | (18 << 27) /* 0.456588336 */,
6867 /* 6436 */ 0x074e92c6 | (18 << 27) /* 0.456682944 */,
6868 /* 6437 */ 0x074ef5fb | (18 << 27) /* 0.456777556 */,
6869 /* 6438 */ 0x074f5932 | (18 << 27) /* 0.456872174 */,
6870 /* 6439 */ 0x074fbc6a | (18 << 27) /* 0.456966796 */,
6871 /* 6440 */ 0x07501fa3 | (18 << 27) /* 0.457061423 */,
6872 /* 6441 */ 0x075082de | (18 << 27) /* 0.457156056 */,
6873 /* 6442 */ 0x0750e61a | (18 << 27) /* 0.457250693 */,
6874 /* 6443 */ 0x07514957 | (18 << 27) /* 0.457345335 */,
6875 /* 6444 */ 0x0751ac96 | (18 << 27) /* 0.457439981 */,
6876 /* 6445 */ 0x07520fd6 | (18 << 27) /* 0.457534633 */,
6877 /* 6446 */ 0x07527317 | (18 << 27) /* 0.457629290 */,
6878 /* 6447 */ 0x0752d659 | (18 << 27) /* 0.457723951 */,
6879
6880 /* 6448 */ 0x0753399d | (18 << 27) /* 0.457818618 */,
6881 /* 6449 */ 0x07539ce2 | (18 << 27) /* 0.457913289 */,
6882 /* 6450 */ 0x07540029 | (18 << 27) /* 0.458007965 */,
6883 /* 6451 */ 0x07546371 | (18 << 27) /* 0.458102646 */,
6884 /* 6452 */ 0x0754c6ba | (18 << 27) /* 0.458197332 */,
6885 /* 6453 */ 0x07552a04 | (18 << 27) /* 0.458292023 */,
6886 /* 6454 */ 0x07558d50 | (18 << 27) /* 0.458386719 */,
6887 /* 6455 */ 0x0755f09d | (18 << 27) /* 0.458481420 */,
6888 /* 6456 */ 0x075653eb | (18 << 27) /* 0.458576125 */,
6889 /* 6457 */ 0x0756b73b | (18 << 27) /* 0.458670836 */,
6890 /* 6458 */ 0x07571a8c | (18 << 27) /* 0.458765551 */,
6891 /* 6459 */ 0x07577dde | (18 << 27) /* 0.458860271 */,
6892 /* 6460 */ 0x0757e131 | (18 << 27) /* 0.458954996 */,
6893 /* 6461 */ 0x07584486 | (18 << 27) /* 0.459049726 */,
6894 /* 6462 */ 0x0758a7dd | (18 << 27) /* 0.459144461 */,
6895 /* 6463 */ 0x07590b34 | (18 << 27) /* 0.459239201 */,
6896
6897 /* 6464 */ 0x07596e8d | (18 << 27) /* 0.459333946 */,
6898 /* 6465 */ 0x0759d1e7 | (18 << 27) /* 0.459428695 */,
6899 /* 6466 */ 0x075a3542 | (18 << 27) /* 0.459523450 */,
6900 /* 6467 */ 0x075a989f | (18 << 27) /* 0.459618209 */,
6901 /* 6468 */ 0x075afbfd | (18 << 27) /* 0.459712973 */,
6902 /* 6469 */ 0x075b5f5d | (18 << 27) /* 0.459807742 */,
6903 /* 6470 */ 0x075bc2bd | (18 << 27) /* 0.459902516 */,
6904 /* 6471 */ 0x075c261f | (18 << 27) /* 0.459997295 */,
6905 /* 6472 */ 0x075c8983 | (18 << 27) /* 0.460092079 */,
6906 /* 6473 */ 0x075cece7 | (18 << 27) /* 0.460186867 */,
6907 /* 6474 */ 0x075d504d | (18 << 27) /* 0.460281661 */,
6908 /* 6475 */ 0x075db3b5 | (18 << 27) /* 0.460376459 */,
6909 /* 6476 */ 0x075e171d | (18 << 27) /* 0.460471262 */,
6910 /* 6477 */ 0x075e7a87 | (18 << 27) /* 0.460566071 */,
6911 /* 6478 */ 0x075eddf2 | (18 << 27) /* 0.460660884 */,
6912 /* 6479 */ 0x075f415f | (18 << 27) /* 0.460755701 */,
6913
6914 /* 6480 */ 0x075fa4cc | (18 << 27) /* 0.460850524 */,
6915 /* 6481 */ 0x0760083b | (18 << 27) /* 0.460945352 */,
6916 /* 6482 */ 0x07606bac | (18 << 27) /* 0.461040184 */,
6917 /* 6483 */ 0x0760cf1e | (18 << 27) /* 0.461135022 */,
6918 /* 6484 */ 0x07613291 | (18 << 27) /* 0.461229864 */,
6919 /* 6485 */ 0x07619605 | (18 << 27) /* 0.461324711 */,
6920 /* 6486 */ 0x0761f97b | (18 << 27) /* 0.461419563 */,
6921 /* 6487 */ 0x07625cf2 | (18 << 27) /* 0.461514420 */,
6922 /* 6488 */ 0x0762c06a | (18 << 27) /* 0.461609282 */,
6923 /* 6489 */ 0x076323e3 | (18 << 27) /* 0.461704149 */,
6924 /* 6490 */ 0x0763875e | (18 << 27) /* 0.461799020 */,
6925 /* 6491 */ 0x0763eadb | (18 << 27) /* 0.461893897 */,
6926 /* 6492 */ 0x07644e58 | (18 << 27) /* 0.461988778 */,
6927 /* 6493 */ 0x0764b1d7 | (18 << 27) /* 0.462083664 */,
6928 /* 6494 */ 0x07651557 | (18 << 27) /* 0.462178555 */,
6929 /* 6495 */ 0x076578d8 | (18 << 27) /* 0.462273451 */,
6930
6931 /* 6496 */ 0x0765dc5b | (18 << 27) /* 0.462368352 */,
6932 /* 6497 */ 0x07663fdf | (18 << 27) /* 0.462463257 */,
6933 /* 6498 */ 0x0766a364 | (18 << 27) /* 0.462558168 */,
6934 /* 6499 */ 0x076706eb | (18 << 27) /* 0.462653083 */,
6935 /* 6500 */ 0x07676a73 | (18 << 27) /* 0.462748003 */,
6936 /* 6501 */ 0x0767cdfc | (18 << 27) /* 0.462842928 */,
6937 /* 6502 */ 0x07683187 | (18 << 27) /* 0.462937858 */,
6938 /* 6503 */ 0x07689513 | (18 << 27) /* 0.463032793 */,
6939 /* 6504 */ 0x0768f8a0 | (18 << 27) /* 0.463127733 */,
6940 /* 6505 */ 0x07695c2e | (18 << 27) /* 0.463222678 */,
6941 /* 6506 */ 0x0769bfbe | (18 << 27) /* 0.463317627 */,
6942 /* 6507 */ 0x076a234f | (18 << 27) /* 0.463412581 */,
6943 /* 6508 */ 0x076a86e2 | (18 << 27) /* 0.463507540 */,
6944 /* 6509 */ 0x076aea75 | (18 << 27) /* 0.463602504 */,
6945 /* 6510 */ 0x076b4e0a | (18 << 27) /* 0.463697473 */,
6946 /* 6511 */ 0x076bb1a1 | (18 << 27) /* 0.463792447 */,
6947
6948 /* 6512 */ 0x076c1538 | (18 << 27) /* 0.463887426 */,
6949 /* 6513 */ 0x076c78d1 | (18 << 27) /* 0.463982409 */,
6950 /* 6514 */ 0x076cdc6c | (18 << 27) /* 0.464077398 */,
6951 /* 6515 */ 0x076d4007 | (18 << 27) /* 0.464172391 */,
6952 /* 6516 */ 0x076da3a4 | (18 << 27) /* 0.464267389 */,
6953 /* 6517 */ 0x076e0742 | (18 << 27) /* 0.464362392 */,
6954 /* 6518 */ 0x076e6ae2 | (18 << 27) /* 0.464457399 */,
6955 /* 6519 */ 0x076ece82 | (18 << 27) /* 0.464552412 */,
6956 /* 6520 */ 0x076f3224 | (18 << 27) /* 0.464647430 */,
6957 /* 6521 */ 0x076f95c8 | (18 << 27) /* 0.464742452 */,
6958 /* 6522 */ 0x076ff96c | (18 << 27) /* 0.464837479 */,
6959 /* 6523 */ 0x07705d12 | (18 << 27) /* 0.464932511 */,
6960 /* 6524 */ 0x0770c0ba | (18 << 27) /* 0.465027548 */,
6961 /* 6525 */ 0x07712462 | (18 << 27) /* 0.465122590 */,
6962 /* 6526 */ 0x0771880c | (18 << 27) /* 0.465217637 */,
6963 /* 6527 */ 0x0771ebb7 | (18 << 27) /* 0.465312688 */,
6964
6965 /* 6528 */ 0x07724f64 | (18 << 27) /* 0.465407744 */,
6966 /* 6529 */ 0x0772b312 | (18 << 27) /* 0.465502806 */,
6967 /* 6530 */ 0x077316c1 | (18 << 27) /* 0.465597872 */,
6968 /* 6531 */ 0x07737a71 | (18 << 27) /* 0.465692943 */,
6969 /* 6532 */ 0x0773de23 | (18 << 27) /* 0.465788018 */,
6970 /* 6533 */ 0x077441d6 | (18 << 27) /* 0.465883099 */,
6971 /* 6534 */ 0x0774a58a | (18 << 27) /* 0.465978184 */,
6972 /* 6535 */ 0x07750940 | (18 << 27) /* 0.466073275 */,
6973 /* 6536 */ 0x07756cf7 | (18 << 27) /* 0.466168370 */,
6974 /* 6537 */ 0x0775d0af | (18 << 27) /* 0.466263470 */,
6975 /* 6538 */ 0x07763468 | (18 << 27) /* 0.466358575 */,
6976 /* 6539 */ 0x07769823 | (18 << 27) /* 0.466453684 */,
6977 /* 6540 */ 0x0776fbdf | (18 << 27) /* 0.466548799 */,
6978 /* 6541 */ 0x07775f9d | (18 << 27) /* 0.466643918 */,
6979 /* 6542 */ 0x0777c35c | (18 << 27) /* 0.466739043 */,
6980 /* 6543 */ 0x0778271c | (18 << 27) /* 0.466834172 */,
6981
6982 /* 6544 */ 0x07788add | (18 << 27) /* 0.466929306 */,
6983 /* 6545 */ 0x0778ee9f | (18 << 27) /* 0.467024445 */,
6984 /* 6546 */ 0x07795263 | (18 << 27) /* 0.467119588 */,
6985 /* 6547 */ 0x0779b629 | (18 << 27) /* 0.467214737 */,
6986 /* 6548 */ 0x077a19ef | (18 << 27) /* 0.467309890 */,
6987 /* 6549 */ 0x077a7db7 | (18 << 27) /* 0.467405048 */,
6988 /* 6550 */ 0x077ae180 | (18 << 27) /* 0.467500211 */,
6989 /* 6551 */ 0x077b454b | (18 << 27) /* 0.467595379 */,
6990 /* 6552 */ 0x077ba916 | (18 << 27) /* 0.467690552 */,
6991 /* 6553 */ 0x077c0ce3 | (18 << 27) /* 0.467785729 */,
6992 /* 6554 */ 0x077c70b2 | (18 << 27) /* 0.467880912 */,
6993 /* 6555 */ 0x077cd481 | (18 << 27) /* 0.467976099 */,
6994 /* 6556 */ 0x077d3852 | (18 << 27) /* 0.468071291 */,
6995 /* 6557 */ 0x077d9c24 | (18 << 27) /* 0.468166488 */,
6996 /* 6558 */ 0x077dfff8 | (18 << 27) /* 0.468261690 */,
6997 /* 6559 */ 0x077e63cd | (18 << 27) /* 0.468356896 */,
6998
6999 /* 6560 */ 0x077ec7a3 | (18 << 27) /* 0.468452108 */,
7000 /* 6561 */ 0x077f2b7a | (18 << 27) /* 0.468547324 */,
7001 /* 6562 */ 0x077f8f53 | (18 << 27) /* 0.468642545 */,
7002 /* 6563 */ 0x077ff32d | (18 << 27) /* 0.468737771 */,
7003 /* 6564 */ 0x07805708 | (18 << 27) /* 0.468833002 */,
7004 /* 6565 */ 0x0780bae5 | (18 << 27) /* 0.468928237 */,
7005 /* 6566 */ 0x07811ec3 | (18 << 27) /* 0.469023478 */,
7006 /* 6567 */ 0x078182a2 | (18 << 27) /* 0.469118723 */,
7007 /* 6568 */ 0x0781e683 | (18 << 27) /* 0.469213973 */,
7008 /* 6569 */ 0x07824a64 | (18 << 27) /* 0.469309228 */,
7009 /* 6570 */ 0x0782ae47 | (18 << 27) /* 0.469404488 */,
7010 /* 6571 */ 0x0783122c | (18 << 27) /* 0.469499752 */,
7011 /* 6572 */ 0x07837612 | (18 << 27) /* 0.469595022 */,
7012 /* 6573 */ 0x0783d9f9 | (18 << 27) /* 0.469690296 */,
7013 /* 6574 */ 0x07843de1 | (18 << 27) /* 0.469785575 */,
7014 /* 6575 */ 0x0784a1ca | (18 << 27) /* 0.469880859 */,
7015
7016 /* 6576 */ 0x078505b5 | (18 << 27) /* 0.469976148 */,
7017 /* 6577 */ 0x078569a2 | (18 << 27) /* 0.470071442 */,
7018 /* 6578 */ 0x0785cd8f | (18 << 27) /* 0.470166740 */,
7019 /* 6579 */ 0x0786317e | (18 << 27) /* 0.470262043 */,
7020 /* 6580 */ 0x0786956e | (18 << 27) /* 0.470357351 */,
7021 /* 6581 */ 0x0786f95f | (18 << 27) /* 0.470452664 */,
7022 /* 6582 */ 0x07875d52 | (18 << 27) /* 0.470547982 */,
7023 /* 6583 */ 0x0787c146 | (18 << 27) /* 0.470643305 */,
7024 /* 6584 */ 0x0788253b | (18 << 27) /* 0.470738632 */,
7025 /* 6585 */ 0x07888932 | (18 << 27) /* 0.470833964 */,
7026 /* 6586 */ 0x0788ed2a | (18 << 27) /* 0.470929301 */,
7027 /* 6587 */ 0x07895123 | (18 << 27) /* 0.471024643 */,
7028 /* 6588 */ 0x0789b51d | (18 << 27) /* 0.471119990 */,
7029 /* 6589 */ 0x078a1919 | (18 << 27) /* 0.471215341 */,
7030 /* 6590 */ 0x078a7d16 | (18 << 27) /* 0.471310698 */,
7031 /* 6591 */ 0x078ae114 | (18 << 27) /* 0.471406059 */,
7032
7033 /* 6592 */ 0x078b4514 | (18 << 27) /* 0.471501425 */,
7034 /* 6593 */ 0x078ba915 | (18 << 27) /* 0.471596796 */,
7035 /* 6594 */ 0x078c0d17 | (18 << 27) /* 0.471692171 */,
7036 /* 6595 */ 0x078c711a | (18 << 27) /* 0.471787552 */,
7037 /* 6596 */ 0x078cd51f | (18 << 27) /* 0.471882937 */,
7038 /* 6597 */ 0x078d3925 | (18 << 27) /* 0.471978327 */,
7039 /* 6598 */ 0x078d9d2d | (18 << 27) /* 0.472073722 */,
7040 /* 6599 */ 0x078e0135 | (18 << 27) /* 0.472169122 */,
7041 /* 6600 */ 0x078e653f | (18 << 27) /* 0.472264527 */,
7042 /* 6601 */ 0x078ec94b | (18 << 27) /* 0.472359936 */,
7043 /* 6602 */ 0x078f2d57 | (18 << 27) /* 0.472455350 */,
7044 /* 6603 */ 0x078f9165 | (18 << 27) /* 0.472550769 */,
7045 /* 6604 */ 0x078ff574 | (18 << 27) /* 0.472646193 */,
7046 /* 6605 */ 0x07905985 | (18 << 27) /* 0.472741622 */,
7047 /* 6606 */ 0x0790bd96 | (18 << 27) /* 0.472837055 */,
7048 /* 6607 */ 0x079121a9 | (18 << 27) /* 0.472932493 */,
7049
7050 /* 6608 */ 0x079185be | (18 << 27) /* 0.473027937 */,
7051 /* 6609 */ 0x0791e9d3 | (18 << 27) /* 0.473123384 */,
7052 /* 6610 */ 0x07924dea | (18 << 27) /* 0.473218837 */,
7053 /* 6611 */ 0x0792b202 | (18 << 27) /* 0.473314295 */,
7054 /* 6612 */ 0x0793161c | (18 << 27) /* 0.473409757 */,
7055 /* 6613 */ 0x07937a37 | (18 << 27) /* 0.473505224 */,
7056 /* 6614 */ 0x0793de53 | (18 << 27) /* 0.473600696 */,
7057 /* 6615 */ 0x07944270 | (18 << 27) /* 0.473696173 */,
7058 /* 6616 */ 0x0794a68f | (18 << 27) /* 0.473791655 */,
7059 /* 6617 */ 0x07950aaf | (18 << 27) /* 0.473887141 */,
7060 /* 6618 */ 0x07956ed0 | (18 << 27) /* 0.473982632 */,
7061 /* 6619 */ 0x0795d2f2 | (18 << 27) /* 0.474078128 */,
7062 /* 6620 */ 0x07963716 | (18 << 27) /* 0.474173629 */,
7063 /* 6621 */ 0x07969b3b | (18 << 27) /* 0.474269135 */,
7064 /* 6622 */ 0x0796ff62 | (18 << 27) /* 0.474364645 */,
7065 /* 6623 */ 0x07976389 | (18 << 27) /* 0.474460161 */,
7066
7067 /* 6624 */ 0x0797c7b2 | (18 << 27) /* 0.474555681 */,
7068 /* 6625 */ 0x07982bdd | (18 << 27) /* 0.474651205 */,
7069 /* 6626 */ 0x07989008 | (18 << 27) /* 0.474746735 */,
7070 /* 6627 */ 0x0798f435 | (18 << 27) /* 0.474842270 */,
7071 /* 6628 */ 0x07995863 | (18 << 27) /* 0.474937809 */,
7072 /* 6629 */ 0x0799bc92 | (18 << 27) /* 0.475033353 */,
7073 /* 6630 */ 0x079a20c3 | (18 << 27) /* 0.475128902 */,
7074 /* 6631 */ 0x079a84f5 | (18 << 27) /* 0.475224456 */,
7075 /* 6632 */ 0x079ae929 | (18 << 27) /* 0.475320014 */,
7076 /* 6633 */ 0x079b4d5d | (18 << 27) /* 0.475415578 */,
7077 /* 6634 */ 0x079bb193 | (18 << 27) /* 0.475511146 */,
7078 /* 6635 */ 0x079c15ca | (18 << 27) /* 0.475606719 */,
7079 /* 6636 */ 0x079c7a03 | (18 << 27) /* 0.475702296 */,
7080 /* 6637 */ 0x079cde3c | (18 << 27) /* 0.475797879 */,
7081 /* 6638 */ 0x079d4277 | (18 << 27) /* 0.475893466 */,
7082 /* 6639 */ 0x079da6b4 | (18 << 27) /* 0.475989058 */,
7083
7084 /* 6640 */ 0x079e0af1 | (18 << 27) /* 0.476084655 */,
7085 /* 6641 */ 0x079e6f30 | (18 << 27) /* 0.476180257 */,
7086 /* 6642 */ 0x079ed370 | (18 << 27) /* 0.476275863 */,
7087 /* 6643 */ 0x079f37b2 | (18 << 27) /* 0.476371475 */,
7088 /* 6644 */ 0x079f9bf5 | (18 << 27) /* 0.476467091 */,
7089 /* 6645 */ 0x07a00039 | (18 << 27) /* 0.476562712 */,
7090 /* 6646 */ 0x07a0647e | (18 << 27) /* 0.476658338 */,
7091 /* 6647 */ 0x07a0c8c5 | (18 << 27) /* 0.476753968 */,
7092 /* 6648 */ 0x07a12d0c | (18 << 27) /* 0.476849603 */,
7093 /* 6649 */ 0x07a19156 | (18 << 27) /* 0.476945243 */,
7094 /* 6650 */ 0x07a1f5a0 | (18 << 27) /* 0.477040888 */,
7095 /* 6651 */ 0x07a259ec | (18 << 27) /* 0.477136538 */,
7096 /* 6652 */ 0x07a2be39 | (18 << 27) /* 0.477232193 */,
7097 /* 6653 */ 0x07a32287 | (18 << 27) /* 0.477327852 */,
7098 /* 6654 */ 0x07a386d7 | (18 << 27) /* 0.477423516 */,
7099 /* 6655 */ 0x07a3eb28 | (18 << 27) /* 0.477519185 */,
7100
7101 /* 6656 */ 0x07a44f7a | (18 << 27) /* 0.477614858 */,
7102 /* 6657 */ 0x07a4b3ce | (18 << 27) /* 0.477710537 */,
7103 /* 6658 */ 0x07a51822 | (18 << 27) /* 0.477806220 */,
7104 /* 6659 */ 0x07a57c78 | (18 << 27) /* 0.477901908 */,
7105 /* 6660 */ 0x07a5e0d0 | (18 << 27) /* 0.477997601 */,
7106 /* 6661 */ 0x07a64528 | (18 << 27) /* 0.478093299 */,
7107 /* 6662 */ 0x07a6a982 | (18 << 27) /* 0.478189001 */,
7108 /* 6663 */ 0x07a70ddd | (18 << 27) /* 0.478284708 */,
7109 /* 6664 */ 0x07a7723a | (18 << 27) /* 0.478380420 */,
7110 /* 6665 */ 0x07a7d698 | (18 << 27) /* 0.478476137 */,
7111 /* 6666 */ 0x07a83af7 | (18 << 27) /* 0.478571858 */,
7112 /* 6667 */ 0x07a89f57 | (18 << 27) /* 0.478667585 */,
7113 /* 6668 */ 0x07a903b9 | (18 << 27) /* 0.478763316 */,
7114 /* 6669 */ 0x07a9681c | (18 << 27) /* 0.478859052 */,
7115 /* 6670 */ 0x07a9cc80 | (18 << 27) /* 0.478954793 */,
7116 /* 6671 */ 0x07aa30e5 | (18 << 27) /* 0.479050538 */,
7117
7118 /* 6672 */ 0x07aa954c | (18 << 27) /* 0.479146288 */,
7119 /* 6673 */ 0x07aaf9b4 | (18 << 27) /* 0.479242043 */,
7120 /* 6674 */ 0x07ab5e1e | (18 << 27) /* 0.479337803 */,
7121 /* 6675 */ 0x07abc288 | (18 << 27) /* 0.479433568 */,
7122 /* 6676 */ 0x07ac26f4 | (18 << 27) /* 0.479529337 */,
7123 /* 6677 */ 0x07ac8b61 | (18 << 27) /* 0.479625111 */,
7124 /* 6678 */ 0x07acefd0 | (18 << 27) /* 0.479720890 */,
7125 /* 6679 */ 0x07ad543f | (18 << 27) /* 0.479816674 */,
7126 /* 6680 */ 0x07adb8b0 | (18 << 27) /* 0.479912463 */,
7127 /* 6681 */ 0x07ae1d23 | (18 << 27) /* 0.480008256 */,
7128 /* 6682 */ 0x07ae8196 | (18 << 27) /* 0.480104054 */,
7129 /* 6683 */ 0x07aee60b | (18 << 27) /* 0.480199857 */,
7130 /* 6684 */ 0x07af4a81 | (18 << 27) /* 0.480295664 */,
7131 /* 6685 */ 0x07afaef9 | (18 << 27) /* 0.480391477 */,
7132 /* 6686 */ 0x07b01372 | (18 << 27) /* 0.480487294 */,
7133 /* 6687 */ 0x07b077ec | (18 << 27) /* 0.480583116 */,
7134
7135 /* 6688 */ 0x07b0dc67 | (18 << 27) /* 0.480678943 */,
7136 /* 6689 */ 0x07b140e4 | (18 << 27) /* 0.480774774 */,
7137 /* 6690 */ 0x07b1a561 | (18 << 27) /* 0.480870611 */,
7138 /* 6691 */ 0x07b209e1 | (18 << 27) /* 0.480966452 */,
7139 /* 6692 */ 0x07b26e61 | (18 << 27) /* 0.481062298 */,
7140 /* 6693 */ 0x07b2d2e3 | (18 << 27) /* 0.481158148 */,
7141 /* 6694 */ 0x07b33766 | (18 << 27) /* 0.481254004 */,
7142 /* 6695 */ 0x07b39bea | (18 << 27) /* 0.481349864 */,
7143 /* 6696 */ 0x07b4006f | (18 << 27) /* 0.481445729 */,
7144 /* 6697 */ 0x07b464f6 | (18 << 27) /* 0.481541598 */,
7145 /* 6698 */ 0x07b4c97e | (18 << 27) /* 0.481637473 */,
7146 /* 6699 */ 0x07b52e08 | (18 << 27) /* 0.481733352 */,
7147 /* 6700 */ 0x07b59292 | (18 << 27) /* 0.481829236 */,
7148 /* 6701 */ 0x07b5f71e | (18 << 27) /* 0.481925125 */,
7149 /* 6702 */ 0x07b65bac | (18 << 27) /* 0.482021019 */,
7150 /* 6703 */ 0x07b6c03a | (18 << 27) /* 0.482116917 */,
7151
7152 /* 6704 */ 0x07b724ca | (18 << 27) /* 0.482212820 */,
7153 /* 6705 */ 0x07b7895b | (18 << 27) /* 0.482308728 */,
7154 /* 6706 */ 0x07b7eded | (18 << 27) /* 0.482404640 */,
7155 /* 6707 */ 0x07b85281 | (18 << 27) /* 0.482500558 */,
7156 /* 6708 */ 0x07b8b716 | (18 << 27) /* 0.482596480 */,
7157 /* 6709 */ 0x07b91bac | (18 << 27) /* 0.482692407 */,
7158 /* 6710 */ 0x07b98044 | (18 << 27) /* 0.482788339 */,
7159 /* 6711 */ 0x07b9e4dc | (18 << 27) /* 0.482884275 */,
7160 /* 6712 */ 0x07ba4976 | (18 << 27) /* 0.482980216 */,
7161 /* 6713 */ 0x07baae12 | (18 << 27) /* 0.483076162 */,
7162 /* 6714 */ 0x07bb12ae | (18 << 27) /* 0.483172113 */,
7163 /* 6715 */ 0x07bb774c | (18 << 27) /* 0.483268069 */,
7164 /* 6716 */ 0x07bbdbeb | (18 << 27) /* 0.483364029 */,
7165 /* 6717 */ 0x07bc408c | (18 << 27) /* 0.483459994 */,
7166 /* 6718 */ 0x07bca52d | (18 << 27) /* 0.483555964 */,
7167 /* 6719 */ 0x07bd09d0 | (18 << 27) /* 0.483651939 */,
7168
7169 /* 6720 */ 0x07bd6e75 | (18 << 27) /* 0.483747918 */,
7170 /* 6721 */ 0x07bdd31a | (18 << 27) /* 0.483843902 */,
7171 /* 6722 */ 0x07be37c1 | (18 << 27) /* 0.483939891 */,
7172 /* 6723 */ 0x07be9c69 | (18 << 27) /* 0.484035885 */,
7173 /* 6724 */ 0x07bf0113 | (18 << 27) /* 0.484131883 */,
7174 /* 6725 */ 0x07bf65bd | (18 << 27) /* 0.484227886 */,
7175 /* 6726 */ 0x07bfca69 | (18 << 27) /* 0.484323894 */,
7176 /* 6727 */ 0x07c02f16 | (18 << 27) /* 0.484419907 */,
7177 /* 6728 */ 0x07c093c5 | (18 << 27) /* 0.484515924 */,
7178 /* 6729 */ 0x07c0f875 | (18 << 27) /* 0.484611946 */,
7179 /* 6730 */ 0x07c15d26 | (18 << 27) /* 0.484707973 */,
7180 /* 6731 */ 0x07c1c1d8 | (18 << 27) /* 0.484804005 */,
7181 /* 6732 */ 0x07c2268b | (18 << 27) /* 0.484900041 */,
7182 /* 6733 */ 0x07c28b40 | (18 << 27) /* 0.484996083 */,
7183 /* 6734 */ 0x07c2eff6 | (18 << 27) /* 0.485092128 */,
7184 /* 6735 */ 0x07c354ae | (18 << 27) /* 0.485188179 */,
7185
7186 /* 6736 */ 0x07c3b967 | (18 << 27) /* 0.485284235 */,
7187 /* 6737 */ 0x07c41e21 | (18 << 27) /* 0.485380295 */,
7188 /* 6738 */ 0x07c482dc | (18 << 27) /* 0.485476360 */,
7189 /* 6739 */ 0x07c4e798 | (18 << 27) /* 0.485572430 */,
7190 /* 6740 */ 0x07c54c56 | (18 << 27) /* 0.485668504 */,
7191 /* 6741 */ 0x07c5b115 | (18 << 27) /* 0.485764583 */,
7192 /* 6742 */ 0x07c615d6 | (18 << 27) /* 0.485860667 */,
7193 /* 6743 */ 0x07c67a97 | (18 << 27) /* 0.485956756 */,
7194 /* 6744 */ 0x07c6df5a | (18 << 27) /* 0.486052849 */,
7195 /* 6745 */ 0x07c7441e | (18 << 27) /* 0.486148948 */,
7196 /* 6746 */ 0x07c7a8e4 | (18 << 27) /* 0.486245051 */,
7197 /* 6747 */ 0x07c80daa | (18 << 27) /* 0.486341158 */,
7198 /* 6748 */ 0x07c87272 | (18 << 27) /* 0.486437271 */,
7199 /* 6749 */ 0x07c8d73c | (18 << 27) /* 0.486533388 */,
7200 /* 6750 */ 0x07c93c06 | (18 << 27) /* 0.486629510 */,
7201 /* 6751 */ 0x07c9a0d2 | (18 << 27) /* 0.486725637 */,
7202
7203 /* 6752 */ 0x07ca059f | (18 << 27) /* 0.486821768 */,
7204 /* 6753 */ 0x07ca6a6d | (18 << 27) /* 0.486917905 */,
7205 /* 6754 */ 0x07cacf3d | (18 << 27) /* 0.487014045 */,
7206 /* 6755 */ 0x07cb340e | (18 << 27) /* 0.487110191 */,
7207 /* 6756 */ 0x07cb98e0 | (18 << 27) /* 0.487206342 */,
7208 /* 6757 */ 0x07cbfdb4 | (18 << 27) /* 0.487302497 */,
7209 /* 6758 */ 0x07cc6288 | (18 << 27) /* 0.487398657 */,
7210 /* 6759 */ 0x07ccc75e | (18 << 27) /* 0.487494821 */,
7211 /* 6760 */ 0x07cd2c36 | (18 << 27) /* 0.487590991 */,
7212 /* 6761 */ 0x07cd910e | (18 << 27) /* 0.487687165 */,
7213 /* 6762 */ 0x07cdf5e8 | (18 << 27) /* 0.487783344 */,
7214 /* 6763 */ 0x07ce5ac3 | (18 << 27) /* 0.487879528 */,
7215 /* 6764 */ 0x07cebfa0 | (18 << 27) /* 0.487975716 */,
7216 /* 6765 */ 0x07cf247d | (18 << 27) /* 0.488071909 */,
7217 /* 6766 */ 0x07cf895c | (18 << 27) /* 0.488168107 */,
7218 /* 6767 */ 0x07cfee3c | (18 << 27) /* 0.488264310 */,
7219
7220 /* 6768 */ 0x07d0531e | (18 << 27) /* 0.488360517 */,
7221 /* 6769 */ 0x07d0b801 | (18 << 27) /* 0.488456729 */,
7222 /* 6770 */ 0x07d11ce5 | (18 << 27) /* 0.488552946 */,
7223 /* 6771 */ 0x07d181ca | (18 << 27) /* 0.488649167 */,
7224 /* 6772 */ 0x07d1e6b0 | (18 << 27) /* 0.488745394 */,
7225 /* 6773 */ 0x07d24b98 | (18 << 27) /* 0.488841625 */,
7226 /* 6774 */ 0x07d2b081 | (18 << 27) /* 0.488937860 */,
7227 /* 6775 */ 0x07d3156c | (18 << 27) /* 0.489034101 */,
7228 /* 6776 */ 0x07d37a57 | (18 << 27) /* 0.489130346 */,
7229 /* 6777 */ 0x07d3df44 | (18 << 27) /* 0.489226596 */,
7230 /* 6778 */ 0x07d44432 | (18 << 27) /* 0.489322851 */,
7231 /* 6779 */ 0x07d4a922 | (18 << 27) /* 0.489419110 */,
7232 /* 6780 */ 0x07d50e13 | (18 << 27) /* 0.489515375 */,
7233 /* 6781 */ 0x07d57305 | (18 << 27) /* 0.489611643 */,
7234 /* 6782 */ 0x07d5d7f8 | (18 << 27) /* 0.489707917 */,
7235 /* 6783 */ 0x07d63cec | (18 << 27) /* 0.489804195 */,
7236
7237 /* 6784 */ 0x07d6a1e2 | (18 << 27) /* 0.489900479 */,
7238 /* 6785 */ 0x07d706d9 | (18 << 27) /* 0.489996766 */,
7239 /* 6786 */ 0x07d76bd2 | (18 << 27) /* 0.490093059 */,
7240 /* 6787 */ 0x07d7d0cb | (18 << 27) /* 0.490189356 */,
7241 /* 6788 */ 0x07d835c6 | (18 << 27) /* 0.490285658 */,
7242 /* 6789 */ 0x07d89ac2 | (18 << 27) /* 0.490381965 */,
7243 /* 6790 */ 0x07d8ffc0 | (18 << 27) /* 0.490478277 */,
7244 /* 6791 */ 0x07d964be | (18 << 27) /* 0.490574593 */,
7245 /* 6792 */ 0x07d9c9be | (18 << 27) /* 0.490670914 */,
7246 /* 6793 */ 0x07da2ebf | (18 << 27) /* 0.490767239 */,
7247 /* 6794 */ 0x07da93c2 | (18 << 27) /* 0.490863570 */,
7248 /* 6795 */ 0x07daf8c6 | (18 << 27) /* 0.490959905 */,
7249 /* 6796 */ 0x07db5dcb | (18 << 27) /* 0.491056245 */,
7250 /* 6797 */ 0x07dbc2d1 | (18 << 27) /* 0.491152589 */,
7251 /* 6798 */ 0x07dc27d9 | (18 << 27) /* 0.491248939 */,
7252 /* 6799 */ 0x07dc8ce1 | (18 << 27) /* 0.491345293 */,
7253
7254 /* 6800 */ 0x07dcf1ec | (18 << 27) /* 0.491441651 */,
7255 /* 6801 */ 0x07dd56f7 | (18 << 27) /* 0.491538015 */,
7256 /* 6802 */ 0x07ddbc04 | (18 << 27) /* 0.491634383 */,
7257 /* 6803 */ 0x07de2111 | (18 << 27) /* 0.491730756 */,
7258 /* 6804 */ 0x07de8621 | (18 << 27) /* 0.491827134 */,
7259 /* 6805 */ 0x07deeb31 | (18 << 27) /* 0.491923516 */,
7260 /* 6806 */ 0x07df5043 | (18 << 27) /* 0.492019903 */,
7261 /* 6807 */ 0x07dfb556 | (18 << 27) /* 0.492116295 */,
7262 /* 6808 */ 0x07e01a6a | (18 << 27) /* 0.492212691 */,
7263 /* 6809 */ 0x07e07f80 | (18 << 27) /* 0.492309093 */,
7264 /* 6810 */ 0x07e0e496 | (18 << 27) /* 0.492405499 */,
7265 /* 6811 */ 0x07e149ae | (18 << 27) /* 0.492501909 */,
7266 /* 6812 */ 0x07e1aec8 | (18 << 27) /* 0.492598325 */,
7267 /* 6813 */ 0x07e213e2 | (18 << 27) /* 0.492694745 */,
7268 /* 6814 */ 0x07e278fe | (18 << 27) /* 0.492791170 */,
7269 /* 6815 */ 0x07e2de1b | (18 << 27) /* 0.492887599 */,
7270
7271 /* 6816 */ 0x07e3433a | (18 << 27) /* 0.492984033 */,
7272 /* 6817 */ 0x07e3a859 | (18 << 27) /* 0.493080472 */,
7273 /* 6818 */ 0x07e40d7a | (18 << 27) /* 0.493176916 */,
7274 /* 6819 */ 0x07e4729c | (18 << 27) /* 0.493273365 */,
7275 /* 6820 */ 0x07e4d7c0 | (18 << 27) /* 0.493369818 */,
7276 /* 6821 */ 0x07e53ce4 | (18 << 27) /* 0.493466275 */,
7277 /* 6822 */ 0x07e5a20a | (18 << 27) /* 0.493562738 */,
7278 /* 6823 */ 0x07e60732 | (18 << 27) /* 0.493659205 */,
7279 /* 6824 */ 0x07e66c5a | (18 << 27) /* 0.493755677 */,
7280 /* 6825 */ 0x07e6d184 | (18 << 27) /* 0.493852154 */,
7281 /* 6826 */ 0x07e736af | (18 << 27) /* 0.493948635 */,
7282 /* 6827 */ 0x07e79bdb | (18 << 27) /* 0.494045122 */,
7283 /* 6828 */ 0x07e80109 | (18 << 27) /* 0.494141612 */,
7284 /* 6829 */ 0x07e86638 | (18 << 27) /* 0.494238108 */,
7285 /* 6830 */ 0x07e8cb68 | (18 << 27) /* 0.494334608 */,
7286 /* 6831 */ 0x07e93099 | (18 << 27) /* 0.494431113 */,
7287
7288 /* 6832 */ 0x07e995cc | (18 << 27) /* 0.494527623 */,
7289 /* 6833 */ 0x07e9fb00 | (18 << 27) /* 0.494624137 */,
7290 /* 6834 */ 0x07ea6035 | (18 << 27) /* 0.494720656 */,
7291 /* 6835 */ 0x07eac56b | (18 << 27) /* 0.494817180 */,
7292 /* 6836 */ 0x07eb2aa3 | (18 << 27) /* 0.494913709 */,
7293 /* 6837 */ 0x07eb8fdc | (18 << 27) /* 0.495010242 */,
7294 /* 6838 */ 0x07ebf516 | (18 << 27) /* 0.495106780 */,
7295 /* 6839 */ 0x07ec5a51 | (18 << 27) /* 0.495203322 */,
7296 /* 6840 */ 0x07ecbf8e | (18 << 27) /* 0.495299870 */,
7297 /* 6841 */ 0x07ed24cc | (18 << 27) /* 0.495396422 */,
7298 /* 6842 */ 0x07ed8a0b | (18 << 27) /* 0.495492978 */,
7299 /* 6843 */ 0x07edef4c | (18 << 27) /* 0.495589540 */,
7300 /* 6844 */ 0x07ee548e | (18 << 27) /* 0.495686106 */,
7301 /* 6845 */ 0x07eeb9d1 | (18 << 27) /* 0.495782677 */,
7302 /* 6846 */ 0x07ef1f15 | (18 << 27) /* 0.495879252 */,
7303 /* 6847 */ 0x07ef845b | (18 << 27) /* 0.495975833 */,
7304
7305 /* 6848 */ 0x07efe9a1 | (18 << 27) /* 0.496072418 */,
7306 /* 6849 */ 0x07f04ee9 | (18 << 27) /* 0.496169007 */,
7307 /* 6850 */ 0x07f0b433 | (18 << 27) /* 0.496265602 */,
7308 /* 6851 */ 0x07f1197d | (18 << 27) /* 0.496362201 */,
7309 /* 6852 */ 0x07f17ec9 | (18 << 27) /* 0.496458804 */,
7310 /* 6853 */ 0x07f1e416 | (18 << 27) /* 0.496555413 */,
7311 /* 6854 */ 0x07f24965 | (18 << 27) /* 0.496652026 */,
7312 /* 6855 */ 0x07f2aeb5 | (18 << 27) /* 0.496748644 */,
7313 /* 6856 */ 0x07f31405 | (18 << 27) /* 0.496845266 */,
7314 /* 6857 */ 0x07f37958 | (18 << 27) /* 0.496941894 */,
7315 /* 6858 */ 0x07f3deab | (18 << 27) /* 0.497038526 */,
7316 /* 6859 */ 0x07f44400 | (18 << 27) /* 0.497135162 */,
7317 /* 6860 */ 0x07f4a956 | (18 << 27) /* 0.497231804 */,
7318 /* 6861 */ 0x07f50ead | (18 << 27) /* 0.497328450 */,
7319 /* 6862 */ 0x07f57405 | (18 << 27) /* 0.497425100 */,
7320 /* 6863 */ 0x07f5d95f | (18 << 27) /* 0.497521756 */,
7321
7322 /* 6864 */ 0x07f63eba | (18 << 27) /* 0.497618416 */,
7323 /* 6865 */ 0x07f6a416 | (18 << 27) /* 0.497715081 */,
7324 /* 6866 */ 0x07f70974 | (18 << 27) /* 0.497811750 */,
7325 /* 6867 */ 0x07f76ed3 | (18 << 27) /* 0.497908425 */,
7326 /* 6868 */ 0x07f7d433 | (18 << 27) /* 0.498005103 */,
7327 /* 6869 */ 0x07f83994 | (18 << 27) /* 0.498101787 */,
7328 /* 6870 */ 0x07f89ef7 | (18 << 27) /* 0.498198475 */,
7329 /* 6871 */ 0x07f9045a | (18 << 27) /* 0.498295168 */,
7330 /* 6872 */ 0x07f969c0 | (18 << 27) /* 0.498391866 */,
7331 /* 6873 */ 0x07f9cf26 | (18 << 27) /* 0.498488568 */,
7332 /* 6874 */ 0x07fa348e | (18 << 27) /* 0.498585275 */,
7333 /* 6875 */ 0x07fa99f6 | (18 << 27) /* 0.498681987 */,
7334 /* 6876 */ 0x07faff60 | (18 << 27) /* 0.498778704 */,
7335 /* 6877 */ 0x07fb64cc | (18 << 27) /* 0.498875425 */,
7336 /* 6878 */ 0x07fbca38 | (18 << 27) /* 0.498972150 */,
7337 /* 6879 */ 0x07fc2fa6 | (18 << 27) /* 0.499068881 */,
7338
7339 /* 6880 */ 0x07fc9516 | (18 << 27) /* 0.499165616 */,
7340 /* 6881 */ 0x07fcfa86 | (18 << 27) /* 0.499262356 */,
7341 /* 6882 */ 0x07fd5ff8 | (18 << 27) /* 0.499359101 */,
7342 /* 6883 */ 0x07fdc56b | (18 << 27) /* 0.499455850 */,
7343 /* 6884 */ 0x07fe2adf | (18 << 27) /* 0.499552604 */,
7344 /* 6885 */ 0x07fe9054 | (18 << 27) /* 0.499649362 */,
7345 /* 6886 */ 0x07fef5cb | (18 << 27) /* 0.499746126 */,
7346 /* 6887 */ 0x07ff5b43 | (18 << 27) /* 0.499842894 */,
7347 /* 6888 */ 0x07ffc0bc | (18 << 27) /* 0.499939666 */,
7348 /* 6889 */ 0x0400131b | (19 << 27) /* 0.250018222 */,
7349 /* 6890 */ 0x040045d9 | (19 << 27) /* 0.250066613 */,
7350 /* 6891 */ 0x04007897 | (19 << 27) /* 0.250115006 */,
7351 /* 6892 */ 0x0400ab57 | (19 << 27) /* 0.250163402 */,
7352 /* 6893 */ 0x0400de16 | (19 << 27) /* 0.250211800 */,
7353 /* 6894 */ 0x040110d7 | (19 << 27) /* 0.250260200 */,
7354 /* 6895 */ 0x04014398 | (19 << 27) /* 0.250308603 */,
7355
7356 /* 6896 */ 0x04017659 | (19 << 27) /* 0.250357008 */,
7357 /* 6897 */ 0x0401a91c | (19 << 27) /* 0.250405415 */,
7358 /* 6898 */ 0x0401dbdf | (19 << 27) /* 0.250453825 */,
7359 /* 6899 */ 0x04020ea2 | (19 << 27) /* 0.250502237 */,
7360 /* 6900 */ 0x04024166 | (19 << 27) /* 0.250550652 */,
7361 /* 6901 */ 0x0402742b | (19 << 27) /* 0.250599068 */,
7362 /* 6902 */ 0x0402a6f0 | (19 << 27) /* 0.250647488 */,
7363 /* 6903 */ 0x0402d9b6 | (19 << 27) /* 0.250695909 */,
7364 /* 6904 */ 0x04030c7d | (19 << 27) /* 0.250744333 */,
7365 /* 6905 */ 0x04033f44 | (19 << 27) /* 0.250792759 */,
7366 /* 6906 */ 0x0403720c | (19 << 27) /* 0.250841187 */,
7367 /* 6907 */ 0x0403a4d5 | (19 << 27) /* 0.250889618 */,
7368 /* 6908 */ 0x0403d79e | (19 << 27) /* 0.250938051 */,
7369 /* 6909 */ 0x04040a68 | (19 << 27) /* 0.250986487 */,
7370 /* 6910 */ 0x04043d32 | (19 << 27) /* 0.251034924 */,
7371 /* 6911 */ 0x04046ffd | (19 << 27) /* 0.251083365 */,
7372
7373 /* 6912 */ 0x0404a2c9 | (19 << 27) /* 0.251131807 */,
7374 /* 6913 */ 0x0404d595 | (19 << 27) /* 0.251180252 */,
7375 /* 6914 */ 0x04050862 | (19 << 27) /* 0.251228699 */,
7376 /* 6915 */ 0x04053b30 | (19 << 27) /* 0.251277148 */,
7377 /* 6916 */ 0x04056dfe | (19 << 27) /* 0.251325600 */,
7378 /* 6917 */ 0x0405a0cd | (19 << 27) /* 0.251374054 */,
7379 /* 6918 */ 0x0405d39c | (19 << 27) /* 0.251422511 */,
7380 /* 6919 */ 0x0406066c | (19 << 27) /* 0.251470970 */,
7381 /* 6920 */ 0x0406393d | (19 << 27) /* 0.251519431 */,
7382 /* 6921 */ 0x04066c0e | (19 << 27) /* 0.251567894 */,
7383 /* 6922 */ 0x04069ee0 | (19 << 27) /* 0.251616360 */,
7384 /* 6923 */ 0x0406d1b3 | (19 << 27) /* 0.251664828 */,
7385 /* 6924 */ 0x04070486 | (19 << 27) /* 0.251713299 */,
7386 /* 6925 */ 0x0407375a | (19 << 27) /* 0.251761772 */,
7387 /* 6926 */ 0x04076a2e | (19 << 27) /* 0.251810247 */,
7388 /* 6927 */ 0x04079d03 | (19 << 27) /* 0.251858724 */,
7389
7390 /* 6928 */ 0x0407cfd9 | (19 << 27) /* 0.251907204 */,
7391 /* 6929 */ 0x040802af | (19 << 27) /* 0.251955686 */,
7392 /* 6930 */ 0x04083586 | (19 << 27) /* 0.252004171 */,
7393 /* 6931 */ 0x0408685e | (19 << 27) /* 0.252052658 */,
7394 /* 6932 */ 0x04089b36 | (19 << 27) /* 0.252101147 */,
7395 /* 6933 */ 0x0408ce0f | (19 << 27) /* 0.252149638 */,
7396 /* 6934 */ 0x040900e8 | (19 << 27) /* 0.252198132 */,
7397 /* 6935 */ 0x040933c2 | (19 << 27) /* 0.252246628 */,
7398 /* 6936 */ 0x0409669d | (19 << 27) /* 0.252295127 */,
7399 /* 6937 */ 0x04099978 | (19 << 27) /* 0.252343627 */,
7400 /* 6938 */ 0x0409cc54 | (19 << 27) /* 0.252392131 */,
7401 /* 6939 */ 0x0409ff31 | (19 << 27) /* 0.252440636 */,
7402 /* 6940 */ 0x040a320e | (19 << 27) /* 0.252489144 */,
7403 /* 6941 */ 0x040a64ec | (19 << 27) /* 0.252537654 */,
7404 /* 6942 */ 0x040a97cb | (19 << 27) /* 0.252586166 */,
7405 /* 6943 */ 0x040acaaa | (19 << 27) /* 0.252634681 */,
7406
7407 /* 6944 */ 0x040afd89 | (19 << 27) /* 0.252683198 */,
7408 /* 6945 */ 0x040b306a | (19 << 27) /* 0.252731718 */,
7409 /* 6946 */ 0x040b634b | (19 << 27) /* 0.252780240 */,
7410 /* 6947 */ 0x040b962c | (19 << 27) /* 0.252828764 */,
7411 /* 6948 */ 0x040bc90e | (19 << 27) /* 0.252877290 */,
7412 /* 6949 */ 0x040bfbf1 | (19 << 27) /* 0.252925819 */,
7413 /* 6950 */ 0x040c2ed5 | (19 << 27) /* 0.252974350 */,
7414 /* 6951 */ 0x040c61b9 | (19 << 27) /* 0.253022883 */,
7415 /* 6952 */ 0x040c949e | (19 << 27) /* 0.253071419 */,
7416 /* 6953 */ 0x040cc783 | (19 << 27) /* 0.253119957 */,
7417 /* 6954 */ 0x040cfa69 | (19 << 27) /* 0.253168498 */,
7418 /* 6955 */ 0x040d2d4f | (19 << 27) /* 0.253217040 */,
7419 /* 6956 */ 0x040d6037 | (19 << 27) /* 0.253265585 */,
7420 /* 6957 */ 0x040d931e | (19 << 27) /* 0.253314133 */,
7421 /* 6958 */ 0x040dc607 | (19 << 27) /* 0.253362682 */,
7422 /* 6959 */ 0x040df8f0 | (19 << 27) /* 0.253411234 */,
7423
7424 /* 6960 */ 0x040e2bda | (19 << 27) /* 0.253459789 */,
7425 /* 6961 */ 0x040e5ec4 | (19 << 27) /* 0.253508345 */,
7426 /* 6962 */ 0x040e91af | (19 << 27) /* 0.253556904 */,
7427 /* 6963 */ 0x040ec49b | (19 << 27) /* 0.253605466 */,
7428 /* 6964 */ 0x040ef787 | (19 << 27) /* 0.253654029 */,
7429 /* 6965 */ 0x040f2a74 | (19 << 27) /* 0.253702595 */,
7430 /* 6966 */ 0x040f5d61 | (19 << 27) /* 0.253751164 */,
7431 /* 6967 */ 0x040f904f | (19 << 27) /* 0.253799734 */,
7432 /* 6968 */ 0x040fc33e | (19 << 27) /* 0.253848307 */,
7433 /* 6969 */ 0x040ff62d | (19 << 27) /* 0.253896883 */,
7434 /* 6970 */ 0x0410291d | (19 << 27) /* 0.253945460 */,
7435 /* 6971 */ 0x04105c0e | (19 << 27) /* 0.253994040 */,
7436 /* 6972 */ 0x04108eff | (19 << 27) /* 0.254042622 */,
7437 /* 6973 */ 0x0410c1f1 | (19 << 27) /* 0.254091207 */,
7438 /* 6974 */ 0x0410f4e3 | (19 << 27) /* 0.254139794 */,
7439 /* 6975 */ 0x041127d6 | (19 << 27) /* 0.254188383 */,
7440
7441 /* 6976 */ 0x04115aca | (19 << 27) /* 0.254236974 */,
7442 /* 6977 */ 0x04118dbe | (19 << 27) /* 0.254285568 */,
7443 /* 6978 */ 0x0411c0b3 | (19 << 27) /* 0.254334165 */,
7444 /* 6979 */ 0x0411f3a9 | (19 << 27) /* 0.254382763 */,
7445 /* 6980 */ 0x0412269f | (19 << 27) /* 0.254431364 */,
7446 /* 6981 */ 0x04125996 | (19 << 27) /* 0.254479967 */,
7447 /* 6982 */ 0x04128c8d | (19 << 27) /* 0.254528572 */,
7448 /* 6983 */ 0x0412bf85 | (19 << 27) /* 0.254577180 */,
7449 /* 6984 */ 0x0412f27e | (19 << 27) /* 0.254625790 */,
7450 /* 6985 */ 0x04132577 | (19 << 27) /* 0.254674403 */,
7451 /* 6986 */ 0x04135871 | (19 << 27) /* 0.254723017 */,
7452 /* 6987 */ 0x04138b6c | (19 << 27) /* 0.254771635 */,
7453 /* 6988 */ 0x0413be67 | (19 << 27) /* 0.254820254 */,
7454 /* 6989 */ 0x0413f163 | (19 << 27) /* 0.254868876 */,
7455 /* 6990 */ 0x0414245f | (19 << 27) /* 0.254917500 */,
7456 /* 6991 */ 0x0414575c | (19 << 27) /* 0.254966126 */,
7457
7458 /* 6992 */ 0x04148a5a | (19 << 27) /* 0.255014755 */,
7459 /* 6993 */ 0x0414bd58 | (19 << 27) /* 0.255063386 */,
7460 /* 6994 */ 0x0414f057 | (19 << 27) /* 0.255112019 */,
7461 /* 6995 */ 0x04152356 | (19 << 27) /* 0.255160655 */,
7462 /* 6996 */ 0x04155657 | (19 << 27) /* 0.255209292 */,
7463 /* 6997 */ 0x04158957 | (19 << 27) /* 0.255257933 */,
7464 /* 6998 */ 0x0415bc59 | (19 << 27) /* 0.255306575 */,
7465 /* 6999 */ 0x0415ef5b | (19 << 27) /* 0.255355220 */,
7466 /* 7000 */ 0x0416225d | (19 << 27) /* 0.255403867 */,
7467 /* 7001 */ 0x04165561 | (19 << 27) /* 0.255452517 */,
7468 /* 7002 */ 0x04168864 | (19 << 27) /* 0.255501169 */,
7469 /* 7003 */ 0x0416bb69 | (19 << 27) /* 0.255549823 */,
7470 /* 7004 */ 0x0416ee6e | (19 << 27) /* 0.255598479 */,
7471 /* 7005 */ 0x04172174 | (19 << 27) /* 0.255647138 */,
7472 /* 7006 */ 0x0417547a | (19 << 27) /* 0.255695799 */,
7473 /* 7007 */ 0x04178781 | (19 << 27) /* 0.255744463 */,
7474
7475 /* 7008 */ 0x0417ba89 | (19 << 27) /* 0.255793128 */,
7476 /* 7009 */ 0x0417ed91 | (19 << 27) /* 0.255841796 */,
7477 /* 7010 */ 0x0418209a | (19 << 27) /* 0.255890467 */,
7478 /* 7011 */ 0x041853a3 | (19 << 27) /* 0.255939139 */,
7479 /* 7012 */ 0x041886ad | (19 << 27) /* 0.255987814 */,
7480 /* 7013 */ 0x0418b9b8 | (19 << 27) /* 0.256036492 */,
7481 /* 7014 */ 0x0418ecc3 | (19 << 27) /* 0.256085171 */,
7482 /* 7015 */ 0x04191fcf | (19 << 27) /* 0.256133853 */,
7483 /* 7016 */ 0x041952dc | (19 << 27) /* 0.256182537 */,
7484 /* 7017 */ 0x041985e9 | (19 << 27) /* 0.256231224 */,
7485 /* 7018 */ 0x0419b8f7 | (19 << 27) /* 0.256279913 */,
7486 /* 7019 */ 0x0419ec05 | (19 << 27) /* 0.256328604 */,
7487 /* 7020 */ 0x041a1f15 | (19 << 27) /* 0.256377297 */,
7488 /* 7021 */ 0x041a5224 | (19 << 27) /* 0.256425993 */,
7489 /* 7022 */ 0x041a8534 | (19 << 27) /* 0.256474691 */,
7490 /* 7023 */ 0x041ab845 | (19 << 27) /* 0.256523392 */,
7491
7492 /* 7024 */ 0x041aeb57 | (19 << 27) /* 0.256572095 */,
7493 /* 7025 */ 0x041b1e69 | (19 << 27) /* 0.256620800 */,
7494 /* 7026 */ 0x041b517c | (19 << 27) /* 0.256669507 */,
7495 /* 7027 */ 0x041b848f | (19 << 27) /* 0.256718217 */,
7496 /* 7028 */ 0x041bb7a3 | (19 << 27) /* 0.256766929 */,
7497 /* 7029 */ 0x041beab8 | (19 << 27) /* 0.256815643 */,
7498 /* 7030 */ 0x041c1dcd | (19 << 27) /* 0.256864359 */,
7499 /* 7031 */ 0x041c50e3 | (19 << 27) /* 0.256913078 */,
7500 /* 7032 */ 0x041c83fa | (19 << 27) /* 0.256961800 */,
7501 /* 7033 */ 0x041cb711 | (19 << 27) /* 0.257010523 */,
7502 /* 7034 */ 0x041cea28 | (19 << 27) /* 0.257059249 */,
7503 /* 7035 */ 0x041d1d41 | (19 << 27) /* 0.257107977 */,
7504 /* 7036 */ 0x041d505a | (19 << 27) /* 0.257156708 */,
7505 /* 7037 */ 0x041d8373 | (19 << 27) /* 0.257205440 */,
7506 /* 7038 */ 0x041db68e | (19 << 27) /* 0.257254175 */,
7507 /* 7039 */ 0x041de9a8 | (19 << 27) /* 0.257302913 */,
7508
7509 /* 7040 */ 0x041e1cc4 | (19 << 27) /* 0.257351652 */,
7510 /* 7041 */ 0x041e4fe0 | (19 << 27) /* 0.257400394 */,
7511 /* 7042 */ 0x041e82fd | (19 << 27) /* 0.257449139 */,
7512 /* 7043 */ 0x041eb61a | (19 << 27) /* 0.257497885 */,
7513 /* 7044 */ 0x041ee938 | (19 << 27) /* 0.257546634 */,
7514 /* 7045 */ 0x041f1c57 | (19 << 27) /* 0.257595386 */,
7515 /* 7046 */ 0x041f4f76 | (19 << 27) /* 0.257644139 */,
7516 /* 7047 */ 0x041f8296 | (19 << 27) /* 0.257692895 */,
7517 /* 7048 */ 0x041fb5b6 | (19 << 27) /* 0.257741653 */,
7518 /* 7049 */ 0x041fe8d7 | (19 << 27) /* 0.257790414 */,
7519 /* 7050 */ 0x04201bf9 | (19 << 27) /* 0.257839176 */,
7520 /* 7051 */ 0x04204f1b | (19 << 27) /* 0.257887941 */,
7521 /* 7052 */ 0x0420823e | (19 << 27) /* 0.257936709 */,
7522 /* 7053 */ 0x0420b561 | (19 << 27) /* 0.257985478 */,
7523 /* 7054 */ 0x0420e885 | (19 << 27) /* 0.258034250 */,
7524 /* 7055 */ 0x04211baa | (19 << 27) /* 0.258083025 */,
7525
7526 /* 7056 */ 0x04214ed0 | (19 << 27) /* 0.258131801 */,
7527 /* 7057 */ 0x042181f6 | (19 << 27) /* 0.258180580 */,
7528 /* 7058 */ 0x0421b51c | (19 << 27) /* 0.258229361 */,
7529 /* 7059 */ 0x0421e843 | (19 << 27) /* 0.258278145 */,
7530 /* 7060 */ 0x04221b6b | (19 << 27) /* 0.258326931 */,
7531 /* 7061 */ 0x04224e94 | (19 << 27) /* 0.258375719 */,
7532 /* 7062 */ 0x042281bd | (19 << 27) /* 0.258424509 */,
7533 /* 7063 */ 0x0422b4e6 | (19 << 27) /* 0.258473302 */,
7534 /* 7064 */ 0x0422e811 | (19 << 27) /* 0.258522097 */,
7535 /* 7065 */ 0x04231b3c | (19 << 27) /* 0.258570894 */,
7536 /* 7066 */ 0x04234e67 | (19 << 27) /* 0.258619694 */,
7537 /* 7067 */ 0x04238193 | (19 << 27) /* 0.258668496 */,
7538 /* 7068 */ 0x0423b4c0 | (19 << 27) /* 0.258717300 */,
7539 /* 7069 */ 0x0423e7ee | (19 << 27) /* 0.258766106 */,
7540 /* 7070 */ 0x04241b1c | (19 << 27) /* 0.258814915 */,
7541 /* 7071 */ 0x04244e4a | (19 << 27) /* 0.258863726 */,
7542
7543 /* 7072 */ 0x04248179 | (19 << 27) /* 0.258912540 */,
7544 /* 7073 */ 0x0424b4a9 | (19 << 27) /* 0.258961356 */,
7545 /* 7074 */ 0x0424e7da | (19 << 27) /* 0.259010174 */,
7546 /* 7075 */ 0x04251b0b | (19 << 27) /* 0.259058994 */,
7547 /* 7076 */ 0x04254e3d | (19 << 27) /* 0.259107817 */,
7548 /* 7077 */ 0x0425816f | (19 << 27) /* 0.259156642 */,
7549 /* 7078 */ 0x0425b4a2 | (19 << 27) /* 0.259205469 */,
7550 /* 7079 */ 0x0425e7d6 | (19 << 27) /* 0.259254298 */,
7551 /* 7080 */ 0x04261b0a | (19 << 27) /* 0.259303130 */,
7552 /* 7081 */ 0x04264e3f | (19 << 27) /* 0.259351964 */,
7553 /* 7082 */ 0x04268174 | (19 << 27) /* 0.259400801 */,
7554 /* 7083 */ 0x0426b4aa | (19 << 27) /* 0.259449639 */,
7555 /* 7084 */ 0x0426e7e1 | (19 << 27) /* 0.259498480 */,
7556 /* 7085 */ 0x04271b18 | (19 << 27) /* 0.259547324 */,
7557 /* 7086 */ 0x04274e50 | (19 << 27) /* 0.259596169 */,
7558 /* 7087 */ 0x04278188 | (19 << 27) /* 0.259645017 */,
7559
7560 /* 7088 */ 0x0427b4c2 | (19 << 27) /* 0.259693868 */,
7561 /* 7089 */ 0x0427e7fb | (19 << 27) /* 0.259742720 */,
7562 /* 7090 */ 0x04281b36 | (19 << 27) /* 0.259791575 */,
7563 /* 7091 */ 0x04284e71 | (19 << 27) /* 0.259840432 */,
7564 /* 7092 */ 0x042881ac | (19 << 27) /* 0.259889291 */,
7565 /* 7093 */ 0x0428b4e8 | (19 << 27) /* 0.259938153 */,
7566 /* 7094 */ 0x0428e825 | (19 << 27) /* 0.259987017 */,
7567 /* 7095 */ 0x04291b63 | (19 << 27) /* 0.260035883 */,
7568 /* 7096 */ 0x04294ea1 | (19 << 27) /* 0.260084752 */,
7569 /* 7097 */ 0x042981df | (19 << 27) /* 0.260133623 */,
7570 /* 7098 */ 0x0429b51f | (19 << 27) /* 0.260182496 */,
7571 /* 7099 */ 0x0429e85f | (19 << 27) /* 0.260231372 */,
7572 /* 7100 */ 0x042a1b9f | (19 << 27) /* 0.260280249 */,
7573 /* 7101 */ 0x042a4ee0 | (19 << 27) /* 0.260329129 */,
7574 /* 7102 */ 0x042a8222 | (19 << 27) /* 0.260378012 */,
7575 /* 7103 */ 0x042ab564 | (19 << 27) /* 0.260426896 */,
7576
7577 /* 7104 */ 0x042ae8a7 | (19 << 27) /* 0.260475783 */,
7578 /* 7105 */ 0x042b1beb | (19 << 27) /* 0.260524673 */,
7579 /* 7106 */ 0x042b4f2f | (19 << 27) /* 0.260573564 */,
7580 /* 7107 */ 0x042b8274 | (19 << 27) /* 0.260622458 */,
7581 /* 7108 */ 0x042bb5ba | (19 << 27) /* 0.260671354 */,
7582 /* 7109 */ 0x042be900 | (19 << 27) /* 0.260720252 */,
7583 /* 7110 */ 0x042c1c46 | (19 << 27) /* 0.260769153 */,
7584 /* 7111 */ 0x042c4f8e | (19 << 27) /* 0.260818056 */,
7585 /* 7112 */ 0x042c82d6 | (19 << 27) /* 0.260866961 */,
7586 /* 7113 */ 0x042cb61e | (19 << 27) /* 0.260915869 */,
7587 /* 7114 */ 0x042ce967 | (19 << 27) /* 0.260964779 */,
7588 /* 7115 */ 0x042d1cb1 | (19 << 27) /* 0.261013691 */,
7589 /* 7116 */ 0x042d4ffb | (19 << 27) /* 0.261062606 */,
7590 /* 7117 */ 0x042d8346 | (19 << 27) /* 0.261111522 */,
7591 /* 7118 */ 0x042db692 | (19 << 27) /* 0.261160441 */,
7592 /* 7119 */ 0x042de9de | (19 << 27) /* 0.261209363 */,
7593
7594 /* 7120 */ 0x042e1d2b | (19 << 27) /* 0.261258286 */,
7595 /* 7121 */ 0x042e5078 | (19 << 27) /* 0.261307212 */,
7596 /* 7122 */ 0x042e83c6 | (19 << 27) /* 0.261356140 */,
7597 /* 7123 */ 0x042eb715 | (19 << 27) /* 0.261405071 */,
7598 /* 7124 */ 0x042eea64 | (19 << 27) /* 0.261454004 */,
7599 /* 7125 */ 0x042f1db4 | (19 << 27) /* 0.261502939 */,
7600 /* 7126 */ 0x042f5105 | (19 << 27) /* 0.261551876 */,
7601 /* 7127 */ 0x042f8456 | (19 << 27) /* 0.261600816 */,
7602 /* 7128 */ 0x042fb7a8 | (19 << 27) /* 0.261649758 */,
7603 /* 7129 */ 0x042feafa | (19 << 27) /* 0.261698702 */,
7604 /* 7130 */ 0x04301e4d | (19 << 27) /* 0.261747649 */,
7605 /* 7131 */ 0x043051a1 | (19 << 27) /* 0.261796597 */,
7606 /* 7132 */ 0x043084f5 | (19 << 27) /* 0.261845548 */,
7607 /* 7133 */ 0x0430b84a | (19 << 27) /* 0.261894502 */,
7608 /* 7134 */ 0x0430eb9f | (19 << 27) /* 0.261943458 */,
7609 /* 7135 */ 0x04311ef5 | (19 << 27) /* 0.261992416 */,
7610
7611 /* 7136 */ 0x0431524c | (19 << 27) /* 0.262041376 */,
7612 /* 7137 */ 0x043185a3 | (19 << 27) /* 0.262090338 */,
7613 /* 7138 */ 0x0431b8fb | (19 << 27) /* 0.262139303 */,
7614 /* 7139 */ 0x0431ec54 | (19 << 27) /* 0.262188270 */,
7615 /* 7140 */ 0x04321fad | (19 << 27) /* 0.262237240 */,
7616 /* 7141 */ 0x04325306 | (19 << 27) /* 0.262286211 */,
7617 /* 7142 */ 0x04328661 | (19 << 27) /* 0.262335185 */,
7618 /* 7143 */ 0x0432b9bc | (19 << 27) /* 0.262384162 */,
7619 /* 7144 */ 0x0432ed17 | (19 << 27) /* 0.262433140 */,
7620 /* 7145 */ 0x04332074 | (19 << 27) /* 0.262482121 */,
7621 /* 7146 */ 0x043353d0 | (19 << 27) /* 0.262531104 */,
7622 /* 7147 */ 0x0433872e | (19 << 27) /* 0.262580089 */,
7623 /* 7148 */ 0x0433ba8c | (19 << 27) /* 0.262629077 */,
7624 /* 7149 */ 0x0433edea | (19 << 27) /* 0.262678067 */,
7625 /* 7150 */ 0x0434214a | (19 << 27) /* 0.262727059 */,
7626 /* 7151 */ 0x043454aa | (19 << 27) /* 0.262776054 */,
7627
7628 /* 7152 */ 0x0434880a | (19 << 27) /* 0.262825051 */,
7629 /* 7153 */ 0x0434bb6b | (19 << 27) /* 0.262874050 */,
7630 /* 7154 */ 0x0434eecd | (19 << 27) /* 0.262923051 */,
7631 /* 7155 */ 0x0435222f | (19 << 27) /* 0.262972055 */,
7632 /* 7156 */ 0x04355592 | (19 << 27) /* 0.263021061 */,
7633 /* 7157 */ 0x043588f6 | (19 << 27) /* 0.263070069 */,
7634 /* 7158 */ 0x0435bc5a | (19 << 27) /* 0.263119079 */,
7635 /* 7159 */ 0x0435efbf | (19 << 27) /* 0.263168092 */,
7636 /* 7160 */ 0x04362324 | (19 << 27) /* 0.263217107 */,
7637 /* 7161 */ 0x0436568a | (19 << 27) /* 0.263266125 */,
7638 /* 7162 */ 0x043689f1 | (19 << 27) /* 0.263315144 */,
7639 /* 7163 */ 0x0436bd58 | (19 << 27) /* 0.263364166 */,
7640 /* 7164 */ 0x0436f0c0 | (19 << 27) /* 0.263413191 */,
7641 /* 7165 */ 0x04372428 | (19 << 27) /* 0.263462217 */,
7642 /* 7166 */ 0x04375791 | (19 << 27) /* 0.263511246 */,
7643 /* 7167 */ 0x04378afb | (19 << 27) /* 0.263560277 */,
7644
7645 /* 7168 */ 0x0437be65 | (19 << 27) /* 0.263609310 */,
7646 /* 7169 */ 0x0437f1d0 | (19 << 27) /* 0.263658346 */,
7647 /* 7170 */ 0x0438253c | (19 << 27) /* 0.263707384 */,
7648 /* 7171 */ 0x043858a8 | (19 << 27) /* 0.263756424 */,
7649 /* 7172 */ 0x04388c14 | (19 << 27) /* 0.263805466 */,
7650 /* 7173 */ 0x0438bf82 | (19 << 27) /* 0.263854511 */,
7651 /* 7174 */ 0x0438f2f0 | (19 << 27) /* 0.263903558 */,
7652 /* 7175 */ 0x0439265e | (19 << 27) /* 0.263952607 */,
7653 /* 7176 */ 0x043959cd | (19 << 27) /* 0.264001659 */,
7654 /* 7177 */ 0x04398d3d | (19 << 27) /* 0.264050713 */,
7655 /* 7178 */ 0x0439c0ae | (19 << 27) /* 0.264099769 */,
7656 /* 7179 */ 0x0439f41f | (19 << 27) /* 0.264148827 */,
7657 /* 7180 */ 0x043a2790 | (19 << 27) /* 0.264197888 */,
7658 /* 7181 */ 0x043a5b02 | (19 << 27) /* 0.264246951 */,
7659 /* 7182 */ 0x043a8e75 | (19 << 27) /* 0.264296016 */,
7660 /* 7183 */ 0x043ac1e9 | (19 << 27) /* 0.264345084 */,
7661
7662 /* 7184 */ 0x043af55d | (19 << 27) /* 0.264394153 */,
7663 /* 7185 */ 0x043b28d2 | (19 << 27) /* 0.264443225 */,
7664 /* 7186 */ 0x043b5c47 | (19 << 27) /* 0.264492300 */,
7665 /* 7187 */ 0x043b8fbd | (19 << 27) /* 0.264541376 */,
7666 /* 7188 */ 0x043bc333 | (19 << 27) /* 0.264590455 */,
7667 /* 7189 */ 0x043bf6aa | (19 << 27) /* 0.264639536 */,
7668 /* 7190 */ 0x043c2a22 | (19 << 27) /* 0.264688620 */,
7669 /* 7191 */ 0x043c5d9a | (19 << 27) /* 0.264737706 */,
7670 /* 7192 */ 0x043c9113 | (19 << 27) /* 0.264786794 */,
7671 /* 7193 */ 0x043cc48d | (19 << 27) /* 0.264835884 */,
7672 /* 7194 */ 0x043cf807 | (19 << 27) /* 0.264884976 */,
7673 /* 7195 */ 0x043d2b82 | (19 << 27) /* 0.264934071 */,
7674 /* 7196 */ 0x043d5efd | (19 << 27) /* 0.264983168 */,
7675 /* 7197 */ 0x043d9279 | (19 << 27) /* 0.265032268 */,
7676 /* 7198 */ 0x043dc5f6 | (19 << 27) /* 0.265081369 */,
7677 /* 7199 */ 0x043df973 | (19 << 27) /* 0.265130473 */,
7678
7679 /* 7200 */ 0x043e2cf1 | (19 << 27) /* 0.265179580 */,
7680 /* 7201 */ 0x043e6070 | (19 << 27) /* 0.265228688 */,
7681 /* 7202 */ 0x043e93ef | (19 << 27) /* 0.265277799 */,
7682 /* 7203 */ 0x043ec76e | (19 << 27) /* 0.265326912 */,
7683 /* 7204 */ 0x043efaef | (19 << 27) /* 0.265376027 */,
7684 /* 7205 */ 0x043f2e6f | (19 << 27) /* 0.265425145 */,
7685 /* 7206 */ 0x043f61f1 | (19 << 27) /* 0.265474264 */,
7686 /* 7207 */ 0x043f9573 | (19 << 27) /* 0.265523387 */,
7687 /* 7208 */ 0x043fc8f6 | (19 << 27) /* 0.265572511 */,
7688 /* 7209 */ 0x043ffc79 | (19 << 27) /* 0.265621638 */,
7689 /* 7210 */ 0x04402ffd | (19 << 27) /* 0.265670766 */,
7690 /* 7211 */ 0x04406382 | (19 << 27) /* 0.265719898 */,
7691 /* 7212 */ 0x04409707 | (19 << 27) /* 0.265769031 */,
7692 /* 7213 */ 0x0440ca8d | (19 << 27) /* 0.265818167 */,
7693 /* 7214 */ 0x0440fe13 | (19 << 27) /* 0.265867305 */,
7694 /* 7215 */ 0x0441319a | (19 << 27) /* 0.265916445 */,
7695
7696 /* 7216 */ 0x04416522 | (19 << 27) /* 0.265965588 */,
7697 /* 7217 */ 0x044198aa | (19 << 27) /* 0.266014732 */,
7698 /* 7218 */ 0x0441cc33 | (19 << 27) /* 0.266063880 */,
7699 /* 7219 */ 0x0441ffbc | (19 << 27) /* 0.266113029 */,
7700 /* 7220 */ 0x04423346 | (19 << 27) /* 0.266162181 */,
7701 /* 7221 */ 0x044266d1 | (19 << 27) /* 0.266211334 */,
7702 /* 7222 */ 0x04429a5c | (19 << 27) /* 0.266260491 */,
7703 /* 7223 */ 0x0442cde8 | (19 << 27) /* 0.266309649 */,
7704 /* 7224 */ 0x04430174 | (19 << 27) /* 0.266358810 */,
7705 /* 7225 */ 0x04433501 | (19 << 27) /* 0.266407973 */,
7706 /* 7226 */ 0x0443688f | (19 << 27) /* 0.266457138 */,
7707 /* 7227 */ 0x04439c1d | (19 << 27) /* 0.266506305 */,
7708 /* 7228 */ 0x0443cfac | (19 << 27) /* 0.266555475 */,
7709 /* 7229 */ 0x0444033c | (19 << 27) /* 0.266604647 */,
7710 /* 7230 */ 0x044436cc | (19 << 27) /* 0.266653822 */,
7711 /* 7231 */ 0x04446a5d | (19 << 27) /* 0.266702998 */,
7712
7713 /* 7232 */ 0x04449dee | (19 << 27) /* 0.266752177 */,
7714 /* 7233 */ 0x0444d180 | (19 << 27) /* 0.266801358 */,
7715 /* 7234 */ 0x04450513 | (19 << 27) /* 0.266850541 */,
7716 /* 7235 */ 0x044538a6 | (19 << 27) /* 0.266899727 */,
7717 /* 7236 */ 0x04456c39 | (19 << 27) /* 0.266948915 */,
7718 /* 7237 */ 0x04459fce | (19 << 27) /* 0.266998105 */,
7719 /* 7238 */ 0x0445d363 | (19 << 27) /* 0.267047298 */,
7720 /* 7239 */ 0x044606f8 | (19 << 27) /* 0.267096492 */,
7721 /* 7240 */ 0x04463a8f | (19 << 27) /* 0.267145689 */,
7722 /* 7241 */ 0x04466e25 | (19 << 27) /* 0.267194888 */,
7723 /* 7242 */ 0x0446a1bd | (19 << 27) /* 0.267244090 */,
7724 /* 7243 */ 0x0446d555 | (19 << 27) /* 0.267293294 */,
7725 /* 7244 */ 0x044708ee | (19 << 27) /* 0.267342500 */,
7726 /* 7245 */ 0x04473c87 | (19 << 27) /* 0.267391708 */,
7727 /* 7246 */ 0x04477021 | (19 << 27) /* 0.267440919 */,
7728 /* 7247 */ 0x0447a3bb | (19 << 27) /* 0.267490131 */,
7729
7730 /* 7248 */ 0x0447d756 | (19 << 27) /* 0.267539347 */,
7731 /* 7249 */ 0x04480af2 | (19 << 27) /* 0.267588564 */,
7732 /* 7250 */ 0x04483e8e | (19 << 27) /* 0.267637783 */,
7733 /* 7251 */ 0x0448722b | (19 << 27) /* 0.267687005 */,
7734 /* 7252 */ 0x0448a5c9 | (19 << 27) /* 0.267736229 */,
7735 /* 7253 */ 0x0448d967 | (19 << 27) /* 0.267785456 */,
7736 /* 7254 */ 0x04490d05 | (19 << 27) /* 0.267834685 */,
7737 /* 7255 */ 0x044940a5 | (19 << 27) /* 0.267883915 */,
7738 /* 7256 */ 0x04497445 | (19 << 27) /* 0.267933149 */,
7739 /* 7257 */ 0x0449a7e5 | (19 << 27) /* 0.267982384 */,
7740 /* 7258 */ 0x0449db86 | (19 << 27) /* 0.268031622 */,
7741 /* 7259 */ 0x044a0f28 | (19 << 27) /* 0.268080862 */,
7742 /* 7260 */ 0x044a42ca | (19 << 27) /* 0.268130104 */,
7743 /* 7261 */ 0x044a766d | (19 << 27) /* 0.268179349 */,
7744 /* 7262 */ 0x044aaa11 | (19 << 27) /* 0.268228595 */,
7745 /* 7263 */ 0x044addb5 | (19 << 27) /* 0.268277844 */,
7746
7747 /* 7264 */ 0x044b115a | (19 << 27) /* 0.268327096 */,
7748 /* 7265 */ 0x044b44ff | (19 << 27) /* 0.268376349 */,
7749 /* 7266 */ 0x044b78a5 | (19 << 27) /* 0.268425605 */,
7750 /* 7267 */ 0x044bac4c | (19 << 27) /* 0.268474863 */,
7751 /* 7268 */ 0x044bdff3 | (19 << 27) /* 0.268524123 */,
7752 /* 7269 */ 0x044c139b | (19 << 27) /* 0.268573386 */,
7753 /* 7270 */ 0x044c4743 | (19 << 27) /* 0.268622651 */,
7754 /* 7271 */ 0x044c7aec | (19 << 27) /* 0.268671918 */,
7755 /* 7272 */ 0x044cae96 | (19 << 27) /* 0.268721187 */,
7756 /* 7273 */ 0x044ce240 | (19 << 27) /* 0.268770459 */,
7757 /* 7274 */ 0x044d15eb | (19 << 27) /* 0.268819733 */,
7758 /* 7275 */ 0x044d4997 | (19 << 27) /* 0.268869009 */,
7759 /* 7276 */ 0x044d7d43 | (19 << 27) /* 0.268918287 */,
7760 /* 7277 */ 0x044db0ef | (19 << 27) /* 0.268967568 */,
7761 /* 7278 */ 0x044de49d | (19 << 27) /* 0.269016851 */,
7762 /* 7279 */ 0x044e184b | (19 << 27) /* 0.269066136 */,
7763
7764 /* 7280 */ 0x044e4bf9 | (19 << 27) /* 0.269115423 */,
7765 /* 7281 */ 0x044e7fa8 | (19 << 27) /* 0.269164713 */,
7766 /* 7282 */ 0x044eb358 | (19 << 27) /* 0.269214005 */,
7767 /* 7283 */ 0x044ee708 | (19 << 27) /* 0.269263299 */,
7768 /* 7284 */ 0x044f1ab9 | (19 << 27) /* 0.269312595 */,
7769 /* 7285 */ 0x044f4e6b | (19 << 27) /* 0.269361894 */,
7770 /* 7286 */ 0x044f821d | (19 << 27) /* 0.269411195 */,
7771 /* 7287 */ 0x044fb5cf | (19 << 27) /* 0.269460498 */,
7772 /* 7288 */ 0x044fe983 | (19 << 27) /* 0.269509804 */,
7773 /* 7289 */ 0x04501d37 | (19 << 27) /* 0.269559111 */,
7774 /* 7290 */ 0x045050eb | (19 << 27) /* 0.269608421 */,
7775 /* 7291 */ 0x045084a0 | (19 << 27) /* 0.269657734 */,
7776 /* 7292 */ 0x0450b856 | (19 << 27) /* 0.269707048 */,
7777 /* 7293 */ 0x0450ec0d | (19 << 27) /* 0.269756365 */,
7778 /* 7294 */ 0x04511fc4 | (19 << 27) /* 0.269805684 */,
7779 /* 7295 */ 0x0451537b | (19 << 27) /* 0.269855005 */,
7780
7781 /* 7296 */ 0x04518733 | (19 << 27) /* 0.269904329 */,
7782 /* 7297 */ 0x0451baec | (19 << 27) /* 0.269953654 */,
7783 /* 7298 */ 0x0451eea5 | (19 << 27) /* 0.270002982 */,
7784 /* 7299 */ 0x0452225f | (19 << 27) /* 0.270052313 */,
7785 /* 7300 */ 0x0452561a | (19 << 27) /* 0.270101645 */,
7786 /* 7301 */ 0x045289d5 | (19 << 27) /* 0.270150980 */,
7787 /* 7302 */ 0x0452bd91 | (19 << 27) /* 0.270200317 */,
7788 /* 7303 */ 0x0452f14d | (19 << 27) /* 0.270249656 */,
7789 /* 7304 */ 0x0453250a | (19 << 27) /* 0.270298998 */,
7790 /* 7305 */ 0x045358c8 | (19 << 27) /* 0.270348341 */,
7791 /* 7306 */ 0x04538c86 | (19 << 27) /* 0.270397687 */,
7792 /* 7307 */ 0x0453c045 | (19 << 27) /* 0.270447036 */,
7793 /* 7308 */ 0x0453f405 | (19 << 27) /* 0.270496386 */,
7794 /* 7309 */ 0x045427c5 | (19 << 27) /* 0.270545739 */,
7795 /* 7310 */ 0x04545b85 | (19 << 27) /* 0.270595094 */,
7796 /* 7311 */ 0x04548f46 | (19 << 27) /* 0.270644451 */,
7797
7798 /* 7312 */ 0x0454c308 | (19 << 27) /* 0.270693811 */,
7799 /* 7313 */ 0x0454f6cb | (19 << 27) /* 0.270743173 */,
7800 /* 7314 */ 0x04552a8e | (19 << 27) /* 0.270792537 */,
7801 /* 7315 */ 0x04555e51 | (19 << 27) /* 0.270841903 */,
7802 /* 7316 */ 0x04559216 | (19 << 27) /* 0.270891271 */,
7803 /* 7317 */ 0x0455c5db | (19 << 27) /* 0.270940642 */,
7804 /* 7318 */ 0x0455f9a0 | (19 << 27) /* 0.270990015 */,
7805 /* 7319 */ 0x04562d66 | (19 << 27) /* 0.271039390 */,
7806 /* 7320 */ 0x0456612d | (19 << 27) /* 0.271088768 */,
7807 /* 7321 */ 0x045694f4 | (19 << 27) /* 0.271138148 */,
7808 /* 7322 */ 0x0456c8bc | (19 << 27) /* 0.271187530 */,
7809 /* 7323 */ 0x0456fc84 | (19 << 27) /* 0.271236914 */,
7810 /* 7324 */ 0x0457304e | (19 << 27) /* 0.271286301 */,
7811 /* 7325 */ 0x04576417 | (19 << 27) /* 0.271335689 */,
7812 /* 7326 */ 0x045797e2 | (19 << 27) /* 0.271385080 */,
7813 /* 7327 */ 0x0457cbac | (19 << 27) /* 0.271434474 */,
7814
7815 /* 7328 */ 0x0457ff78 | (19 << 27) /* 0.271483869 */,
7816 /* 7329 */ 0x04583344 | (19 << 27) /* 0.271533267 */,
7817 /* 7330 */ 0x04586711 | (19 << 27) /* 0.271582667 */,
7818 /* 7331 */ 0x04589ade | (19 << 27) /* 0.271632069 */,
7819 /* 7332 */ 0x0458ceac | (19 << 27) /* 0.271681474 */,
7820 /* 7333 */ 0x0459027b | (19 << 27) /* 0.271730880 */,
7821 /* 7334 */ 0x0459364a | (19 << 27) /* 0.271780289 */,
7822 /* 7335 */ 0x04596a19 | (19 << 27) /* 0.271829701 */,
7823 /* 7336 */ 0x04599dea | (19 << 27) /* 0.271879114 */,
7824 /* 7337 */ 0x0459d1bb | (19 << 27) /* 0.271928530 */,
7825 /* 7338 */ 0x045a058c | (19 << 27) /* 0.271977948 */,
7826 /* 7339 */ 0x045a395e | (19 << 27) /* 0.272027368 */,
7827 /* 7340 */ 0x045a6d31 | (19 << 27) /* 0.272076790 */,
7828 /* 7341 */ 0x045aa104 | (19 << 27) /* 0.272126215 */,
7829 /* 7342 */ 0x045ad4d8 | (19 << 27) /* 0.272175642 */,
7830 /* 7343 */ 0x045b08ad | (19 << 27) /* 0.272225071 */,
7831
7832 /* 7344 */ 0x045b3c82 | (19 << 27) /* 0.272274503 */,
7833 /* 7345 */ 0x045b7058 | (19 << 27) /* 0.272323936 */,
7834 /* 7346 */ 0x045ba42e | (19 << 27) /* 0.272373372 */,
7835 /* 7347 */ 0x045bd805 | (19 << 27) /* 0.272422810 */,
7836 /* 7348 */ 0x045c0bdd | (19 << 27) /* 0.272472251 */,
7837 /* 7349 */ 0x045c3fb5 | (19 << 27) /* 0.272521693 */,
7838 /* 7350 */ 0x045c738e | (19 << 27) /* 0.272571138 */,
7839 /* 7351 */ 0x045ca767 | (19 << 27) /* 0.272620585 */,
7840 /* 7352 */ 0x045cdb41 | (19 << 27) /* 0.272670035 */,
7841 /* 7353 */ 0x045d0f1b | (19 << 27) /* 0.272719486 */,
7842 /* 7354 */ 0x045d42f7 | (19 << 27) /* 0.272768940 */,
7843 /* 7355 */ 0x045d76d2 | (19 << 27) /* 0.272818396 */,
7844 /* 7356 */ 0x045daaaf | (19 << 27) /* 0.272867855 */,
7845 /* 7357 */ 0x045dde8c | (19 << 27) /* 0.272917315 */,
7846 /* 7358 */ 0x045e1269 | (19 << 27) /* 0.272966778 */,
7847 /* 7359 */ 0x045e4647 | (19 << 27) /* 0.273016243 */,
7848
7849 /* 7360 */ 0x045e7a26 | (19 << 27) /* 0.273065710 */,
7850 /* 7361 */ 0x045eae06 | (19 << 27) /* 0.273115180 */,
7851 /* 7362 */ 0x045ee1e6 | (19 << 27) /* 0.273164652 */,
7852 /* 7363 */ 0x045f15c6 | (19 << 27) /* 0.273214126 */,
7853 /* 7364 */ 0x045f49a7 | (19 << 27) /* 0.273263602 */,
7854 /* 7365 */ 0x045f7d89 | (19 << 27) /* 0.273313081 */,
7855 /* 7366 */ 0x045fb16c | (19 << 27) /* 0.273362561 */,
7856 /* 7367 */ 0x045fe54f | (19 << 27) /* 0.273412044 */,
7857 /* 7368 */ 0x04601932 | (19 << 27) /* 0.273461530 */,
7858 /* 7369 */ 0x04604d16 | (19 << 27) /* 0.273511017 */,
7859 /* 7370 */ 0x046080fb | (19 << 27) /* 0.273560507 */,
7860 /* 7371 */ 0x0460b4e1 | (19 << 27) /* 0.273609999 */,
7861 /* 7372 */ 0x0460e8c7 | (19 << 27) /* 0.273659493 */,
7862 /* 7373 */ 0x04611cad | (19 << 27) /* 0.273708989 */,
7863 /* 7374 */ 0x04615094 | (19 << 27) /* 0.273758488 */,
7864 /* 7375 */ 0x0461847c | (19 << 27) /* 0.273807989 */,
7865
7866 /* 7376 */ 0x0461b864 | (19 << 27) /* 0.273857492 */,
7867 /* 7377 */ 0x0461ec4d | (19 << 27) /* 0.273906997 */,
7868 /* 7378 */ 0x04622037 | (19 << 27) /* 0.273956505 */,
7869 /* 7379 */ 0x04625421 | (19 << 27) /* 0.274006015 */,
7870 /* 7380 */ 0x0462880c | (19 << 27) /* 0.274055527 */,
7871 /* 7381 */ 0x0462bbf7 | (19 << 27) /* 0.274105041 */,
7872 /* 7382 */ 0x0462efe3 | (19 << 27) /* 0.274154558 */,
7873 /* 7383 */ 0x046323d0 | (19 << 27) /* 0.274204076 */,
7874 /* 7384 */ 0x046357bd | (19 << 27) /* 0.274253597 */,
7875 /* 7385 */ 0x04638bab | (19 << 27) /* 0.274303121 */,
7876 /* 7386 */ 0x0463bf99 | (19 << 27) /* 0.274352646 */,
7877 /* 7387 */ 0x0463f388 | (19 << 27) /* 0.274402174 */,
7878 /* 7388 */ 0x04642778 | (19 << 27) /* 0.274451704 */,
7879 /* 7389 */ 0x04645b68 | (19 << 27) /* 0.274501236 */,
7880 /* 7390 */ 0x04648f59 | (19 << 27) /* 0.274550771 */,
7881 /* 7391 */ 0x0464c34a | (19 << 27) /* 0.274600307 */,
7882
7883 /* 7392 */ 0x0464f73c | (19 << 27) /* 0.274649846 */,
7884 /* 7393 */ 0x04652b2f | (19 << 27) /* 0.274699387 */,
7885 /* 7394 */ 0x04655f22 | (19 << 27) /* 0.274748931 */,
7886 /* 7395 */ 0x04659316 | (19 << 27) /* 0.274798476 */,
7887 /* 7396 */ 0x0465c70a | (19 << 27) /* 0.274848024 */,
7888 /* 7397 */ 0x0465faff | (19 << 27) /* 0.274897574 */,
7889 /* 7398 */ 0x04662ef5 | (19 << 27) /* 0.274947126 */,
7890 /* 7399 */ 0x046662eb | (19 << 27) /* 0.274996681 */,
7891 /* 7400 */ 0x046696e2 | (19 << 27) /* 0.275046238 */,
7892 /* 7401 */ 0x0466cad9 | (19 << 27) /* 0.275095797 */,
7893 /* 7402 */ 0x0466fed1 | (19 << 27) /* 0.275145358 */,
7894 /* 7403 */ 0x046732ca | (19 << 27) /* 0.275194921 */,
7895 /* 7404 */ 0x046766c3 | (19 << 27) /* 0.275244487 */,
7896 /* 7405 */ 0x04679abd | (19 << 27) /* 0.275294055 */,
7897 /* 7406 */ 0x0467ceb7 | (19 << 27) /* 0.275343625 */,
7898 /* 7407 */ 0x046802b2 | (19 << 27) /* 0.275393198 */,
7899
7900 /* 7408 */ 0x046836ae | (19 << 27) /* 0.275442772 */,
7901 /* 7409 */ 0x04686aaa | (19 << 27) /* 0.275492349 */,
7902 /* 7410 */ 0x04689ea7 | (19 << 27) /* 0.275541928 */,
7903 /* 7411 */ 0x0468d2a4 | (19 << 27) /* 0.275591509 */,
7904 /* 7412 */ 0x046906a2 | (19 << 27) /* 0.275641093 */,
7905 /* 7413 */ 0x04693aa1 | (19 << 27) /* 0.275690679 */,
7906 /* 7414 */ 0x04696ea0 | (19 << 27) /* 0.275740267 */,
7907 /* 7415 */ 0x0469a2a0 | (19 << 27) /* 0.275789857 */,
7908 /* 7416 */ 0x0469d6a0 | (19 << 27) /* 0.275839449 */,
7909 /* 7417 */ 0x046a0aa1 | (19 << 27) /* 0.275889044 */,
7910 /* 7418 */ 0x046a3ea3 | (19 << 27) /* 0.275938641 */,
7911 /* 7419 */ 0x046a72a5 | (19 << 27) /* 0.275988240 */,
7912 /* 7420 */ 0x046aa6a8 | (19 << 27) /* 0.276037842 */,
7913 /* 7421 */ 0x046adaab | (19 << 27) /* 0.276087445 */,
7914 /* 7422 */ 0x046b0eaf | (19 << 27) /* 0.276137051 */,
7915 /* 7423 */ 0x046b42b3 | (19 << 27) /* 0.276186659 */,
7916
7917 /* 7424 */ 0x046b76b9 | (19 << 27) /* 0.276236269 */,
7918 /* 7425 */ 0x046baabe | (19 << 27) /* 0.276285882 */,
7919 /* 7426 */ 0x046bdec5 | (19 << 27) /* 0.276335497 */,
7920 /* 7427 */ 0x046c12cc | (19 << 27) /* 0.276385113 */,
7921 /* 7428 */ 0x046c46d3 | (19 << 27) /* 0.276434733 */,
7922 /* 7429 */ 0x046c7adb | (19 << 27) /* 0.276484354 */,
7923 /* 7430 */ 0x046caee4 | (19 << 27) /* 0.276533978 */,
7924 /* 7431 */ 0x046ce2ee | (19 << 27) /* 0.276583604 */,
7925 /* 7432 */ 0x046d16f7 | (19 << 27) /* 0.276633232 */,
7926 /* 7433 */ 0x046d4b02 | (19 << 27) /* 0.276682862 */,
7927 /* 7434 */ 0x046d7f0d | (19 << 27) /* 0.276732495 */,
7928 /* 7435 */ 0x046db319 | (19 << 27) /* 0.276782129 */,
7929 /* 7436 */ 0x046de725 | (19 << 27) /* 0.276831766 */,
7930 /* 7437 */ 0x046e1b32 | (19 << 27) /* 0.276881406 */,
7931 /* 7438 */ 0x046e4f40 | (19 << 27) /* 0.276931047 */,
7932 /* 7439 */ 0x046e834e | (19 << 27) /* 0.276980691 */,
7933
7934 /* 7440 */ 0x046eb75c | (19 << 27) /* 0.277030337 */,
7935 /* 7441 */ 0x046eeb6c | (19 << 27) /* 0.277079985 */,
7936 /* 7442 */ 0x046f1f7c | (19 << 27) /* 0.277129635 */,
7937 /* 7443 */ 0x046f538c | (19 << 27) /* 0.277179288 */,
7938 /* 7444 */ 0x046f879d | (19 << 27) /* 0.277228942 */,
7939 /* 7445 */ 0x046fbbaf | (19 << 27) /* 0.277278600 */,
7940 /* 7446 */ 0x046fefc1 | (19 << 27) /* 0.277328259 */,
7941 /* 7447 */ 0x047023d4 | (19 << 27) /* 0.277377920 */,
7942 /* 7448 */ 0x047057e8 | (19 << 27) /* 0.277427584 */,
7943 /* 7449 */ 0x04708bfc | (19 << 27) /* 0.277477250 */,
7944 /* 7450 */ 0x0470c011 | (19 << 27) /* 0.277526918 */,
7945 /* 7451 */ 0x0470f426 | (19 << 27) /* 0.277576588 */,
7946 /* 7452 */ 0x0471283c | (19 << 27) /* 0.277626261 */,
7947 /* 7453 */ 0x04715c52 | (19 << 27) /* 0.277675936 */,
7948 /* 7454 */ 0x04719069 | (19 << 27) /* 0.277725613 */,
7949 /* 7455 */ 0x0471c481 | (19 << 27) /* 0.277775292 */,
7950
7951 /* 7456 */ 0x0471f899 | (19 << 27) /* 0.277824973 */,
7952 /* 7457 */ 0x04722cb2 | (19 << 27) /* 0.277874657 */,
7953 /* 7458 */ 0x047260cc | (19 << 27) /* 0.277924343 */,
7954 /* 7459 */ 0x047294e6 | (19 << 27) /* 0.277974031 */,
7955 /* 7460 */ 0x0472c900 | (19 << 27) /* 0.278023722 */,
7956 /* 7461 */ 0x0472fd1b | (19 << 27) /* 0.278073414 */,
7957 /* 7462 */ 0x04733137 | (19 << 27) /* 0.278123109 */,
7958 /* 7463 */ 0x04736554 | (19 << 27) /* 0.278172806 */,
7959 /* 7464 */ 0x04739971 | (19 << 27) /* 0.278222505 */,
7960 /* 7465 */ 0x0473cd8e | (19 << 27) /* 0.278272207 */,
7961 /* 7466 */ 0x047401ad | (19 << 27) /* 0.278321910 */,
7962 /* 7467 */ 0x047435cb | (19 << 27) /* 0.278371616 */,
7963 /* 7468 */ 0x047469eb | (19 << 27) /* 0.278421324 */,
7964 /* 7469 */ 0x04749e0b | (19 << 27) /* 0.278471035 */,
7965 /* 7470 */ 0x0474d22c | (19 << 27) /* 0.278520747 */,
7966 /* 7471 */ 0x0475064d | (19 << 27) /* 0.278570462 */,
7967
7968 /* 7472 */ 0x04753a6f | (19 << 27) /* 0.278620179 */,
7969 /* 7473 */ 0x04756e91 | (19 << 27) /* 0.278669898 */,
7970 /* 7474 */ 0x0475a2b4 | (19 << 27) /* 0.278719619 */,
7971 /* 7475 */ 0x0475d6d7 | (19 << 27) /* 0.278769343 */,
7972 /* 7476 */ 0x04760afc | (19 << 27) /* 0.278819069 */,
7973 /* 7477 */ 0x04763f20 | (19 << 27) /* 0.278868797 */,
7974 /* 7478 */ 0x04767346 | (19 << 27) /* 0.278918527 */,
7975 /* 7479 */ 0x0476a76c | (19 << 27) /* 0.278968260 */,
7976 /* 7480 */ 0x0476db92 | (19 << 27) /* 0.279017995 */,
7977 /* 7481 */ 0x04770fba | (19 << 27) /* 0.279067731 */,
7978 /* 7482 */ 0x047743e1 | (19 << 27) /* 0.279117471 */,
7979 /* 7483 */ 0x0477780a | (19 << 27) /* 0.279167212 */,
7980 /* 7484 */ 0x0477ac33 | (19 << 27) /* 0.279216956 */,
7981 /* 7485 */ 0x0477e05c | (19 << 27) /* 0.279266701 */,
7982 /* 7486 */ 0x04781486 | (19 << 27) /* 0.279316449 */,
7983 /* 7487 */ 0x047848b1 | (19 << 27) /* 0.279366200 */,
7984
7985 /* 7488 */ 0x04787cdc | (19 << 27) /* 0.279415952 */,
7986 /* 7489 */ 0x0478b108 | (19 << 27) /* 0.279465707 */,
7987 /* 7490 */ 0x0478e535 | (19 << 27) /* 0.279515464 */,
7988 /* 7491 */ 0x04791962 | (19 << 27) /* 0.279565223 */,
7989 /* 7492 */ 0x04794d8f | (19 << 27) /* 0.279614984 */,
7990 /* 7493 */ 0x047981be | (19 << 27) /* 0.279664748 */,
7991 /* 7494 */ 0x0479b5ed | (19 << 27) /* 0.279714513 */,
7992 /* 7495 */ 0x0479ea1c | (19 << 27) /* 0.279764281 */,
7993 /* 7496 */ 0x047a1e4c | (19 << 27) /* 0.279814051 */,
7994 /* 7497 */ 0x047a527d | (19 << 27) /* 0.279863824 */,
7995 /* 7498 */ 0x047a86ae | (19 << 27) /* 0.279913598 */,
7996 /* 7499 */ 0x047abae0 | (19 << 27) /* 0.279963375 */,
7997 /* 7500 */ 0x047aef12 | (19 << 27) /* 0.280013154 */,
7998 /* 7501 */ 0x047b2346 | (19 << 27) /* 0.280062935 */,
7999 /* 7502 */ 0x047b5779 | (19 << 27) /* 0.280112719 */,
8000 /* 7503 */ 0x047b8bad | (19 << 27) /* 0.280162504 */,
8001
8002 /* 7504 */ 0x047bbfe2 | (19 << 27) /* 0.280212292 */,
8003 /* 7505 */ 0x047bf418 | (19 << 27) /* 0.280262082 */,
8004 /* 7506 */ 0x047c284e | (19 << 27) /* 0.280311875 */,
8005 /* 7507 */ 0x047c5c84 | (19 << 27) /* 0.280361669 */,
8006 /* 7508 */ 0x047c90bb | (19 << 27) /* 0.280411466 */,
8007 /* 7509 */ 0x047cc4f3 | (19 << 27) /* 0.280461265 */,
8008 /* 7510 */ 0x047cf92c | (19 << 27) /* 0.280511066 */,
8009 /* 7511 */ 0x047d2d65 | (19 << 27) /* 0.280560869 */,
8010 /* 7512 */ 0x047d619e | (19 << 27) /* 0.280610675 */,
8011 /* 7513 */ 0x047d95d8 | (19 << 27) /* 0.280660483 */,
8012 /* 7514 */ 0x047dca13 | (19 << 27) /* 0.280710292 */,
8013 /* 7515 */ 0x047dfe4e | (19 << 27) /* 0.280760105 */,
8014 /* 7516 */ 0x047e328a | (19 << 27) /* 0.280809919 */,
8015 /* 7517 */ 0x047e66c7 | (19 << 27) /* 0.280859736 */,
8016 /* 7518 */ 0x047e9b04 | (19 << 27) /* 0.280909554 */,
8017 /* 7519 */ 0x047ecf42 | (19 << 27) /* 0.280959375 */,
8018
8019 /* 7520 */ 0x047f0380 | (19 << 27) /* 0.281009199 */,
8020 /* 7521 */ 0x047f37bf | (19 << 27) /* 0.281059024 */,
8021 /* 7522 */ 0x047f6bff | (19 << 27) /* 0.281108852 */,
8022 /* 7523 */ 0x047fa03f | (19 << 27) /* 0.281158682 */,
8023 /* 7524 */ 0x047fd47f | (19 << 27) /* 0.281208514 */,
8024 /* 7525 */ 0x048008c1 | (19 << 27) /* 0.281258348 */,
8025 /* 7526 */ 0x04803d02 | (19 << 27) /* 0.281308184 */,
8026 /* 7527 */ 0x04807145 | (19 << 27) /* 0.281358023 */,
8027 /* 7528 */ 0x0480a588 | (19 << 27) /* 0.281407864 */,
8028 /* 7529 */ 0x0480d9cc | (19 << 27) /* 0.281457707 */,
8029 /* 7530 */ 0x04810e10 | (19 << 27) /* 0.281507552 */,
8030 /* 7531 */ 0x04814255 | (19 << 27) /* 0.281557400 */,
8031 /* 7532 */ 0x0481769a | (19 << 27) /* 0.281607250 */,
8032 /* 7533 */ 0x0481aae0 | (19 << 27) /* 0.281657101 */,
8033 /* 7534 */ 0x0481df27 | (19 << 27) /* 0.281706956 */,
8034 /* 7535 */ 0x0482136e | (19 << 27) /* 0.281756812 */,
8035
8036 /* 7536 */ 0x048247b6 | (19 << 27) /* 0.281806670 */,
8037 /* 7537 */ 0x04827bfe | (19 << 27) /* 0.281856531 */,
8038 /* 7538 */ 0x0482b047 | (19 << 27) /* 0.281906394 */,
8039 /* 7539 */ 0x0482e491 | (19 << 27) /* 0.281956259 */,
8040 /* 7540 */ 0x048318db | (19 << 27) /* 0.282006127 */,
8041 /* 7541 */ 0x04834d26 | (19 << 27) /* 0.282055996 */,
8042 /* 7542 */ 0x04838171 | (19 << 27) /* 0.282105868 */,
8043 /* 7543 */ 0x0483b5bd | (19 << 27) /* 0.282155742 */,
8044 /* 7544 */ 0x0483ea0a | (19 << 27) /* 0.282205618 */,
8045 /* 7545 */ 0x04841e57 | (19 << 27) /* 0.282255496 */,
8046 /* 7546 */ 0x048452a4 | (19 << 27) /* 0.282305377 */,
8047 /* 7547 */ 0x048486f3 | (19 << 27) /* 0.282355260 */,
8048 /* 7548 */ 0x0484bb42 | (19 << 27) /* 0.282405145 */,
8049 /* 7549 */ 0x0484ef91 | (19 << 27) /* 0.282455032 */,
8050 /* 7550 */ 0x048523e1 | (19 << 27) /* 0.282504921 */,
8051 /* 7551 */ 0x04855832 | (19 << 27) /* 0.282554813 */,
8052
8053 /* 7552 */ 0x04858c83 | (19 << 27) /* 0.282604707 */,
8054 /* 7553 */ 0x0485c0d5 | (19 << 27) /* 0.282654603 */,
8055 /* 7554 */ 0x0485f527 | (19 << 27) /* 0.282704501 */,
8056 /* 7555 */ 0x0486297a | (19 << 27) /* 0.282754401 */,
8057 /* 7556 */ 0x04865dce | (19 << 27) /* 0.282804304 */,
8058 /* 7557 */ 0x04869222 | (19 << 27) /* 0.282854209 */,
8059 /* 7558 */ 0x0486c677 | (19 << 27) /* 0.282904116 */,
8060 /* 7559 */ 0x0486facc | (19 << 27) /* 0.282954025 */,
8061 /* 7560 */ 0x04872f22 | (19 << 27) /* 0.283003936 */,
8062 /* 7561 */ 0x04876379 | (19 << 27) /* 0.283053850 */,
8063 /* 7562 */ 0x048797d0 | (19 << 27) /* 0.283103766 */,
8064 /* 7563 */ 0x0487cc28 | (19 << 27) /* 0.283153684 */,
8065 /* 7564 */ 0x04880080 | (19 << 27) /* 0.283203604 */,
8066 /* 7565 */ 0x048834d9 | (19 << 27) /* 0.283253527 */,
8067 /* 7566 */ 0x04886933 | (19 << 27) /* 0.283303451 */,
8068 /* 7567 */ 0x04889d8d | (19 << 27) /* 0.283353378 */,
8069
8070 /* 7568 */ 0x0488d1e8 | (19 << 27) /* 0.283403307 */,
8071 /* 7569 */ 0x04890643 | (19 << 27) /* 0.283453238 */,
8072 /* 7570 */ 0x04893a9f | (19 << 27) /* 0.283503172 */,
8073 /* 7571 */ 0x04896efb | (19 << 27) /* 0.283553107 */,
8074 /* 7572 */ 0x0489a358 | (19 << 27) /* 0.283603045 */,
8075 /* 7573 */ 0x0489d7b6 | (19 << 27) /* 0.283652985 */,
8076 /* 7574 */ 0x048a0c14 | (19 << 27) /* 0.283702927 */,
8077 /* 7575 */ 0x048a4073 | (19 << 27) /* 0.283752872 */,
8078 /* 7576 */ 0x048a74d3 | (19 << 27) /* 0.283802818 */,
8079 /* 7577 */ 0x048aa933 | (19 << 27) /* 0.283852767 */,
8080 /* 7578 */ 0x048add93 | (19 << 27) /* 0.283902718 */,
8081 /* 7579 */ 0x048b11f5 | (19 << 27) /* 0.283952671 */,
8082 /* 7580 */ 0x048b4656 | (19 << 27) /* 0.284002627 */,
8083 /* 7581 */ 0x048b7ab9 | (19 << 27) /* 0.284052584 */,
8084 /* 7582 */ 0x048baf1c | (19 << 27) /* 0.284102544 */,
8085 /* 7583 */ 0x048be37f | (19 << 27) /* 0.284152506 */,
8086
8087 /* 7584 */ 0x048c17e3 | (19 << 27) /* 0.284202470 */,
8088 /* 7585 */ 0x048c4c48 | (19 << 27) /* 0.284252436 */,
8089 /* 7586 */ 0x048c80ad | (19 << 27) /* 0.284302405 */,
8090 /* 7587 */ 0x048cb513 | (19 << 27) /* 0.284352376 */,
8091 /* 7588 */ 0x048ce97a | (19 << 27) /* 0.284402349 */,
8092 /* 7589 */ 0x048d1de1 | (19 << 27) /* 0.284452324 */,
8093 /* 7590 */ 0x048d5249 | (19 << 27) /* 0.284502301 */,
8094 /* 7591 */ 0x048d86b1 | (19 << 27) /* 0.284552281 */,
8095 /* 7592 */ 0x048dbb1a | (19 << 27) /* 0.284602263 */,
8096 /* 7593 */ 0x048def83 | (19 << 27) /* 0.284652246 */,
8097 /* 7594 */ 0x048e23ed | (19 << 27) /* 0.284702233 */,
8098 /* 7595 */ 0x048e5858 | (19 << 27) /* 0.284752221 */,
8099 /* 7596 */ 0x048e8cc3 | (19 << 27) /* 0.284802211 */,
8100 /* 7597 */ 0x048ec12f | (19 << 27) /* 0.284852204 */,
8101 /* 7598 */ 0x048ef59b | (19 << 27) /* 0.284902199 */,
8102 /* 7599 */ 0x048f2a08 | (19 << 27) /* 0.284952196 */,
8103
8104 /* 7600 */ 0x048f5e76 | (19 << 27) /* 0.285002195 */,
8105 /* 7601 */ 0x048f92e4 | (19 << 27) /* 0.285052197 */,
8106 /* 7602 */ 0x048fc753 | (19 << 27) /* 0.285102201 */,
8107 /* 7603 */ 0x048ffbc2 | (19 << 27) /* 0.285152206 */,
8108 /* 7604 */ 0x04903032 | (19 << 27) /* 0.285202214 */,
8109 /* 7605 */ 0x049064a3 | (19 << 27) /* 0.285252225 */,
8110 /* 7606 */ 0x04909914 | (19 << 27) /* 0.285302237 */,
8111 /* 7607 */ 0x0490cd86 | (19 << 27) /* 0.285352252 */,
8112 /* 7608 */ 0x049101f8 | (19 << 27) /* 0.285402269 */,
8113 /* 7609 */ 0x0491366b | (19 << 27) /* 0.285452288 */,
8114 /* 7610 */ 0x04916ade | (19 << 27) /* 0.285502309 */,
8115 /* 7611 */ 0x04919f52 | (19 << 27) /* 0.285552332 */,
8116 /* 7612 */ 0x0491d3c7 | (19 << 27) /* 0.285602358 */,
8117 /* 7613 */ 0x0492083c | (19 << 27) /* 0.285652386 */,
8118 /* 7614 */ 0x04923cb2 | (19 << 27) /* 0.285702416 */,
8119 /* 7615 */ 0x04927128 | (19 << 27) /* 0.285752448 */,
8120
8121 /* 7616 */ 0x0492a59f | (19 << 27) /* 0.285802482 */,
8122 /* 7617 */ 0x0492da17 | (19 << 27) /* 0.285852519 */,
8123 /* 7618 */ 0x04930e8f | (19 << 27) /* 0.285902557 */,
8124 /* 7619 */ 0x04934308 | (19 << 27) /* 0.285952598 */,
8125 /* 7620 */ 0x04937781 | (19 << 27) /* 0.286002641 */,
8126 /* 7621 */ 0x0493abfb | (19 << 27) /* 0.286052687 */,
8127 /* 7622 */ 0x0493e076 | (19 << 27) /* 0.286102734 */,
8128 /* 7623 */ 0x049414f1 | (19 << 27) /* 0.286152784 */,
8129 /* 7624 */ 0x0494496c | (19 << 27) /* 0.286202836 */,
8130 /* 7625 */ 0x04947de9 | (19 << 27) /* 0.286252890 */,
8131 /* 7626 */ 0x0494b266 | (19 << 27) /* 0.286302946 */,
8132 /* 7627 */ 0x0494e6e3 | (19 << 27) /* 0.286353005 */,
8133 /* 7628 */ 0x04951b61 | (19 << 27) /* 0.286403065 */,
8134 /* 7629 */ 0x04954fe0 | (19 << 27) /* 0.286453128 */,
8135 /* 7630 */ 0x0495845f | (19 << 27) /* 0.286503193 */,
8136 /* 7631 */ 0x0495b8df | (19 << 27) /* 0.286553260 */,
8137
8138 /* 7632 */ 0x0495ed5f | (19 << 27) /* 0.286603329 */,
8139 /* 7633 */ 0x049621e0 | (19 << 27) /* 0.286653401 */,
8140 /* 7634 */ 0x04965662 | (19 << 27) /* 0.286703475 */,
8141 /* 7635 */ 0x04968ae4 | (19 << 27) /* 0.286753551 */,
8142 /* 7636 */ 0x0496bf67 | (19 << 27) /* 0.286803629 */,
8143 /* 7637 */ 0x0496f3ea | (19 << 27) /* 0.286853709 */,
8144 /* 7638 */ 0x0497286e | (19 << 27) /* 0.286903792 */,
8145 /* 7639 */ 0x04975cf2 | (19 << 27) /* 0.286953876 */,
8146 /* 7640 */ 0x04979177 | (19 << 27) /* 0.287003963 */,
8147 /* 7641 */ 0x0497c5fd | (19 << 27) /* 0.287054052 */,
8148 /* 7642 */ 0x0497fa83 | (19 << 27) /* 0.287104143 */,
8149 /* 7643 */ 0x04982f0a | (19 << 27) /* 0.287154237 */,
8150 /* 7644 */ 0x04986392 | (19 << 27) /* 0.287204332 */,
8151 /* 7645 */ 0x0498981a | (19 << 27) /* 0.287254430 */,
8152 /* 7646 */ 0x0498cca2 | (19 << 27) /* 0.287304530 */,
8153 /* 7647 */ 0x0499012c | (19 << 27) /* 0.287354632 */,
8154
8155 /* 7648 */ 0x049935b5 | (19 << 27) /* 0.287404737 */,
8156 /* 7649 */ 0x04996a40 | (19 << 27) /* 0.287454843 */,
8157 /* 7650 */ 0x04999ecb | (19 << 27) /* 0.287504952 */,
8158 /* 7651 */ 0x0499d356 | (19 << 27) /* 0.287555063 */,
8159 /* 7652 */ 0x049a07e2 | (19 << 27) /* 0.287605176 */,
8160 /* 7653 */ 0x049a3c6f | (19 << 27) /* 0.287655291 */,
8161 /* 7654 */ 0x049a70fc | (19 << 27) /* 0.287705409 */,
8162 /* 7655 */ 0x049aa58a | (19 << 27) /* 0.287755528 */,
8163 /* 7656 */ 0x049ada19 | (19 << 27) /* 0.287805650 */,
8164 /* 7657 */ 0x049b0ea8 | (19 << 27) /* 0.287855774 */,
8165 /* 7658 */ 0x049b4337 | (19 << 27) /* 0.287905900 */,
8166 /* 7659 */ 0x049b77c8 | (19 << 27) /* 0.287956028 */,
8167 /* 7660 */ 0x049bac58 | (19 << 27) /* 0.288006159 */,
8168 /* 7661 */ 0x049be0ea | (19 << 27) /* 0.288056292 */,
8169 /* 7662 */ 0x049c157c | (19 << 27) /* 0.288106427 */,
8170 /* 7663 */ 0x049c4a0e | (19 << 27) /* 0.288156564 */,
8171
8172 /* 7664 */ 0x049c7ea1 | (19 << 27) /* 0.288206703 */,
8173 /* 7665 */ 0x049cb335 | (19 << 27) /* 0.288256844 */,
8174 /* 7666 */ 0x049ce7ca | (19 << 27) /* 0.288306988 */,
8175 /* 7667 */ 0x049d1c5e | (19 << 27) /* 0.288357134 */,
8176 /* 7668 */ 0x049d50f4 | (19 << 27) /* 0.288407282 */,
8177 /* 7669 */ 0x049d858a | (19 << 27) /* 0.288457432 */,
8178 /* 7670 */ 0x049dba21 | (19 << 27) /* 0.288507584 */,
8179 /* 7671 */ 0x049deeb8 | (19 << 27) /* 0.288557739 */,
8180 /* 7672 */ 0x049e2350 | (19 << 27) /* 0.288607895 */,
8181 /* 7673 */ 0x049e57e8 | (19 << 27) /* 0.288658054 */,
8182 /* 7674 */ 0x049e8c81 | (19 << 27) /* 0.288708215 */,
8183 /* 7675 */ 0x049ec11b | (19 << 27) /* 0.288758379 */,
8184 /* 7676 */ 0x049ef5b5 | (19 << 27) /* 0.288808544 */,
8185 /* 7677 */ 0x049f2a50 | (19 << 27) /* 0.288858712 */,
8186 /* 7678 */ 0x049f5eeb | (19 << 27) /* 0.288908881 */,
8187 /* 7679 */ 0x049f9387 | (19 << 27) /* 0.288959053 */,
8188
8189 /* 7680 */ 0x049fc824 | (19 << 27) /* 0.289009227 */,
8190 /* 7681 */ 0x049ffcc1 | (19 << 27) /* 0.289059404 */,
8191 /* 7682 */ 0x04a0315e | (19 << 27) /* 0.289109582 */,
8192 /* 7683 */ 0x04a065fd | (19 << 27) /* 0.289159763 */,
8193 /* 7684 */ 0x04a09a9b | (19 << 27) /* 0.289209946 */,
8194 /* 7685 */ 0x04a0cf3b | (19 << 27) /* 0.289260131 */,
8195 /* 7686 */ 0x04a103db | (19 << 27) /* 0.289310318 */,
8196 /* 7687 */ 0x04a1387b | (19 << 27) /* 0.289360507 */,
8197 /* 7688 */ 0x04a16d1d | (19 << 27) /* 0.289410699 */,
8198 /* 7689 */ 0x04a1a1be | (19 << 27) /* 0.289460893 */,
8199 /* 7690 */ 0x04a1d661 | (19 << 27) /* 0.289511088 */,
8200 /* 7691 */ 0x04a20b04 | (19 << 27) /* 0.289561287 */,
8201 /* 7692 */ 0x04a23fa7 | (19 << 27) /* 0.289611487 */,
8202 /* 7693 */ 0x04a2744b | (19 << 27) /* 0.289661689 */,
8203 /* 7694 */ 0x04a2a8f0 | (19 << 27) /* 0.289711894 */,
8204 /* 7695 */ 0x04a2dd95 | (19 << 27) /* 0.289762101 */,
8205
8206 /* 7696 */ 0x04a3123b | (19 << 27) /* 0.289812309 */,
8207 /* 7697 */ 0x04a346e2 | (19 << 27) /* 0.289862521 */,
8208 /* 7698 */ 0x04a37b89 | (19 << 27) /* 0.289912734 */,
8209 /* 7699 */ 0x04a3b030 | (19 << 27) /* 0.289962949 */,
8210 /* 7700 */ 0x04a3e4d8 | (19 << 27) /* 0.290013167 */,
8211 /* 7701 */ 0x04a41981 | (19 << 27) /* 0.290063387 */,
8212 /* 7702 */ 0x04a44e2b | (19 << 27) /* 0.290113609 */,
8213 /* 7703 */ 0x04a482d5 | (19 << 27) /* 0.290163833 */,
8214 /* 7704 */ 0x04a4b77f | (19 << 27) /* 0.290214059 */,
8215 /* 7705 */ 0x04a4ec2a | (19 << 27) /* 0.290264288 */,
8216 /* 7706 */ 0x04a520d6 | (19 << 27) /* 0.290314519 */,
8217 /* 7707 */ 0x04a55582 | (19 << 27) /* 0.290364751 */,
8218 /* 7708 */ 0x04a58a2f | (19 << 27) /* 0.290414986 */,
8219 /* 7709 */ 0x04a5bedd | (19 << 27) /* 0.290465224 */,
8220 /* 7710 */ 0x04a5f38b | (19 << 27) /* 0.290515463 */,
8221 /* 7711 */ 0x04a62839 | (19 << 27) /* 0.290565705 */,
8222
8223 /* 7712 */ 0x04a65ce8 | (19 << 27) /* 0.290615948 */,
8224 /* 7713 */ 0x04a69198 | (19 << 27) /* 0.290666194 */,
8225 /* 7714 */ 0x04a6c648 | (19 << 27) /* 0.290716442 */,
8226 /* 7715 */ 0x04a6faf9 | (19 << 27) /* 0.290766692 */,
8227 /* 7716 */ 0x04a72fab | (19 << 27) /* 0.290816945 */,
8228 /* 7717 */ 0x04a7645d | (19 << 27) /* 0.290867199 */,
8229 /* 7718 */ 0x04a79910 | (19 << 27) /* 0.290917456 */,
8230 /* 7719 */ 0x04a7cdc3 | (19 << 27) /* 0.290967715 */,
8231 /* 7720 */ 0x04a80277 | (19 << 27) /* 0.291017976 */,
8232 /* 7721 */ 0x04a8372b | (19 << 27) /* 0.291068239 */,
8233 /* 7722 */ 0x04a86be0 | (19 << 27) /* 0.291118505 */,
8234 /* 7723 */ 0x04a8a096 | (19 << 27) /* 0.291168772 */,
8235 /* 7724 */ 0x04a8d54c | (19 << 27) /* 0.291219042 */,
8236 /* 7725 */ 0x04a90a03 | (19 << 27) /* 0.291269314 */,
8237 /* 7726 */ 0x04a93eba | (19 << 27) /* 0.291319588 */,
8238 /* 7727 */ 0x04a97372 | (19 << 27) /* 0.291369865 */,
8239
8240 /* 7728 */ 0x04a9a82b | (19 << 27) /* 0.291420143 */,
8241 /* 7729 */ 0x04a9dce4 | (19 << 27) /* 0.291470424 */,
8242 /* 7730 */ 0x04aa119d | (19 << 27) /* 0.291520706 */,
8243 /* 7731 */ 0x04aa4658 | (19 << 27) /* 0.291570991 */,
8244 /* 7732 */ 0x04aa7b13 | (19 << 27) /* 0.291621278 */,
8245 /* 7733 */ 0x04aaafce | (19 << 27) /* 0.291671568 */,
8246 /* 7734 */ 0x04aae48a | (19 << 27) /* 0.291721859 */,
8247 /* 7735 */ 0x04ab1947 | (19 << 27) /* 0.291772153 */,
8248 /* 7736 */ 0x04ab4e04 | (19 << 27) /* 0.291822449 */,
8249 /* 7737 */ 0x04ab82c2 | (19 << 27) /* 0.291872747 */,
8250 /* 7738 */ 0x04abb780 | (19 << 27) /* 0.291923047 */,
8251 /* 7739 */ 0x04abec3f | (19 << 27) /* 0.291973349 */,
8252 /* 7740 */ 0x04ac20fe | (19 << 27) /* 0.292023653 */,
8253 /* 7741 */ 0x04ac55be | (19 << 27) /* 0.292073960 */,
8254 /* 7742 */ 0x04ac8a7f | (19 << 27) /* 0.292124269 */,
8255 /* 7743 */ 0x04acbf40 | (19 << 27) /* 0.292174580 */,
8256
8257 /* 7744 */ 0x04acf402 | (19 << 27) /* 0.292224893 */,
8258 /* 7745 */ 0x04ad28c5 | (19 << 27) /* 0.292275208 */,
8259 /* 7746 */ 0x04ad5d88 | (19 << 27) /* 0.292325526 */,
8260 /* 7747 */ 0x04ad924b | (19 << 27) /* 0.292375845 */,
8261 /* 7748 */ 0x04adc70f | (19 << 27) /* 0.292426167 */,
8262 /* 7749 */ 0x04adfbd4 | (19 << 27) /* 0.292476491 */,
8263 /* 7750 */ 0x04ae3099 | (19 << 27) /* 0.292526817 */,
8264 /* 7751 */ 0x04ae655f | (19 << 27) /* 0.292577145 */,
8265 /* 7752 */ 0x04ae9a26 | (19 << 27) /* 0.292627476 */,
8266 /* 7753 */ 0x04aeceed | (19 << 27) /* 0.292677808 */,
8267 /* 7754 */ 0x04af03b4 | (19 << 27) /* 0.292728143 */,
8268 /* 7755 */ 0x04af387d | (19 << 27) /* 0.292778480 */,
8269 /* 7756 */ 0x04af6d45 | (19 << 27) /* 0.292828819 */,
8270 /* 7757 */ 0x04afa20f | (19 << 27) /* 0.292879160 */,
8271 /* 7758 */ 0x04afd6d9 | (19 << 27) /* 0.292929504 */,
8272 /* 7759 */ 0x04b00ba3 | (19 << 27) /* 0.292979849 */,
8273
8274 /* 7760 */ 0x04b0406e | (19 << 27) /* 0.293030197 */,
8275 /* 7761 */ 0x04b0753a | (19 << 27) /* 0.293080547 */,
8276 /* 7762 */ 0x04b0aa06 | (19 << 27) /* 0.293130899 */,
8277 /* 7763 */ 0x04b0ded3 | (19 << 27) /* 0.293181253 */,
8278 /* 7764 */ 0x04b113a1 | (19 << 27) /* 0.293231610 */,
8279 /* 7765 */ 0x04b1486f | (19 << 27) /* 0.293281968 */,
8280 /* 7766 */ 0x04b17d3d | (19 << 27) /* 0.293332329 */,
8281 /* 7767 */ 0x04b1b20c | (19 << 27) /* 0.293382692 */,
8282 /* 7768 */ 0x04b1e6dc | (19 << 27) /* 0.293433057 */,
8283 /* 7769 */ 0x04b21bad | (19 << 27) /* 0.293483424 */,
8284 /* 7770 */ 0x04b2507d | (19 << 27) /* 0.293533794 */,
8285 /* 7771 */ 0x04b2854f | (19 << 27) /* 0.293584165 */,
8286 /* 7772 */ 0x04b2ba21 | (19 << 27) /* 0.293634539 */,
8287 /* 7773 */ 0x04b2eef4 | (19 << 27) /* 0.293684915 */,
8288 /* 7774 */ 0x04b323c7 | (19 << 27) /* 0.293735293 */,
8289 /* 7775 */ 0x04b3589b | (19 << 27) /* 0.293785673 */,
8290
8291 /* 7776 */ 0x04b38d6f | (19 << 27) /* 0.293836055 */,
8292 /* 7777 */ 0x04b3c244 | (19 << 27) /* 0.293886440 */,
8293 /* 7778 */ 0x04b3f71a | (19 << 27) /* 0.293936826 */,
8294 /* 7779 */ 0x04b42bf0 | (19 << 27) /* 0.293987215 */,
8295 /* 7780 */ 0x04b460c7 | (19 << 27) /* 0.294037606 */,
8296 /* 7781 */ 0x04b4959e | (19 << 27) /* 0.294087999 */,
8297 /* 7782 */ 0x04b4ca76 | (19 << 27) /* 0.294138395 */,
8298 /* 7783 */ 0x04b4ff4e | (19 << 27) /* 0.294188792 */,
8299 /* 7784 */ 0x04b53427 | (19 << 27) /* 0.294239192 */,
8300 /* 7785 */ 0x04b56901 | (19 << 27) /* 0.294289593 */,
8301 /* 7786 */ 0x04b59ddb | (19 << 27) /* 0.294339997 */,
8302 /* 7787 */ 0x04b5d2b6 | (19 << 27) /* 0.294390403 */,
8303 /* 7788 */ 0x04b60791 | (19 << 27) /* 0.294440812 */,
8304 /* 7789 */ 0x04b63c6d | (19 << 27) /* 0.294491222 */,
8305 /* 7790 */ 0x04b6714a | (19 << 27) /* 0.294541635 */,
8306 /* 7791 */ 0x04b6a627 | (19 << 27) /* 0.294592049 */,
8307
8308 /* 7792 */ 0x04b6db05 | (19 << 27) /* 0.294642466 */,
8309 /* 7793 */ 0x04b70fe3 | (19 << 27) /* 0.294692885 */,
8310 /* 7794 */ 0x04b744c2 | (19 << 27) /* 0.294743306 */,
8311 /* 7795 */ 0x04b779a1 | (19 << 27) /* 0.294793730 */,
8312 /* 7796 */ 0x04b7ae81 | (19 << 27) /* 0.294844155 */,
8313 /* 7797 */ 0x04b7e362 | (19 << 27) /* 0.294894583 */,
8314 /* 7798 */ 0x04b81843 | (19 << 27) /* 0.294945013 */,
8315 /* 7799 */ 0x04b84d24 | (19 << 27) /* 0.294995445 */,
8316 /* 7800 */ 0x04b88207 | (19 << 27) /* 0.295045879 */,
8317 /* 7801 */ 0x04b8b6ea | (19 << 27) /* 0.295096315 */,
8318 /* 7802 */ 0x04b8ebcd | (19 << 27) /* 0.295146753 */,
8319 /* 7803 */ 0x04b920b1 | (19 << 27) /* 0.295197194 */,
8320 /* 7804 */ 0x04b95596 | (19 << 27) /* 0.295247637 */,
8321 /* 7805 */ 0x04b98a7b | (19 << 27) /* 0.295298082 */,
8322 /* 7806 */ 0x04b9bf61 | (19 << 27) /* 0.295348529 */,
8323 /* 7807 */ 0x04b9f447 | (19 << 27) /* 0.295398978 */,
8324
8325 /* 7808 */ 0x04ba292e | (19 << 27) /* 0.295449429 */,
8326 /* 7809 */ 0x04ba5e16 | (19 << 27) /* 0.295499883 */,
8327 /* 7810 */ 0x04ba92fe | (19 << 27) /* 0.295550338 */,
8328 /* 7811 */ 0x04bac7e6 | (19 << 27) /* 0.295600796 */,
8329 /* 7812 */ 0x04bafcd0 | (19 << 27) /* 0.295651256 */,
8330 /* 7813 */ 0x04bb31b9 | (19 << 27) /* 0.295701718 */,
8331 /* 7814 */ 0x04bb66a4 | (19 << 27) /* 0.295752183 */,
8332 /* 7815 */ 0x04bb9b8f | (19 << 27) /* 0.295802649 */,
8333 /* 7816 */ 0x04bbd07a | (19 << 27) /* 0.295853118 */,
8334 /* 7817 */ 0x04bc0566 | (19 << 27) /* 0.295903588 */,
8335 /* 7818 */ 0x04bc3a53 | (19 << 27) /* 0.295954061 */,
8336 /* 7819 */ 0x04bc6f40 | (19 << 27) /* 0.296004536 */,
8337 /* 7820 */ 0x04bca42e | (19 << 27) /* 0.296055013 */,
8338 /* 7821 */ 0x04bcd91d | (19 << 27) /* 0.296105493 */,
8339 /* 7822 */ 0x04bd0e0c | (19 << 27) /* 0.296155974 */,
8340 /* 7823 */ 0x04bd42fb | (19 << 27) /* 0.296206458 */,
8341
8342 /* 7824 */ 0x04bd77ec | (19 << 27) /* 0.296256944 */,
8343 /* 7825 */ 0x04bdacdc | (19 << 27) /* 0.296307432 */,
8344 /* 7826 */ 0x04bde1ce | (19 << 27) /* 0.296357922 */,
8345 /* 7827 */ 0x04be16c0 | (19 << 27) /* 0.296408414 */,
8346 /* 7828 */ 0x04be4bb2 | (19 << 27) /* 0.296458908 */,
8347 /* 7829 */ 0x04be80a5 | (19 << 27) /* 0.296509405 */,
8348 /* 7830 */ 0x04beb599 | (19 << 27) /* 0.296559904 */,
8349 /* 7831 */ 0x04beea8d | (19 << 27) /* 0.296610404 */,
8350 /* 7832 */ 0x04bf1f82 | (19 << 27) /* 0.296660907 */,
8351 /* 7833 */ 0x04bf5477 | (19 << 27) /* 0.296711413 */,
8352 /* 7834 */ 0x04bf896d | (19 << 27) /* 0.296761920 */,
8353 /* 7835 */ 0x04bfbe64 | (19 << 27) /* 0.296812429 */,
8354 /* 7836 */ 0x04bff35b | (19 << 27) /* 0.296862941 */,
8355 /* 7837 */ 0x04c02852 | (19 << 27) /* 0.296913455 */,
8356 /* 7838 */ 0x04c05d4b | (19 << 27) /* 0.296963971 */,
8357 /* 7839 */ 0x04c09243 | (19 << 27) /* 0.297014489 */,
8358
8359 /* 7840 */ 0x04c0c73d | (19 << 27) /* 0.297065009 */,
8360 /* 7841 */ 0x04c0fc37 | (19 << 27) /* 0.297115531 */,
8361 /* 7842 */ 0x04c13131 | (19 << 27) /* 0.297166056 */,
8362 /* 7843 */ 0x04c1662d | (19 << 27) /* 0.297216582 */,
8363 /* 7844 */ 0x04c19b28 | (19 << 27) /* 0.297267111 */,
8364 /* 7845 */ 0x04c1d025 | (19 << 27) /* 0.297317642 */,
8365 /* 7846 */ 0x04c20521 | (19 << 27) /* 0.297368175 */,
8366 /* 7847 */ 0x04c23a1f | (19 << 27) /* 0.297418710 */,
8367 /* 7848 */ 0x04c26f1d | (19 << 27) /* 0.297469248 */,
8368 /* 7849 */ 0x04c2a41b | (19 << 27) /* 0.297519787 */,
8369 /* 7850 */ 0x04c2d91b | (19 << 27) /* 0.297570329 */,
8370 /* 7851 */ 0x04c30e1a | (19 << 27) /* 0.297620873 */,
8371 /* 7852 */ 0x04c3431b | (19 << 27) /* 0.297671418 */,
8372 /* 7853 */ 0x04c3781c | (19 << 27) /* 0.297721967 */,
8373 /* 7854 */ 0x04c3ad1d | (19 << 27) /* 0.297772517 */,
8374 /* 7855 */ 0x04c3e21f | (19 << 27) /* 0.297823069 */,
8375
8376 /* 7856 */ 0x04c41722 | (19 << 27) /* 0.297873624 */,
8377 /* 7857 */ 0x04c44c25 | (19 << 27) /* 0.297924180 */,
8378 /* 7858 */ 0x04c48129 | (19 << 27) /* 0.297974739 */,
8379 /* 7859 */ 0x04c4b62d | (19 << 27) /* 0.298025300 */,
8380 /* 7860 */ 0x04c4eb32 | (19 << 27) /* 0.298075863 */,
8381 /* 7861 */ 0x04c52038 | (19 << 27) /* 0.298126429 */,
8382 /* 7862 */ 0x04c5553e | (19 << 27) /* 0.298176996 */,
8383 /* 7863 */ 0x04c58a44 | (19 << 27) /* 0.298227565 */,
8384 /* 7864 */ 0x04c5bf4c | (19 << 27) /* 0.298278137 */,
8385 /* 7865 */ 0x04c5f453 | (19 << 27) /* 0.298328711 */,
8386 /* 7866 */ 0x04c6295c | (19 << 27) /* 0.298379287 */,
8387 /* 7867 */ 0x04c65e65 | (19 << 27) /* 0.298429865 */,
8388 /* 7868 */ 0x04c6936e | (19 << 27) /* 0.298480445 */,
8389 /* 7869 */ 0x04c6c878 | (19 << 27) /* 0.298531028 */,
8390 /* 7870 */ 0x04c6fd83 | (19 << 27) /* 0.298581612 */,
8391 /* 7871 */ 0x04c7328e | (19 << 27) /* 0.298632199 */,
8392
8393 /* 7872 */ 0x04c7679a | (19 << 27) /* 0.298682788 */,
8394 /* 7873 */ 0x04c79ca7 | (19 << 27) /* 0.298733379 */,
8395 /* 7874 */ 0x04c7d1b4 | (19 << 27) /* 0.298783972 */,
8396 /* 7875 */ 0x04c806c1 | (19 << 27) /* 0.298834567 */,
8397 /* 7876 */ 0x04c83bcf | (19 << 27) /* 0.298885165 */,
8398 /* 7877 */ 0x04c870de | (19 << 27) /* 0.298935764 */,
8399 /* 7878 */ 0x04c8a5ed | (19 << 27) /* 0.298986366 */,
8400 /* 7879 */ 0x04c8dafd | (19 << 27) /* 0.299036970 */,
8401 /* 7880 */ 0x04c9100d | (19 << 27) /* 0.299087576 */,
8402 /* 7881 */ 0x04c9451e | (19 << 27) /* 0.299138184 */,
8403 /* 7882 */ 0x04c97a30 | (19 << 27) /* 0.299188794 */,
8404 /* 7883 */ 0x04c9af42 | (19 << 27) /* 0.299239406 */,
8405 /* 7884 */ 0x04c9e455 | (19 << 27) /* 0.299290021 */,
8406 /* 7885 */ 0x04ca1968 | (19 << 27) /* 0.299340638 */,
8407 /* 7886 */ 0x04ca4e7c | (19 << 27) /* 0.299391256 */,
8408 /* 7887 */ 0x04ca8391 | (19 << 27) /* 0.299441877 */,
8409
8410 /* 7888 */ 0x04cab8a6 | (19 << 27) /* 0.299492500 */,
8411 /* 7889 */ 0x04caedbb | (19 << 27) /* 0.299543126 */,
8412 /* 7890 */ 0x04cb22d1 | (19 << 27) /* 0.299593753 */,
8413 /* 7891 */ 0x04cb57e8 | (19 << 27) /* 0.299644382 */,
8414 /* 7892 */ 0x04cb8d00 | (19 << 27) /* 0.299695014 */,
8415 /* 7893 */ 0x04cbc217 | (19 << 27) /* 0.299745648 */,
8416 /* 7894 */ 0x04cbf730 | (19 << 27) /* 0.299796284 */,
8417 /* 7895 */ 0x04cc2c49 | (19 << 27) /* 0.299846922 */,
8418 /* 7896 */ 0x04cc6163 | (19 << 27) /* 0.299897562 */,
8419 /* 7897 */ 0x04cc967d | (19 << 27) /* 0.299948204 */,
8420 /* 7898 */ 0x04cccb98 | (19 << 27) /* 0.299998849 */,
8421 /* 7899 */ 0x04cd00b3 | (19 << 27) /* 0.300049495 */,
8422 /* 7900 */ 0x04cd35cf | (19 << 27) /* 0.300100144 */,
8423 /* 7901 */ 0x04cd6aeb | (19 << 27) /* 0.300150795 */,
8424 /* 7902 */ 0x04cda008 | (19 << 27) /* 0.300201448 */,
8425 /* 7903 */ 0x04cdd526 | (19 << 27) /* 0.300252103 */,
8426
8427 /* 7904 */ 0x04ce0a44 | (19 << 27) /* 0.300302761 */,
8428 /* 7905 */ 0x04ce3f63 | (19 << 27) /* 0.300353420 */,
8429 /* 7906 */ 0x04ce7482 | (19 << 27) /* 0.300404082 */,
8430 /* 7907 */ 0x04cea9a2 | (19 << 27) /* 0.300454745 */,
8431 /* 7908 */ 0x04cedec3 | (19 << 27) /* 0.300505411 */,
8432 /* 7909 */ 0x04cf13e4 | (19 << 27) /* 0.300556079 */,
8433 /* 7910 */ 0x04cf4906 | (19 << 27) /* 0.300606749 */,
8434 /* 7911 */ 0x04cf7e28 | (19 << 27) /* 0.300657421 */,
8435 /* 7912 */ 0x04cfb34b | (19 << 27) /* 0.300708096 */,
8436 /* 7913 */ 0x04cfe86e | (19 << 27) /* 0.300758772 */,
8437 /* 7914 */ 0x04d01d92 | (19 << 27) /* 0.300809451 */,
8438 /* 7915 */ 0x04d052b6 | (19 << 27) /* 0.300860132 */,
8439 /* 7916 */ 0x04d087db | (19 << 27) /* 0.300910815 */,
8440 /* 7917 */ 0x04d0bd01 | (19 << 27) /* 0.300961500 */,
8441 /* 7918 */ 0x04d0f227 | (19 << 27) /* 0.301012187 */,
8442 /* 7919 */ 0x04d1274e | (19 << 27) /* 0.301062876 */,
8443
8444 /* 7920 */ 0x04d15c76 | (19 << 27) /* 0.301113568 */,
8445 /* 7921 */ 0x04d1919e | (19 << 27) /* 0.301164261 */,
8446 /* 7922 */ 0x04d1c6c6 | (19 << 27) /* 0.301214957 */,
8447 /* 7923 */ 0x04d1fbef | (19 << 27) /* 0.301265655 */,
8448 /* 7924 */ 0x04d23119 | (19 << 27) /* 0.301316355 */,
8449 /* 7925 */ 0x04d26643 | (19 << 27) /* 0.301367057 */,
8450 /* 7926 */ 0x04d29b6e | (19 << 27) /* 0.301417761 */,
8451 /* 7927 */ 0x04d2d099 | (19 << 27) /* 0.301468468 */,
8452 /* 7928 */ 0x04d305c5 | (19 << 27) /* 0.301519176 */,
8453 /* 7929 */ 0x04d33af2 | (19 << 27) /* 0.301569887 */,
8454 /* 7930 */ 0x04d3701f | (19 << 27) /* 0.301620599 */,
8455 /* 7931 */ 0x04d3a54d | (19 << 27) /* 0.301671314 */,
8456 /* 7932 */ 0x04d3da7b | (19 << 27) /* 0.301722031 */,
8457 /* 7933 */ 0x04d40faa | (19 << 27) /* 0.301772751 */,
8458 /* 7934 */ 0x04d444d9 | (19 << 27) /* 0.301823472 */,
8459 /* 7935 */ 0x04d47a09 | (19 << 27) /* 0.301874195 */,
8460
8461 /* 7936 */ 0x04d4af3a | (19 << 27) /* 0.301924921 */,
8462 /* 7937 */ 0x04d4e46b | (19 << 27) /* 0.301975649 */,
8463 /* 7938 */ 0x04d5199c | (19 << 27) /* 0.302026378 */,
8464 /* 7939 */ 0x04d54ecf | (19 << 27) /* 0.302077110 */,
8465 /* 7940 */ 0x04d58401 | (19 << 27) /* 0.302127845 */,
8466 /* 7941 */ 0x04d5b935 | (19 << 27) /* 0.302178581 */,
8467 /* 7942 */ 0x04d5ee69 | (19 << 27) /* 0.302229319 */,
8468 /* 7943 */ 0x04d6239d | (19 << 27) /* 0.302280060 */,
8469 /* 7944 */ 0x04d658d2 | (19 << 27) /* 0.302330802 */,
8470 /* 7945 */ 0x04d68e08 | (19 << 27) /* 0.302381547 */,
8471 /* 7946 */ 0x04d6c33e | (19 << 27) /* 0.302432294 */,
8472 /* 7947 */ 0x04d6f875 | (19 << 27) /* 0.302483043 */,
8473 /* 7948 */ 0x04d72dad | (19 << 27) /* 0.302533794 */,
8474 /* 7949 */ 0x04d762e5 | (19 << 27) /* 0.302584547 */,
8475 /* 7950 */ 0x04d7981d | (19 << 27) /* 0.302635303 */,
8476 /* 7951 */ 0x04d7cd56 | (19 << 27) /* 0.302686060 */,
8477
8478 /* 7952 */ 0x04d80290 | (19 << 27) /* 0.302736820 */,
8479 /* 7953 */ 0x04d837ca | (19 << 27) /* 0.302787581 */,
8480 /* 7954 */ 0x04d86d05 | (19 << 27) /* 0.302838345 */,
8481 /* 7955 */ 0x04d8a240 | (19 << 27) /* 0.302889111 */,
8482 /* 7956 */ 0x04d8d77c | (19 << 27) /* 0.302939879 */,
8483 /* 7957 */ 0x04d90cb9 | (19 << 27) /* 0.302990650 */,
8484 /* 7958 */ 0x04d941f6 | (19 << 27) /* 0.303041422 */,
8485 /* 7959 */ 0x04d97734 | (19 << 27) /* 0.303092197 */,
8486 /* 7960 */ 0x04d9ac72 | (19 << 27) /* 0.303142973 */,
8487 /* 7961 */ 0x04d9e1b1 | (19 << 27) /* 0.303193752 */,
8488 /* 7962 */ 0x04da16f0 | (19 << 27) /* 0.303244533 */,
8489 /* 7963 */ 0x04da4c30 | (19 << 27) /* 0.303295316 */,
8490 /* 7964 */ 0x04da8171 | (19 << 27) /* 0.303346101 */,
8491 /* 7965 */ 0x04dab6b2 | (19 << 27) /* 0.303396889 */,
8492 /* 7966 */ 0x04daebf4 | (19 << 27) /* 0.303447678 */,
8493 /* 7967 */ 0x04db2136 | (19 << 27) /* 0.303498469 */,
8494
8495 /* 7968 */ 0x04db5679 | (19 << 27) /* 0.303549263 */,
8496 /* 7969 */ 0x04db8bbc | (19 << 27) /* 0.303600059 */,
8497 /* 7970 */ 0x04dbc100 | (19 << 27) /* 0.303650857 */,
8498 /* 7971 */ 0x04dbf644 | (19 << 27) /* 0.303701657 */,
8499 /* 7972 */ 0x04dc2b8a | (19 << 27) /* 0.303752459 */,
8500 /* 7973 */ 0x04dc60cf | (19 << 27) /* 0.303803263 */,
8501 /* 7974 */ 0x04dc9616 | (19 << 27) /* 0.303854070 */,
8502 /* 7975 */ 0x04dccb5c | (19 << 27) /* 0.303904878 */,
8503 /* 7976 */ 0x04dd00a4 | (19 << 27) /* 0.303955689 */,
8504 /* 7977 */ 0x04dd35ec | (19 << 27) /* 0.304006502 */,
8505 /* 7978 */ 0x04dd6b34 | (19 << 27) /* 0.304057317 */,
8506 /* 7979 */ 0x04dda07d | (19 << 27) /* 0.304108134 */,
8507 /* 7980 */ 0x04ddd5c7 | (19 << 27) /* 0.304158953 */,
8508 /* 7981 */ 0x04de0b11 | (19 << 27) /* 0.304209774 */,
8509 /* 7982 */ 0x04de405c | (19 << 27) /* 0.304260597 */,
8510 /* 7983 */ 0x04de75a7 | (19 << 27) /* 0.304311423 */,
8511
8512 /* 7984 */ 0x04deaaf3 | (19 << 27) /* 0.304362251 */,
8513 /* 7985 */ 0x04dee040 | (19 << 27) /* 0.304413080 */,
8514 /* 7986 */ 0x04df158d | (19 << 27) /* 0.304463912 */,
8515 /* 7987 */ 0x04df4adb | (19 << 27) /* 0.304514746 */,
8516 /* 7988 */ 0x04df8029 | (19 << 27) /* 0.304565582 */,
8517 /* 7989 */ 0x04dfb578 | (19 << 27) /* 0.304616421 */,
8518 /* 7990 */ 0x04dfeac7 | (19 << 27) /* 0.304667261 */,
8519 /* 7991 */ 0x04e02017 | (19 << 27) /* 0.304718103 */,
8520 /* 7992 */ 0x04e05567 | (19 << 27) /* 0.304768948 */,
8521 /* 7993 */ 0x04e08ab8 | (19 << 27) /* 0.304819795 */,
8522 /* 7994 */ 0x04e0c00a | (19 << 27) /* 0.304870644 */,
8523 /* 7995 */ 0x04e0f55c | (19 << 27) /* 0.304921495 */,
8524 /* 7996 */ 0x04e12aaf | (19 << 27) /* 0.304972348 */,
8525 /* 7997 */ 0x04e16002 | (19 << 27) /* 0.305023203 */,
8526 /* 7998 */ 0x04e19556 | (19 << 27) /* 0.305074060 */,
8527 /* 7999 */ 0x04e1caab | (19 << 27) /* 0.305124920 */,
8528
8529 /* 8000 */ 0x04e20000 | (19 << 27) /* 0.305175781 */,
8530 /* 8001 */ 0x04e23555 | (19 << 27) /* 0.305226645 */,
8531 /* 8002 */ 0x04e26aac | (19 << 27) /* 0.305277511 */,
8532 /* 8003 */ 0x04e2a002 | (19 << 27) /* 0.305328379 */,
8533 /* 8004 */ 0x04e2d55a | (19 << 27) /* 0.305379249 */,
8534 /* 8005 */ 0x04e30ab2 | (19 << 27) /* 0.305430121 */,
8535 /* 8006 */ 0x04e3400a | (19 << 27) /* 0.305480995 */,
8536 /* 8007 */ 0x04e37563 | (19 << 27) /* 0.305531872 */,
8537 /* 8008 */ 0x04e3aabd | (19 << 27) /* 0.305582750 */,
8538 /* 8009 */ 0x04e3e017 | (19 << 27) /* 0.305633631 */,
8539 /* 8010 */ 0x04e41572 | (19 << 27) /* 0.305684513 */,
8540 /* 8011 */ 0x04e44acd | (19 << 27) /* 0.305735398 */,
8541 /* 8012 */ 0x04e48029 | (19 << 27) /* 0.305786285 */,
8542 /* 8013 */ 0x04e4b585 | (19 << 27) /* 0.305837174 */,
8543 /* 8014 */ 0x04e4eae2 | (19 << 27) /* 0.305888066 */,
8544 /* 8015 */ 0x04e52040 | (19 << 27) /* 0.305938959 */,
8545
8546 /* 8016 */ 0x04e5559e | (19 << 27) /* 0.305989854 */,
8547 /* 8017 */ 0x04e58afd | (19 << 27) /* 0.306040752 */,
8548 /* 8018 */ 0x04e5c05c | (19 << 27) /* 0.306091652 */,
8549 /* 8019 */ 0x04e5f5bc | (19 << 27) /* 0.306142554 */,
8550 /* 8020 */ 0x04e62b1c | (19 << 27) /* 0.306193457 */,
8551 /* 8021 */ 0x04e6607d | (19 << 27) /* 0.306244364 */,
8552 /* 8022 */ 0x04e695df | (19 << 27) /* 0.306295272 */,
8553 /* 8023 */ 0x04e6cb41 | (19 << 27) /* 0.306346182 */,
8554 /* 8024 */ 0x04e700a3 | (19 << 27) /* 0.306397094 */,
8555 /* 8025 */ 0x04e73607 | (19 << 27) /* 0.306448009 */,
8556 /* 8026 */ 0x04e76b6b | (19 << 27) /* 0.306498925 */,
8557 /* 8027 */ 0x04e7a0cf | (19 << 27) /* 0.306549844 */,
8558 /* 8028 */ 0x04e7d634 | (19 << 27) /* 0.306600765 */,
8559 /* 8029 */ 0x04e80b99 | (19 << 27) /* 0.306651688 */,
8560 /* 8030 */ 0x04e84100 | (19 << 27) /* 0.306702613 */,
8561 /* 8031 */ 0x04e87666 | (19 << 27) /* 0.306753540 */,
8562
8563 /* 8032 */ 0x04e8abcd | (19 << 27) /* 0.306804470 */,
8564 /* 8033 */ 0x04e8e135 | (19 << 27) /* 0.306855401 */,
8565 /* 8034 */ 0x04e9169e | (19 << 27) /* 0.306906334 */,
8566 /* 8035 */ 0x04e94c07 | (19 << 27) /* 0.306957270 */,
8567 /* 8036 */ 0x04e98170 | (19 << 27) /* 0.307008208 */,
8568 /* 8037 */ 0x04e9b6da | (19 << 27) /* 0.307059148 */,
8569 /* 8038 */ 0x04e9ec45 | (19 << 27) /* 0.307110090 */,
8570 /* 8039 */ 0x04ea21b0 | (19 << 27) /* 0.307161034 */,
8571 /* 8040 */ 0x04ea571c | (19 << 27) /* 0.307211980 */,
8572 /* 8041 */ 0x04ea8c88 | (19 << 27) /* 0.307262928 */,
8573 /* 8042 */ 0x04eac1f5 | (19 << 27) /* 0.307313879 */,
8574 /* 8043 */ 0x04eaf762 | (19 << 27) /* 0.307364831 */,
8575 /* 8044 */ 0x04eb2cd0 | (19 << 27) /* 0.307415786 */,
8576 /* 8045 */ 0x04eb623f | (19 << 27) /* 0.307466743 */,
8577 /* 8046 */ 0x04eb97ae | (19 << 27) /* 0.307517702 */,
8578 /* 8047 */ 0x04ebcd1e | (19 << 27) /* 0.307568663 */,
8579
8580 /* 8048 */ 0x04ec028e | (19 << 27) /* 0.307619626 */,
8581 /* 8049 */ 0x04ec37ff | (19 << 27) /* 0.307670591 */,
8582 /* 8050 */ 0x04ec6d71 | (19 << 27) /* 0.307721558 */,
8583 /* 8051 */ 0x04eca2e3 | (19 << 27) /* 0.307772528 */,
8584 /* 8052 */ 0x04ecd855 | (19 << 27) /* 0.307823499 */,
8585 /* 8053 */ 0x04ed0dc8 | (19 << 27) /* 0.307874473 */,
8586 /* 8054 */ 0x04ed433c | (19 << 27) /* 0.307925449 */,
8587 /* 8055 */ 0x04ed78b0 | (19 << 27) /* 0.307976426 */,
8588 /* 8056 */ 0x04edae25 | (19 << 27) /* 0.308027406 */,
8589 /* 8057 */ 0x04ede39a | (19 << 27) /* 0.308078389 */,
8590 /* 8058 */ 0x04ee1910 | (19 << 27) /* 0.308129373 */,
8591 /* 8059 */ 0x04ee4e87 | (19 << 27) /* 0.308180359 */,
8592 /* 8060 */ 0x04ee83fe | (19 << 27) /* 0.308231347 */,
8593 /* 8061 */ 0x04eeb976 | (19 << 27) /* 0.308282338 */,
8594 /* 8062 */ 0x04eeeeee | (19 << 27) /* 0.308333331 */,
8595 /* 8063 */ 0x04ef2467 | (19 << 27) /* 0.308384325 */,
8596
8597 /* 8064 */ 0x04ef59e0 | (19 << 27) /* 0.308435322 */,
8598 /* 8065 */ 0x04ef8f5a | (19 << 27) /* 0.308486321 */,
8599 /* 8066 */ 0x04efc4d5 | (19 << 27) /* 0.308537322 */,
8600 /* 8067 */ 0x04effa50 | (19 << 27) /* 0.308588325 */,
8601 /* 8068 */ 0x04f02fcb | (19 << 27) /* 0.308639331 */,
8602 /* 8069 */ 0x04f06547 | (19 << 27) /* 0.308690338 */,
8603 /* 8070 */ 0x04f09ac4 | (19 << 27) /* 0.308741348 */,
8604 /* 8071 */ 0x04f0d041 | (19 << 27) /* 0.308792359 */,
8605 /* 8072 */ 0x04f105bf | (19 << 27) /* 0.308843373 */,
8606 /* 8073 */ 0x04f13b3e | (19 << 27) /* 0.308894389 */,
8607 /* 8074 */ 0x04f170bd | (19 << 27) /* 0.308945407 */,
8608 /* 8075 */ 0x04f1a63c | (19 << 27) /* 0.308996427 */,
8609 /* 8076 */ 0x04f1dbbd | (19 << 27) /* 0.309047449 */,
8610 /* 8077 */ 0x04f2113d | (19 << 27) /* 0.309098473 */,
8611 /* 8078 */ 0x04f246bf | (19 << 27) /* 0.309149499 */,
8612 /* 8079 */ 0x04f27c40 | (19 << 27) /* 0.309200528 */,
8613
8614 /* 8080 */ 0x04f2b1c3 | (19 << 27) /* 0.309251558 */,
8615 /* 8081 */ 0x04f2e746 | (19 << 27) /* 0.309302591 */,
8616 /* 8082 */ 0x04f31cc9 | (19 << 27) /* 0.309353626 */,
8617 /* 8083 */ 0x04f3524d | (19 << 27) /* 0.309404663 */,
8618 /* 8084 */ 0x04f387d2 | (19 << 27) /* 0.309455702 */,
8619 /* 8085 */ 0x04f3bd57 | (19 << 27) /* 0.309506743 */,
8620 /* 8086 */ 0x04f3f2dd | (19 << 27) /* 0.309557786 */,
8621 /* 8087 */ 0x04f42864 | (19 << 27) /* 0.309608831 */,
8622 /* 8088 */ 0x04f45dea | (19 << 27) /* 0.309659879 */,
8623 /* 8089 */ 0x04f49372 | (19 << 27) /* 0.309710928 */,
8624 /* 8090 */ 0x04f4c8fa | (19 << 27) /* 0.309761980 */,
8625 /* 8091 */ 0x04f4fe83 | (19 << 27) /* 0.309813033 */,
8626 /* 8092 */ 0x04f5340c | (19 << 27) /* 0.309864089 */,
8627 /* 8093 */ 0x04f56996 | (19 << 27) /* 0.309915147 */,
8628 /* 8094 */ 0x04f59f20 | (19 << 27) /* 0.309966207 */,
8629 /* 8095 */ 0x04f5d4ab | (19 << 27) /* 0.310017269 */,
8630
8631 /* 8096 */ 0x04f60a36 | (19 << 27) /* 0.310068333 */,
8632 /* 8097 */ 0x04f63fc2 | (19 << 27) /* 0.310119400 */,
8633 /* 8098 */ 0x04f6754f | (19 << 27) /* 0.310170468 */,
8634 /* 8099 */ 0x04f6aadc | (19 << 27) /* 0.310221539 */,
8635 /* 8100 */ 0x04f6e06a | (19 << 27) /* 0.310272611 */,
8636 /* 8101 */ 0x04f715f8 | (19 << 27) /* 0.310323686 */,
8637 /* 8102 */ 0x04f74b87 | (19 << 27) /* 0.310374763 */,
8638 /* 8103 */ 0x04f78116 | (19 << 27) /* 0.310425842 */,
8639 /* 8104 */ 0x04f7b6a6 | (19 << 27) /* 0.310476923 */,
8640 /* 8105 */ 0x04f7ec37 | (19 << 27) /* 0.310528006 */,
8641 /* 8106 */ 0x04f821c8 | (19 << 27) /* 0.310579091 */,
8642 /* 8107 */ 0x04f85759 | (19 << 27) /* 0.310630179 */,
8643 /* 8108 */ 0x04f88cec | (19 << 27) /* 0.310681268 */,
8644 /* 8109 */ 0x04f8c27e | (19 << 27) /* 0.310732360 */,
8645 /* 8110 */ 0x04f8f812 | (19 << 27) /* 0.310783453 */,
8646 /* 8111 */ 0x04f92da6 | (19 << 27) /* 0.310834549 */,
8647
8648 /* 8112 */ 0x04f9633a | (19 << 27) /* 0.310885647 */,
8649 /* 8113 */ 0x04f998cf | (19 << 27) /* 0.310936747 */,
8650 /* 8114 */ 0x04f9ce65 | (19 << 27) /* 0.310987849 */,
8651 /* 8115 */ 0x04fa03fb | (19 << 27) /* 0.311038953 */,
8652 /* 8116 */ 0x04fa3992 | (19 << 27) /* 0.311090059 */,
8653 /* 8117 */ 0x04fa6f29 | (19 << 27) /* 0.311141168 */,
8654 /* 8118 */ 0x04faa4c1 | (19 << 27) /* 0.311192278 */,
8655 /* 8119 */ 0x04fada59 | (19 << 27) /* 0.311243390 */,
8656 /* 8120 */ 0x04fb0ff2 | (19 << 27) /* 0.311294505 */,
8657 /* 8121 */ 0x04fb458c | (19 << 27) /* 0.311345622 */,
8658 /* 8122 */ 0x04fb7b26 | (19 << 27) /* 0.311396741 */,
8659 /* 8123 */ 0x04fbb0c1 | (19 << 27) /* 0.311447862 */,
8660 /* 8124 */ 0x04fbe65c | (19 << 27) /* 0.311498985 */,
8661 /* 8125 */ 0x04fc1bf8 | (19 << 27) /* 0.311550110 */,
8662 /* 8126 */ 0x04fc5194 | (19 << 27) /* 0.311601237 */,
8663 /* 8127 */ 0x04fc8731 | (19 << 27) /* 0.311652366 */,
8664
8665 /* 8128 */ 0x04fcbcce | (19 << 27) /* 0.311703498 */,
8666 /* 8129 */ 0x04fcf26c | (19 << 27) /* 0.311754631 */,
8667 /* 8130 */ 0x04fd280b | (19 << 27) /* 0.311805767 */,
8668 /* 8131 */ 0x04fd5daa | (19 << 27) /* 0.311856905 */,
8669 /* 8132 */ 0x04fd934a | (19 << 27) /* 0.311908044 */,
8670 /* 8133 */ 0x04fdc8ea | (19 << 27) /* 0.311959186 */,
8671 /* 8134 */ 0x04fdfe8b | (19 << 27) /* 0.312010330 */,
8672 /* 8135 */ 0x04fe342c | (19 << 27) /* 0.312061476 */,
8673 /* 8136 */ 0x04fe69ce | (19 << 27) /* 0.312112625 */,
8674 /* 8137 */ 0x04fe9f71 | (19 << 27) /* 0.312163775 */,
8675 /* 8138 */ 0x04fed514 | (19 << 27) /* 0.312214927 */,
8676 /* 8139 */ 0x04ff0ab8 | (19 << 27) /* 0.312266082 */,
8677 /* 8140 */ 0x04ff405c | (19 << 27) /* 0.312317238 */,
8678 /* 8141 */ 0x04ff7601 | (19 << 27) /* 0.312368397 */,
8679 /* 8142 */ 0x04ffaba6 | (19 << 27) /* 0.312419558 */,
8680 /* 8143 */ 0x04ffe14c | (19 << 27) /* 0.312470720 */,
8681
8682 /* 8144 */ 0x050016f3 | (19 << 27) /* 0.312521885 */,
8683 /* 8145 */ 0x05004c9a | (19 << 27) /* 0.312573052 */,
8684 /* 8146 */ 0x05008241 | (19 << 27) /* 0.312624222 */,
8685 /* 8147 */ 0x0500b7e9 | (19 << 27) /* 0.312675393 */,
8686 /* 8148 */ 0x0500ed92 | (19 << 27) /* 0.312726566 */,
8687 /* 8149 */ 0x0501233b | (19 << 27) /* 0.312777742 */,
8688 /* 8150 */ 0x050158e5 | (19 << 27) /* 0.312828919 */,
8689 /* 8151 */ 0x05018e90 | (19 << 27) /* 0.312880099 */,
8690 /* 8152 */ 0x0501c43b | (19 << 27) /* 0.312931280 */,
8691 /* 8153 */ 0x0501f9e6 | (19 << 27) /* 0.312982464 */,
8692 /* 8154 */ 0x05022f92 | (19 << 27) /* 0.313033650 */,
8693 /* 8155 */ 0x0502653f | (19 << 27) /* 0.313084838 */,
8694 /* 8156 */ 0x05029aec | (19 << 27) /* 0.313136028 */,
8695 /* 8157 */ 0x0502d09a | (19 << 27) /* 0.313187220 */,
8696 /* 8158 */ 0x05030648 | (19 << 27) /* 0.313238414 */,
8697 /* 8159 */ 0x05033bf7 | (19 << 27) /* 0.313289611 */,
8698
8699 /* 8160 */ 0x050371a7 | (19 << 27) /* 0.313340809 */,
8700 /* 8161 */ 0x0503a757 | (19 << 27) /* 0.313392010 */,
8701 /* 8162 */ 0x0503dd07 | (19 << 27) /* 0.313443212 */,
8702 /* 8163 */ 0x050412b9 | (19 << 27) /* 0.313494417 */,
8703 /* 8164 */ 0x0504486a | (19 << 27) /* 0.313545624 */,
8704 /* 8165 */ 0x05047e1d | (19 << 27) /* 0.313596833 */,
8705 /* 8166 */ 0x0504b3cf | (19 << 27) /* 0.313648044 */,
8706 /* 8167 */ 0x0504e983 | (19 << 27) /* 0.313699257 */,
8707 /* 8168 */ 0x05051f37 | (19 << 27) /* 0.313750472 */,
8708 /* 8169 */ 0x050554eb | (19 << 27) /* 0.313801689 */,
8709 /* 8170 */ 0x05058aa0 | (19 << 27) /* 0.313852909 */,
8710 /* 8171 */ 0x0505c056 | (19 << 27) /* 0.313904130 */,
8711 /* 8172 */ 0x0505f60c | (19 << 27) /* 0.313955354 */,
8712 /* 8173 */ 0x05062bc3 | (19 << 27) /* 0.314006579 */,
8713 /* 8174 */ 0x0506617a | (19 << 27) /* 0.314057807 */,
8714 /* 8175 */ 0x05069732 | (19 << 27) /* 0.314109037 */,
8715
8716 /* 8176 */ 0x0506cceb | (19 << 27) /* 0.314160269 */,
8717 /* 8177 */ 0x050702a4 | (19 << 27) /* 0.314211502 */,
8718 /* 8178 */ 0x0507385d | (19 << 27) /* 0.314262739 */,
8719 /* 8179 */ 0x05076e17 | (19 << 27) /* 0.314313977 */,
8720 /* 8180 */ 0x0507a3d2 | (19 << 27) /* 0.314365217 */,
8721 /* 8181 */ 0x0507d98d | (19 << 27) /* 0.314416459 */,
8722 /* 8182 */ 0x05080f49 | (19 << 27) /* 0.314467704 */,
8723 /* 8183 */ 0x05084506 | (19 << 27) /* 0.314518950 */,
8724 /* 8184 */ 0x05087ac2 | (19 << 27) /* 0.314570199 */,
8725 /* 8185 */ 0x0508b080 | (19 << 27) /* 0.314621449 */,
8726 /* 8186 */ 0x0508e63e | (19 << 27) /* 0.314672702 */,
8727 /* 8187 */ 0x05091bfd | (19 << 27) /* 0.314723957 */,
8728 /* 8188 */ 0x050951bc | (19 << 27) /* 0.314775214 */,
8729 /* 8189 */ 0x0509877c | (19 << 27) /* 0.314826473 */,
8730 /* 8190 */ 0x0509bd3c | (19 << 27) /* 0.314877734 */,
8731 /* 8191 */ 0x0509f2fd | (19 << 27) /* 0.314928997 */,
8732
8733 /* 8192 */ 0x050a28be | (19 << 27) /* 0.314980262 */,
8734 /* 8193 */ 0x050a5e80 | (19 << 27) /* 0.315031530 */,
8735 /* 8194 */ 0x050a9443 | (19 << 27) /* 0.315082799 */,
8736 /* 8195 */ 0x050aca06 | (19 << 27) /* 0.315134071 */,
8737 /* 8196 */ 0x050affc9 | (19 << 27) /* 0.315185344 */,
8738 /* 8197 */ 0x050b358e | (19 << 27) /* 0.315236620 */,
8739 /* 8198 */ 0x050b6b52 | (19 << 27) /* 0.315287898 */,
8740 /* 8199 */ 0x050ba118 | (19 << 27) /* 0.315339178 */,
8741 /* 8200 */ 0x050bd6de | (19 << 27) /* 0.315390460 */,
8742 /* 8201 */ 0x050c0ca4 | (19 << 27) /* 0.315441744 */,
8743 /* 8202 */ 0x050c426b | (19 << 27) /* 0.315493030 */,
8744 /* 8203 */ 0x050c7833 | (19 << 27) /* 0.315544318 */,
8745 /* 8204 */ 0x050cadfb | (19 << 27) /* 0.315595608 */,
8746 /* 8205 */ 0x050ce3c4 | (19 << 27) /* 0.315646901 */,
8747 /* 8206 */ 0x050d198d | (19 << 27) /* 0.315698195 */,
diff --git a/lib/rbcodec/codecs/libmad/sf_table.dat b/lib/rbcodec/codecs/libmad/sf_table.dat
new file mode 100644
index 0000000000..de084d97da
--- /dev/null
+++ b/lib/rbcodec/codecs/libmad/sf_table.dat
@@ -0,0 +1,106 @@
1/*
2 * libmad - MPEG audio decoder library
3 * Copyright (C) 2000-2004 Underbit Technologies, Inc.
4 *
5 * This program is free software; you can redistribute it and/or modify
6 * it under the terms of the GNU General Public License as published by
7 * the Free Software Foundation; either version 2 of the License, or
8 * (at your option) any later version.
9 *
10 * This program is distributed in the hope that it will be useful,
11 * but WITHOUT ANY WARRANTY; without even the implied warranty of
12 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 * GNU General Public License for more details.
14 *
15 * You should have received a copy of the GNU General Public License
16 * along with this program; if not, write to the Free Software
17 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
18 *
19 * $Id$
20 */
21
22/*
23 * These are the scalefactor values for Layer I and Layer II.
24 * The values are from Table B.1 of ISO/IEC 11172-3.
25 *
26 * There is some error introduced by the 32-bit fixed-point representation;
27 * the amount of error is shown. For 16-bit PCM output, this shouldn't be
28 * too much of a problem.
29 *
30 * Strictly speaking, Table B.1 has only 63 entries (0-62), thus a strict
31 * interpretation of ISO/IEC 11172-3 would suggest that a scalefactor index of
32 * 63 is invalid. However, for better compatibility with current practices, we
33 * add a 64th entry.
34 */
35
36 MAD_F(0x20000000), /* 2.000000000000 => 2.000000000000, e 0.000000000000 */
37 MAD_F(0x1965fea5), /* 1.587401051968 => 1.587401051074, e 0.000000000894 */
38 MAD_F(0x1428a2fa), /* 1.259921049895 => 1.259921051562, e -0.000000001667 */
39 MAD_F(0x10000000), /* 1.000000000000 => 1.000000000000, e 0.000000000000 */
40 MAD_F(0x0cb2ff53), /* 0.793700525984 => 0.793700527400, e -0.000000001416 */
41 MAD_F(0x0a14517d), /* 0.629960524947 => 0.629960525781, e -0.000000000833 */
42 MAD_F(0x08000000), /* 0.500000000000 => 0.500000000000, e 0.000000000000 */
43 MAD_F(0x06597fa9), /* 0.396850262992 => 0.396850261837, e 0.000000001155 */
44
45 MAD_F(0x050a28be), /* 0.314980262474 => 0.314980261028, e 0.000000001446 */
46 MAD_F(0x04000000), /* 0.250000000000 => 0.250000000000, e 0.000000000000 */
47 MAD_F(0x032cbfd5), /* 0.198425131496 => 0.198425132781, e -0.000000001285 */
48 MAD_F(0x0285145f), /* 0.157490131237 => 0.157490130514, e 0.000000000723 */
49 MAD_F(0x02000000), /* 0.125000000000 => 0.125000000000, e 0.000000000000 */
50 MAD_F(0x01965fea), /* 0.099212565748 => 0.099212564528, e 0.000000001220 */
51 MAD_F(0x01428a30), /* 0.078745065618 => 0.078745067120, e -0.000000001501 */
52 MAD_F(0x01000000), /* 0.062500000000 => 0.062500000000, e 0.000000000000 */
53
54 MAD_F(0x00cb2ff5), /* 0.049606282874 => 0.049606282264, e 0.000000000610 */
55 MAD_F(0x00a14518), /* 0.039372532809 => 0.039372533560, e -0.000000000751 */
56 MAD_F(0x00800000), /* 0.031250000000 => 0.031250000000, e 0.000000000000 */
57 MAD_F(0x006597fb), /* 0.024803141437 => 0.024803142995, e -0.000000001558 */
58 MAD_F(0x0050a28c), /* 0.019686266405 => 0.019686266780, e -0.000000000375 */
59 MAD_F(0x00400000), /* 0.015625000000 => 0.015625000000, e 0.000000000000 */
60 MAD_F(0x0032cbfd), /* 0.012401570719 => 0.012401569635, e 0.000000001084 */
61 MAD_F(0x00285146), /* 0.009843133202 => 0.009843133390, e -0.000000000188 */
62
63 MAD_F(0x00200000), /* 0.007812500000 => 0.007812500000, e 0.000000000000 */
64 MAD_F(0x001965ff), /* 0.006200785359 => 0.006200786680, e -0.000000001321 */
65 MAD_F(0x001428a3), /* 0.004921566601 => 0.004921566695, e -0.000000000094 */
66 MAD_F(0x00100000), /* 0.003906250000 => 0.003906250000, e 0.000000000000 */
67 MAD_F(0x000cb2ff), /* 0.003100392680 => 0.003100391477, e 0.000000001202 */
68 MAD_F(0x000a1451), /* 0.002460783301 => 0.002460781485, e 0.000000001816 */
69 MAD_F(0x00080000), /* 0.001953125000 => 0.001953125000, e 0.000000000000 */
70 MAD_F(0x00065980), /* 0.001550196340 => 0.001550197601, e -0.000000001262 */
71
72 MAD_F(0x00050a29), /* 0.001230391650 => 0.001230392605, e -0.000000000955 */
73 MAD_F(0x00040000), /* 0.000976562500 => 0.000976562500, e 0.000000000000 */
74 MAD_F(0x00032cc0), /* 0.000775098170 => 0.000775098801, e -0.000000000631 */
75 MAD_F(0x00028514), /* 0.000615195825 => 0.000615194440, e 0.000000001385 */
76 MAD_F(0x00020000), /* 0.000488281250 => 0.000488281250, e 0.000000000000 */
77 MAD_F(0x00019660), /* 0.000387549085 => 0.000387549400, e -0.000000000315 */
78 MAD_F(0x0001428a), /* 0.000307597913 => 0.000307597220, e 0.000000000693 */
79 MAD_F(0x00010000), /* 0.000244140625 => 0.000244140625, e 0.000000000000 */
80
81 MAD_F(0x0000cb30), /* 0.000193774542 => 0.000193774700, e -0.000000000158 */
82 MAD_F(0x0000a145), /* 0.000153798956 => 0.000153798610, e 0.000000000346 */
83 MAD_F(0x00008000), /* 0.000122070313 => 0.000122070313, e 0.000000000000 */
84 MAD_F(0x00006598), /* 0.000096887271 => 0.000096887350, e -0.000000000079 */
85 MAD_F(0x000050a3), /* 0.000076899478 => 0.000076901168, e -0.000000001689 */
86 MAD_F(0x00004000), /* 0.000061035156 => 0.000061035156, e 0.000000000000 */
87 MAD_F(0x000032cc), /* 0.000048443636 => 0.000048443675, e -0.000000000039 */
88 MAD_F(0x00002851), /* 0.000038449739 => 0.000038448721, e 0.000000001018 */
89
90 MAD_F(0x00002000), /* 0.000030517578 => 0.000030517578, e 0.000000000000 */
91 MAD_F(0x00001966), /* 0.000024221818 => 0.000024221838, e -0.000000000020 */
92 MAD_F(0x00001429), /* 0.000019224870 => 0.000019226223, e -0.000000001354 */
93 MAD_F(0x00001000), /* 0.000015258789 => 0.000015258789, e -0.000000000000 */
94 MAD_F(0x00000cb3), /* 0.000012110909 => 0.000012110919, e -0.000000000010 */
95 MAD_F(0x00000a14), /* 0.000009612435 => 0.000009611249, e 0.000000001186 */
96 MAD_F(0x00000800), /* 0.000007629395 => 0.000007629395, e -0.000000000000 */
97 MAD_F(0x00000659), /* 0.000006055454 => 0.000006053597, e 0.000000001858 */
98
99 MAD_F(0x0000050a), /* 0.000004806217 => 0.000004805624, e 0.000000000593 */
100 MAD_F(0x00000400), /* 0.000003814697 => 0.000003814697, e 0.000000000000 */
101 MAD_F(0x0000032d), /* 0.000003027727 => 0.000003028661, e -0.000000000934 */
102 MAD_F(0x00000285), /* 0.000002403109 => 0.000002402812, e 0.000000000296 */
103 MAD_F(0x00000200), /* 0.000001907349 => 0.000001907349, e -0.000000000000 */
104 MAD_F(0x00000196), /* 0.000001513864 => 0.000001512468, e 0.000000001396 */
105 MAD_F(0x00000143), /* 0.000001201554 => 0.000001203269, e -0.000000001714 */
106 MAD_F(0x00000000) /* this compatibility entry is not part of Table B.1 */
diff --git a/lib/rbcodec/codecs/libmad/stream.c b/lib/rbcodec/codecs/libmad/stream.c
new file mode 100644
index 0000000000..6c8bbcf850
--- /dev/null
+++ b/lib/rbcodec/codecs/libmad/stream.c
@@ -0,0 +1,165 @@
1/*
2 * libmad - MPEG audio decoder library
3 * Copyright (C) 2000-2004 Underbit Technologies, Inc.
4 *
5 * This program is free software; you can redistribute it and/or modify
6 * it under the terms of the GNU General Public License as published by
7 * the Free Software Foundation; either version 2 of the License, or
8 * (at your option) any later version.
9 *
10 * This program is distributed in the hope that it will be useful,
11 * but WITHOUT ANY WARRANTY; without even the implied warranty of
12 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 * GNU General Public License for more details.
14 *
15 * You should have received a copy of the GNU General Public License
16 * along with this program; if not, write to the Free Software
17 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
18 *
19 * $Id$
20 */
21
22# ifdef HAVE_CONFIG_H
23# include "config.h"
24# endif
25
26# include "global.h"
27
28# include "bit.h"
29# include "stream.h"
30
31/*
32 * NAME: stream->init()
33 * DESCRIPTION: initialize stream struct
34 */
35void mad_stream_init(struct mad_stream *stream)
36{
37 stream->buffer = 0;
38 stream->bufend = 0;
39 /* rockbox: not used
40 stream->skiplen = 0; */
41
42 stream->sync = 0;
43 stream->freerate = 0;
44
45 stream->this_frame = 0;
46 stream->next_frame = 0;
47 mad_bit_init(&stream->ptr, 0);
48
49 mad_bit_init(&stream->anc_ptr, 0);
50 stream->anc_bitlen = 0;
51
52/* rockbox: comment this to avoid allocation in following code. main_data is
53 * linked to an array in ../mpa.c before calling this.
54 stream->main_data = 0;
55*/
56 stream->md_len = 0;
57
58 stream->options = 0;
59 stream->error = MAD_ERROR_NONE;
60}
61
62/*
63 * NAME: stream->finish()
64 * DESCRIPTION: deallocate any dynamic memory associated with stream
65 */
66/* rockbox: not used
67void mad_stream_finish(struct mad_stream *stream)
68{
69 if (stream->main_data) {
70 free(stream->main_data);
71 stream->main_data = 0;
72 }
73
74 mad_bit_finish(&stream->anc_ptr);
75 mad_bit_finish(&stream->ptr);
76} */
77
78/*
79 * NAME: stream->buffer()
80 * DESCRIPTION: set stream buffer pointers
81 */
82void mad_stream_buffer(struct mad_stream *stream,
83 unsigned char const *buffer, unsigned long length)
84{
85 stream->buffer = buffer;
86 stream->bufend = buffer + length;
87
88 stream->this_frame = buffer;
89 stream->next_frame = buffer;
90
91 stream->sync = 1;
92
93 mad_bit_init(&stream->ptr, buffer);
94}
95
96/*
97 * NAME: stream->skip()
98 * DESCRIPTION: arrange to skip bytes before the next frame
99 */
100/* rockbox: not used
101void mad_stream_skip(struct mad_stream *stream, unsigned long length)
102{
103 stream->skiplen += length;
104} */
105
106/*
107 * NAME: stream->sync()
108 * DESCRIPTION: locate the next stream sync word
109 */
110int mad_stream_sync(struct mad_stream *stream)
111{
112 register unsigned char const *ptr, *end;
113
114 ptr = mad_bit_nextbyte(&stream->ptr);
115 end = stream->bufend;
116
117 while (ptr < end - 1 &&
118 !(ptr[0] == 0xff && (ptr[1] & 0xe0) == 0xe0))
119 ++ptr;
120
121 if (end - ptr < MAD_BUFFER_GUARD)
122 return -1;
123
124 mad_bit_init(&stream->ptr, ptr);
125
126 return 0;
127}
128
129/*
130 * NAME: stream->errorstr()
131 * DESCRIPTION: return a string description of the current error condition
132 */
133char const *mad_stream_errorstr(struct mad_stream const *stream)
134{
135 switch (stream->error) {
136 case MAD_ERROR_NONE: return "no error";
137
138 case MAD_ERROR_BUFLEN: return "input buffer too small (or EOF)";
139 case MAD_ERROR_BUFPTR: return "invalid (null) buffer pointer";
140
141 case MAD_ERROR_NOMEM: return "not enough memory";
142
143 case MAD_ERROR_LOSTSYNC: return "lost synchronization";
144 case MAD_ERROR_BADLAYER: return "reserved header layer value";
145 case MAD_ERROR_BADBITRATE: return "forbidden bitrate value";
146 case MAD_ERROR_BADSAMPLERATE: return "reserved sample frequency value";
147 case MAD_ERROR_BADEMPHASIS: return "reserved emphasis value";
148
149 case MAD_ERROR_BADCRC: return "CRC check failed";
150 case MAD_ERROR_BADBITALLOC: return "forbidden bit allocation value";
151 case MAD_ERROR_BADSCALEFACTOR: return "bad scalefactor index";
152 case MAD_ERROR_BADMODE: return "bad bitrate/mode combination";
153 case MAD_ERROR_BADFRAMELEN: return "bad frame length";
154 case MAD_ERROR_BADBIGVALUES: return "bad big_values count";
155 case MAD_ERROR_BADBLOCKTYPE: return "reserved block_type";
156 case MAD_ERROR_BADSCFSI: return "bad scalefactor selection info";
157 case MAD_ERROR_BADDATAPTR: return "bad main_data_begin pointer";
158 case MAD_ERROR_BADPART3LEN: return "bad audio data length";
159 case MAD_ERROR_BADHUFFTABLE: return "bad Huffman table select";
160 case MAD_ERROR_BADHUFFDATA: return "Huffman data overrun";
161 case MAD_ERROR_BADSTEREO: return "incompatible block_type for JS";
162 }
163
164 return 0;
165}
diff --git a/lib/rbcodec/codecs/libmad/stream.h b/lib/rbcodec/codecs/libmad/stream.h
new file mode 100644
index 0000000000..0aafb98787
--- /dev/null
+++ b/lib/rbcodec/codecs/libmad/stream.h
@@ -0,0 +1,113 @@
1/*
2 * libmad - MPEG audio decoder library
3 * Copyright (C) 2000-2004 Underbit Technologies, Inc.
4 *
5 * This program is free software; you can redistribute it and/or modify
6 * it under the terms of the GNU General Public License as published by
7 * the Free Software Foundation; either version 2 of the License, or
8 * (at your option) any later version.
9 *
10 * This program is distributed in the hope that it will be useful,
11 * but WITHOUT ANY WARRANTY; without even the implied warranty of
12 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 * GNU General Public License for more details.
14 *
15 * You should have received a copy of the GNU General Public License
16 * along with this program; if not, write to the Free Software
17 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
18 *
19 * $Id$
20 */
21
22# ifndef LIBMAD_STREAM_H
23# define LIBMAD_STREAM_H
24
25# include "bit.h"
26
27# define MAD_BUFFER_GUARD 8
28# define MAD_BUFFER_MDLEN (511 + 2048 + MAD_BUFFER_GUARD)
29
30enum mad_error {
31 MAD_ERROR_NONE = 0x0000, /* no error */
32
33 MAD_ERROR_BUFLEN = 0x0001, /* input buffer too small (or EOF) */
34 MAD_ERROR_BUFPTR = 0x0002, /* invalid (null) buffer pointer */
35
36 MAD_ERROR_NOMEM = 0x0031, /* not enough memory */
37
38 MAD_ERROR_LOSTSYNC = 0x0101, /* lost synchronization */
39 MAD_ERROR_BADLAYER = 0x0102, /* reserved header layer value */
40 MAD_ERROR_BADBITRATE = 0x0103, /* forbidden bitrate value */
41 MAD_ERROR_BADSAMPLERATE = 0x0104, /* reserved sample frequency value */
42 MAD_ERROR_BADEMPHASIS = 0x0105, /* reserved emphasis value */
43
44 MAD_ERROR_BADCRC = 0x0201, /* CRC check failed */
45 MAD_ERROR_BADBITALLOC = 0x0211, /* forbidden bit allocation value */
46 MAD_ERROR_BADSCALEFACTOR = 0x0221, /* bad scalefactor index */
47 MAD_ERROR_BADMODE = 0x0222, /* bad bitrate/mode combination */
48 MAD_ERROR_BADFRAMELEN = 0x0231, /* bad frame length */
49 MAD_ERROR_BADBIGVALUES = 0x0232, /* bad big_values count */
50 MAD_ERROR_BADBLOCKTYPE = 0x0233, /* reserved block_type */
51 MAD_ERROR_BADSCFSI = 0x0234, /* bad scalefactor selection info */
52 MAD_ERROR_BADDATAPTR = 0x0235, /* bad main_data_begin pointer */
53 MAD_ERROR_BADPART3LEN = 0x0236, /* bad audio data length */
54 MAD_ERROR_BADHUFFTABLE = 0x0237, /* bad Huffman table select */
55 MAD_ERROR_BADHUFFDATA = 0x0238, /* Huffman data overrun */
56 MAD_ERROR_BADSTEREO = 0x0239 /* incompatible block_type for JS */
57};
58
59# define MAD_RECOVERABLE(error) ((error) & 0xff00)
60
61struct mad_stream {
62 unsigned char const *buffer; /* input bitstream buffer */
63 unsigned char const *bufend; /* end of buffer */
64 /* rockbox: not used
65 unsigned long skiplen; */ /* bytes to skip before next frame */
66
67 int sync; /* stream sync found */
68 unsigned long freerate; /* free bitrate (fixed) */
69
70 unsigned char const *this_frame; /* start of current frame */
71 unsigned char const *next_frame; /* start of next frame */
72 struct mad_bitptr ptr; /* current processing bit pointer */
73
74 struct mad_bitptr anc_ptr; /* ancillary bits pointer */
75 unsigned int anc_bitlen; /* number of ancillary bits */
76
77 unsigned char (*main_data)[MAD_BUFFER_MDLEN] MEM_ALIGN_ATTR;
78 /* Layer III main_data() */
79 unsigned int md_len; /* bytes in main_data */
80
81 int options; /* decoding options (see below) */
82 enum mad_error error; /* error code (see above) */
83};
84
85enum {
86 MAD_OPTION_IGNORECRC = 0x0001, /* ignore CRC errors */
87# if 0 /* rockbox: unused */
88 MAD_OPTION_HALFSAMPLERATE = 0x0002 /* generate PCM at 1/2 sample rate */
89# endif
90# if 0 /* not yet implemented */
91 MAD_OPTION_LEFTCHANNEL = 0x0010, /* decode left channel only */
92 MAD_OPTION_RIGHTCHANNEL = 0x0020, /* decode right channel only */
93 MAD_OPTION_SINGLECHANNEL = 0x0030 /* combine channels */
94# endif
95};
96
97void mad_stream_init(struct mad_stream *);
98/* rockbox: not used
99void mad_stream_finish(struct mad_stream *); */
100
101# define mad_stream_options(stream, opts) \
102 ((void) ((stream)->options = (opts)))
103
104void mad_stream_buffer(struct mad_stream *,
105 unsigned char const *, unsigned long);
106/* rockbox: not used
107void mad_stream_skip(struct mad_stream *, unsigned long); */
108
109int mad_stream_sync(struct mad_stream *);
110
111char const *mad_stream_errorstr(struct mad_stream const *);
112
113# endif
diff --git a/lib/rbcodec/codecs/libmad/synth.c b/lib/rbcodec/codecs/libmad/synth.c
new file mode 100644
index 0000000000..ebcf3d5015
--- /dev/null
+++ b/lib/rbcodec/codecs/libmad/synth.c
@@ -0,0 +1,1232 @@
1/*
2 * libmad - MPEG audio decoder library
3 * Copyright (C) 2000-2004 Underbit Technologies, Inc.
4 *
5 * This program is free software; you can redistribute it and/or modify
6 * it under the terms of the GNU General Public License as published by
7 * the Free Software Foundation; either version 2 of the License, or
8 * (at your option) any later version.
9 *
10 * This program is distributed in the hope that it will be useful,
11 * but WITHOUT ANY WARRANTY; without even the implied warranty of
12 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 * GNU General Public License for more details.
14 *
15 * You should have received a copy of the GNU General Public License
16 * along with this program; if not, write to the Free Software
17 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
18 *
19 * $Id$
20 */
21
22# ifdef HAVE_CONFIG_H
23# include "config.h"
24# endif
25
26# include "global.h"
27
28# include "fixed.h"
29# include "frame.h"
30# include "synth.h"
31
32/*
33 * NAME: synth->init()
34 * DESCRIPTION: initialize synth struct
35 */
36void mad_synth_init(struct mad_synth *synth)
37{
38 mad_synth_mute(synth);
39
40 synth->phase = 0;
41
42 synth->pcm.samplerate = 0;
43 synth->pcm.channels = 0;
44 synth->pcm.length = 0;
45 #if defined(CPU_COLDFIRE)
46 /* init the emac unit here, since this function should always be called
47 before using libmad */
48 coldfire_set_macsr(EMAC_FRACTIONAL | EMAC_SATURATE | EMAC_ROUND);
49 #endif
50}
51
52/*
53 * NAME: synth->mute()
54 * DESCRIPTION: zero all polyphase filterbank values, resetting synthesis
55 */
56void mad_synth_mute(struct mad_synth *synth)
57{
58 memset(synth->filter, 0, sizeof(synth->filter));
59}
60
61#if 0 /* dct32 asm implementation is slower on current arm systems */
62/* #ifdef FPM_ARM */
63
64void dct32(mad_fixed_t const in[32], unsigned int slot,
65 mad_fixed_t lo[16][8], mad_fixed_t hi[16][8]);
66
67#else
68
69/*
70 * An optional optimization called here the Subband Synthesis Optimization
71 * (SSO) improves the performance of subband synthesis at the expense of
72 * accuracy.
73 *
74 * The idea is to simplify 32x32->64-bit multiplication to 32x32->32 such
75 * that extra scaling and rounding are not necessary. This often allows the
76 * compiler to use faster 32-bit multiply-accumulate instructions instead of
77 * explicit 64-bit multiply, shift, and add instructions.
78 *
79 * SSO works like this: a full 32x32->64-bit multiply of two mad_fixed_t
80 * values requires the result to be right-shifted 28 bits to be properly
81 * scaled to the same fixed-point format. Right shifts can be applied at any
82 * time to either operand or to the result, so the optimization involves
83 * careful placement of these shifts to minimize the loss of accuracy.
84 *
85 * First, a 14-bit shift is applied with rounding at compile-time to the D[]
86 * table of coefficients for the subband synthesis window. This only loses 2
87 * bits of accuracy because the lower 12 bits are always zero. A second
88 * 12-bit shift occurs after the DCT calculation. This loses 12 bits of
89 * accuracy. Finally, a third 2-bit shift occurs just before the sample is
90 * saved in the PCM buffer. 14 + 12 + 2 == 28 bits.
91 */
92
93/* FPM_DEFAULT without OPT_SSO will actually not work. */
94# if defined(FPM_DEFAULT) && !defined(OPT_SSO)
95# define OPT_SSO
96# endif
97
98/* second SSO shift, with rounding */
99# if defined(OPT_SSO)
100# define SHIFT(x) (((x) + (1L << 11)) >> 12)
101# else
102# define SHIFT(x) (x)
103# endif
104
105/* possible DCT speed optimization */
106# if defined(FPM_COLDFIRE_EMAC)
107/* This is a Coldfire version of the OPT_SPEED optimisation below, but in the
108 case of Coldfire it does not loose additional precision. */
109# define MUL(x, y) \
110 ({ \
111 mad_fixed64hi_t hi; \
112 asm volatile("mac.l %[a], %[b], %%acc0\n\t" \
113 "movclr.l %%acc0, %[hi]" \
114 : [hi] "=r" (hi) \
115 : [a] "r" ((x)), [b] "r" ((y))); \
116 hi; \
117 })
118# elif defined(FPM_ARM)
119/* This is an ARM version of the OPT_SPEED optimisation below. This
120 implementation will loose 1 bit of accuracy. */
121# define MUL(x, y) \
122 ({ \
123 mad_fixed64lo_t lo; \
124 mad_fixed64hi_t hi; \
125 asm volatile ( \
126 "smull %[lo], %[hi], %[a], %[b]\n\t" /* hi = result */ \
127 "mov %[hi], %[hi], lsl #1" /* hi <<= 1 */ \
128 : [lo]"=&r"(lo), [hi]"=&r"(hi) \
129 : [a]"r"(x), [b]"r"(y)); \
130 hi; \
131 })
132# elif defined(OPT_SPEED) && defined(MAD_F_MLX)
133# define MUL(x, y) \
134 ({ mad_fixed64hi_t hi; \
135 mad_fixed64lo_t lo; \
136 MAD_F_MLX(hi, lo, (x), (y)); \
137 hi << (32 - MAD_F_SCALEBITS - 3); \
138 })
139# else
140# define MUL(x, y) mad_f_mul((x), (y>>3))
141# endif
142
143/*
144 * NAME: dct32()
145 * DESCRIPTION: perform fast in[32]->out[32] DCT
146 */
147static
148void dct32(mad_fixed_t const in[32], unsigned int slot,
149 mad_fixed_t lo[16][8], mad_fixed_t hi[16][8])
150{
151 mad_fixed_t t0, t1, t2, t3, t4, t5, t6, t7;
152 mad_fixed_t t8, t9, t10, t11, t12, t13, t14, t15;
153 mad_fixed_t t16, t17, t18, t19, t20, t21, t22, t23;
154 mad_fixed_t t24, t25, t26, t27, t28, t29, t30, t31;
155 mad_fixed_t t32, t33, t34, t35, t36, t37, t38, t39;
156 mad_fixed_t t40, t41, t42, t43, t44, t45, t46, t47;
157 mad_fixed_t t48, t49, t50, t51, t52, t53, t54, t55;
158 mad_fixed_t t56, t57, t58, t59, t60, t61, t62, t63;
159 mad_fixed_t t64, t65, t66, t67, t68, t69, t70, t71;
160 mad_fixed_t t72, t73, t74, t75, t76, t77, t78, t79;
161 mad_fixed_t t80, t81, t82, t83, t84, t85, t86, t87;
162 mad_fixed_t t88, t89, t90, t91, t92, t93, t94, t95;
163 mad_fixed_t t96, t97, t98, t99, t100, t101, t102, t103;
164 mad_fixed_t t104, t105, t106, t107, t108, t109, t110, t111;
165 mad_fixed_t t112, t113, t114, t115, t116, t117, t118, t119;
166 mad_fixed_t t120, t121, t122, t123, t124, t125, t126, t127;
167 mad_fixed_t t128, t129, t130, t131, t132, t133, t134, t135;
168 mad_fixed_t t136, t137, t138, t139, t140, t141, t142, t143;
169 mad_fixed_t t144, t145, t146, t147, t148, t149, t150, t151;
170 mad_fixed_t t152, t153, t154, t155, t156, t157, t158, t159;
171 mad_fixed_t t160, t161, t162, t163, t164, t165, t166, t167;
172 mad_fixed_t t168, t169, t170, t171, t172, t173, t174, t175;
173 mad_fixed_t t176;
174
175 /* costab[i] = cos(PI / (2 * 32) * i) */
176#define costab1 MAD_F(0x7fd8878e) /* 0.998795456 */
177#define costab2 MAD_F(0x7f62368f) /* 0.995184727 */
178#define costab3 MAD_F(0x7e9d55fc) /* 0.989176510 */
179#define costab4 MAD_F(0x7d8a5f40) /* 0.980785280 */
180#define costab5 MAD_F(0x7c29fbee) /* 0.970031253 */
181#define costab6 MAD_F(0x7a7d055b) /* 0.956940336 */
182#define costab7 MAD_F(0x78848414) /* 0.941544065 */
183#define costab8 MAD_F(0x7641af3d) /* 0.923879533 */
184#define costab9 MAD_F(0x73b5ebd1) /* 0.903989293 */
185#define costab10 MAD_F(0x70e2cbc6) /* 0.881921264 */
186#define costab11 MAD_F(0x6dca0d14) /* 0.857728610 */
187#define costab12 MAD_F(0x6a5d98a4) /* 0.831469612 */
188#define costab13 MAD_F(0x66cf8120) /* 0.803207531 */
189#define costab14 MAD_F(0x62f201ac) /* 0.773010453 */
190#define costab15 MAD_F(0x5ed77c8a) /* 0.740951125 */
191#define costab16 MAD_F(0x5a82799a) /* 0.707106781 */
192#define costab17 MAD_F(0x55f5a4d2) /* 0.671558955 */
193#define costab18 MAD_F(0x5133cc94) /* 0.634393284 */
194#define costab19 MAD_F(0x4c3fdff4) /* 0.595699304 */
195#define costab20 MAD_F(0x471cece7) /* 0.555570233 */
196#define costab21 MAD_F(0x41ce1e65) /* 0.514102744 */
197#define costab22 MAD_F(0x3c56ba70) /* 0.471396737 */
198#define costab23 MAD_F(0x36ba2014) /* 0.427555093 */
199#define costab24 MAD_F(0x30fbc54d) /* 0.382683432 */
200#define costab25 MAD_F(0x2b1f34eb) /* 0.336889853 */
201#define costab26 MAD_F(0x25280c5e) /* 0.290284677 */
202#define costab27 MAD_F(0x1f19f97b) /* 0.242980180 */
203#define costab28 MAD_F(0x18f8b83c) /* 0.195090322 */
204#define costab29 MAD_F(0x12c8106f) /* 0.146730474 */
205#define costab30 MAD_F(0x0c8bd35e) /* 0.098017140 */
206#define costab31 MAD_F(0x0647d97c) /* 0.049067674 */
207
208 t0 = in[0] + in[31]; t16 = MUL(in[0] - in[31], costab1);
209 t1 = in[15] + in[16]; t17 = MUL(in[15] - in[16], costab31);
210
211 t41 = t16 + t17;
212 t59 = MUL(t16 - t17, costab2);
213 t33 = t0 + t1;
214 t50 = MUL(t0 - t1, costab2);
215
216 t2 = in[7] + in[24]; t18 = MUL(in[7] - in[24], costab15);
217 t3 = in[8] + in[23]; t19 = MUL(in[8] - in[23], costab17);
218
219 t42 = t18 + t19;
220 t60 = MUL(t18 - t19, costab30);
221 t34 = t2 + t3;
222 t51 = MUL(t2 - t3, costab30);
223
224 t4 = in[3] + in[28]; t20 = MUL(in[3] - in[28], costab7);
225 t5 = in[12] + in[19]; t21 = MUL(in[12] - in[19], costab25);
226
227 t43 = t20 + t21;
228 t61 = MUL(t20 - t21, costab14);
229 t35 = t4 + t5;
230 t52 = MUL(t4 - t5, costab14);
231
232 t6 = in[4] + in[27]; t22 = MUL(in[4] - in[27], costab9);
233 t7 = in[11] + in[20]; t23 = MUL(in[11] - in[20], costab23);
234
235 t44 = t22 + t23;
236 t62 = MUL(t22 - t23, costab18);
237 t36 = t6 + t7;
238 t53 = MUL(t6 - t7, costab18);
239
240 t8 = in[1] + in[30]; t24 = MUL(in[1] - in[30], costab3);
241 t9 = in[14] + in[17]; t25 = MUL(in[14] - in[17], costab29);
242
243 t45 = t24 + t25;
244 t63 = MUL(t24 - t25, costab6);
245 t37 = t8 + t9;
246 t54 = MUL(t8 - t9, costab6);
247
248 t10 = in[6] + in[25]; t26 = MUL(in[6] - in[25], costab13);
249 t11 = in[9] + in[22]; t27 = MUL(in[9] - in[22], costab19);
250
251 t46 = t26 + t27;
252 t64 = MUL(t26 - t27, costab26);
253 t38 = t10 + t11;
254 t55 = MUL(t10 - t11, costab26);
255
256 t12 = in[2] + in[29]; t28 = MUL(in[2] - in[29], costab5);
257 t13 = in[13] + in[18]; t29 = MUL(in[13] - in[18], costab27);
258
259 t47 = t28 + t29;
260 t65 = MUL(t28 - t29, costab10);
261 t39 = t12 + t13;
262 t56 = MUL(t12 - t13, costab10);
263
264 t14 = in[5] + in[26]; t30 = MUL(in[5] - in[26], costab11);
265 t15 = in[10] + in[21]; t31 = MUL(in[10] - in[21], costab21);
266
267 t48 = t30 + t31;
268 t66 = MUL(t30 - t31, costab22);
269 t40 = t14 + t15;
270 t57 = MUL(t14 - t15, costab22);
271
272 t69 = t33 + t34; t89 = MUL(t33 - t34, costab4);
273 t70 = t35 + t36; t90 = MUL(t35 - t36, costab28);
274 t71 = t37 + t38; t91 = MUL(t37 - t38, costab12);
275 t72 = t39 + t40; t92 = MUL(t39 - t40, costab20);
276 t73 = t41 + t42; t94 = MUL(t41 - t42, costab4);
277 t74 = t43 + t44; t95 = MUL(t43 - t44, costab28);
278 t75 = t45 + t46; t96 = MUL(t45 - t46, costab12);
279 t76 = t47 + t48; t97 = MUL(t47 - t48, costab20);
280
281 t78 = t50 + t51; t100 = MUL(t50 - t51, costab4);
282 t79 = t52 + t53; t101 = MUL(t52 - t53, costab28);
283 t80 = t54 + t55; t102 = MUL(t54 - t55, costab12);
284 t81 = t56 + t57; t103 = MUL(t56 - t57, costab20);
285
286 t83 = t59 + t60; t106 = MUL(t59 - t60, costab4);
287 t84 = t61 + t62; t107 = MUL(t61 - t62, costab28);
288 t85 = t63 + t64; t108 = MUL(t63 - t64, costab12);
289 t86 = t65 + t66; t109 = MUL(t65 - t66, costab20);
290
291 t113 = t69 + t70;
292 t114 = t71 + t72;
293
294 /* 0 */ hi[15][slot] = SHIFT(t113 + t114);
295 /* 16 */ lo[ 0][slot] = SHIFT(MUL(t113 - t114, costab16));
296
297 t115 = t73 + t74;
298 t116 = t75 + t76;
299
300 t32 = t115 + t116;
301
302 /* 1 */ hi[14][slot] = SHIFT(t32);
303
304 t118 = t78 + t79;
305 t119 = t80 + t81;
306
307 t58 = t118 + t119;
308
309 /* 2 */ hi[13][slot] = SHIFT(t58);
310
311 t121 = t83 + t84;
312 t122 = t85 + t86;
313
314 t67 = t121 + t122;
315
316 t49 = (t67 * 2) - t32;
317
318 /* 3 */ hi[12][slot] = SHIFT(t49);
319
320 t125 = t89 + t90;
321 t126 = t91 + t92;
322
323 t93 = t125 + t126;
324
325 /* 4 */ hi[11][slot] = SHIFT(t93);
326
327 t128 = t94 + t95;
328 t129 = t96 + t97;
329
330 t98 = t128 + t129;
331
332 t68 = (t98 * 2) - t49;
333
334 /* 5 */ hi[10][slot] = SHIFT(t68);
335
336 t132 = t100 + t101;
337 t133 = t102 + t103;
338
339 t104 = t132 + t133;
340
341 t82 = (t104 * 2) - t58;
342
343 /* 6 */ hi[ 9][slot] = SHIFT(t82);
344
345 t136 = t106 + t107;
346 t137 = t108 + t109;
347
348 t110 = t136 + t137;
349
350 t87 = (t110 * 2) - t67;
351
352 t77 = (t87 * 2) - t68;
353
354 /* 7 */ hi[ 8][slot] = SHIFT(t77);
355
356 t141 = MUL(t69 - t70, costab8);
357 t142 = MUL(t71 - t72, costab24);
358 t143 = t141 + t142;
359
360 /* 8 */ hi[ 7][slot] = SHIFT(t143);
361 /* 24 */ lo[ 8][slot] =
362 SHIFT((MUL(t141 - t142, costab16) * 2) - t143);
363
364 t144 = MUL(t73 - t74, costab8);
365 t145 = MUL(t75 - t76, costab24);
366 t146 = t144 + t145;
367
368 t88 = (t146 * 2) - t77;
369
370 /* 9 */ hi[ 6][slot] = SHIFT(t88);
371
372 t148 = MUL(t78 - t79, costab8);
373 t149 = MUL(t80 - t81, costab24);
374 t150 = t148 + t149;
375
376 t105 = (t150 * 2) - t82;
377
378 /* 10 */ hi[ 5][slot] = SHIFT(t105);
379
380 t152 = MUL(t83 - t84, costab8);
381 t153 = MUL(t85 - t86, costab24);
382 t154 = t152 + t153;
383
384 t111 = (t154 * 2) - t87;
385
386 t99 = (t111 * 2) - t88;
387
388 /* 11 */ hi[ 4][slot] = SHIFT(t99);
389
390 t157 = MUL(t89 - t90, costab8);
391 t158 = MUL(t91 - t92, costab24);
392 t159 = t157 + t158;
393
394 t127 = (t159 * 2) - t93;
395
396 /* 12 */ hi[ 3][slot] = SHIFT(t127);
397
398 t160 = (MUL(t125 - t126, costab16) * 2) - t127;
399
400 /* 20 */ lo[ 4][slot] = SHIFT(t160);
401 /* 28 */ lo[12][slot] =
402 SHIFT((((MUL(t157 - t158, costab16) * 2) - t159) * 2) - t160);
403
404 t161 = MUL(t94 - t95, costab8);
405 t162 = MUL(t96 - t97, costab24);
406 t163 = t161 + t162;
407
408 t130 = (t163 * 2) - t98;
409
410 t112 = (t130 * 2) - t99;
411
412 /* 13 */ hi[ 2][slot] = SHIFT(t112);
413
414 t164 = (MUL(t128 - t129, costab16) * 2) - t130;
415
416 t166 = MUL(t100 - t101, costab8);
417 t167 = MUL(t102 - t103, costab24);
418 t168 = t166 + t167;
419
420 t134 = (t168 * 2) - t104;
421
422 t120 = (t134 * 2) - t105;
423
424 /* 14 */ hi[ 1][slot] = SHIFT(t120);
425
426 t135 = (MUL(t118 - t119, costab16) * 2) - t120;
427
428 /* 18 */ lo[ 2][slot] = SHIFT(t135);
429
430 t169 = (MUL(t132 - t133, costab16) * 2) - t134;
431
432 t151 = (t169 * 2) - t135;
433
434 /* 22 */ lo[ 6][slot] = SHIFT(t151);
435
436 t170 = (((MUL(t148 - t149, costab16) * 2) - t150) * 2) - t151;
437
438 /* 26 */ lo[10][slot] = SHIFT(t170);
439 /* 30 */ lo[14][slot] =
440 SHIFT((((((MUL(t166 - t167, costab16) * 2) -
441 t168) * 2) - t169) * 2) - t170);
442
443 t171 = MUL(t106 - t107, costab8);
444 t172 = MUL(t108 - t109, costab24);
445 t173 = t171 + t172;
446
447 t138 = (t173 * 2) - t110;
448
449 t123 = (t138 * 2) - t111;
450
451 t139 = (MUL(t121 - t122, costab16) * 2) - t123;
452
453 t117 = (t123 * 2) - t112;
454
455 /* 15 */ hi[ 0][slot] = SHIFT(t117);
456
457 t124 = (MUL(t115 - t116, costab16) * 2) - t117;
458
459 /* 17 */ lo[ 1][slot] = SHIFT(t124);
460
461 t131 = (t139 * 2) - t124;
462
463 /* 19 */ lo[ 3][slot] = SHIFT(t131);
464
465 t140 = (t164 * 2) - t131;
466
467 /* 21 */ lo[ 5][slot] = SHIFT(t140);
468
469 t174 = (MUL(t136 - t137, costab16) * 2) - t138;
470
471 t155 = (t174 * 2) - t139;
472
473 t147 = (t155 * 2) - t140;
474
475 /* 23 */ lo[ 7][slot] = SHIFT(t147);
476
477 t156 = (((MUL(t144 - t145, costab16) * 2) - t146) * 2) - t147;
478
479 /* 25 */ lo[ 9][slot] = SHIFT(t156);
480
481 t175 = (((MUL(t152 - t153, costab16) * 2) - t154) * 2) - t155;
482
483 t165 = (t175 * 2) - t156;
484
485 /* 27 */ lo[11][slot] = SHIFT(t165);
486
487 t176 = (((((MUL(t161 - t162, costab16) * 2) -
488 t163) * 2) - t164) * 2) - t165;
489
490 /* 29 */ lo[13][slot] = SHIFT(t176);
491 /* 31 */ lo[15][slot] =
492 SHIFT((((((((MUL(t171 - t172, costab16) * 2) -
493 t173) * 2) - t174) * 2) - t175) * 2) - t176);
494
495 /*
496 * Totals:
497 * 80 multiplies
498 * 80 additions
499 * 119 subtractions
500 * 49 shifts (not counting SSO)
501 */
502}
503
504# undef MUL
505# undef SHIFT
506
507#endif
508
509/* third SSO shift and/or D[] optimization preshift */
510
511# if defined(OPT_SSO)
512# if MAD_F_FRACBITS != 28
513# error "MAD_F_FRACBITS must be 28 to use OPT_SSO"
514# endif
515# define ML0(hi, lo, x, y) ((lo) = (x) * (y))
516# define MLA(hi, lo, x, y) ((lo) += (x) * (y))
517# define MLN(hi, lo) ((lo) = -(lo))
518# define MLZ(hi, lo) ((void) (hi), (mad_fixed_t) (lo))
519# define SHIFT(x) ((x) >> 2)
520# define PRESHIFT(x) ((MAD_F(x) + (1L << 13)) >> 14)
521# else
522# define ML0(hi, lo, x, y) MAD_F_ML0((hi), (lo), (x), (y))
523# define MLA(hi, lo, x, y) MAD_F_MLA((hi), (lo), (x), (y))
524# define MLN(hi, lo) MAD_F_MLN((hi), (lo))
525# define MLZ(hi, lo) MAD_F_MLZ((hi), (lo))
526# define SHIFT(x) (x)
527# if defined(MAD_F_SCALEBITS)
528# undef MAD_F_SCALEBITS
529# define MAD_F_SCALEBITS (MAD_F_FRACBITS - 12)
530# define PRESHIFT(x) (MAD_F(x) >> 12)
531# else
532# define PRESHIFT(x) MAD_F(x)
533# endif
534# endif
535
536static
537mad_fixed_t const D[17][32] ICONST_ATTR MEM_ALIGN_ATTR = {
538# include "D.dat"
539};
540
541/*
542 * NAME: synth->full()
543 * DESCRIPTION: perform full frequency PCM synthesis
544 */
545/* optimised version of synth_full */
546# ifdef FPM_COLDFIRE_EMAC
547
548#define SYNTH_EMAC1(res, f1, pD) \
549 asm volatile( \
550 "movem.l (%0), %%d0-%%d7 \n\t" \
551 "move.l (%1), %%a5 \n\t" \
552 "mac.l %%d0, %%a5, 56(%1), %%a5, %%acc0\n\t" \
553 "mac.l %%d1, %%a5, 48(%1), %%a5, %%acc0\n\t" \
554 "mac.l %%d2, %%a5, 40(%1), %%a5, %%acc0\n\t" \
555 "mac.l %%d3, %%a5, 32(%1), %%a5, %%acc0\n\t" \
556 "mac.l %%d4, %%a5, 24(%1), %%a5, %%acc0\n\t" \
557 "mac.l %%d5, %%a5, 16(%1), %%a5, %%acc0\n\t" \
558 "mac.l %%d6, %%a5, 8(%1), %%a5, %%acc0\n\t" \
559 "mac.l %%d7, %%a5, %%acc0\n\t" \
560 : \
561 : "a" (*f1), "a" (*pD) \
562 : "d0", "d1", "d2", "d3", "d4", "d5", "d6", "d7", "a5"); \
563 asm volatile ( \
564 "movclr.l %%acc0, %0 \n\t" \
565 : "=d" (res));
566
567#define SYNTH_EMAC2(res, f1, f2, pD) \
568 asm volatile( \
569 "movem.l (%0), %%d0-%%d7 \n\t" \
570 "move.l 4(%1), %%a5 \n\t" \
571 "msac.l %%d0, %%a5, 60(%1), %%a5, %%acc0\n\t" \
572 "msac.l %%d1, %%a5, 52(%1), %%a5, %%acc0\n\t" \
573 "msac.l %%d2, %%a5, 44(%1), %%a5, %%acc0\n\t" \
574 "msac.l %%d3, %%a5, 36(%1), %%a5, %%acc0\n\t" \
575 "msac.l %%d4, %%a5, 28(%1), %%a5, %%acc0\n\t" \
576 "msac.l %%d5, %%a5, 20(%1), %%a5, %%acc0\n\t" \
577 "msac.l %%d6, %%a5, 12(%1), %%a5, %%acc0\n\t" \
578 "msac.l %%d7, %%a5, (%1), %%a5, %%acc0\n\t" \
579 "movem.l (%2), %%d0-%%d7 \n\t" \
580 "mac.l %%d0, %%a5, 56(%1), %%a5, %%acc0\n\t" \
581 "mac.l %%d1, %%a5, 48(%1), %%a5, %%acc0\n\t" \
582 "mac.l %%d2, %%a5, 40(%1), %%a5, %%acc0\n\t" \
583 "mac.l %%d3, %%a5, 32(%1), %%a5, %%acc0\n\t" \
584 "mac.l %%d4, %%a5, 24(%1), %%a5, %%acc0\n\t" \
585 "mac.l %%d5, %%a5, 16(%1), %%a5, %%acc0\n\t" \
586 "mac.l %%d6, %%a5, 8(%1), %%a5, %%acc0\n\t" \
587 "mac.l %%d7, %%a5, %%acc0\n\t" \
588 : \
589 : "a" (*f1), "a" (*pD), "a" (*f2) \
590 : "d0", "d1", "d2", "d3", "d4", "d5", "d6", "d7", "a5", "memory"); \
591 asm volatile ( \
592 "movclr.l %%acc0, %0 \n\t" \
593 : "=d" (res));
594
595#define SYNTH_EMAC_ODD_SBSAMPLE(f1, f2, pD1, pD2, res1, res2) \
596 asm volatile ( \
597 "movem.l (%0), %%d0-%%d7 \n\t" \
598 "move.l 4(%2), %%a5 \n\t" \
599 "msac.l %%d0, %%a5, 60(%2), %%a5, %%acc0\n\t" \
600 "msac.l %%d1, %%a5, 52(%2), %%a5, %%acc0\n\t" \
601 "msac.l %%d2, %%a5, 44(%2), %%a5, %%acc0\n\t" \
602 "msac.l %%d3, %%a5, 36(%2), %%a5, %%acc0\n\t" \
603 "msac.l %%d4, %%a5, 28(%2), %%a5, %%acc0\n\t" \
604 "msac.l %%d5, %%a5, 20(%2), %%a5, %%acc0\n\t" \
605 "msac.l %%d6, %%a5, 12(%2), %%a5, %%acc0\n\t" \
606 "msac.l %%d7, %%a5, 112(%3), %%a5, %%acc0\n\t" \
607 "mac.l %%d7, %%a5, 104(%3), %%a5, %%acc1\n\t" \
608 "mac.l %%d6, %%a5, 96(%3), %%a5, %%acc1\n\t" \
609 "mac.l %%d5, %%a5, 88(%3), %%a5, %%acc1\n\t" \
610 "mac.l %%d4, %%a5, 80(%3), %%a5, %%acc1\n\t" \
611 "mac.l %%d3, %%a5, 72(%3), %%a5, %%acc1\n\t" \
612 "mac.l %%d2, %%a5, 64(%3), %%a5, %%acc1\n\t" \
613 "mac.l %%d1, %%a5, 120(%3), %%a5, %%acc1\n\t" \
614 "mac.l %%d0, %%a5, 8(%2), %%a5, %%acc1\n\t" \
615 "movem.l (%1), %%d0-%%d7 \n\t" \
616 "mac.l %%d7, %%a5, 16(%2), %%a5, %%acc0\n\t" \
617 "mac.l %%d6, %%a5, 24(%2), %%a5, %%acc0\n\t" \
618 "mac.l %%d5, %%a5, 32(%2), %%a5, %%acc0\n\t" \
619 "mac.l %%d4, %%a5, 40(%2), %%a5, %%acc0\n\t" \
620 "mac.l %%d3, %%a5, 48(%2), %%a5, %%acc0\n\t" \
621 "mac.l %%d2, %%a5, 56(%2), %%a5, %%acc0\n\t" \
622 "mac.l %%d1, %%a5, (%2), %%a5, %%acc0\n\t" \
623 "mac.l %%d0, %%a5, 60(%3), %%a5, %%acc0\n\t" \
624 "mac.l %%d0, %%a5, 68(%3), %%a5, %%acc1\n\t" \
625 "mac.l %%d1, %%a5, 76(%3), %%a5, %%acc1\n\t" \
626 "mac.l %%d2, %%a5, 84(%3), %%a5, %%acc1\n\t" \
627 "mac.l %%d3, %%a5, 92(%3), %%a5, %%acc1\n\t" \
628 "mac.l %%d4, %%a5, 100(%3), %%a5, %%acc1\n\t" \
629 "mac.l %%d5, %%a5, 108(%3), %%a5, %%acc1\n\t" \
630 "mac.l %%d6, %%a5, 116(%3), %%a5, %%acc1\n\t" \
631 "mac.l %%d7, %%a5, %%acc1\n\t" \
632 : \
633 : "a" (*f1), "a" (*f2), "a" (*pD1), "a" (*pD2) \
634 : "d0", "d1", "d2", "d3", "d4", "d5", "d6", "d7", "a5", "memory"); \
635 asm volatile( \
636 "movclr.l %%acc0, %0\n\t" \
637 "movclr.l %%acc1, %1\n\t" \
638 : "=d" (res1), "=d" (res2) );
639
640#define SYNTH_EMAC_EVEN_SBSAMPLE(f1, f2, pD1, pD2, res1, res2) \
641 asm volatile ( \
642 "movem.l (%0), %%d0-%%d7 \n\t" \
643 "move.l (%2), %%a5 \n\t" \
644 "msac.l %%d0, %%a5, 56(%2), %%a5, %%acc0\n\t" \
645 "msac.l %%d1, %%a5, 48(%2), %%a5, %%acc0\n\t" \
646 "msac.l %%d2, %%a5, 40(%2), %%a5, %%acc0\n\t" \
647 "msac.l %%d3, %%a5, 32(%2), %%a5, %%acc0\n\t" \
648 "msac.l %%d4, %%a5, 24(%2), %%a5, %%acc0\n\t" \
649 "msac.l %%d5, %%a5, 16(%2), %%a5, %%acc0\n\t" \
650 "msac.l %%d6, %%a5, 8(%2), %%a5, %%acc0\n\t" \
651 "msac.l %%d7, %%a5, 116(%3), %%a5, %%acc0\n\t" \
652 "mac.l %%d7, %%a5, 108(%3), %%a5, %%acc1\n\t" \
653 "mac.l %%d6, %%a5, 100(%3), %%a5, %%acc1\n\t" \
654 "mac.l %%d5, %%a5, 92(%3), %%a5, %%acc1\n\t" \
655 "mac.l %%d4, %%a5, 84(%3), %%a5, %%acc1\n\t" \
656 "mac.l %%d3, %%a5, 76(%3), %%a5, %%acc1\n\t" \
657 "mac.l %%d2, %%a5, 68(%3), %%a5, %%acc1\n\t" \
658 "mac.l %%d1, %%a5, 60(%3), %%a5, %%acc1\n\t" \
659 "mac.l %%d0, %%a5, 12(%2), %%a5, %%acc1\n\t" \
660 "movem.l (%1), %%d0-%%d7 \n\t" \
661 "mac.l %%d7, %%a5, 20(%2), %%a5, %%acc0\n\t" \
662 "mac.l %%d6, %%a5, 28(%2), %%a5, %%acc0\n\t" \
663 "mac.l %%d5, %%a5, 36(%2), %%a5, %%acc0\n\t" \
664 "mac.l %%d4, %%a5, 44(%2), %%a5, %%acc0\n\t" \
665 "mac.l %%d3, %%a5, 52(%2), %%a5, %%acc0\n\t" \
666 "mac.l %%d2, %%a5, 60(%2), %%a5, %%acc0\n\t" \
667 "mac.l %%d1, %%a5, 4(%2), %%a5, %%acc0\n\t" \
668 "mac.l %%d0, %%a5, 120(%3), %%a5, %%acc0\n\t" \
669 "mac.l %%d0, %%a5, 64(%3), %%a5, %%acc1\n\t" \
670 "mac.l %%d1, %%a5, 72(%3), %%a5, %%acc1\n\t" \
671 "mac.l %%d2, %%a5, 80(%3), %%a5, %%acc1\n\t" \
672 "mac.l %%d3, %%a5, 88(%3), %%a5, %%acc1\n\t" \
673 "mac.l %%d4, %%a5, 96(%3), %%a5, %%acc1\n\t" \
674 "mac.l %%d5, %%a5, 104(%3), %%a5, %%acc1\n\t" \
675 "mac.l %%d6, %%a5, 112(%3), %%a5, %%acc1\n\t" \
676 "mac.l %%d7, %%a5, %%acc1\n\t" \
677 : \
678 : "a" (*f1), "a" (*f2), "a" (*pD1), "a" (*pD2) \
679 : "d0", "d1", "d2", "d3", "d4", "d5", "d6", "d7", "a5", "memory"); \
680 asm volatile( \
681 "movclr.l %%acc0, %0\n\t" \
682 "movclr.l %%acc1, %1\n\t" \
683 : "=d" (res1), "=d" (res2) );
684
685static
686void synth_full(struct mad_synth *synth, struct mad_frame const *frame,
687 unsigned int nch, unsigned int ns)
688{
689 int sb;
690 unsigned int phase, ch, s, p;
691 mad_fixed_t *pcm, (*filter)[2][2][16][8];
692 mad_fixed_t (*sbsample)[36][32];
693 mad_fixed_t (*fe)[8], (*fx)[8], (*fo)[8];
694 mad_fixed_t const (*D0ptr)[32];
695 mad_fixed_t const (*D1ptr)[32];
696 mad_fixed64hi_t hi0, hi1;
697
698 for (ch = 0; ch < nch; ++ch) {
699 sbsample = &(*frame->sbsample_prev)[ch];
700 filter = &synth->filter[ch];
701 phase = synth->phase;
702 pcm = synth->pcm.samples[ch];
703
704 for (s = 0; s < ns; ++s) {
705 dct32((*sbsample)[s], phase >> 1,
706 (*filter)[0][phase & 1], (*filter)[1][phase & 1]);
707
708 p = (phase - 1) & 0xf;
709
710 /* calculate 32 samples */
711 fe = &(*filter)[0][ phase & 1][0];
712 fx = &(*filter)[0][~phase & 1][0];
713 fo = &(*filter)[1][~phase & 1][0];
714
715 D0ptr = (void*)&D[0][ p];
716 D1ptr = (void*)&D[0][-p];
717
718 if(s & 1)
719 {
720 SYNTH_EMAC2(hi0, fx, fe, D0ptr);
721 pcm[0] = hi0 << 3; /* shift result to libmad's fixed point format */
722 pcm += 16;
723
724 for (sb = 15; sb; sb--, fo++) {
725 ++fe;
726 ++D0ptr;
727 ++D1ptr;
728
729 /* D[32 - sb][i] == -D[sb][31 - i] */
730 SYNTH_EMAC_ODD_SBSAMPLE(fo, fe, D0ptr, D1ptr, hi0, hi1);
731 pcm[-sb] = hi0 << 3;
732 pcm[ sb] = hi1 << 3;
733 }
734
735 ++D0ptr;
736 SYNTH_EMAC1(hi0, fo, D0ptr+1);
737 pcm[0] = -(hi0 << 3);
738 }
739 else
740 {
741 SYNTH_EMAC2(hi0, fe, fx, D0ptr);
742 pcm[0] = -(hi0 << 3); /* shift result to libmad's fixed point format */
743 pcm += 16;
744
745 for (sb = 15; sb; sb--, fo++) {
746 ++fe;
747 ++D0ptr;
748 ++D1ptr;
749
750 /* D[32 - sb][i] == -D[sb][31 - i] */
751 SYNTH_EMAC_EVEN_SBSAMPLE(fo, fe, D0ptr, D1ptr, hi0, hi1);
752 pcm[-sb] = hi0 << 3;
753 pcm[ sb] = hi1 << 3;
754 }
755
756 ++D0ptr;
757 SYNTH_EMAC1(hi0, fo, D0ptr);
758 pcm[0] = -(hi0 << 3);
759 }
760 pcm += 16;
761 phase = (phase + 1) % 16;
762 }
763 }
764}
765
766#elif defined(FPM_ARM)
767
768#define PROD_O(hi, lo, f, ptr) \
769 ({ \
770 mad_fixed_t *__p = (f); \
771 asm("ldmia %2!, {r0, r1, r2, r3}\n\t" \
772 "ldr r4, [%3, #0]\n\t" \
773 "ldr r12, [%3, #56]\n\t" \
774 "smull %0, %1, r0, r4\n\t" \
775 "ldr r4, [%3, #48]\n\t" \
776 "smlal %0, %1, r1, r12\n\t" \
777 "ldr r12, [%3, #40]\n\t" \
778 "smlal %0, %1, r2, r4\n\t" \
779 "smlal %0, %1, r3, r12\n\t" \
780 "ldmia %2, {r0, r1, r2, r3}\n\t" \
781 "ldr r4, [%3, #32]\n\t" \
782 "ldr r12, [%3, #24]\n\t" \
783 "smlal %0, %1, r0, r4\n\t" \
784 "ldr r4, [%3, #16]\n\t" \
785 "smlal %0, %1, r1, r12\n\t" \
786 "ldr r12, [%3, #8]\n\t" \
787 "smlal %0, %1, r2, r4\n\t" \
788 "smlal %0, %1, r3, r12\n\t" \
789 : "=&r" (lo), "=&r" (hi), "+r" (__p) \
790 : "r" (ptr) \
791 : "r0", "r1", "r2", "r3", "r4", "r12"); \
792 })
793
794#define PROD_A(hi, lo, f, ptr) \
795 ({ \
796 mad_fixed_t *__p = (f); \
797 asm("ldmia %2!, {r0, r1, r2, r3}\n\t" \
798 "ldr r4, [%3, #0]\n\t" \
799 "ldr r12, [%3, #56]\n\t" \
800 "smlal %0, %1, r0, r4\n\t" \
801 "ldr r4, [%3, #48]\n\t" \
802 "smlal %0, %1, r1, r12\n\t" \
803 "ldr r12, [%3, #40]\n\t" \
804 "smlal %0, %1, r2, r4\n\t" \
805 "smlal %0, %1, r3, r12\n\t" \
806 "ldmia %2, {r0, r1, r2, r3}\n\t" \
807 "ldr r4, [%3, #32]\n\t" \
808 "ldr r12, [%3, #24]\n\t" \
809 "smlal %0, %1, r0, r4\n\t" \
810 "ldr r4, [%3, #16]\n\t" \
811 "smlal %0, %1, r1, r12\n\t" \
812 "ldr r12, [%3, #8]\n\t" \
813 "smlal %0, %1, r2, r4\n\t" \
814 "smlal %0, %1, r3, r12\n\t" \
815 : "+r" (lo), "+r" (hi), "+r" (__p) \
816 : "r" (ptr) \
817 : "r0", "r1", "r2", "r3", "r4", "r12"); \
818 })
819
820void synth_full_odd_sbsample (mad_fixed_t *pcm,
821 mad_fixed_t (*fo)[8],
822 mad_fixed_t (*fe)[8],
823 mad_fixed_t const (*D0ptr)[32],
824 mad_fixed_t const (*D1ptr)[32]);
825void synth_full_even_sbsample(mad_fixed_t *pcm,
826 mad_fixed_t (*fo)[8],
827 mad_fixed_t (*fe)[8],
828 mad_fixed_t const (*D0ptr)[32],
829 mad_fixed_t const (*D1ptr)[32]);
830
831static
832void synth_full(struct mad_synth *synth, struct mad_frame const *frame,
833 unsigned int nch, unsigned int ns) ICODE_ATTR_MPA_SYNTH;
834static
835void synth_full(struct mad_synth *synth, struct mad_frame const *frame,
836 unsigned int nch, unsigned int ns)
837{
838 int p;
839 unsigned int phase, ch, s;
840 mad_fixed_t *pcm, (*filter)[2][2][16][8];
841 mad_fixed_t (*sbsample)[36][32];
842 mad_fixed_t (*fe)[8], (*fx)[8], (*fo)[8];
843 mad_fixed_t const (*D0ptr)[32], *ptr;
844 mad_fixed_t const (*D1ptr)[32];
845 mad_fixed64hi_t hi;
846 mad_fixed64lo_t lo;
847
848 for (ch = 0; ch < nch; ++ch) {
849 sbsample = &(*frame->sbsample_prev)[ch];
850 filter = &synth->filter[ch];
851 phase = synth->phase;
852 pcm = synth->pcm.samples[ch];
853
854 for (s = 0; s < ns; ++s) {
855 dct32((*sbsample)[s], phase >> 1,
856 (*filter)[0][phase & 1], (*filter)[1][phase & 1]);
857
858 p = (phase - 1) & 0xf;
859
860 /* calculate 32 samples */
861 fe = &(*filter)[0][ phase & 1][0];
862 fx = &(*filter)[0][~phase & 1][0];
863 fo = &(*filter)[1][~phase & 1][0];
864
865 D0ptr = (void*)&D[0][ p];
866 D1ptr = (void*)&D[0][-p];
867
868 if(s & 1)
869 {
870 ptr = *D0ptr;
871 PROD_O(hi, lo, *fx, ptr+1);
872 MLN(hi, lo);
873 PROD_A(hi, lo, *fe, ptr);
874 pcm[0] = SHIFT(MLZ(hi, lo));
875 pcm += 16;
876
877 synth_full_odd_sbsample(pcm, fo, fe, D0ptr, D1ptr);
878 D0ptr += 15;
879 D1ptr += 15;
880 fo += 15;
881 fe += 15;
882
883 ptr = *(D0ptr + 1);
884 PROD_O(hi, lo, *fo, ptr+1);
885 pcm[0] = SHIFT(-MLZ(hi, lo));
886 }
887 else
888 {
889 ptr = *D0ptr;
890 PROD_O(hi, lo, *fx, ptr);
891 MLN(hi, lo);
892 PROD_A(hi, lo, *fe, ptr+1);
893 pcm[0] = SHIFT(MLZ(hi, lo));
894 pcm += 16;
895
896 synth_full_even_sbsample(pcm, fo, fe, D0ptr, D1ptr);
897 D0ptr += 15;
898 D1ptr += 15;
899 fo += 15;
900 fe += 15;
901
902 ptr = *(D0ptr + 1);
903 PROD_O(hi, lo, *fo, ptr);
904 pcm[0] = SHIFT(-MLZ(hi, lo));
905 }
906
907 pcm += 16;
908 phase = (phase + 1) % 16;
909 }
910 }
911}
912
913# else /* not FPM_COLDFIRE_EMAC and not FPM_ARM */
914
915#define PROD_O(hi, lo, f, ptr, offset) \
916 ML0(hi, lo, (*f)[0], ptr[ 0+offset]); \
917 MLA(hi, lo, (*f)[1], ptr[14+offset]); \
918 MLA(hi, lo, (*f)[2], ptr[12+offset]); \
919 MLA(hi, lo, (*f)[3], ptr[10+offset]); \
920 MLA(hi, lo, (*f)[4], ptr[ 8+offset]); \
921 MLA(hi, lo, (*f)[5], ptr[ 6+offset]); \
922 MLA(hi, lo, (*f)[6], ptr[ 4+offset]); \
923 MLA(hi, lo, (*f)[7], ptr[ 2+offset]);
924
925#define PROD_A(hi, lo, f, ptr, offset) \
926 MLA(hi, lo, (*f)[0], ptr[ 0+offset]); \
927 MLA(hi, lo, (*f)[1], ptr[14+offset]); \
928 MLA(hi, lo, (*f)[2], ptr[12+offset]); \
929 MLA(hi, lo, (*f)[3], ptr[10+offset]); \
930 MLA(hi, lo, (*f)[4], ptr[ 8+offset]); \
931 MLA(hi, lo, (*f)[5], ptr[ 6+offset]); \
932 MLA(hi, lo, (*f)[6], ptr[ 4+offset]); \
933 MLA(hi, lo, (*f)[7], ptr[ 2+offset]);
934
935#define PROD_SB(hi, lo, ptr, offset, first_idx, last_idx) \
936 ML0(hi, lo, (*fe)[0], ptr[first_idx]); \
937 MLA(hi, lo, (*fe)[1], ptr[16+offset]); \
938 MLA(hi, lo, (*fe)[2], ptr[18+offset]); \
939 MLA(hi, lo, (*fe)[3], ptr[20+offset]); \
940 MLA(hi, lo, (*fe)[4], ptr[22+offset]); \
941 MLA(hi, lo, (*fe)[5], ptr[24+offset]); \
942 MLA(hi, lo, (*fe)[6], ptr[26+offset]); \
943 MLA(hi, lo, (*fe)[7], ptr[28+offset]); \
944 MLA(hi, lo, (*fo)[7], ptr[29-offset]); \
945 MLA(hi, lo, (*fo)[6], ptr[27-offset]); \
946 MLA(hi, lo, (*fo)[5], ptr[25-offset]); \
947 MLA(hi, lo, (*fo)[4], ptr[23-offset]); \
948 MLA(hi, lo, (*fo)[3], ptr[21-offset]); \
949 MLA(hi, lo, (*fo)[2], ptr[19-offset]); \
950 MLA(hi, lo, (*fo)[1], ptr[17-offset]); \
951 MLA(hi, lo, (*fo)[0], ptr[last_idx ]);
952
953static
954void synth_full(struct mad_synth *synth, struct mad_frame const *frame,
955 unsigned int nch, unsigned int ns)
956{
957 int p, sb;
958 unsigned int phase, ch, s;
959 mad_fixed_t *pcm, (*filter)[2][2][16][8];
960 mad_fixed_t (*sbsample)[36][32];
961 mad_fixed_t (*fe)[8], (*fx)[8], (*fo)[8];
962 mad_fixed_t const (*D0ptr)[32], *ptr;
963 mad_fixed_t const (*D1ptr)[32];
964 mad_fixed64hi_t hi;
965 mad_fixed64lo_t lo;
966
967 for (ch = 0; ch < nch; ++ch) {
968 sbsample = &(*frame->sbsample_prev)[ch];
969 filter = &synth->filter[ch];
970 phase = synth->phase;
971 pcm = synth->pcm.samples[ch];
972
973 for (s = 0; s < ns; ++s) {
974 dct32((*sbsample)[s], phase >> 1,
975 (*filter)[0][phase & 1], (*filter)[1][phase & 1]);
976
977 p = (phase - 1) & 0xf;
978
979 /* calculate 32 samples */
980 fe = &(*filter)[0][ phase & 1][0];
981 fx = &(*filter)[0][~phase & 1][0];
982 fo = &(*filter)[1][~phase & 1][0];
983
984 D0ptr = (void*)&D[0][ p];
985 D1ptr = (void*)&D[0][-p];
986
987 if(s & 1)
988 {
989 ptr = *D0ptr;
990 PROD_O(hi, lo, fx, ptr, 1)
991 MLN(hi, lo);
992 PROD_A(hi, lo, fe, ptr, 0)
993 pcm[0] = SHIFT(MLZ(hi, lo));
994 pcm += 16;
995
996 for (sb = 15; sb; sb--, fo++)
997 {
998 ++fe;
999 ++D0ptr;
1000 ++D1ptr;
1001
1002 /* D[32 - sb][i] == -D[sb][31 - i] */
1003 ptr = *D0ptr;
1004 PROD_O(hi, lo, fo, ptr, 1)
1005 MLN(hi, lo);
1006 PROD_A(hi, lo, fe, ptr, 0)
1007 pcm[-sb] = SHIFT(MLZ(hi, lo));
1008
1009 ptr = *D1ptr;
1010 PROD_SB(hi, lo, ptr, 1, 15, 30)
1011 pcm[sb] = SHIFT(MLZ(hi, lo));
1012 }
1013
1014 ptr = *(D0ptr + 1);
1015 PROD_O(hi, lo, fo, ptr, 1)
1016 pcm[0] = SHIFT(-MLZ(hi, lo));
1017 }
1018 else
1019 {
1020 ptr = *D0ptr;
1021 PROD_O(hi, lo, fx, ptr, 0)
1022 MLN(hi, lo);
1023 PROD_A(hi, lo, fe, ptr, 1)
1024 pcm[0] = SHIFT(MLZ(hi, lo));
1025 pcm += 16;
1026
1027 for (sb = 15; sb; sb--, fo++)
1028 {
1029 ++fe;
1030 ++D0ptr;
1031 ++D1ptr;
1032
1033 /* D[32 - sb][i] == -D[sb][31 - i] */
1034 ptr = *D0ptr;
1035 PROD_O(hi, lo, fo, ptr, 0)
1036 MLN(hi, lo);
1037 PROD_A(hi, lo, fe, ptr, 1)
1038 pcm[-sb] = SHIFT(MLZ(hi, lo));
1039
1040 ptr = *D1ptr;
1041 PROD_SB(hi, lo, ptr, 0, 30, 15)
1042 pcm[sb] = SHIFT(MLZ(hi, lo));
1043 }
1044
1045 ptr = *(D0ptr + 1);
1046 PROD_O(hi, lo, fo, ptr, 0)
1047 pcm[0] = SHIFT(-MLZ(hi, lo));
1048 }
1049
1050 pcm += 16;
1051 phase = (phase + 1) % 16;
1052 }
1053 }
1054}
1055# endif /* FPM_COLDFIRE_EMAC, FPM_ARM */
1056
1057#if 0 /* rockbox: unused */
1058/*
1059 * NAME: synth->half()
1060 * DESCRIPTION: perform half frequency PCM synthesis
1061 */
1062static
1063void synth_half(struct mad_synth *synth, struct mad_frame const *frame,
1064 unsigned int nch, unsigned int ns)
1065{
1066 unsigned int phase, ch, s, sb, pe, po;
1067 mad_fixed_t *pcm1, *pcm2, (*filter)[2][2][16][8];
1068 mad_fixed_t (*sbsample)[36][32];
1069 register mad_fixed_t (*fe)[8], (*fx)[8], (*fo)[8];
1070 register mad_fixed_t const (*Dptr)[32], *ptr;
1071 register mad_fixed64hi_t hi;
1072 register mad_fixed64lo_t lo;
1073
1074 for (ch = 0; ch < nch; ++ch) {
1075 sbsample = &(*frame->sbsample_prev)[ch];
1076 filter = &synth->filter[ch];
1077 phase = synth->phase;
1078 pcm1 = synth->pcm.samples[ch];
1079
1080 for (s = 0; s < ns; ++s) {
1081 dct32((*sbsample)[s], phase >> 1,
1082 (*filter)[0][phase & 1], (*filter)[1][phase & 1]);
1083
1084 pe = phase & ~1;
1085 po = ((phase - 1) & 0xf) | 1;
1086
1087 /* calculate 16 samples */
1088
1089 fe = &(*filter)[0][ phase & 1][0];
1090 fx = &(*filter)[0][~phase & 1][0];
1091 fo = &(*filter)[1][~phase & 1][0];
1092
1093 Dptr = &D[0];
1094
1095 ptr = *Dptr + po;
1096 ML0(hi, lo, (*fx)[0], ptr[ 0]);
1097 MLA(hi, lo, (*fx)[1], ptr[14]);
1098 MLA(hi, lo, (*fx)[2], ptr[12]);
1099 MLA(hi, lo, (*fx)[3], ptr[10]);
1100 MLA(hi, lo, (*fx)[4], ptr[ 8]);
1101 MLA(hi, lo, (*fx)[5], ptr[ 6]);
1102 MLA(hi, lo, (*fx)[6], ptr[ 4]);
1103 MLA(hi, lo, (*fx)[7], ptr[ 2]);
1104 MLN(hi, lo);
1105
1106 ptr = *Dptr + pe;
1107 MLA(hi, lo, (*fe)[0], ptr[ 0]);
1108 MLA(hi, lo, (*fe)[1], ptr[14]);
1109 MLA(hi, lo, (*fe)[2], ptr[12]);
1110 MLA(hi, lo, (*fe)[3], ptr[10]);
1111 MLA(hi, lo, (*fe)[4], ptr[ 8]);
1112 MLA(hi, lo, (*fe)[5], ptr[ 6]);
1113 MLA(hi, lo, (*fe)[6], ptr[ 4]);
1114 MLA(hi, lo, (*fe)[7], ptr[ 2]);
1115
1116 *pcm1++ = SHIFT(MLZ(hi, lo));
1117
1118 pcm2 = pcm1 + 14;
1119
1120 for (sb = 1; sb < 16; ++sb) {
1121 ++fe;
1122 ++Dptr;
1123
1124 /* D[32 - sb][i] == -D[sb][31 - i] */
1125
1126 if (!(sb & 1)) {
1127 ptr = *Dptr + po;
1128 ML0(hi, lo, (*fo)[0], ptr[ 0]);
1129 MLA(hi, lo, (*fo)[1], ptr[14]);
1130 MLA(hi, lo, (*fo)[2], ptr[12]);
1131 MLA(hi, lo, (*fo)[3], ptr[10]);
1132 MLA(hi, lo, (*fo)[4], ptr[ 8]);
1133 MLA(hi, lo, (*fo)[5], ptr[ 6]);
1134 MLA(hi, lo, (*fo)[6], ptr[ 4]);
1135 MLA(hi, lo, (*fo)[7], ptr[ 2]);
1136 MLN(hi, lo);
1137
1138 ptr = *Dptr + pe;
1139 MLA(hi, lo, (*fe)[7], ptr[ 2]);
1140 MLA(hi, lo, (*fe)[6], ptr[ 4]);
1141 MLA(hi, lo, (*fe)[5], ptr[ 6]);
1142 MLA(hi, lo, (*fe)[4], ptr[ 8]);
1143 MLA(hi, lo, (*fe)[3], ptr[10]);
1144 MLA(hi, lo, (*fe)[2], ptr[12]);
1145 MLA(hi, lo, (*fe)[1], ptr[14]);
1146 MLA(hi, lo, (*fe)[0], ptr[ 0]);
1147
1148 *pcm1++ = SHIFT(MLZ(hi, lo));
1149
1150 ptr = *Dptr - po;
1151 ML0(hi, lo, (*fo)[7], ptr[31 - 2]);
1152 MLA(hi, lo, (*fo)[6], ptr[31 - 4]);
1153 MLA(hi, lo, (*fo)[5], ptr[31 - 6]);
1154 MLA(hi, lo, (*fo)[4], ptr[31 - 8]);
1155 MLA(hi, lo, (*fo)[3], ptr[31 - 10]);
1156 MLA(hi, lo, (*fo)[2], ptr[31 - 12]);
1157 MLA(hi, lo, (*fo)[1], ptr[31 - 14]);
1158 MLA(hi, lo, (*fo)[0], ptr[31 - 16]);
1159
1160 ptr = *Dptr - pe;
1161 MLA(hi, lo, (*fe)[0], ptr[31 - 16]);
1162 MLA(hi, lo, (*fe)[1], ptr[31 - 14]);
1163 MLA(hi, lo, (*fe)[2], ptr[31 - 12]);
1164 MLA(hi, lo, (*fe)[3], ptr[31 - 10]);
1165 MLA(hi, lo, (*fe)[4], ptr[31 - 8]);
1166 MLA(hi, lo, (*fe)[5], ptr[31 - 6]);
1167 MLA(hi, lo, (*fe)[6], ptr[31 - 4]);
1168 MLA(hi, lo, (*fe)[7], ptr[31 - 2]);
1169
1170 *pcm2-- = SHIFT(MLZ(hi, lo));
1171 }
1172
1173 ++fo;
1174 }
1175
1176 ++Dptr;
1177
1178 ptr = *Dptr + po;
1179 ML0(hi, lo, (*fo)[0], ptr[ 0]);
1180 MLA(hi, lo, (*fo)[1], ptr[14]);
1181 MLA(hi, lo, (*fo)[2], ptr[12]);
1182 MLA(hi, lo, (*fo)[3], ptr[10]);
1183 MLA(hi, lo, (*fo)[4], ptr[ 8]);
1184 MLA(hi, lo, (*fo)[5], ptr[ 6]);
1185 MLA(hi, lo, (*fo)[6], ptr[ 4]);
1186 MLA(hi, lo, (*fo)[7], ptr[ 2]);
1187
1188 *pcm1 = SHIFT(-MLZ(hi, lo));
1189 pcm1 += 8;
1190
1191 phase = (phase + 1) % 16;
1192 }
1193 }
1194}
1195#endif /* unused */
1196
1197/*
1198 * NAME: synth->frame()
1199 * DESCRIPTION: perform PCM synthesis of frame subband samples
1200 */
1201void mad_synth_frame(struct mad_synth *synth, struct mad_frame const *frame)
1202{
1203 unsigned int nch, ns;
1204#if 0 /* rockbox: unused */
1205 void (*synth_frame)(struct mad_synth *, struct mad_frame const *,
1206 unsigned int, unsigned int);
1207#endif
1208
1209 nch = MAD_NCHANNELS(&frame->header);
1210 ns = MAD_NSBSAMPLES(&frame->header);
1211
1212 synth->pcm.samplerate = frame->header.samplerate;
1213 synth->pcm.channels = nch;
1214 synth->pcm.length = 32 * ns;
1215
1216#if 0 /* rockbox: unused */
1217 synth_frame = synth_full;
1218
1219 if (frame->options & MAD_OPTION_HALFSAMPLERATE) {
1220 synth->pcm.samplerate /= 2;
1221 synth->pcm.length /= 2;
1222
1223 synth_frame = synth_half;
1224 }
1225
1226 synth_frame(synth, frame, nch, ns);
1227#else
1228 synth_full(synth, frame, nch, ns);
1229#endif
1230
1231 synth->phase = (synth->phase + ns) % 16;
1232}
diff --git a/lib/rbcodec/codecs/libmad/synth.h b/lib/rbcodec/codecs/libmad/synth.h
new file mode 100644
index 0000000000..93dd3946d4
--- /dev/null
+++ b/lib/rbcodec/codecs/libmad/synth.h
@@ -0,0 +1,52 @@
1/*
2 * libmad - MPEG audio decoder library
3 * Copyright (C) 2000-2004 Underbit Technologies, Inc.
4 *
5 * This program is free software; you can redistribute it and/or modify
6 * it under the terms of the GNU General Public License as published by
7 * the Free Software Foundation; either version 2 of the License, or
8 * (at your option) any later version.
9 *
10 * This program is distributed in the hope that it will be useful,
11 * but WITHOUT ANY WARRANTY; without even the implied warranty of
12 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 * GNU General Public License for more details.
14 *
15 * You should have received a copy of the GNU General Public License
16 * along with this program; if not, write to the Free Software
17 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
18 *
19 * $Id$
20 */
21
22# ifndef LIBMAD_SYNTH_H
23# define LIBMAD_SYNTH_H
24
25# include "fixed.h"
26# include "frame.h"
27
28struct mad_pcm {
29 unsigned int samplerate; /* sampling frequency (Hz) */
30 unsigned short channels; /* number of channels */
31 unsigned short length; /* number of samples per channel */
32 mad_fixed_t samples[2][1152] MEM_ALIGN_ATTR; /* PCM output samples [ch][sample] */
33};
34
35struct mad_synth {
36 mad_fixed_t filter[2][2][2][16][8] MEM_ALIGN_ATTR; /* polyphase filterbank outputs */
37 /* [ch][eo][peo][s][v] */
38
39 unsigned int phase; /* current processing phase */
40
41 struct mad_pcm pcm; /* PCM output */
42};
43
44void mad_synth_init(struct mad_synth *);
45
46# define mad_synth_finish(synth) /* nothing */
47
48void mad_synth_mute(struct mad_synth *);
49
50void mad_synth_frame(struct mad_synth *, struct mad_frame const *);
51
52# endif
diff --git a/lib/rbcodec/codecs/libmad/synth_full_arm.S b/lib/rbcodec/codecs/libmad/synth_full_arm.S
new file mode 100644
index 0000000000..0a4f9b93c2
--- /dev/null
+++ b/lib/rbcodec/codecs/libmad/synth_full_arm.S
@@ -0,0 +1,340 @@
1/***************************************************************************
2 * __________ __ ___.
3 * Open \______ \ ____ ____ | | _\_ |__ _______ ___
4 * Source | _// _ \_/ ___\| |/ /| __ \ / _ \ \/ /
5 * Jukebox | | ( <_> ) \___| < | \_\ ( <_> > < <
6 * Firmware |____|_ /\____/ \___ >__|_ \|___ /\____/__/\_ \
7 * \/ \/ \/ \/ \/
8 * $Id$
9 *
10 * Copyright (C) 2007 by Tomasz Malesinski
11 *
12 * This program is free software; you can redistribute it and/or
13 * modify it under the terms of the GNU General Public License
14 * as published by the Free Software Foundation; either version 2
15 * of the License, or (at your option) any later version.
16 *
17 * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
18 * KIND, either express or implied.
19 *
20 ****************************************************************************/
21
22#include "config.h"
23#include "mad_iram.h"
24
25 .section ICODE_SECTION_MPA_ARM,"ax",%progbits
26
27 .global synth_full_odd_sbsample
28 .global synth_full_even_sbsample
29
30 /*
31 ;; r0 = pcm (pushed on the stack to free a register)
32 ;; r1 = fo
33 ;; r2 = fe
34 ;; r3 = D0ptr
35 ;; r4 = D1ptr
36
37 ;; r5 = loop counter
38 ;; r6,r7 accumulator1
39 ;; r8,r9 accumulator2
40 */
41
42synth_full_odd_sbsample:
43 stmdb sp!, {r0, r4-r11, lr}
44 ldr r4, [sp, #40]
45 mov r5, #15
46 add r2, r2, #32
47.l:
48 /* ;; PROD_O and odd half of SB_SAMPLE*/
49 add r3, r3, #128
50 add r4, r4, #128
51 ldr r7, [r3, #4]
52 ldmia r1!, {r0, r10, r11, lr}
53 ldr r9, [r4, #120]
54 smull r6, r7, r0, r7
55 ldr r12, [r3, #60]
56 smull r8, r9, r0, r9
57 ldr r0, [r3, #52]
58 smlal r6, r7, r10, r12
59 ldr r12, [r3, #44]
60 smlal r6, r7, r11, r0
61 ldr r0, [r4, #64]
62 smlal r6, r7, lr, r12
63 ldr r12, [r4, #72]
64 smlal r8, r9, r10, r0
65 ldr r0, [r4, #80]
66 smlal r8, r9, r11, r12
67 smlal r8, r9, lr, r0
68 ldr r0, [r3, #36]
69
70 ldmia r1!, {r10, r11, r12, lr}
71 smlal r6, r7, r10, r0
72
73 ldr r0, [r4, #88] /*;;1 cycle stall on arm9, but we free up r10*/
74 smlal r8, r9, r10, r0
75
76 ldr r0, [r3, #28]
77 ldr r10, [r3, #20]
78 smlal r6, r7, r11, r0
79 ldr r0, [r3, #12]
80 smlal r6, r7, r12, r10
81 ldr r10, [r4, #96]
82 smlal r6, r7, lr, r0
83 ldr r0, [r4, #104]
84 smlal r8, r9, r11, r10
85 ldr r10, [r4, #112]
86 smlal r8, r9, r12, r0
87 smlal r8, r9, lr, r10
88
89 rsbs r6, r6, #0
90 rsc r7, r7, #0
91
92 /* ;; PROD_A and even half of SB_SAMPLE*/
93 ldr r0, [r3, #0]
94 ldmia r2!, {r10, r11, r12, lr}
95 smlal r6, r7, r10, r0
96
97 ldr r0, [r4, #60] /*;;1 cycle stall on arm9, but we free up r10*/
98 smlal r8, r9, r10, r0
99 ldr r10, [r3, #56]
100 ldr r0, [r3, #48]
101 smlal r6, r7, r11, r10
102 ldr r10, [r3, #40]
103 smlal r6, r7, r12, r0
104 ldr r0, [r4, #68]
105 smlal r6, r7, lr, r10
106 ldr r10, [r4, #76]
107 smlal r8, r9, r11, r0
108 ldr r0, [r4, #84]
109 smlal r8, r9, r12, r10
110 smlal r8, r9, lr, r0
111
112 ldr r0, [r3, #32]
113 ldmia r2!, {r10, r11, r12, lr}
114 smlal r6, r7, r10, r0
115
116 ldr r0, [r4, #92] /*;;1 cycle stall on arm9, but we free up r10*/
117 smlal r8, r9, r10, r0
118
119 ldr r0, [r3, #24]
120 ldr r10, [r3, #16]
121 smlal r6, r7, r11, r0
122 ldr r0, [r3, #8]
123 smlal r6, r7, r12, r10
124 ldr r10, [r4, #100]
125 smlal r6, r7, lr, r0
126 ldr r0, [r4, #108]
127 smlal r8, r9, r11, r10
128 ldr r10, [r4, #116]
129 smlal r8, r9, r12, r0
130 smlal r8, r9, lr, r10
131
132 ldr r0, [sp]
133
134 movs r6, r6, lsr #16
135 adc r6, r6, r7, lsl #16
136 str r6, [r0, -r5, lsl #2]
137
138 movs r8, r8, lsr #16
139 adc r8, r8, r9, lsl #16
140 str r8, [r0, r5, lsl #2]
141
142 subs r5, r5, #1
143 bne .l
144
145 ldmpc regs="r0,r4-r11"
146
147synth_full_even_sbsample:
148 stmdb sp!, {r0, r4-r11, lr}
149 ldr r4, [sp, #40]
150 mov r5, #15
151 add r2, r2, #32
152.l2:
153 /* ;; PROD_O and odd half of SB_SAMPLE*/
154 add r3, r3, #128
155 add r4, r4, #128
156 ldr r7, [r3, #0]
157 ldmia r1!, {r0, r10, r11, lr}
158 ldr r9, [r4, #60]
159 smull r6, r7, r0, r7
160 ldr r12, [r3, #56]
161 smull r8, r9, r0, r9
162 ldr r0, [r3, #48]
163 smlal r6, r7, r10, r12
164 ldr r12, [r3, #40]
165 smlal r6, r7, r11, r0
166 ldr r0, [r4, #68]
167 smlal r6, r7, lr, r12
168
169 ldr r12, [r4, #76]
170 smlal r8, r9, r10, r0
171 ldr r0, [r4, #84]
172 smlal r8, r9, r11, r12
173 smlal r8, r9, lr, r0
174
175 ldr r0, [r3, #32]
176 ldmia r1!, {r10, r11, r12, lr}
177
178 smlal r6, r7, r10, r0
179 ldr r0, [r4, #92]
180 smlal r8, r9, r10, r0
181 ldr r0, [r3, #24]
182 ldr r10, [r3, #16]
183 smlal r6, r7, r11, r0
184 ldr r0, [r3, #8]
185 smlal r6, r7, r12, r10
186 ldr r10, [r4, #100]
187 smlal r6, r7, lr, r0
188 ldr r0, [r4, #108]
189 smlal r8, r9, r11, r10
190 ldr r10, [r4, #116]
191 smlal r8, r9, r12, r0
192 smlal r8, r9, lr, r10
193
194 rsbs r6, r6, #0
195 rsc r7, r7, #0
196
197 ldr r0, [r3, #4]
198 ldmia r2!, {r10, r11, r12, lr}
199 smlal r6, r7, r10, r0
200 ldr r0, [r4, #120] /*;;1 cycle stall on arm9, but we free up r10*/
201 smlal r8, r9, r10, r0
202 ldr r0, [r3, #60]
203 ldr r10, [r3, #52]
204 smlal r6, r7, r11, r0
205 ldr r0, [r3, #44]
206 smlal r6, r7, r12, r10
207 ldr r10, [r4, #64]
208 smlal r6, r7, lr, r0
209
210 ldr r0, [r4, #72]
211 smlal r8, r9, r11, r10
212 ldr r10, [r4, #80]
213 smlal r8, r9, r12, r0
214
215 smlal r8, r9, lr, r10
216
217 ldr r0, [r3, #36]
218 ldmia r2!, {r10, r11, r12, lr}
219 smlal r6, r7, r10, r0
220 ldr r0, [r4, #88] /*;;1 cycle stall on arm9, but we free up r10*/
221 smlal r8, r9, r10, r0
222
223 ldr r0, [r3, #28]
224 ldr r10, [r3, #20]
225 smlal r6, r7, r11, r0
226 ldr r0, [r3, #12]
227 smlal r6, r7, r12, r10
228 ldr r10, [r4, #96]
229 smlal r6, r7, lr, r0
230 ldr r0, [r4, #104]
231 smlal r8, r9, r11, r10
232 ldr r10, [r4, #112]
233 smlal r8, r9, r12, r0
234 smlal r8, r9, lr, r10
235
236 ldr r0, [sp]
237
238 movs r6, r6, lsr #16
239 adc r6, r6, r7, lsl #16
240 str r6, [r0, -r5, lsl #2]
241
242 movs r8, r8, lsr #16
243 adc r8, r8, r9, lsl #16
244 str r8, [r0, r5, lsl #2]
245
246 subs r5, r5, #1
247 bne .l2
248
249 ldmpc regs="r0,r4-r11"
250
251 .global III_aliasreduce
252
253III_aliasreduce:
254 stmdb sp!, {r4-r11, lr}
255 add r1, r0, r1, lsl #2
256 add r0, r0, #72
257.arl1:
258 mov r2, #8
259 mov r3, r0 @ a
260 mov r4, r0 @ b
261 ldr r5, =csa @ cs/ca
262.arl2:
263 ldmdb r3, {r6, r12}
264 ldmia r4, {r7, lr}
265
266 ldmia r5!, {r8, r9}
267 smull r10, r11, r7, r8
268 smlal r10, r11, r12, r9
269 movs r10, r10, lsr #28
270 adc r10, r10, r11, lsl #4
271
272 rsb r7, r7, #0
273 smull r11, r8, r12, r8
274 smlal r11, r8, r7, r9
275 movs r11, r11, lsr #28
276 adc r11, r11, r8, lsl #4
277
278 ldmia r5!, {r8, r9}
279 smull r12, r7, lr, r8
280 smlal r12, r7, r6, r9
281 movs r12, r12, lsr #28
282 adc r12, r12, r7, lsl #4
283 stmia r4!, {r10, r12}
284
285 rsb lr, lr, #0
286 smull r7, r10, r6, r8
287 smlal r7, r10, lr, r9
288 movs r7, r7, lsr #28
289 adc r7, r7, r10, lsl #4
290 stmdb r3!, {r7, r11}
291
292 subs r2, r2, #2
293 bne .arl2
294 add r0, r0, #72
295 cmp r0, r1
296 blo .arl1
297 ldmpc regs=r4-r11
298
299csa:
300 .word +0x0db84a81
301 .word -0x083b5fe7
302 .word +0x0e1b9d7f
303 .word -0x078c36d2
304 .word +0x0f31adcf
305 .word -0x05039814
306 .word +0x0fbba815
307 .word -0x02e91dd1
308 .word +0x0feda417
309 .word -0x0183603a
310 .word +0x0ffc8fc8
311 .word -0x00a7cb87
312 .word +0x0fff964c
313 .word -0x003a2847
314 .word +0x0ffff8d3
315 .word -0x000f27b4
316
317 .global III_overlap
318III_overlap:
319 stmdb sp!, {r4-r7, lr}
320 add r2, r2, r3, lsl #2
321 mov r3, #6
322.ol:
323 ldmia r0!, {r4, r5, r6}
324 ldmia r1!, {r7, r12, lr}
325 add r4, r4, r7
326 add r5, r5, r12
327 add r6, r6, lr
328 str r4, [r2], #128
329 str r5, [r2], #128
330 str r6, [r2], #128
331 subs r3, r3, #1
332 bne .ol
333 sub r1, r1, #72
334 ldmia r0!, {r4, r5, r6, r7, r12, lr}
335 stmia r1!, {r4, r5, r6, r7, r12, lr}
336 ldmia r0!, {r4, r5, r6, r7, r12, lr}
337 stmia r1!, {r4, r5, r6, r7, r12, lr}
338 ldmia r0!, {r4, r5, r6, r7, r12, lr}
339 stmia r1!, {r4, r5, r6, r7, r12, lr}
340 ldmpc regs=r4-r7