Add the optimized implementation of 18 math functions for x86 and x86_64 respectively

Change-Id: I31bf601448a9427f825517f3a0ff24de47f49bfa
Signed-off-by: Jingwei Zhang <jingwei.zhang@intel.com>
Signed-off-by: Mingwei Shi <mingwei.shi@intel.com>
diff --git a/libm/x86/e_atan2.S b/libm/x86/e_atan2.S
new file mode 100644
index 0000000..a6ad390
--- /dev/null
+++ b/libm/x86/e_atan2.S
@@ -0,0 +1,1222 @@
+/*
+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
+.weak atan2l
+.equ 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