ronnie
2022-10-14 1504bb53e29d3d46222c0b3ea994fc494b48e153
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
/*
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
//                     ---------------------
//
//
//1. The method is based on the relationship of atan2(Y,X) to atan(|Y/X|)
//   as follows.
//                   /  sign(Y) atan(|Y/X|)                if X > 0
//       atan2(Y,X) =
//                   \  sign(Y)*pi  - sign(Y)*atan(|Y/X|)  if X < 0
//
//   Thus, atan2(Y,X) is of the form  atan2(Y,X) = PI + sgn*atan(|Y/X|)
//   where PI and sgn can be determined by the four possible combinations of
//   of the pair (sign(X),sign(Y)). We concentrate on the numerical method
//   for atan(|Y/X|).
//
//2. For |Y/X| < 2^(-64), atan(|Y/X|) ~=~ |Y/X|. Hence, atan2(Y,X) is  Y/X
//   if X > 0, and sign(Y)*pi otherwise.
//3. For |Y/X| >= 2^(65), atan(|Y/X|) ~=~ pi/2. Hence atan2(Y,X) is sign(Y)pi/2.
//4. For 2^(-64) <= |Y/X| < 2^(-5), atan(|Y/X|) is approximated by a polynomial
//   of the form  Z + Z*E*polynomial(E), where Z = |Y/X| and E = Z*Z.
//5. For |Y/X| > 2^(5), atan(|Y/X|) = pi/2 + atan(-|X/Y|), and atan(-|X/Y|) is
//   calculated using the polynomial in 4 above.
//6. For 2^(-5) <= |Y/X| <= 2^(5), we employ a table lookup method. First,
//   we obtain B = 2^k * 1.b1 b2 b3 b4 = 2^k * (1+k/16) that approximate
//   |Y/X| to approximately 5 significant bits. Hence, atan(|Y/X|) is
//
//      atan(|Y/X|)  =  atan(B) + atan(Z), where  Z = (|Y|-B|X|)/(|X|+B|Y|).
//                  ~=~   tau   + Z + Z*E*polynomial(E), where E = Z*Z.
//
//   B has the range from 2^(-6)*(1+14/16) to 2^5 = 2^(5)*(1+0/16), totally
//   163 possible values. These values are calculated beforehand and stored
//   in a table. The polynomial is the one used in 4.
//
// Special cases:
//  atan2(+-0, +0) = +-0
//  atan2(+-0, -0) = +-pi
//  atan2(+-0, x) = +-0, for x > 0, and +-pi, for x < 0
//  atan2(y, +-0) = +pi/2 for y > 0, and -pi/2 for y < 0
//  atan2(+-y, +INF) = +-0, for finite y > 0
//  atan2(+-y, -INF) = +-pi, for finite y > 0
//  atan2(+-INF, x) = +-pi/2, for finite x
//  atan2(+-INF, +INF) = +-pi/4
//  atan2(+-INF, -INF) = +-3*pi/4
//
/******************************************************************************/
 
#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  atan2
ENTRY(atan2)
# parameter 1: 8 + %ebp
# parameter 2: 16 + %ebp
..B2.1:
..B2.2:
        pushl     %ebp
        movl      %esp, %ebp
        subl      $120, %esp
        movl      %ebx, 64(%esp)
        call      static_func
        movl      %eax, %ebx
        movsd     136(%esp), %xmm1
        movsd     128(%esp), %xmm0
        pextrw    $3, %xmm0, %eax
        movq      %xmm0, 8(%esp)
        andl      $32752, %eax
        movq      %xmm1, 16(%esp)
        subl      $14448, %eax
        cmpl      $3840, %eax
        ja        .L_2TAG_PACKET_0.0.2
        pextrw    $3, %xmm1, %eax
        andl      $32752, %eax
        subl      $14448, %eax
        cmpl      $3840, %eax
        ja        .L_2TAG_PACKET_1.0.2
.L_2TAG_PACKET_2.0.2:
        unpcklpd  %xmm1, %xmm0
        xorpd     %xmm5, %xmm5
        xorpd     %xmm3, %xmm3
        movl      $2048, %eax
        pinsrw    $3, %eax, %xmm5
        paddw     %xmm1, %xmm5
        psrlq     $29, %xmm5
        rcpss     %xmm5, %xmm3
        xorpd     %xmm4, %xmm4
        movl      $14336, %ecx
        pinsrw    $3, %ecx, %xmm4
        psllq     $29, %xmm3
        paddw     %xmm4, %xmm3
        mulsd     %xmm0, %xmm3
        xorpd     %xmm2, %xmm2
        xorpd     %xmm6, %xmm6
        xorpd     %xmm7, %xmm7
        movl      $32768, %eax
        pinsrw    $2, %eax, %xmm6
        movl      $32767, %ecx
        pinsrw    $3, %ecx, %xmm7
        paddd     %xmm6, %xmm3
        andpd     %xmm7, %xmm3
        movapd    %xmm3, %xmm5
        pextrw    $3, %xmm3, %eax
        movl      $16448, %ecx
        pinsrw    $3, %ecx, %xmm2
        minsd     %xmm2, %xmm3
        movmskpd  %xmm0, %edx
        psllq     $1, %xmm0
        psrlq     $1, %xmm0
        cmpsd     $2, %xmm2, %xmm5
        psllq     $1, %xmm1
        psrlq     $1, %xmm1
        movapd    %xmm1, %xmm6
        movapd    %xmm1, %xmm7
        movapd    %xmm0, %xmm2
        movl      $0, %ecx
        pinsrw    $0, %ecx, %xmm6
        subsd     %xmm6, %xmm7
        movapd    %xmm0, %xmm4
        mulsd     %xmm3, %xmm6
        mulsd     %xmm3, %xmm4
        mulsd     %xmm3, %xmm7
        andpd     %xmm5, %xmm0
        subsd     %xmm6, %xmm0
        andpd     %xmm5, %xmm1
        addsd     %xmm1, %xmm4
        subsd     %xmm7, %xmm0
        andl      $32752, %eax
        subl      $16286, %eax
        cmpl      $1121, %eax
        ja        .L_2TAG_PACKET_3.0.2
        divsd     %xmm4, %xmm0
        pextrw    $3, %xmm3, %ecx
        movsd     2944(%ebx), %xmm2
        movsd     2960(%ebx), %xmm3
        pextrw    $0, %xmm5, %eax
        addl      %edx, %edx
        movapd    2688(%ebx,%edx,8), %xmm6
        movapd    2752(%ebx,%edx,8), %xmm1
        subl      $16286, %ecx
        notl      %eax
        andl      $1, %eax
        addl      %eax, %ecx
        addl      %ecx, %ecx
        movapd    (%ebx,%ecx,8), %xmm5
        xorpd     %xmm1, %xmm5
        addpd     %xmm6, %xmm5
        movapd    %xmm5, %xmm6
        unpckhpd  %xmm5, %xmm5
        xorpd     %xmm0, %xmm1
        movapd    %xmm1, %xmm4
        mulsd     %xmm0, %xmm0
        mulsd     %xmm0, %xmm2
        addsd     %xmm0, %xmm3
        addsd     %xmm6, %xmm1
        subsd     %xmm1, %xmm6
        addsd     %xmm4, %xmm6
        addsd     2952(%ebx), %xmm2
        mulsd     %xmm0, %xmm3
        mulsd     %xmm0, %xmm4
        addsd     %xmm5, %xmm6
        mulsd     %xmm4, %xmm2
        addsd     2968(%ebx), %xmm3
        mulsd     %xmm3, %xmm2
        addsd     %xmm6, %xmm2
        addsd     %xmm2, %xmm1
        movsd     %xmm1, (%esp)
        fldl      (%esp)
        jmp       .L_2TAG_PACKET_4.0.2
.L_2TAG_PACKET_3.0.2:
        addl      $942, %eax
        cmpl      $942, %eax
        ja        .L_2TAG_PACKET_5.0.2
        xorpd     %xmm4, %xmm4
        movl      $16368, %ecx
        pinsrw    $3, %ecx, %xmm4
        divsd     %xmm1, %xmm4
        addl      %edx, %edx
        movapd    2752(%ebx,%edx,8), %xmm6
        unpcklpd  %xmm3, %xmm3
        xorpd     %xmm6, %xmm0
        xorpd     %xmm6, %xmm2
        xorpd     %xmm6, %xmm3
        movapd    2816(%ebx,%edx,8), %xmm7
        movsd     2944(%ebx), %xmm1
        movsd     2960(%ebx), %xmm5
        andpd     2880(%ebx,%edx,8), %xmm3
        mulsd     %xmm4, %xmm2
        mulsd     %xmm4, %xmm0
        movapd    %xmm2, %xmm6
        mulsd     %xmm2, %xmm2
        mulsd     %xmm2, %xmm1
        addsd     %xmm2, %xmm5
        mulsd     %xmm2, %xmm6
        addsd     2952(%ebx), %xmm1
        mulsd     %xmm2, %xmm5
        addsd     %xmm0, %xmm7
        addpd     %xmm3, %xmm7
        mulsd     %xmm6, %xmm1
        addsd     2968(%ebx), %xmm5
        mulsd     %xmm1, %xmm5
        addsd     %xmm7, %xmm5
        unpckhpd  %xmm7, %xmm7
        addsd     %xmm7, %xmm5
        movsd     %xmm5, (%esp)
        fldl      (%esp)
        jmp       .L_2TAG_PACKET_4.0.2
.L_2TAG_PACKET_5.0.2:
        movsd     16(%esp), %xmm1
        movsd     8(%esp), %xmm0
        pextrw    $3, %xmm1, %eax
        andl      $32752, %eax
        pextrw    $3, %xmm0, %ecx
        andl      $32752, %ecx
        cmpl      %eax, %ecx
        jg        .L_2TAG_PACKET_6.0.2
        pextrw    $3, %xmm1, %ecx
        cmpl      $32767, %ecx
        jg        .L_2TAG_PACKET_7.0.2
        divsd     %xmm1, %xmm0
        movsd     %xmm0, (%esp)
        fldl      (%esp)
        jmp       .L_2TAG_PACKET_4.0.2
.L_2TAG_PACKET_7.0.2:
        andpd     2672(%ebx), %xmm0
        movsd     2640(%ebx), %xmm2
        xorpd     %xmm2, %xmm0
        movsd     %xmm0, (%esp)
        fldl      (%esp)
        jmp       .L_2TAG_PACKET_4.0.2
.L_2TAG_PACKET_6.0.2:
        andpd     2672(%ebx), %xmm0
        movsd     2624(%ebx), %xmm2
        xorpd     %xmm2, %xmm0
        movsd     %xmm0, (%esp)
        fldl      (%esp)
        jmp       .L_2TAG_PACKET_4.0.2
.L_2TAG_PACKET_0.0.2:
.L_2TAG_PACKET_1.0.2:
        pextrw    $3, %xmm0, %ecx
        andl      $32752, %ecx
        pextrw    $3, %xmm1, %eax
        andl      $32752, %eax
        cmpl      $32752, %ecx
        je        .L_2TAG_PACKET_8.0.2
        cmpl      $32752, %eax
        je        .L_2TAG_PACKET_9.0.2
        movsd     2992(%ebx), %xmm3
        movl      $1024, %edx
        movsd     2976(%ebx), %xmm4
        xorpd     %xmm6, %xmm6
        movsd     3008(%ebx), %xmm7
        cmpl      $0, %ecx
        je        .L_2TAG_PACKET_10.0.2
.L_2TAG_PACKET_11.0.2:
        cmpl      $0, %eax
        je        .L_2TAG_PACKET_12.0.2
.L_2TAG_PACKET_13.0.2:
        addl      %ecx, %edx
        subl      %eax, %edx
        cmpl      $2048, %edx
        ja        .L_2TAG_PACKET_5.0.2
        addl      $15344, %edx
        pinsrw    $3, %edx, %xmm6
        andpd     %xmm4, %xmm0
        andpd     %xmm4, %xmm1
        orpd      %xmm6, %xmm0
        orpd      %xmm7, %xmm1
        jmp       .L_2TAG_PACKET_2.0.2
.L_2TAG_PACKET_10.0.2:
        subl      $880, %edx
        mulsd     %xmm3, %xmm0
        pextrw    $3, %xmm0, %ecx
        andl      $32752, %ecx
        cmpl      $0, %ecx
        je        .L_2TAG_PACKET_14.0.2
        jmp       .L_2TAG_PACKET_11.0.2
.L_2TAG_PACKET_12.0.2:
        addl      $880, %edx
        mulsd     %xmm3, %xmm1
        pextrw    $3, %xmm1, %eax
        andl      $32752, %eax
        cmpl      $0, %eax
        je        .L_2TAG_PACKET_15.0.2
        jmp       .L_2TAG_PACKET_13.0.2
.L_2TAG_PACKET_8.0.2:
        movd      %xmm0, %edx
        movapd    %xmm0, %xmm2
        psrlq     $32, %xmm2
        movd      %xmm2, %ecx
        andl      $1048575, %ecx
        orl       %edx, %ecx
        cmpl      $0, %ecx
        jne       .L_2TAG_PACKET_16.0.2
        psrlq     $63, %xmm0
        psllq     $63, %xmm0
        cmpl      $32752, %eax
        jae       .L_2TAG_PACKET_17.0.2
        movapd    2624(%ebx), %xmm5
        pshufd    $238, %xmm5, %xmm4
        addsd     %xmm4, %xmm5
        orpd      %xmm5, %xmm0
.L_2TAG_PACKET_18.0.2:
        movsd     %xmm0, (%esp)
        fldl      (%esp)
        jmp       .L_2TAG_PACKET_4.0.2
.L_2TAG_PACKET_16.0.2:
        addsd     %xmm1, %xmm0
        jmp       .L_2TAG_PACKET_18.0.2
.L_2TAG_PACKET_17.0.2:
        movd      %xmm1, %eax
        movapd    %xmm1, %xmm2
        psrlq     $32, %xmm2
        movd      %xmm2, %ecx
        movl      $-2147483648, %edx
        andl      %ecx, %edx
        andl      $1048575, %ecx
        orl       %eax, %ecx
        cmpl      $0, %ecx
        jne       .L_2TAG_PACKET_19.0.2
        cmpl      $0, %edx
        jne       .L_2TAG_PACKET_20.0.2
        movapd    2656(%ebx), %xmm5
        pshufd    $238, %xmm5, %xmm4
        addsd     %xmm4, %xmm5
        orpd      %xmm5, %xmm0
        movsd     %xmm0, (%esp)
        fldl      (%esp)
        jmp       .L_2TAG_PACKET_4.0.2
.L_2TAG_PACKET_19.0.2:
        movapd    %xmm1, %xmm0
        movsd     %xmm0, (%esp)
        fldl      (%esp)
        jmp       .L_2TAG_PACKET_4.0.2
.L_2TAG_PACKET_20.0.2:
        movapd    2656(%ebx), %xmm5
        movapd    2624(%ebx), %xmm6
        addpd     %xmm6, %xmm5
        pshufd    $238, %xmm5, %xmm6
        addpd     %xmm6, %xmm5
        orpd      %xmm5, %xmm0
        movsd     %xmm0, (%esp)
        fldl      (%esp)
        jmp       .L_2TAG_PACKET_4.0.2
.L_2TAG_PACKET_9.0.2:
        movd      %xmm1, %eax
        movapd    %xmm1, %xmm2
        psrlq     $32, %xmm2
        movd      %xmm2, %ecx
        movl      $-2147483648, %edx
        andl      %ecx, %edx
        andl      $1048575, %ecx
        orl       %eax, %ecx
        cmpl      $0, %ecx
        jne       .L_2TAG_PACKET_19.0.2
        psrlq     $63, %xmm0
        psllq     $63, %xmm0
        cmpl      $0, %edx
        jne       .L_2TAG_PACKET_21.0.2
        movsd     %xmm0, (%esp)
        fldl      (%esp)
        jmp       .L_2TAG_PACKET_4.0.2
.L_2TAG_PACKET_21.0.2:
        movapd    2640(%ebx), %xmm5
        pshufd    $238, %xmm5, %xmm4
        addsd     %xmm4, %xmm5
        orpd      %xmm5, %xmm0
        movsd     %xmm0, (%esp)
        fldl      (%esp)
        jmp       .L_2TAG_PACKET_4.0.2
.L_2TAG_PACKET_14.0.2:
        pextrw    $3, %xmm1, %edx
        andl      $32768, %edx
        cmpl      $0, %edx
        je        .L_2TAG_PACKET_22.0.2
        movapd    2640(%ebx), %xmm5
        pshufd    $238, %xmm5, %xmm4
        addsd     %xmm4, %xmm5
        comisd    %xmm0, %xmm1
        orpd      %xmm5, %xmm0
        jne       .L_2TAG_PACKET_23.0.2
.L_2TAG_PACKET_24.0.2:
        movsd     %xmm0, (%esp)
        fldl      (%esp)
        jmp       .L_2TAG_PACKET_4.0.2
.L_2TAG_PACKET_23.0.2:
        movsd     %xmm0, (%esp)
        fldl      (%esp)
        jmp       .L_2TAG_PACKET_4.0.2
.L_2TAG_PACKET_22.0.2:
        comisd    %xmm0, %xmm1
        jne       .L_2TAG_PACKET_23.0.2
        je        .L_2TAG_PACKET_24.0.2
.L_2TAG_PACKET_15.0.2:
        movapd    2624(%ebx), %xmm5
        psrlq     $63, %xmm0
        psllq     $63, %xmm0
        pshufd    $238, %xmm5, %xmm4
        addsd     %xmm4, %xmm5
        orpd      %xmm5, %xmm0
        movsd     %xmm0, (%esp)
        fldl      (%esp)
.L_2TAG_PACKET_4.0.2:
        movl      64(%esp), %ebx
        movl      %ebp, %esp
        popl      %ebp
        ret       
..B2.3:
END(atan2)
# -- End  atan2
 
# Start file scope ASM
ALIAS_SYMBOL(atan2l, atan2);
# End file scope ASM
   .section .rodata, "a"
   .align 16
   .align 16
static_const_table:
   .long    3390881280
   .long    1067318733
   .long    1411116779
   .long    1018950063
   .long    2985987840
   .long    1067384211
   .long    2088903695
   .long    1018086027
   .long    3148445184
   .long    1067449685
   .long    2044163806
   .long    1017271335
   .long    3667629184
   .long    1067515494
   .long    2353092775
   .long    1019967309
   .long    1546568832
   .long    1067580954
   .long    611991315
   .long    1017602584
   .long    3815996800
   .long    1067646404
   .long    466038598
   .long    1019686426
   .long    4050241920
   .long    1067711845
   .long    3265026328
   .long    1019626952
   .long    120454912
   .long    1067777277
   .long    1542207696
   .long    1020155608
   .long    2784639744
   .long    1067842697
   .long    3883834623
   .long    1018602870
   .long    1328010624
   .long    1067908107
   .long    1791097456
   .long    1019053126
   .long    2217794048
   .long    1067973505
   .long    551619938
   .long    1018494194
   .long    3333520000
   .long    1068038891
   .long    2390331823
   .long    1019033022
   .long    2557052032
   .long    1068104265
   .long    2423976108
   .long    1019728674
   .long    2067649536
   .long    1068169626
   .long    3757397745
   .long    1018672362
   .long    4047094784
   .long    1068234973
   .long    481613184
   .long    1019275104
   .long    2089853184
   .long    1068300307
   .long    1733914374
   .long    1020124677
   .long    2678003840
   .long    1068365626
   .long    1373600282
   .long    1013935474
   .long    3706496128
   .long    1068430930
   .long    1000610902
   .long    1019673285
   .long    3073179008
   .long    1068496219
   .long    1497143008
   .long    1019900342
   .long    2803716736
   .long    1068562846
   .long    1476677416
   .long    1019444094
   .long    3204984128
   .long    1068628077
   .long    1192335905
   .long    1018748628
   .long    831146624
   .long    1068693273
   .long    2733586224
   .long    1018823295
   .long    243029376
   .long    1068758431
   .long    950106081
   .long    1019046675
   .long    1735561920
   .long    1068823549
   .long    3546440856
   .long    1020104712
   .long    1339217792
   .long    1068888626
   .long    3028812387
   .long    1019818321
   .long    3706342144
   .long    1068953659
   .long    3814564029
   .long    1017763871
   .long    637726976
   .long    1069018648
   .long    3584007699
   .long    1017976868
   .long    1148779264
   .long    1069083589
   .long    2282532133
   .long    1019483954
   .long    1406131392
   .long    1069148481
   .long    1547359113
   .long    1019786342
   .long    1908875904
   .long    1069213322
   .long    1315508410
   .long    1020009473
   .long    3194947520
   .long    1069278110
   .long    3845393201
   .long    1015803761
   .long    1547487744
   .long    1069342844
   .long    3863107865
   .long    1019810104
   .long    1881061952
   .long    1069407521
   .long    4288343548
   .long    1019687581
   .long    563086336
   .long    1069472140
   .long    2582230241
   .long    1020099350
   .long    2594975552
   .long    1069536698
   .long    2306443764
   .long    1019667244
   .long    3438545024
   .long    1069606573
   .long    957455549
   .long    1015587735
   .long    4211357472
   .long    1069670906
   .long    2611778754
   .long    1017877214
   .long    3002835424
   .long    1069735101
   .long    235580458
   .long    1020211685
   .long    3905315424
   .long    1069799150
   .long    3630647617
   .long    1018736849
   .long    2849656576
   .long    1069863047
   .long    2412165062
   .long    1019693004
   .long    507429472
   .long    1069926785
   .long    1397750723
   .long    1018412717
   .long    2307470272
   .long    1069990356
   .long    1796470904
   .long    1019796181
   .long    1271814912
   .long    1070053755
   .long    189761565
   .long    1016149115
   .long    3800538144
   .long    1070116974
   .long    2524871582
   .long    1018263353
   .long    3916203552
   .long    1070180008
   .long    127848658
   .long    1017672664
   .long    457192032
   .long    1070242851
   .long    4020400938
   .long    1019823010
   .long    1385324704
   .long    1070305495
   .long    564511179
   .long    1016079094
   .long    2322869856
   .long    1070367935
   .long    2347103319
   .long    1018927760
   .long    3743438624
   .long    1070430165
   .long    877973862
   .long    1019638162
   .long    2392255552
   .long    1070492180
   .long    2432782267
   .long    1018872629
   .long    4180443328
   .long    1070553973
   .long    3102990015
   .long    1020093101
   .long    2547540832
   .long    1070636485
   .long    3877738253
   .long    1017300424
   .long    2735468912
   .long    1070697461
   .long    2446470256
   .long    1019235378
   .long    542633792
   .long    1070757943
   .long    583606328
   .long    1018624131
   .long    923265984
   .long    1070817911
   .long    1793926708
   .long    1019714161
   .long    918728448
   .long    1070877348
   .long    3726463586
   .long    1019433296
   .long    2572275008
   .long    1070936237
   .long    1845354238
   .long    1019459238
   .long    50974688
   .long    1070994564
   .long    983808064
   .long    1016685418
   .long    1105518320
   .long    1071052313
   .long    2357496692
   .long    1015139882
   .long    1264825328
   .long    1071109472
   .long    2244129354
   .long    1019046344
   .long    961157920
   .long    1071166029
   .long    3124185339
   .long    1018541776
   .long    1162701584
   .long    1071221973
   .long    1279780948
   .long    1019268918
   .long    3284935664
   .long    1071277294
   .long    2670033472
   .long    1019833744
   .long    497441888
   .long    1071331985
   .long    1032737410
   .long    1019795212
   .long    3377383904
   .long    1071386036
   .long    2356897182
   .long    1020205553
   .long    1126962000
   .long    1071439443
   .long    3723724586
   .long    1015212418
   .long    90291008
   .long    1071492199
   .long    4178672431
   .long    1020186971
   .long    190059536
   .long    1071595741
   .long    1763589807
   .long    1019162163
   .long    2497392840
   .long    1071670654
   .long    3036997041
   .long    1020204325
   .long    2616971944
   .long    1071719773
   .long    300151069
   .long    1017041957
   .long    2883518128
   .long    1071767563
   .long    2203981414
   .long    1019190108
   .long    1496354352
   .long    1071814030
   .long    332287966
   .long    1016846435
   .long    483276728
   .long    1071859184
   .long    653845024
   .long    1018830914
   .long    3097401072
   .long    1071903039
   .long    1514746408
   .long    1019278972
   .long    2737217248
   .long    1071945615
   .long    1358845067
   .long    1017268275
   .long    2072577560
   .long    1071986933
   .long    3041024735
   .long    1019929672
   .long    2266405656
   .long    1072027017
   .long    1271261130
   .long    1012925070
   .long    958652544
   .long    1072065894
   .long    2158017058
   .long    1019955372
   .long    3312993840
   .long    1072103591
   .long    765809169
   .long    1019114443
   .long    3177001304
   .long    1072140139
   .long    144180084
   .long    1019822186
   .long    3071642184
   .long    1072175568
   .long    4004602424
   .long    1019420740
   .long    4283953648
   .long    1072209909
   .long    1511950430
   .long    1020176966
   .long    1413754136
   .long    1072243195
   .long    856972295
   .long    1015129638
   .long    4073202944
   .long    1072306725
   .long    4068194804
   .long    1019714860
   .long    946117760
   .long    1072366415
   .long    694980733
   .long    1020150135
   .long    3980632032
   .long    1072422512
   .long    1313251280
   .long    1019948709
   .long    1468297112
   .long    1072475260
   .long    330111143
   .long    1019809198
   .long    3478063816
   .long    1072524887
   .long    2930067044
   .long    1017784081
   .long    1153979856
   .long    1072571613
   .long    2225786102
   .long    1017634481
   .long    2089828808
   .long    1072615641
   .long    474621367
   .long    1017043414
   .long    3531732632
   .long    1072657163
   .long    2276396220
   .long    1018757240
   .long    775214612
   .long    1072694803
   .long    3209744818
   .long    1019963015
   .long    662307284
   .long    1072713319
   .long    1381696763
   .long    1019763781
   .long    1192776652
   .long    1072730830
   .long    3017932994
   .long    1015179769
   .long    744202396
   .long    1072747407
   .long    2073854034
   .long    1019512292
   .long    8337908
   .long    1072763115
   .long    16004448
   .long    1019599514
   .long    3589868768
   .long    1072778013
   .long    1374369804
   .long    1018019237
   .long    121647320
   .long    1072792159
   .long    128481634
   .long    1018115438
   .long    2464923204
   .long    1072805601
   .long    1787331214
   .long    1016798022
   .long    4093304372
   .long    1072830562
   .long    3306868969
   .long    1019384078
   .long    1436891684
   .long    1072853231
   .long    676347266
   .long    1017302183
   .long    1104571840
   .long    1072873890
   .long    2870400285
   .long    1019938149
   .long    2037009832
   .long    1072892781
   .long    2956702105
   .long    1016472908
   .long    3139037960
   .long    1072910111
   .long    916057147
   .long    1018364335
   .long    1826698064
   .long    1072926058
   .long    2171961098
   .long    1019669816
   .long    1353941060
   .long    1072940774
   .long    1722928782
   .long    1019926215
   .long    1803191644
   .long    1072954391
   .long    1547878639
   .long    1020259262
   .long    1092591296
   .long    1072967024
   .long    3070107923
   .long    1018320401
   .long    2205372832
   .long    1072978772
   .long    787328196
   .long    1014621351
   .long    1291577100
   .long    1072989723
   .long    2964757301
   .long    1020242528
   .long    4234512804
   .long    1072999952
   .long    3136030038
   .long    1017522144
   .long    3248069132
   .long    1073009528
   .long    1506192355
   .long    1018050472
   .long    3932628500
   .long    1073018509
   .long    1045823554
   .long    1019946655
   .long    4195697848
   .long    1073026948
   .long    233443322
   .long    1018917447
   .long    2501811452
   .long    1073034892
   .long    901427976
   .long    1017333852
   .long    866379428
   .long    1073049455
   .long    2437443742
   .long    1019678792
   .long    1376865888
   .long    1073062480
   .long    3365790232
   .long    1014547152
   .long    3290094268
   .long    1073074195
   .long    3898947415
   .long    1018683566
   .long    354764884
   .long    1073084787
   .long    3854322404
   .long    1019662058
   .long    3332975496
   .long    1073094406
   .long    3171701655
   .long    1017830922
   .long    1141460088
   .long    1073103181
   .long    3946082701
   .long    1020032019
   .long    745761284
   .long    1073111216
   .long    1347210591
   .long    1019106121
   .long    1673304508
   .long    1073118600
   .long    1760606642
   .long    1017324577
   .long    983388240
   .long    1073125409
   .long    3740651204
   .long    1019514104
   .long    3895509100
   .long    1073131706
   .long    2409629983
   .long    1020069322
   .long    2128523668
   .long    1073137548
   .long    3045605368
   .long    1018579174
   .long    2075485692
   .long    1073142981
   .long    3720571789
   .long    1017557436
   .long    121855976
   .long    1073148047
   .long    2391744767
   .long    1020160645
   .long    4181733780
   .long    1073152780
   .long    995028816
   .long    1019681295
   .long    2887813280
   .long    1073157214
   .long    218733247
   .long    1020003509
   .long    2862180896
   .long    1073161375
   .long    2043806490
   .long    1018602288
   .long    3909375184
   .long    1073168973
   .long    1559903412
   .long    1020103444
   .long    3533966292
   .long    1073175738
   .long    734884149
   .long    1018462962
   .long    3815044608
   .long    1073181799
   .long    3630523428
   .long    1017250093
   .long    739639376
   .long    1073187261
   .long    4167476661
   .long    1020008277
   .long    1068309648
   .long    1073192207
   .long    2110061437
   .long    1019295858
   .long    2350566352
   .long    1073196707
   .long    582596516
   .long    1018568821
   .long    2529520024
   .long    1073200819
   .long    745552787
   .long    1019053165
   .long    1841667508
   .long    1073204591
   .long    3982568700
   .long    1016503327
   .long    2242261080
   .long    1073208063
   .long    3433582258
   .long    1016196763
   .long    715134328
   .long    1073211270
   .long    355901358
   .long    1020087916
   .long    2700735876
   .long    1073214240
   .long    3640957736
   .long    1019780205
   .long    141607580
   .long    1073217000
   .long    2488245051
   .long    1020262395
   .long    287934404
   .long    1073219570
   .long    2392691085
   .long    1019883292
   .long    2363373988
   .long    1073221969
   .long    4194561737
   .long    1019237447
   .long    3829340424
   .long    1073224214
   .long    429455526
   .long    1019490975
   .long    1988805928
   .long    1073226320
   .long    3029848706
   .long    1018104889
   .long    1647572320
   .long    1073230161
   .long    10289938
   .long    1017394880
   .long    3988000624
   .long    1073233576
   .long    1957559169
   .long    1019434816
   .long    4263843944
   .long    1073236633
   .long    204710264
   .long    1019908761
   .long    663197724
   .long    1073239386
   .long    1921757578
   .long    1019778948
   .long    3560800700
   .long    1073241876
   .long    3994348896
   .long    1019230192
   .long    2441785656
   .long    1073244141
   .long    871468611
   .long    1014800505
   .long    3277400272
   .long    1073246209
   .long    4092218139
   .long    1020040842
   .long    3951990120
   .long    1073248105
   .long    4276546478
   .long    1019763677
   .long    2737338540
   .long    1073249850
   .long    252776012
   .long    1018794951
   .long    1511361316
   .long    1073251461
   .long    3119653999
   .long    1018514803
   .long    3969162516
   .long    1073252952
   .long    1037069016
   .long    1016792900
   .long    413985240
   .long    1073254338
   .long    4110171432
   .long    1020001345
   .long    3681283576
   .long    1073255627
   .long    1463092818
   .long    1020260354
   .long    3146455488
   .long    1073256831
   .long    1031209123
   .long    1016554799
   .long    95214512
   .long    1073257958
   .long    1373808632
   .long    1019493031
   .long    4250240828
   .long    1073259013
   .long    3891047882
   .long    1020108730
   .long    1413754136
   .long    1073291771
   .long    856972295
   .long    1016178214
   .long    1413754136
   .long    1073291771
   .long    856972295
   .long    1016178214
   .long    1413754136
   .long    1074340347
   .long    856972295
   .long    1017226790
   .long    1413754136
   .long    1072243195
   .long    856972295
   .long    1015129638
   .long    0
   .long    2147483648
   .long    0
   .long    2147483648
   .long    0
   .long    0
   .long    0
   .long    0
   .long    0
   .long    0
   .long    0
   .long    0
   .long    1413754136
   .long    1074340347
   .long    856972295
   .long    1017226790
   .long    1413754136
   .long    3221823995
   .long    856972295
   .long    3164710438
   .long    0
   .long    0
   .long    0
   .long    0
   .long    0
   .long    2147483648
   .long    0
   .long    2147483648
   .long    0
   .long    2147483648
   .long    0
   .long    2147483648
   .long    0
   .long    0
   .long    0
   .long    0
   .long    0
   .long    0
   .long    0
   .long    0
   .long    0
   .long    0
   .long    0
   .long    0
   .long    856972295
   .long    1017226790
   .long    1413754136
   .long    1074340347
   .long    856972295
   .long    3164710438
   .long    1413754136
   .long    3221823995
   .long    0
   .long    0
   .long    4294967295
   .long    4294967295
   .long    0
   .long    0
   .long    4294967295
   .long    4294967295
   .long    4294967295
   .long    4294967295
   .long    0
   .long    0
   .long    4294967295
   .long    4294967295
   .long    0
   .long    0
   .long    2006262985
   .long    1069310863
   .long    2358449471
   .long    3217342131
   .long    3845454352
   .long    1069952297
   .long    2829679149
   .long    1073771565
   .long    4294967295
   .long    2148532223
   .long    0
   .long    0
   .long    0
   .long    1130364928
   .long    0
   .long    0
   .long    0
   .long    1072693248
   .long    0
   .long    0
   .type    static_const_table,@object
   .size    static_const_table,3024
   .data
   .section .note.GNU-stack, ""
# End