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// tanh(x)=(exp(x)-exp(-x))/(exp(x)+exp(-x))=(1-exp(-2*x))/(1+exp(-2*x))
36//
37// Let |x|=xH+xL (upper 26 bits, lower 27 bits)
38// log2(e) rounded to 26 bits (high part) plus a double precision low part is
39//         L2EH+L2EL (upper 26, lower 53 bits)
40//
41// Let xH*L2EH=k+f+r`, where (k+f)*2^8*2=int(xH*L2EH*2^9),
42//                             f=0.b1 b2 ... b8, k integer
43// 2^{-f} is approximated as Tn[f]+Dn[f]
44// Tn stores the high 53 bits, Dn stores (2^{-f}-Tn[f]) rounded to double precision
45//
46//  r=r`+xL*L2EH+|x|*L2EL, |r|<2^{-9}+2^{-14},
47//                      for |x| in [23/64,3*2^7)
48// e^{-2*|x|}=2^{-k-f}*2^{-r} ~ 2^{-k}*(Tn+Dn)*(1+p)=(T0+D0)*(1+p)
49//
50// For |x| in [2^{-4},2^5):
51//         2^{-r}-1 ~ p=c1*r+c2*r^2+..+c5*r^5
52//      Let R=1/(1+T0+p*T0), truncated to 35 significant bits
53//  R=1/(1+T0+D0+p*(T0+D0))*(1+eps), |eps|<2^{-33}
54//  1+T0+D0+p*(T0+D0)=KH+KL, where
55//       KH=(1+T0+c1*r*T0)_high (leading 17 bits)
56//       KL=T0_low+D0+(c1*r*T0)_low+c1*r*D0+(c2*r^2+..c5*r^5)*T0
57//  eps ~ (R*KH-1)+R*KL
58//  1/(1+T0+D0+p*(T0+D0)) ~ R-R*eps
59//  The result is approximated as (1-T0-D0-(T0+D0)*p)*(R-R*eps)
60//  1-T0-D0-(T0+D0)*p=-((KH-2)+KL)
61//    The result is formed as
62//    (KH-2)*R+(-(KH-2)*R*eps+(KL*R-KL*R*eps)), with the correct sign
63//                                                  set at the end
64//
65// For |x| in [2^{-64},2^{-4}):
66//  A Taylor series expansion is used  (x+p3*x^3+..+p13*x^{13})
67//
68// For |x|<2^{-64}:  x is returned
69//
70// For |x|>=2^32: return +/-1
71//
72// Special cases:
73//  tanh(NaN) = quiet NaN, and raise invalid exception
74//  tanh(INF) = that INF
75//  tanh(+/-0) = +/-0
76//
77/******************************************************************************/
78
79#include <private/bionic_asm.h>
80# -- Begin  static_func
81        .text
82        .align __bionic_asm_align
83        .type static_func, @function
84static_func:
85..B1.1:
86        call      ..L2
87..L2:
88        popl      %eax
89        lea       _GLOBAL_OFFSET_TABLE_+[. - ..L2](%eax), %eax
90        lea       static_const_table@GOTOFF(%eax), %eax
91        ret
92        .size   static_func,.-static_func
93# -- End  static_func
94
95# -- Begin  tanh
96ENTRY(tanh)
97# parameter 1: 8 + %ebp
98..B2.1:
99..B2.2:
100        pushl     %ebp
101        movl      %esp, %ebp
102        subl      $104, %esp
103        movl      %ebx, 40(%esp)
104        call      static_func
105        movl      %eax, %ebx
106        movsd     112(%esp), %xmm0
107        movsd     4256(%ebx), %xmm3
108        xorpd     %xmm4, %xmm4
109        movsd     4112(%ebx), %xmm1
110        movsd     4120(%ebx), %xmm2
111        movl      $32768, %eax
112        pinsrw    $3, %eax, %xmm4
113        movsd     4096(%ebx), %xmm6
114        pextrw    $3, %xmm0, %ecx
115        andpd     %xmm0, %xmm3
116        andnpd    %xmm0, %xmm4
117        pshufd    $68, %xmm4, %xmm5
118        movl      $32768, %edx
119        andl      %ecx, %edx
120        andl      $32767, %ecx
121        subl      $16304, %ecx
122        cmpl      $144, %ecx
123        jae       .L_2TAG_PACKET_0.0.2
124        subsd     %xmm3, %xmm4
125        mulsd     %xmm1, %xmm3
126        mulsd     %xmm5, %xmm2
127        cvtsd2si  %xmm3, %eax
128        movapd    %xmm3, %xmm7
129        addsd     %xmm6, %xmm3
130        mulsd     %xmm4, %xmm1
131        movsd     4264(%ebx), %xmm4
132        subsd     %xmm6, %xmm3
133        xorpd     %xmm0, %xmm0
134        addsd     %xmm1, %xmm2
135        subsd     %xmm3, %xmm7
136        movapd    4128(%ebx), %xmm6
137        addsd     %xmm7, %xmm2
138        movl      $255, %ecx
139        andl      %eax, %ecx
140        addl      %ecx, %ecx
141        movapd    (%ebx,%ecx,8), %xmm5
142        shrl      $4, %eax
143        andl      $65520, %eax
144        subl      $16368, %eax
145        negl      %eax
146        pinsrw    $3, %eax, %xmm0
147        movapd    4144(%ebx), %xmm1
148        pshufd    $68, %xmm0, %xmm0
149        mulpd     %xmm5, %xmm0
150        movsd     4160(%ebx), %xmm7
151        pshufd    $68, %xmm2, %xmm2
152        movapd    %xmm4, %xmm5
153        addsd     %xmm0, %xmm4
154        mulpd     %xmm2, %xmm6
155        mulsd     %xmm2, %xmm7
156        mulpd     %xmm2, %xmm2
157        addpd     %xmm6, %xmm1
158        mulsd     %xmm2, %xmm2
159        movsd     4264(%ebx), %xmm3
160        mulpd     %xmm2, %xmm1
161        pshufd    $78, %xmm1, %xmm6
162        addsd     %xmm6, %xmm1
163        movapd    %xmm1, %xmm6
164        addsd     %xmm7, %xmm1
165        mulsd     %xmm0, %xmm1
166        addsd     %xmm4, %xmm1
167        andpd     4224(%ebx), %xmm4
168        divsd     %xmm1, %xmm5
169        subsd     %xmm4, %xmm3
170        pshufd    $238, %xmm0, %xmm1
171        addsd     %xmm0, %xmm3
172        movapd    %xmm4, %xmm2
173        addsd     %xmm1, %xmm3
174        mulsd     %xmm7, %xmm1
175        mulsd     %xmm0, %xmm7
176        addsd     %xmm1, %xmm3
177        addsd     %xmm7, %xmm4
178        movsd     4240(%ebx), %xmm1
179        mulsd     %xmm0, %xmm6
180        andpd     4224(%ebx), %xmm4
181        addsd     %xmm6, %xmm3
182        movapd    %xmm4, %xmm6
183        subsd     %xmm4, %xmm2
184        addsd     %xmm7, %xmm2
185        movsd     4264(%ebx), %xmm7
186        andpd     %xmm1, %xmm5
187        addsd     %xmm2, %xmm3
188        mulsd     %xmm5, %xmm4
189        xorpd     %xmm2, %xmm2
190        mulsd     %xmm5, %xmm3
191        subsd     4272(%ebx), %xmm6
192        subsd     %xmm7, %xmm4
193        xorl      $32768, %edx
194        pinsrw    $3, %edx, %xmm2
195        addsd     %xmm3, %xmm4
196        mulsd     %xmm5, %xmm6
197        movapd    %xmm3, %xmm1
198        mulsd     %xmm4, %xmm3
199        movapd    %xmm6, %xmm0
200        mulsd     %xmm4, %xmm6
201        subsd     %xmm3, %xmm1
202        subsd     %xmm6, %xmm1
203        addsd     %xmm1, %xmm0
204        xorpd     %xmm2, %xmm0
205        jmp       .L_2TAG_PACKET_1.0.2
206.L_2TAG_PACKET_0.0.2:
207        addl      $960, %ecx
208        cmpl      $1104, %ecx
209        jae       .L_2TAG_PACKET_2.0.2
210        movapd    4176(%ebx), %xmm2
211        pshufd    $68, %xmm0, %xmm1
212        movapd    4192(%ebx), %xmm3
213        mulpd     %xmm1, %xmm1
214        movapd    4208(%ebx), %xmm4
215        mulpd     %xmm1, %xmm2
216        pshufd    $68, %xmm1, %xmm5
217        addpd     %xmm3, %xmm2
218        mulsd     %xmm5, %xmm5
219        mulpd     %xmm1, %xmm2
220        mulsd     %xmm5, %xmm5
221        addpd     %xmm4, %xmm2
222        mulpd     %xmm5, %xmm2
223        pshufd    $238, %xmm2, %xmm5
224        addsd     %xmm5, %xmm2
225        mulsd     %xmm0, %xmm2
226        addsd     %xmm2, %xmm0
227        jmp       .L_2TAG_PACKET_1.0.2
228.L_2TAG_PACKET_2.0.2:
229        addl      $15344, %ecx
230        cmpl      $16448, %ecx
231        jae       .L_2TAG_PACKET_3.0.2
232        cmpl      $16, %ecx
233        jb        .L_2TAG_PACKET_4.0.2
234        xorpd     %xmm2, %xmm2
235        movl      $17392, %eax
236        pinsrw    $3, %eax, %xmm2
237        mulsd     %xmm0, %xmm2
238        addsd     %xmm0, %xmm2
239        jmp       .L_2TAG_PACKET_1.0.2
240.L_2TAG_PACKET_4.0.2:
241        movapd    %xmm0, %xmm2
242        mulsd     %xmm2, %xmm2
243        jmp       .L_2TAG_PACKET_1.0.2
244.L_2TAG_PACKET_3.0.2:
245        cmpl      $32752, %ecx
246        jae       .L_2TAG_PACKET_5.0.2
247        xorpd     %xmm2, %xmm2
248        movl      $15344, %ecx
249        pinsrw    $3, %ecx, %xmm2
250        movapd    %xmm2, %xmm3
251        mulsd     %xmm2, %xmm2
252        addsd     %xmm3, %xmm2
253.L_2TAG_PACKET_6.0.2:
254        xorpd     %xmm0, %xmm0
255        orl       $16368, %edx
256        pinsrw    $3, %edx, %xmm0
257        jmp       .L_2TAG_PACKET_1.0.2
258.L_2TAG_PACKET_5.0.2:
259        movapd    %xmm0, %xmm2
260        movd      %xmm0, %eax
261        psrlq     $20, %xmm2
262        movd      %xmm2, %ecx
263        orl       %eax, %ecx
264        cmpl      $0, %ecx
265        je        .L_2TAG_PACKET_6.0.2
266        addsd     %xmm0, %xmm0
267        jmp       .L_2TAG_PACKET_1.0.2
268.L_2TAG_PACKET_1.0.2:
269        movsd     %xmm0, 24(%esp)
270        fldl      24(%esp)
271.L_2TAG_PACKET_7.0.2:
272        movl      40(%esp), %ebx
273        movl      %ebp, %esp
274        popl      %ebp
275        ret
276..B2.3:
277END(tanh)
278# -- End  tanh
279
280# Start file scope ASM
281ALIAS_SYMBOL(tanhl, tanh);
282# End file scope ASM
283	.section .rodata, "a"
284	.align 16
285	.align 16
286static_const_table:
287	.long	0
288	.long	1072693248
289	.long	0
290	.long	0
291	.long	1797923801
292	.long	1072687577
293	.long	1950547427
294	.long	1013229059
295	.long	730821105
296	.long	1072681922
297	.long	2523232743
298	.long	1012067188
299	.long	915592468
300	.long	1072676282
301	.long	352947894
302	.long	3161024371
303	.long	2174652632
304	.long	1072670657
305	.long	4087714590
306	.long	1014450259
307	.long	35929225
308	.long	1072665048
309	.long	2809788041
310	.long	3159436968
311	.long	2912730644
312	.long	1072659453
313	.long	3490067722
314	.long	3163405074
315	.long	2038973688
316	.long	1072653874
317	.long	892941374
318	.long	1016046459
319	.long	1533953344
320	.long	1072648310
321	.long	769171851
322	.long	1015665633
323	.long	1222472308
324	.long	1072642761
325	.long	1054357470
326	.long	3161021018
327	.long	929806999
328	.long	1072637227
329	.long	3205336643
330	.long	1015259557
331	.long	481706282
332	.long	1072631708
333	.long	1696079173
334	.long	3162710528
335	.long	3999357479
336	.long	1072626203
337	.long	2258941616
338	.long	1015924724
339	.long	2719515920
340	.long	1072620714
341	.long	2760332941
342	.long	1015137933
343	.long	764307441
344	.long	1072615240
345	.long	3021057420
346	.long	3163329523
347	.long	2256325230
348	.long	1072609780
349	.long	580117746
350	.long	1015317295
351	.long	2728693978
352	.long	1072604335
353	.long	396109971
354	.long	3163462691
355	.long	2009970496
356	.long	1072598905
357	.long	2159039665
358	.long	3162572948
359	.long	4224142467
360	.long	1072593489
361	.long	3389820386
362	.long	1015207202
363	.long	610758006
364	.long	1072588089
365	.long	1965209397
366	.long	3161866232
367	.long	3884662774
368	.long	1072582702
369	.long	2158611599
370	.long	1014210185
371	.long	991358482
372	.long	1072577331
373	.long	838715019
374	.long	3163157668
375	.long	351641897
376	.long	1072571974
377	.long	2172261526
378	.long	3163010599
379	.long	1796832535
380	.long	1072566631
381	.long	3176955716
382	.long	3160585513
383	.long	863738719
384	.long	1072561303
385	.long	1326992220
386	.long	3162613197
387	.long	1679558232
388	.long	1072555989
389	.long	2390342287
390	.long	3163333970
391	.long	4076975200
392	.long	1072550689
393	.long	2029000899
394	.long	1015208535
395	.long	3594158869
396	.long	1072545404
397	.long	2456521700
398	.long	3163256561
399	.long	64696965
400	.long	1072540134
401	.long	1768797490
402	.long	1015816960
403	.long	1912561781
404	.long	1072534877
405	.long	3147495102
406	.long	1015678253
407	.long	382305176
408	.long	1072529635
409	.long	2347622376
410	.long	3162578625
411	.long	3898795731
412	.long	1072524406
413	.long	1249994144
414	.long	1011869818
415	.long	3707479175
416	.long	1072519192
417	.long	3613079303
418	.long	1014164738
419	.long	3939148246
420	.long	1072513992
421	.long	3210352148
422	.long	1015274323
423	.long	135105010
424	.long	1072508807
425	.long	1906148728
426	.long	3163375739
427	.long	721996136
428	.long	1072503635
429	.long	563754734
430	.long	1015371318
431	.long	1242007932
432	.long	1072498477
433	.long	1132034716
434	.long	3163339831
435	.long	1532734324
436	.long	1072493333
437	.long	3094216535
438	.long	3163162857
439	.long	1432208378
440	.long	1072488203
441	.long	1401068914
442	.long	3162363963
443	.long	778901109
444	.long	1072483087
445	.long	2248183955
446	.long	3161268751
447	.long	3706687593
448	.long	1072477984
449	.long	3521726940
450	.long	1013253067
451	.long	1464976603
452	.long	1072472896
453	.long	3507292405
454	.long	3161977534
455	.long	2483480501
456	.long	1072467821
457	.long	1216371780
458	.long	1013034172
459	.long	2307442995
460	.long	1072462760
461	.long	3190117721
462	.long	3162404539
463	.long	777507147
464	.long	1072457713
465	.long	4282924205
466	.long	1015187533
467	.long	2029714210
468	.long	1072452679
469	.long	613660079
470	.long	1015099143
471	.long	1610600570
472	.long	1072447659
473	.long	3766732298
474	.long	1015760183
475	.long	3657065772
476	.long	1072442652
477	.long	399025623
478	.long	3162957078
479	.long	3716502172
480	.long	1072437659
481	.long	2303740125
482	.long	1014042725
483	.long	1631695677
484	.long	1072432680
485	.long	2717633076
486	.long	3162344026
487	.long	1540824585
488	.long	1072427714
489	.long	1064017011
490	.long	3163487690
491	.long	3287523847
492	.long	1072422761
493	.long	1625971539
494	.long	3157009955
495	.long	2420883922
496	.long	1072417822
497	.long	2049810052
498	.long	1014119888
499	.long	3080351519
500	.long	1072412896
501	.long	3379126788
502	.long	3157218001
503	.long	815859274
504	.long	1072407984
505	.long	240396590
506	.long	3163487443
507	.long	4062661092
508	.long	1072403084
509	.long	1422616006
510	.long	3163255318
511	.long	4076559943
512	.long	1072398198
513	.long	2119478331
514	.long	3160758351
515	.long	703710506
516	.long	1072393326
517	.long	1384660846
518	.long	1015195891
519	.long	2380618042
520	.long	1072388466
521	.long	3149557219
522	.long	3163320799
523	.long	364333489
524	.long	1072383620
525	.long	3923737744
526	.long	3161421373
527	.long	3092190715
528	.long	1072378786
529	.long	814012168
530	.long	3159523422
531	.long	1822067026
532	.long	1072373966
533	.long	1241994956
534	.long	1015340290
535	.long	697153126
536	.long	1072369159
537	.long	1283515429
538	.long	3163283189
539	.long	3861050111
540	.long	1072364364
541	.long	254893773
542	.long	3162813180
543	.long	2572866477
544	.long	1072359583
545	.long	878562433
546	.long	1015521741
547	.long	977020788
548	.long	1072354815
549	.long	3065100517
550	.long	1015541563
551	.long	3218338682
552	.long	1072350059
553	.long	3404164304
554	.long	3162477108
555	.long	557149882
556	.long	1072345317
557	.long	3672720709
558	.long	1014537265
559	.long	1434058175
560	.long	1072340587
561	.long	251133233
562	.long	1015085769
563	.long	1405169241
564	.long	1072335870
565	.long	2998539689
566	.long	3162830951
567	.long	321958744
568	.long	1072331166
569	.long	3401933767
570	.long	1015794558
571	.long	2331271250
572	.long	1072326474
573	.long	812057446
574	.long	1012207446
575	.long	2990417245
576	.long	1072321795
577	.long	3683467745
578	.long	3163369326
579	.long	2152073944
580	.long	1072317129
581	.long	1486860576
582	.long	3163203456
583	.long	3964284211
584	.long	1072312475
585	.long	2111583915
586	.long	1015427164
587	.long	3985553595
588	.long	1072307834
589	.long	4002146062
590	.long	1015834136
591	.long	2069751141
592	.long	1072303206
593	.long	1562170675
594	.long	3162724681
595	.long	2366108318
596	.long	1072298590
597	.long	2867985102
598	.long	3161762254
599	.long	434316067
600	.long	1072293987
601	.long	2028358766
602	.long	1013458122
603	.long	424392917
604	.long	1072289396
605	.long	2749202995
606	.long	3162838718
607	.long	2191782032
608	.long	1072284817
609	.long	2960257726
610	.long	1013742662
611	.long	1297350157
612	.long	1072280251
613	.long	1308022040
614	.long	3163412558
615	.long	1892288442
616	.long	1072275697
617	.long	2446255666
618	.long	3162600381
619	.long	3833209506
620	.long	1072271155
621	.long	2722920684
622	.long	1013754842
623	.long	2682146384
624	.long	1072266626
625	.long	2082178513
626	.long	3163363419
627	.long	2591453363
628	.long	1072262109
629	.long	2132396182
630	.long	3159074198
631	.long	3418903055
632	.long	1072257604
633	.long	2527457337
634	.long	3160820604
635	.long	727685349
636	.long	1072253112
637	.long	2038246809
638	.long	3162358742
639	.long	2966275557
640	.long	1072248631
641	.long	2176155324
642	.long	3159842759
643	.long	1403662306
644	.long	1072244163
645	.long	2788809599
646	.long	3161671007
647	.long	194117574
648	.long	1072239707
649	.long	777528612
650	.long	3163412089
651	.long	3492293770
652	.long	1072235262
653	.long	2248032210
654	.long	1015386826
655	.long	2568320822
656	.long	1072230830
657	.long	2732824428
658	.long	1014352915
659	.long	1577608921
660	.long	1072226410
661	.long	1875489510
662	.long	3162968394
663	.long	380978316
664	.long	1072222002
665	.long	854188970
666	.long	3160462686
667	.long	3134592888
668	.long	1072217605
669	.long	4232266862
670	.long	1015991134
671	.long	1110089947
672	.long	1072213221
673	.long	1451641639
674	.long	1015474673
675	.long	2759350287
676	.long	1072208848
677	.long	1148526634
678	.long	1015894933
679	.long	3649726105
680	.long	1072204487
681	.long	4085036346
682	.long	1015649474
683	.long	3643909174
684	.long	1072200138
685	.long	3537586109
686	.long	1014354647
687	.long	2604962541
688	.long	1072195801
689	.long	2614425274
690	.long	3163539192
691	.long	396319521
692	.long	1072191476
693	.long	4172420816
694	.long	3159074632
695	.long	1176749997
696	.long	1072187162
697	.long	2738998779
698	.long	3162035844
699	.long	515457527
700	.long	1072182860
701	.long	836709333
702	.long	1015651226
703	.long	2571947539
704	.long	1072178569
705	.long	3558159064
706	.long	3163376669
707	.long	2916157145
708	.long	1072174290
709	.long	219487565
710	.long	1015309367
711	.long	1413356050
712	.long	1072170023
713	.long	1651349291
714	.long	3162668166
715	.long	2224145553
716	.long	1072165767
717	.long	3482522030
718	.long	3161489169
719	.long	919555682
720	.long	1072161523
721	.long	3121969534
722	.long	1012948226
723	.long	1660913392
724	.long	1072157290
725	.long	4218599604
726	.long	1015135707
727	.long	19972402
728	.long	1072153069
729	.long	3507899862
730	.long	1016009292
731	.long	158781403
732	.long	1072148859
733	.long	2221464712
734	.long	3163286453
735	.long	1944781191
736	.long	1072144660
737	.long	3993278767
738	.long	3161724279
739	.long	950803702
740	.long	1072140473
741	.long	1655364926
742	.long	1015237032
743	.long	1339972927
744	.long	1072136297
745	.long	167908909
746	.long	1015572152
747	.long	2980802057
748	.long	1072132132
749	.long	378619896
750	.long	1015773303
751	.long	1447192521
752	.long	1072127979
753	.long	1462857171
754	.long	3162514521
755	.long	903334909
756	.long	1072123837
757	.long	1636462108
758	.long	1015039997
759	.long	1218806132
760	.long	1072119706
761	.long	1818613052
762	.long	3162548441
763	.long	2263535754
764	.long	1072115586
765	.long	752233586
766	.long	3162639008
767	.long	3907805044
768	.long	1072111477
769	.long	2257091225
770	.long	3161550407
771	.long	1727278727
772	.long	1072107380
773	.long	3562710623
774	.long	1011471940
775	.long	4182873220
776	.long	1072103293
777	.long	629542646
778	.long	3161996303
779	.long	2555984613
780	.long	1072099218
781	.long	2652555442
782	.long	3162552692
783	.long	1013258799
784	.long	1072095154
785	.long	1748797611
786	.long	3160129082
787	.long	3721688645
788	.long	1072091100
789	.long	3069276937
790	.long	1015839401
791	.long	1963711167
792	.long	1072087058
793	.long	1744767757
794	.long	3160574294
795	.long	4201977662
796	.long	1072083026
797	.long	748330254
798	.long	1013594357
799	.long	1719614413
800	.long	1072079006
801	.long	330458198
802	.long	3163282740
803	.long	2979960120
804	.long	1072074996
805	.long	2599109725
806	.long	1014498493
807	.long	3561793907
808	.long	1072070997
809	.long	1157054053
810	.long	1011890350
811	.long	3339203574
812	.long	1072067009
813	.long	1483497780
814	.long	3162408754
815	.long	2186617381
816	.long	1072063032
817	.long	2270764084
818	.long	3163272713
819	.long	4273770423
820	.long	1072059065
821	.long	3383180809
822	.long	3163218901
823	.long	885834528
824	.long	1072055110
825	.long	1973258547
826	.long	3162261564
827	.long	488188413
828	.long	1072051165
829	.long	3199821029
830	.long	1015564048
831	.long	2956612997
832	.long	1072047230
833	.long	2118169751
834	.long	3162735553
835	.long	3872257780
836	.long	1072043306
837	.long	1253592103
838	.long	1015958334
839	.long	3111574537
840	.long	1072039393
841	.long	2606161479
842	.long	3162759746
843	.long	551349105
844	.long	1072035491
845	.long	3821916050
846	.long	3162106589
847	.long	363667784
848	.long	1072031599
849	.long	813753950
850	.long	1015785209
851	.long	2425981843
852	.long	1072027717
853	.long	2830390851
854	.long	3163346599
855	.long	2321106615
856	.long	1072023846
857	.long	2171176610
858	.long	1009535771
859	.long	4222122499
860	.long	1072019985
861	.long	1277378074
862	.long	3163256737
863	.long	3712504873
864	.long	1072016135
865	.long	88491949
866	.long	1015427660
867	.long	671025100
868	.long	1072012296
869	.long	3832014351
870	.long	3163022030
871	.long	3566716925
872	.long	1072008466
873	.long	1536826856
874	.long	1014142433
875	.long	3689071823
876	.long	1072004647
877	.long	2321004996
878	.long	3162552716
879	.long	917841882
880	.long	1072000839
881	.long	18715565
882	.long	1015659308
883	.long	3723038930
884	.long	1071997040
885	.long	378465264
886	.long	3162569582
887	.long	3395129871
888	.long	1071993252
889	.long	4025345435
890	.long	3162335388
891	.long	4109806887
892	.long	1071989474
893	.long	422403966
894	.long	1014469229
895	.long	1453150082
896	.long	1071985707
897	.long	498154669
898	.long	3161488062
899	.long	3896463087
900	.long	1071981949
901	.long	1139797873
902	.long	3161233805
903	.long	2731501122
904	.long	1071978202
905	.long	1774031855
906	.long	3162470021
907	.long	2135241198
908	.long	1071974465
909	.long	1236747871
910	.long	1013589147
911	.long	1990012071
912	.long	1071970738
913	.long	3529070563
914	.long	3162813193
915	.long	2178460671
916	.long	1071967021
917	.long	777878098
918	.long	3162842493
919	.long	2583551245
920	.long	1071963314
921	.long	3161094195
922	.long	1015606491
923	.long	3088564500
924	.long	1071959617
925	.long	1762311517
926	.long	1015045673
927	.long	3577096743
928	.long	1071955930
929	.long	2951496418
930	.long	1013793687
931	.long	3933059031
932	.long	1071952253
933	.long	2133366768
934	.long	3161531832
935	.long	4040676318
936	.long	1071948586
937	.long	4090609238
938	.long	1015663458
939	.long	3784486610
940	.long	1071944929
941	.long	1581883040
942	.long	3161698953
943	.long	3049340112
944	.long	1071941282
945	.long	3062915824
946	.long	1013170595
947	.long	1720398391
948	.long	1071937645
949	.long	3980678963
950	.long	3163300080
951	.long	3978100823
952	.long	1071934017
953	.long	3513027190
954	.long	1015845963
955	.long	1118294578
956	.long	1071930400
957	.long	2197495694
958	.long	3159909401
959	.long	1617004845
960	.long	1071926792
961	.long	82804944
962	.long	1010342778
963	.long	1065662932
964	.long	1071923194
965	.long	2533670915
966	.long	1014530238
967	.long	3645941911
968	.long	1071919605
969	.long	3814685081
970	.long	3161573341
971	.long	654919306
972	.long	1071916027
973	.long	3232961757
974	.long	3163047469
975	.long	569847338
976	.long	1071912458
977	.long	472945272
978	.long	3159290729
979	.long	3278348324
980	.long	1071908898
981	.long	3069497416
982	.long	1014750712
983	.long	78413852
984	.long	1071905349
985	.long	4183226867
986	.long	3163017251
987	.long	3743175029
988	.long	1071901808
989	.long	2072812490
990	.long	3162175075
991	.long	1276261410
992	.long	1071898278
993	.long	300981948
994	.long	1014684169
995	.long	1156440435
996	.long	1071894757
997	.long	2351451249
998	.long	1013967056
999	.long	3272845541
1000	.long	1071891245
1001	.long	928852419
1002	.long	3163488248
1003	.long	3219942644
1004	.long	1071887743
1005	.long	3798990616
1006	.long	1015368806
1007	.long	887463927
1008	.long	1071884251
1009	.long	3596744163
1010	.long	3160794166
1011	.long	460407023
1012	.long	1071880768
1013	.long	4237175092
1014	.long	3163138469
1015	.long	1829099622
1016	.long	1071877294
1017	.long	1016661181
1018	.long	3163461005
1019	.long	589198666
1020	.long	1071873830
1021	.long	2664346172
1022	.long	3163157962
1023	.long	926591435
1024	.long	1071870375
1025	.long	3208833762
1026	.long	3162913514
1027	.long	2732492859
1028	.long	1071866929
1029	.long	2691479646
1030	.long	3162255684
1031	.long	1603444721
1032	.long	1071863493
1033	.long	1548633640
1034	.long	3162201326
1035	.long	1726216749
1036	.long	1071860066
1037	.long	2466808228
1038	.long	3161676405
1039	.long	2992903935
1040	.long	1071856648
1041	.long	2218154406
1042	.long	1015228193
1043	.long	1000925746
1044	.long	1071853240
1045	.long	1018491672
1046	.long	3163309544
1047	.long	4232894513
1048	.long	1071849840
1049	.long	2383938684
1050	.long	1014668519
1051	.long	3991843581
1052	.long	1071846450
1053	.long	4092853457
1054	.long	1014585763
1055	.long	171030293
1056	.long	1071843070
1057	.long	3526460132
1058	.long	1014428778
1059	.long	1253935211
1060	.long	1071839698
1061	.long	1395382931
1062	.long	3159702613
1063	.long	2839424854
1064	.long	1071836335
1065	.long	1171596163
1066	.long	1013041679
1067	.long	526652809
1068	.long	1071832982
1069	.long	4223459736
1070	.long	1015879375
1071	.long	2799960843
1072	.long	1071829637
1073	.long	1423655381
1074	.long	1015022151
1075	.long	964107055
1076	.long	1071826302
1077	.long	2800439588
1078	.long	3162833221
1079	.long	3504003472
1080	.long	1071822975
1081	.long	3594001060
1082	.long	3157330652
1083	.long	1724976915
1084	.long	1071819658
1085	.long	420909223
1086	.long	3163117379
1087	.long	4112506593
1088	.long	1071816349
1089	.long	2947355221
1090	.long	1014371048
1091	.long	1972484976
1092	.long	1071813050
1093	.long	675290301
1094	.long	3161640050
1095	.long	3790955393
1096	.long	1071809759
1097	.long	2352942462
1098	.long	3163180090
1099	.long	874372905
1100	.long	1071806478
1101	.long	100263788
1102	.long	1015940732
1103	.long	1709341917
1104	.long	1071803205
1105	.long	2571168217
1106	.long	1014152499
1107	.long	1897844341
1108	.long	1071799941
1109	.long	1254300460
1110	.long	1015275938
1111	.long	1337108031
1112	.long	1071796686
1113	.long	3203724452
1114	.long	1014677845
1115	.long	4219606026
1116	.long	1071793439
1117	.long	2434574742
1118	.long	1014681548
1119	.long	1853186616
1120	.long	1071790202
1121	.long	3066496371
1122	.long	1015656574
1123	.long	2725843665
1124	.long	1071786973
1125	.long	1433917087
1126	.long	1014838523
1127	.long	2440944790
1128	.long	1071783753
1129	.long	2492769774
1130	.long	1014147454
1131	.long	897099801
1132	.long	1071780542
1133	.long	754756297
1134	.long	1015241005
1135	.long	2288159958
1136	.long	1071777339
1137	.long	2169144469
1138	.long	1014876021
1139	.long	2218315341
1140	.long	1071774145
1141	.long	2694295388
1142	.long	3163288868
1143	.long	586995997
1144	.long	1071770960
1145	.long	41662348
1146	.long	3162627992
1147	.long	1588871207
1148	.long	1071767783
1149	.long	143439582
1150	.long	3162963416
1151	.long	828946858
1152	.long	1071764615
1153	.long	10642492
1154	.long	1015939438
1155	.long	2502433899
1156	.long	1071761455
1157	.long	2148595913
1158	.long	1015023991
1159	.long	2214878420
1160	.long	1071758304
1161	.long	892270087
1162	.long	3163116422
1163	.long	4162030108
1164	.long	1071755161
1165	.long	2763428480
1166	.long	1015529349
1167	.long	3949972341
1168	.long	1071752027
1169	.long	2068408548
1170	.long	1014913868
1171	.long	1480023343
1172	.long	1071748902
1173	.long	2247196168
1174	.long	1015327453
1175	.long	948735466
1176	.long	1071745785
1177	.long	3516338028
1178	.long	3162574883
1179	.long	2257959872
1180	.long	1071742676
1181	.long	3802946148
1182	.long	1012964927
1183	.long	1014845819
1184	.long	1071739576
1185	.long	3117910646
1186	.long	3161559105
1187	.long	1416741826
1188	.long	1071736484
1189	.long	2196380210
1190	.long	1011413563
1191	.long	3366293073
1192	.long	1071733400
1193	.long	3119426314
1194	.long	1014120554
1195	.long	2471440686
1196	.long	1071730325
1197	.long	968836267
1198	.long	3162214888
1199	.long	2930322912
1200	.long	1071727258
1201	.long	2599499422
1202	.long	3162714047
1203	.long	351405227
1204	.long	1071724200
1205	.long	3125337328
1206	.long	3159822479
1207	.long	3228316108
1208	.long	1071721149
1209	.long	3010241991
1210	.long	3158422804
1211	.long	2875075254
1212	.long	1071718107
1213	.long	4144233330
1214	.long	3163333716
1215	.long	3490863953
1216	.long	1071715073
1217	.long	960797498
1218	.long	3162948880
1219	.long	685187902
1220	.long	1071712048
1221	.long	378731989
1222	.long	1014843115
1223	.long	2952712987
1224	.long	1071709030
1225	.long	3293494651
1226	.long	3160120301
1227	.long	1608493509
1228	.long	1071706021
1229	.long	3159622171
1230	.long	3162807737
1231	.long	852742562
1232	.long	1071703020
1233	.long	667253586
1234	.long	1009793559
1235	.long	590962156
1236	.long	1071700027
1237	.long	3829346666
1238	.long	3163275597
1239	.long	728909815
1240	.long	1071697042
1241	.long	383930225
1242	.long	1015029468
1243	.long	1172597893
1244	.long	1071694065
1245	.long	114433263
1246	.long	1015347593
1247	.long	1828292879
1248	.long	1071691096
1249	.long	1255956747
1250	.long	1015588398
1251	.long	2602514713
1252	.long	1071688135
1253	.long	2268929336
1254	.long	1014354284
1255	.long	3402036099
1256	.long	1071685182
1257	.long	405889334
1258	.long	1015105656
1259	.long	4133881824
1260	.long	1071682237
1261	.long	2148155345
1262	.long	3162931299
1263	.long	410360776
1264	.long	1071679301
1265	.long	1269990655
1266	.long	1011975870
1267	.long	728934454
1268	.long	1071676372
1269	.long	1413842688
1270	.long	1014178612
1271	.long	702412510
1272	.long	1071673451
1273	.long	3803266087
1274	.long	3162280415
1275	.long	238821257
1276	.long	1071670538
1277	.long	1469694871
1278	.long	3162884987
1279	.long	3541402996
1280	.long	1071667632
1281	.long	2759177317
1282	.long	1014854626
1283	.long	1928746161
1284	.long	1071664735
1285	.long	983617676
1286	.long	1014285177
1287	.long	3899555717
1288	.long	1071661845
1289	.long	427280750
1290	.long	3162546972
1291	.long	772914124
1292	.long	1071658964
1293	.long	4004372762
1294	.long	1012230161
1295	.long	1048019041
1296	.long	1071656090
1297	.long	1398474845
1298	.long	3160510595
1299	.long	339411585
1300	.long	1071653224
1301	.long	264588982
1302	.long	3161636657
1303	.long	2851812149
1304	.long	1071650365
1305	.long	2595802551
1306	.long	1015767337
1307	.long	4200250559
1308	.long	1071647514
1309	.long	2808127345
1310	.long	3161781938
1311	.long	0
1312	.long	1127743488
1313	.long	0
1314	.long	3275227136
1315	.long	1610612736
1316	.long	1082594631
1317	.long	4166901572
1318	.long	1055174155
1319	.long	3884607281
1320	.long	3168131199
1321	.long	3607404735
1322	.long	3190582024
1323	.long	1874480759
1324	.long	1032041131
1325	.long	4286760334
1326	.long	1053736893
1327	.long	4277811695
1328	.long	3211144770
1329	.long	0
1330	.long	0
1331	.long	236289503
1332	.long	1064135997
1333	.long	463583772
1334	.long	3215696314
1335	.long	1441186365
1336	.long	3212977891
1337	.long	286331153
1338	.long	1069617425
1339	.long	2284589306
1340	.long	1066820852
1341	.long	1431655765
1342	.long	3218429269
1343	.long	0
1344	.long	4294967280
1345	.long	0
1346	.long	4294967280
1347	.long	4294705152
1348	.long	4294967295
1349	.long	4294705152
1350	.long	4294967295
1351	.long	4160749568
1352	.long	2147483647
1353	.long	0
1354	.long	1072693248
1355	.long	0
1356	.long	1073741824
1357	.type	static_const_table,@object
1358	.size	static_const_table,4280
1359	.data
1360	.section .note.GNU-stack, ""
1361# End
1362