1/*
2Copyright (c) 2014, Intel Corporation
3All rights reserved.
4
5Redistribution and use in source and binary forms, with or without
6modification, 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
19THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
20ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
21WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
22DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR
23ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
24(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
25LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
26ANY 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
28SOFTWARE, 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
83static_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
95ENTRY(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:
451END(atan2)
452# -- End  atan2
453
454# Start file scope ASM
455ALIAS_SYMBOL(atan2l, atan2);
456# End file scope ASM
457	.section .rodata, "a"
458	.align 16
459	.align 16
460static_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, ""
1221# End
1222