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