• Home
  • History
  • Annotate
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /*
2 Copyright (c) 2014, Intel Corporation
3 All rights reserved.
4 
5 Redistribution and use in source and binary forms, with or without
6 modification, are permitted provided that the following conditions are met:
7 
8     * Redistributions of source code must retain the above copyright notice,
9     * this list of conditions and the following disclaimer.
10 
11     * Redistributions in binary form must reproduce the above copyright notice,
12     * this list of conditions and the following disclaimer in the documentation
13     * and/or other materials provided with the distribution.
14 
15     * Neither the name of Intel Corporation nor the names of its contributors
16     * may be used to endorse or promote products derived from this software
17     * without specific prior written permission.
18 
19 THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
20 ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
21 WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
22 DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR
23 ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
24 (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
25 LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
26 ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
27 (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
28 SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
29 */
30 
31 /******************************************************************************/
32 //                     ALGORITHM DESCRIPTION
33 //                     ---------------------
34 //
35 //
36 //1. The method is based on the relationship of atan2(Y,X) to atan(|Y/X|)
37 //   as follows.
38 //                   /  sign(Y) atan(|Y/X|)                if X > 0
39 //       atan2(Y,X) =
40 //                   \  sign(Y)*pi  - sign(Y)*atan(|Y/X|)  if X < 0
41 //
42 //   Thus, atan2(Y,X) is of the form  atan2(Y,X) = PI + sgn*atan(|Y/X|)
43 //   where PI and sgn can be determined by the four possible combinations of
44 //   of the pair (sign(X),sign(Y)). We concentrate on the numerical method
45 //   for atan(|Y/X|).
46 //
47 //2. For |Y/X| < 2^(-64), atan(|Y/X|) ~=~ |Y/X|. Hence, atan2(Y,X) is  Y/X
48 //   if X > 0, and sign(Y)*pi otherwise.
49 //3. For |Y/X| >= 2^(65), atan(|Y/X|) ~=~ pi/2. Hence atan2(Y,X) is sign(Y)pi/2.
50 //4. For 2^(-64) <= |Y/X| < 2^(-5), atan(|Y/X|) is approximated by a polynomial
51 //   of the form  Z + Z*E*polynomial(E), where Z = |Y/X| and E = Z*Z.
52 //5. For |Y/X| > 2^(5), atan(|Y/X|) = pi/2 + atan(-|X/Y|), and atan(-|X/Y|) is
53 //   calculated using the polynomial in 4 above.
54 //6. For 2^(-5) <= |Y/X| <= 2^(5), we employ a table lookup method. First,
55 //   we obtain B = 2^k * 1.b1 b2 b3 b4 = 2^k * (1+k/16) that approximate
56 //   |Y/X| to approximately 5 significant bits. Hence, atan(|Y/X|) is
57 //
58 //      atan(|Y/X|)  =  atan(B) + atan(Z), where  Z = (|Y|-B|X|)/(|X|+B|Y|).
59 //                  ~=~   tau   + Z + Z*E*polynomial(E), where E = Z*Z.
60 //
61 //   B has the range from 2^(-6)*(1+14/16) to 2^5 = 2^(5)*(1+0/16), totally
62 //   163 possible values. These values are calculated beforehand and stored
63 //   in a table. The polynomial is the one used in 4.
64 //
65 // Special cases:
66 //  atan2(+-0, +0) = +-0
67 //  atan2(+-0, -0) = +-pi
68 //  atan2(+-0, x) = +-0, for x > 0, and +-pi, for x < 0
69 //  atan2(y, +-0) = +pi/2 for y > 0, and -pi/2 for y < 0
70 //  atan2(+-y, +INF) = +-0, for finite y > 0
71 //  atan2(+-y, -INF) = +-pi, for finite y > 0
72 //  atan2(+-INF, x) = +-pi/2, for finite x
73 //  atan2(+-INF, +INF) = +-pi/4
74 //  atan2(+-INF, -INF) = +-3*pi/4
75 //
76 /******************************************************************************/
77 
78 #include <private/bionic_asm.h>
79 # -- Begin  static_func
80         .text
81         .align __bionic_asm_align
82         .type static_func, @function
83 static_func:
84 ..B1.1:
85         call      ..L2
86 ..L2:
87         popl      %eax
88         lea       _GLOBAL_OFFSET_TABLE_+[. - ..L2](%eax), %eax
89         lea       static_const_table@GOTOFF(%eax), %eax
90         ret
91         .size   static_func,.-static_func
92 # -- End  static_func
93 
94 # -- Begin  atan2
95 ENTRY(atan2)
96 # parameter 1: 8 + %ebp
97 # parameter 2: 16 + %ebp
98 ..B2.1:
99 ..B2.2:
100         pushl     %ebp
101         movl      %esp, %ebp
102         subl      $120, %esp
103         movl      %ebx, 64(%esp)
104         call      static_func
105         movl      %eax, %ebx
106         movsd     136(%esp), %xmm1
107         movsd     128(%esp), %xmm0
108         pextrw    $3, %xmm0, %eax
109         movq      %xmm0, 8(%esp)
110         andl      $32752, %eax
111         movq      %xmm1, 16(%esp)
112         subl      $14448, %eax
113         cmpl      $3840, %eax
114         ja        .L_2TAG_PACKET_0.0.2
115         pextrw    $3, %xmm1, %eax
116         andl      $32752, %eax
117         subl      $14448, %eax
118         cmpl      $3840, %eax
119         ja        .L_2TAG_PACKET_1.0.2
120 .L_2TAG_PACKET_2.0.2:
121         unpcklpd  %xmm1, %xmm0
122         xorpd     %xmm5, %xmm5
123         xorpd     %xmm3, %xmm3
124         movl      $2048, %eax
125         pinsrw    $3, %eax, %xmm5
126         paddw     %xmm1, %xmm5
127         psrlq     $29, %xmm5
128         rcpss     %xmm5, %xmm3
129         xorpd     %xmm4, %xmm4
130         movl      $14336, %ecx
131         pinsrw    $3, %ecx, %xmm4
132         psllq     $29, %xmm3
133         paddw     %xmm4, %xmm3
134         mulsd     %xmm0, %xmm3
135         xorpd     %xmm2, %xmm2
136         xorpd     %xmm6, %xmm6
137         xorpd     %xmm7, %xmm7
138         movl      $32768, %eax
139         pinsrw    $2, %eax, %xmm6
140         movl      $32767, %ecx
141         pinsrw    $3, %ecx, %xmm7
142         paddd     %xmm6, %xmm3
143         andpd     %xmm7, %xmm3
144         movapd    %xmm3, %xmm5
145         pextrw    $3, %xmm3, %eax
146         movl      $16448, %ecx
147         pinsrw    $3, %ecx, %xmm2
148         minsd     %xmm2, %xmm3
149         movmskpd  %xmm0, %edx
150         psllq     $1, %xmm0
151         psrlq     $1, %xmm0
152         cmpsd     $2, %xmm2, %xmm5
153         psllq     $1, %xmm1
154         psrlq     $1, %xmm1
155         movapd    %xmm1, %xmm6
156         movapd    %xmm1, %xmm7
157         movapd    %xmm0, %xmm2
158         movl      $0, %ecx
159         pinsrw    $0, %ecx, %xmm6
160         subsd     %xmm6, %xmm7
161         movapd    %xmm0, %xmm4
162         mulsd     %xmm3, %xmm6
163         mulsd     %xmm3, %xmm4
164         mulsd     %xmm3, %xmm7
165         andpd     %xmm5, %xmm0
166         subsd     %xmm6, %xmm0
167         andpd     %xmm5, %xmm1
168         addsd     %xmm1, %xmm4
169         subsd     %xmm7, %xmm0
170         andl      $32752, %eax
171         subl      $16286, %eax
172         cmpl      $1121, %eax
173         ja        .L_2TAG_PACKET_3.0.2
174         divsd     %xmm4, %xmm0
175         pextrw    $3, %xmm3, %ecx
176         movsd     2944(%ebx), %xmm2
177         movsd     2960(%ebx), %xmm3
178         pextrw    $0, %xmm5, %eax
179         addl      %edx, %edx
180         movapd    2688(%ebx,%edx,8), %xmm6
181         movapd    2752(%ebx,%edx,8), %xmm1
182         subl      $16286, %ecx
183         notl      %eax
184         andl      $1, %eax
185         addl      %eax, %ecx
186         addl      %ecx, %ecx
187         movapd    (%ebx,%ecx,8), %xmm5
188         xorpd     %xmm1, %xmm5
189         addpd     %xmm6, %xmm5
190         movapd    %xmm5, %xmm6
191         unpckhpd  %xmm5, %xmm5
192         xorpd     %xmm0, %xmm1
193         movapd    %xmm1, %xmm4
194         mulsd     %xmm0, %xmm0
195         mulsd     %xmm0, %xmm2
196         addsd     %xmm0, %xmm3
197         addsd     %xmm6, %xmm1
198         subsd     %xmm1, %xmm6
199         addsd     %xmm4, %xmm6
200         addsd     2952(%ebx), %xmm2
201         mulsd     %xmm0, %xmm3
202         mulsd     %xmm0, %xmm4
203         addsd     %xmm5, %xmm6
204         mulsd     %xmm4, %xmm2
205         addsd     2968(%ebx), %xmm3
206         mulsd     %xmm3, %xmm2
207         addsd     %xmm6, %xmm2
208         addsd     %xmm2, %xmm1
209         movsd     %xmm1, (%esp)
210         fldl      (%esp)
211         jmp       .L_2TAG_PACKET_4.0.2
212 .L_2TAG_PACKET_3.0.2:
213         addl      $942, %eax
214         cmpl      $942, %eax
215         ja        .L_2TAG_PACKET_5.0.2
216         xorpd     %xmm4, %xmm4
217         movl      $16368, %ecx
218         pinsrw    $3, %ecx, %xmm4
219         divsd     %xmm1, %xmm4
220         addl      %edx, %edx
221         movapd    2752(%ebx,%edx,8), %xmm6
222         unpcklpd  %xmm3, %xmm3
223         xorpd     %xmm6, %xmm0
224         xorpd     %xmm6, %xmm2
225         xorpd     %xmm6, %xmm3
226         movapd    2816(%ebx,%edx,8), %xmm7
227         movsd     2944(%ebx), %xmm1
228         movsd     2960(%ebx), %xmm5
229         andpd     2880(%ebx,%edx,8), %xmm3
230         mulsd     %xmm4, %xmm2
231         mulsd     %xmm4, %xmm0
232         movapd    %xmm2, %xmm6
233         mulsd     %xmm2, %xmm2
234         mulsd     %xmm2, %xmm1
235         addsd     %xmm2, %xmm5
236         mulsd     %xmm2, %xmm6
237         addsd     2952(%ebx), %xmm1
238         mulsd     %xmm2, %xmm5
239         addsd     %xmm0, %xmm7
240         addpd     %xmm3, %xmm7
241         mulsd     %xmm6, %xmm1
242         addsd     2968(%ebx), %xmm5
243         mulsd     %xmm1, %xmm5
244         addsd     %xmm7, %xmm5
245         unpckhpd  %xmm7, %xmm7
246         addsd     %xmm7, %xmm5
247         movsd     %xmm5, (%esp)
248         fldl      (%esp)
249         jmp       .L_2TAG_PACKET_4.0.2
250 .L_2TAG_PACKET_5.0.2:
251         movsd     16(%esp), %xmm1
252         movsd     8(%esp), %xmm0
253         pextrw    $3, %xmm1, %eax
254         andl      $32752, %eax
255         pextrw    $3, %xmm0, %ecx
256         andl      $32752, %ecx
257         cmpl      %eax, %ecx
258         jg        .L_2TAG_PACKET_6.0.2
259         pextrw    $3, %xmm1, %ecx
260         cmpl      $32767, %ecx
261         jg        .L_2TAG_PACKET_7.0.2
262         divsd     %xmm1, %xmm0
263         movsd     %xmm0, (%esp)
264         fldl      (%esp)
265         jmp       .L_2TAG_PACKET_4.0.2
266 .L_2TAG_PACKET_7.0.2:
267         andpd     2672(%ebx), %xmm0
268         movsd     2640(%ebx), %xmm2
269         xorpd     %xmm2, %xmm0
270         movsd     %xmm0, (%esp)
271         fldl      (%esp)
272         jmp       .L_2TAG_PACKET_4.0.2
273 .L_2TAG_PACKET_6.0.2:
274         andpd     2672(%ebx), %xmm0
275         movsd     2624(%ebx), %xmm2
276         xorpd     %xmm2, %xmm0
277         movsd     %xmm0, (%esp)
278         fldl      (%esp)
279         jmp       .L_2TAG_PACKET_4.0.2
280 .L_2TAG_PACKET_0.0.2:
281 .L_2TAG_PACKET_1.0.2:
282         pextrw    $3, %xmm0, %ecx
283         andl      $32752, %ecx
284         pextrw    $3, %xmm1, %eax
285         andl      $32752, %eax
286         cmpl      $32752, %ecx
287         je        .L_2TAG_PACKET_8.0.2
288         cmpl      $32752, %eax
289         je        .L_2TAG_PACKET_9.0.2
290         movsd     2992(%ebx), %xmm3
291         movl      $1024, %edx
292         movsd     2976(%ebx), %xmm4
293         xorpd     %xmm6, %xmm6
294         movsd     3008(%ebx), %xmm7
295         cmpl      $0, %ecx
296         je        .L_2TAG_PACKET_10.0.2
297 .L_2TAG_PACKET_11.0.2:
298         cmpl      $0, %eax
299         je        .L_2TAG_PACKET_12.0.2
300 .L_2TAG_PACKET_13.0.2:
301         addl      %ecx, %edx
302         subl      %eax, %edx
303         cmpl      $2048, %edx
304         ja        .L_2TAG_PACKET_5.0.2
305         addl      $15344, %edx
306         pinsrw    $3, %edx, %xmm6
307         andpd     %xmm4, %xmm0
308         andpd     %xmm4, %xmm1
309         orpd      %xmm6, %xmm0
310         orpd      %xmm7, %xmm1
311         jmp       .L_2TAG_PACKET_2.0.2
312 .L_2TAG_PACKET_10.0.2:
313         subl      $880, %edx
314         mulsd     %xmm3, %xmm0
315         pextrw    $3, %xmm0, %ecx
316         andl      $32752, %ecx
317         cmpl      $0, %ecx
318         je        .L_2TAG_PACKET_14.0.2
319         jmp       .L_2TAG_PACKET_11.0.2
320 .L_2TAG_PACKET_12.0.2:
321         addl      $880, %edx
322         mulsd     %xmm3, %xmm1
323         pextrw    $3, %xmm1, %eax
324         andl      $32752, %eax
325         cmpl      $0, %eax
326         je        .L_2TAG_PACKET_15.0.2
327         jmp       .L_2TAG_PACKET_13.0.2
328 .L_2TAG_PACKET_8.0.2:
329         movd      %xmm0, %edx
330         movapd    %xmm0, %xmm2
331         psrlq     $32, %xmm2
332         movd      %xmm2, %ecx
333         andl      $1048575, %ecx
334         orl       %edx, %ecx
335         cmpl      $0, %ecx
336         jne       .L_2TAG_PACKET_16.0.2
337         psrlq     $63, %xmm0
338         psllq     $63, %xmm0
339         cmpl      $32752, %eax
340         jae       .L_2TAG_PACKET_17.0.2
341         movapd    2624(%ebx), %xmm5
342         pshufd    $238, %xmm5, %xmm4
343         addsd     %xmm4, %xmm5
344         orpd      %xmm5, %xmm0
345 .L_2TAG_PACKET_18.0.2:
346         movsd     %xmm0, (%esp)
347         fldl      (%esp)
348         jmp       .L_2TAG_PACKET_4.0.2
349 .L_2TAG_PACKET_16.0.2:
350         addsd     %xmm1, %xmm0
351         jmp       .L_2TAG_PACKET_18.0.2
352 .L_2TAG_PACKET_17.0.2:
353         movd      %xmm1, %eax
354         movapd    %xmm1, %xmm2
355         psrlq     $32, %xmm2
356         movd      %xmm2, %ecx
357         movl      $-2147483648, %edx
358         andl      %ecx, %edx
359         andl      $1048575, %ecx
360         orl       %eax, %ecx
361         cmpl      $0, %ecx
362         jne       .L_2TAG_PACKET_19.0.2
363         cmpl      $0, %edx
364         jne       .L_2TAG_PACKET_20.0.2
365         movapd    2656(%ebx), %xmm5
366         pshufd    $238, %xmm5, %xmm4
367         addsd     %xmm4, %xmm5
368         orpd      %xmm5, %xmm0
369         movsd     %xmm0, (%esp)
370         fldl      (%esp)
371         jmp       .L_2TAG_PACKET_4.0.2
372 .L_2TAG_PACKET_19.0.2:
373         movapd    %xmm1, %xmm0
374         movsd     %xmm0, (%esp)
375         fldl      (%esp)
376         jmp       .L_2TAG_PACKET_4.0.2
377 .L_2TAG_PACKET_20.0.2:
378         movapd    2656(%ebx), %xmm5
379         movapd    2624(%ebx), %xmm6
380         addpd     %xmm6, %xmm5
381         pshufd    $238, %xmm5, %xmm6
382         addpd     %xmm6, %xmm5
383         orpd      %xmm5, %xmm0
384         movsd     %xmm0, (%esp)
385         fldl      (%esp)
386         jmp       .L_2TAG_PACKET_4.0.2
387 .L_2TAG_PACKET_9.0.2:
388         movd      %xmm1, %eax
389         movapd    %xmm1, %xmm2
390         psrlq     $32, %xmm2
391         movd      %xmm2, %ecx
392         movl      $-2147483648, %edx
393         andl      %ecx, %edx
394         andl      $1048575, %ecx
395         orl       %eax, %ecx
396         cmpl      $0, %ecx
397         jne       .L_2TAG_PACKET_19.0.2
398         psrlq     $63, %xmm0
399         psllq     $63, %xmm0
400         cmpl      $0, %edx
401         jne       .L_2TAG_PACKET_21.0.2
402         movsd     %xmm0, (%esp)
403         fldl      (%esp)
404         jmp       .L_2TAG_PACKET_4.0.2
405 .L_2TAG_PACKET_21.0.2:
406         movapd    2640(%ebx), %xmm5
407         pshufd    $238, %xmm5, %xmm4
408         addsd     %xmm4, %xmm5
409         orpd      %xmm5, %xmm0
410         movsd     %xmm0, (%esp)
411         fldl      (%esp)
412         jmp       .L_2TAG_PACKET_4.0.2
413 .L_2TAG_PACKET_14.0.2:
414         pextrw    $3, %xmm1, %edx
415         andl      $32768, %edx
416         cmpl      $0, %edx
417         je        .L_2TAG_PACKET_22.0.2
418         movapd    2640(%ebx), %xmm5
419         pshufd    $238, %xmm5, %xmm4
420         addsd     %xmm4, %xmm5
421         comisd    %xmm0, %xmm1
422         orpd      %xmm5, %xmm0
423         jne       .L_2TAG_PACKET_23.0.2
424 .L_2TAG_PACKET_24.0.2:
425         movsd     %xmm0, (%esp)
426         fldl      (%esp)
427         jmp       .L_2TAG_PACKET_4.0.2
428 .L_2TAG_PACKET_23.0.2:
429         movsd     %xmm0, (%esp)
430         fldl      (%esp)
431         jmp       .L_2TAG_PACKET_4.0.2
432 .L_2TAG_PACKET_22.0.2:
433         comisd    %xmm0, %xmm1
434         jne       .L_2TAG_PACKET_23.0.2
435         je        .L_2TAG_PACKET_24.0.2
436 .L_2TAG_PACKET_15.0.2:
437         movapd    2624(%ebx), %xmm5
438         psrlq     $63, %xmm0
439         psllq     $63, %xmm0
440         pshufd    $238, %xmm5, %xmm4
441         addsd     %xmm4, %xmm5
442         orpd      %xmm5, %xmm0
443         movsd     %xmm0, (%esp)
444         fldl      (%esp)
445 .L_2TAG_PACKET_4.0.2:
446         movl      64(%esp), %ebx
447         movl      %ebp, %esp
448         popl      %ebp
449         ret
450 ..B2.3:
451 END(atan2)
452 # -- End  atan2
453 
454 # Start file scope ASM
455 ALIAS_SYMBOL(atan2l, atan2);
456 # End file scope ASM
457 	.section .rodata, "a"
458 	.align 16
459 	.align 16
460 static_const_table:
461 	.long	3390881280
462 	.long	1067318733
463 	.long	1411116779
464 	.long	1018950063
465 	.long	2985987840
466 	.long	1067384211
467 	.long	2088903695
468 	.long	1018086027
469 	.long	3148445184
470 	.long	1067449685
471 	.long	2044163806
472 	.long	1017271335
473 	.long	3667629184
474 	.long	1067515494
475 	.long	2353092775
476 	.long	1019967309
477 	.long	1546568832
478 	.long	1067580954
479 	.long	611991315
480 	.long	1017602584
481 	.long	3815996800
482 	.long	1067646404
483 	.long	466038598
484 	.long	1019686426
485 	.long	4050241920
486 	.long	1067711845
487 	.long	3265026328
488 	.long	1019626952
489 	.long	120454912
490 	.long	1067777277
491 	.long	1542207696
492 	.long	1020155608
493 	.long	2784639744
494 	.long	1067842697
495 	.long	3883834623
496 	.long	1018602870
497 	.long	1328010624
498 	.long	1067908107
499 	.long	1791097456
500 	.long	1019053126
501 	.long	2217794048
502 	.long	1067973505
503 	.long	551619938
504 	.long	1018494194
505 	.long	3333520000
506 	.long	1068038891
507 	.long	2390331823
508 	.long	1019033022
509 	.long	2557052032
510 	.long	1068104265
511 	.long	2423976108
512 	.long	1019728674
513 	.long	2067649536
514 	.long	1068169626
515 	.long	3757397745
516 	.long	1018672362
517 	.long	4047094784
518 	.long	1068234973
519 	.long	481613184
520 	.long	1019275104
521 	.long	2089853184
522 	.long	1068300307
523 	.long	1733914374
524 	.long	1020124677
525 	.long	2678003840
526 	.long	1068365626
527 	.long	1373600282
528 	.long	1013935474
529 	.long	3706496128
530 	.long	1068430930
531 	.long	1000610902
532 	.long	1019673285
533 	.long	3073179008
534 	.long	1068496219
535 	.long	1497143008
536 	.long	1019900342
537 	.long	2803716736
538 	.long	1068562846
539 	.long	1476677416
540 	.long	1019444094
541 	.long	3204984128
542 	.long	1068628077
543 	.long	1192335905
544 	.long	1018748628
545 	.long	831146624
546 	.long	1068693273
547 	.long	2733586224
548 	.long	1018823295
549 	.long	243029376
550 	.long	1068758431
551 	.long	950106081
552 	.long	1019046675
553 	.long	1735561920
554 	.long	1068823549
555 	.long	3546440856
556 	.long	1020104712
557 	.long	1339217792
558 	.long	1068888626
559 	.long	3028812387
560 	.long	1019818321
561 	.long	3706342144
562 	.long	1068953659
563 	.long	3814564029
564 	.long	1017763871
565 	.long	637726976
566 	.long	1069018648
567 	.long	3584007699
568 	.long	1017976868
569 	.long	1148779264
570 	.long	1069083589
571 	.long	2282532133
572 	.long	1019483954
573 	.long	1406131392
574 	.long	1069148481
575 	.long	1547359113
576 	.long	1019786342
577 	.long	1908875904
578 	.long	1069213322
579 	.long	1315508410
580 	.long	1020009473
581 	.long	3194947520
582 	.long	1069278110
583 	.long	3845393201
584 	.long	1015803761
585 	.long	1547487744
586 	.long	1069342844
587 	.long	3863107865
588 	.long	1019810104
589 	.long	1881061952
590 	.long	1069407521
591 	.long	4288343548
592 	.long	1019687581
593 	.long	563086336
594 	.long	1069472140
595 	.long	2582230241
596 	.long	1020099350
597 	.long	2594975552
598 	.long	1069536698
599 	.long	2306443764
600 	.long	1019667244
601 	.long	3438545024
602 	.long	1069606573
603 	.long	957455549
604 	.long	1015587735
605 	.long	4211357472
606 	.long	1069670906
607 	.long	2611778754
608 	.long	1017877214
609 	.long	3002835424
610 	.long	1069735101
611 	.long	235580458
612 	.long	1020211685
613 	.long	3905315424
614 	.long	1069799150
615 	.long	3630647617
616 	.long	1018736849
617 	.long	2849656576
618 	.long	1069863047
619 	.long	2412165062
620 	.long	1019693004
621 	.long	507429472
622 	.long	1069926785
623 	.long	1397750723
624 	.long	1018412717
625 	.long	2307470272
626 	.long	1069990356
627 	.long	1796470904
628 	.long	1019796181
629 	.long	1271814912
630 	.long	1070053755
631 	.long	189761565
632 	.long	1016149115
633 	.long	3800538144
634 	.long	1070116974
635 	.long	2524871582
636 	.long	1018263353
637 	.long	3916203552
638 	.long	1070180008
639 	.long	127848658
640 	.long	1017672664
641 	.long	457192032
642 	.long	1070242851
643 	.long	4020400938
644 	.long	1019823010
645 	.long	1385324704
646 	.long	1070305495
647 	.long	564511179
648 	.long	1016079094
649 	.long	2322869856
650 	.long	1070367935
651 	.long	2347103319
652 	.long	1018927760
653 	.long	3743438624
654 	.long	1070430165
655 	.long	877973862
656 	.long	1019638162
657 	.long	2392255552
658 	.long	1070492180
659 	.long	2432782267
660 	.long	1018872629
661 	.long	4180443328
662 	.long	1070553973
663 	.long	3102990015
664 	.long	1020093101
665 	.long	2547540832
666 	.long	1070636485
667 	.long	3877738253
668 	.long	1017300424
669 	.long	2735468912
670 	.long	1070697461
671 	.long	2446470256
672 	.long	1019235378
673 	.long	542633792
674 	.long	1070757943
675 	.long	583606328
676 	.long	1018624131
677 	.long	923265984
678 	.long	1070817911
679 	.long	1793926708
680 	.long	1019714161
681 	.long	918728448
682 	.long	1070877348
683 	.long	3726463586
684 	.long	1019433296
685 	.long	2572275008
686 	.long	1070936237
687 	.long	1845354238
688 	.long	1019459238
689 	.long	50974688
690 	.long	1070994564
691 	.long	983808064
692 	.long	1016685418
693 	.long	1105518320
694 	.long	1071052313
695 	.long	2357496692
696 	.long	1015139882
697 	.long	1264825328
698 	.long	1071109472
699 	.long	2244129354
700 	.long	1019046344
701 	.long	961157920
702 	.long	1071166029
703 	.long	3124185339
704 	.long	1018541776
705 	.long	1162701584
706 	.long	1071221973
707 	.long	1279780948
708 	.long	1019268918
709 	.long	3284935664
710 	.long	1071277294
711 	.long	2670033472
712 	.long	1019833744
713 	.long	497441888
714 	.long	1071331985
715 	.long	1032737410
716 	.long	1019795212
717 	.long	3377383904
718 	.long	1071386036
719 	.long	2356897182
720 	.long	1020205553
721 	.long	1126962000
722 	.long	1071439443
723 	.long	3723724586
724 	.long	1015212418
725 	.long	90291008
726 	.long	1071492199
727 	.long	4178672431
728 	.long	1020186971
729 	.long	190059536
730 	.long	1071595741
731 	.long	1763589807
732 	.long	1019162163
733 	.long	2497392840
734 	.long	1071670654
735 	.long	3036997041
736 	.long	1020204325
737 	.long	2616971944
738 	.long	1071719773
739 	.long	300151069
740 	.long	1017041957
741 	.long	2883518128
742 	.long	1071767563
743 	.long	2203981414
744 	.long	1019190108
745 	.long	1496354352
746 	.long	1071814030
747 	.long	332287966
748 	.long	1016846435
749 	.long	483276728
750 	.long	1071859184
751 	.long	653845024
752 	.long	1018830914
753 	.long	3097401072
754 	.long	1071903039
755 	.long	1514746408
756 	.long	1019278972
757 	.long	2737217248
758 	.long	1071945615
759 	.long	1358845067
760 	.long	1017268275
761 	.long	2072577560
762 	.long	1071986933
763 	.long	3041024735
764 	.long	1019929672
765 	.long	2266405656
766 	.long	1072027017
767 	.long	1271261130
768 	.long	1012925070
769 	.long	958652544
770 	.long	1072065894
771 	.long	2158017058
772 	.long	1019955372
773 	.long	3312993840
774 	.long	1072103591
775 	.long	765809169
776 	.long	1019114443
777 	.long	3177001304
778 	.long	1072140139
779 	.long	144180084
780 	.long	1019822186
781 	.long	3071642184
782 	.long	1072175568
783 	.long	4004602424
784 	.long	1019420740
785 	.long	4283953648
786 	.long	1072209909
787 	.long	1511950430
788 	.long	1020176966
789 	.long	1413754136
790 	.long	1072243195
791 	.long	856972295
792 	.long	1015129638
793 	.long	4073202944
794 	.long	1072306725
795 	.long	4068194804
796 	.long	1019714860
797 	.long	946117760
798 	.long	1072366415
799 	.long	694980733
800 	.long	1020150135
801 	.long	3980632032
802 	.long	1072422512
803 	.long	1313251280
804 	.long	1019948709
805 	.long	1468297112
806 	.long	1072475260
807 	.long	330111143
808 	.long	1019809198
809 	.long	3478063816
810 	.long	1072524887
811 	.long	2930067044
812 	.long	1017784081
813 	.long	1153979856
814 	.long	1072571613
815 	.long	2225786102
816 	.long	1017634481
817 	.long	2089828808
818 	.long	1072615641
819 	.long	474621367
820 	.long	1017043414
821 	.long	3531732632
822 	.long	1072657163
823 	.long	2276396220
824 	.long	1018757240
825 	.long	775214612
826 	.long	1072694803
827 	.long	3209744818
828 	.long	1019963015
829 	.long	662307284
830 	.long	1072713319
831 	.long	1381696763
832 	.long	1019763781
833 	.long	1192776652
834 	.long	1072730830
835 	.long	3017932994
836 	.long	1015179769
837 	.long	744202396
838 	.long	1072747407
839 	.long	2073854034
840 	.long	1019512292
841 	.long	8337908
842 	.long	1072763115
843 	.long	16004448
844 	.long	1019599514
845 	.long	3589868768
846 	.long	1072778013
847 	.long	1374369804
848 	.long	1018019237
849 	.long	121647320
850 	.long	1072792159
851 	.long	128481634
852 	.long	1018115438
853 	.long	2464923204
854 	.long	1072805601
855 	.long	1787331214
856 	.long	1016798022
857 	.long	4093304372
858 	.long	1072830562
859 	.long	3306868969
860 	.long	1019384078
861 	.long	1436891684
862 	.long	1072853231
863 	.long	676347266
864 	.long	1017302183
865 	.long	1104571840
866 	.long	1072873890
867 	.long	2870400285
868 	.long	1019938149
869 	.long	2037009832
870 	.long	1072892781
871 	.long	2956702105
872 	.long	1016472908
873 	.long	3139037960
874 	.long	1072910111
875 	.long	916057147
876 	.long	1018364335
877 	.long	1826698064
878 	.long	1072926058
879 	.long	2171961098
880 	.long	1019669816
881 	.long	1353941060
882 	.long	1072940774
883 	.long	1722928782
884 	.long	1019926215
885 	.long	1803191644
886 	.long	1072954391
887 	.long	1547878639
888 	.long	1020259262
889 	.long	1092591296
890 	.long	1072967024
891 	.long	3070107923
892 	.long	1018320401
893 	.long	2205372832
894 	.long	1072978772
895 	.long	787328196
896 	.long	1014621351
897 	.long	1291577100
898 	.long	1072989723
899 	.long	2964757301
900 	.long	1020242528
901 	.long	4234512804
902 	.long	1072999952
903 	.long	3136030038
904 	.long	1017522144
905 	.long	3248069132
906 	.long	1073009528
907 	.long	1506192355
908 	.long	1018050472
909 	.long	3932628500
910 	.long	1073018509
911 	.long	1045823554
912 	.long	1019946655
913 	.long	4195697848
914 	.long	1073026948
915 	.long	233443322
916 	.long	1018917447
917 	.long	2501811452
918 	.long	1073034892
919 	.long	901427976
920 	.long	1017333852
921 	.long	866379428
922 	.long	1073049455
923 	.long	2437443742
924 	.long	1019678792
925 	.long	1376865888
926 	.long	1073062480
927 	.long	3365790232
928 	.long	1014547152
929 	.long	3290094268
930 	.long	1073074195
931 	.long	3898947415
932 	.long	1018683566
933 	.long	354764884
934 	.long	1073084787
935 	.long	3854322404
936 	.long	1019662058
937 	.long	3332975496
938 	.long	1073094406
939 	.long	3171701655
940 	.long	1017830922
941 	.long	1141460088
942 	.long	1073103181
943 	.long	3946082701
944 	.long	1020032019
945 	.long	745761284
946 	.long	1073111216
947 	.long	1347210591
948 	.long	1019106121
949 	.long	1673304508
950 	.long	1073118600
951 	.long	1760606642
952 	.long	1017324577
953 	.long	983388240
954 	.long	1073125409
955 	.long	3740651204
956 	.long	1019514104
957 	.long	3895509100
958 	.long	1073131706
959 	.long	2409629983
960 	.long	1020069322
961 	.long	2128523668
962 	.long	1073137548
963 	.long	3045605368
964 	.long	1018579174
965 	.long	2075485692
966 	.long	1073142981
967 	.long	3720571789
968 	.long	1017557436
969 	.long	121855976
970 	.long	1073148047
971 	.long	2391744767
972 	.long	1020160645
973 	.long	4181733780
974 	.long	1073152780
975 	.long	995028816
976 	.long	1019681295
977 	.long	2887813280
978 	.long	1073157214
979 	.long	218733247
980 	.long	1020003509
981 	.long	2862180896
982 	.long	1073161375
983 	.long	2043806490
984 	.long	1018602288
985 	.long	3909375184
986 	.long	1073168973
987 	.long	1559903412
988 	.long	1020103444
989 	.long	3533966292
990 	.long	1073175738
991 	.long	734884149
992 	.long	1018462962
993 	.long	3815044608
994 	.long	1073181799
995 	.long	3630523428
996 	.long	1017250093
997 	.long	739639376
998 	.long	1073187261
999 	.long	4167476661
1000 	.long	1020008277
1001 	.long	1068309648
1002 	.long	1073192207
1003 	.long	2110061437
1004 	.long	1019295858
1005 	.long	2350566352
1006 	.long	1073196707
1007 	.long	582596516
1008 	.long	1018568821
1009 	.long	2529520024
1010 	.long	1073200819
1011 	.long	745552787
1012 	.long	1019053165
1013 	.long	1841667508
1014 	.long	1073204591
1015 	.long	3982568700
1016 	.long	1016503327
1017 	.long	2242261080
1018 	.long	1073208063
1019 	.long	3433582258
1020 	.long	1016196763
1021 	.long	715134328
1022 	.long	1073211270
1023 	.long	355901358
1024 	.long	1020087916
1025 	.long	2700735876
1026 	.long	1073214240
1027 	.long	3640957736
1028 	.long	1019780205
1029 	.long	141607580
1030 	.long	1073217000
1031 	.long	2488245051
1032 	.long	1020262395
1033 	.long	287934404
1034 	.long	1073219570
1035 	.long	2392691085
1036 	.long	1019883292
1037 	.long	2363373988
1038 	.long	1073221969
1039 	.long	4194561737
1040 	.long	1019237447
1041 	.long	3829340424
1042 	.long	1073224214
1043 	.long	429455526
1044 	.long	1019490975
1045 	.long	1988805928
1046 	.long	1073226320
1047 	.long	3029848706
1048 	.long	1018104889
1049 	.long	1647572320
1050 	.long	1073230161
1051 	.long	10289938
1052 	.long	1017394880
1053 	.long	3988000624
1054 	.long	1073233576
1055 	.long	1957559169
1056 	.long	1019434816
1057 	.long	4263843944
1058 	.long	1073236633
1059 	.long	204710264
1060 	.long	1019908761
1061 	.long	663197724
1062 	.long	1073239386
1063 	.long	1921757578
1064 	.long	1019778948
1065 	.long	3560800700
1066 	.long	1073241876
1067 	.long	3994348896
1068 	.long	1019230192
1069 	.long	2441785656
1070 	.long	1073244141
1071 	.long	871468611
1072 	.long	1014800505
1073 	.long	3277400272
1074 	.long	1073246209
1075 	.long	4092218139
1076 	.long	1020040842
1077 	.long	3951990120
1078 	.long	1073248105
1079 	.long	4276546478
1080 	.long	1019763677
1081 	.long	2737338540
1082 	.long	1073249850
1083 	.long	252776012
1084 	.long	1018794951
1085 	.long	1511361316
1086 	.long	1073251461
1087 	.long	3119653999
1088 	.long	1018514803
1089 	.long	3969162516
1090 	.long	1073252952
1091 	.long	1037069016
1092 	.long	1016792900
1093 	.long	413985240
1094 	.long	1073254338
1095 	.long	4110171432
1096 	.long	1020001345
1097 	.long	3681283576
1098 	.long	1073255627
1099 	.long	1463092818
1100 	.long	1020260354
1101 	.long	3146455488
1102 	.long	1073256831
1103 	.long	1031209123
1104 	.long	1016554799
1105 	.long	95214512
1106 	.long	1073257958
1107 	.long	1373808632
1108 	.long	1019493031
1109 	.long	4250240828
1110 	.long	1073259013
1111 	.long	3891047882
1112 	.long	1020108730
1113 	.long	1413754136
1114 	.long	1073291771
1115 	.long	856972295
1116 	.long	1016178214
1117 	.long	1413754136
1118 	.long	1073291771
1119 	.long	856972295
1120 	.long	1016178214
1121 	.long	1413754136
1122 	.long	1074340347
1123 	.long	856972295
1124 	.long	1017226790
1125 	.long	1413754136
1126 	.long	1072243195
1127 	.long	856972295
1128 	.long	1015129638
1129 	.long	0
1130 	.long	2147483648
1131 	.long	0
1132 	.long	2147483648
1133 	.long	0
1134 	.long	0
1135 	.long	0
1136 	.long	0
1137 	.long	0
1138 	.long	0
1139 	.long	0
1140 	.long	0
1141 	.long	1413754136
1142 	.long	1074340347
1143 	.long	856972295
1144 	.long	1017226790
1145 	.long	1413754136
1146 	.long	3221823995
1147 	.long	856972295
1148 	.long	3164710438
1149 	.long	0
1150 	.long	0
1151 	.long	0
1152 	.long	0
1153 	.long	0
1154 	.long	2147483648
1155 	.long	0
1156 	.long	2147483648
1157 	.long	0
1158 	.long	2147483648
1159 	.long	0
1160 	.long	2147483648
1161 	.long	0
1162 	.long	0
1163 	.long	0
1164 	.long	0
1165 	.long	0
1166 	.long	0
1167 	.long	0
1168 	.long	0
1169 	.long	0
1170 	.long	0
1171 	.long	0
1172 	.long	0
1173 	.long	856972295
1174 	.long	1017226790
1175 	.long	1413754136
1176 	.long	1074340347
1177 	.long	856972295
1178 	.long	3164710438
1179 	.long	1413754136
1180 	.long	3221823995
1181 	.long	0
1182 	.long	0
1183 	.long	4294967295
1184 	.long	4294967295
1185 	.long	0
1186 	.long	0
1187 	.long	4294967295
1188 	.long	4294967295
1189 	.long	4294967295
1190 	.long	4294967295
1191 	.long	0
1192 	.long	0
1193 	.long	4294967295
1194 	.long	4294967295
1195 	.long	0
1196 	.long	0
1197 	.long	2006262985
1198 	.long	1069310863
1199 	.long	2358449471
1200 	.long	3217342131
1201 	.long	3845454352
1202 	.long	1069952297
1203 	.long	2829679149
1204 	.long	1073771565
1205 	.long	4294967295
1206 	.long	2148532223
1207 	.long	0
1208 	.long	0
1209 	.long	0
1210 	.long	1130364928
1211 	.long	0
1212 	.long	0
1213 	.long	0
1214 	.long	1072693248
1215 	.long	0
1216 	.long	0
1217 	.type	static_const_table,@object
1218 	.size	static_const_table,3024
1219 	.data
1220 	.section .note.GNU-stack, "",@progbits
1221 # End
1222