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