[v2,41/42] x86-64: Add vector tanh/tanhf implementation to libmvec

Message ID 20211209050508.2614536-42-skpgkp2@gmail.com
State Superseded
Headers
Series x86-64: Add vector math functions to libmvec |

Checks

Context Check Description
dj/TryBot-apply_patch success Patch applied to master at the time it was sent

Commit Message

Sunil Pandey Dec. 9, 2021, 5:05 a.m. UTC
  Implement vectorized tanh/tanhf containing SSE, AVX, AVX2 and
AVX512 versions for libmvec as per vector ABI.  It also contains
accuracy and ABI tests for vector tanh/tanhf with regenerated ulps.
---
 bits/libm-simd-decl-stubs.h                   |   11 +
 math/bits/mathcalls.h                         |    2 +-
 .../unix/sysv/linux/x86_64/libmvec.abilist    |    8 +
 sysdeps/x86/fpu/bits/math-vector.h            |    4 +
 .../x86/fpu/finclude/math-vector-fortran.h    |    4 +
 sysdeps/x86_64/fpu/Makeconfig                 |    1 +
 sysdeps/x86_64/fpu/Versions                   |    2 +
 sysdeps/x86_64/fpu/libm-test-ulps             |   15 +
 .../fpu/multiarch/svml_d_tanh2_core-sse2.S    |   20 +
 .../x86_64/fpu/multiarch/svml_d_tanh2_core.c  |   27 +
 .../fpu/multiarch/svml_d_tanh2_core_sse4.S    | 3449 +++++++++++++++++
 .../fpu/multiarch/svml_d_tanh4_core-sse.S     |   20 +
 .../x86_64/fpu/multiarch/svml_d_tanh4_core.c  |   27 +
 .../fpu/multiarch/svml_d_tanh4_core_avx2.S    | 3308 ++++++++++++++++
 .../fpu/multiarch/svml_d_tanh8_core-avx2.S    |   20 +
 .../x86_64/fpu/multiarch/svml_d_tanh8_core.c  |   27 +
 .../fpu/multiarch/svml_d_tanh8_core_avx512.S  | 3017 ++++++++++++++
 .../fpu/multiarch/svml_s_tanhf16_core-avx2.S  |   20 +
 .../fpu/multiarch/svml_s_tanhf16_core.c       |   28 +
 .../multiarch/svml_s_tanhf16_core_avx512.S    | 1765 +++++++++
 .../fpu/multiarch/svml_s_tanhf4_core-sse2.S   |   20 +
 .../x86_64/fpu/multiarch/svml_s_tanhf4_core.c |   28 +
 .../fpu/multiarch/svml_s_tanhf4_core_sse4.S   | 2144 ++++++++++
 .../fpu/multiarch/svml_s_tanhf8_core-sse.S    |   20 +
 .../x86_64/fpu/multiarch/svml_s_tanhf8_core.c |   28 +
 .../fpu/multiarch/svml_s_tanhf8_core_avx2.S   | 2036 ++++++++++
 sysdeps/x86_64/fpu/svml_d_tanh2_core.S        |   29 +
 sysdeps/x86_64/fpu/svml_d_tanh4_core.S        |   29 +
 sysdeps/x86_64/fpu/svml_d_tanh4_core_avx.S    |   25 +
 sysdeps/x86_64/fpu/svml_d_tanh8_core.S        |   25 +
 sysdeps/x86_64/fpu/svml_s_tanhf16_core.S      |   25 +
 sysdeps/x86_64/fpu/svml_s_tanhf4_core.S       |   29 +
 sysdeps/x86_64/fpu/svml_s_tanhf8_core.S       |   29 +
 sysdeps/x86_64/fpu/svml_s_tanhf8_core_avx.S   |   25 +
 .../x86_64/fpu/test-double-libmvec-tanh-avx.c |    1 +
 .../fpu/test-double-libmvec-tanh-avx2.c       |    1 +
 .../fpu/test-double-libmvec-tanh-avx512f.c    |    1 +
 sysdeps/x86_64/fpu/test-double-libmvec-tanh.c |    3 +
 .../x86_64/fpu/test-double-vlen2-wrappers.c   |    1 +
 .../fpu/test-double-vlen4-avx2-wrappers.c     |    1 +
 .../x86_64/fpu/test-double-vlen4-wrappers.c   |    1 +
 .../x86_64/fpu/test-double-vlen8-wrappers.c   |    1 +
 .../x86_64/fpu/test-float-libmvec-tanhf-avx.c |    1 +
 .../fpu/test-float-libmvec-tanhf-avx2.c       |    1 +
 .../fpu/test-float-libmvec-tanhf-avx512f.c    |    1 +
 sysdeps/x86_64/fpu/test-float-libmvec-tanhf.c |    3 +
 .../x86_64/fpu/test-float-vlen16-wrappers.c   |    1 +
 .../x86_64/fpu/test-float-vlen4-wrappers.c    |    1 +
 .../fpu/test-float-vlen8-avx2-wrappers.c      |    1 +
 .../x86_64/fpu/test-float-vlen8-wrappers.c    |    1 +
 50 files changed, 16286 insertions(+), 1 deletion(-)
 create mode 100644 sysdeps/x86_64/fpu/multiarch/svml_d_tanh2_core-sse2.S
 create mode 100644 sysdeps/x86_64/fpu/multiarch/svml_d_tanh2_core.c
 create mode 100644 sysdeps/x86_64/fpu/multiarch/svml_d_tanh2_core_sse4.S
 create mode 100644 sysdeps/x86_64/fpu/multiarch/svml_d_tanh4_core-sse.S
 create mode 100644 sysdeps/x86_64/fpu/multiarch/svml_d_tanh4_core.c
 create mode 100644 sysdeps/x86_64/fpu/multiarch/svml_d_tanh4_core_avx2.S
 create mode 100644 sysdeps/x86_64/fpu/multiarch/svml_d_tanh8_core-avx2.S
 create mode 100644 sysdeps/x86_64/fpu/multiarch/svml_d_tanh8_core.c
 create mode 100644 sysdeps/x86_64/fpu/multiarch/svml_d_tanh8_core_avx512.S
 create mode 100644 sysdeps/x86_64/fpu/multiarch/svml_s_tanhf16_core-avx2.S
 create mode 100644 sysdeps/x86_64/fpu/multiarch/svml_s_tanhf16_core.c
 create mode 100644 sysdeps/x86_64/fpu/multiarch/svml_s_tanhf16_core_avx512.S
 create mode 100644 sysdeps/x86_64/fpu/multiarch/svml_s_tanhf4_core-sse2.S
 create mode 100644 sysdeps/x86_64/fpu/multiarch/svml_s_tanhf4_core.c
 create mode 100644 sysdeps/x86_64/fpu/multiarch/svml_s_tanhf4_core_sse4.S
 create mode 100644 sysdeps/x86_64/fpu/multiarch/svml_s_tanhf8_core-sse.S
 create mode 100644 sysdeps/x86_64/fpu/multiarch/svml_s_tanhf8_core.c
 create mode 100644 sysdeps/x86_64/fpu/multiarch/svml_s_tanhf8_core_avx2.S
 create mode 100644 sysdeps/x86_64/fpu/svml_d_tanh2_core.S
 create mode 100644 sysdeps/x86_64/fpu/svml_d_tanh4_core.S
 create mode 100644 sysdeps/x86_64/fpu/svml_d_tanh4_core_avx.S
 create mode 100644 sysdeps/x86_64/fpu/svml_d_tanh8_core.S
 create mode 100644 sysdeps/x86_64/fpu/svml_s_tanhf16_core.S
 create mode 100644 sysdeps/x86_64/fpu/svml_s_tanhf4_core.S
 create mode 100644 sysdeps/x86_64/fpu/svml_s_tanhf8_core.S
 create mode 100644 sysdeps/x86_64/fpu/svml_s_tanhf8_core_avx.S
 create mode 100644 sysdeps/x86_64/fpu/test-double-libmvec-tanh-avx.c
 create mode 100644 sysdeps/x86_64/fpu/test-double-libmvec-tanh-avx2.c
 create mode 100644 sysdeps/x86_64/fpu/test-double-libmvec-tanh-avx512f.c
 create mode 100644 sysdeps/x86_64/fpu/test-double-libmvec-tanh.c
 create mode 100644 sysdeps/x86_64/fpu/test-float-libmvec-tanhf-avx.c
 create mode 100644 sysdeps/x86_64/fpu/test-float-libmvec-tanhf-avx2.c
 create mode 100644 sysdeps/x86_64/fpu/test-float-libmvec-tanhf-avx512f.c
 create mode 100644 sysdeps/x86_64/fpu/test-float-libmvec-tanhf.c
  

Patch

diff --git a/bits/libm-simd-decl-stubs.h b/bits/libm-simd-decl-stubs.h
index 3968f2935b..c4f9746ec9 100644
--- a/bits/libm-simd-decl-stubs.h
+++ b/bits/libm-simd-decl-stubs.h
@@ -318,4 +318,15 @@ 
 #define __DECL_SIMD_tanf32x
 #define __DECL_SIMD_tanf64x
 #define __DECL_SIMD_tanf128x
+
+#define __DECL_SIMD_tanh
+#define __DECL_SIMD_tanhf
+#define __DECL_SIMD_tanhl
+#define __DECL_SIMD_tanhf16
+#define __DECL_SIMD_tanhf32
+#define __DECL_SIMD_tanhf64
+#define __DECL_SIMD_tanhf128
+#define __DECL_SIMD_tanhf32x
+#define __DECL_SIMD_tanhf64x
+#define __DECL_SIMD_tanhf128x
 #endif
diff --git a/math/bits/mathcalls.h b/math/bits/mathcalls.h
index 48a525234e..999ae4d703 100644
--- a/math/bits/mathcalls.h
+++ b/math/bits/mathcalls.h
@@ -72,7 +72,7 @@  __MATHCALL_VEC (cosh,, (_Mdouble_ __x));
 /* Hyperbolic sine of X.  */
 __MATHCALL_VEC (sinh,, (_Mdouble_ __x));
 /* Hyperbolic tangent of X.  */
-__MATHCALL (tanh,, (_Mdouble_ __x));
+__MATHCALL_VEC (tanh,, (_Mdouble_ __x));
 
 #ifdef __USE_GNU
 /* Cosine and sine of X.  */
diff --git a/sysdeps/unix/sysv/linux/x86_64/libmvec.abilist b/sysdeps/unix/sysv/linux/x86_64/libmvec.abilist
index f8280539f6..055530f3ab 100644
--- a/sysdeps/unix/sysv/linux/x86_64/libmvec.abilist
+++ b/sysdeps/unix/sysv/linux/x86_64/libmvec.abilist
@@ -64,6 +64,7 @@  GLIBC_2.35 _ZGVbN2v_log1p F
 GLIBC_2.35 _ZGVbN2v_log2 F
 GLIBC_2.35 _ZGVbN2v_sinh F
 GLIBC_2.35 _ZGVbN2v_tan F
+GLIBC_2.35 _ZGVbN2v_tanh F
 GLIBC_2.35 _ZGVbN2vv_atan2 F
 GLIBC_2.35 _ZGVbN2vv_hypot F
 GLIBC_2.35 _ZGVbN4v_acosf F
@@ -84,6 +85,7 @@  GLIBC_2.35 _ZGVbN4v_log1pf F
 GLIBC_2.35 _ZGVbN4v_log2f F
 GLIBC_2.35 _ZGVbN4v_sinhf F
 GLIBC_2.35 _ZGVbN4v_tanf F
+GLIBC_2.35 _ZGVbN4v_tanhf F
 GLIBC_2.35 _ZGVbN4vv_atan2f F
 GLIBC_2.35 _ZGVbN4vv_hypotf F
 GLIBC_2.35 _ZGVcN4v_acos F
@@ -104,6 +106,7 @@  GLIBC_2.35 _ZGVcN4v_log1p F
 GLIBC_2.35 _ZGVcN4v_log2 F
 GLIBC_2.35 _ZGVcN4v_sinh F
 GLIBC_2.35 _ZGVcN4v_tan F
+GLIBC_2.35 _ZGVcN4v_tanh F
 GLIBC_2.35 _ZGVcN4vv_atan2 F
 GLIBC_2.35 _ZGVcN4vv_hypot F
 GLIBC_2.35 _ZGVcN8v_acosf F
@@ -124,6 +127,7 @@  GLIBC_2.35 _ZGVcN8v_log1pf F
 GLIBC_2.35 _ZGVcN8v_log2f F
 GLIBC_2.35 _ZGVcN8v_sinhf F
 GLIBC_2.35 _ZGVcN8v_tanf F
+GLIBC_2.35 _ZGVcN8v_tanhf F
 GLIBC_2.35 _ZGVcN8vv_atan2f F
 GLIBC_2.35 _ZGVcN8vv_hypotf F
 GLIBC_2.35 _ZGVdN4v_acos F
@@ -144,6 +148,7 @@  GLIBC_2.35 _ZGVdN4v_log1p F
 GLIBC_2.35 _ZGVdN4v_log2 F
 GLIBC_2.35 _ZGVdN4v_sinh F
 GLIBC_2.35 _ZGVdN4v_tan F
+GLIBC_2.35 _ZGVdN4v_tanh F
 GLIBC_2.35 _ZGVdN4vv_atan2 F
 GLIBC_2.35 _ZGVdN4vv_hypot F
 GLIBC_2.35 _ZGVdN8v_acosf F
@@ -164,6 +169,7 @@  GLIBC_2.35 _ZGVdN8v_log1pf F
 GLIBC_2.35 _ZGVdN8v_log2f F
 GLIBC_2.35 _ZGVdN8v_sinhf F
 GLIBC_2.35 _ZGVdN8v_tanf F
+GLIBC_2.35 _ZGVdN8v_tanhf F
 GLIBC_2.35 _ZGVdN8vv_atan2f F
 GLIBC_2.35 _ZGVdN8vv_hypotf F
 GLIBC_2.35 _ZGVeN16v_acosf F
@@ -184,6 +190,7 @@  GLIBC_2.35 _ZGVeN16v_log1pf F
 GLIBC_2.35 _ZGVeN16v_log2f F
 GLIBC_2.35 _ZGVeN16v_sinhf F
 GLIBC_2.35 _ZGVeN16v_tanf F
+GLIBC_2.35 _ZGVeN16v_tanhf F
 GLIBC_2.35 _ZGVeN16vv_atan2f F
 GLIBC_2.35 _ZGVeN16vv_hypotf F
 GLIBC_2.35 _ZGVeN8v_acos F
@@ -204,5 +211,6 @@  GLIBC_2.35 _ZGVeN8v_log1p F
 GLIBC_2.35 _ZGVeN8v_log2 F
 GLIBC_2.35 _ZGVeN8v_sinh F
 GLIBC_2.35 _ZGVeN8v_tan F
+GLIBC_2.35 _ZGVeN8v_tanh F
 GLIBC_2.35 _ZGVeN8vv_atan2 F
 GLIBC_2.35 _ZGVeN8vv_hypot F
diff --git a/sysdeps/x86/fpu/bits/math-vector.h b/sysdeps/x86/fpu/bits/math-vector.h
index 618a30cdc1..be3efa9faa 100644
--- a/sysdeps/x86/fpu/bits/math-vector.h
+++ b/sysdeps/x86/fpu/bits/math-vector.h
@@ -138,6 +138,10 @@ 
 #  define __DECL_SIMD_tan __DECL_SIMD_x86_64
 #  undef __DECL_SIMD_tanf
 #  define __DECL_SIMD_tanf __DECL_SIMD_x86_64
+#  undef __DECL_SIMD_tanh
+#  define __DECL_SIMD_tanh __DECL_SIMD_x86_64
+#  undef __DECL_SIMD_tanhf
+#  define __DECL_SIMD_tanhf __DECL_SIMD_x86_64
 
 # endif
 #endif
diff --git a/sysdeps/x86/fpu/finclude/math-vector-fortran.h b/sysdeps/x86/fpu/finclude/math-vector-fortran.h
index 5bcdde5bc4..0c6dadf4f5 100644
--- a/sysdeps/x86/fpu/finclude/math-vector-fortran.h
+++ b/sysdeps/x86/fpu/finclude/math-vector-fortran.h
@@ -68,6 +68,8 @@ 
 !GCC$ builtin (sinhf) attributes simd (notinbranch) if('x86_64')
 !GCC$ builtin (tan) attributes simd (notinbranch) if('x86_64')
 !GCC$ builtin (tanf) attributes simd (notinbranch) if('x86_64')
+!GCC$ builtin (tanh) attributes simd (notinbranch) if('x86_64')
+!GCC$ builtin (tanhf) attributes simd (notinbranch) if('x86_64')
 
 !GCC$ builtin (cos) attributes simd (notinbranch) if('x32')
 !GCC$ builtin (cosf) attributes simd (notinbranch) if('x32')
@@ -121,3 +123,5 @@ 
 !GCC$ builtin (sinhf) attributes simd (notinbranch) if('x32')
 !GCC$ builtin (tan) attributes simd (notinbranch) if('x32')
 !GCC$ builtin (tanf) attributes simd (notinbranch) if('x32')
+!GCC$ builtin (tanh) attributes simd (notinbranch) if('x32')
+!GCC$ builtin (tanhf) attributes simd (notinbranch) if('x32')
diff --git a/sysdeps/x86_64/fpu/Makeconfig b/sysdeps/x86_64/fpu/Makeconfig
index 74f0df2982..ce71d43812 100644
--- a/sysdeps/x86_64/fpu/Makeconfig
+++ b/sysdeps/x86_64/fpu/Makeconfig
@@ -48,6 +48,7 @@  libmvec-funcs = \
   sincos \
   sinh \
   tan \
+  tanh \
 
 # Define libmvec function for benchtests directory.
 libmvec-bench-funcs = \
diff --git a/sysdeps/x86_64/fpu/Versions b/sysdeps/x86_64/fpu/Versions
index 6cb335cf94..5b5d13a1b6 100644
--- a/sysdeps/x86_64/fpu/Versions
+++ b/sysdeps/x86_64/fpu/Versions
@@ -32,6 +32,7 @@  libmvec {
     _ZGVbN2v_log2; _ZGVcN4v_log2; _ZGVdN4v_log2; _ZGVeN8v_log2;
     _ZGVbN2v_sinh; _ZGVcN4v_sinh; _ZGVdN4v_sinh; _ZGVeN8v_sinh;
     _ZGVbN2v_tan; _ZGVcN4v_tan; _ZGVdN4v_tan; _ZGVeN8v_tan;
+    _ZGVbN2v_tanh; _ZGVcN4v_tanh; _ZGVdN4v_tanh; _ZGVeN8v_tanh;
     _ZGVbN2vv_atan2; _ZGVcN4vv_atan2; _ZGVdN4vv_atan2; _ZGVeN8vv_atan2;
     _ZGVbN2vv_hypot; _ZGVcN4vv_hypot; _ZGVdN4vv_hypot; _ZGVeN8vv_hypot;
     _ZGVbN4v_acosf; _ZGVcN8v_acosf; _ZGVdN8v_acosf; _ZGVeN16v_acosf;
@@ -52,6 +53,7 @@  libmvec {
     _ZGVbN4v_log2f; _ZGVcN8v_log2f; _ZGVdN8v_log2f; _ZGVeN16v_log2f;
     _ZGVbN4v_sinhf; _ZGVcN8v_sinhf; _ZGVdN8v_sinhf; _ZGVeN16v_sinhf;
     _ZGVbN4v_tanf; _ZGVcN8v_tanf; _ZGVdN8v_tanf; _ZGVeN16v_tanf;
+    _ZGVbN4v_tanhf; _ZGVcN8v_tanhf; _ZGVdN8v_tanhf; _ZGVeN16v_tanhf;
     _ZGVbN4vv_atan2f; _ZGVcN8vv_atan2f; _ZGVdN8vv_atan2f; _ZGVeN16vv_atan2f;
     _ZGVbN4vv_hypotf; _ZGVcN8vv_hypotf; _ZGVdN8vv_hypotf; _ZGVeN16vv_hypotf;
   }
diff --git a/sysdeps/x86_64/fpu/libm-test-ulps b/sysdeps/x86_64/fpu/libm-test-ulps
index 4a6b224b5d..659017e4c7 100644
--- a/sysdeps/x86_64/fpu/libm-test-ulps
+++ b/sysdeps/x86_64/fpu/libm-test-ulps
@@ -2124,6 +2124,21 @@  float: 3
 float128: 3
 ldouble: 4
 
+Function: "tanh_vlen16":
+float: 1
+
+Function: "tanh_vlen2":
+double: 1
+
+Function: "tanh_vlen4":
+double: 1
+
+Function: "tanh_vlen4_avx2":
+double: 1
+
+Function: "tanh_vlen8":
+double: 1
+
 Function: "tgamma":
 double: 9
 float: 8
diff --git a/sysdeps/x86_64/fpu/multiarch/svml_d_tanh2_core-sse2.S b/sysdeps/x86_64/fpu/multiarch/svml_d_tanh2_core-sse2.S
new file mode 100644
index 0000000000..35b065fe55
--- /dev/null
+++ b/sysdeps/x86_64/fpu/multiarch/svml_d_tanh2_core-sse2.S
@@ -0,0 +1,20 @@ 
+/* SSE2 version of vectorized tanh, vector length is 2.
+   Copyright (C) 2021 Free Software Foundation, Inc.
+   This file is part of the GNU C Library.
+
+   The GNU C Library is free software; you can redistribute it and/or
+   modify it under the terms of the GNU Lesser General Public
+   License as published by the Free Software Foundation; either
+   version 2.1 of the License, or (at your option) any later version.
+
+   The GNU C Library is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+   Lesser General Public License for more details.
+
+   You should have received a copy of the GNU Lesser General Public
+   License along with the GNU C Library; if not, see
+   <https://www.gnu.org/licenses/>.  */
+
+#define _ZGVbN2v_tanh _ZGVbN2v_tanh_sse2
+#include "../svml_d_tanh2_core.S"
diff --git a/sysdeps/x86_64/fpu/multiarch/svml_d_tanh2_core.c b/sysdeps/x86_64/fpu/multiarch/svml_d_tanh2_core.c
new file mode 100644
index 0000000000..d2e63bdc56
--- /dev/null
+++ b/sysdeps/x86_64/fpu/multiarch/svml_d_tanh2_core.c
@@ -0,0 +1,27 @@ 
+/* Multiple versions of vectorized tanh, vector length is 2.
+   Copyright (C) 2021 Free Software Foundation, Inc.
+   This file is part of the GNU C Library.
+
+   The GNU C Library is free software; you can redistribute it and/or
+   modify it under the terms of the GNU Lesser General Public
+   License as published by the Free Software Foundation; either
+   version 2.1 of the License, or (at your option) any later version.
+
+   The GNU C Library is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+   Lesser General Public License for more details.
+
+   You should have received a copy of the GNU Lesser General Public
+   License along with the GNU C Library; if not, see
+   <https://www.gnu.org/licenses/>.  */
+
+#define SYMBOL_NAME _ZGVbN2v_tanh
+#include "ifunc-mathvec-sse4_1.h"
+
+libc_ifunc_redirected (REDIRECT_NAME, SYMBOL_NAME, IFUNC_SELECTOR ());
+
+#ifdef SHARED
+__hidden_ver1 (_ZGVbN2v_tanh, __GI__ZGVbN2v_tanh, __redirect__ZGVbN2v_tanh)
+  __attribute__ ((visibility ("hidden")));
+#endif
diff --git a/sysdeps/x86_64/fpu/multiarch/svml_d_tanh2_core_sse4.S b/sysdeps/x86_64/fpu/multiarch/svml_d_tanh2_core_sse4.S
new file mode 100644
index 0000000000..5b621d75b2
--- /dev/null
+++ b/sysdeps/x86_64/fpu/multiarch/svml_d_tanh2_core_sse4.S
@@ -0,0 +1,3449 @@ 
+/* Function tanh vectorized with SSE4.
+   Copyright (C) 2021 Free Software Foundation, Inc.
+   This file is part of the GNU C Library.
+
+   The GNU C Library is free software; you can redistribute it and/or
+   modify it under the terms of the GNU Lesser General Public
+   License as published by the Free Software Foundation; either
+   version 2.1 of the License, or (at your option) any later version.
+
+   The GNU C Library is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+   Lesser General Public License for more details.
+
+   You should have received a copy of the GNU Lesser General Public
+   License along with the GNU C Library; if not, see
+   https://www.gnu.org/licenses/.  */
+
+/*
+ * ALGORITHM DESCRIPTION:
+ *
+ *   NOTE: Since the hyperbolic tangent function is odd
+ *         (tanh(x) = -tanh(-x)), below algorithm deals with the absolute
+ *         value of the argument |x|: tanh(x) = sign(x) * tanh(|x|)
+ *
+ *   We use a table lookup method to compute tanh(|x|).
+ *   The basic idea is to split the input range into a number of subintervals
+ *   and to approximate tanh(.) with a polynomial on each of them.
+ *
+ *   IEEE SPECIAL CONDITIONS:
+ *   x = [+,-]0, r = [+,-]0
+ *   x = +Inf,   r = +1
+ *   x = -Inf,   r = -1
+ *   x = QNaN,   r = QNaN
+ *   x = SNaN,   r = QNaN
+ *
+ *
+ *   ALGORITHM DETAILS
+ *   We handle special values in a callout function, aside from main path
+ *   computations. "Special" for this algorithm are:
+ *   INF, NAN, |x| > HUGE_THRESHOLD
+ *
+ *
+ *   Main path computations are organized as follows:
+ *   Actually we split the interval [0, SATURATION_THRESHOLD)
+ *   into a number of subintervals.  On each subinterval we approximate tanh(.)
+ *   with a minimax polynomial of pre-defined degree. Polynomial coefficients
+ *   are computed beforehand and stored in table. We also use
+ *
+ *       y := |x| + B,
+ *
+ *   here B depends on subinterval and is used to make argument
+ *   closer to zero.
+ *   We also add large fake interval [SATURATION_THRESHOLD, HUGE_THRESHOLD],
+ *   where 1.0 + 0.0*y + 0.0*y^2 ... coefficients are stored - just to
+ *   preserve main path computation logic but return 1.0 for all arguments.
+ *
+ *   Hence reconstruction looks as follows:
+ *   we extract proper polynomial and range reduction coefficients
+ *        (Pj and B), corresponding to subinterval, to which |x| belongs,
+ *        and return
+ *
+ *       r := sign(x) * (P0 + P1 * y + ... + Pn * y^n)
+ *
+ *   NOTE: we use multiprecision technique to multiply and sum the first
+ *         K terms of the polynomial. So Pj, j = 0..K are stored in
+ *         table each as a pair of target precision numbers (Pj and PLj) to
+ *         achieve wider than target precision.
+ *
+ *
+ */
+
+#include <sysdep.h>
+
+        .text
+	.section .text.sse4,"ax",@progbits
+ENTRY(_ZGVbN2v_tanh_sse4)
+        pushq     %rbp
+        cfi_def_cfa_offset(16)
+        movq      %rsp, %rbp
+        cfi_def_cfa(6, 16)
+        cfi_offset(6, -16)
+        andq      $-64, %rsp
+        subq      $192, %rsp
+        movaps    %xmm0, %xmm7
+        movups    %xmm14, 48(%rsp)
+        lea       2720+__svml_dtanh_data_internal(%rip), %r8
+        movq      10496+__svml_dtanh_data_internal(%rip), %xmm5
+
+/* if VMIN, VMAX is defined for I type */
+        pxor      %xmm1, %xmm1
+        .cfi_escape 0x10, 0x1f, 0x0e, 0x38, 0x1c, 0x0d, 0xc0, 0xff, 0xff, 0xff, 0x1a, 0x0d, 0x70, 0xff, 0xff, 0xff, 0x22
+        pshufd    $221, %xmm7, %xmm14
+        movq      10624+__svml_dtanh_data_internal(%rip), %xmm4
+
+/* Here huge arguments, INF and NaNs are filtered out to callout. */
+        pand      %xmm5, %xmm14
+        movdqa    %xmm14, %xmm3
+        psubd     %xmm4, %xmm14
+        movups    %xmm13, 80(%rsp)
+        movdqa    %xmm14, %xmm2
+        movups    %xmm15, 32(%rsp)
+        .cfi_escape 0x10, 0x1e, 0x0e, 0x38, 0x1c, 0x0d, 0xc0, 0xff, 0xff, 0xff, 0x1a, 0x0d, 0x90, 0xff, 0xff, 0xff, 0x22
+        .cfi_escape 0x10, 0x20, 0x0e, 0x38, 0x1c, 0x0d, 0xc0, 0xff, 0xff, 0xff, 0x1a, 0x0d, 0x60, 0xff, 0xff, 0xff, 0x22
+        movdqa    %xmm14, %xmm15
+        movq      10688+__svml_dtanh_data_internal(%rip), %xmm13
+        pcmpgtd   %xmm1, %xmm2
+        pcmpgtd   %xmm13, %xmm15
+        pand      %xmm2, %xmm14
+        movups    %xmm9, 160(%rsp)
+        .cfi_escape 0x10, 0x1a, 0x0e, 0x38, 0x1c, 0x0d, 0xc0, 0xff, 0xff, 0xff, 0x1a, 0x0d, 0xe0, 0xff, 0xff, 0xff, 0x22
+        movdqa    %xmm15, %xmm9
+        andnps    %xmm14, %xmm9
+        andps     %xmm15, %xmm13
+        orps      %xmm13, %xmm9
+
+/*
+ * VSHRIMM( I, iIndex, = iIndex, (17 - 4) );
+ * VGATHER_MATRIX( L2D, p, TAB._dbP, iIndex, 0, T_ITEM_SIZE, T_ITEM_GRAN, 13, 0, 0 );
+ */
+        psrld     $10, %xmm9
+        movups    %xmm10, 144(%rsp)
+        movd      %xmm9, %eax
+        .cfi_escape 0x10, 0x1b, 0x0e, 0x38, 0x1c, 0x0d, 0xc0, 0xff, 0xff, 0xff, 0x1a, 0x0d, 0xd0, 0xff, 0xff, 0xff, 0x22
+        pshufd    $1, %xmm9, %xmm10
+        movups    %xmm12, 96(%rsp)
+        movd      %xmm10, %ecx
+        movups    %xmm11, 112(%rsp)
+        movups    10432+__svml_dtanh_data_internal(%rip), %xmm0
+        movslq    %eax, %rax
+        andps     %xmm7, %xmm0
+        movslq    %ecx, %rcx
+        .cfi_escape 0x10, 0x1c, 0x0e, 0x38, 0x1c, 0x0d, 0xc0, 0xff, 0xff, 0xff, 0x1a, 0x0d, 0xb0, 0xff, 0xff, 0xff, 0x22
+        .cfi_escape 0x10, 0x1d, 0x0e, 0x38, 0x1c, 0x0d, 0xc0, 0xff, 0xff, 0xff, 0x1a, 0x0d, 0xa0, 0xff, 0xff, 0xff, 0x22
+        movups    10368+__svml_dtanh_data_internal(%rip), %xmm12
+        movups    %xmm8, 176(%rsp)
+        .cfi_escape 0x10, 0x19, 0x0e, 0x38, 0x1c, 0x0d, 0xc0, 0xff, 0xff, 0xff, 0x1a, 0x0d, 0xf0, 0xff, 0xff, 0xff, 0x22
+        andps     %xmm7, %xmm12
+        movups    -96(%rax,%r8), %xmm11
+        movups    %xmm7, (%rsp)
+        movups    -96(%rcx,%r8), %xmm8
+        movups    -80(%rax,%r8), %xmm9
+        movaps    %xmm9, %xmm10
+
+/*  Constant loading  */
+        movq      10560+__svml_dtanh_data_internal(%rip), %xmm6
+        movups    -80(%rcx,%r8), %xmm5
+        pcmpgtd   %xmm6, %xmm3
+        movups    -64(%rax,%r8), %xmm7
+        unpckhpd  %xmm8, %xmm11
+        movaps    %xmm7, %xmm8
+        unpcklpd  %xmm5, %xmm10
+        unpckhpd  %xmm5, %xmm9
+        movups    -48(%rax,%r8), %xmm5
+        movups    -64(%rcx,%r8), %xmm6
+        movmskps  %xmm3, %edx
+        movups    -48(%rcx,%r8), %xmm3
+        unpcklpd  %xmm6, %xmm8
+        unpckhpd  %xmm6, %xmm7
+        movaps    %xmm5, %xmm6
+        unpcklpd  %xmm3, %xmm6
+        unpckhpd  %xmm3, %xmm5
+        movups    -32(%rax,%r8), %xmm3
+        movups    -16(%rax,%r8), %xmm2
+        movaps    %xmm3, %xmm4
+        movups    -32(%rcx,%r8), %xmm1
+        movups    -16(%rcx,%r8), %xmm14
+        unpcklpd  %xmm1, %xmm4
+        unpckhpd  %xmm1, %xmm3
+        movaps    %xmm2, %xmm1
+        movups    (%rax,%r8), %xmm13
+        unpcklpd  %xmm14, %xmm1
+        unpckhpd  %xmm14, %xmm2
+        movaps    %xmm13, %xmm14
+        movups    (%rcx,%r8), %xmm15
+        unpcklpd  %xmm15, %xmm14
+        addpd     %xmm14, %xmm0
+        mulpd     %xmm0, %xmm2
+        addpd     %xmm1, %xmm2
+        mulpd     %xmm0, %xmm2
+        addpd     %xmm3, %xmm2
+        mulpd     %xmm0, %xmm2
+        addpd     %xmm4, %xmm2
+        mulpd     %xmm0, %xmm2
+        addpd     %xmm5, %xmm2
+        mulpd     %xmm0, %xmm2
+        addpd     %xmm6, %xmm2
+        mulpd     %xmm0, %xmm2
+        addpd     %xmm7, %xmm2
+        mulpd     %xmm0, %xmm2
+        addpd     %xmm8, %xmm2
+        mulpd     %xmm0, %xmm2
+        addpd     %xmm9, %xmm2
+        mulpd     %xmm0, %xmm2
+        addpd     %xmm10, %xmm2
+        mulpd     %xmm2, %xmm0
+        addpd     %xmm11, %xmm0
+        orps      %xmm12, %xmm0
+        andl      $3, %edx
+        jne       L(2)
+
+L(1):
+        movups    176(%rsp), %xmm8
+        cfi_restore(25)
+        movups    160(%rsp), %xmm9
+        cfi_restore(26)
+        movups    144(%rsp), %xmm10
+        cfi_restore(27)
+        movups    112(%rsp), %xmm11
+        cfi_restore(28)
+        movups    96(%rsp), %xmm12
+        cfi_restore(29)
+        movups    80(%rsp), %xmm13
+        cfi_restore(30)
+        movups    48(%rsp), %xmm14
+        cfi_restore(31)
+        movups    32(%rsp), %xmm15
+        cfi_restore(32)
+        movq      %rbp, %rsp
+        popq      %rbp
+        cfi_def_cfa(7, 8)
+        cfi_restore(6)
+        ret
+        cfi_def_cfa(6, 16)
+        cfi_offset(6, -16)
+        .cfi_escape 0x10, 0x19, 0x0e, 0x38, 0x1c, 0x0d, 0xc0, 0xff, 0xff, 0xff, 0x1a, 0x0d, 0xf0, 0xff, 0xff, 0xff, 0x22
+        .cfi_escape 0x10, 0x1a, 0x0e, 0x38, 0x1c, 0x0d, 0xc0, 0xff, 0xff, 0xff, 0x1a, 0x0d, 0xe0, 0xff, 0xff, 0xff, 0x22
+        .cfi_escape 0x10, 0x1b, 0x0e, 0x38, 0x1c, 0x0d, 0xc0, 0xff, 0xff, 0xff, 0x1a, 0x0d, 0xd0, 0xff, 0xff, 0xff, 0x22
+        .cfi_escape 0x10, 0x1c, 0x0e, 0x38, 0x1c, 0x0d, 0xc0, 0xff, 0xff, 0xff, 0x1a, 0x0d, 0xb0, 0xff, 0xff, 0xff, 0x22
+        .cfi_escape 0x10, 0x1d, 0x0e, 0x38, 0x1c, 0x0d, 0xc0, 0xff, 0xff, 0xff, 0x1a, 0x0d, 0xa0, 0xff, 0xff, 0xff, 0x22
+        .cfi_escape 0x10, 0x1e, 0x0e, 0x38, 0x1c, 0x0d, 0xc0, 0xff, 0xff, 0xff, 0x1a, 0x0d, 0x90, 0xff, 0xff, 0xff, 0x22
+        .cfi_escape 0x10, 0x1f, 0x0e, 0x38, 0x1c, 0x0d, 0xc0, 0xff, 0xff, 0xff, 0x1a, 0x0d, 0x70, 0xff, 0xff, 0xff, 0x22
+        .cfi_escape 0x10, 0x20, 0x0e, 0x38, 0x1c, 0x0d, 0xc0, 0xff, 0xff, 0xff, 0x1a, 0x0d, 0x60, 0xff, 0xff, 0xff, 0x22
+
+L(2):
+        movups    (%rsp), %xmm1
+        movups    %xmm1, 64(%rsp)
+        movups    %xmm0, 128(%rsp)
+        je        L(1)
+        xorl      %eax, %eax
+        movq      %rsi, 8(%rsp)
+        movq      %rdi, (%rsp)
+        movq      %r12, 24(%rsp)
+        .cfi_escape 0x10, 0x04, 0x0e, 0x38, 0x1c, 0x0d, 0xc0, 0xff, 0xff, 0xff, 0x1a, 0x0d, 0x48, 0xff, 0xff, 0xff, 0x22
+        .cfi_escape 0x10, 0x05, 0x0e, 0x38, 0x1c, 0x0d, 0xc0, 0xff, 0xff, 0xff, 0x1a, 0x0d, 0x40, 0xff, 0xff, 0xff, 0x22
+        .cfi_escape 0x10, 0x0c, 0x0e, 0x38, 0x1c, 0x0d, 0xc0, 0xff, 0xff, 0xff, 0x1a, 0x0d, 0x58, 0xff, 0xff, 0xff, 0x22
+        movl      %eax, %r12d
+        movq      %r13, 16(%rsp)
+        .cfi_escape 0x10, 0x0d, 0x0e, 0x38, 0x1c, 0x0d, 0xc0, 0xff, 0xff, 0xff, 0x1a, 0x0d, 0x50, 0xff, 0xff, 0xff, 0x22
+        movl      %edx, %r13d
+
+L(3):
+        btl       %r12d, %r13d
+        jc        L(5)
+
+L(4):
+        incl      %r12d
+        cmpl      $2, %r12d
+        jl        L(3)
+        movq      8(%rsp), %rsi
+        cfi_restore(4)
+        movq      (%rsp), %rdi
+        cfi_restore(5)
+        movq      24(%rsp), %r12
+        cfi_restore(12)
+        movq      16(%rsp), %r13
+        cfi_restore(13)
+        movups    128(%rsp), %xmm0
+        jmp       L(1)
+        .cfi_escape 0x10, 0x04, 0x0e, 0x38, 0x1c, 0x0d, 0xc0, 0xff, 0xff, 0xff, 0x1a, 0x0d, 0x48, 0xff, 0xff, 0xff, 0x22
+        .cfi_escape 0x10, 0x05, 0x0e, 0x38, 0x1c, 0x0d, 0xc0, 0xff, 0xff, 0xff, 0x1a, 0x0d, 0x40, 0xff, 0xff, 0xff, 0x22
+        .cfi_escape 0x10, 0x0c, 0x0e, 0x38, 0x1c, 0x0d, 0xc0, 0xff, 0xff, 0xff, 0x1a, 0x0d, 0x58, 0xff, 0xff, 0xff, 0x22
+        .cfi_escape 0x10, 0x0d, 0x0e, 0x38, 0x1c, 0x0d, 0xc0, 0xff, 0xff, 0xff, 0x1a, 0x0d, 0x50, 0xff, 0xff, 0xff, 0x22
+
+L(5):
+        lea       64(%rsp,%r12,8), %rdi
+        lea       128(%rsp,%r12,8), %rsi
+        call      __svml_dtanh_cout_rare_internal
+        jmp       L(4)
+
+END(_ZGVbN2v_tanh_sse4)
+
+        .align    16,0x90
+
+__svml_dtanh_cout_rare_internal:
+
+        cfi_startproc
+
+        lea       __dtanh_la__imldTanhTab(%rip), %rdx
+        movb      7(%rdi), %al
+        andb      $-128, %al
+        shrb      $7, %al
+        movzbl    %al, %ecx
+        movzwl    6(%rdi), %eax
+        andl      $32752, %eax
+        shrl      $4, %eax
+        movq      (%rdx,%rcx,8), %rdx
+        cmpl      $2047, %eax
+        je        L(9)
+        cmpl      $2046, %eax
+        jne       L(7)
+
+L(6):
+        movq      %rdx, (%rsi)
+        jmp       L(8)
+
+L(7):
+        movsd     (%rdi), %xmm1
+        movsd     __dtanh_la__imldTanhTab(%rip), %xmm0
+        addsd     %xmm1, %xmm0
+        mulsd     %xmm0, %xmm1
+        movsd     %xmm1, (%rsi)
+
+L(8):
+        xorl      %eax, %eax
+        ret
+
+L(9):
+        testl     $1048575, 4(%rdi)
+        jne       L(10)
+        cmpl      $0, (%rdi)
+        je        L(6)
+
+L(10):
+        movsd     (%rdi), %xmm0
+        addsd     %xmm0, %xmm0
+        movsd     %xmm0, (%rsi)
+        jmp       L(8)
+
+        cfi_endproc
+
+        .type	__svml_dtanh_cout_rare_internal,@function
+        .size	__svml_dtanh_cout_rare_internal,.-__svml_dtanh_cout_rare_internal
+
+        .section .rodata, "a"
+        .align 64
+
+__svml_dtanh_data_internal:
+        .long	0
+        .long	0
+        .long	0
+        .long	1070333952
+        .long	0
+        .long	1070858240
+        .long	0
+        .long	1071382528
+        .long	0
+        .long	1071906816
+        .long	0
+        .long	1072431104
+        .long	0
+        .long	1072955392
+        .long	0
+        .long	1073479680
+        .long	0
+        .long	1074003968
+        .long	0
+        .long	1074528256
+        .long	0
+        .long	1075052544
+        .long	0
+        .long	1075576832
+        .long	0
+        .long	1076101120
+        .long	0
+        .long	1076625408
+        .long	0
+        .long	1077149696
+        .long	0
+        .long	0
+        .long	0
+        .long	0
+        .long	1097497746
+        .long	1070305232
+        .long	2699715854
+        .long	1070817176
+        .long	3997728823
+        .long	1071273769
+        .long	3938160533
+        .long	1071759175
+        .long	193732629
+        .long	1072072293
+        .long	3144363502
+        .long	1072375075
+        .long	2548249895
+        .long	1072570303
+        .long	638218690
+        .long	1072665176
+        .long	3325726839
+        .long	1072689426
+        .long	2523455249
+        .long	1072693057
+        .long	2200391922
+        .long	1072693244
+        .long	4257836853
+        .long	1072693247
+        .long	4294954840
+        .long	1072693247
+        .long	0
+        .long	1072693248
+        .long	0
+        .long	1072693248
+        .long	0
+        .long	0
+        .long	3167993022
+        .long	1013310014
+        .long	2889539328
+        .long	3159121931
+        .long	394645568
+        .long	1013728265
+        .long	2799920971
+        .long	1015161303
+        .long	754366556
+        .long	1013577885
+        .long	3960180508
+        .long	1014215657
+        .long	69774042
+        .long	3162475851
+        .long	2161066944
+        .long	3162264280
+        .long	923362432
+        .long	1014879086
+        .long	2160345802
+        .long	1014714211
+        .long	3729195158
+        .long	3161626453
+        .long	675671997
+        .long	1015336837
+        .long	1141527416
+        .long	1013957883
+        .long	2209699952
+        .long	3160643600
+        .long	0
+        .long	0
+        .long	0
+        .long	1072693248
+        .long	2750448946
+        .long	1072596012
+        .long	1257606939
+        .long	1072501079
+        .long	2619663609
+        .long	1072338011
+        .long	863303701
+        .long	1072048204
+        .long	2694810990
+        .long	1071654144
+        .long	837003456
+        .long	1070723665
+        .long	472162617
+        .long	1069359818
+        .long	532307062
+        .long	1067137790
+        .long	431106849
+        .long	1064162173
+        .long	329904022
+        .long	1059572972
+        .long	4080160942
+        .long	1053550275
+        .long	1402271583
+        .long	1044493446
+        .long	467296040
+        .long	1032344560
+        .long	26734424
+        .long	1014207804
+        .long	0
+        .long	0
+        .long	1071622681
+        .long	3153114090
+        .long	3948133409
+        .long	3217705130
+        .long	4096956694
+        .long	3218184481
+        .long	2616164369
+        .long	3218465008
+        .long	2620770434
+        .long	3218641845
+        .long	3075958072
+        .long	3218520700
+        .long	1950184789
+        .long	3217978001
+        .long	2686385024
+        .long	3216731525
+        .long	1489441818
+        .long	3214597550
+        .long	1992796697
+        .long	3211642259
+        .long	1952936976
+        .long	3207056478
+        .long	3904162951
+        .long	3201033920
+        .long	1382745445
+        .long	3191977094
+        .long	468673444
+        .long	3179828208
+        .long	3843669553
+        .long	3161691483
+        .long	0
+        .long	0
+        .long	1431655765
+        .long	3218429269
+        .long	3264395793
+        .long	3218178991
+        .long	60595194
+        .long	3217824331
+        .long	1837960166
+        .long	3217124894
+        .long	1964918946
+        .long	3214033516
+        .long	2998587684
+        .long	1068822866
+        .long	3421467326
+        .long	1069267520
+        .long	952003133
+        .long	1068506016
+        .long	1215426504
+        .long	1066495476
+        .long	2650572912
+        .long	1063503494
+        .long	4178958376
+        .long	1059043758
+        .long	3799805457
+        .long	1052940753
+        .long	3704238924
+        .long	1043831645
+        .long	2076585114
+        .long	1031813109
+        .long	1352847351
+        .long	1013591371
+        .long	0
+        .long	0
+        .long	3830371894
+        .long	3169224254
+        .long	74893150
+        .long	1069567437
+        .long	1235750664
+        .long	1069825332
+        .long	916043751
+        .long	1069924975
+        .long	4138411315
+        .long	1069655686
+        .long	829220656
+        .long	1068441660
+        .long	663246204
+        .long	3213477792
+        .long	652268865
+        .long	3214415230
+        .long	3251098232
+        .long	3212868437
+        .long	1480792335
+        .long	3209929101
+        .long	3365608027
+        .long	3205478075
+        .long	3330582883
+        .long	3199375817
+        .long	3573234945
+        .long	3190266717
+        .long	2061970086
+        .long	3178248181
+        .long	3148320390
+        .long	3160026274
+        .long	0
+        .long	0
+        .long	286337717
+        .long	1069617425
+        .long	4261152941
+        .long	1068876190
+        .long	3694459820
+        .long	1067928728
+        .long	2399079031
+        .long	3212381546
+        .long	394897286
+        .long	3215735810
+        .long	3073534041
+        .long	3215860118
+        .long	301960234
+        .long	3214124960
+        .long	3353887502
+        .long	1064191753
+        .long	4200665425
+        .long	1063741482
+        .long	2003926207
+        .long	1061090030
+        .long	2196865207
+        .long	1056528964
+        .long	2107880963
+        .long	1050526402
+        .long	3656860478
+        .long	1041425071
+        .long	881228218
+        .long	1029305120
+        .long	2612840768
+        .long	1011136029
+        .long	0
+        .long	0
+        .long	3722294196
+        .long	3181505049
+        .long	2573001951
+        .long	3216029919
+        .long	4095639908
+        .long	3216151900
+        .long	3272210374
+        .long	3215957253
+        .long	3439280785
+        .long	3214441767
+        .long	628273304
+        .long	1066085542
+        .long	3354767370
+        .long	1066343670
+        .long	300170709
+        .long	1063270296
+        .long	1870156670
+        .long	3209139074
+        .long	1580606479
+        .long	3206808937
+        .long	3818710870
+        .long	3202408589
+        .long	3126817102
+        .long	3196311305
+        .long	3320734688
+        .long	3187224127
+        .long	821170446
+        .long	3175173312
+        .long	3906480775
+        .long	3156975650
+        .long	0
+        .long	0
+        .long	428888587
+        .long	3215696314
+        .long	3125999356
+        .long	3214336891
+        .long	407196569
+        .long	1053816799
+        .long	886258254
+        .long	1066874408
+        .long	2149075781
+        .long	1067351939
+        .long	3888390356
+        .long	1065784643
+        .long	1226056234
+        .long	3211994813
+        .long	178100474
+        .long	3210723675
+        .long	4201249718
+        .long	1058328572
+        .long	3854015760
+        .long	1057324616
+        .long	3621220964
+        .long	1052982118
+        .long	1468766992
+        .long	1046916174
+        .long	2369608770
+        .long	1037879115
+        .long	327127732
+        .long	1025754505
+        .long	747046817
+        .long	1007714190
+        .long	0
+        .long	0
+        .long	4036362527
+        .long	3191151783
+        .long	839661649
+        .long	1067363059
+        .long	4269154241
+        .long	1067251747
+        .long	391446303
+        .long	1066410535
+        .long	2090623151
+        .long	3211993063
+        .long	1751510141
+        .long	3213141508
+        .long	4072216875
+        .long	3209470961
+        .long	3769618983
+        .long	1061976030
+        .long	3462945146
+        .long	1057228123
+        .long	3030849095
+        .long	3202531084
+        .long	4269010901
+        .long	3198361258
+        .long	742615277
+        .long	3192302512
+        .long	3397417437
+        .long	3183265609
+        .long	943110610
+        .long	3171141000
+        .long	371608300
+        .long	3153099348
+        .long	0
+        .long	0
+        .long	1315619150
+        .long	1066820857
+        .long	1001273821
+        .long	3214201652
+        .long	3859675203
+        .long	3212560200
+        .long	725858949
+        .long	3213658423
+        .long	2464052346
+        .long	3212913056
+        .long	1297319750
+        .long	1063307355
+        .long	563735576
+        .long	1062988089
+        .long	2756222736
+        .long	3207203944
+        .long	31207338
+        .long	3204466214
+        .long	434022900
+        .long	1052227234
+        .long	2370591882
+        .long	1048628172
+        .long	588930601
+        .long	1042556347
+        .long	3198977634
+        .long	1033474724
+        .long	1590950759
+        .long	1021415866
+        .long	195904708
+        .long	1003000389
+        .long	0
+        .long	0
+        .long	4252521214
+        .long	3198731457
+        .long	2969857811
+        .long	3217870358
+        .long	575387574
+        .long	3212943727
+        .long	67550217
+        .long	3210922992
+        .long	2955736731
+        .long	1064678043
+        .long	4193848343
+        .long	1063288304
+        .long	1845975253
+        .long	3209397546
+        .long	1025213509
+        .long	3204479174
+        .long	3713384058
+        .long	1055658730
+        .long	4120057883
+        .long	3194988032
+        .long	1573797757
+        .long	3193584787
+        .long	2514726550
+        .long	3187678317
+        .long	15343571
+        .long	3178526042
+        .long	104576940
+        .long	3166444652
+        .long	1147207168
+        .long	3148070554
+        .long	0
+        .long	0
+        .long	1467656669
+        .long	3212977156
+        .long	4154993315
+        .long	1077775111
+        .long	2465966858
+        .long	3214886059
+        .long	71777642
+        .long	1068690118
+        .long	2419763912
+        .long	1061550205
+        .long	1896047360
+        .long	3210612806
+        .long	3723555648
+        .long	1058651288
+        .long	3163703016
+        .long	1057833732
+        .long	1601936705
+        .long	3201383489
+        .long	2535509424
+        .long	3195153293
+        .long	3610885824
+        .long	1043474022
+        .long	1031698712
+        .long	1037527637
+        .long	1497459257
+        .long	1028514042
+        .long	3476455860
+        .long	1016366870
+        .long	758110873
+        .long	998719391
+        .long	0
+        .long	0
+        .long	572446067
+        .long	3204307354
+        .long	926268084
+        .long	1081104698
+        .long	1313112926
+        .long	3217861477
+        .long	3660716
+        .long	1070677720
+        .long	124568711
+        .long	3210757561
+        .long	2123022704
+        .long	1059096046
+        .long	576783408
+        .long	1059279430
+        .long	1651052980
+        .long	3204387494
+        .long	3164866735
+        .long	1051430920
+        .long	409335328
+        .long	1046695415
+        .long	3481520755
+        .long	3188046619
+        .long	1140549474
+        .long	3182373569
+        .long	708689751
+        .long	3173247717
+        .long	2627769694
+        .long	3161153086
+        .long	3804346926
+        .long	3143551592
+        .long	0
+        .long	0
+        .long	2302818369
+        .long	1064188902
+        .long	526101185
+        .long	3235013457
+        .long	2975776348
+        .long	1075224435
+        .long	1103981749
+        .long	3223699933
+        .long	4261798097
+        .long	3210280329
+        .long	30781306
+        .long	1064564655
+        .long	3939597931
+        .long	3206430909
+        .long	1816466405
+        .long	1055007949
+        .long	3868125859
+        .long	3190076997
+        .long	4218600579
+        .long	3192569835
+        .long	4167655123
+        .long	1037376568
+        .long	952533803
+        .long	1032000428
+        .long	895641221
+        .long	1022851193
+        .long	1237761065
+        .long	1010835452
+        .long	2902086315
+        .long	3133082401
+        .long	0
+        .long	0
+        .long	1899646778
+        .long	3207205638
+        .long	2434183270
+        .long	3238288976
+        .long	621380814
+        .long	1078065849
+        .long	247717525
+        .long	3225783561
+        .long	1611742563
+        .long	3212088477
+        .long	537725662
+        .long	1065131990
+        .long	3769436831
+        .long	1057148224
+        .long	3759797009
+        .long	3196422840
+        .long	842759416
+        .long	3195613094
+        .long	1736926210
+        .long	1043198029
+        .long	3915271468
+        .long	3180709675
+        .long	807416070
+        .long	3176507548
+        .long	3147759461
+        .long	3167409843
+        .long	3443382404
+        .long	3155325020
+        .long	1202615797
+        .long	3129870924
+        .long	0
+        .long	0
+        .long	1841653873
+        .long	3210074087
+        .long	2157744327
+        .long	1095928888
+        .long	3038317314
+        .long	3229013375
+        .long	2291108570
+        .long	1082519711
+        .long	707775397
+        .long	1067599411
+        .long	445214669
+        .long	3216153989
+        .long	3815354898
+        .long	1054410330
+        .long	1285070896
+        .long	3199787450
+        .long	1722630166
+        .long	1047526663
+        .long	2672844635
+        .long	3188483010
+        .long	1805520457
+        .long	3179260705
+        .long	542550567
+        .long	1026041526
+        .long	392361251
+        .long	1017320419
+        .long	562647833
+        .long	1005205418
+        .long	4253488278
+        .long	988137457
+        .long	0
+        .long	0
+        .long	3077187303
+        .long	1060497018
+        .long	1652392454
+        .long	1099206368
+        .long	414484972
+        .long	3231848150
+        .long	130592591
+        .long	1084602513
+        .long	1951534810
+        .long	1068932483
+        .long	2677544726
+        .long	3216895313
+        .long	2338009969
+        .long	3203411240
+        .long	302629286
+        .long	1051889816
+        .long	1274412910
+        .long	3193339538
+        .long	3731558070
+        .long	1038350327
+        .long	3135499196
+        .long	1030352152
+        .long	1329461873
+        .long	3170325324
+        .long	4058709792
+        .long	3161656179
+        .long	2167788642
+        .long	3149540607
+        .long	1602064437
+        .long	3132466971
+        .long	0
+        .long	0
+        .long	2146959360
+        .long	2146959360
+        .long	2146959360
+        .long	2146959360
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .long	1069547520
+        .long	1069547520
+        .long	1069547520
+        .long	1069547520
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .long	7864320
+        .long	7864320
+        .long	7864320
+        .long	7864320
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .long	0
+        .long	0
+        .long	0
+        .long	0
+        .long	0
+        .long	1072693248
+        .long	3616958675
+        .long	3172564458
+        .long	1431547708
+        .long	3218429269
+        .long	3390261318
+        .long	3188010876
+        .long	1446529494
+        .long	1069617425
+        .long	913571762
+        .long	3199219810
+        .long	1583612462
+        .long	3215695720
+        .long	2995724807
+        .long	3207222498
+        .long	847913742
+        .long	1066913721
+        .long	1634876930
+        .long	3212167789
+        .long	0
+        .long	0
+        .long	0
+        .long	1072693248
+        .long	0
+        .long	0
+        .long	0
+        .long	0
+        .long	1694159514
+        .long	1010239653
+        .long	966318664
+        .long	1069606551
+        .long	2992375944
+        .long	1072656686
+        .long	1870405289
+        .long	3217070889
+        .long	1411308967
+        .long	3218333047
+        .long	4096824853
+        .long	1068863484
+        .long	2220740425
+        .long	1069365950
+        .long	1401698298
+        .long	3215430111
+        .long	4137473768
+        .long	3215259762
+        .long	2666938667
+        .long	1066889956
+        .long	121190665
+        .long	1066187784
+        .long	821637913
+        .long	3213226090
+        .long	0
+        .long	3217096704
+        .long	0
+        .long	1072693248
+        .long	0
+        .long	0
+        .long	0
+        .long	0
+        .long	1463410348
+        .long	1012925678
+        .long	2389577058
+        .long	1069735062
+        .long	1617794783
+        .long	1072647710
+        .long	1889094329
+        .long	3217191869
+        .long	1210518828
+        .long	3218309813
+        .long	1479174953
+        .long	1069010221
+        .long	3435917531
+        .long	1069290104
+        .long	291210913
+        .long	3215575029
+        .long	464478606
+        .long	3215159746
+        .long	1063797118
+        .long	1067014292
+        .long	3489481042
+        .long	1065955541
+        .long	2916293494
+        .long	3213319415
+        .long	0
+        .long	3217227776
+        .long	0
+        .long	1072693248
+        .long	0
+        .long	0
+        .long	0
+        .long	0
+        .long	1308961311
+        .long	1014934498
+        .long	2204208241
+        .long	1069862983
+        .long	2945950899
+        .long	1072637797
+        .long	1107689125
+        .long	3217310565
+        .long	545938327
+        .long	3218284334
+        .long	3174275192
+        .long	1069150773
+        .long	3754729793
+        .long	1069207728
+        .long	1611554958
+        .long	3215708601
+        .long	2936527704
+        .long	3215052478
+        .long	2983784402
+        .long	1067121823
+        .long	1327150338
+        .long	1065710404
+        .long	3371320326
+        .long	3213391099
+        .long	0
+        .long	3217358848
+        .long	0
+        .long	1072693248
+        .long	0
+        .long	0
+        .long	0
+        .long	0
+        .long	3546392464
+        .long	1015001497
+        .long	631120375
+        .long	1069990256
+        .long	1201634405
+        .long	1072626967
+        .long	266657677
+        .long	3217426771
+        .long	1567732958
+        .long	3218256710
+        .long	883708059
+        .long	1069284653
+        .long	1008115966
+        .long	1069119372
+        .long	2657338981
+        .long	3215830093
+        .long	3402640736
+        .long	3214939036
+        .long	1000796573
+        .long	1067211764
+        .long	53805889
+        .long	1065455799
+        .long	1736607114
+        .long	3213440608
+        .long	0
+        .long	3217489920
+        .long	0
+        .long	1072693248
+        .long	0
+        .long	0
+        .long	0
+        .long	0
+        .long	2741128528
+        .long	1013617020
+        .long	3111451323
+        .long	1070116823
+        .long	1649040643
+        .long	1072615239
+        .long	3411009101
+        .long	3217540290
+        .long	3408666525
+        .long	3218227049
+        .long	60831764
+        .long	1069411415
+        .long	64016149
+        .long	1069025616
+        .long	1202785467
+        .long	3215938891
+        .long	1072151579
+        .long	3214707060
+        .long	1534357116
+        .long	1067283570
+        .long	4218468492
+        .long	1065037194
+        .long	2285827787
+        .long	3213467810
+        .long	0
+        .long	3217620992
+        .long	0
+        .long	1072693248
+        .long	0
+        .long	0
+        .long	0
+        .long	0
+        .long	2659584459
+        .long	1014368295
+        .long	3537749475
+        .long	1070242630
+        .long	3072983457
+        .long	1072602635
+        .long	3507245872
+        .long	3217650938
+        .long	3434758212
+        .long	3218195466
+        .long	3801643091
+        .long	1069530660
+        .long	1128653951
+        .long	1068927067
+        .long	3580298628
+        .long	3216008547
+        .long	1645082338
+        .long	3214462237
+        .long	1048857889
+        .long	1067336943
+        .long	21547694
+        .long	1064510970
+        .long	1433152914
+        .long	3213472968
+        .long	0
+        .long	3217752064
+        .long	0
+        .long	1072693248
+        .long	0
+        .long	0
+        .long	0
+        .long	0
+        .long	2718912981
+        .long	1013914074
+        .long	1823051285
+        .long	1070367623
+        .long	1714227149
+        .long	1072589179
+        .long	2128046799
+        .long	3217758540
+        .long	2655098722
+        .long	3218162081
+        .long	1690074008
+        .long	1069594780
+        .long	353091525
+        .long	1068824353
+        .long	4206393496
+        .long	3216049578
+        .long	824478721
+        .long	3214211899
+        .long	3850924188
+        .long	1067371825
+        .long	2738209029
+        .long	1063668369
+        .long	853664366
+        .long	3213456718
+        .long	0
+        .long	3217883136
+        .long	0
+        .long	1072693248
+        .long	0
+        .long	0
+        .long	0
+        .long	0
+        .long	2312638749
+        .long	1013630664
+        .long	4267025360
+        .long	1070491748
+        .long	3776362539
+        .long	1072574894
+        .long	3063840907
+        .long	3217862932
+        .long	2436606365
+        .long	3218127019
+        .long	582931594
+        .long	1069646387
+        .long	3079837843
+        .long	1068718114
+        .long	3430470362
+        .long	3216083715
+        .long	1015897693
+        .long	3213958348
+        .long	765047087
+        .long	1067388396
+        .long	2337193368
+        .long	1061824569
+        .long	3002775972
+        .long	3213420044
+        .long	0
+        .long	3218014208
+        .long	0
+        .long	1072693248
+        .long	0
+        .long	0
+        .long	0
+        .long	0
+        .long	2001712669
+        .long	1015665334
+        .long	1330879460
+        .long	1070636148
+        .long	2956987714
+        .long	1072551971
+        .long	4281360332
+        .long	3218013175
+        .long	3304213057
+        .long	3218063389
+        .long	3261945160
+        .long	1069715874
+        .long	3866284424
+        .long	1068553570
+        .long	3423706630
+        .long	3216121886
+        .long	259493169
+        .long	3213268437
+        .long	4223676832
+        .long	1067379852
+        .long	2765317642
+        .long	3210752240
+        .long	2292494069
+        .long	3213329490
+        .long	0
+        .long	3218145280
+        .long	0
+        .long	1072693248
+        .long	0
+        .long	0
+        .long	0
+        .long	0
+        .long	1632443533
+        .long	1015769771
+        .long	3788472163
+        .long	1070757367
+        .long	2406795724
+        .long	1072518757
+        .long	1173083542
+        .long	3218140352
+        .long	3726086528
+        .long	3217906251
+        .long	1205028711
+        .long	1069793280
+        .long	2231197855
+        .long	1068156878
+        .long	2368637763
+        .long	3216148628
+        .long	2866127296
+        .long	3211617797
+        .long	2424606359
+        .long	1067309831
+        .long	2444940724
+        .long	3212180962
+        .long	3308128888
+        .long	3213151909
+        .long	0
+        .long	3218276352
+        .long	0
+        .long	1072693248
+        .long	0
+        .long	0
+        .long	0
+        .long	0
+        .long	478834383
+        .long	1014053288
+        .long	1342399495
+        .long	1070876422
+        .long	2650660168
+        .long	1072482726
+        .long	976724127
+        .long	3218226669
+        .long	962417089
+        .long	3217740546
+        .long	1060150306
+        .long	1069852926
+        .long	411739190
+        .long	1067700577
+        .long	3846786712
+        .long	3216148687
+        .long	4007187252
+        .long	1064073475
+        .long	3455779574
+        .long	1067180067
+        .long	1865169557
+        .long	3212900393
+        .long	1200620699
+        .long	3212923615
+        .long	0
+        .long	3218407424
+        .long	0
+        .long	1072693248
+        .long	0
+        .long	0
+        .long	0
+        .long	0
+        .long	267289397
+        .long	1014452734
+        .long	302318249
+        .long	1070993143
+        .long	1373990511
+        .long	1072444121
+        .long	1606419704
+        .long	3218305061
+        .long	3955669825
+        .long	3217568496
+        .long	2701083439
+        .long	1069894809
+        .long	3425188888
+        .long	1067047616
+        .long	2305426029
+        .long	3216123827
+        .long	1692531481
+        .long	1065641523
+        .long	232815703
+        .long	1067000535
+        .long	3949954748
+        .long	3213214884
+        .long	558890519
+        .long	3212487521
+        .long	0
+        .long	3218538496
+        .long	0
+        .long	1072693248
+        .long	0
+        .long	0
+        .long	0
+        .long	0
+        .long	1719941932
+        .long	1006528498
+        .long	368840470
+        .long	1071107377
+        .long	1825320027
+        .long	1072403193
+        .long	538136722
+        .long	3218375283
+        .long	1431312010
+        .long	3217392305
+        .long	2586725425
+        .long	1069919291
+        .long	2680871675
+        .long	1065941593
+        .long	4123661982
+        .long	3216076488
+        .long	4235496382
+        .long	1066406926
+        .long	2618960092
+        .long	1066782660
+        .long	2333865044
+        .long	3213444845
+        .long	1545458959
+        .long	3211934181
+        .long	0
+        .long	3218669568
+        .long	0
+        .long	1072693248
+        .long	0
+        .long	0
+        .long	0
+        .long	0
+        .long	26286236
+        .long	1013191219
+        .long	990113957
+        .long	1071218987
+        .long	3284199501
+        .long	1072360200
+        .long	2981906127
+        .long	3218437190
+        .long	3154396333
+        .long	3217214106
+        .long	4182117656
+        .long	1069927061
+        .long	903677379
+        .long	3207343530
+        .long	384743261
+        .long	3216009637
+        .long	1679228359
+        .long	1066734193
+        .long	3407026595
+        .long	1066538544
+        .long	784962854
+        .long	3213588186
+        .long	1956733412
+        .long	3210979700
+        .long	0
+        .long	3218800640
+        .long	0
+        .long	1072693248
+        .long	0
+        .long	0
+        .long	0
+        .long	0
+        .long	1468217372
+        .long	1015658399
+        .long	2570814109
+        .long	1071327852
+        .long	532296332
+        .long	1072315404
+        .long	318213600
+        .long	3218490738
+        .long	3661105766
+        .long	3217035931
+        .long	4085840862
+        .long	1069919095
+        .long	2798312316
+        .long	3213370099
+        .long	1668326589
+        .long	3215870599
+        .long	3158013712
+        .long	1066998409
+        .long	673205579
+        .long	1066158659
+        .long	486665227
+        .long	3213647762
+        .long	3317145528
+        .long	3208570948
+        .long	0
+        .long	3218931712
+        .long	0
+        .long	1072693248
+        .long	0
+        .long	0
+        .long	0
+        .long	0
+        .long	2060955015
+        .long	1014233667
+        .long	2567098181
+        .long	1071433868
+        .long	1159081245
+        .long	1072269064
+        .long	1492598184
+        .long	3218535971
+        .long	1567055841
+        .long	3216688180
+        .long	2821222425
+        .long	1069896605
+        .long	3691290783
+        .long	3214336992
+        .long	343679101
+        .long	3215679175
+        .long	1878686296
+        .long	1067197462
+        .long	125933636
+        .long	1065636281
+        .long	421076939
+        .long	3213630573
+        .long	3748848474
+        .long	1062499186
+        .long	0
+        .long	3219062784
+        .long	0
+        .long	1072693248
+        .long	0
+        .long	0
+        .long	0
+        .long	0
+        .long	1860475216
+        .long	1015320544
+        .long	439764829
+        .long	1071587361
+        .long	3870821058
+        .long	1072197223
+        .long	1430736283
+        .long	3218588540
+        .long	1597812790
+        .long	3216174065
+        .long	2398544810
+        .long	1069838732
+        .long	961452807
+        .long	3215095800
+        .long	716310499
+        .long	3215360049
+        .long	2337792646
+        .long	1067375770
+        .long	3863538422
+        .long	1064417477
+        .long	2203480844
+        .long	3213482785
+        .long	2389621902
+        .long	1063978354
+        .long	0
+        .long	3219193856
+        .long	0
+        .long	1072693248
+        .long	0
+        .long	0
+        .long	0
+        .long	0
+        .long	517838046
+        .long	1015294339
+        .long	2114713104
+        .long	1071713012
+        .long	2046328558
+        .long	1072098392
+        .long	29352448
+        .long	3218631376
+        .long	1533416325
+        .long	3215079684
+        .long	765247815
+        .long	1069724759
+        .long	24381189
+        .long	3215564623
+        .long	1213155449
+        .long	3214886044
+        .long	379420126
+        .long	1067409218
+        .long	3127061143
+        .long	3210809777
+        .long	3193663073
+        .long	3213128287
+        .long	2557278876
+        .long	1064581282
+        .long	0
+        .long	3219324928
+        .long	0
+        .long	1072693248
+        .long	0
+        .long	0
+        .long	0
+        .long	0
+        .long	201012485
+        .long	1013704982
+        .long	4147262407
+        .long	1071803766
+        .long	3048814903
+        .long	1071997795
+        .long	1260857726
+        .long	3218645540
+        .long	270462819
+        .long	3209873967
+        .long	874660781
+        .long	1069580732
+        .long	1251156804
+        .long	3215866075
+        .long	3568210118
+        .long	3214014484
+        .long	3784557811
+        .long	1067255146
+        .long	47772576
+        .long	3212562613
+        .long	2075700783
+        .long	3212539455
+        .long	1121561449
+        .long	1064698735
+        .long	0
+        .long	3219456000
+        .long	0
+        .long	1072693248
+        .long	0
+        .long	0
+        .long	0
+        .long	0
+        .long	72370286
+        .long	1015768239
+        .long	2345366573
+        .long	1071888223
+        .long	3155310239
+        .long	1071897123
+        .long	4105462806
+        .long	3218634383
+        .long	2329529114
+        .long	1067280331
+        .long	3078782452
+        .long	1069291148
+        .long	2210998062
+        .long	3215997483
+        .long	1498585052
+        .long	3212353515
+        .long	3032692199
+        .long	1066974465
+        .long	809329973
+        .long	3213081308
+        .long	2713838579
+        .long	3211547879
+        .long	1266611175
+        .long	1064568889
+        .long	0
+        .long	3219587072
+        .long	0
+        .long	1072693248
+        .long	0
+        .long	0
+        .long	0
+        .long	0
+        .long	2137918782
+        .long	1013598293
+        .long	2511343836
+        .long	1071966424
+        .long	4205808243
+        .long	1071797842
+        .long	2776384587
+        .long	3218601667
+        .long	3824787134
+        .long	1068202086
+        .long	4101819712
+        .long	1068956189
+        .long	3547601806
+        .long	3216004360
+        .long	4156237724
+        .long	1064058621
+        .long	3714924071
+        .long	1066627770
+        .long	2925917146
+        .long	3213234133
+        .long	4211598888
+        .long	3209111151
+        .long	2569808389
+        .long	1064277859
+        .long	0
+        .long	3219718144
+        .long	0
+        .long	1072693248
+        .long	0
+        .long	0
+        .long	0
+        .long	0
+        .long	2979324843
+        .long	1013692066
+        .long	2595126306
+        .long	1072038496
+        .long	4263058559
+        .long	1071701178
+        .long	2217257467
+        .long	3218551298
+        .long	2310932059
+        .long	1068685603
+        .long	3368327571
+        .long	1068627625
+        .long	3037419246
+        .long	3215935424
+        .long	3509936675
+        .long	1065724141
+        .long	1557247226
+        .long	1066131548
+        .long	3830787958
+        .long	3213205743
+        .long	1781883284
+        .long	1062575914
+        .long	3918078093
+        .long	1063614197
+        .long	0
+        .long	3219849216
+        .long	0
+        .long	1072693248
+        .long	0
+        .long	0
+        .long	0
+        .long	0
+        .long	3630992244
+        .long	1015034507
+        .long	461360001
+        .long	1072104635
+        .long	2866201612
+        .long	1071571556
+        .long	1021729265
+        .long	3218487113
+        .long	1039036234
+        .long	1068940858
+        .long	1685105679
+        .long	1068140011
+        .long	1856275853
+        .long	3215769620
+        .long	2211306181
+        .long	1066373046
+        .long	3739405201
+        .long	1065456917
+        .long	3870269089
+        .long	3213053509
+        .long	427599213
+        .long	1063593231
+        .long	40698732
+        .long	1062709094
+        .long	0
+        .long	3219980288
+        .long	0
+        .long	1072693248
+        .long	0
+        .long	0
+        .long	0
+        .long	0
+        .long	4017840557
+        .long	1014067070
+        .long	2764932206
+        .long	1072165089
+        .long	3362970633
+        .long	1071394124
+        .long	2677206355
+        .long	3218412713
+        .long	1827861303
+        .long	1069122666
+        .long	2476388705
+        .long	1067583638
+        .long	523365901
+        .long	3215556224
+        .long	1203249285
+        .long	1066574111
+        .long	4264074292
+        .long	1064402288
+        .long	3556167213
+        .long	3212827889
+        .long	3894081206
+        .long	1063908871
+        .long	2161178761
+        .long	1061130844
+        .long	0
+        .long	3220111360
+        .long	0
+        .long	1072693248
+        .long	0
+        .long	0
+        .long	0
+        .long	0
+        .long	3622330478
+        .long	1016273425
+        .long	923638641
+        .long	1072245755
+        .long	239419665
+        .long	1071146518
+        .long	4085259706
+        .long	3218288969
+        .long	1284806809
+        .long	1069276013
+        .long	2806747971
+        .long	1066232498
+        .long	75259250
+        .long	3215197393
+        .long	2597116185
+        .long	1066648701
+        .long	1680670491
+        .long	3208755029
+        .long	446818184
+        .long	3212096816
+        .long	1529495144
+        .long	1063888972
+        .long	808619025
+        .long	3208443000
+        .long	0
+        .long	3220242432
+        .long	0
+        .long	1072693248
+        .long	0
+        .long	0
+        .long	0
+        .long	0
+        .long	462410646
+        .long	1015565639
+        .long	3157363066
+        .long	1072336316
+        .long	87541994
+        .long	1070853747
+        .long	2905067058
+        .long	3218115077
+        .long	1081050294
+        .long	1069306453
+        .long	4130581086
+        .long	3212259234
+        .long	1279737796
+        .long	3214531982
+        .long	901138781
+        .long	1066501065
+        .long	978916480
+        .long	3211806490
+        .long	1307294116
+        .long	3210755549
+        .long	1154728319
+        .long	1063409950
+        .long	983243444
+        .long	3209435485
+        .long	0
+        .long	3220373504
+        .long	0
+        .long	1072693248
+        .long	0
+        .long	0
+        .long	0
+        .long	0
+        .long	2617212772
+        .long	1016126748
+        .long	2762378177
+        .long	1072409936
+        .long	1926160805
+        .long	1070604218
+        .long	4131898582
+        .long	3217810482
+        .long	3068505203
+        .long	1069203346
+        .long	2854543895
+        .long	3214027139
+        .long	1276437050
+        .long	3213652513
+        .long	523800203
+        .long	1066060621
+        .long	3030576699
+        .long	3212054264
+        .long	210618624
+        .long	3205409267
+        .long	3515290542
+        .long	1062456384
+        .long	1613351841
+        .long	3209185464
+        .long	0
+        .long	3220504576
+        .long	0
+        .long	1072693248
+        .long	0
+        .long	0
+        .long	0
+        .long	0
+        .long	2178033281
+        .long	1016051223
+        .long	859883711
+        .long	1072469258
+        .long	4248327203
+        .long	1070195167
+        .long	4170103331
+        .long	3217497647
+        .long	3497702842
+        .long	1069026027
+        .long	669705965
+        .long	3214426190
+        .long	548733038
+        .long	3212258725
+        .long	1756337187
+        .long	1065503890
+        .long	1830841059
+        .long	3211930343
+        .long	1445563742
+        .long	1061912703
+        .long	2113494314
+        .long	1060991234
+        .long	1734825467
+        .long	3208559895
+        .long	0
+        .long	3220635648
+        .long	0
+        .long	1072693248
+        .long	0
+        .long	0
+        .long	0
+        .long	0
+        .long	1674478116
+        .long	1016412476
+        .long	1178764976
+        .long	1072516719
+        .long	1119346206
+        .long	1069851736
+        .long	1526584272
+        .long	3217221512
+        .long	3575463915
+        .long	1068817773
+        .long	2913683612
+        .long	3214542291
+        .long	1135909212
+        .long	3207879094
+        .long	1952394810
+        .long	1064725296
+        .long	508910559
+        .long	3211537545
+        .long	225204077
+        .long	1062311155
+        .long	1009857186
+        .long	1056234420
+        .long	2872841632
+        .long	3207480811
+        .long	0
+        .long	3220766720
+        .long	0
+        .long	1072693248
+        .long	0
+        .long	0
+        .long	0
+        .long	0
+        .long	1768234410
+        .long	1014305046
+        .long	1496797583
+        .long	1072554475
+        .long	3351833521
+        .long	1069572393
+        .long	68183265
+        .long	3216938851
+        .long	4178655528
+        .long	1068606905
+        .long	60791550
+        .long	3214483781
+        .long	1856281737
+        .long	1063701265
+        .long	4260560897
+        .long	1063778674
+        .long	2539586291
+        .long	3210979253
+        .long	2272785608
+        .long	1062198907
+        .long	1986161572
+        .long	3206910344
+        .long	1016667904
+        .long	3205797138
+        .long	0
+        .long	3220897792
+        .long	0
+        .long	1072693248
+        .long	0
+        .long	0
+        .long	0
+        .long	0
+        .long	3074583847
+        .long	1017063845
+        .long	4092570620
+        .long	1072584374
+        .long	3645618684
+        .long	1069147119
+        .long	1980755111
+        .long	3216542681
+        .long	889928399
+        .long	1068320928
+        .long	1360064809
+        .long	3214330986
+        .long	2266432388
+        .long	1064407878
+        .long	4147854841
+        .long	1062471610
+        .long	1812350685
+        .long	3210287970
+        .long	3710399832
+        .long	1061728481
+        .long	2458127659
+        .long	3207279138
+        .long	287360833
+        .long	3197756422
+        .long	0
+        .long	3221028864
+        .long	0
+        .long	1072693248
+        .long	0
+        .long	0
+        .long	0
+        .long	0
+        .long	68970445
+        .long	1013643458
+        .long	3990219923
+        .long	1072607967
+        .long	97498680
+        .long	1068787106
+        .long	4136450559
+        .long	3216216395
+        .long	147179316
+        .long	1067971098
+        .long	1625987424
+        .long	3214138005
+        .long	3965878798
+        .long	1064539455
+        .long	3777445436
+        .long	1059539413
+        .long	3029913178
+        .long	3209512624
+        .long	2162291908
+        .long	1061245910
+        .long	351053474
+        .long	3207087984
+        .long	3766283083
+        .long	1056943188
+        .long	0
+        .long	3221159936
+        .long	0
+        .long	1072693248
+        .long	0
+        .long	0
+        .long	0
+        .long	0
+        .long	3139580402
+        .long	1014663922
+        .long	3748810696
+        .long	1072634260
+        .long	3154943320
+        .long	1068262833
+        .long	3181856712
+        .long	3215694135
+        .long	3656356636
+        .long	1067539266
+        .long	3897588284
+        .long	3213798616
+        .long	1461831298
+        .long	1064461217
+        .long	2900114226
+        .long	3208814642
+        .long	2606420357
+        .long	3207868903
+        .long	1741152094
+        .long	1060222230
+        .long	1469206701
+        .long	3206514441
+        .long	3518993813
+        .long	1057090958
+        .long	0
+        .long	3221291008
+        .long	0
+        .long	1072693248
+        .long	0
+        .long	0
+        .long	0
+        .long	0
+        .long	3285908565
+        .long	1015477239
+        .long	1797956315
+        .long	1072657271
+        .long	3302471936
+        .long	1067543167
+        .long	2151339553
+        .long	3215007235
+        .long	362228095
+        .long	1066797401
+        .long	3986406156
+        .long	3213131380
+        .long	388353381
+        .long	1064042359
+        .long	4147910906
+        .long	3209239839
+        .long	1739922885
+        .long	1056259812
+        .long	3188561056
+        .long	1058406709
+        .long	489122368
+        .long	3205182155
+        .long	202560853
+        .long	1056234231
+        .long	0
+        .long	3221422080
+        .long	0
+        .long	1072693248
+        .long	0
+        .long	0
+        .long	0
+        .long	0
+        .long	3806705628
+        .long	1008327668
+        .long	884432573
+        .long	1072671353
+        .long	137405484
+        .long	1066747168
+        .long	3531994812
+        .long	3214216262
+        .long	3217445183
+        .long	1066105333
+        .long	2910288024
+        .long	3212464301
+        .long	3196212707
+        .long	1063467545
+        .long	3156563895
+        .long	3208963593
+        .long	3591285453
+        .long	1058733242
+        .long	2889132271
+        .long	1055392886
+        .long	1038377961
+        .long	3203561698
+        .long	4084672077
+        .long	1055001082
+        .long	0
+        .long	3221553152
+        .long	0
+        .long	1072693248
+        .long	0
+        .long	0
+        .long	0
+        .long	0
+        .long	1881957148
+        .long	1016569186
+        .long	3451706443
+        .long	1072679940
+        .long	143468186
+        .long	1066002557
+        .long	553724800
+        .long	3213475431
+        .long	1049442771
+        .long	1065415105
+        .long	3378521943
+        .long	3211821787
+        .long	3176008209
+        .long	1062800361
+        .long	4016898691
+        .long	3208498219
+        .long	1548390021
+        .long	1058670598
+        .long	2097418483
+        .long	3202689041
+        .long	2756703589
+        .long	3201351283
+        .long	506736184
+        .long	1053405377
+        .long	0
+        .long	3221684224
+        .long	0
+        .long	1072693248
+        .long	0
+        .long	0
+        .long	0
+        .long	0
+        .long	450339788
+        .long	1015040915
+        .long	2959639058
+        .long	1072685166
+        .long	2289443405
+        .long	1065320893
+        .long	3331959139
+        .long	3212796584
+        .long	724199976
+        .long	1064616734
+        .long	938566183
+        .long	3211030741
+        .long	1640535667
+        .long	1062186735
+        .long	187996035
+        .long	3207841256
+        .long	822311531
+        .long	1058246461
+        .long	160890851
+        .long	3203087480
+        .long	3163291388
+        .long	1050479733
+        .long	578249940
+        .long	1051474021
+        .long	0
+        .long	3221815296
+        .long	0
+        .long	1072693248
+        .long	0
+        .long	0
+        .long	0
+        .long	0
+        .long	539445753
+        .long	1012635531
+        .long	3085578536
+        .long	1072688342
+        .long	2019637246
+        .long	1064510347
+        .long	2901018414
+        .long	3211991061
+        .long	2171427566
+        .long	1063868144
+        .long	678185093
+        .long	3210287638
+        .long	2685165718
+        .long	1061401571
+        .long	710336199
+        .long	3207152667
+        .long	2733135798
+        .long	1057659331
+        .long	886948177
+        .long	3202751664
+        .long	3345834247
+        .long	1052218043
+        .long	908728048
+        .long	1047925874
+        .long	0
+        .long	3221946368
+        .long	0
+        .long	1072693248
+        .long	0
+        .long	0
+        .long	0
+        .long	0
+        .long	4240302093
+        .long	1016867082
+        .long	1832260410
+        .long	1072690271
+        .long	154153694
+        .long	1063730412
+        .long	2094548181
+        .long	3211211898
+        .long	1392727515
+        .long	1063180837
+        .long	3132890025
+        .long	3209604411
+        .long	483611698
+        .long	1060651750
+        .long	4246355421
+        .long	3206519479
+        .long	1424637421
+        .long	1057044161
+        .long	2138185318
+        .long	3202290304
+        .long	2276282642
+        .long	1052095798
+        .long	4227780935
+        .long	3196067472
+        .long	0
+        .long	3222077440
+        .long	0
+        .long	1072693248
+        .long	0
+        .long	0
+        .long	0
+        .long	0
+        .long	2485733495
+        .long	1017000498
+        .long	484092514
+        .long	1072691442
+        .long	1653085170
+        .long	1063007344
+        .long	2893019346
+        .long	3210489400
+        .long	878866243
+        .long	1062388018
+        .long	2113174452
+        .long	3208818852
+        .long	2654141437
+        .long	1059959432
+        .long	3578550869
+        .long	3205727739
+        .long	315005006
+        .long	1056288680
+        .long	3246956604
+        .long	3201593495
+        .long	2197286540
+        .long	1051718329
+        .long	3044885069
+        .long	3196227269
+        .long	0
+        .long	3222208512
+        .long	0
+        .long	1072693248
+        .long	0
+        .long	0
+        .long	0
+        .long	0
+        .long	2794994668
+        .long	1016833037
+        .long	3287420517
+        .long	1072692394
+        .long	4133778764
+        .long	1061857404
+        .long	689562148
+        .long	3209340342
+        .long	1404089106
+        .long	1061273627
+        .long	1292441425
+        .long	3207706805
+        .long	93671116
+        .long	1058816787
+        .long	2903327974
+        .long	3204626398
+        .long	4279279273
+        .long	1055202414
+        .long	134688023
+        .long	3200552187
+        .long	3315379764
+        .long	1050761310
+        .long	2945780649
+        .long	3195568939
+        .long	0
+        .long	3222339584
+        .long	0
+        .long	1072693248
+        .long	0
+        .long	0
+        .long	0
+        .long	0
+        .long	2135621136
+        .long	1016053539
+        .long	309961636
+        .long	1072692934
+        .long	672792810
+        .long	1060347512
+        .long	2960305506
+        .long	3207830967
+        .long	1703867620
+        .long	1059726750
+        .long	824905914
+        .long	3206160796
+        .long	3036017847
+        .long	1057284422
+        .long	923304464
+        .long	3203122673
+        .long	1848642304
+        .long	1053791859
+        .long	2215350763
+        .long	3199158388
+        .long	3049848127
+        .long	1049324210
+        .long	3861893815
+        .long	3194293196
+        .long	0
+        .long	3222470656
+        .long	0
+        .long	1072693248
+        .long	0
+        .long	0
+        .long	0
+        .long	0
+        .long	2236028675
+        .long	1016891036
+        .long	2177293363
+        .long	1072693132
+        .long	776830057
+        .long	1058856794
+        .long	4190004158
+        .long	3206340337
+        .long	209955488
+        .long	1058225857
+        .long	845130443
+        .long	3204660651
+        .long	4204313304
+        .long	1055835544
+        .long	364525198
+        .long	3201597210
+        .long	3889299905
+        .long	1052205563
+        .long	1514389355
+        .long	3197586647
+        .long	1706817756
+        .long	1047834665
+        .long	3817417318
+        .long	3192934132
+        .long	0
+        .long	3222601728
+        .long	0
+        .long	1072693248
+        .long	0
+        .long	0
+        .long	0
+        .long	0
+        .long	1074033072
+        .long	1013200912
+        .long	2197899301
+        .long	1072693205
+        .long	1097614282
+        .long	1057308273
+        .long	209489097
+        .long	3204791893
+        .long	3641526339
+        .long	1056723664
+        .long	1792794946
+        .long	3203158586
+        .long	584598707
+        .long	1054254910
+        .long	253996240
+        .long	3200135633
+        .long	642640562
+        .long	1050754580
+        .long	3147361740
+        .long	3196139610
+        .long	1167319222
+        .long	1046395158
+        .long	3488053038
+        .long	3191370264
+        .long	0
+        .long	3222732800
+        .long	0
+        .long	1072693248
+        .long	0
+        .long	0
+        .long	0
+        .long	0
+        .long	871679747
+        .long	1016222468
+        .long	1586311569
+        .long	1072693232
+        .long	4199724405
+        .long	1055867613
+        .long	3041006250
+        .long	3203351246
+        .long	482130003
+        .long	1055184672
+        .long	1689676855
+        .long	3201619703
+        .long	116121201
+        .long	1052814264
+        .long	4166318198
+        .long	3198564764
+        .long	388552649
+        .long	1049191609
+        .long	1384400086
+        .long	3194577312
+        .long	135589376
+        .long	1044819515
+        .long	2497367318
+        .long	3189906305
+        .long	0
+        .long	3222863872
+        .long	0
+        .long	1072693248
+        .long	0
+        .long	0
+        .long	0
+        .long	0
+        .long	752986014
+        .long	1014740322
+        .long	1072834312
+        .long	1072693242
+        .long	1389704451
+        .long	1054277685
+        .long	817998738
+        .long	3201761329
+        .long	996777029
+        .long	1053731553
+        .long	811547911
+        .long	3200166603
+        .long	1604093935
+        .long	1051232383
+        .long	2381858127
+        .long	3197131472
+        .long	806055999
+        .long	1047703656
+        .long	443662424
+        .long	3193089938
+        .long	2855612429
+        .long	1043379518
+        .long	3671581230
+        .long	3188373004
+        .long	0
+        .long	3222994944
+        .long	0
+        .long	1072693248
+        .long	0
+        .long	0
+        .long	0
+        .long	0
+        .long	4161630806
+        .long	1015796140
+        .long	3799386689
+        .long	1072693245
+        .long	516062805
+        .long	1052830799
+        .long	6188716
+        .long	3200314446
+        .long	79447568
+        .long	1052151909
+        .long	223529141
+        .long	3198586975
+        .long	1557009707
+        .long	1049758991
+        .long	1527834451
+        .long	3195539792
+        .long	3841571054
+        .long	1046184222
+        .long	3228035136
+        .long	3191570603
+        .long	2497745717
+        .long	1041799395
+        .long	3127975351
+        .long	3186863029
+        .long	0
+        .long	3223126016
+        .long	0
+        .long	1072693248
+        .long	0
+        .long	0
+        .long	0
+        .long	0
+        .long	3013228433
+        .long	1015734301
+        .long	952591976
+        .long	1072693247
+        .long	3849195912
+        .long	1051256594
+        .long	1248135057
+        .long	3198740242
+        .long	1658384276
+        .long	1050712587
+        .long	3312197895
+        .long	3197147657
+        .long	2426751598
+        .long	1048219658
+        .long	2075412918
+        .long	3194074453
+        .long	1194511818
+        .long	1044659399
+        .long	2861395540
+        .long	3190045864
+        .long	1105252788
+        .long	1040325059
+        .long	278204179
+        .long	3185374362
+        .long	0
+        .long	3223257088
+        .long	0
+        .long	1072693248
+        .long	0
+        .long	0
+        .long	0
+        .long	0
+        .long	4084683796
+        .long	1014352664
+        .long	3549182448
+        .long	1072693247
+        .long	4170486715
+        .long	1048984034
+        .long	3652359522
+        .long	3196467682
+        .long	1780445294
+        .long	1048420995
+        .long	3329441198
+        .long	3194856066
+        .long	663245309
+        .long	1045935418
+        .long	1918070306
+        .long	3191839818
+        .long	4225866973
+        .long	1042419329
+        .long	1974315224
+        .long	3187805832
+        .long	847480060
+        .long	1038120500
+        .long	2386310431
+        .long	3183105031
+        .long	0
+        .long	3223388160
+        .long	0
+        .long	1072693248
+        .long	0
+        .long	0
+        .long	0
+        .long	0
+        .long	951119343
+        .long	1016641415
+        .long	4194036288
+        .long	1072693247
+        .long	4207053894
+        .long	1045958742
+        .long	4131013457
+        .long	3193442390
+        .long	2503178506
+        .long	1045433060
+        .long	2309798544
+        .long	3191868132
+        .long	1503762043
+        .long	1042918157
+        .long	762244907
+        .long	3188792499
+        .long	3745081608
+        .long	1039371450
+        .long	3106729171
+        .long	3184757959
+        .long	3799011378
+        .long	1035063995
+        .long	693003136
+        .long	3180102041
+        .long	0
+        .long	3223519232
+        .long	0
+        .long	1072693248
+        .long	0
+        .long	0
+        .long	0
+        .long	0
+        .long	1712896388
+        .long	1016000193
+        .long	4281307769
+        .long	1072693247
+        .long	3495080264
+        .long	1042943408
+        .long	3483806577
+        .long	3190427056
+        .long	3577360645
+        .long	1042374261
+        .long	3557467263
+        .long	3188809333
+        .long	3692227868
+        .long	1039911516
+        .long	1459944482
+        .long	3185739496
+        .long	624248087
+        .long	1036331657
+        .long	3930021706
+        .long	3181718167
+        .long	439009527
+        .long	1032014849
+        .long	3184212578
+        .long	3177110789
+        .long	0
+        .long	3223650304
+        .long	0
+        .long	1072693248
+        .long	0
+        .long	0
+        .long	0
+        .long	0
+        .long	1958475666
+        .long	1013700788
+        .long	4293118680
+        .long	1072693247
+        .long	3829159519
+        .long	1039938855
+        .long	3827364885
+        .long	3187422503
+        .long	2374004141
+        .long	1039322650
+        .long	2380228874
+        .long	3185757722
+        .long	853065064
+        .long	1036916376
+        .long	3897809499
+        .long	3182694159
+        .long	2467115425
+        .long	1033300621
+        .long	2966460473
+        .long	3178687133
+        .long	4249027489
+        .long	1028973684
+        .long	3391824522
+        .long	3174085926
+        .long	0
+        .long	3223781376
+        .long	0
+        .long	1072693248
+        .long	0
+        .long	0
+        .long	0
+        .long	0
+        .long	1028808661
+        .long	1012328597
+        .long	4294717113
+        .long	1072693247
+        .long	2759857858
+        .long	1036945975
+        .long	2759440340
+        .long	3184429623
+        .long	217750550
+        .long	1036278821
+        .long	228557927
+        .long	3182713893
+        .long	868996329
+        .long	1033914811
+        .long	130294465
+        .long	3179657124
+        .long	3979034581
+        .long	1030279068
+        .long	1690522291
+        .long	3175665582
+        .long	141102418
+        .long	1025941166
+        .long	3942643114
+        .long	3171030731
+        .long	0
+        .long	3223912448
+        .long	0
+        .long	1072693248
+        .long	0
+        .long	0
+        .long	0
+        .long	0
+        .long	2461075155
+        .long	1015729939
+        .long	4294933437
+        .long	1072693247
+        .long	2559161110
+        .long	1033930834
+        .long	2559046852
+        .long	3181414482
+        .long	3206412049
+        .long	1033243416
+        .long	3218709064
+        .long	3179678488
+        .long	2091270467
+        .long	1030857342
+        .long	245853585
+        .long	3176629075
+        .long	1555900931
+        .long	1027267783
+        .long	1186881303
+        .long	3172654298
+        .long	1695278520
+        .long	1022918007
+        .long	1853146834
+        .long	3167983022
+        .long	0
+        .long	3224043520
+        .long	0
+        .long	1072693248
+        .long	0
+        .long	0
+        .long	0
+        .long	0
+        .long	2502502488
+        .long	1016572066
+        .long	4294962713
+        .long	1072693247
+        .long	3137376149
+        .long	1030874690
+        .long	3137268820
+        .long	3178358338
+        .long	1097103169
+        .long	1030217134
+        .long	1110504267
+        .long	3176652206
+        .long	1068377398
+        .long	1027807171
+        .long	222176953
+        .long	3173610756
+        .long	3440315131
+        .long	1024267613
+        .long	1199778592
+        .long	3169654130
+        .long	257981480
+        .long	1019904983
+        .long	1388437918
+        .long	3164943417
+        .long	0
+        .long	3224174592
+        .long	0
+        .long	1072693248
+        .long	0
+        .long	0
+        .long	0
+        .long	0
+        .long	3418697838
+        .long	1016821878
+        .long	4294966675
+        .long	1072693247
+        .long	3798207862
+        .long	1027825953
+        .long	3798094058
+        .long	3175309601
+        .long	3391459718
+        .long	1027200727
+        .long	3405981646
+        .long	3173635799
+        .long	3694208074
+        .long	1024764900
+        .long	2192272311
+        .long	3170602971
+        .long	1464408928
+        .long	1021279479
+        .long	2201370875
+        .long	3166665997
+        .long	4139632468
+        .long	1016902930
+        .long	2981161402
+        .long	3161912586
+        .long	0
+        .long	3224305664
+        .long	0
+        .long	1072693248
+        .long	0
+        .long	0
+        .long	0
+        .long	0
+        .long	3589768515
+        .long	1013972501
+        .long	4294967265
+        .long	1072693247
+        .long	2293865510
+        .long	1023336450
+        .long	2097549026
+        .long	3170820098
+        .long	2721138850
+        .long	1022661962
+        .long	1571631120
+        .long	3169097035
+        .long	3716649917
+        .long	1020295299
+        .long	3146231247
+        .long	3166041588
+        .long	84506245
+        .long	1016656297
+        .long	2231398946
+        .long	3162043093
+        .long	3305646943
+        .long	1012441980
+        .long	402214167
+        .long	3157503609
+        .long	0
+        .long	3224436736
+        .long	0
+        .long	1072693248
+        .long	0
+        .long	0
+        .long	0
+        .long	0
+        .long	2152156943
+        .long	1016184605
+        .long	4294967294
+        .long	1072693247
+        .long	1074684533
+        .long	1018634353
+        .long	1074437943
+        .long	3166118001
+        .long	967276073
+        .long	1018090988
+        .long	995296768
+        .long	3164526060
+        .long	4275132894
+        .long	1015589675
+        .long	304133116
+        .long	3161485853
+        .long	1232215992
+        .long	1012058464
+        .long	559363548
+        .long	3157444977
+        .long	1487618473
+        .long	1007759094
+        .long	2355811294
+        .long	3152771929
+        .long	3381626085
+        .long	3224537056
+        .long	0
+        .long	1072693248
+        .long	0
+        .long	0
+        .long	0
+        .long	0
+        .long	0
+        .long	0
+        .long	0
+        .long	1072693248
+        .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	0
+        .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	0
+        .long	0
+        .long	0
+        .long	0
+        .long	4294967295
+        .long	0
+        .long	4294967295
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .long	0
+        .long	2147483648
+        .long	0
+        .long	2147483648
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .long	4294967295
+        .long	2147483647
+        .long	4294967295
+        .long	2147483647
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .long	2147352576
+        .long	2147352576
+        .long	2147352576
+        .long	2147352576
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .long	2145386496
+        .long	2145386496
+        .long	2145386496
+        .long	2145386496
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .long	1069416448
+        .long	1069416448
+        .long	1069416448
+        .long	1069416448
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .long	7733248
+        .long	7733248
+        .long	7733248
+        .long	7733248
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .long	535822336
+        .long	535822336
+        .long	535822336
+        .long	535822336
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .type	__svml_dtanh_data_internal,@object
+        .size	__svml_dtanh_data_internal,10816
+        .align 8
+
+__dtanh_la__imldTanhTab:
+        .long	0
+        .long	1072693248
+        .long	0
+        .long	3220176896
+        .type	__dtanh_la__imldTanhTab,@object
+        .size	__dtanh_la__imldTanhTab,16
diff --git a/sysdeps/x86_64/fpu/multiarch/svml_d_tanh4_core-sse.S b/sysdeps/x86_64/fpu/multiarch/svml_d_tanh4_core-sse.S
new file mode 100644
index 0000000000..80e85c47ec
--- /dev/null
+++ b/sysdeps/x86_64/fpu/multiarch/svml_d_tanh4_core-sse.S
@@ -0,0 +1,20 @@ 
+/* SSE version of vectorized tanh, vector length is 4.
+   Copyright (C) 2021 Free Software Foundation, Inc.
+   This file is part of the GNU C Library.
+
+   The GNU C Library is free software; you can redistribute it and/or
+   modify it under the terms of the GNU Lesser General Public
+   License as published by the Free Software Foundation; either
+   version 2.1 of the License, or (at your option) any later version.
+
+   The GNU C Library is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+   Lesser General Public License for more details.
+
+   You should have received a copy of the GNU Lesser General Public
+   License along with the GNU C Library; if not, see
+   <https://www.gnu.org/licenses/>.  */
+
+#define _ZGVdN4v_tanh _ZGVdN4v_tanh_sse_wrapper
+#include "../svml_d_tanh4_core.S"
diff --git a/sysdeps/x86_64/fpu/multiarch/svml_d_tanh4_core.c b/sysdeps/x86_64/fpu/multiarch/svml_d_tanh4_core.c
new file mode 100644
index 0000000000..a26e62052b
--- /dev/null
+++ b/sysdeps/x86_64/fpu/multiarch/svml_d_tanh4_core.c
@@ -0,0 +1,27 @@ 
+/* Multiple versions of vectorized tanh, vector length is 4.
+   Copyright (C) 2021 Free Software Foundation, Inc.
+   This file is part of the GNU C Library.
+
+   The GNU C Library is free software; you can redistribute it and/or
+   modify it under the terms of the GNU Lesser General Public
+   License as published by the Free Software Foundation; either
+   version 2.1 of the License, or (at your option) any later version.
+
+   The GNU C Library is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+   Lesser General Public License for more details.
+
+   You should have received a copy of the GNU Lesser General Public
+   License along with the GNU C Library; if not, see
+   <https://www.gnu.org/licenses/>.  */
+
+#define SYMBOL_NAME _ZGVdN4v_tanh
+#include "ifunc-mathvec-avx2.h"
+
+libc_ifunc_redirected (REDIRECT_NAME, SYMBOL_NAME, IFUNC_SELECTOR ());
+
+#ifdef SHARED
+__hidden_ver1 (_ZGVdN4v_tanh, __GI__ZGVdN4v_tanh, __redirect__ZGVdN4v_tanh)
+  __attribute__ ((visibility ("hidden")));
+#endif
diff --git a/sysdeps/x86_64/fpu/multiarch/svml_d_tanh4_core_avx2.S b/sysdeps/x86_64/fpu/multiarch/svml_d_tanh4_core_avx2.S
new file mode 100644
index 0000000000..034628315e
--- /dev/null
+++ b/sysdeps/x86_64/fpu/multiarch/svml_d_tanh4_core_avx2.S
@@ -0,0 +1,3308 @@ 
+/* Function tanh vectorized with AVX2.
+   Copyright (C) 2021 Free Software Foundation, Inc.
+   This file is part of the GNU C Library.
+
+   The GNU C Library is free software; you can redistribute it and/or
+   modify it under the terms of the GNU Lesser General Public
+   License as published by the Free Software Foundation; either
+   version 2.1 of the License, or (at your option) any later version.
+
+   The GNU C Library is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+   Lesser General Public License for more details.
+
+   You should have received a copy of the GNU Lesser General Public
+   License along with the GNU C Library; if not, see
+   https://www.gnu.org/licenses/.  */
+
+/*
+ * ALGORITHM DESCRIPTION:
+ *
+ *   NOTE: Since the hyperbolic tangent function is odd
+ *         (tanh(x) = -tanh(-x)), below algorithm deals with the absolute
+ *         value of the argument |x|: tanh(x) = sign(x) * tanh(|x|)
+ *
+ *   We use a table lookup method to compute tanh(|x|).
+ *   The basic idea is to split the input range into a number of subintervals
+ *   and to approximate tanh(.) with a polynomial on each of them.
+ *
+ *   IEEE SPECIAL CONDITIONS:
+ *   x = [+,-]0, r = [+,-]0
+ *   x = +Inf,   r = +1
+ *   x = -Inf,   r = -1
+ *   x = QNaN,   r = QNaN
+ *   x = SNaN,   r = QNaN
+ *
+ *
+ *   ALGORITHM DETAILS
+ *   We handle special values in a callout function, aside from main path
+ *   computations. "Special" for this algorithm are:
+ *   INF, NAN, |x| > HUGE_THRESHOLD
+ *
+ *
+ *   Main path computations are organized as follows:
+ *   Actually we split the interval [0, SATURATION_THRESHOLD)
+ *   into a number of subintervals.  On each subinterval we approximate tanh(.)
+ *   with a minimax polynomial of pre-defined degree. Polynomial coefficients
+ *   are computed beforehand and stored in table. We also use
+ *
+ *       y := |x| + B,
+ *
+ *   here B depends on subinterval and is used to make argument
+ *   closer to zero.
+ *   We also add large fake interval [SATURATION_THRESHOLD, HUGE_THRESHOLD],
+ *   where 1.0 + 0.0*y + 0.0*y^2 ... coefficients are stored - just to
+ *   preserve main path computation logic but return 1.0 for all arguments.
+ *
+ *   Hence reconstruction looks as follows:
+ *   we extract proper polynomial and range reduction coefficients
+ *        (Pj and B), corresponding to subinterval, to which |x| belongs,
+ *        and return
+ *
+ *       r := sign(x) * (P0 + P1 * y + ... + Pn * y^n)
+ *
+ *   NOTE: we use multiprecision technique to multiply and sum the first
+ *         K terms of the polynomial. So Pj, j = 0..K are stored in
+ *         table each as a pair of target precision numbers (Pj and PLj) to
+ *         achieve wider than target precision.
+ *
+ *
+ */
+
+#include <sysdep.h>
+
+        .text
+	.section .text.avx2,"ax",@progbits
+ENTRY(_ZGVdN4v_tanh_avx2)
+        pushq     %rbp
+        cfi_def_cfa_offset(16)
+        movq      %rsp, %rbp
+        cfi_def_cfa(6, 16)
+        cfi_offset(6, -16)
+        andq      $-64, %rsp
+        subq      $384, %rsp
+        lea       2720+__svml_dtanh_data_internal(%rip), %rcx
+        vmovupd   %ymm0, (%rsp)
+
+/* if VMIN, VMAX is defined for I type */
+        vpxor     %xmm5, %xmm5, %xmm5
+        vmovups   %ymm15, 320(%rsp)
+        vmovups   %ymm14, 288(%rsp)
+        .cfi_escape 0x10, 0xe1, 0x00, 0x0e, 0x38, 0x1c, 0x0d, 0xc0, 0xff, 0xff, 0xff, 0x1a, 0x0d, 0xa0, 0xff, 0xff, 0xff, 0x22
+        .cfi_escape 0x10, 0xe2, 0x00, 0x0e, 0x38, 0x1c, 0x0d, 0xc0, 0xff, 0xff, 0xff, 0x1a, 0x0d, 0xc0, 0xff, 0xff, 0xff, 0x22
+
+/*  Constant loading  */
+        vmovups   10688+__svml_dtanh_data_internal(%rip), %xmm14
+        vmovups   %ymm13, 256(%rsp)
+        vmovups   %ymm12, 224(%rsp)
+        vmovups   %ymm11, 192(%rsp)
+        vmovups   %ymm10, 160(%rsp)
+        vmovups   %ymm8, 32(%rsp)
+        vmovups   %ymm9, 96(%rsp)
+        vandpd    10432+__svml_dtanh_data_internal(%rip), %ymm0, %ymm1
+        vandpd    10368+__svml_dtanh_data_internal(%rip), %ymm0, %ymm2
+        vextractf128 $1, %ymm0, %xmm7
+        vshufps   $221, %xmm7, %xmm0, %xmm6
+
+/* Here huge arguments, INF and NaNs are filtered out to callout. */
+        vpand     10496+__svml_dtanh_data_internal(%rip), %xmm6, %xmm4
+        .cfi_escape 0x10, 0xdb, 0x00, 0x0e, 0x38, 0x1c, 0x0d, 0xc0, 0xff, 0xff, 0xff, 0x1a, 0x0d, 0xa0, 0xfe, 0xff, 0xff, 0x22
+        .cfi_escape 0x10, 0xdc, 0x00, 0x0e, 0x38, 0x1c, 0x0d, 0xc0, 0xff, 0xff, 0xff, 0x1a, 0x0d, 0xe0, 0xfe, 0xff, 0xff, 0x22
+        .cfi_escape 0x10, 0xdd, 0x00, 0x0e, 0x38, 0x1c, 0x0d, 0xc0, 0xff, 0xff, 0xff, 0x1a, 0x0d, 0x20, 0xff, 0xff, 0xff, 0x22
+        .cfi_escape 0x10, 0xde, 0x00, 0x0e, 0x38, 0x1c, 0x0d, 0xc0, 0xff, 0xff, 0xff, 0x1a, 0x0d, 0x40, 0xff, 0xff, 0xff, 0x22
+        .cfi_escape 0x10, 0xdf, 0x00, 0x0e, 0x38, 0x1c, 0x0d, 0xc0, 0xff, 0xff, 0xff, 0x1a, 0x0d, 0x60, 0xff, 0xff, 0xff, 0x22
+        .cfi_escape 0x10, 0xe0, 0x00, 0x0e, 0x38, 0x1c, 0x0d, 0xc0, 0xff, 0xff, 0xff, 0x1a, 0x0d, 0x80, 0xff, 0xff, 0xff, 0x22
+        vpsubd    10624+__svml_dtanh_data_internal(%rip), %xmm4, %xmm15
+        vpcmpgtd  %xmm5, %xmm15, %xmm0
+        vpand     %xmm0, %xmm15, %xmm13
+        vpcmpgtd  %xmm14, %xmm15, %xmm0
+        blendvps  %xmm0, %xmm14, %xmm13
+
+/*
+ * VSHRIMM( I, iIndex, = iIndex, (17 - 4) );
+ * VGATHER_MATRIX( L2D, p, TAB._dbP, iIndex, 0, T_ITEM_SIZE, T_ITEM_GRAN, 13, 0, 0 );
+ */
+        vpsrld    $10, %xmm13, %xmm12
+        vmovd     %xmm12, %edx
+        vpcmpgtd  10560+__svml_dtanh_data_internal(%rip), %xmm4, %xmm3
+        vmovmskps %xmm3, %r8d
+        vpextrd   $1, %xmm12, %eax
+        movslq    %edx, %rdx
+        movslq    %eax, %rax
+        vpextrd   $2, %xmm12, %r9d
+        vpextrd   $3, %xmm12, %r10d
+        movslq    %r9d, %r9
+        movslq    %r10d, %r10
+        vmovupd   -96(%rdx,%rcx), %xmm11
+        vmovupd   -96(%rax,%rcx), %xmm10
+        vmovupd   -80(%rax,%rcx), %xmm3
+        vmovupd   -80(%rdx,%rcx), %xmm6
+        vmovupd   -64(%rdx,%rcx), %xmm13
+        vmovupd   -64(%rax,%rcx), %xmm12
+        vinsertf128 $1, -96(%r9,%rcx), %ymm11, %ymm8
+        vinsertf128 $1, -96(%r10,%rcx), %ymm10, %ymm7
+        vmovupd   -48(%rdx,%rcx), %xmm9
+        vunpckhpd %ymm7, %ymm8, %ymm0
+        vmovupd   -48(%rax,%rcx), %xmm8
+        vinsertf128 $1, -80(%r9,%rcx), %ymm6, %ymm4
+        vinsertf128 $1, -80(%r10,%rcx), %ymm3, %ymm5
+        vunpcklpd %ymm5, %ymm4, %ymm15
+        vunpckhpd %ymm5, %ymm4, %ymm14
+        vmovupd   -32(%rdx,%rcx), %xmm3
+        vmovupd   -32(%rax,%rcx), %xmm4
+        vinsertf128 $1, -64(%r9,%rcx), %ymm13, %ymm11
+        vinsertf128 $1, -48(%r9,%rcx), %ymm9, %ymm7
+        vinsertf128 $1, -64(%r10,%rcx), %ymm12, %ymm10
+        vinsertf128 $1, -48(%r10,%rcx), %ymm8, %ymm6
+        vunpcklpd %ymm10, %ymm11, %ymm13
+        vunpckhpd %ymm10, %ymm11, %ymm12
+        vunpcklpd %ymm6, %ymm7, %ymm11
+        vunpckhpd %ymm6, %ymm7, %ymm10
+        vmovupd   -16(%rdx,%rcx), %xmm7
+        vmovupd   -16(%rax,%rcx), %xmm6
+        vinsertf128 $1, -32(%r9,%rcx), %ymm3, %ymm5
+        vinsertf128 $1, -32(%r10,%rcx), %ymm4, %ymm8
+        vunpcklpd %ymm8, %ymm5, %ymm9
+        vunpckhpd %ymm8, %ymm5, %ymm8
+        vmovupd   (%rax,%rcx), %xmm5
+        vinsertf128 $1, -16(%r9,%rcx), %ymm7, %ymm3
+        vinsertf128 $1, -16(%r10,%rcx), %ymm6, %ymm4
+        vunpcklpd %ymm4, %ymm3, %ymm7
+        vunpckhpd %ymm4, %ymm3, %ymm6
+        vmovupd   (%rdx,%rcx), %xmm3
+        vinsertf128 $1, (%r9,%rcx), %ymm3, %ymm4
+        vinsertf128 $1, (%r10,%rcx), %ymm5, %ymm5
+        vunpcklpd %ymm5, %ymm4, %ymm3
+        vaddpd    %ymm3, %ymm1, %ymm1
+        vfmadd213pd %ymm7, %ymm1, %ymm6
+        vfmadd213pd %ymm8, %ymm1, %ymm6
+        vfmadd213pd %ymm9, %ymm1, %ymm6
+        vfmadd213pd %ymm10, %ymm1, %ymm6
+        vfmadd213pd %ymm11, %ymm1, %ymm6
+        vfmadd213pd %ymm12, %ymm1, %ymm6
+        vfmadd213pd %ymm13, %ymm1, %ymm6
+        vfmadd213pd %ymm14, %ymm1, %ymm6
+        vfmadd213pd %ymm15, %ymm1, %ymm6
+        vfmadd213pd %ymm0, %ymm1, %ymm6
+        vorpd     %ymm2, %ymm6, %ymm0
+        testl     %r8d, %r8d
+        jne       L(2)
+
+L(1):
+        vmovups   32(%rsp), %ymm8
+        cfi_restore(91)
+        vmovups   96(%rsp), %ymm9
+        cfi_restore(92)
+        vmovups   160(%rsp), %ymm10
+        cfi_restore(93)
+        vmovups   192(%rsp), %ymm11
+        cfi_restore(94)
+        vmovups   224(%rsp), %ymm12
+        cfi_restore(95)
+        vmovups   256(%rsp), %ymm13
+        cfi_restore(96)
+        vmovups   288(%rsp), %ymm14
+        cfi_restore(97)
+        vmovups   320(%rsp), %ymm15
+        cfi_restore(98)
+        movq      %rbp, %rsp
+        popq      %rbp
+        cfi_def_cfa(7, 8)
+        cfi_restore(6)
+        ret
+        cfi_def_cfa(6, 16)
+        cfi_offset(6, -16)
+        .cfi_escape 0x10, 0xdb, 0x00, 0x0e, 0x38, 0x1c, 0x0d, 0xc0, 0xff, 0xff, 0xff, 0x1a, 0x0d, 0xa0, 0xfe, 0xff, 0xff, 0x22
+        .cfi_escape 0x10, 0xdc, 0x00, 0x0e, 0x38, 0x1c, 0x0d, 0xc0, 0xff, 0xff, 0xff, 0x1a, 0x0d, 0xe0, 0xfe, 0xff, 0xff, 0x22
+        .cfi_escape 0x10, 0xdd, 0x00, 0x0e, 0x38, 0x1c, 0x0d, 0xc0, 0xff, 0xff, 0xff, 0x1a, 0x0d, 0x20, 0xff, 0xff, 0xff, 0x22
+        .cfi_escape 0x10, 0xde, 0x00, 0x0e, 0x38, 0x1c, 0x0d, 0xc0, 0xff, 0xff, 0xff, 0x1a, 0x0d, 0x40, 0xff, 0xff, 0xff, 0x22
+        .cfi_escape 0x10, 0xdf, 0x00, 0x0e, 0x38, 0x1c, 0x0d, 0xc0, 0xff, 0xff, 0xff, 0x1a, 0x0d, 0x60, 0xff, 0xff, 0xff, 0x22
+        .cfi_escape 0x10, 0xe0, 0x00, 0x0e, 0x38, 0x1c, 0x0d, 0xc0, 0xff, 0xff, 0xff, 0x1a, 0x0d, 0x80, 0xff, 0xff, 0xff, 0x22
+        .cfi_escape 0x10, 0xe1, 0x00, 0x0e, 0x38, 0x1c, 0x0d, 0xc0, 0xff, 0xff, 0xff, 0x1a, 0x0d, 0xa0, 0xff, 0xff, 0xff, 0x22
+        .cfi_escape 0x10, 0xe2, 0x00, 0x0e, 0x38, 0x1c, 0x0d, 0xc0, 0xff, 0xff, 0xff, 0x1a, 0x0d, 0xc0, 0xff, 0xff, 0xff, 0x22
+
+L(2):
+        vmovupd   (%rsp), %ymm1
+        vmovupd   %ymm0, 128(%rsp)
+        vmovupd   %ymm1, 64(%rsp)
+        je        L(1)
+        xorl      %eax, %eax
+        vzeroupper
+        movq      %rsi, 8(%rsp)
+        movq      %rdi, (%rsp)
+        movq      %r12, 24(%rsp)
+        .cfi_escape 0x10, 0x04, 0x0e, 0x38, 0x1c, 0x0d, 0xc0, 0xff, 0xff, 0xff, 0x1a, 0x0d, 0x88, 0xfe, 0xff, 0xff, 0x22
+        .cfi_escape 0x10, 0x05, 0x0e, 0x38, 0x1c, 0x0d, 0xc0, 0xff, 0xff, 0xff, 0x1a, 0x0d, 0x80, 0xfe, 0xff, 0xff, 0x22
+        .cfi_escape 0x10, 0x0c, 0x0e, 0x38, 0x1c, 0x0d, 0xc0, 0xff, 0xff, 0xff, 0x1a, 0x0d, 0x98, 0xfe, 0xff, 0xff, 0x22
+        movl      %eax, %r12d
+        movq      %r13, 16(%rsp)
+        .cfi_escape 0x10, 0x0d, 0x0e, 0x38, 0x1c, 0x0d, 0xc0, 0xff, 0xff, 0xff, 0x1a, 0x0d, 0x90, 0xfe, 0xff, 0xff, 0x22
+        movl      %r8d, %r13d
+
+L(3):
+        btl       %r12d, %r13d
+        jc        L(5)
+
+L(4):
+        incl      %r12d
+        cmpl      $4, %r12d
+        jl        L(3)
+        movq      8(%rsp), %rsi
+        cfi_restore(4)
+        movq      (%rsp), %rdi
+        cfi_restore(5)
+        movq      24(%rsp), %r12
+        cfi_restore(12)
+        movq      16(%rsp), %r13
+        cfi_restore(13)
+        vmovupd   128(%rsp), %ymm0
+        jmp       L(1)
+        .cfi_escape 0x10, 0x04, 0x0e, 0x38, 0x1c, 0x0d, 0xc0, 0xff, 0xff, 0xff, 0x1a, 0x0d, 0x88, 0xfe, 0xff, 0xff, 0x22
+        .cfi_escape 0x10, 0x05, 0x0e, 0x38, 0x1c, 0x0d, 0xc0, 0xff, 0xff, 0xff, 0x1a, 0x0d, 0x80, 0xfe, 0xff, 0xff, 0x22
+        .cfi_escape 0x10, 0x0c, 0x0e, 0x38, 0x1c, 0x0d, 0xc0, 0xff, 0xff, 0xff, 0x1a, 0x0d, 0x98, 0xfe, 0xff, 0xff, 0x22
+        .cfi_escape 0x10, 0x0d, 0x0e, 0x38, 0x1c, 0x0d, 0xc0, 0xff, 0xff, 0xff, 0x1a, 0x0d, 0x90, 0xfe, 0xff, 0xff, 0x22
+
+L(5):
+        lea       64(%rsp,%r12,8), %rdi
+        lea       128(%rsp,%r12,8), %rsi
+        call      __svml_dtanh_cout_rare_internal
+        jmp       L(4)
+
+END(_ZGVdN4v_tanh_avx2)
+
+        .align    16,0x90
+
+__svml_dtanh_cout_rare_internal:
+
+        cfi_startproc
+
+        lea       __dtanh_la__imldTanhTab(%rip), %rdx
+        movb      7(%rdi), %al
+        andb      $-128, %al
+        shrb      $7, %al
+        movzbl    %al, %ecx
+        movzwl    6(%rdi), %eax
+        andl      $32752, %eax
+        shrl      $4, %eax
+        movq      (%rdx,%rcx,8), %rdx
+        cmpl      $2047, %eax
+        je        L(9)
+        cmpl      $2046, %eax
+        jne       L(7)
+
+L(6):
+        movq      %rdx, (%rsi)
+        jmp       L(8)
+
+L(7):
+        movsd     (%rdi), %xmm1
+        movsd     __dtanh_la__imldTanhTab(%rip), %xmm0
+        addsd     %xmm1, %xmm0
+        mulsd     %xmm0, %xmm1
+        movsd     %xmm1, (%rsi)
+
+L(8):
+        xorl      %eax, %eax
+        ret
+
+L(9):
+        testl     $1048575, 4(%rdi)
+        jne       L(10)
+        cmpl      $0, (%rdi)
+        je        L(6)
+
+L(10):
+        movsd     (%rdi), %xmm0
+        addsd     %xmm0, %xmm0
+        movsd     %xmm0, (%rsi)
+        jmp       L(8)
+
+        cfi_endproc
+
+        .type	__svml_dtanh_cout_rare_internal,@function
+        .size	__svml_dtanh_cout_rare_internal,.-__svml_dtanh_cout_rare_internal
+
+        .section .rodata, "a"
+        .align 64
+
+__svml_dtanh_data_internal:
+        .long	0
+        .long	0
+        .long	0
+        .long	1070333952
+        .long	0
+        .long	1070858240
+        .long	0
+        .long	1071382528
+        .long	0
+        .long	1071906816
+        .long	0
+        .long	1072431104
+        .long	0
+        .long	1072955392
+        .long	0
+        .long	1073479680
+        .long	0
+        .long	1074003968
+        .long	0
+        .long	1074528256
+        .long	0
+        .long	1075052544
+        .long	0
+        .long	1075576832
+        .long	0
+        .long	1076101120
+        .long	0
+        .long	1076625408
+        .long	0
+        .long	1077149696
+        .long	0
+        .long	0
+        .long	0
+        .long	0
+        .long	1097497746
+        .long	1070305232
+        .long	2699715854
+        .long	1070817176
+        .long	3997728823
+        .long	1071273769
+        .long	3938160533
+        .long	1071759175
+        .long	193732629
+        .long	1072072293
+        .long	3144363502
+        .long	1072375075
+        .long	2548249895
+        .long	1072570303
+        .long	638218690
+        .long	1072665176
+        .long	3325726839
+        .long	1072689426
+        .long	2523455249
+        .long	1072693057
+        .long	2200391922
+        .long	1072693244
+        .long	4257836853
+        .long	1072693247
+        .long	4294954840
+        .long	1072693247
+        .long	0
+        .long	1072693248
+        .long	0
+        .long	1072693248
+        .long	0
+        .long	0
+        .long	3167993022
+        .long	1013310014
+        .long	2889539328
+        .long	3159121931
+        .long	394645568
+        .long	1013728265
+        .long	2799920971
+        .long	1015161303
+        .long	754366556
+        .long	1013577885
+        .long	3960180508
+        .long	1014215657
+        .long	69774042
+        .long	3162475851
+        .long	2161066944
+        .long	3162264280
+        .long	923362432
+        .long	1014879086
+        .long	2160345802
+        .long	1014714211
+        .long	3729195158
+        .long	3161626453
+        .long	675671997
+        .long	1015336837
+        .long	1141527416
+        .long	1013957883
+        .long	2209699952
+        .long	3160643600
+        .long	0
+        .long	0
+        .long	0
+        .long	1072693248
+        .long	2750448946
+        .long	1072596012
+        .long	1257606939
+        .long	1072501079
+        .long	2619663609
+        .long	1072338011
+        .long	863303701
+        .long	1072048204
+        .long	2694810990
+        .long	1071654144
+        .long	837003456
+        .long	1070723665
+        .long	472162617
+        .long	1069359818
+        .long	532307062
+        .long	1067137790
+        .long	431106849
+        .long	1064162173
+        .long	329904022
+        .long	1059572972
+        .long	4080160942
+        .long	1053550275
+        .long	1402271583
+        .long	1044493446
+        .long	467296040
+        .long	1032344560
+        .long	26734424
+        .long	1014207804
+        .long	0
+        .long	0
+        .long	1071622681
+        .long	3153114090
+        .long	3948133409
+        .long	3217705130
+        .long	4096956694
+        .long	3218184481
+        .long	2616164369
+        .long	3218465008
+        .long	2620770434
+        .long	3218641845
+        .long	3075958072
+        .long	3218520700
+        .long	1950184789
+        .long	3217978001
+        .long	2686385024
+        .long	3216731525
+        .long	1489441818
+        .long	3214597550
+        .long	1992796697
+        .long	3211642259
+        .long	1952936976
+        .long	3207056478
+        .long	3904162951
+        .long	3201033920
+        .long	1382745445
+        .long	3191977094
+        .long	468673444
+        .long	3179828208
+        .long	3843669553
+        .long	3161691483
+        .long	0
+        .long	0
+        .long	1431655765
+        .long	3218429269
+        .long	3264395793
+        .long	3218178991
+        .long	60595194
+        .long	3217824331
+        .long	1837960166
+        .long	3217124894
+        .long	1964918946
+        .long	3214033516
+        .long	2998587684
+        .long	1068822866
+        .long	3421467326
+        .long	1069267520
+        .long	952003133
+        .long	1068506016
+        .long	1215426504
+        .long	1066495476
+        .long	2650572912
+        .long	1063503494
+        .long	4178958376
+        .long	1059043758
+        .long	3799805457
+        .long	1052940753
+        .long	3704238924
+        .long	1043831645
+        .long	2076585114
+        .long	1031813109
+        .long	1352847351
+        .long	1013591371
+        .long	0
+        .long	0
+        .long	3830371894
+        .long	3169224254
+        .long	74893150
+        .long	1069567437
+        .long	1235750664
+        .long	1069825332
+        .long	916043751
+        .long	1069924975
+        .long	4138411315
+        .long	1069655686
+        .long	829220656
+        .long	1068441660
+        .long	663246204
+        .long	3213477792
+        .long	652268865
+        .long	3214415230
+        .long	3251098232
+        .long	3212868437
+        .long	1480792335
+        .long	3209929101
+        .long	3365608027
+        .long	3205478075
+        .long	3330582883
+        .long	3199375817
+        .long	3573234945
+        .long	3190266717
+        .long	2061970086
+        .long	3178248181
+        .long	3148320390
+        .long	3160026274
+        .long	0
+        .long	0
+        .long	286337717
+        .long	1069617425
+        .long	4261152941
+        .long	1068876190
+        .long	3694459820
+        .long	1067928728
+        .long	2399079031
+        .long	3212381546
+        .long	394897286
+        .long	3215735810
+        .long	3073534041
+        .long	3215860118
+        .long	301960234
+        .long	3214124960
+        .long	3353887502
+        .long	1064191753
+        .long	4200665425
+        .long	1063741482
+        .long	2003926207
+        .long	1061090030
+        .long	2196865207
+        .long	1056528964
+        .long	2107880963
+        .long	1050526402
+        .long	3656860478
+        .long	1041425071
+        .long	881228218
+        .long	1029305120
+        .long	2612840768
+        .long	1011136029
+        .long	0
+        .long	0
+        .long	3722294196
+        .long	3181505049
+        .long	2573001951
+        .long	3216029919
+        .long	4095639908
+        .long	3216151900
+        .long	3272210374
+        .long	3215957253
+        .long	3439280785
+        .long	3214441767
+        .long	628273304
+        .long	1066085542
+        .long	3354767370
+        .long	1066343670
+        .long	300170709
+        .long	1063270296
+        .long	1870156670
+        .long	3209139074
+        .long	1580606479
+        .long	3206808937
+        .long	3818710870
+        .long	3202408589
+        .long	3126817102
+        .long	3196311305
+        .long	3320734688
+        .long	3187224127
+        .long	821170446
+        .long	3175173312
+        .long	3906480775
+        .long	3156975650
+        .long	0
+        .long	0
+        .long	428888587
+        .long	3215696314
+        .long	3125999356
+        .long	3214336891
+        .long	407196569
+        .long	1053816799
+        .long	886258254
+        .long	1066874408
+        .long	2149075781
+        .long	1067351939
+        .long	3888390356
+        .long	1065784643
+        .long	1226056234
+        .long	3211994813
+        .long	178100474
+        .long	3210723675
+        .long	4201249718
+        .long	1058328572
+        .long	3854015760
+        .long	1057324616
+        .long	3621220964
+        .long	1052982118
+        .long	1468766992
+        .long	1046916174
+        .long	2369608770
+        .long	1037879115
+        .long	327127732
+        .long	1025754505
+        .long	747046817
+        .long	1007714190
+        .long	0
+        .long	0
+        .long	4036362527
+        .long	3191151783
+        .long	839661649
+        .long	1067363059
+        .long	4269154241
+        .long	1067251747
+        .long	391446303
+        .long	1066410535
+        .long	2090623151
+        .long	3211993063
+        .long	1751510141
+        .long	3213141508
+        .long	4072216875
+        .long	3209470961
+        .long	3769618983
+        .long	1061976030
+        .long	3462945146
+        .long	1057228123
+        .long	3030849095
+        .long	3202531084
+        .long	4269010901
+        .long	3198361258
+        .long	742615277
+        .long	3192302512
+        .long	3397417437
+        .long	3183265609
+        .long	943110610
+        .long	3171141000
+        .long	371608300
+        .long	3153099348
+        .long	0
+        .long	0
+        .long	1315619150
+        .long	1066820857
+        .long	1001273821
+        .long	3214201652
+        .long	3859675203
+        .long	3212560200
+        .long	725858949
+        .long	3213658423
+        .long	2464052346
+        .long	3212913056
+        .long	1297319750
+        .long	1063307355
+        .long	563735576
+        .long	1062988089
+        .long	2756222736
+        .long	3207203944
+        .long	31207338
+        .long	3204466214
+        .long	434022900
+        .long	1052227234
+        .long	2370591882
+        .long	1048628172
+        .long	588930601
+        .long	1042556347
+        .long	3198977634
+        .long	1033474724
+        .long	1590950759
+        .long	1021415866
+        .long	195904708
+        .long	1003000389
+        .long	0
+        .long	0
+        .long	4252521214
+        .long	3198731457
+        .long	2969857811
+        .long	3217870358
+        .long	575387574
+        .long	3212943727
+        .long	67550217
+        .long	3210922992
+        .long	2955736731
+        .long	1064678043
+        .long	4193848343
+        .long	1063288304
+        .long	1845975253
+        .long	3209397546
+        .long	1025213509
+        .long	3204479174
+        .long	3713384058
+        .long	1055658730
+        .long	4120057883
+        .long	3194988032
+        .long	1573797757
+        .long	3193584787
+        .long	2514726550
+        .long	3187678317
+        .long	15343571
+        .long	3178526042
+        .long	104576940
+        .long	3166444652
+        .long	1147207168
+        .long	3148070554
+        .long	0
+        .long	0
+        .long	1467656669
+        .long	3212977156
+        .long	4154993315
+        .long	1077775111
+        .long	2465966858
+        .long	3214886059
+        .long	71777642
+        .long	1068690118
+        .long	2419763912
+        .long	1061550205
+        .long	1896047360
+        .long	3210612806
+        .long	3723555648
+        .long	1058651288
+        .long	3163703016
+        .long	1057833732
+        .long	1601936705
+        .long	3201383489
+        .long	2535509424
+        .long	3195153293
+        .long	3610885824
+        .long	1043474022
+        .long	1031698712
+        .long	1037527637
+        .long	1497459257
+        .long	1028514042
+        .long	3476455860
+        .long	1016366870
+        .long	758110873
+        .long	998719391
+        .long	0
+        .long	0
+        .long	572446067
+        .long	3204307354
+        .long	926268084
+        .long	1081104698
+        .long	1313112926
+        .long	3217861477
+        .long	3660716
+        .long	1070677720
+        .long	124568711
+        .long	3210757561
+        .long	2123022704
+        .long	1059096046
+        .long	576783408
+        .long	1059279430
+        .long	1651052980
+        .long	3204387494
+        .long	3164866735
+        .long	1051430920
+        .long	409335328
+        .long	1046695415
+        .long	3481520755
+        .long	3188046619
+        .long	1140549474
+        .long	3182373569
+        .long	708689751
+        .long	3173247717
+        .long	2627769694
+        .long	3161153086
+        .long	3804346926
+        .long	3143551592
+        .long	0
+        .long	0
+        .long	2302818369
+        .long	1064188902
+        .long	526101185
+        .long	3235013457
+        .long	2975776348
+        .long	1075224435
+        .long	1103981749
+        .long	3223699933
+        .long	4261798097
+        .long	3210280329
+        .long	30781306
+        .long	1064564655
+        .long	3939597931
+        .long	3206430909
+        .long	1816466405
+        .long	1055007949
+        .long	3868125859
+        .long	3190076997
+        .long	4218600579
+        .long	3192569835
+        .long	4167655123
+        .long	1037376568
+        .long	952533803
+        .long	1032000428
+        .long	895641221
+        .long	1022851193
+        .long	1237761065
+        .long	1010835452
+        .long	2902086315
+        .long	3133082401
+        .long	0
+        .long	0
+        .long	1899646778
+        .long	3207205638
+        .long	2434183270
+        .long	3238288976
+        .long	621380814
+        .long	1078065849
+        .long	247717525
+        .long	3225783561
+        .long	1611742563
+        .long	3212088477
+        .long	537725662
+        .long	1065131990
+        .long	3769436831
+        .long	1057148224
+        .long	3759797009
+        .long	3196422840
+        .long	842759416
+        .long	3195613094
+        .long	1736926210
+        .long	1043198029
+        .long	3915271468
+        .long	3180709675
+        .long	807416070
+        .long	3176507548
+        .long	3147759461
+        .long	3167409843
+        .long	3443382404
+        .long	3155325020
+        .long	1202615797
+        .long	3129870924
+        .long	0
+        .long	0
+        .long	1841653873
+        .long	3210074087
+        .long	2157744327
+        .long	1095928888
+        .long	3038317314
+        .long	3229013375
+        .long	2291108570
+        .long	1082519711
+        .long	707775397
+        .long	1067599411
+        .long	445214669
+        .long	3216153989
+        .long	3815354898
+        .long	1054410330
+        .long	1285070896
+        .long	3199787450
+        .long	1722630166
+        .long	1047526663
+        .long	2672844635
+        .long	3188483010
+        .long	1805520457
+        .long	3179260705
+        .long	542550567
+        .long	1026041526
+        .long	392361251
+        .long	1017320419
+        .long	562647833
+        .long	1005205418
+        .long	4253488278
+        .long	988137457
+        .long	0
+        .long	0
+        .long	3077187303
+        .long	1060497018
+        .long	1652392454
+        .long	1099206368
+        .long	414484972
+        .long	3231848150
+        .long	130592591
+        .long	1084602513
+        .long	1951534810
+        .long	1068932483
+        .long	2677544726
+        .long	3216895313
+        .long	2338009969
+        .long	3203411240
+        .long	302629286
+        .long	1051889816
+        .long	1274412910
+        .long	3193339538
+        .long	3731558070
+        .long	1038350327
+        .long	3135499196
+        .long	1030352152
+        .long	1329461873
+        .long	3170325324
+        .long	4058709792
+        .long	3161656179
+        .long	2167788642
+        .long	3149540607
+        .long	1602064437
+        .long	3132466971
+        .long	0
+        .long	0
+        .long	2146959360
+        .long	2146959360
+        .long	2146959360
+        .long	2146959360
+        .long	2146959360
+        .long	2146959360
+        .long	2146959360
+        .long	2146959360
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .long	1069547520
+        .long	1069547520
+        .long	1069547520
+        .long	1069547520
+        .long	1069547520
+        .long	1069547520
+        .long	1069547520
+        .long	1069547520
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .long	7864320
+        .long	7864320
+        .long	7864320
+        .long	7864320
+        .long	7864320
+        .long	7864320
+        .long	7864320
+        .long	7864320
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .long	0
+        .long	0
+        .long	0
+        .long	0
+        .long	0
+        .long	1072693248
+        .long	3616958675
+        .long	3172564458
+        .long	1431547708
+        .long	3218429269
+        .long	3390261318
+        .long	3188010876
+        .long	1446529494
+        .long	1069617425
+        .long	913571762
+        .long	3199219810
+        .long	1583612462
+        .long	3215695720
+        .long	2995724807
+        .long	3207222498
+        .long	847913742
+        .long	1066913721
+        .long	1634876930
+        .long	3212167789
+        .long	0
+        .long	0
+        .long	0
+        .long	1072693248
+        .long	0
+        .long	0
+        .long	0
+        .long	0
+        .long	1694159514
+        .long	1010239653
+        .long	966318664
+        .long	1069606551
+        .long	2992375944
+        .long	1072656686
+        .long	1870405289
+        .long	3217070889
+        .long	1411308967
+        .long	3218333047
+        .long	4096824853
+        .long	1068863484
+        .long	2220740425
+        .long	1069365950
+        .long	1401698298
+        .long	3215430111
+        .long	4137473768
+        .long	3215259762
+        .long	2666938667
+        .long	1066889956
+        .long	121190665
+        .long	1066187784
+        .long	821637913
+        .long	3213226090
+        .long	0
+        .long	3217096704
+        .long	0
+        .long	1072693248
+        .long	0
+        .long	0
+        .long	0
+        .long	0
+        .long	1463410348
+        .long	1012925678
+        .long	2389577058
+        .long	1069735062
+        .long	1617794783
+        .long	1072647710
+        .long	1889094329
+        .long	3217191869
+        .long	1210518828
+        .long	3218309813
+        .long	1479174953
+        .long	1069010221
+        .long	3435917531
+        .long	1069290104
+        .long	291210913
+        .long	3215575029
+        .long	464478606
+        .long	3215159746
+        .long	1063797118
+        .long	1067014292
+        .long	3489481042
+        .long	1065955541
+        .long	2916293494
+        .long	3213319415
+        .long	0
+        .long	3217227776
+        .long	0
+        .long	1072693248
+        .long	0
+        .long	0
+        .long	0
+        .long	0
+        .long	1308961311
+        .long	1014934498
+        .long	2204208241
+        .long	1069862983
+        .long	2945950899
+        .long	1072637797
+        .long	1107689125
+        .long	3217310565
+        .long	545938327
+        .long	3218284334
+        .long	3174275192
+        .long	1069150773
+        .long	3754729793
+        .long	1069207728
+        .long	1611554958
+        .long	3215708601
+        .long	2936527704
+        .long	3215052478
+        .long	2983784402
+        .long	1067121823
+        .long	1327150338
+        .long	1065710404
+        .long	3371320326
+        .long	3213391099
+        .long	0
+        .long	3217358848
+        .long	0
+        .long	1072693248
+        .long	0
+        .long	0
+        .long	0
+        .long	0
+        .long	3546392464
+        .long	1015001497
+        .long	631120375
+        .long	1069990256
+        .long	1201634405
+        .long	1072626967
+        .long	266657677
+        .long	3217426771
+        .long	1567732958
+        .long	3218256710
+        .long	883708059
+        .long	1069284653
+        .long	1008115966
+        .long	1069119372
+        .long	2657338981
+        .long	3215830093
+        .long	3402640736
+        .long	3214939036
+        .long	1000796573
+        .long	1067211764
+        .long	53805889
+        .long	1065455799
+        .long	1736607114
+        .long	3213440608
+        .long	0
+        .long	3217489920
+        .long	0
+        .long	1072693248
+        .long	0
+        .long	0
+        .long	0
+        .long	0
+        .long	2741128528
+        .long	1013617020
+        .long	3111451323
+        .long	1070116823
+        .long	1649040643
+        .long	1072615239
+        .long	3411009101
+        .long	3217540290
+        .long	3408666525
+        .long	3218227049
+        .long	60831764
+        .long	1069411415
+        .long	64016149
+        .long	1069025616
+        .long	1202785467
+        .long	3215938891
+        .long	1072151579
+        .long	3214707060
+        .long	1534357116
+        .long	1067283570
+        .long	4218468492
+        .long	1065037194
+        .long	2285827787
+        .long	3213467810
+        .long	0
+        .long	3217620992
+        .long	0
+        .long	1072693248
+        .long	0
+        .long	0
+        .long	0
+        .long	0
+        .long	2659584459
+        .long	1014368295
+        .long	3537749475
+        .long	1070242630
+        .long	3072983457
+        .long	1072602635
+        .long	3507245872
+        .long	3217650938
+        .long	3434758212
+        .long	3218195466
+        .long	3801643091
+        .long	1069530660
+        .long	1128653951
+        .long	1068927067
+        .long	3580298628
+        .long	3216008547
+        .long	1645082338
+        .long	3214462237
+        .long	1048857889
+        .long	1067336943
+        .long	21547694
+        .long	1064510970
+        .long	1433152914
+        .long	3213472968
+        .long	0
+        .long	3217752064
+        .long	0
+        .long	1072693248
+        .long	0
+        .long	0
+        .long	0
+        .long	0
+        .long	2718912981
+        .long	1013914074
+        .long	1823051285
+        .long	1070367623
+        .long	1714227149
+        .long	1072589179
+        .long	2128046799
+        .long	3217758540
+        .long	2655098722
+        .long	3218162081
+        .long	1690074008
+        .long	1069594780
+        .long	353091525
+        .long	1068824353
+        .long	4206393496
+        .long	3216049578
+        .long	824478721
+        .long	3214211899
+        .long	3850924188
+        .long	1067371825
+        .long	2738209029
+        .long	1063668369
+        .long	853664366
+        .long	3213456718
+        .long	0
+        .long	3217883136
+        .long	0
+        .long	1072693248
+        .long	0
+        .long	0
+        .long	0
+        .long	0
+        .long	2312638749
+        .long	1013630664
+        .long	4267025360
+        .long	1070491748
+        .long	3776362539
+        .long	1072574894
+        .long	3063840907
+        .long	3217862932
+        .long	2436606365
+        .long	3218127019
+        .long	582931594
+        .long	1069646387
+        .long	3079837843
+        .long	1068718114
+        .long	3430470362
+        .long	3216083715
+        .long	1015897693
+        .long	3213958348
+        .long	765047087
+        .long	1067388396
+        .long	2337193368
+        .long	1061824569
+        .long	3002775972
+        .long	3213420044
+        .long	0
+        .long	3218014208
+        .long	0
+        .long	1072693248
+        .long	0
+        .long	0
+        .long	0
+        .long	0
+        .long	2001712669
+        .long	1015665334
+        .long	1330879460
+        .long	1070636148
+        .long	2956987714
+        .long	1072551971
+        .long	4281360332
+        .long	3218013175
+        .long	3304213057
+        .long	3218063389
+        .long	3261945160
+        .long	1069715874
+        .long	3866284424
+        .long	1068553570
+        .long	3423706630
+        .long	3216121886
+        .long	259493169
+        .long	3213268437
+        .long	4223676832
+        .long	1067379852
+        .long	2765317642
+        .long	3210752240
+        .long	2292494069
+        .long	3213329490
+        .long	0
+        .long	3218145280
+        .long	0
+        .long	1072693248
+        .long	0
+        .long	0
+        .long	0
+        .long	0
+        .long	1632443533
+        .long	1015769771
+        .long	3788472163
+        .long	1070757367
+        .long	2406795724
+        .long	1072518757
+        .long	1173083542
+        .long	3218140352
+        .long	3726086528
+        .long	3217906251
+        .long	1205028711
+        .long	1069793280
+        .long	2231197855
+        .long	1068156878
+        .long	2368637763
+        .long	3216148628
+        .long	2866127296
+        .long	3211617797
+        .long	2424606359
+        .long	1067309831
+        .long	2444940724
+        .long	3212180962
+        .long	3308128888
+        .long	3213151909
+        .long	0
+        .long	3218276352
+        .long	0
+        .long	1072693248
+        .long	0
+        .long	0
+        .long	0
+        .long	0
+        .long	478834383
+        .long	1014053288
+        .long	1342399495
+        .long	1070876422
+        .long	2650660168
+        .long	1072482726
+        .long	976724127
+        .long	3218226669
+        .long	962417089
+        .long	3217740546
+        .long	1060150306
+        .long	1069852926
+        .long	411739190
+        .long	1067700577
+        .long	3846786712
+        .long	3216148687
+        .long	4007187252
+        .long	1064073475
+        .long	3455779574
+        .long	1067180067
+        .long	1865169557
+        .long	3212900393
+        .long	1200620699
+        .long	3212923615
+        .long	0
+        .long	3218407424
+        .long	0
+        .long	1072693248
+        .long	0
+        .long	0
+        .long	0
+        .long	0
+        .long	267289397
+        .long	1014452734
+        .long	302318249
+        .long	1070993143
+        .long	1373990511
+        .long	1072444121
+        .long	1606419704
+        .long	3218305061
+        .long	3955669825
+        .long	3217568496
+        .long	2701083439
+        .long	1069894809
+        .long	3425188888
+        .long	1067047616
+        .long	2305426029
+        .long	3216123827
+        .long	1692531481
+        .long	1065641523
+        .long	232815703
+        .long	1067000535
+        .long	3949954748
+        .long	3213214884
+        .long	558890519
+        .long	3212487521
+        .long	0
+        .long	3218538496
+        .long	0
+        .long	1072693248
+        .long	0
+        .long	0
+        .long	0
+        .long	0
+        .long	1719941932
+        .long	1006528498
+        .long	368840470
+        .long	1071107377
+        .long	1825320027
+        .long	1072403193
+        .long	538136722
+        .long	3218375283
+        .long	1431312010
+        .long	3217392305
+        .long	2586725425
+        .long	1069919291
+        .long	2680871675
+        .long	1065941593
+        .long	4123661982
+        .long	3216076488
+        .long	4235496382
+        .long	1066406926
+        .long	2618960092
+        .long	1066782660
+        .long	2333865044
+        .long	3213444845
+        .long	1545458959
+        .long	3211934181
+        .long	0
+        .long	3218669568
+        .long	0
+        .long	1072693248
+        .long	0
+        .long	0
+        .long	0
+        .long	0
+        .long	26286236
+        .long	1013191219
+        .long	990113957
+        .long	1071218987
+        .long	3284199501
+        .long	1072360200
+        .long	2981906127
+        .long	3218437190
+        .long	3154396333
+        .long	3217214106
+        .long	4182117656
+        .long	1069927061
+        .long	903677379
+        .long	3207343530
+        .long	384743261
+        .long	3216009637
+        .long	1679228359
+        .long	1066734193
+        .long	3407026595
+        .long	1066538544
+        .long	784962854
+        .long	3213588186
+        .long	1956733412
+        .long	3210979700
+        .long	0
+        .long	3218800640
+        .long	0
+        .long	1072693248
+        .long	0
+        .long	0
+        .long	0
+        .long	0
+        .long	1468217372
+        .long	1015658399
+        .long	2570814109
+        .long	1071327852
+        .long	532296332
+        .long	1072315404
+        .long	318213600
+        .long	3218490738
+        .long	3661105766
+        .long	3217035931
+        .long	4085840862
+        .long	1069919095
+        .long	2798312316
+        .long	3213370099
+        .long	1668326589
+        .long	3215870599
+        .long	3158013712
+        .long	1066998409
+        .long	673205579
+        .long	1066158659
+        .long	486665227
+        .long	3213647762
+        .long	3317145528
+        .long	3208570948
+        .long	0
+        .long	3218931712
+        .long	0
+        .long	1072693248
+        .long	0
+        .long	0
+        .long	0
+        .long	0
+        .long	2060955015
+        .long	1014233667
+        .long	2567098181
+        .long	1071433868
+        .long	1159081245
+        .long	1072269064
+        .long	1492598184
+        .long	3218535971
+        .long	1567055841
+        .long	3216688180
+        .long	2821222425
+        .long	1069896605
+        .long	3691290783
+        .long	3214336992
+        .long	343679101
+        .long	3215679175
+        .long	1878686296
+        .long	1067197462
+        .long	125933636
+        .long	1065636281
+        .long	421076939
+        .long	3213630573
+        .long	3748848474
+        .long	1062499186
+        .long	0
+        .long	3219062784
+        .long	0
+        .long	1072693248
+        .long	0
+        .long	0
+        .long	0
+        .long	0
+        .long	1860475216
+        .long	1015320544
+        .long	439764829
+        .long	1071587361
+        .long	3870821058
+        .long	1072197223
+        .long	1430736283
+        .long	3218588540
+        .long	1597812790
+        .long	3216174065
+        .long	2398544810
+        .long	1069838732
+        .long	961452807
+        .long	3215095800
+        .long	716310499
+        .long	3215360049
+        .long	2337792646
+        .long	1067375770
+        .long	3863538422
+        .long	1064417477
+        .long	2203480844
+        .long	3213482785
+        .long	2389621902
+        .long	1063978354
+        .long	0
+        .long	3219193856
+        .long	0
+        .long	1072693248
+        .long	0
+        .long	0
+        .long	0
+        .long	0
+        .long	517838046
+        .long	1015294339
+        .long	2114713104
+        .long	1071713012
+        .long	2046328558
+        .long	1072098392
+        .long	29352448
+        .long	3218631376
+        .long	1533416325
+        .long	3215079684
+        .long	765247815
+        .long	1069724759
+        .long	24381189
+        .long	3215564623
+        .long	1213155449
+        .long	3214886044
+        .long	379420126
+        .long	1067409218
+        .long	3127061143
+        .long	3210809777
+        .long	3193663073
+        .long	3213128287
+        .long	2557278876
+        .long	1064581282
+        .long	0
+        .long	3219324928
+        .long	0
+        .long	1072693248
+        .long	0
+        .long	0
+        .long	0
+        .long	0
+        .long	201012485
+        .long	1013704982
+        .long	4147262407
+        .long	1071803766
+        .long	3048814903
+        .long	1071997795
+        .long	1260857726
+        .long	3218645540
+        .long	270462819
+        .long	3209873967
+        .long	874660781
+        .long	1069580732
+        .long	1251156804
+        .long	3215866075
+        .long	3568210118
+        .long	3214014484
+        .long	3784557811
+        .long	1067255146
+        .long	47772576
+        .long	3212562613
+        .long	2075700783
+        .long	3212539455
+        .long	1121561449
+        .long	1064698735
+        .long	0
+        .long	3219456000
+        .long	0
+        .long	1072693248
+        .long	0
+        .long	0
+        .long	0
+        .long	0
+        .long	72370286
+        .long	1015768239
+        .long	2345366573
+        .long	1071888223
+        .long	3155310239
+        .long	1071897123
+        .long	4105462806
+        .long	3218634383
+        .long	2329529114
+        .long	1067280331
+        .long	3078782452
+        .long	1069291148
+        .long	2210998062
+        .long	3215997483
+        .long	1498585052
+        .long	3212353515
+        .long	3032692199
+        .long	1066974465
+        .long	809329973
+        .long	3213081308
+        .long	2713838579
+        .long	3211547879
+        .long	1266611175
+        .long	1064568889
+        .long	0
+        .long	3219587072
+        .long	0
+        .long	1072693248
+        .long	0
+        .long	0
+        .long	0
+        .long	0
+        .long	2137918782
+        .long	1013598293
+        .long	2511343836
+        .long	1071966424
+        .long	4205808243
+        .long	1071797842
+        .long	2776384587
+        .long	3218601667
+        .long	3824787134
+        .long	1068202086
+        .long	4101819712
+        .long	1068956189
+        .long	3547601806
+        .long	3216004360
+        .long	4156237724
+        .long	1064058621
+        .long	3714924071
+        .long	1066627770
+        .long	2925917146
+        .long	3213234133
+        .long	4211598888
+        .long	3209111151
+        .long	2569808389
+        .long	1064277859
+        .long	0
+        .long	3219718144
+        .long	0
+        .long	1072693248
+        .long	0
+        .long	0
+        .long	0
+        .long	0
+        .long	2979324843
+        .long	1013692066
+        .long	2595126306
+        .long	1072038496
+        .long	4263058559
+        .long	1071701178
+        .long	2217257467
+        .long	3218551298
+        .long	2310932059
+        .long	1068685603
+        .long	3368327571
+        .long	1068627625
+        .long	3037419246
+        .long	3215935424
+        .long	3509936675
+        .long	1065724141
+        .long	1557247226
+        .long	1066131548
+        .long	3830787958
+        .long	3213205743
+        .long	1781883284
+        .long	1062575914
+        .long	3918078093
+        .long	1063614197
+        .long	0
+        .long	3219849216
+        .long	0
+        .long	1072693248
+        .long	0
+        .long	0
+        .long	0
+        .long	0
+        .long	3630992244
+        .long	1015034507
+        .long	461360001
+        .long	1072104635
+        .long	2866201612
+        .long	1071571556
+        .long	1021729265
+        .long	3218487113
+        .long	1039036234
+        .long	1068940858
+        .long	1685105679
+        .long	1068140011
+        .long	1856275853
+        .long	3215769620
+        .long	2211306181
+        .long	1066373046
+        .long	3739405201
+        .long	1065456917
+        .long	3870269089
+        .long	3213053509
+        .long	427599213
+        .long	1063593231
+        .long	40698732
+        .long	1062709094
+        .long	0
+        .long	3219980288
+        .long	0
+        .long	1072693248
+        .long	0
+        .long	0
+        .long	0
+        .long	0
+        .long	4017840557
+        .long	1014067070
+        .long	2764932206
+        .long	1072165089
+        .long	3362970633
+        .long	1071394124
+        .long	2677206355
+        .long	3218412713
+        .long	1827861303
+        .long	1069122666
+        .long	2476388705
+        .long	1067583638
+        .long	523365901
+        .long	3215556224
+        .long	1203249285
+        .long	1066574111
+        .long	4264074292
+        .long	1064402288
+        .long	3556167213
+        .long	3212827889
+        .long	3894081206
+        .long	1063908871
+        .long	2161178761
+        .long	1061130844
+        .long	0
+        .long	3220111360
+        .long	0
+        .long	1072693248
+        .long	0
+        .long	0
+        .long	0
+        .long	0
+        .long	3622330478
+        .long	1016273425
+        .long	923638641
+        .long	1072245755
+        .long	239419665
+        .long	1071146518
+        .long	4085259706
+        .long	3218288969
+        .long	1284806809
+        .long	1069276013
+        .long	2806747971
+        .long	1066232498
+        .long	75259250
+        .long	3215197393
+        .long	2597116185
+        .long	1066648701
+        .long	1680670491
+        .long	3208755029
+        .long	446818184
+        .long	3212096816
+        .long	1529495144
+        .long	1063888972
+        .long	808619025
+        .long	3208443000
+        .long	0
+        .long	3220242432
+        .long	0
+        .long	1072693248
+        .long	0
+        .long	0
+        .long	0
+        .long	0
+        .long	462410646
+        .long	1015565639
+        .long	3157363066
+        .long	1072336316
+        .long	87541994
+        .long	1070853747
+        .long	2905067058
+        .long	3218115077
+        .long	1081050294
+        .long	1069306453
+        .long	4130581086
+        .long	3212259234
+        .long	1279737796
+        .long	3214531982
+        .long	901138781
+        .long	1066501065
+        .long	978916480
+        .long	3211806490
+        .long	1307294116
+        .long	3210755549
+        .long	1154728319
+        .long	1063409950
+        .long	983243444
+        .long	3209435485
+        .long	0
+        .long	3220373504
+        .long	0
+        .long	1072693248
+        .long	0
+        .long	0
+        .long	0
+        .long	0
+        .long	2617212772
+        .long	1016126748
+        .long	2762378177
+        .long	1072409936
+        .long	1926160805
+        .long	1070604218
+        .long	4131898582
+        .long	3217810482
+        .long	3068505203
+        .long	1069203346
+        .long	2854543895
+        .long	3214027139
+        .long	1276437050
+        .long	3213652513
+        .long	523800203
+        .long	1066060621
+        .long	3030576699
+        .long	3212054264
+        .long	210618624
+        .long	3205409267
+        .long	3515290542
+        .long	1062456384
+        .long	1613351841
+        .long	3209185464
+        .long	0
+        .long	3220504576
+        .long	0
+        .long	1072693248
+        .long	0
+        .long	0
+        .long	0
+        .long	0
+        .long	2178033281
+        .long	1016051223
+        .long	859883711
+        .long	1072469258
+        .long	4248327203
+        .long	1070195167
+        .long	4170103331
+        .long	3217497647
+        .long	3497702842
+        .long	1069026027
+        .long	669705965
+        .long	3214426190
+        .long	548733038
+        .long	3212258725
+        .long	1756337187
+        .long	1065503890
+        .long	1830841059
+        .long	3211930343
+        .long	1445563742
+        .long	1061912703
+        .long	2113494314
+        .long	1060991234
+        .long	1734825467
+        .long	3208559895
+        .long	0
+        .long	3220635648
+        .long	0
+        .long	1072693248
+        .long	0
+        .long	0
+        .long	0
+        .long	0
+        .long	1674478116
+        .long	1016412476
+        .long	1178764976
+        .long	1072516719
+        .long	1119346206
+        .long	1069851736
+        .long	1526584272
+        .long	3217221512
+        .long	3575463915
+        .long	1068817773
+        .long	2913683612
+        .long	3214542291
+        .long	1135909212
+        .long	3207879094
+        .long	1952394810
+        .long	1064725296
+        .long	508910559
+        .long	3211537545
+        .long	225204077
+        .long	1062311155
+        .long	1009857186
+        .long	1056234420
+        .long	2872841632
+        .long	3207480811
+        .long	0
+        .long	3220766720
+        .long	0
+        .long	1072693248
+        .long	0
+        .long	0
+        .long	0
+        .long	0
+        .long	1768234410
+        .long	1014305046
+        .long	1496797583
+        .long	1072554475
+        .long	3351833521
+        .long	1069572393
+        .long	68183265
+        .long	3216938851
+        .long	4178655528
+        .long	1068606905
+        .long	60791550
+        .long	3214483781
+        .long	1856281737
+        .long	1063701265
+        .long	4260560897
+        .long	1063778674
+        .long	2539586291
+        .long	3210979253
+        .long	2272785608
+        .long	1062198907
+        .long	1986161572
+        .long	3206910344
+        .long	1016667904
+        .long	3205797138
+        .long	0
+        .long	3220897792
+        .long	0
+        .long	1072693248
+        .long	0
+        .long	0
+        .long	0
+        .long	0
+        .long	3074583847
+        .long	1017063845
+        .long	4092570620
+        .long	1072584374
+        .long	3645618684
+        .long	1069147119
+        .long	1980755111
+        .long	3216542681
+        .long	889928399
+        .long	1068320928
+        .long	1360064809
+        .long	3214330986
+        .long	2266432388
+        .long	1064407878
+        .long	4147854841
+        .long	1062471610
+        .long	1812350685
+        .long	3210287970
+        .long	3710399832
+        .long	1061728481
+        .long	2458127659
+        .long	3207279138
+        .long	287360833
+        .long	3197756422
+        .long	0
+        .long	3221028864
+        .long	0
+        .long	1072693248
+        .long	0
+        .long	0
+        .long	0
+        .long	0
+        .long	68970445
+        .long	1013643458
+        .long	3990219923
+        .long	1072607967
+        .long	97498680
+        .long	1068787106
+        .long	4136450559
+        .long	3216216395
+        .long	147179316
+        .long	1067971098
+        .long	1625987424
+        .long	3214138005
+        .long	3965878798
+        .long	1064539455
+        .long	3777445436
+        .long	1059539413
+        .long	3029913178
+        .long	3209512624
+        .long	2162291908
+        .long	1061245910
+        .long	351053474
+        .long	3207087984
+        .long	3766283083
+        .long	1056943188
+        .long	0
+        .long	3221159936
+        .long	0
+        .long	1072693248
+        .long	0
+        .long	0
+        .long	0
+        .long	0
+        .long	3139580402
+        .long	1014663922
+        .long	3748810696
+        .long	1072634260
+        .long	3154943320
+        .long	1068262833
+        .long	3181856712
+        .long	3215694135
+        .long	3656356636
+        .long	1067539266
+        .long	3897588284
+        .long	3213798616
+        .long	1461831298
+        .long	1064461217
+        .long	2900114226
+        .long	3208814642
+        .long	2606420357
+        .long	3207868903
+        .long	1741152094
+        .long	1060222230
+        .long	1469206701
+        .long	3206514441
+        .long	3518993813
+        .long	1057090958
+        .long	0
+        .long	3221291008
+        .long	0
+        .long	1072693248
+        .long	0
+        .long	0
+        .long	0
+        .long	0
+        .long	3285908565
+        .long	1015477239
+        .long	1797956315
+        .long	1072657271
+        .long	3302471936
+        .long	1067543167
+        .long	2151339553
+        .long	3215007235
+        .long	362228095
+        .long	1066797401
+        .long	3986406156
+        .long	3213131380
+        .long	388353381
+        .long	1064042359
+        .long	4147910906
+        .long	3209239839
+        .long	1739922885
+        .long	1056259812
+        .long	3188561056
+        .long	1058406709
+        .long	489122368
+        .long	3205182155
+        .long	202560853
+        .long	1056234231
+        .long	0
+        .long	3221422080
+        .long	0
+        .long	1072693248
+        .long	0
+        .long	0
+        .long	0
+        .long	0
+        .long	3806705628
+        .long	1008327668
+        .long	884432573
+        .long	1072671353
+        .long	137405484
+        .long	1066747168
+        .long	3531994812
+        .long	3214216262
+        .long	3217445183
+        .long	1066105333
+        .long	2910288024
+        .long	3212464301
+        .long	3196212707
+        .long	1063467545
+        .long	3156563895
+        .long	3208963593
+        .long	3591285453
+        .long	1058733242
+        .long	2889132271
+        .long	1055392886
+        .long	1038377961
+        .long	3203561698
+        .long	4084672077
+        .long	1055001082
+        .long	0
+        .long	3221553152
+        .long	0
+        .long	1072693248
+        .long	0
+        .long	0
+        .long	0
+        .long	0
+        .long	1881957148
+        .long	1016569186
+        .long	3451706443
+        .long	1072679940
+        .long	143468186
+        .long	1066002557
+        .long	553724800
+        .long	3213475431
+        .long	1049442771
+        .long	1065415105
+        .long	3378521943
+        .long	3211821787
+        .long	3176008209
+        .long	1062800361
+        .long	4016898691
+        .long	3208498219
+        .long	1548390021
+        .long	1058670598
+        .long	2097418483
+        .long	3202689041
+        .long	2756703589
+        .long	3201351283
+        .long	506736184
+        .long	1053405377
+        .long	0
+        .long	3221684224
+        .long	0
+        .long	1072693248
+        .long	0
+        .long	0
+        .long	0
+        .long	0
+        .long	450339788
+        .long	1015040915
+        .long	2959639058
+        .long	1072685166
+        .long	2289443405
+        .long	1065320893
+        .long	3331959139
+        .long	3212796584
+        .long	724199976
+        .long	1064616734
+        .long	938566183
+        .long	3211030741
+        .long	1640535667
+        .long	1062186735
+        .long	187996035
+        .long	3207841256
+        .long	822311531
+        .long	1058246461
+        .long	160890851
+        .long	3203087480
+        .long	3163291388
+        .long	1050479733
+        .long	578249940
+        .long	1051474021
+        .long	0
+        .long	3221815296
+        .long	0
+        .long	1072693248
+        .long	0
+        .long	0
+        .long	0
+        .long	0
+        .long	539445753
+        .long	1012635531
+        .long	3085578536
+        .long	1072688342
+        .long	2019637246
+        .long	1064510347
+        .long	2901018414
+        .long	3211991061
+        .long	2171427566
+        .long	1063868144
+        .long	678185093
+        .long	3210287638
+        .long	2685165718
+        .long	1061401571
+        .long	710336199
+        .long	3207152667
+        .long	2733135798
+        .long	1057659331
+        .long	886948177
+        .long	3202751664
+        .long	3345834247
+        .long	1052218043
+        .long	908728048
+        .long	1047925874
+        .long	0
+        .long	3221946368
+        .long	0
+        .long	1072693248
+        .long	0
+        .long	0
+        .long	0
+        .long	0
+        .long	4240302093
+        .long	1016867082
+        .long	1832260410
+        .long	1072690271
+        .long	154153694
+        .long	1063730412
+        .long	2094548181
+        .long	3211211898
+        .long	1392727515
+        .long	1063180837
+        .long	3132890025
+        .long	3209604411
+        .long	483611698
+        .long	1060651750
+        .long	4246355421
+        .long	3206519479
+        .long	1424637421
+        .long	1057044161
+        .long	2138185318
+        .long	3202290304
+        .long	2276282642
+        .long	1052095798
+        .long	4227780935
+        .long	3196067472
+        .long	0
+        .long	3222077440
+        .long	0
+        .long	1072693248
+        .long	0
+        .long	0
+        .long	0
+        .long	0
+        .long	2485733495
+        .long	1017000498
+        .long	484092514
+        .long	1072691442
+        .long	1653085170
+        .long	1063007344
+        .long	2893019346
+        .long	3210489400
+        .long	878866243
+        .long	1062388018
+        .long	2113174452
+        .long	3208818852
+        .long	2654141437
+        .long	1059959432
+        .long	3578550869
+        .long	3205727739
+        .long	315005006
+        .long	1056288680
+        .long	3246956604
+        .long	3201593495
+        .long	2197286540
+        .long	1051718329
+        .long	3044885069
+        .long	3196227269
+        .long	0
+        .long	3222208512
+        .long	0
+        .long	1072693248
+        .long	0
+        .long	0
+        .long	0
+        .long	0
+        .long	2794994668
+        .long	1016833037
+        .long	3287420517
+        .long	1072692394
+        .long	4133778764
+        .long	1061857404
+        .long	689562148
+        .long	3209340342
+        .long	1404089106
+        .long	1061273627
+        .long	1292441425
+        .long	3207706805
+        .long	93671116
+        .long	1058816787
+        .long	2903327974
+        .long	3204626398
+        .long	4279279273
+        .long	1055202414
+        .long	134688023
+        .long	3200552187
+        .long	3315379764
+        .long	1050761310
+        .long	2945780649
+        .long	3195568939
+        .long	0
+        .long	3222339584
+        .long	0
+        .long	1072693248
+        .long	0
+        .long	0
+        .long	0
+        .long	0
+        .long	2135621136
+        .long	1016053539
+        .long	309961636
+        .long	1072692934
+        .long	672792810
+        .long	1060347512
+        .long	2960305506
+        .long	3207830967
+        .long	1703867620
+        .long	1059726750
+        .long	824905914
+        .long	3206160796
+        .long	3036017847
+        .long	1057284422
+        .long	923304464
+        .long	3203122673
+        .long	1848642304
+        .long	1053791859
+        .long	2215350763
+        .long	3199158388
+        .long	3049848127
+        .long	1049324210
+        .long	3861893815
+        .long	3194293196
+        .long	0
+        .long	3222470656
+        .long	0
+        .long	1072693248
+        .long	0
+        .long	0
+        .long	0
+        .long	0
+        .long	2236028675
+        .long	1016891036
+        .long	2177293363
+        .long	1072693132
+        .long	776830057
+        .long	1058856794
+        .long	4190004158
+        .long	3206340337
+        .long	209955488
+        .long	1058225857
+        .long	845130443
+        .long	3204660651
+        .long	4204313304
+        .long	1055835544
+        .long	364525198
+        .long	3201597210
+        .long	3889299905
+        .long	1052205563
+        .long	1514389355
+        .long	3197586647
+        .long	1706817756
+        .long	1047834665
+        .long	3817417318
+        .long	3192934132
+        .long	0
+        .long	3222601728
+        .long	0
+        .long	1072693248
+        .long	0
+        .long	0
+        .long	0
+        .long	0
+        .long	1074033072
+        .long	1013200912
+        .long	2197899301
+        .long	1072693205
+        .long	1097614282
+        .long	1057308273
+        .long	209489097
+        .long	3204791893
+        .long	3641526339
+        .long	1056723664
+        .long	1792794946
+        .long	3203158586
+        .long	584598707
+        .long	1054254910
+        .long	253996240
+        .long	3200135633
+        .long	642640562
+        .long	1050754580
+        .long	3147361740
+        .long	3196139610
+        .long	1167319222
+        .long	1046395158
+        .long	3488053038
+        .long	3191370264
+        .long	0
+        .long	3222732800
+        .long	0
+        .long	1072693248
+        .long	0
+        .long	0
+        .long	0
+        .long	0
+        .long	871679747
+        .long	1016222468
+        .long	1586311569
+        .long	1072693232
+        .long	4199724405
+        .long	1055867613
+        .long	3041006250
+        .long	3203351246
+        .long	482130003
+        .long	1055184672
+        .long	1689676855
+        .long	3201619703
+        .long	116121201
+        .long	1052814264
+        .long	4166318198
+        .long	3198564764
+        .long	388552649
+        .long	1049191609
+        .long	1384400086
+        .long	3194577312
+        .long	135589376
+        .long	1044819515
+        .long	2497367318
+        .long	3189906305
+        .long	0
+        .long	3222863872
+        .long	0
+        .long	1072693248
+        .long	0
+        .long	0
+        .long	0
+        .long	0
+        .long	752986014
+        .long	1014740322
+        .long	1072834312
+        .long	1072693242
+        .long	1389704451
+        .long	1054277685
+        .long	817998738
+        .long	3201761329
+        .long	996777029
+        .long	1053731553
+        .long	811547911
+        .long	3200166603
+        .long	1604093935
+        .long	1051232383
+        .long	2381858127
+        .long	3197131472
+        .long	806055999
+        .long	1047703656
+        .long	443662424
+        .long	3193089938
+        .long	2855612429
+        .long	1043379518
+        .long	3671581230
+        .long	3188373004
+        .long	0
+        .long	3222994944
+        .long	0
+        .long	1072693248
+        .long	0
+        .long	0
+        .long	0
+        .long	0
+        .long	4161630806
+        .long	1015796140
+        .long	3799386689
+        .long	1072693245
+        .long	516062805
+        .long	1052830799
+        .long	6188716
+        .long	3200314446
+        .long	79447568
+        .long	1052151909
+        .long	223529141
+        .long	3198586975
+        .long	1557009707
+        .long	1049758991
+        .long	1527834451
+        .long	3195539792
+        .long	3841571054
+        .long	1046184222
+        .long	3228035136
+        .long	3191570603
+        .long	2497745717
+        .long	1041799395
+        .long	3127975351
+        .long	3186863029
+        .long	0
+        .long	3223126016
+        .long	0
+        .long	1072693248
+        .long	0
+        .long	0
+        .long	0
+        .long	0
+        .long	3013228433
+        .long	1015734301
+        .long	952591976
+        .long	1072693247
+        .long	3849195912
+        .long	1051256594
+        .long	1248135057
+        .long	3198740242
+        .long	1658384276
+        .long	1050712587
+        .long	3312197895
+        .long	3197147657
+        .long	2426751598
+        .long	1048219658
+        .long	2075412918
+        .long	3194074453
+        .long	1194511818
+        .long	1044659399
+        .long	2861395540
+        .long	3190045864
+        .long	1105252788
+        .long	1040325059
+        .long	278204179
+        .long	3185374362
+        .long	0
+        .long	3223257088
+        .long	0
+        .long	1072693248
+        .long	0
+        .long	0
+        .long	0
+        .long	0
+        .long	4084683796
+        .long	1014352664
+        .long	3549182448
+        .long	1072693247
+        .long	4170486715
+        .long	1048984034
+        .long	3652359522
+        .long	3196467682
+        .long	1780445294
+        .long	1048420995
+        .long	3329441198
+        .long	3194856066
+        .long	663245309
+        .long	1045935418
+        .long	1918070306
+        .long	3191839818
+        .long	4225866973
+        .long	1042419329
+        .long	1974315224
+        .long	3187805832
+        .long	847480060
+        .long	1038120500
+        .long	2386310431
+        .long	3183105031
+        .long	0
+        .long	3223388160
+        .long	0
+        .long	1072693248
+        .long	0
+        .long	0
+        .long	0
+        .long	0
+        .long	951119343
+        .long	1016641415
+        .long	4194036288
+        .long	1072693247
+        .long	4207053894
+        .long	1045958742
+        .long	4131013457
+        .long	3193442390
+        .long	2503178506
+        .long	1045433060
+        .long	2309798544
+        .long	3191868132
+        .long	1503762043
+        .long	1042918157
+        .long	762244907
+        .long	3188792499
+        .long	3745081608
+        .long	1039371450
+        .long	3106729171
+        .long	3184757959
+        .long	3799011378
+        .long	1035063995
+        .long	693003136
+        .long	3180102041
+        .long	0
+        .long	3223519232
+        .long	0
+        .long	1072693248
+        .long	0
+        .long	0
+        .long	0
+        .long	0
+        .long	1712896388
+        .long	1016000193
+        .long	4281307769
+        .long	1072693247
+        .long	3495080264
+        .long	1042943408
+        .long	3483806577
+        .long	3190427056
+        .long	3577360645
+        .long	1042374261
+        .long	3557467263
+        .long	3188809333
+        .long	3692227868
+        .long	1039911516
+        .long	1459944482
+        .long	3185739496
+        .long	624248087
+        .long	1036331657
+        .long	3930021706
+        .long	3181718167
+        .long	439009527
+        .long	1032014849
+        .long	3184212578
+        .long	3177110789
+        .long	0
+        .long	3223650304
+        .long	0
+        .long	1072693248
+        .long	0
+        .long	0
+        .long	0
+        .long	0
+        .long	1958475666
+        .long	1013700788
+        .long	4293118680
+        .long	1072693247
+        .long	3829159519
+        .long	1039938855
+        .long	3827364885
+        .long	3187422503
+        .long	2374004141
+        .long	1039322650
+        .long	2380228874
+        .long	3185757722
+        .long	853065064
+        .long	1036916376
+        .long	3897809499
+        .long	3182694159
+        .long	2467115425
+        .long	1033300621
+        .long	2966460473
+        .long	3178687133
+        .long	4249027489
+        .long	1028973684
+        .long	3391824522
+        .long	3174085926
+        .long	0
+        .long	3223781376
+        .long	0
+        .long	1072693248
+        .long	0
+        .long	0
+        .long	0
+        .long	0
+        .long	1028808661
+        .long	1012328597
+        .long	4294717113
+        .long	1072693247
+        .long	2759857858
+        .long	1036945975
+        .long	2759440340
+        .long	3184429623
+        .long	217750550
+        .long	1036278821
+        .long	228557927
+        .long	3182713893
+        .long	868996329
+        .long	1033914811
+        .long	130294465
+        .long	3179657124
+        .long	3979034581
+        .long	1030279068
+        .long	1690522291
+        .long	3175665582
+        .long	141102418
+        .long	1025941166
+        .long	3942643114
+        .long	3171030731
+        .long	0
+        .long	3223912448
+        .long	0
+        .long	1072693248
+        .long	0
+        .long	0
+        .long	0
+        .long	0
+        .long	2461075155
+        .long	1015729939
+        .long	4294933437
+        .long	1072693247
+        .long	2559161110
+        .long	1033930834
+        .long	2559046852
+        .long	3181414482
+        .long	3206412049
+        .long	1033243416
+        .long	3218709064
+        .long	3179678488
+        .long	2091270467
+        .long	1030857342
+        .long	245853585
+        .long	3176629075
+        .long	1555900931
+        .long	1027267783
+        .long	1186881303
+        .long	3172654298
+        .long	1695278520
+        .long	1022918007
+        .long	1853146834
+        .long	3167983022
+        .long	0
+        .long	3224043520
+        .long	0
+        .long	1072693248
+        .long	0
+        .long	0
+        .long	0
+        .long	0
+        .long	2502502488
+        .long	1016572066
+        .long	4294962713
+        .long	1072693247
+        .long	3137376149
+        .long	1030874690
+        .long	3137268820
+        .long	3178358338
+        .long	1097103169
+        .long	1030217134
+        .long	1110504267
+        .long	3176652206
+        .long	1068377398
+        .long	1027807171
+        .long	222176953
+        .long	3173610756
+        .long	3440315131
+        .long	1024267613
+        .long	1199778592
+        .long	3169654130
+        .long	257981480
+        .long	1019904983
+        .long	1388437918
+        .long	3164943417
+        .long	0
+        .long	3224174592
+        .long	0
+        .long	1072693248
+        .long	0
+        .long	0
+        .long	0
+        .long	0
+        .long	3418697838
+        .long	1016821878
+        .long	4294966675
+        .long	1072693247
+        .long	3798207862
+        .long	1027825953
+        .long	3798094058
+        .long	3175309601
+        .long	3391459718
+        .long	1027200727
+        .long	3405981646
+        .long	3173635799
+        .long	3694208074
+        .long	1024764900
+        .long	2192272311
+        .long	3170602971
+        .long	1464408928
+        .long	1021279479
+        .long	2201370875
+        .long	3166665997
+        .long	4139632468
+        .long	1016902930
+        .long	2981161402
+        .long	3161912586
+        .long	0
+        .long	3224305664
+        .long	0
+        .long	1072693248
+        .long	0
+        .long	0
+        .long	0
+        .long	0
+        .long	3589768515
+        .long	1013972501
+        .long	4294967265
+        .long	1072693247
+        .long	2293865510
+        .long	1023336450
+        .long	2097549026
+        .long	3170820098
+        .long	2721138850
+        .long	1022661962
+        .long	1571631120
+        .long	3169097035
+        .long	3716649917
+        .long	1020295299
+        .long	3146231247
+        .long	3166041588
+        .long	84506245
+        .long	1016656297
+        .long	2231398946
+        .long	3162043093
+        .long	3305646943
+        .long	1012441980
+        .long	402214167
+        .long	3157503609
+        .long	0
+        .long	3224436736
+        .long	0
+        .long	1072693248
+        .long	0
+        .long	0
+        .long	0
+        .long	0
+        .long	2152156943
+        .long	1016184605
+        .long	4294967294
+        .long	1072693247
+        .long	1074684533
+        .long	1018634353
+        .long	1074437943
+        .long	3166118001
+        .long	967276073
+        .long	1018090988
+        .long	995296768
+        .long	3164526060
+        .long	4275132894
+        .long	1015589675
+        .long	304133116
+        .long	3161485853
+        .long	1232215992
+        .long	1012058464
+        .long	559363548
+        .long	3157444977
+        .long	1487618473
+        .long	1007759094
+        .long	2355811294
+        .long	3152771929
+        .long	3381626085
+        .long	3224537056
+        .long	0
+        .long	1072693248
+        .long	0
+        .long	0
+        .long	0
+        .long	0
+        .long	0
+        .long	0
+        .long	0
+        .long	1072693248
+        .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	0
+        .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	0
+        .long	0
+        .long	0
+        .long	0
+        .long	4294967295
+        .long	0
+        .long	4294967295
+        .long	0
+        .long	4294967295
+        .long	0
+        .long	4294967295
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .long	0
+        .long	2147483648
+        .long	0
+        .long	2147483648
+        .long	0
+        .long	2147483648
+        .long	0
+        .long	2147483648
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .long	4294967295
+        .long	2147483647
+        .long	4294967295
+        .long	2147483647
+        .long	4294967295
+        .long	2147483647
+        .long	4294967295
+        .long	2147483647
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .long	2147352576
+        .long	2147352576
+        .long	2147352576
+        .long	2147352576
+        .long	2147352576
+        .long	2147352576
+        .long	2147352576
+        .long	2147352576
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .long	2145386496
+        .long	2145386496
+        .long	2145386496
+        .long	2145386496
+        .long	2145386496
+        .long	2145386496
+        .long	2145386496
+        .long	2145386496
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .long	1069416448
+        .long	1069416448
+        .long	1069416448
+        .long	1069416448
+        .long	1069416448
+        .long	1069416448
+        .long	1069416448
+        .long	1069416448
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .long	7733248
+        .long	7733248
+        .long	7733248
+        .long	7733248
+        .long	7733248
+        .long	7733248
+        .long	7733248
+        .long	7733248
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .long	535822336
+        .long	535822336
+        .long	535822336
+        .long	535822336
+        .long	535822336
+        .long	535822336
+        .long	535822336
+        .long	535822336
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .type	__svml_dtanh_data_internal,@object
+        .size	__svml_dtanh_data_internal,10816
+        .align 8
+
+__dtanh_la__imldTanhTab:
+        .long	0
+        .long	1072693248
+        .long	0
+        .long	3220176896
+        .type	__dtanh_la__imldTanhTab,@object
+        .size	__dtanh_la__imldTanhTab,16
diff --git a/sysdeps/x86_64/fpu/multiarch/svml_d_tanh8_core-avx2.S b/sysdeps/x86_64/fpu/multiarch/svml_d_tanh8_core-avx2.S
new file mode 100644
index 0000000000..92fb24a640
--- /dev/null
+++ b/sysdeps/x86_64/fpu/multiarch/svml_d_tanh8_core-avx2.S
@@ -0,0 +1,20 @@ 
+/* AVX2 version of vectorized tanh, vector length is 8.
+   Copyright (C) 2021 Free Software Foundation, Inc.
+   This file is part of the GNU C Library.
+
+   The GNU C Library is free software; you can redistribute it and/or
+   modify it under the terms of the GNU Lesser General Public
+   License as published by the Free Software Foundation; either
+   version 2.1 of the License, or (at your option) any later version.
+
+   The GNU C Library is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+   Lesser General Public License for more details.
+
+   You should have received a copy of the GNU Lesser General Public
+   License along with the GNU C Library; if not, see
+   <https://www.gnu.org/licenses/>.  */
+
+#define _ZGVeN8v_tanh _ZGVeN8v_tanh_avx2_wrapper
+#include "../svml_d_tanh8_core.S"
diff --git a/sysdeps/x86_64/fpu/multiarch/svml_d_tanh8_core.c b/sysdeps/x86_64/fpu/multiarch/svml_d_tanh8_core.c
new file mode 100644
index 0000000000..495cb1f4fc
--- /dev/null
+++ b/sysdeps/x86_64/fpu/multiarch/svml_d_tanh8_core.c
@@ -0,0 +1,27 @@ 
+/* Multiple versions of vectorized tanh, vector length is 8.
+   Copyright (C) 2021 Free Software Foundation, Inc.
+   This file is part of the GNU C Library.
+
+   The GNU C Library is free software; you can redistribute it and/or
+   modify it under the terms of the GNU Lesser General Public
+   License as published by the Free Software Foundation; either
+   version 2.1 of the License, or (at your option) any later version.
+
+   The GNU C Library is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+   Lesser General Public License for more details.
+
+   You should have received a copy of the GNU Lesser General Public
+   License along with the GNU C Library; if not, see
+   <https://www.gnu.org/licenses/>.  */
+
+#define SYMBOL_NAME _ZGVeN8v_tanh
+#include "ifunc-mathvec-avx512-skx.h"
+
+libc_ifunc_redirected (REDIRECT_NAME, SYMBOL_NAME, IFUNC_SELECTOR ());
+
+#ifdef SHARED
+__hidden_ver1 (_ZGVeN8v_tanh, __GI__ZGVeN8v_tanh, __redirect__ZGVeN8v_tanh)
+  __attribute__ ((visibility ("hidden")));
+#endif
diff --git a/sysdeps/x86_64/fpu/multiarch/svml_d_tanh8_core_avx512.S b/sysdeps/x86_64/fpu/multiarch/svml_d_tanh8_core_avx512.S
new file mode 100644
index 0000000000..c03232995a
--- /dev/null
+++ b/sysdeps/x86_64/fpu/multiarch/svml_d_tanh8_core_avx512.S
@@ -0,0 +1,3017 @@ 
+/* Function tanh vectorized with AVX-512.
+   Copyright (C) 2021 Free Software Foundation, Inc.
+   This file is part of the GNU C Library.
+
+   The GNU C Library is free software; you can redistribute it and/or
+   modify it under the terms of the GNU Lesser General Public
+   License as published by the Free Software Foundation; either
+   version 2.1 of the License, or (at your option) any later version.
+
+   The GNU C Library is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+   Lesser General Public License for more details.
+
+   You should have received a copy of the GNU Lesser General Public
+   License along with the GNU C Library; if not, see
+   https://www.gnu.org/licenses/.  */
+
+/*
+ * ALGORITHM DESCRIPTION:
+ *
+ *   NOTE: Since the hyperbolic tangent function is odd
+ *         (tanh(x) = -tanh(-x)), below algorithm deals with the absolute
+ *         value of the argument |x|: tanh(x) = sign(x) * tanh(|x|)
+ *
+ *   We use a table lookup method to compute tanh(|x|).
+ *   The basic idea is to split the input range into a number of subintervals
+ *   and to approximate tanh(.) with a polynomial on each of them.
+ *
+ *   IEEE SPECIAL CONDITIONS:
+ *   x = [+,-]0, r = [+,-]0
+ *   x = +Inf,   r = +1
+ *   x = -Inf,   r = -1
+ *   x = QNaN,   r = QNaN
+ *   x = SNaN,   r = QNaN
+ *
+ *
+ *   ALGORITHM DETAILS
+ *   We handle special values in a callout function, aside from main path
+ *   computations. "Special" for this algorithm are:
+ *   INF, NAN, |x| > HUGE_THRESHOLD
+ *
+ *
+ *   Main path computations are organized as follows:
+ *   Actually we split the interval [0, SATURATION_THRESHOLD)
+ *   into a number of subintervals.  On each subinterval we approximate tanh(.)
+ *   with a minimax polynomial of pre-defined degree. Polynomial coefficients
+ *   are computed beforehand and stored in table. We also use
+ *
+ *       y := |x| + B,
+ *
+ *   here B depends on subinterval and is used to make argument
+ *   closer to zero.
+ *   We also add large fake interval [SATURATION_THRESHOLD, HUGE_THRESHOLD],
+ *   where 1.0 + 0.0*y + 0.0*y^2 ... coefficients are stored - just to
+ *   preserve main path computation logic but return 1.0 for all arguments.
+ *
+ *   Hence reconstruction looks as follows:
+ *   we extract proper polynomial and range reduction coefficients
+ *        (Pj and B), corresponding to subinterval, to which |x| belongs,
+ *        and return
+ *
+ *       r := sign(x) * (P0 + P1 * y + ... + Pn * y^n)
+ *
+ *   NOTE: we use multiprecision technique to multiply and sum the first
+ *         K terms of the polynomial. So Pj, j = 0..K are stored in
+ *         table each as a pair of target precision numbers (Pj and PLj) to
+ *         achieve wider than target precision.
+ *
+ *
+ */
+
+#include <sysdep.h>
+
+        .text
+	.section .text.evex512,"ax",@progbits
+ENTRY(_ZGVeN8v_tanh_skx)
+        pushq     %rbp
+        cfi_def_cfa_offset(16)
+        movq      %rsp, %rbp
+        cfi_def_cfa(6, 16)
+        cfi_offset(6, -16)
+        andq      $-64, %rsp
+        subq      $320, %rsp
+        vpsrlq    $32, %zmm0, %zmm4
+        vmovups   %zmm0, (%rsp)
+        vmovups   __svml_dtanh_data_internal(%rip), %zmm14
+        vmovups   128+__svml_dtanh_data_internal(%rip), %zmm15
+        vpmovqd   %zmm4, %ymm5
+
+/*  Constant loading  */
+        vandpd    10432+__svml_dtanh_data_internal(%rip), %zmm0, %zmm13
+        vandpd    10368+__svml_dtanh_data_internal(%rip), %zmm0, %zmm3
+
+/* Here huge arguments, INF and NaNs are filtered out to callout. */
+        vpand     2432+__svml_dtanh_data_internal(%rip), %ymm5, %ymm7
+        vmovups   384+__svml_dtanh_data_internal(%rip), %zmm0
+        vmovups   2176+__svml_dtanh_data_internal(%rip), %zmm4
+        vmovups   2048+__svml_dtanh_data_internal(%rip), %zmm5
+        vmovups   %zmm3, 64(%rsp)
+        vmovups   512+__svml_dtanh_data_internal(%rip), %zmm3
+        vpsubd    2496+__svml_dtanh_data_internal(%rip), %ymm7, %ymm8
+
+/* if VMIN, VMAX is defined for I type */
+        vxorps    %ymm9, %ymm9, %ymm9
+        vpmaxsd   %ymm9, %ymm8, %ymm10
+        vpminsd   2560+__svml_dtanh_data_internal(%rip), %ymm10, %ymm11
+        vpsrld    $19, %ymm11, %ymm12
+        vmovups   1664+__svml_dtanh_data_internal(%rip), %zmm8
+        vmovups   1536+__svml_dtanh_data_internal(%rip), %zmm9
+        vmovups   1408+__svml_dtanh_data_internal(%rip), %zmm10
+        vmovups   1280+__svml_dtanh_data_internal(%rip), %zmm11
+        vpmovzxdq %ymm12, %zmm2
+        vmovups   1152+__svml_dtanh_data_internal(%rip), %zmm12
+        vpermt2pd 448+__svml_dtanh_data_internal(%rip), %zmm2, %zmm0
+        vpermt2pd 64+__svml_dtanh_data_internal(%rip), %zmm2, %zmm14
+        vpermt2pd 2240+__svml_dtanh_data_internal(%rip), %zmm2, %zmm4
+        vpermt2pd 2112+__svml_dtanh_data_internal(%rip), %zmm2, %zmm5
+        vsubpd    {rn-sae}, %zmm14, %zmm13, %zmm1
+        vpermt2pd 1728+__svml_dtanh_data_internal(%rip), %zmm2, %zmm8
+        vpermt2pd 1600+__svml_dtanh_data_internal(%rip), %zmm2, %zmm9
+        vpermt2pd 1472+__svml_dtanh_data_internal(%rip), %zmm2, %zmm10
+        vpermt2pd 1344+__svml_dtanh_data_internal(%rip), %zmm2, %zmm11
+        vpermt2pd 1216+__svml_dtanh_data_internal(%rip), %zmm2, %zmm12
+        vpermt2pd 576+__svml_dtanh_data_internal(%rip), %zmm2, %zmm3
+        vpermt2pd 192+__svml_dtanh_data_internal(%rip), %zmm2, %zmm15
+        vmovups   %zmm0, 192(%rsp)
+        vmovups   2304+__svml_dtanh_data_internal(%rip), %zmm0
+        vmovups   1024+__svml_dtanh_data_internal(%rip), %zmm13
+        vmovups   896+__svml_dtanh_data_internal(%rip), %zmm14
+        vmovups   %zmm3, 256(%rsp)
+        vmovups   768+__svml_dtanh_data_internal(%rip), %zmm3
+        vmovups   %zmm15, 128(%rsp)
+        vmovups   640+__svml_dtanh_data_internal(%rip), %zmm15
+        vpermt2pd 2368+__svml_dtanh_data_internal(%rip), %zmm2, %zmm0
+        vpermt2pd 1088+__svml_dtanh_data_internal(%rip), %zmm2, %zmm13
+        vpermt2pd 960+__svml_dtanh_data_internal(%rip), %zmm2, %zmm14
+        vpermt2pd 832+__svml_dtanh_data_internal(%rip), %zmm2, %zmm3
+        vpermt2pd 704+__svml_dtanh_data_internal(%rip), %zmm2, %zmm15
+        vfmadd213pd {rn-sae}, %zmm4, %zmm1, %zmm0
+        vpcmpgtd  10560+__svml_dtanh_data_internal(%rip), %ymm7, %ymm6
+        vmovmskps %ymm6, %edx
+        vmovups   1920+__svml_dtanh_data_internal(%rip), %zmm6
+        vfmadd213pd {rn-sae}, %zmm5, %zmm1, %zmm0
+        vmovups   1792+__svml_dtanh_data_internal(%rip), %zmm7
+        vpermt2pd 1984+__svml_dtanh_data_internal(%rip), %zmm2, %zmm6
+        vpermt2pd 1856+__svml_dtanh_data_internal(%rip), %zmm2, %zmm7
+        vfmadd213pd {rn-sae}, %zmm6, %zmm1, %zmm0
+        vmovups   256(%rsp), %zmm2
+        vfmadd213pd {rn-sae}, %zmm7, %zmm1, %zmm0
+        vfmadd213pd {rn-sae}, %zmm8, %zmm1, %zmm0
+        vfmadd213pd {rn-sae}, %zmm9, %zmm1, %zmm0
+        vfmadd213pd {rn-sae}, %zmm10, %zmm1, %zmm0
+        vfmadd213pd {rn-sae}, %zmm11, %zmm1, %zmm0
+        vfmadd213pd {rn-sae}, %zmm12, %zmm1, %zmm0
+        vfmadd213pd {rn-sae}, %zmm13, %zmm1, %zmm0
+        vfmadd213pd {rn-sae}, %zmm14, %zmm1, %zmm0
+        vfmadd213pd {rn-sae}, %zmm3, %zmm1, %zmm0
+        vmovups   128(%rsp), %zmm3
+        vfmadd213pd {rn-sae}, %zmm15, %zmm1, %zmm0
+        vfmadd213pd {rn-sae}, %zmm2, %zmm1, %zmm0
+        vmovups   192(%rsp), %zmm2
+        vfmadd213pd {rn-sae}, %zmm2, %zmm1, %zmm0
+        vfmadd213pd {rn-sae}, %zmm3, %zmm1, %zmm0
+        vorpd     64(%rsp), %zmm0, %zmm0
+        testl     %edx, %edx
+        jne       L(2)
+
+L(1):
+        movq      %rbp, %rsp
+        popq      %rbp
+        cfi_def_cfa(7, 8)
+        cfi_restore(6)
+        ret
+        cfi_def_cfa(6, 16)
+        cfi_offset(6, -16)
+
+L(2):
+        vmovups   (%rsp), %zmm1
+        vmovups   %zmm0, 128(%rsp)
+        vmovups   %zmm1, 64(%rsp)
+        je        L(1)
+        xorl      %eax, %eax
+        vzeroupper
+        kmovw     %k4, 24(%rsp)
+        kmovw     %k5, 16(%rsp)
+        kmovw     %k6, 8(%rsp)
+        kmovw     %k7, (%rsp)
+        movq      %rsi, 40(%rsp)
+        movq      %rdi, 32(%rsp)
+        movq      %r12, 56(%rsp)
+        .cfi_escape 0x10, 0x04, 0x0e, 0x38, 0x1c, 0x0d, 0xc0, 0xff, 0xff, 0xff, 0x1a, 0x0d, 0xe8, 0xfe, 0xff, 0xff, 0x22
+        .cfi_escape 0x10, 0x05, 0x0e, 0x38, 0x1c, 0x0d, 0xc0, 0xff, 0xff, 0xff, 0x1a, 0x0d, 0xe0, 0xfe, 0xff, 0xff, 0x22
+        .cfi_escape 0x10, 0x0c, 0x0e, 0x38, 0x1c, 0x0d, 0xc0, 0xff, 0xff, 0xff, 0x1a, 0x0d, 0xf8, 0xfe, 0xff, 0xff, 0x22
+        movl      %eax, %r12d
+        movq      %r13, 48(%rsp)
+        .cfi_escape 0x10, 0x0d, 0x0e, 0x38, 0x1c, 0x0d, 0xc0, 0xff, 0xff, 0xff, 0x1a, 0x0d, 0xf0, 0xfe, 0xff, 0xff, 0x22
+        movl      %edx, %r13d
+        .cfi_escape 0x10, 0xfa, 0x00, 0x0e, 0x38, 0x1c, 0x0d, 0xc0, 0xff, 0xff, 0xff, 0x1a, 0x0d, 0xd8, 0xfe, 0xff, 0xff, 0x22
+        .cfi_escape 0x10, 0xfb, 0x00, 0x0e, 0x38, 0x1c, 0x0d, 0xc0, 0xff, 0xff, 0xff, 0x1a, 0x0d, 0xd0, 0xfe, 0xff, 0xff, 0x22
+        .cfi_escape 0x10, 0xfc, 0x00, 0x0e, 0x38, 0x1c, 0x0d, 0xc0, 0xff, 0xff, 0xff, 0x1a, 0x0d, 0xc8, 0xfe, 0xff, 0xff, 0x22
+        .cfi_escape 0x10, 0xfd, 0x00, 0x0e, 0x38, 0x1c, 0x0d, 0xc0, 0xff, 0xff, 0xff, 0x1a, 0x0d, 0xc0, 0xfe, 0xff, 0xff, 0x22
+
+L(3):
+        btl       %r12d, %r13d
+        jc        L(5)
+
+L(4):
+        incl      %r12d
+        cmpl      $8, %r12d
+        jl        L(3)
+        kmovw     24(%rsp), %k4
+        cfi_restore(122)
+        kmovw     16(%rsp), %k5
+        cfi_restore(123)
+        kmovw     8(%rsp), %k6
+        cfi_restore(124)
+        kmovw     (%rsp), %k7
+        cfi_restore(125)
+        vmovups   128(%rsp), %zmm0
+        movq      40(%rsp), %rsi
+        cfi_restore(4)
+        movq      32(%rsp), %rdi
+        cfi_restore(5)
+        movq      56(%rsp), %r12
+        cfi_restore(12)
+        movq      48(%rsp), %r13
+        cfi_restore(13)
+        jmp       L(1)
+        .cfi_escape 0x10, 0x04, 0x0e, 0x38, 0x1c, 0x0d, 0xc0, 0xff, 0xff, 0xff, 0x1a, 0x0d, 0xe8, 0xfe, 0xff, 0xff, 0x22
+        .cfi_escape 0x10, 0x05, 0x0e, 0x38, 0x1c, 0x0d, 0xc0, 0xff, 0xff, 0xff, 0x1a, 0x0d, 0xe0, 0xfe, 0xff, 0xff, 0x22
+        .cfi_escape 0x10, 0x0c, 0x0e, 0x38, 0x1c, 0x0d, 0xc0, 0xff, 0xff, 0xff, 0x1a, 0x0d, 0xf8, 0xfe, 0xff, 0xff, 0x22
+        .cfi_escape 0x10, 0x0d, 0x0e, 0x38, 0x1c, 0x0d, 0xc0, 0xff, 0xff, 0xff, 0x1a, 0x0d, 0xf0, 0xfe, 0xff, 0xff, 0x22
+        .cfi_escape 0x10, 0xfa, 0x00, 0x0e, 0x38, 0x1c, 0x0d, 0xc0, 0xff, 0xff, 0xff, 0x1a, 0x0d, 0xd8, 0xfe, 0xff, 0xff, 0x22
+        .cfi_escape 0x10, 0xfb, 0x00, 0x0e, 0x38, 0x1c, 0x0d, 0xc0, 0xff, 0xff, 0xff, 0x1a, 0x0d, 0xd0, 0xfe, 0xff, 0xff, 0x22
+        .cfi_escape 0x10, 0xfc, 0x00, 0x0e, 0x38, 0x1c, 0x0d, 0xc0, 0xff, 0xff, 0xff, 0x1a, 0x0d, 0xc8, 0xfe, 0xff, 0xff, 0x22
+        .cfi_escape 0x10, 0xfd, 0x00, 0x0e, 0x38, 0x1c, 0x0d, 0xc0, 0xff, 0xff, 0xff, 0x1a, 0x0d, 0xc0, 0xfe, 0xff, 0xff, 0x22
+
+L(5):
+        lea       64(%rsp,%r12,8), %rdi
+        lea       128(%rsp,%r12,8), %rsi
+        call      __svml_dtanh_cout_rare_internal
+        jmp       L(4)
+
+END(_ZGVeN8v_tanh_skx)
+
+        .align    16,0x90
+
+__svml_dtanh_cout_rare_internal:
+
+        cfi_startproc
+
+        lea       __dtanh_la__imldTanhTab(%rip), %rdx
+        movb      7(%rdi), %al
+        andb      $-128, %al
+        shrb      $7, %al
+        movzbl    %al, %ecx
+        movzwl    6(%rdi), %eax
+        andl      $32752, %eax
+        shrl      $4, %eax
+        movq      (%rdx,%rcx,8), %rdx
+        cmpl      $2047, %eax
+        je        L(9)
+        cmpl      $2046, %eax
+        jne       L(7)
+
+L(6):
+        movq      %rdx, (%rsi)
+        jmp       L(8)
+
+L(7):
+        movsd     (%rdi), %xmm1
+        movsd     __dtanh_la__imldTanhTab(%rip), %xmm0
+        addsd     %xmm1, %xmm0
+        mulsd     %xmm0, %xmm1
+        movsd     %xmm1, (%rsi)
+
+L(8):
+        xorl      %eax, %eax
+        ret
+
+L(9):
+        testl     $1048575, 4(%rdi)
+        jne       L(10)
+        cmpl      $0, (%rdi)
+        je        L(6)
+
+L(10):
+        movsd     (%rdi), %xmm0
+        addsd     %xmm0, %xmm0
+        movsd     %xmm0, (%rsi)
+        jmp       L(8)
+
+        cfi_endproc
+
+        .type	__svml_dtanh_cout_rare_internal,@function
+        .size	__svml_dtanh_cout_rare_internal,.-__svml_dtanh_cout_rare_internal
+
+        .section .rodata, "a"
+        .align 64
+
+__svml_dtanh_data_internal:
+        .long	0
+        .long	0
+        .long	0
+        .long	1070333952
+        .long	0
+        .long	1070858240
+        .long	0
+        .long	1071382528
+        .long	0
+        .long	1071906816
+        .long	0
+        .long	1072431104
+        .long	0
+        .long	1072955392
+        .long	0
+        .long	1073479680
+        .long	0
+        .long	1074003968
+        .long	0
+        .long	1074528256
+        .long	0
+        .long	1075052544
+        .long	0
+        .long	1075576832
+        .long	0
+        .long	1076101120
+        .long	0
+        .long	1076625408
+        .long	0
+        .long	1077149696
+        .long	0
+        .long	0
+        .long	0
+        .long	0
+        .long	1097497746
+        .long	1070305232
+        .long	2699715854
+        .long	1070817176
+        .long	3997728823
+        .long	1071273769
+        .long	3938160533
+        .long	1071759175
+        .long	193732629
+        .long	1072072293
+        .long	3144363502
+        .long	1072375075
+        .long	2548249895
+        .long	1072570303
+        .long	638218690
+        .long	1072665176
+        .long	3325726839
+        .long	1072689426
+        .long	2523455249
+        .long	1072693057
+        .long	2200391922
+        .long	1072693244
+        .long	4257836853
+        .long	1072693247
+        .long	4294954840
+        .long	1072693247
+        .long	0
+        .long	1072693248
+        .long	0
+        .long	1072693248
+        .long	0
+        .long	0
+        .long	3167993022
+        .long	1013310014
+        .long	2889539328
+        .long	3159121931
+        .long	394645568
+        .long	1013728265
+        .long	2799920971
+        .long	1015161303
+        .long	754366556
+        .long	1013577885
+        .long	3960180508
+        .long	1014215657
+        .long	69774042
+        .long	3162475851
+        .long	2161066944
+        .long	3162264280
+        .long	923362432
+        .long	1014879086
+        .long	2160345802
+        .long	1014714211
+        .long	3729195158
+        .long	3161626453
+        .long	675671997
+        .long	1015336837
+        .long	1141527416
+        .long	1013957883
+        .long	2209699952
+        .long	3160643600
+        .long	0
+        .long	0
+        .long	0
+        .long	1072693248
+        .long	2750448946
+        .long	1072596012
+        .long	1257606939
+        .long	1072501079
+        .long	2619663609
+        .long	1072338011
+        .long	863303701
+        .long	1072048204
+        .long	2694810990
+        .long	1071654144
+        .long	837003456
+        .long	1070723665
+        .long	472162617
+        .long	1069359818
+        .long	532307062
+        .long	1067137790
+        .long	431106849
+        .long	1064162173
+        .long	329904022
+        .long	1059572972
+        .long	4080160942
+        .long	1053550275
+        .long	1402271583
+        .long	1044493446
+        .long	467296040
+        .long	1032344560
+        .long	26734424
+        .long	1014207804
+        .long	0
+        .long	0
+        .long	1071622681
+        .long	3153114090
+        .long	3948133409
+        .long	3217705130
+        .long	4096956694
+        .long	3218184481
+        .long	2616164369
+        .long	3218465008
+        .long	2620770434
+        .long	3218641845
+        .long	3075958072
+        .long	3218520700
+        .long	1950184789
+        .long	3217978001
+        .long	2686385024
+        .long	3216731525
+        .long	1489441818
+        .long	3214597550
+        .long	1992796697
+        .long	3211642259
+        .long	1952936976
+        .long	3207056478
+        .long	3904162951
+        .long	3201033920
+        .long	1382745445
+        .long	3191977094
+        .long	468673444
+        .long	3179828208
+        .long	3843669553
+        .long	3161691483
+        .long	0
+        .long	0
+        .long	1431655765
+        .long	3218429269
+        .long	3264395793
+        .long	3218178991
+        .long	60595194
+        .long	3217824331
+        .long	1837960166
+        .long	3217124894
+        .long	1964918946
+        .long	3214033516
+        .long	2998587684
+        .long	1068822866
+        .long	3421467326
+        .long	1069267520
+        .long	952003133
+        .long	1068506016
+        .long	1215426504
+        .long	1066495476
+        .long	2650572912
+        .long	1063503494
+        .long	4178958376
+        .long	1059043758
+        .long	3799805457
+        .long	1052940753
+        .long	3704238924
+        .long	1043831645
+        .long	2076585114
+        .long	1031813109
+        .long	1352847351
+        .long	1013591371
+        .long	0
+        .long	0
+        .long	3830371894
+        .long	3169224254
+        .long	74893150
+        .long	1069567437
+        .long	1235750664
+        .long	1069825332
+        .long	916043751
+        .long	1069924975
+        .long	4138411315
+        .long	1069655686
+        .long	829220656
+        .long	1068441660
+        .long	663246204
+        .long	3213477792
+        .long	652268865
+        .long	3214415230
+        .long	3251098232
+        .long	3212868437
+        .long	1480792335
+        .long	3209929101
+        .long	3365608027
+        .long	3205478075
+        .long	3330582883
+        .long	3199375817
+        .long	3573234945
+        .long	3190266717
+        .long	2061970086
+        .long	3178248181
+        .long	3148320390
+        .long	3160026274
+        .long	0
+        .long	0
+        .long	286337717
+        .long	1069617425
+        .long	4261152941
+        .long	1068876190
+        .long	3694459820
+        .long	1067928728
+        .long	2399079031
+        .long	3212381546
+        .long	394897286
+        .long	3215735810
+        .long	3073534041
+        .long	3215860118
+        .long	301960234
+        .long	3214124960
+        .long	3353887502
+        .long	1064191753
+        .long	4200665425
+        .long	1063741482
+        .long	2003926207
+        .long	1061090030
+        .long	2196865207
+        .long	1056528964
+        .long	2107880963
+        .long	1050526402
+        .long	3656860478
+        .long	1041425071
+        .long	881228218
+        .long	1029305120
+        .long	2612840768
+        .long	1011136029
+        .long	0
+        .long	0
+        .long	3722294196
+        .long	3181505049
+        .long	2573001951
+        .long	3216029919
+        .long	4095639908
+        .long	3216151900
+        .long	3272210374
+        .long	3215957253
+        .long	3439280785
+        .long	3214441767
+        .long	628273304
+        .long	1066085542
+        .long	3354767370
+        .long	1066343670
+        .long	300170709
+        .long	1063270296
+        .long	1870156670
+        .long	3209139074
+        .long	1580606479
+        .long	3206808937
+        .long	3818710870
+        .long	3202408589
+        .long	3126817102
+        .long	3196311305
+        .long	3320734688
+        .long	3187224127
+        .long	821170446
+        .long	3175173312
+        .long	3906480775
+        .long	3156975650
+        .long	0
+        .long	0
+        .long	428888587
+        .long	3215696314
+        .long	3125999356
+        .long	3214336891
+        .long	407196569
+        .long	1053816799
+        .long	886258254
+        .long	1066874408
+        .long	2149075781
+        .long	1067351939
+        .long	3888390356
+        .long	1065784643
+        .long	1226056234
+        .long	3211994813
+        .long	178100474
+        .long	3210723675
+        .long	4201249718
+        .long	1058328572
+        .long	3854015760
+        .long	1057324616
+        .long	3621220964
+        .long	1052982118
+        .long	1468766992
+        .long	1046916174
+        .long	2369608770
+        .long	1037879115
+        .long	327127732
+        .long	1025754505
+        .long	747046817
+        .long	1007714190
+        .long	0
+        .long	0
+        .long	4036362527
+        .long	3191151783
+        .long	839661649
+        .long	1067363059
+        .long	4269154241
+        .long	1067251747
+        .long	391446303
+        .long	1066410535
+        .long	2090623151
+        .long	3211993063
+        .long	1751510141
+        .long	3213141508
+        .long	4072216875
+        .long	3209470961
+        .long	3769618983
+        .long	1061976030
+        .long	3462945146
+        .long	1057228123
+        .long	3030849095
+        .long	3202531084
+        .long	4269010901
+        .long	3198361258
+        .long	742615277
+        .long	3192302512
+        .long	3397417437
+        .long	3183265609
+        .long	943110610
+        .long	3171141000
+        .long	371608300
+        .long	3153099348
+        .long	0
+        .long	0
+        .long	1315619150
+        .long	1066820857
+        .long	1001273821
+        .long	3214201652
+        .long	3859675203
+        .long	3212560200
+        .long	725858949
+        .long	3213658423
+        .long	2464052346
+        .long	3212913056
+        .long	1297319750
+        .long	1063307355
+        .long	563735576
+        .long	1062988089
+        .long	2756222736
+        .long	3207203944
+        .long	31207338
+        .long	3204466214
+        .long	434022900
+        .long	1052227234
+        .long	2370591882
+        .long	1048628172
+        .long	588930601
+        .long	1042556347
+        .long	3198977634
+        .long	1033474724
+        .long	1590950759
+        .long	1021415866
+        .long	195904708
+        .long	1003000389
+        .long	0
+        .long	0
+        .long	4252521214
+        .long	3198731457
+        .long	2969857811
+        .long	3217870358
+        .long	575387574
+        .long	3212943727
+        .long	67550217
+        .long	3210922992
+        .long	2955736731
+        .long	1064678043
+        .long	4193848343
+        .long	1063288304
+        .long	1845975253
+        .long	3209397546
+        .long	1025213509
+        .long	3204479174
+        .long	3713384058
+        .long	1055658730
+        .long	4120057883
+        .long	3194988032
+        .long	1573797757
+        .long	3193584787
+        .long	2514726550
+        .long	3187678317
+        .long	15343571
+        .long	3178526042
+        .long	104576940
+        .long	3166444652
+        .long	1147207168
+        .long	3148070554
+        .long	0
+        .long	0
+        .long	1467656669
+        .long	3212977156
+        .long	4154993315
+        .long	1077775111
+        .long	2465966858
+        .long	3214886059
+        .long	71777642
+        .long	1068690118
+        .long	2419763912
+        .long	1061550205
+        .long	1896047360
+        .long	3210612806
+        .long	3723555648
+        .long	1058651288
+        .long	3163703016
+        .long	1057833732
+        .long	1601936705
+        .long	3201383489
+        .long	2535509424
+        .long	3195153293
+        .long	3610885824
+        .long	1043474022
+        .long	1031698712
+        .long	1037527637
+        .long	1497459257
+        .long	1028514042
+        .long	3476455860
+        .long	1016366870
+        .long	758110873
+        .long	998719391
+        .long	0
+        .long	0
+        .long	572446067
+        .long	3204307354
+        .long	926268084
+        .long	1081104698
+        .long	1313112926
+        .long	3217861477
+        .long	3660716
+        .long	1070677720
+        .long	124568711
+        .long	3210757561
+        .long	2123022704
+        .long	1059096046
+        .long	576783408
+        .long	1059279430
+        .long	1651052980
+        .long	3204387494
+        .long	3164866735
+        .long	1051430920
+        .long	409335328
+        .long	1046695415
+        .long	3481520755
+        .long	3188046619
+        .long	1140549474
+        .long	3182373569
+        .long	708689751
+        .long	3173247717
+        .long	2627769694
+        .long	3161153086
+        .long	3804346926
+        .long	3143551592
+        .long	0
+        .long	0
+        .long	2302818369
+        .long	1064188902
+        .long	526101185
+        .long	3235013457
+        .long	2975776348
+        .long	1075224435
+        .long	1103981749
+        .long	3223699933
+        .long	4261798097
+        .long	3210280329
+        .long	30781306
+        .long	1064564655
+        .long	3939597931
+        .long	3206430909
+        .long	1816466405
+        .long	1055007949
+        .long	3868125859
+        .long	3190076997
+        .long	4218600579
+        .long	3192569835
+        .long	4167655123
+        .long	1037376568
+        .long	952533803
+        .long	1032000428
+        .long	895641221
+        .long	1022851193
+        .long	1237761065
+        .long	1010835452
+        .long	2902086315
+        .long	3133082401
+        .long	0
+        .long	0
+        .long	1899646778
+        .long	3207205638
+        .long	2434183270
+        .long	3238288976
+        .long	621380814
+        .long	1078065849
+        .long	247717525
+        .long	3225783561
+        .long	1611742563
+        .long	3212088477
+        .long	537725662
+        .long	1065131990
+        .long	3769436831
+        .long	1057148224
+        .long	3759797009
+        .long	3196422840
+        .long	842759416
+        .long	3195613094
+        .long	1736926210
+        .long	1043198029
+        .long	3915271468
+        .long	3180709675
+        .long	807416070
+        .long	3176507548
+        .long	3147759461
+        .long	3167409843
+        .long	3443382404
+        .long	3155325020
+        .long	1202615797
+        .long	3129870924
+        .long	0
+        .long	0
+        .long	1841653873
+        .long	3210074087
+        .long	2157744327
+        .long	1095928888
+        .long	3038317314
+        .long	3229013375
+        .long	2291108570
+        .long	1082519711
+        .long	707775397
+        .long	1067599411
+        .long	445214669
+        .long	3216153989
+        .long	3815354898
+        .long	1054410330
+        .long	1285070896
+        .long	3199787450
+        .long	1722630166
+        .long	1047526663
+        .long	2672844635
+        .long	3188483010
+        .long	1805520457
+        .long	3179260705
+        .long	542550567
+        .long	1026041526
+        .long	392361251
+        .long	1017320419
+        .long	562647833
+        .long	1005205418
+        .long	4253488278
+        .long	988137457
+        .long	0
+        .long	0
+        .long	3077187303
+        .long	1060497018
+        .long	1652392454
+        .long	1099206368
+        .long	414484972
+        .long	3231848150
+        .long	130592591
+        .long	1084602513
+        .long	1951534810
+        .long	1068932483
+        .long	2677544726
+        .long	3216895313
+        .long	2338009969
+        .long	3203411240
+        .long	302629286
+        .long	1051889816
+        .long	1274412910
+        .long	3193339538
+        .long	3731558070
+        .long	1038350327
+        .long	3135499196
+        .long	1030352152
+        .long	1329461873
+        .long	3170325324
+        .long	4058709792
+        .long	3161656179
+        .long	2167788642
+        .long	3149540607
+        .long	1602064437
+        .long	3132466971
+        .long	0
+        .long	0
+        .long	2146959360
+        .long	2146959360
+        .long	2146959360
+        .long	2146959360
+        .long	2146959360
+        .long	2146959360
+        .long	2146959360
+        .long	2146959360
+        .long	2146959360
+        .long	2146959360
+        .long	2146959360
+        .long	2146959360
+        .long	2146959360
+        .long	2146959360
+        .long	2146959360
+        .long	2146959360
+        .long	1069547520
+        .long	1069547520
+        .long	1069547520
+        .long	1069547520
+        .long	1069547520
+        .long	1069547520
+        .long	1069547520
+        .long	1069547520
+        .long	1069547520
+        .long	1069547520
+        .long	1069547520
+        .long	1069547520
+        .long	1069547520
+        .long	1069547520
+        .long	1069547520
+        .long	1069547520
+        .long	7864320
+        .long	7864320
+        .long	7864320
+        .long	7864320
+        .long	7864320
+        .long	7864320
+        .long	7864320
+        .long	7864320
+        .long	7864320
+        .long	7864320
+        .long	7864320
+        .long	7864320
+        .long	7864320
+        .long	7864320
+        .long	7864320
+        .long	7864320
+        .long	0
+        .long	0
+        .long	0
+        .long	0
+        .long	0
+        .long	1072693248
+        .long	3616958675
+        .long	3172564458
+        .long	1431547708
+        .long	3218429269
+        .long	3390261318
+        .long	3188010876
+        .long	1446529494
+        .long	1069617425
+        .long	913571762
+        .long	3199219810
+        .long	1583612462
+        .long	3215695720
+        .long	2995724807
+        .long	3207222498
+        .long	847913742
+        .long	1066913721
+        .long	1634876930
+        .long	3212167789
+        .long	0
+        .long	0
+        .long	0
+        .long	1072693248
+        .long	0
+        .long	0
+        .long	0
+        .long	0
+        .long	1694159514
+        .long	1010239653
+        .long	966318664
+        .long	1069606551
+        .long	2992375944
+        .long	1072656686
+        .long	1870405289
+        .long	3217070889
+        .long	1411308967
+        .long	3218333047
+        .long	4096824853
+        .long	1068863484
+        .long	2220740425
+        .long	1069365950
+        .long	1401698298
+        .long	3215430111
+        .long	4137473768
+        .long	3215259762
+        .long	2666938667
+        .long	1066889956
+        .long	121190665
+        .long	1066187784
+        .long	821637913
+        .long	3213226090
+        .long	0
+        .long	3217096704
+        .long	0
+        .long	1072693248
+        .long	0
+        .long	0
+        .long	0
+        .long	0
+        .long	1463410348
+        .long	1012925678
+        .long	2389577058
+        .long	1069735062
+        .long	1617794783
+        .long	1072647710
+        .long	1889094329
+        .long	3217191869
+        .long	1210518828
+        .long	3218309813
+        .long	1479174953
+        .long	1069010221
+        .long	3435917531
+        .long	1069290104
+        .long	291210913
+        .long	3215575029
+        .long	464478606
+        .long	3215159746
+        .long	1063797118
+        .long	1067014292
+        .long	3489481042
+        .long	1065955541
+        .long	2916293494
+        .long	3213319415
+        .long	0
+        .long	3217227776
+        .long	0
+        .long	1072693248
+        .long	0
+        .long	0
+        .long	0
+        .long	0
+        .long	1308961311
+        .long	1014934498
+        .long	2204208241
+        .long	1069862983
+        .long	2945950899
+        .long	1072637797
+        .long	1107689125
+        .long	3217310565
+        .long	545938327
+        .long	3218284334
+        .long	3174275192
+        .long	1069150773
+        .long	3754729793
+        .long	1069207728
+        .long	1611554958
+        .long	3215708601
+        .long	2936527704
+        .long	3215052478
+        .long	2983784402
+        .long	1067121823
+        .long	1327150338
+        .long	1065710404
+        .long	3371320326
+        .long	3213391099
+        .long	0
+        .long	3217358848
+        .long	0
+        .long	1072693248
+        .long	0
+        .long	0
+        .long	0
+        .long	0
+        .long	3546392464
+        .long	1015001497
+        .long	631120375
+        .long	1069990256
+        .long	1201634405
+        .long	1072626967
+        .long	266657677
+        .long	3217426771
+        .long	1567732958
+        .long	3218256710
+        .long	883708059
+        .long	1069284653
+        .long	1008115966
+        .long	1069119372
+        .long	2657338981
+        .long	3215830093
+        .long	3402640736
+        .long	3214939036
+        .long	1000796573
+        .long	1067211764
+        .long	53805889
+        .long	1065455799
+        .long	1736607114
+        .long	3213440608
+        .long	0
+        .long	3217489920
+        .long	0
+        .long	1072693248
+        .long	0
+        .long	0
+        .long	0
+        .long	0
+        .long	2741128528
+        .long	1013617020
+        .long	3111451323
+        .long	1070116823
+        .long	1649040643
+        .long	1072615239
+        .long	3411009101
+        .long	3217540290
+        .long	3408666525
+        .long	3218227049
+        .long	60831764
+        .long	1069411415
+        .long	64016149
+        .long	1069025616
+        .long	1202785467
+        .long	3215938891
+        .long	1072151579
+        .long	3214707060
+        .long	1534357116
+        .long	1067283570
+        .long	4218468492
+        .long	1065037194
+        .long	2285827787
+        .long	3213467810
+        .long	0
+        .long	3217620992
+        .long	0
+        .long	1072693248
+        .long	0
+        .long	0
+        .long	0
+        .long	0
+        .long	2659584459
+        .long	1014368295
+        .long	3537749475
+        .long	1070242630
+        .long	3072983457
+        .long	1072602635
+        .long	3507245872
+        .long	3217650938
+        .long	3434758212
+        .long	3218195466
+        .long	3801643091
+        .long	1069530660
+        .long	1128653951
+        .long	1068927067
+        .long	3580298628
+        .long	3216008547
+        .long	1645082338
+        .long	3214462237
+        .long	1048857889
+        .long	1067336943
+        .long	21547694
+        .long	1064510970
+        .long	1433152914
+        .long	3213472968
+        .long	0
+        .long	3217752064
+        .long	0
+        .long	1072693248
+        .long	0
+        .long	0
+        .long	0
+        .long	0
+        .long	2718912981
+        .long	1013914074
+        .long	1823051285
+        .long	1070367623
+        .long	1714227149
+        .long	1072589179
+        .long	2128046799
+        .long	3217758540
+        .long	2655098722
+        .long	3218162081
+        .long	1690074008
+        .long	1069594780
+        .long	353091525
+        .long	1068824353
+        .long	4206393496
+        .long	3216049578
+        .long	824478721
+        .long	3214211899
+        .long	3850924188
+        .long	1067371825
+        .long	2738209029
+        .long	1063668369
+        .long	853664366
+        .long	3213456718
+        .long	0
+        .long	3217883136
+        .long	0
+        .long	1072693248
+        .long	0
+        .long	0
+        .long	0
+        .long	0
+        .long	2312638749
+        .long	1013630664
+        .long	4267025360
+        .long	1070491748
+        .long	3776362539
+        .long	1072574894
+        .long	3063840907
+        .long	3217862932
+        .long	2436606365
+        .long	3218127019
+        .long	582931594
+        .long	1069646387
+        .long	3079837843
+        .long	1068718114
+        .long	3430470362
+        .long	3216083715
+        .long	1015897693
+        .long	3213958348
+        .long	765047087
+        .long	1067388396
+        .long	2337193368
+        .long	1061824569
+        .long	3002775972
+        .long	3213420044
+        .long	0
+        .long	3218014208
+        .long	0
+        .long	1072693248
+        .long	0
+        .long	0
+        .long	0
+        .long	0
+        .long	2001712669
+        .long	1015665334
+        .long	1330879460
+        .long	1070636148
+        .long	2956987714
+        .long	1072551971
+        .long	4281360332
+        .long	3218013175
+        .long	3304213057
+        .long	3218063389
+        .long	3261945160
+        .long	1069715874
+        .long	3866284424
+        .long	1068553570
+        .long	3423706630
+        .long	3216121886
+        .long	259493169
+        .long	3213268437
+        .long	4223676832
+        .long	1067379852
+        .long	2765317642
+        .long	3210752240
+        .long	2292494069
+        .long	3213329490
+        .long	0
+        .long	3218145280
+        .long	0
+        .long	1072693248
+        .long	0
+        .long	0
+        .long	0
+        .long	0
+        .long	1632443533
+        .long	1015769771
+        .long	3788472163
+        .long	1070757367
+        .long	2406795724
+        .long	1072518757
+        .long	1173083542
+        .long	3218140352
+        .long	3726086528
+        .long	3217906251
+        .long	1205028711
+        .long	1069793280
+        .long	2231197855
+        .long	1068156878
+        .long	2368637763
+        .long	3216148628
+        .long	2866127296
+        .long	3211617797
+        .long	2424606359
+        .long	1067309831
+        .long	2444940724
+        .long	3212180962
+        .long	3308128888
+        .long	3213151909
+        .long	0
+        .long	3218276352
+        .long	0
+        .long	1072693248
+        .long	0
+        .long	0
+        .long	0
+        .long	0
+        .long	478834383
+        .long	1014053288
+        .long	1342399495
+        .long	1070876422
+        .long	2650660168
+        .long	1072482726
+        .long	976724127
+        .long	3218226669
+        .long	962417089
+        .long	3217740546
+        .long	1060150306
+        .long	1069852926
+        .long	411739190
+        .long	1067700577
+        .long	3846786712
+        .long	3216148687
+        .long	4007187252
+        .long	1064073475
+        .long	3455779574
+        .long	1067180067
+        .long	1865169557
+        .long	3212900393
+        .long	1200620699
+        .long	3212923615
+        .long	0
+        .long	3218407424
+        .long	0
+        .long	1072693248
+        .long	0
+        .long	0
+        .long	0
+        .long	0
+        .long	267289397
+        .long	1014452734
+        .long	302318249
+        .long	1070993143
+        .long	1373990511
+        .long	1072444121
+        .long	1606419704
+        .long	3218305061
+        .long	3955669825
+        .long	3217568496
+        .long	2701083439
+        .long	1069894809
+        .long	3425188888
+        .long	1067047616
+        .long	2305426029
+        .long	3216123827
+        .long	1692531481
+        .long	1065641523
+        .long	232815703
+        .long	1067000535
+        .long	3949954748
+        .long	3213214884
+        .long	558890519
+        .long	3212487521
+        .long	0
+        .long	3218538496
+        .long	0
+        .long	1072693248
+        .long	0
+        .long	0
+        .long	0
+        .long	0
+        .long	1719941932
+        .long	1006528498
+        .long	368840470
+        .long	1071107377
+        .long	1825320027
+        .long	1072403193
+        .long	538136722
+        .long	3218375283
+        .long	1431312010
+        .long	3217392305
+        .long	2586725425
+        .long	1069919291
+        .long	2680871675
+        .long	1065941593
+        .long	4123661982
+        .long	3216076488
+        .long	4235496382
+        .long	1066406926
+        .long	2618960092
+        .long	1066782660
+        .long	2333865044
+        .long	3213444845
+        .long	1545458959
+        .long	3211934181
+        .long	0
+        .long	3218669568
+        .long	0
+        .long	1072693248
+        .long	0
+        .long	0
+        .long	0
+        .long	0
+        .long	26286236
+        .long	1013191219
+        .long	990113957
+        .long	1071218987
+        .long	3284199501
+        .long	1072360200
+        .long	2981906127
+        .long	3218437190
+        .long	3154396333
+        .long	3217214106
+        .long	4182117656
+        .long	1069927061
+        .long	903677379
+        .long	3207343530
+        .long	384743261
+        .long	3216009637
+        .long	1679228359
+        .long	1066734193
+        .long	3407026595
+        .long	1066538544
+        .long	784962854
+        .long	3213588186
+        .long	1956733412
+        .long	3210979700
+        .long	0
+        .long	3218800640
+        .long	0
+        .long	1072693248
+        .long	0
+        .long	0
+        .long	0
+        .long	0
+        .long	1468217372
+        .long	1015658399
+        .long	2570814109
+        .long	1071327852
+        .long	532296332
+        .long	1072315404
+        .long	318213600
+        .long	3218490738
+        .long	3661105766
+        .long	3217035931
+        .long	4085840862
+        .long	1069919095
+        .long	2798312316
+        .long	3213370099
+        .long	1668326589
+        .long	3215870599
+        .long	3158013712
+        .long	1066998409
+        .long	673205579
+        .long	1066158659
+        .long	486665227
+        .long	3213647762
+        .long	3317145528
+        .long	3208570948
+        .long	0
+        .long	3218931712
+        .long	0
+        .long	1072693248
+        .long	0
+        .long	0
+        .long	0
+        .long	0
+        .long	2060955015
+        .long	1014233667
+        .long	2567098181
+        .long	1071433868
+        .long	1159081245
+        .long	1072269064
+        .long	1492598184
+        .long	3218535971
+        .long	1567055841
+        .long	3216688180
+        .long	2821222425
+        .long	1069896605
+        .long	3691290783
+        .long	3214336992
+        .long	343679101
+        .long	3215679175
+        .long	1878686296
+        .long	1067197462
+        .long	125933636
+        .long	1065636281
+        .long	421076939
+        .long	3213630573
+        .long	3748848474
+        .long	1062499186
+        .long	0
+        .long	3219062784
+        .long	0
+        .long	1072693248
+        .long	0
+        .long	0
+        .long	0
+        .long	0
+        .long	1860475216
+        .long	1015320544
+        .long	439764829
+        .long	1071587361
+        .long	3870821058
+        .long	1072197223
+        .long	1430736283
+        .long	3218588540
+        .long	1597812790
+        .long	3216174065
+        .long	2398544810
+        .long	1069838732
+        .long	961452807
+        .long	3215095800
+        .long	716310499
+        .long	3215360049
+        .long	2337792646
+        .long	1067375770
+        .long	3863538422
+        .long	1064417477
+        .long	2203480844
+        .long	3213482785
+        .long	2389621902
+        .long	1063978354
+        .long	0
+        .long	3219193856
+        .long	0
+        .long	1072693248
+        .long	0
+        .long	0
+        .long	0
+        .long	0
+        .long	517838046
+        .long	1015294339
+        .long	2114713104
+        .long	1071713012
+        .long	2046328558
+        .long	1072098392
+        .long	29352448
+        .long	3218631376
+        .long	1533416325
+        .long	3215079684
+        .long	765247815
+        .long	1069724759
+        .long	24381189
+        .long	3215564623
+        .long	1213155449
+        .long	3214886044
+        .long	379420126
+        .long	1067409218
+        .long	3127061143
+        .long	3210809777
+        .long	3193663073
+        .long	3213128287
+        .long	2557278876
+        .long	1064581282
+        .long	0
+        .long	3219324928
+        .long	0
+        .long	1072693248
+        .long	0
+        .long	0
+        .long	0
+        .long	0
+        .long	201012485
+        .long	1013704982
+        .long	4147262407
+        .long	1071803766
+        .long	3048814903
+        .long	1071997795
+        .long	1260857726
+        .long	3218645540
+        .long	270462819
+        .long	3209873967
+        .long	874660781
+        .long	1069580732
+        .long	1251156804
+        .long	3215866075
+        .long	3568210118
+        .long	3214014484
+        .long	3784557811
+        .long	1067255146
+        .long	47772576
+        .long	3212562613
+        .long	2075700783
+        .long	3212539455
+        .long	1121561449
+        .long	1064698735
+        .long	0
+        .long	3219456000
+        .long	0
+        .long	1072693248
+        .long	0
+        .long	0
+        .long	0
+        .long	0
+        .long	72370286
+        .long	1015768239
+        .long	2345366573
+        .long	1071888223
+        .long	3155310239
+        .long	1071897123
+        .long	4105462806
+        .long	3218634383
+        .long	2329529114
+        .long	1067280331
+        .long	3078782452
+        .long	1069291148
+        .long	2210998062
+        .long	3215997483
+        .long	1498585052
+        .long	3212353515
+        .long	3032692199
+        .long	1066974465
+        .long	809329973
+        .long	3213081308
+        .long	2713838579
+        .long	3211547879
+        .long	1266611175
+        .long	1064568889
+        .long	0
+        .long	3219587072
+        .long	0
+        .long	1072693248
+        .long	0
+        .long	0
+        .long	0
+        .long	0
+        .long	2137918782
+        .long	1013598293
+        .long	2511343836
+        .long	1071966424
+        .long	4205808243
+        .long	1071797842
+        .long	2776384587
+        .long	3218601667
+        .long	3824787134
+        .long	1068202086
+        .long	4101819712
+        .long	1068956189
+        .long	3547601806
+        .long	3216004360
+        .long	4156237724
+        .long	1064058621
+        .long	3714924071
+        .long	1066627770
+        .long	2925917146
+        .long	3213234133
+        .long	4211598888
+        .long	3209111151
+        .long	2569808389
+        .long	1064277859
+        .long	0
+        .long	3219718144
+        .long	0
+        .long	1072693248
+        .long	0
+        .long	0
+        .long	0
+        .long	0
+        .long	2979324843
+        .long	1013692066
+        .long	2595126306
+        .long	1072038496
+        .long	4263058559
+        .long	1071701178
+        .long	2217257467
+        .long	3218551298
+        .long	2310932059
+        .long	1068685603
+        .long	3368327571
+        .long	1068627625
+        .long	3037419246
+        .long	3215935424
+        .long	3509936675
+        .long	1065724141
+        .long	1557247226
+        .long	1066131548
+        .long	3830787958
+        .long	3213205743
+        .long	1781883284
+        .long	1062575914
+        .long	3918078093
+        .long	1063614197
+        .long	0
+        .long	3219849216
+        .long	0
+        .long	1072693248
+        .long	0
+        .long	0
+        .long	0
+        .long	0
+        .long	3630992244
+        .long	1015034507
+        .long	461360001
+        .long	1072104635
+        .long	2866201612
+        .long	1071571556
+        .long	1021729265
+        .long	3218487113
+        .long	1039036234
+        .long	1068940858
+        .long	1685105679
+        .long	1068140011
+        .long	1856275853
+        .long	3215769620
+        .long	2211306181
+        .long	1066373046
+        .long	3739405201
+        .long	1065456917
+        .long	3870269089
+        .long	3213053509
+        .long	427599213
+        .long	1063593231
+        .long	40698732
+        .long	1062709094
+        .long	0
+        .long	3219980288
+        .long	0
+        .long	1072693248
+        .long	0
+        .long	0
+        .long	0
+        .long	0
+        .long	4017840557
+        .long	1014067070
+        .long	2764932206
+        .long	1072165089
+        .long	3362970633
+        .long	1071394124
+        .long	2677206355
+        .long	3218412713
+        .long	1827861303
+        .long	1069122666
+        .long	2476388705
+        .long	1067583638
+        .long	523365901
+        .long	3215556224
+        .long	1203249285
+        .long	1066574111
+        .long	4264074292
+        .long	1064402288
+        .long	3556167213
+        .long	3212827889
+        .long	3894081206
+        .long	1063908871
+        .long	2161178761
+        .long	1061130844
+        .long	0
+        .long	3220111360
+        .long	0
+        .long	1072693248
+        .long	0
+        .long	0
+        .long	0
+        .long	0
+        .long	3622330478
+        .long	1016273425
+        .long	923638641
+        .long	1072245755
+        .long	239419665
+        .long	1071146518
+        .long	4085259706
+        .long	3218288969
+        .long	1284806809
+        .long	1069276013
+        .long	2806747971
+        .long	1066232498
+        .long	75259250
+        .long	3215197393
+        .long	2597116185
+        .long	1066648701
+        .long	1680670491
+        .long	3208755029
+        .long	446818184
+        .long	3212096816
+        .long	1529495144
+        .long	1063888972
+        .long	808619025
+        .long	3208443000
+        .long	0
+        .long	3220242432
+        .long	0
+        .long	1072693248
+        .long	0
+        .long	0
+        .long	0
+        .long	0
+        .long	462410646
+        .long	1015565639
+        .long	3157363066
+        .long	1072336316
+        .long	87541994
+        .long	1070853747
+        .long	2905067058
+        .long	3218115077
+        .long	1081050294
+        .long	1069306453
+        .long	4130581086
+        .long	3212259234
+        .long	1279737796
+        .long	3214531982
+        .long	901138781
+        .long	1066501065
+        .long	978916480
+        .long	3211806490
+        .long	1307294116
+        .long	3210755549
+        .long	1154728319
+        .long	1063409950
+        .long	983243444
+        .long	3209435485
+        .long	0
+        .long	3220373504
+        .long	0
+        .long	1072693248
+        .long	0
+        .long	0
+        .long	0
+        .long	0
+        .long	2617212772
+        .long	1016126748
+        .long	2762378177
+        .long	1072409936
+        .long	1926160805
+        .long	1070604218
+        .long	4131898582
+        .long	3217810482
+        .long	3068505203
+        .long	1069203346
+        .long	2854543895
+        .long	3214027139
+        .long	1276437050
+        .long	3213652513
+        .long	523800203
+        .long	1066060621
+        .long	3030576699
+        .long	3212054264
+        .long	210618624
+        .long	3205409267
+        .long	3515290542
+        .long	1062456384
+        .long	1613351841
+        .long	3209185464
+        .long	0
+        .long	3220504576
+        .long	0
+        .long	1072693248
+        .long	0
+        .long	0
+        .long	0
+        .long	0
+        .long	2178033281
+        .long	1016051223
+        .long	859883711
+        .long	1072469258
+        .long	4248327203
+        .long	1070195167
+        .long	4170103331
+        .long	3217497647
+        .long	3497702842
+        .long	1069026027
+        .long	669705965
+        .long	3214426190
+        .long	548733038
+        .long	3212258725
+        .long	1756337187
+        .long	1065503890
+        .long	1830841059
+        .long	3211930343
+        .long	1445563742
+        .long	1061912703
+        .long	2113494314
+        .long	1060991234
+        .long	1734825467
+        .long	3208559895
+        .long	0
+        .long	3220635648
+        .long	0
+        .long	1072693248
+        .long	0
+        .long	0
+        .long	0
+        .long	0
+        .long	1674478116
+        .long	1016412476
+        .long	1178764976
+        .long	1072516719
+        .long	1119346206
+        .long	1069851736
+        .long	1526584272
+        .long	3217221512
+        .long	3575463915
+        .long	1068817773
+        .long	2913683612
+        .long	3214542291
+        .long	1135909212
+        .long	3207879094
+        .long	1952394810
+        .long	1064725296
+        .long	508910559
+        .long	3211537545
+        .long	225204077
+        .long	1062311155
+        .long	1009857186
+        .long	1056234420
+        .long	2872841632
+        .long	3207480811
+        .long	0
+        .long	3220766720
+        .long	0
+        .long	1072693248
+        .long	0
+        .long	0
+        .long	0
+        .long	0
+        .long	1768234410
+        .long	1014305046
+        .long	1496797583
+        .long	1072554475
+        .long	3351833521
+        .long	1069572393
+        .long	68183265
+        .long	3216938851
+        .long	4178655528
+        .long	1068606905
+        .long	60791550
+        .long	3214483781
+        .long	1856281737
+        .long	1063701265
+        .long	4260560897
+        .long	1063778674
+        .long	2539586291
+        .long	3210979253
+        .long	2272785608
+        .long	1062198907
+        .long	1986161572
+        .long	3206910344
+        .long	1016667904
+        .long	3205797138
+        .long	0
+        .long	3220897792
+        .long	0
+        .long	1072693248
+        .long	0
+        .long	0
+        .long	0
+        .long	0
+        .long	3074583847
+        .long	1017063845
+        .long	4092570620
+        .long	1072584374
+        .long	3645618684
+        .long	1069147119
+        .long	1980755111
+        .long	3216542681
+        .long	889928399
+        .long	1068320928
+        .long	1360064809
+        .long	3214330986
+        .long	2266432388
+        .long	1064407878
+        .long	4147854841
+        .long	1062471610
+        .long	1812350685
+        .long	3210287970
+        .long	3710399832
+        .long	1061728481
+        .long	2458127659
+        .long	3207279138
+        .long	287360833
+        .long	3197756422
+        .long	0
+        .long	3221028864
+        .long	0
+        .long	1072693248
+        .long	0
+        .long	0
+        .long	0
+        .long	0
+        .long	68970445
+        .long	1013643458
+        .long	3990219923
+        .long	1072607967
+        .long	97498680
+        .long	1068787106
+        .long	4136450559
+        .long	3216216395
+        .long	147179316
+        .long	1067971098
+        .long	1625987424
+        .long	3214138005
+        .long	3965878798
+        .long	1064539455
+        .long	3777445436
+        .long	1059539413
+        .long	3029913178
+        .long	3209512624
+        .long	2162291908
+        .long	1061245910
+        .long	351053474
+        .long	3207087984
+        .long	3766283083
+        .long	1056943188
+        .long	0
+        .long	3221159936
+        .long	0
+        .long	1072693248
+        .long	0
+        .long	0
+        .long	0
+        .long	0
+        .long	3139580402
+        .long	1014663922
+        .long	3748810696
+        .long	1072634260
+        .long	3154943320
+        .long	1068262833
+        .long	3181856712
+        .long	3215694135
+        .long	3656356636
+        .long	1067539266
+        .long	3897588284
+        .long	3213798616
+        .long	1461831298
+        .long	1064461217
+        .long	2900114226
+        .long	3208814642
+        .long	2606420357
+        .long	3207868903
+        .long	1741152094
+        .long	1060222230
+        .long	1469206701
+        .long	3206514441
+        .long	3518993813
+        .long	1057090958
+        .long	0
+        .long	3221291008
+        .long	0
+        .long	1072693248
+        .long	0
+        .long	0
+        .long	0
+        .long	0
+        .long	3285908565
+        .long	1015477239
+        .long	1797956315
+        .long	1072657271
+        .long	3302471936
+        .long	1067543167
+        .long	2151339553
+        .long	3215007235
+        .long	362228095
+        .long	1066797401
+        .long	3986406156
+        .long	3213131380
+        .long	388353381
+        .long	1064042359
+        .long	4147910906
+        .long	3209239839
+        .long	1739922885
+        .long	1056259812
+        .long	3188561056
+        .long	1058406709
+        .long	489122368
+        .long	3205182155
+        .long	202560853
+        .long	1056234231
+        .long	0
+        .long	3221422080
+        .long	0
+        .long	1072693248
+        .long	0
+        .long	0
+        .long	0
+        .long	0
+        .long	3806705628
+        .long	1008327668
+        .long	884432573
+        .long	1072671353
+        .long	137405484
+        .long	1066747168
+        .long	3531994812
+        .long	3214216262
+        .long	3217445183
+        .long	1066105333
+        .long	2910288024
+        .long	3212464301
+        .long	3196212707
+        .long	1063467545
+        .long	3156563895
+        .long	3208963593
+        .long	3591285453
+        .long	1058733242
+        .long	2889132271
+        .long	1055392886
+        .long	1038377961
+        .long	3203561698
+        .long	4084672077
+        .long	1055001082
+        .long	0
+        .long	3221553152
+        .long	0
+        .long	1072693248
+        .long	0
+        .long	0
+        .long	0
+        .long	0
+        .long	1881957148
+        .long	1016569186
+        .long	3451706443
+        .long	1072679940
+        .long	143468186
+        .long	1066002557
+        .long	553724800
+        .long	3213475431
+        .long	1049442771
+        .long	1065415105
+        .long	3378521943
+        .long	3211821787
+        .long	3176008209
+        .long	1062800361
+        .long	4016898691
+        .long	3208498219
+        .long	1548390021
+        .long	1058670598
+        .long	2097418483
+        .long	3202689041
+        .long	2756703589
+        .long	3201351283
+        .long	506736184
+        .long	1053405377
+        .long	0
+        .long	3221684224
+        .long	0
+        .long	1072693248
+        .long	0
+        .long	0
+        .long	0
+        .long	0
+        .long	450339788
+        .long	1015040915
+        .long	2959639058
+        .long	1072685166
+        .long	2289443405
+        .long	1065320893
+        .long	3331959139
+        .long	3212796584
+        .long	724199976
+        .long	1064616734
+        .long	938566183
+        .long	3211030741
+        .long	1640535667
+        .long	1062186735
+        .long	187996035
+        .long	3207841256
+        .long	822311531
+        .long	1058246461
+        .long	160890851
+        .long	3203087480
+        .long	3163291388
+        .long	1050479733
+        .long	578249940
+        .long	1051474021
+        .long	0
+        .long	3221815296
+        .long	0
+        .long	1072693248
+        .long	0
+        .long	0
+        .long	0
+        .long	0
+        .long	539445753
+        .long	1012635531
+        .long	3085578536
+        .long	1072688342
+        .long	2019637246
+        .long	1064510347
+        .long	2901018414
+        .long	3211991061
+        .long	2171427566
+        .long	1063868144
+        .long	678185093
+        .long	3210287638
+        .long	2685165718
+        .long	1061401571
+        .long	710336199
+        .long	3207152667
+        .long	2733135798
+        .long	1057659331
+        .long	886948177
+        .long	3202751664
+        .long	3345834247
+        .long	1052218043
+        .long	908728048
+        .long	1047925874
+        .long	0
+        .long	3221946368
+        .long	0
+        .long	1072693248
+        .long	0
+        .long	0
+        .long	0
+        .long	0
+        .long	4240302093
+        .long	1016867082
+        .long	1832260410
+        .long	1072690271
+        .long	154153694
+        .long	1063730412
+        .long	2094548181
+        .long	3211211898
+        .long	1392727515
+        .long	1063180837
+        .long	3132890025
+        .long	3209604411
+        .long	483611698
+        .long	1060651750
+        .long	4246355421
+        .long	3206519479
+        .long	1424637421
+        .long	1057044161
+        .long	2138185318
+        .long	3202290304
+        .long	2276282642
+        .long	1052095798
+        .long	4227780935
+        .long	3196067472
+        .long	0
+        .long	3222077440
+        .long	0
+        .long	1072693248
+        .long	0
+        .long	0
+        .long	0
+        .long	0
+        .long	2485733495
+        .long	1017000498
+        .long	484092514
+        .long	1072691442
+        .long	1653085170
+        .long	1063007344
+        .long	2893019346
+        .long	3210489400
+        .long	878866243
+        .long	1062388018
+        .long	2113174452
+        .long	3208818852
+        .long	2654141437
+        .long	1059959432
+        .long	3578550869
+        .long	3205727739
+        .long	315005006
+        .long	1056288680
+        .long	3246956604
+        .long	3201593495
+        .long	2197286540
+        .long	1051718329
+        .long	3044885069
+        .long	3196227269
+        .long	0
+        .long	3222208512
+        .long	0
+        .long	1072693248
+        .long	0
+        .long	0
+        .long	0
+        .long	0
+        .long	2794994668
+        .long	1016833037
+        .long	3287420517
+        .long	1072692394
+        .long	4133778764
+        .long	1061857404
+        .long	689562148
+        .long	3209340342
+        .long	1404089106
+        .long	1061273627
+        .long	1292441425
+        .long	3207706805
+        .long	93671116
+        .long	1058816787
+        .long	2903327974
+        .long	3204626398
+        .long	4279279273
+        .long	1055202414
+        .long	134688023
+        .long	3200552187
+        .long	3315379764
+        .long	1050761310
+        .long	2945780649
+        .long	3195568939
+        .long	0
+        .long	3222339584
+        .long	0
+        .long	1072693248
+        .long	0
+        .long	0
+        .long	0
+        .long	0
+        .long	2135621136
+        .long	1016053539
+        .long	309961636
+        .long	1072692934
+        .long	672792810
+        .long	1060347512
+        .long	2960305506
+        .long	3207830967
+        .long	1703867620
+        .long	1059726750
+        .long	824905914
+        .long	3206160796
+        .long	3036017847
+        .long	1057284422
+        .long	923304464
+        .long	3203122673
+        .long	1848642304
+        .long	1053791859
+        .long	2215350763
+        .long	3199158388
+        .long	3049848127
+        .long	1049324210
+        .long	3861893815
+        .long	3194293196
+        .long	0
+        .long	3222470656
+        .long	0
+        .long	1072693248
+        .long	0
+        .long	0
+        .long	0
+        .long	0
+        .long	2236028675
+        .long	1016891036
+        .long	2177293363
+        .long	1072693132
+        .long	776830057
+        .long	1058856794
+        .long	4190004158
+        .long	3206340337
+        .long	209955488
+        .long	1058225857
+        .long	845130443
+        .long	3204660651
+        .long	4204313304
+        .long	1055835544
+        .long	364525198
+        .long	3201597210
+        .long	3889299905
+        .long	1052205563
+        .long	1514389355
+        .long	3197586647
+        .long	1706817756
+        .long	1047834665
+        .long	3817417318
+        .long	3192934132
+        .long	0
+        .long	3222601728
+        .long	0
+        .long	1072693248
+        .long	0
+        .long	0
+        .long	0
+        .long	0
+        .long	1074033072
+        .long	1013200912
+        .long	2197899301
+        .long	1072693205
+        .long	1097614282
+        .long	1057308273
+        .long	209489097
+        .long	3204791893
+        .long	3641526339
+        .long	1056723664
+        .long	1792794946
+        .long	3203158586
+        .long	584598707
+        .long	1054254910
+        .long	253996240
+        .long	3200135633
+        .long	642640562
+        .long	1050754580
+        .long	3147361740
+        .long	3196139610
+        .long	1167319222
+        .long	1046395158
+        .long	3488053038
+        .long	3191370264
+        .long	0
+        .long	3222732800
+        .long	0
+        .long	1072693248
+        .long	0
+        .long	0
+        .long	0
+        .long	0
+        .long	871679747
+        .long	1016222468
+        .long	1586311569
+        .long	1072693232
+        .long	4199724405
+        .long	1055867613
+        .long	3041006250
+        .long	3203351246
+        .long	482130003
+        .long	1055184672
+        .long	1689676855
+        .long	3201619703
+        .long	116121201
+        .long	1052814264
+        .long	4166318198
+        .long	3198564764
+        .long	388552649
+        .long	1049191609
+        .long	1384400086
+        .long	3194577312
+        .long	135589376
+        .long	1044819515
+        .long	2497367318
+        .long	3189906305
+        .long	0
+        .long	3222863872
+        .long	0
+        .long	1072693248
+        .long	0
+        .long	0
+        .long	0
+        .long	0
+        .long	752986014
+        .long	1014740322
+        .long	1072834312
+        .long	1072693242
+        .long	1389704451
+        .long	1054277685
+        .long	817998738
+        .long	3201761329
+        .long	996777029
+        .long	1053731553
+        .long	811547911
+        .long	3200166603
+        .long	1604093935
+        .long	1051232383
+        .long	2381858127
+        .long	3197131472
+        .long	806055999
+        .long	1047703656
+        .long	443662424
+        .long	3193089938
+        .long	2855612429
+        .long	1043379518
+        .long	3671581230
+        .long	3188373004
+        .long	0
+        .long	3222994944
+        .long	0
+        .long	1072693248
+        .long	0
+        .long	0
+        .long	0
+        .long	0
+        .long	4161630806
+        .long	1015796140
+        .long	3799386689
+        .long	1072693245
+        .long	516062805
+        .long	1052830799
+        .long	6188716
+        .long	3200314446
+        .long	79447568
+        .long	1052151909
+        .long	223529141
+        .long	3198586975
+        .long	1557009707
+        .long	1049758991
+        .long	1527834451
+        .long	3195539792
+        .long	3841571054
+        .long	1046184222
+        .long	3228035136
+        .long	3191570603
+        .long	2497745717
+        .long	1041799395
+        .long	3127975351
+        .long	3186863029
+        .long	0
+        .long	3223126016
+        .long	0
+        .long	1072693248
+        .long	0
+        .long	0
+        .long	0
+        .long	0
+        .long	3013228433
+        .long	1015734301
+        .long	952591976
+        .long	1072693247
+        .long	3849195912
+        .long	1051256594
+        .long	1248135057
+        .long	3198740242
+        .long	1658384276
+        .long	1050712587
+        .long	3312197895
+        .long	3197147657
+        .long	2426751598
+        .long	1048219658
+        .long	2075412918
+        .long	3194074453
+        .long	1194511818
+        .long	1044659399
+        .long	2861395540
+        .long	3190045864
+        .long	1105252788
+        .long	1040325059
+        .long	278204179
+        .long	3185374362
+        .long	0
+        .long	3223257088
+        .long	0
+        .long	1072693248
+        .long	0
+        .long	0
+        .long	0
+        .long	0
+        .long	4084683796
+        .long	1014352664
+        .long	3549182448
+        .long	1072693247
+        .long	4170486715
+        .long	1048984034
+        .long	3652359522
+        .long	3196467682
+        .long	1780445294
+        .long	1048420995
+        .long	3329441198
+        .long	3194856066
+        .long	663245309
+        .long	1045935418
+        .long	1918070306
+        .long	3191839818
+        .long	4225866973
+        .long	1042419329
+        .long	1974315224
+        .long	3187805832
+        .long	847480060
+        .long	1038120500
+        .long	2386310431
+        .long	3183105031
+        .long	0
+        .long	3223388160
+        .long	0
+        .long	1072693248
+        .long	0
+        .long	0
+        .long	0
+        .long	0
+        .long	951119343
+        .long	1016641415
+        .long	4194036288
+        .long	1072693247
+        .long	4207053894
+        .long	1045958742
+        .long	4131013457
+        .long	3193442390
+        .long	2503178506
+        .long	1045433060
+        .long	2309798544
+        .long	3191868132
+        .long	1503762043
+        .long	1042918157
+        .long	762244907
+        .long	3188792499
+        .long	3745081608
+        .long	1039371450
+        .long	3106729171
+        .long	3184757959
+        .long	3799011378
+        .long	1035063995
+        .long	693003136
+        .long	3180102041
+        .long	0
+        .long	3223519232
+        .long	0
+        .long	1072693248
+        .long	0
+        .long	0
+        .long	0
+        .long	0
+        .long	1712896388
+        .long	1016000193
+        .long	4281307769
+        .long	1072693247
+        .long	3495080264
+        .long	1042943408
+        .long	3483806577
+        .long	3190427056
+        .long	3577360645
+        .long	1042374261
+        .long	3557467263
+        .long	3188809333
+        .long	3692227868
+        .long	1039911516
+        .long	1459944482
+        .long	3185739496
+        .long	624248087
+        .long	1036331657
+        .long	3930021706
+        .long	3181718167
+        .long	439009527
+        .long	1032014849
+        .long	3184212578
+        .long	3177110789
+        .long	0
+        .long	3223650304
+        .long	0
+        .long	1072693248
+        .long	0
+        .long	0
+        .long	0
+        .long	0
+        .long	1958475666
+        .long	1013700788
+        .long	4293118680
+        .long	1072693247
+        .long	3829159519
+        .long	1039938855
+        .long	3827364885
+        .long	3187422503
+        .long	2374004141
+        .long	1039322650
+        .long	2380228874
+        .long	3185757722
+        .long	853065064
+        .long	1036916376
+        .long	3897809499
+        .long	3182694159
+        .long	2467115425
+        .long	1033300621
+        .long	2966460473
+        .long	3178687133
+        .long	4249027489
+        .long	1028973684
+        .long	3391824522
+        .long	3174085926
+        .long	0
+        .long	3223781376
+        .long	0
+        .long	1072693248
+        .long	0
+        .long	0
+        .long	0
+        .long	0
+        .long	1028808661
+        .long	1012328597
+        .long	4294717113
+        .long	1072693247
+        .long	2759857858
+        .long	1036945975
+        .long	2759440340
+        .long	3184429623
+        .long	217750550
+        .long	1036278821
+        .long	228557927
+        .long	3182713893
+        .long	868996329
+        .long	1033914811
+        .long	130294465
+        .long	3179657124
+        .long	3979034581
+        .long	1030279068
+        .long	1690522291
+        .long	3175665582
+        .long	141102418
+        .long	1025941166
+        .long	3942643114
+        .long	3171030731
+        .long	0
+        .long	3223912448
+        .long	0
+        .long	1072693248
+        .long	0
+        .long	0
+        .long	0
+        .long	0
+        .long	2461075155
+        .long	1015729939
+        .long	4294933437
+        .long	1072693247
+        .long	2559161110
+        .long	1033930834
+        .long	2559046852
+        .long	3181414482
+        .long	3206412049
+        .long	1033243416
+        .long	3218709064
+        .long	3179678488
+        .long	2091270467
+        .long	1030857342
+        .long	245853585
+        .long	3176629075
+        .long	1555900931
+        .long	1027267783
+        .long	1186881303
+        .long	3172654298
+        .long	1695278520
+        .long	1022918007
+        .long	1853146834
+        .long	3167983022
+        .long	0
+        .long	3224043520
+        .long	0
+        .long	1072693248
+        .long	0
+        .long	0
+        .long	0
+        .long	0
+        .long	2502502488
+        .long	1016572066
+        .long	4294962713
+        .long	1072693247
+        .long	3137376149
+        .long	1030874690
+        .long	3137268820
+        .long	3178358338
+        .long	1097103169
+        .long	1030217134
+        .long	1110504267
+        .long	3176652206
+        .long	1068377398
+        .long	1027807171
+        .long	222176953
+        .long	3173610756
+        .long	3440315131
+        .long	1024267613
+        .long	1199778592
+        .long	3169654130
+        .long	257981480
+        .long	1019904983
+        .long	1388437918
+        .long	3164943417
+        .long	0
+        .long	3224174592
+        .long	0
+        .long	1072693248
+        .long	0
+        .long	0
+        .long	0
+        .long	0
+        .long	3418697838
+        .long	1016821878
+        .long	4294966675
+        .long	1072693247
+        .long	3798207862
+        .long	1027825953
+        .long	3798094058
+        .long	3175309601
+        .long	3391459718
+        .long	1027200727
+        .long	3405981646
+        .long	3173635799
+        .long	3694208074
+        .long	1024764900
+        .long	2192272311
+        .long	3170602971
+        .long	1464408928
+        .long	1021279479
+        .long	2201370875
+        .long	3166665997
+        .long	4139632468
+        .long	1016902930
+        .long	2981161402
+        .long	3161912586
+        .long	0
+        .long	3224305664
+        .long	0
+        .long	1072693248
+        .long	0
+        .long	0
+        .long	0
+        .long	0
+        .long	3589768515
+        .long	1013972501
+        .long	4294967265
+        .long	1072693247
+        .long	2293865510
+        .long	1023336450
+        .long	2097549026
+        .long	3170820098
+        .long	2721138850
+        .long	1022661962
+        .long	1571631120
+        .long	3169097035
+        .long	3716649917
+        .long	1020295299
+        .long	3146231247
+        .long	3166041588
+        .long	84506245
+        .long	1016656297
+        .long	2231398946
+        .long	3162043093
+        .long	3305646943
+        .long	1012441980
+        .long	402214167
+        .long	3157503609
+        .long	0
+        .long	3224436736
+        .long	0
+        .long	1072693248
+        .long	0
+        .long	0
+        .long	0
+        .long	0
+        .long	2152156943
+        .long	1016184605
+        .long	4294967294
+        .long	1072693247
+        .long	1074684533
+        .long	1018634353
+        .long	1074437943
+        .long	3166118001
+        .long	967276073
+        .long	1018090988
+        .long	995296768
+        .long	3164526060
+        .long	4275132894
+        .long	1015589675
+        .long	304133116
+        .long	3161485853
+        .long	1232215992
+        .long	1012058464
+        .long	559363548
+        .long	3157444977
+        .long	1487618473
+        .long	1007759094
+        .long	2355811294
+        .long	3152771929
+        .long	3381626085
+        .long	3224537056
+        .long	0
+        .long	1072693248
+        .long	0
+        .long	0
+        .long	0
+        .long	0
+        .long	0
+        .long	0
+        .long	0
+        .long	1072693248
+        .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	0
+        .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	0
+        .long	0
+        .long	0
+        .long	0
+        .long	4294967295
+        .long	0
+        .long	4294967295
+        .long	0
+        .long	4294967295
+        .long	0
+        .long	4294967295
+        .long	0
+        .long	4294967295
+        .long	0
+        .long	4294967295
+        .long	0
+        .long	4294967295
+        .long	0
+        .long	4294967295
+        .long	0
+        .long	2147483648
+        .long	0
+        .long	2147483648
+        .long	0
+        .long	2147483648
+        .long	0
+        .long	2147483648
+        .long	0
+        .long	2147483648
+        .long	0
+        .long	2147483648
+        .long	0
+        .long	2147483648
+        .long	0
+        .long	2147483648
+        .long	4294967295
+        .long	2147483647
+        .long	4294967295
+        .long	2147483647
+        .long	4294967295
+        .long	2147483647
+        .long	4294967295
+        .long	2147483647
+        .long	4294967295
+        .long	2147483647
+        .long	4294967295
+        .long	2147483647
+        .long	4294967295
+        .long	2147483647
+        .long	4294967295
+        .long	2147483647
+        .long	2147352576
+        .long	2147352576
+        .long	2147352576
+        .long	2147352576
+        .long	2147352576
+        .long	2147352576
+        .long	2147352576
+        .long	2147352576
+        .long	2147352576
+        .long	2147352576
+        .long	2147352576
+        .long	2147352576
+        .long	2147352576
+        .long	2147352576
+        .long	2147352576
+        .long	2147352576
+        .long	2145386496
+        .long	2145386496
+        .long	2145386496
+        .long	2145386496
+        .long	2145386496
+        .long	2145386496
+        .long	2145386496
+        .long	2145386496
+        .long	2145386496
+        .long	2145386496
+        .long	2145386496
+        .long	2145386496
+        .long	2145386496
+        .long	2145386496
+        .long	2145386496
+        .long	2145386496
+        .long	1069416448
+        .long	1069416448
+        .long	1069416448
+        .long	1069416448
+        .long	1069416448
+        .long	1069416448
+        .long	1069416448
+        .long	1069416448
+        .long	1069416448
+        .long	1069416448
+        .long	1069416448
+        .long	1069416448
+        .long	1069416448
+        .long	1069416448
+        .long	1069416448
+        .long	1069416448
+        .long	7733248
+        .long	7733248
+        .long	7733248
+        .long	7733248
+        .long	7733248
+        .long	7733248
+        .long	7733248
+        .long	7733248
+        .long	7733248
+        .long	7733248
+        .long	7733248
+        .long	7733248
+        .long	7733248
+        .long	7733248
+        .long	7733248
+        .long	7733248
+        .long	535822336
+        .long	535822336
+        .long	535822336
+        .long	535822336
+        .long	535822336
+        .long	535822336
+        .long	535822336
+        .long	535822336
+        .long	535822336
+        .long	535822336
+        .long	535822336
+        .long	535822336
+        .long	535822336
+        .long	535822336
+        .long	535822336
+        .long	535822336
+        .type	__svml_dtanh_data_internal,@object
+        .size	__svml_dtanh_data_internal,10816
+        .align 8
+
+__dtanh_la__imldTanhTab:
+        .long	0
+        .long	1072693248
+        .long	0
+        .long	3220176896
+        .type	__dtanh_la__imldTanhTab,@object
+        .size	__dtanh_la__imldTanhTab,16
diff --git a/sysdeps/x86_64/fpu/multiarch/svml_s_tanhf16_core-avx2.S b/sysdeps/x86_64/fpu/multiarch/svml_s_tanhf16_core-avx2.S
new file mode 100644
index 0000000000..76bb22229e
--- /dev/null
+++ b/sysdeps/x86_64/fpu/multiarch/svml_s_tanhf16_core-avx2.S
@@ -0,0 +1,20 @@ 
+/* AVX2 version of vectorized tanhf.
+   Copyright (C) 2021 Free Software Foundation, Inc.
+   This file is part of the GNU C Library.
+
+   The GNU C Library is free software; you can redistribute it and/or
+   modify it under the terms of the GNU Lesser General Public
+   License as published by the Free Software Foundation; either
+   version 2.1 of the License, or (at your option) any later version.
+
+   The GNU C Library is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+   Lesser General Public License for more details.
+
+   You should have received a copy of the GNU Lesser General Public
+   License along with the GNU C Library; if not, see
+   <https://www.gnu.org/licenses/>.  */
+
+#define _ZGVeN16v_tanhf _ZGVeN16v_tanhf_avx2_wrapper
+#include "../svml_s_tanhf16_core.S"
diff --git a/sysdeps/x86_64/fpu/multiarch/svml_s_tanhf16_core.c b/sysdeps/x86_64/fpu/multiarch/svml_s_tanhf16_core.c
new file mode 100644
index 0000000000..cec4c7ed74
--- /dev/null
+++ b/sysdeps/x86_64/fpu/multiarch/svml_s_tanhf16_core.c
@@ -0,0 +1,28 @@ 
+/* Multiple versions of vectorized tanhf, vector length is 16.
+   Copyright (C) 2021 Free Software Foundation, Inc.
+   This file is part of the GNU C Library.
+
+   The GNU C Library is free software; you can redistribute it and/or
+   modify it under the terms of the GNU Lesser General Public
+   License as published by the Free Software Foundation; either
+   version 2.1 of the License, or (at your option) any later version.
+
+   The GNU C Library is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+   Lesser General Public License for more details.
+
+   You should have received a copy of the GNU Lesser General Public
+   License along with the GNU C Library; if not, see
+   <https://www.gnu.org/licenses/>.  */
+
+#define SYMBOL_NAME _ZGVeN16v_tanhf
+#include "ifunc-mathvec-avx512-skx.h"
+
+libc_ifunc_redirected (REDIRECT_NAME, SYMBOL_NAME, IFUNC_SELECTOR ());
+
+#ifdef SHARED
+__hidden_ver1 (_ZGVeN16v_tanhf, __GI__ZGVeN16v_tanhf,
+	       __redirect__ZGVeN16v_tanhf)
+  __attribute__ ((visibility ("hidden")));
+#endif
diff --git a/sysdeps/x86_64/fpu/multiarch/svml_s_tanhf16_core_avx512.S b/sysdeps/x86_64/fpu/multiarch/svml_s_tanhf16_core_avx512.S
new file mode 100644
index 0000000000..61cba392e8
--- /dev/null
+++ b/sysdeps/x86_64/fpu/multiarch/svml_s_tanhf16_core_avx512.S
@@ -0,0 +1,1765 @@ 
+/* Function tanhf vectorized with AVX-512.
+   Copyright (C) 2021 Free Software Foundation, Inc.
+   This file is part of the GNU C Library.
+
+   The GNU C Library is free software; you can redistribute it and/or
+   modify it under the terms of the GNU Lesser General Public
+   License as published by the Free Software Foundation; either
+   version 2.1 of the License, or (at your option) any later version.
+
+   The GNU C Library is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+   Lesser General Public License for more details.
+
+   You should have received a copy of the GNU Lesser General Public
+   License along with the GNU C Library; if not, see
+   https://www.gnu.org/licenses/.  */
+
+/*
+ * ALGORITHM DESCRIPTION:
+ *
+ *   NOTE: Since the hyperbolic tangent function is odd
+ *         (tanh(x) = -tanh(-x)), below algorithm deals with the absolute
+ *         value of the argument |x|: tanh(x) = sign(x) * tanh(|x|)
+ *
+ *   We use a table lookup method to compute tanh(|x|).
+ *   The basic idea is to split the input range into a number of subintervals
+ *   and to approximate tanh(.) with a polynomial on each of them.
+ *
+ *   IEEE SPECIAL CONDITIONS:
+ *   x = [+,-]0, r = [+,-]0
+ *   x = +Inf,   r = +1
+ *   x = -Inf,   r = -1
+ *   x = QNaN,   r = QNaN
+ *   x = SNaN,   r = QNaN
+ *
+ *
+ *   ALGORITHM DETAILS
+ *   We handle special values in a callout function, aside from main path
+ *   computations. "Special" for this algorithm are:
+ *   INF, NAN, |x| > HUGE_THRESHOLD
+ *
+ *
+ *   Main path computations are organized as follows:
+ *   Actually we split the interval [0, SATURATION_THRESHOLD)
+ *   into a number of subintervals.  On each subinterval we approximate tanh(.)
+ *   with a minimax polynomial of pre-defined degree. Polynomial coefficients
+ *   are computed beforehand and stored in table. We also use
+ *
+ *       y := |x| + B,
+ *
+ *   here B depends on subinterval and is used to make argument
+ *   closer to zero.
+ *   We also add large fake interval [SATURATION_THRESHOLD, HUGE_THRESHOLD],
+ *   where 1.0 + 0.0*y + 0.0*y^2 ... coefficients are stored - just to
+ *   preserve main path computation logic but return 1.0 for all arguments.
+ *
+ *   Hence reconstruction looks as follows:
+ *   we extract proper polynomial and range reduction coefficients
+ *        (Pj and B), corresponding to subinterval, to which |x| belongs,
+ *        and return
+ *
+ *       r := sign(x) * (P0 + P1 * y + ... + Pn * y^n)
+ *
+ *   NOTE: we use multiprecision technique to multiply and sum the first
+ *         K terms of the polynomial. So Pj, j = 0..K are stored in
+ *         table each as a pair of target precision numbers (Pj and PLj) to
+ *         achieve wider than target precision.
+ *
+ *
+ */
+
+#include <sysdep.h>
+
+        .text
+	.section .text.exex512,"ax",@progbits
+ENTRY(_ZGVeN16v_tanhf_skx)
+        pushq     %rbp
+        cfi_def_cfa_offset(16)
+        movq      %rsp, %rbp
+        cfi_def_cfa(6, 16)
+        cfi_offset(6, -16)
+        andq      $-64, %rsp
+        subq      $192, %rsp
+        vmovaps   %zmm0, %zmm1
+        vmovups   __svml_stanh_data_internal(%rip), %zmm9
+        vmovups   896+__svml_stanh_data_internal(%rip), %zmm11
+        vmovups   768+__svml_stanh_data_internal(%rip), %zmm12
+        vmovups   640+__svml_stanh_data_internal(%rip), %zmm13
+        vmovups   512+__svml_stanh_data_internal(%rip), %zmm14
+        vmovups   384+__svml_stanh_data_internal(%rip), %zmm15
+        vpternlogd $255, %zmm2, %zmm2, %zmm2
+        vandps    5696+__svml_stanh_data_internal(%rip), %zmm1, %zmm8
+        vandps    5632+__svml_stanh_data_internal(%rip), %zmm1, %zmm0
+
+/* Here huge arguments, INF and NaNs are filtered out to callout. */
+        vpandd    1152+__svml_stanh_data_internal(%rip), %zmm1, %zmm3
+        vpsubd    1216+__svml_stanh_data_internal(%rip), %zmm3, %zmm4
+        vpcmpd    $2, 5824+__svml_stanh_data_internal(%rip), %zmm3, %k1
+
+/*
+ *  small table specific variables *
+ *  Constant loading
+ */
+        vpxord    %zmm5, %zmm5, %zmm5
+
+/* if VMIN, VMAX is defined for I type */
+        vpmaxsd   %zmm5, %zmm4, %zmm6
+        vpminsd   1280+__svml_stanh_data_internal(%rip), %zmm6, %zmm7
+        vpsrld    $21, %zmm7, %zmm10
+        vmovups   1024+__svml_stanh_data_internal(%rip), %zmm4
+        vpermt2ps 64+__svml_stanh_data_internal(%rip), %zmm10, %zmm9
+        vpermt2ps 960+__svml_stanh_data_internal(%rip), %zmm10, %zmm11
+        vpermt2ps 1088+__svml_stanh_data_internal(%rip), %zmm10, %zmm4
+        vpermt2ps 832+__svml_stanh_data_internal(%rip), %zmm10, %zmm12
+        vpermt2ps 704+__svml_stanh_data_internal(%rip), %zmm10, %zmm13
+        vpermt2ps 576+__svml_stanh_data_internal(%rip), %zmm10, %zmm14
+        vpermt2ps 448+__svml_stanh_data_internal(%rip), %zmm10, %zmm15
+        vpandnd   %zmm3, %zmm3, %zmm2{%k1}
+        vptestmd  %zmm2, %zmm2, %k0
+        vmovups   128+__svml_stanh_data_internal(%rip), %zmm3
+        vsubps    {rn-sae}, %zmm9, %zmm8, %zmm2
+        kmovw     %k0, %edx
+        vfmadd213ps {rn-sae}, %zmm11, %zmm2, %zmm4
+        vpermt2ps 192+__svml_stanh_data_internal(%rip), %zmm10, %zmm3
+        vfmadd213ps {rn-sae}, %zmm12, %zmm2, %zmm4
+        vfmadd213ps {rn-sae}, %zmm13, %zmm2, %zmm4
+        vfmadd213ps {rn-sae}, %zmm14, %zmm2, %zmm4
+        vfmadd213ps {rn-sae}, %zmm15, %zmm2, %zmm4
+        vfmadd213ps {rn-sae}, %zmm3, %zmm2, %zmm4
+        vorps     %zmm0, %zmm4, %zmm0
+        testl     %edx, %edx
+        jne       L(2)
+
+L(1):
+        movq      %rbp, %rsp
+        popq      %rbp
+        cfi_def_cfa(7, 8)
+        cfi_restore(6)
+        ret
+        cfi_def_cfa(6, 16)
+        cfi_offset(6, -16)
+
+L(2):
+        vmovups   %zmm1, 64(%rsp)
+        vmovups   %zmm0, 128(%rsp)
+        je        L(1)
+        xorl      %eax, %eax
+        vzeroupper
+        kmovw     %k4, 24(%rsp)
+        kmovw     %k5, 16(%rsp)
+        kmovw     %k6, 8(%rsp)
+        kmovw     %k7, (%rsp)
+        movq      %rsi, 40(%rsp)
+        movq      %rdi, 32(%rsp)
+        movq      %r12, 56(%rsp)
+        .cfi_escape 0x10, 0x04, 0x0e, 0x38, 0x1c, 0x0d, 0xc0, 0xff, 0xff, 0xff, 0x1a, 0x0d, 0x68, 0xff, 0xff, 0xff, 0x22
+        .cfi_escape 0x10, 0x05, 0x0e, 0x38, 0x1c, 0x0d, 0xc0, 0xff, 0xff, 0xff, 0x1a, 0x0d, 0x60, 0xff, 0xff, 0xff, 0x22
+        .cfi_escape 0x10, 0x0c, 0x0e, 0x38, 0x1c, 0x0d, 0xc0, 0xff, 0xff, 0xff, 0x1a, 0x0d, 0x78, 0xff, 0xff, 0xff, 0x22
+        movl      %eax, %r12d
+        movq      %r13, 48(%rsp)
+        .cfi_escape 0x10, 0x0d, 0x0e, 0x38, 0x1c, 0x0d, 0xc0, 0xff, 0xff, 0xff, 0x1a, 0x0d, 0x70, 0xff, 0xff, 0xff, 0x22
+        movl      %edx, %r13d
+        .cfi_escape 0x10, 0xfa, 0x00, 0x0e, 0x38, 0x1c, 0x0d, 0xc0, 0xff, 0xff, 0xff, 0x1a, 0x0d, 0x58, 0xff, 0xff, 0xff, 0x22
+        .cfi_escape 0x10, 0xfb, 0x00, 0x0e, 0x38, 0x1c, 0x0d, 0xc0, 0xff, 0xff, 0xff, 0x1a, 0x0d, 0x50, 0xff, 0xff, 0xff, 0x22
+        .cfi_escape 0x10, 0xfc, 0x00, 0x0e, 0x38, 0x1c, 0x0d, 0xc0, 0xff, 0xff, 0xff, 0x1a, 0x0d, 0x48, 0xff, 0xff, 0xff, 0x22
+        .cfi_escape 0x10, 0xfd, 0x00, 0x0e, 0x38, 0x1c, 0x0d, 0xc0, 0xff, 0xff, 0xff, 0x1a, 0x0d, 0x40, 0xff, 0xff, 0xff, 0x22
+
+L(3):
+        btl       %r12d, %r13d
+        jc        L(5)
+
+L(4):
+        incl      %r12d
+        cmpl      $16, %r12d
+        jl        L(3)
+        kmovw     24(%rsp), %k4
+        cfi_restore(122)
+        kmovw     16(%rsp), %k5
+        cfi_restore(123)
+        kmovw     8(%rsp), %k6
+        cfi_restore(124)
+        kmovw     (%rsp), %k7
+        cfi_restore(125)
+        vmovups   128(%rsp), %zmm0
+        movq      40(%rsp), %rsi
+        cfi_restore(4)
+        movq      32(%rsp), %rdi
+        cfi_restore(5)
+        movq      56(%rsp), %r12
+        cfi_restore(12)
+        movq      48(%rsp), %r13
+        cfi_restore(13)
+        jmp       L(1)
+        .cfi_escape 0x10, 0x04, 0x0e, 0x38, 0x1c, 0x0d, 0xc0, 0xff, 0xff, 0xff, 0x1a, 0x0d, 0x68, 0xff, 0xff, 0xff, 0x22
+        .cfi_escape 0x10, 0x05, 0x0e, 0x38, 0x1c, 0x0d, 0xc0, 0xff, 0xff, 0xff, 0x1a, 0x0d, 0x60, 0xff, 0xff, 0xff, 0x22
+        .cfi_escape 0x10, 0x0c, 0x0e, 0x38, 0x1c, 0x0d, 0xc0, 0xff, 0xff, 0xff, 0x1a, 0x0d, 0x78, 0xff, 0xff, 0xff, 0x22
+        .cfi_escape 0x10, 0x0d, 0x0e, 0x38, 0x1c, 0x0d, 0xc0, 0xff, 0xff, 0xff, 0x1a, 0x0d, 0x70, 0xff, 0xff, 0xff, 0x22
+        .cfi_escape 0x10, 0xfa, 0x00, 0x0e, 0x38, 0x1c, 0x0d, 0xc0, 0xff, 0xff, 0xff, 0x1a, 0x0d, 0x58, 0xff, 0xff, 0xff, 0x22
+        .cfi_escape 0x10, 0xfb, 0x00, 0x0e, 0x38, 0x1c, 0x0d, 0xc0, 0xff, 0xff, 0xff, 0x1a, 0x0d, 0x50, 0xff, 0xff, 0xff, 0x22
+        .cfi_escape 0x10, 0xfc, 0x00, 0x0e, 0x38, 0x1c, 0x0d, 0xc0, 0xff, 0xff, 0xff, 0x1a, 0x0d, 0x48, 0xff, 0xff, 0xff, 0x22
+        .cfi_escape 0x10, 0xfd, 0x00, 0x0e, 0x38, 0x1c, 0x0d, 0xc0, 0xff, 0xff, 0xff, 0x1a, 0x0d, 0x40, 0xff, 0xff, 0xff, 0x22
+
+L(5):
+        lea       64(%rsp,%r12,4), %rdi
+        lea       128(%rsp,%r12,4), %rsi
+        call      __svml_stanh_cout_rare_internal
+        jmp       L(4)
+
+END(_ZGVeN16v_tanhf_skx)
+
+        .align    16,0x90
+
+__svml_stanh_cout_rare_internal:
+
+        cfi_startproc
+
+        lea       __stanh_la__imlsTanhTab(%rip), %rdx
+        movb      3(%rdi), %al
+        andb      $-128, %al
+        shrb      $7, %al
+        movzbl    %al, %ecx
+        movzwl    2(%rdi), %r8d
+        andl      $32640, %r8d
+        movl      (%rdx,%rcx,4), %eax
+        cmpl      $32640, %r8d
+        je        L(8)
+
+L(6):
+        movl      %eax, (%rsi)
+
+L(7):
+        xorl      %eax, %eax
+        ret
+
+L(8):
+        testl     $8388607, (%rdi)
+        je        L(6)
+        movss     (%rdi), %xmm0
+        addss     %xmm0, %xmm0
+        movss     %xmm0, (%rsi)
+        jmp       L(7)
+
+        cfi_endproc
+
+        .type	__svml_stanh_cout_rare_internal,@function
+        .size	__svml_stanh_cout_rare_internal,.-__svml_stanh_cout_rare_internal
+
+        .section .rodata, "a"
+        .align 64
+
+__svml_stanh_data_internal:
+        .long	0
+        .long	1030750208
+        .long	1032847360
+        .long	1034944512
+        .long	1037041664
+        .long	1039138816
+        .long	1041235968
+        .long	1043333120
+        .long	1045430272
+        .long	1047527424
+        .long	1049624576
+        .long	1051721728
+        .long	1053818880
+        .long	1055916032
+        .long	1058013184
+        .long	1060110336
+        .long	1062207488
+        .long	1064304640
+        .long	1066401792
+        .long	1068498944
+        .long	1070596096
+        .long	1072693248
+        .long	1074790400
+        .long	1076887552
+        .long	1078984704
+        .long	1081081856
+        .long	1083179008
+        .long	1085276160
+        .long	1087373312
+        .long	1089470464
+        .long	1091567616
+        .long	0
+        .long	0
+        .long	1030732233
+        .long	1032831839
+        .long	1034916201
+        .long	1036994987
+        .long	1039067209
+        .long	1041174248
+        .long	1043220868
+        .long	1045245838
+        .long	1047245614
+        .long	1049383373
+        .long	1051287907
+        .long	1053115377
+        .long	1054857013
+        .long	1057129528
+        .long	1058581488
+        .long	1059832960
+        .long	1060891676
+        .long	1062153819
+        .long	1063337043
+        .long	1064100733
+        .long	1064582223
+        .long	1064984555
+        .long	1065216645
+        .long	1065302845
+        .long	1065334668
+        .long	1065349076
+        .long	1065352656
+        .long	1065353140
+        .long	1065353206
+        .long	1065353215
+        .long	1065353216
+        .long	0
+        .long	2963361822
+        .long	2971470750
+        .long	2945658640
+        .long	821708412
+        .long	824483568
+        .long	824941280
+        .long	2984085072
+        .long	2957298688
+        .long	838449816
+        .long	2966046080
+        .long	2988320324
+        .long	2989804564
+        .long	842626356
+        .long	3000013710
+        .long	2972725824
+        .long	3002017674
+        .long	853753500
+        .long	2987104448
+        .long	3000350914
+        .long	855535800
+        .long	852410906
+        .long	851608946
+        .long	2988641656
+        .long	2997011000
+        .long	2989576736
+        .long	3000884068
+        .long	2999984336
+        .long	840950056
+        .long	2995215280
+        .long	855269702
+        .long	0
+        .long	1065353216
+        .long	1065295748
+        .long	1065270545
+        .long	1065229919
+        .long	1065181343
+        .long	1065124909
+        .long	1065025765
+        .long	1064867200
+        .long	1064679597
+        .long	1064464345
+        .long	1064093083
+        .long	1063517074
+        .long	1062862743
+        .long	1062146519
+        .long	1060992371
+        .long	1059386208
+        .long	1057800167
+        .long	1055660649
+        .long	1051764737
+        .long	1046959010
+        .long	1041444634
+        .long	1035462611
+        .long	1026689093
+        .long	1015337940
+        .long	1002731447
+        .long	990958554
+        .long	973168670
+        .long	948705851
+        .long	924299482
+        .long	899955662
+        .long	864224966
+        .long	0
+        .long	2956213371
+        .long	3178161821
+        .long	3180268967
+        .long	3182315389
+        .long	3184339487
+        .long	3186337805
+        .long	3188474939
+        .long	3190373619
+        .long	3192189570
+        .long	3193910865
+        .long	3196176320
+        .long	3197556682
+        .long	3198679950
+        .long	3199536798
+        .long	3200331518
+        .long	3200564882
+        .long	3200049264
+        .long	3199029518
+        .long	3197040598
+        .long	3192620804
+        .long	3188208183
+        .long	3182392393
+        .long	3173916356
+        .long	3162750726
+        .long	3150176437
+        .long	3138431708
+        .long	3120650203
+        .long	3096189170
+        .long	3071783062
+        .long	3047439278
+        .long	3011707180
+        .long	0
+        .long	3198855845
+        .long	3198879250
+        .long	3198677023
+        .long	3198476576
+        .long	3198388151
+        .long	3198245218
+        .long	3197982711
+        .long	3197594458
+        .long	3197117197
+        .long	3196587519
+        .long	3195304371
+        .long	3192667528
+        .long	3189843074
+        .long	3186330810
+        .long	3177085101
+        .long	1013669486
+        .long	1032032579
+        .long	1036132065
+        .long	1038305199
+        .long	1036774550
+        .long	1033498413
+        .long	1028927137
+        .long	1021175553
+        .long	1009568359
+        .long	998361895
+        .long	985691041
+        .long	967585842
+        .long	943363289
+        .long	919210013
+        .long	895139148
+        .long	858471606
+        .long	0
+        .long	3077428921
+        .long	3189516141
+        .long	1008586543
+        .long	1036101517
+        .long	1033304453
+        .long	1034073627
+        .long	1036071831
+        .long	1037235824
+        .long	1039436298
+        .long	1040631208
+        .long	1041906362
+        .long	1042793477
+        .long	1043232976
+        .long	1043086916
+        .long	1042100375
+        .long	1039444212
+        .long	1034126600
+        .long	1026638186
+        .long	995501655
+        .long	3165579977
+        .long	3167654937
+        .long	3165317828
+        .long	3158960080
+        .long	3148291549
+        .long	3137354510
+        .long	3124730373
+        .long	3106670759
+        .long	3082457650
+        .long	3058305807
+        .long	3034235241
+        .long	2997581996
+        .long	0
+        .long	1040781545
+        .long	1131811139
+        .long	1097198812
+        .long	3247503190
+        .long	3230402941
+        .long	3224086547
+        .long	3212798938
+        .long	1059790272
+        .long	1053691997
+        .long	1061317268
+        .long	3134918084
+        .long	1034173207
+        .long	3176246152
+        .long	3165561405
+        .long	3174788493
+        .long	3178015405
+        .long	3178847213
+        .long	3177176538
+        .long	3171127099
+        .long	3155996003
+        .long	985352038
+        .long	999682315
+        .long	998398067
+        .long	989522534
+        .long	977926264
+        .long	966355955
+        .long	948911724
+        .long	924561635
+        .long	900244966
+        .long	875993879
+        .long	841254832
+        .long	0
+        .long	3155046246
+        .long	1175181842
+        .long	1138112751
+        .long	3286309950
+        .long	3267011817
+        .long	3259619885
+        .long	3246758786
+        .long	1088248663
+        .long	1078543936
+        .long	1086795944
+        .long	3205436942
+        .long	1043392367
+        .long	3198686087
+        .long	3182586396
+        .long	3174374999
+        .long	3142320544
+        .long	1008565243
+        .long	1014115537
+        .long	1016545052
+        .long	1010017051
+        .long	998649588
+        .long	975680464
+        .long	3124451591
+        .long	3121544226
+        .long	3112148751
+        .long	3100159824
+        .long	3082673659
+        .long	3058641232
+        .long	3034613169
+        .long	3010665978
+        .long	2975473412
+        .long	0
+        .long	2145386496
+        .long	2145386496
+        .long	2145386496
+        .long	2145386496
+        .long	2145386496
+        .long	2145386496
+        .long	2145386496
+        .long	2145386496
+        .long	2145386496
+        .long	2145386496
+        .long	2145386496
+        .long	2145386496
+        .long	2145386496
+        .long	2145386496
+        .long	2145386496
+        .long	2145386496
+        .long	1027604480
+        .long	1027604480
+        .long	1027604480
+        .long	1027604480
+        .long	1027604480
+        .long	1027604480
+        .long	1027604480
+        .long	1027604480
+        .long	1027604480
+        .long	1027604480
+        .long	1027604480
+        .long	1027604480
+        .long	1027604480
+        .long	1027604480
+        .long	1027604480
+        .long	1027604480
+        .long	65011712
+        .long	65011712
+        .long	65011712
+        .long	65011712
+        .long	65011712
+        .long	65011712
+        .long	65011712
+        .long	65011712
+        .long	65011712
+        .long	65011712
+        .long	65011712
+        .long	65011712
+        .long	65011712
+        .long	65011712
+        .long	65011712
+        .long	65011712
+        .long	0
+        .long	0
+        .long	36466923
+        .long	1072693248
+        .long	2365563284
+        .long	3201306247
+        .long	1829111721
+        .long	3218428278
+        .long	3823420055
+        .long	3193165324
+        .long	1098370908
+        .long	1072693250
+        .long	2493848101
+        .long	3205978300
+        .long	1742787824
+        .long	3218423470
+        .long	4013086462
+        .long	3193609799
+        .long	3667406935
+        .long	1072693250
+        .long	1352570026
+        .long	3206273363
+        .long	1445916117
+        .long	3218422747
+        .long	3835089556
+        .long	3194065339
+        .long	2420711447
+        .long	1072693251
+        .long	2169133006
+        .long	3206574718
+        .long	101347106
+        .long	3218421982
+        .long	713636389
+        .long	3194411770
+        .long	1709214929
+        .long	1072693252
+        .long	1710199222
+        .long	3206758855
+        .long	2216669086
+        .long	3218421174
+        .long	3814844772
+        .long	3194836884
+        .long	1591910603
+        .long	1072693253
+        .long	2011589771
+        .long	3206962796
+        .long	3721194918
+        .long	3218420324
+        .long	1295469166
+        .long	3195182212
+        .long	2130808979
+        .long	1072693254
+        .long	1222040805
+        .long	3207187539
+        .long	555871541
+        .long	3218419433
+        .long	401254514
+        .long	3195493098
+        .long	3390924472
+        .long	1072693255
+        .long	3112838711
+        .long	3207434078
+        .long	1558155560
+        .long	3218418499
+        .long	683885552
+        .long	3195864282
+        .long	1145294069
+        .long	1072693257
+        .long	1821670117
+        .long	3207648695
+        .long	2692181933
+        .long	3218417523
+        .long	2704036295
+        .long	3196181879
+        .long	4054831834
+        .long	1072693258
+        .long	1649153664
+        .long	3207795248
+        .long	4228604383
+        .long	3218416505
+        .long	4004758581
+        .long	3196440654
+        .long	3603542514
+        .long	1072693260
+        .long	1123737044
+        .long	3207954183
+        .long	2154630785
+        .long	3218415446
+        .long	2606327835
+        .long	3196743208
+        .long	4163276658
+        .long	1072693262
+        .long	2048619642
+        .long	3208125991
+        .long	1058893780
+        .long	3218414345
+        .long	250194901
+        .long	3197094852
+        .long	1518877548
+        .long	1072693265
+        .long	3379868633
+        .long	3208311162
+        .long	1246516380
+        .long	3218413202
+        .long	1621358934
+        .long	3197304764
+        .long	48033162
+        .long	1072693268
+        .long	957106177
+        .long	3208510185
+        .long	3034045498
+        .long	3218412017
+        .long	798414253
+        .long	3197538466
+        .long	4131323741
+        .long	1072693270
+        .long	2207647163
+        .long	3208683052
+        .long	2454449664
+        .long	3218410791
+        .long	1709648499
+        .long	3197805932
+        .long	972334142
+        .long	1072693274
+        .long	1279092327
+        .long	3208797143
+        .long	4141984674
+        .long	3218409523
+        .long	4279927728
+        .long	3198110676
+        .long	3547307714
+        .long	1072693277
+        .long	873763845
+        .long	3208918886
+        .long	4152286949
+        .long	3218408214
+        .long	947630201
+        .long	3198400037
+        .long	3779918761
+        .long	1072693283
+        .long	2452756690
+        .long	3209115951
+        .long	2900277560
+        .long	3218406175
+        .long	4114829322
+        .long	3198840356
+        .long	1550746642
+        .long	1072693293
+        .long	3179273584
+        .long	3209408258
+        .long	1697097694
+        .long	3218403310
+        .long	3189856208
+        .long	3199299134
+        .long	2567958063
+        .long	1072693304
+        .long	2177201355
+        .long	3209713300
+        .long	663593652
+        .long	3218400281
+        .long	1915839956
+        .long	3199641526
+        .long	3400799630
+        .long	1072693317
+        .long	2625933576
+        .long	3209895292
+        .long	3140727122
+        .long	3218397088
+        .long	2825210621
+        .long	3200061154
+        .long	661592278
+        .long	1072693333
+        .long	2751163500
+        .long	3210096603
+        .long	4055449010
+        .long	3218393733
+        .long	57286782
+        .long	3200412116
+        .long	3889851982
+        .long	1072693350
+        .long	2680384314
+        .long	3210318153
+        .long	2804057046
+        .long	3218390217
+        .long	1812582369
+        .long	3200718155
+        .long	1191734144
+        .long	1072693371
+        .long	867498228
+        .long	3210560852
+        .long	3250577733
+        .long	3218386540
+        .long	3326742410
+        .long	3201083020
+        .long	2188854007
+        .long	1072693394
+        .long	363145135
+        .long	3210782655
+        .long	840173644
+        .long	3218382704
+        .long	1735074843
+        .long	3201408616
+        .long	3657661222
+        .long	1072693420
+        .long	2204762872
+        .long	3210926495
+        .long	4072217384
+        .long	3218378708
+        .long	2965875284
+        .long	3201662196
+        .long	2413420961
+        .long	1072693450
+        .long	1162405510
+        .long	3211082241
+        .long	138720143
+        .long	3218374556
+        .long	454705634
+        .long	3201958187
+        .long	3899194868
+        .long	1072693483
+        .long	669033796
+        .long	3211250324
+        .long	2167069495
+        .long	3218370246
+        .long	1542529428
+        .long	3202301612
+        .long	710018948
+        .long	1072693521
+        .long	2883210692
+        .long	3211431169
+        .long	1973418570
+        .long	3218365781
+        .long	3156689511
+        .long	3202524481
+        .long	2656657906
+        .long	1072693562
+        .long	3498100032
+        .long	3211625196
+        .long	125419693
+        .long	3218361162
+        .long	1620715508
+        .long	3202751895
+        .long	2404819887
+        .long	1072693608
+        .long	4021715948
+        .long	3211810552
+        .long	1645154164
+        .long	3218356389
+        .long	703452016
+        .long	3203011668
+        .long	1243884135
+        .long	1072693659
+        .long	480742811
+        .long	3211921363
+        .long	3122063309
+        .long	3218351464
+        .long	223504399
+        .long	3203307063
+        .long	495862037
+        .long	1072693715
+        .long	300794004
+        .long	3212039372
+        .long	1300653287
+        .long	3218346389
+        .long	1176592120
+        .long	3203610816
+        .long	3274452673
+        .long	1072693808
+        .long	2613861807
+        .long	3212229889
+        .long	359514654
+        .long	3218338503
+        .long	2923503278
+        .long	3204034910
+        .long	3741678157
+        .long	1072693954
+        .long	3651935792
+        .long	3212511436
+        .long	2702507736
+        .long	3218327463
+        .long	2210624435
+        .long	3204506468
+        .long	1100251351
+        .long	1072694127
+        .long	3514265607
+        .long	3212825173
+        .long	957470414
+        .long	3218315845
+        .long	1305550937
+        .long	3204833184
+        .long	2996845965
+        .long	1072694328
+        .long	3142229264
+        .long	3213004685
+        .long	1883674585
+        .long	3218303659
+        .long	3326598907
+        .long	3205231584
+        .long	274977645
+        .long	1072694562
+        .long	3016319234
+        .long	3213195820
+        .long	1539002348
+        .long	3218290918
+        .long	3984366897
+        .long	3205604614
+        .long	1292806442
+        .long	1072694830
+        .long	3262520051
+        .long	3213405058
+        .long	2372653574
+        .long	3218277634
+        .long	2452462577
+        .long	3205892032
+        .long	1815353697
+        .long	1072695136
+        .long	3662183375
+        .long	3213632998
+        .long	250148789
+        .long	3218263821
+        .long	2158010733
+        .long	3206232708
+        .long	2150433494
+        .long	1072695483
+        .long	3919565056
+        .long	3213880202
+        .long	1540395291
+        .long	3218249491
+        .long	3182910565
+        .long	3206589369
+        .long	2808974545
+        .long	1072695874
+        .long	1965799910
+        .long	3214016317
+        .long	1545570484
+        .long	3218234659
+        .long	1413633121
+        .long	3206823218
+        .long	164723038
+        .long	1072696313
+        .long	81021250
+        .long	3214159950
+        .long	1583468454
+        .long	3218219339
+        .long	18571726
+        .long	3207094384
+        .long	3588317822
+        .long	1072696801
+        .long	4095098713
+        .long	3214313941
+        .long	298038316
+        .long	3218203546
+        .long	912947688
+        .long	3207406859
+        .long	1041448961
+        .long	1072697344
+        .long	4179586945
+        .long	3214478495
+        .long	2148027612
+        .long	3218187294
+        .long	3720520462
+        .long	3207679413
+        .long	1980273179
+        .long	1072697943
+        .long	1752543433
+        .long	3214653794
+        .long	124299728
+        .long	3218170600
+        .long	864061540
+        .long	3207883361
+        .long	2949417123
+        .long	1072698602
+        .long	4190073881
+        .long	3214839998
+        .long	1415544749
+        .long	3218153478
+        .long	3694676202
+        .long	3208114560
+        .long	420771937
+        .long	1072699325
+        .long	1282420231
+        .long	3214985633
+        .long	1533345938
+        .long	3218135945
+        .long	2892854837
+        .long	3208375402
+        .long	3632588569
+        .long	1072700113
+        .long	2712748874
+        .long	3215089842
+        .long	1386124246
+        .long	3218118017
+        .long	1634175019
+        .long	3208733922
+        .long	347483009
+        .long	1072701423
+        .long	1161341506
+        .long	3215256321
+        .long	1877668895
+        .long	3218090451
+        .long	4108664264
+        .long	3209099007
+        .long	3038559136
+        .long	1072703435
+        .long	2683048238
+        .long	3215498732
+        .long	1179454900
+        .long	3218025113
+        .long	1332126937
+        .long	3209546908
+        .long	3486307715
+        .long	1072705767
+        .long	2508275841
+        .long	3215764027
+        .long	359393231
+        .long	3217946511
+        .long	1961215910
+        .long	3209890029
+        .long	2252418763
+        .long	1072708441
+        .long	2827865151
+        .long	3216017387
+        .long	3509880367
+        .long	3217865627
+        .long	3222140085
+        .long	3210213923
+        .long	1486994624
+        .long	1072711477
+        .long	3160629487
+        .long	3216172802
+        .long	1178047112
+        .long	3217782741
+        .long	1901428593
+        .long	3210596649
+        .long	3746562216
+        .long	1072714893
+        .long	1033996001
+        .long	3216339382
+        .long	39866696
+        .long	3217698130
+        .long	2908573463
+        .long	3210891953
+        .long	2324761591
+        .long	1072718707
+        .long	2389401627
+        .long	3216516876
+        .long	3645939838
+        .long	3217612071
+        .long	2440236284
+        .long	3211151116
+        .long	1761407793
+        .long	1072722932
+        .long	2502005220
+        .long	3216704962
+        .long	1997398717
+        .long	3217524842
+        .long	2895026412
+        .long	3211448596
+        .long	4114502182
+        .long	1072727579
+        .long	2605061383
+        .long	3216903247
+        .long	58515002
+        .long	3217436714
+        .long	711731960
+        .long	3211787230
+        .long	3951984035
+        .long	1072732658
+        .long	3516063216
+        .long	3217071220
+        .long	3638757279
+        .long	3217347953
+        .long	3233370794
+        .long	3211979005
+        .long	658281779
+        .long	1072738175
+        .long	309554960
+        .long	3217179845
+        .long	1331214594
+        .long	3217258823
+        .long	2937534811
+        .long	3212193451
+        .long	2289001467
+        .long	1072744131
+        .long	2442043690
+        .long	3217292793
+        .long	2664085653
+        .long	3217169576
+        .long	3462081454
+        .long	3212432263
+        .long	3795084150
+        .long	1072750527
+        .long	1130374688
+        .long	3217409754
+        .long	3638257201
+        .long	3217080459
+        .long	3906637920
+        .long	3212696488
+        .long	4040275044
+        .long	1072757360
+        .long	3643517564
+        .long	3217530392
+        .long	4148962921
+        .long	3216952251
+        .long	1995056602
+        .long	3212911950
+        .long	1479928784
+        .long	1072764624
+        .long	2653868580
+        .long	3217654355
+        .long	1010106713
+        .long	3216775940
+        .long	3129357315
+        .long	3213070764
+        .long	2856812514
+        .long	1072772308
+        .long	1621093115
+        .long	3217781272
+        .long	1824031529
+        .long	3216601249
+        .long	2296680075
+        .long	3213333328
+        .long	2460843475
+        .long	1072784536
+        .long	3722925065
+        .long	3217975665
+        .long	3901534801
+        .long	3216343697
+        .long	741495589
+        .long	3213734822
+        .long	13033194
+        .long	1072802249
+        .long	1706090638
+        .long	3218161084
+        .long	4129724113
+        .long	3216008854
+        .long	2582831738
+        .long	3214039094
+        .long	3092949488
+        .long	1072821329
+        .long	4163404160
+        .long	3218296789
+        .long	673560195
+        .long	3215391593
+        .long	1852259695
+        .long	3214295490
+        .long	3663604487
+        .long	1072841572
+        .long	2783926416
+        .long	3218433189
+        .long	538028418
+        .long	3214623601
+        .long	955002681
+        .long	3214577680
+        .long	1457520314
+        .long	1072862739
+        .long	2977011911
+        .long	3218568683
+        .long	2456605794
+        .long	3213048602
+        .long	1782979473
+        .long	3214883178
+        .long	3136246603
+        .long	1072884563
+        .long	4172123069
+        .long	3218701739
+        .long	1041205303
+        .long	1065062250
+        .long	1494191018
+        .long	3215071352
+        .long	2030188257
+        .long	1072906761
+        .long	242335435
+        .long	3218830924
+        .long	3225388224
+        .long	1066807264
+        .long	2597486284
+        .long	3215242091
+        .long	1527970838
+        .long	1072929036
+        .long	2966426512
+        .long	3218954923
+        .long	1554080475
+        .long	1067589039
+        .long	1299968651
+        .long	3215418462
+        .long	3575385503
+        .long	1072951087
+        .long	2115725422
+        .long	3219072567
+        .long	1970202642
+        .long	1068007486
+        .long	633750547
+        .long	3215597833
+        .long	4170701031
+        .long	1072972617
+        .long	46586082
+        .long	3219155579
+        .long	1194653136
+        .long	1068384025
+        .long	4171340731
+        .long	3215777352
+        .long	3578160514
+        .long	1072993337
+        .long	3238411740
+        .long	3219206599
+        .long	3278559237
+        .long	1068609006
+        .long	2404931200
+        .long	3215954013
+        .long	533888921
+        .long	1073012973
+        .long	1507597629
+        .long	3219253160
+        .long	2386969249
+        .long	1068756225
+        .long	272720058
+        .long	3216053653
+        .long	54544651
+        .long	1073031269
+        .long	3020671348
+        .long	3219294996
+        .long	4122670807
+        .long	1068883785
+        .long	2536786852
+        .long	3216134458
+        .long	230026772
+        .long	1073047994
+        .long	2830531360
+        .long	3219331923
+        .long	2545616196
+        .long	1068992498
+        .long	3897096954
+        .long	3216209170
+        .long	867435464
+        .long	1073062943
+        .long	3935983781
+        .long	3219363830
+        .long	4280666630
+        .long	1069083305
+        .long	1614478429
+        .long	3216276286
+        .long	3991143559
+        .long	1073075939
+        .long	3165050417
+        .long	3219390677
+        .long	248866814
+        .long	1069157251
+        .long	2328429718
+        .long	3216358398
+        .long	1880129173
+        .long	1073091258
+        .long	4059723411
+        .long	3219421162
+        .long	3082848917
+        .long	1069238148
+        .long	1081358649
+        .long	3216430553
+        .long	1955557582
+        .long	1073104040
+        .long	2869422647
+        .long	3219445318
+        .long	1310544530
+        .long	1069299023
+        .long	434435025
+        .long	3216450109
+        .long	3947018234
+        .long	1073107343
+        .long	3414641036
+        .long	3219451270
+        .long	4069313179
+        .long	1069313321
+        .long	1392468754
+        .long	3216410502
+        .long	3271741504
+        .long	1073101128
+        .long	3884994071
+        .long	3219440866
+        .long	1456085694
+        .long	1069290099
+        .long	2332856790
+        .long	3216307665
+        .long	3950891192
+        .long	1073085735
+        .long	439037894
+        .long	3219416288
+        .long	1197951536
+        .long	1069237765
+        .long	4195788421
+        .long	3216139842
+        .long	3990997338
+        .long	1073061787
+        .long	550042602
+        .long	3219379833
+        .long	2832452545
+        .long	1069163766
+        .long	1200943255
+        .long	3215832361
+        .long	2073883731
+        .long	1073030122
+        .long	3042850267
+        .long	3219333800
+        .long	991641143
+        .long	1069074535
+        .long	1637244010
+        .long	3215243222
+        .long	3805163810
+        .long	1072991715
+        .long	3517445189
+        .long	3219280382
+        .long	2680864185
+        .long	1068975465
+        .long	1457843741
+        .long	3214140932
+        .long	1315080793
+        .long	1072947617
+        .long	3059804278
+        .long	3219221594
+        .long	2861308047
+        .long	1068870963
+        .long	3296491873
+        .long	1064537111
+        .long	3728462150
+        .long	1072898893
+        .long	3615137083
+        .long	3219159232
+        .long	3017963192
+        .long	1068764532
+        .long	3972434375
+        .long	1067468619
+        .long	1336398218
+        .long	1072846587
+        .long	1068664290
+        .long	3219061390
+        .long	122240345
+        .long	1068658880
+        .long	508009436
+        .long	1068456917
+        .long	3501538245
+        .long	1072791681
+        .long	968690691
+        .long	3218931236
+        .long	1514516445
+        .long	1068556030
+        .long	671541798
+        .long	1069006173
+        .long	3814409280
+        .long	1072735081
+        .long	1553551847
+        .long	3218801852
+        .long	2849431279
+        .long	1068415930
+        .long	285838780
+        .long	1069554660
+        .long	2881499585
+        .long	1072661949
+        .long	928028610
+        .long	3218674977
+        .long	8837506
+        .long	1068229231
+        .long	4283922105
+        .long	1069842903
+        .long	1813934616
+        .long	1072546640
+        .long	2296020303
+        .long	3218551962
+        .long	3757630126
+        .long	1068054242
+        .long	4184842874
+        .long	1070138481
+        .long	1612285858
+        .long	1072432209
+        .long	3568867548
+        .long	3218433820
+        .long	2489334631
+        .long	1067891605
+        .long	3119354956
+        .long	1070586029
+        .long	1945534618
+        .long	1072265408
+        .long	12375465
+        .long	3218268030
+        .long	869568690
+        .long	1067671872
+        .long	313517472
+        .long	1070892138
+        .long	1205077106
+        .long	1072052753
+        .long	2329101392
+        .long	3218055718
+        .long	31064032
+        .long	1067390210
+        .long	1106783211
+        .long	1071186310
+        .long	571472860
+        .long	1071856508
+        .long	2279775366
+        .long	3217706561
+        .long	3977902324
+        .long	1066976012
+        .long	1438560376
+        .long	1071467394
+        .long	433300635
+        .long	1071678859
+        .long	2662131044
+        .long	3217407122
+        .long	3461865003
+        .long	1066639491
+        .long	3761842524
+        .long	1071687909
+        .long	591758334
+        .long	1071396321
+        .long	1311878841
+        .long	3217153539
+        .long	3007781852
+        .long	1066335723
+        .long	1614590629
+        .long	1071809819
+        .long	1253814918
+        .long	1071117476
+        .long	1728609767
+        .long	3216850667
+        .long	2200561853
+        .long	1065903347
+        .long	3821226689
+        .long	1071921115
+        .long	2022982069
+        .long	1070874479
+        .long	2030156196
+        .long	3216496942
+        .long	874711265
+        .long	1065560045
+        .long	2003227996
+        .long	1072021655
+        .long	2808404217
+        .long	1070664514
+        .long	1372837647
+        .long	3216204595
+        .long	822053276
+        .long	1065224094
+        .long	3767175364
+        .long	1072111660
+        .long	3043371777
+        .long	1070372670
+        .long	1442419211
+        .long	3215945892
+        .long	298752438
+        .long	1064796452
+        .long	1111528881
+        .long	1072191609
+        .long	3513208196
+        .long	1070065467
+        .long	3837735739
+        .long	3215552388
+        .long	3701924119
+        .long	1064460397
+        .long	1230501085
+        .long	1072262142
+        .long	2161267832
+        .long	1069804871
+        .long	4188367704
+        .long	3215231429
+        .long	401190186
+        .long	1064089052
+        .long	3002339892
+        .long	1072323996
+        .long	1480019407
+        .long	1069584807
+        .long	1833655520
+        .long	3214970435
+        .long	2907956919
+        .long	1063676311
+        .long	875346000
+        .long	1072377952
+        .long	3150437403
+        .long	1069251888
+        .long	876861923
+        .long	3214583482
+        .long	1689748747
+        .long	1063353511
+        .long	2795554744
+        .long	1072424793
+        .long	3869705215
+        .long	1068941581
+        .long	1837883894
+        .long	3214240854
+        .long	2762317048
+        .long	1062946513
+        .long	2491972100
+        .long	1072465284
+        .long	4114823501
+        .long	1068682289
+        .long	2146865463
+        .long	3213964103
+        .long	800804261
+        .long	1062552648
+        .long	2634953449
+        .long	1072500149
+        .long	2952556276
+        .long	1068433515
+        .long	1872935290
+        .long	3213596436
+        .long	525130857
+        .long	1062245296
+        .long	3287041404
+        .long	1072542855
+        .long	164674845
+        .long	1067923724
+        .long	3273134342
+        .long	3213089271
+        .long	171708004
+        .long	1061610314
+        .long	3035032320
+        .long	1072586748
+        .long	3976243935
+        .long	1067403539
+        .long	3504708444
+        .long	3212404491
+        .long	3955947885
+        .long	1060882840
+        .long	513098494
+        .long	1072618404
+        .long	416924237
+        .long	1066726877
+        .long	1788945081
+        .long	3211801737
+        .long	1199639353
+        .long	1060166859
+        .long	2284134637
+        .long	1072641010
+        .long	754275327
+        .long	1066136447
+        .long	94803481
+        .long	3211042671
+        .long	3377507017
+        .long	1059354147
+        .long	1467291457
+        .long	1072657015
+        .long	2435597312
+        .long	1065520743
+        .long	2819017772
+        .long	3210358609
+        .long	1988617747
+        .long	1058591581
+        .long	633705514
+        .long	1072668259
+        .long	392269686
+        .long	1064864433
+        .long	2964449929
+        .long	3209729770
+        .long	3963893163
+        .long	1057889872
+        .long	2214892393
+        .long	1072676103
+        .long	2190738271
+        .long	1064315837
+        .long	3773826451
+        .long	3208969045
+        .long	3609404170
+        .long	1057113308
+        .long	3795216963
+        .long	1072681541
+        .long	3959981107
+        .long	1063599490
+        .long	1577139384
+        .long	3208281591
+        .long	1777963469
+        .long	1056319886
+        .long	2768813161
+        .long	1072685290
+        .long	452197850
+        .long	1062981751
+        .long	625862001
+        .long	3207639777
+        .long	1894515286
+        .long	1055580811
+        .long	809336726
+        .long	1072687861
+        .long	325412222
+        .long	1062349073
+        .long	3494772326
+        .long	3206874482
+        .long	3143092609
+        .long	1054887561
+        .long	1391578948
+        .long	1072689615
+        .long	370441451
+        .long	1061660435
+        .long	67458841
+        .long	3206180214
+        .long	1971759196
+        .long	1054066692
+        .long	57274217
+        .long	1072690807
+        .long	293665776
+        .long	1061075750
+        .long	1340185983
+        .long	3205535605
+        .long	2210177191
+        .long	1053294335
+        .long	1110907588
+        .long	1072691613
+        .long	3961986905
+        .long	1060367146
+        .long	3774614905
+        .long	3204763416
+        .long	3590429673
+        .long	1052580827
+        .long	2737507729
+        .long	1072692156
+        .long	370479370
+        .long	1059701790
+        .long	1033751386
+        .long	3204059641
+        .long	1162278823
+        .long	1051830218
+        .long	2341375458
+        .long	1072692521
+        .long	760364123
+        .long	1059103172
+        .long	910883556
+        .long	3203420282
+        .long	401067508
+        .long	1051028170
+        .long	3358303651
+        .long	1072692765
+        .long	3104773993
+        .long	1058369139
+        .long	2043715743
+        .long	3202639413
+        .long	4274377921
+        .long	1050278646
+        .long	3501940353
+        .long	1072692984
+        .long	2710387139
+        .long	1057384557
+        .long	2550611600
+        .long	3201592258
+        .long	2260324605
+        .long	1049158690
+        .long	3160989127
+        .long	1072693133
+        .long	1403521776
+        .long	1056074537
+        .long	760745859
+        .long	3200238663
+        .long	1163121055
+        .long	1047679067
+        .long	3509020169
+        .long	1072693198
+        .long	3352058101
+        .long	1054743188
+        .long	2289323607
+        .long	3198722761
+        .long	918272756
+        .long	1046147840
+        .long	4268817660
+        .long	1072693226
+        .long	1580550645
+        .long	1053325591
+        .long	1736251411
+        .long	3197308470
+        .long	1531106447
+        .long	1044632576
+        .long	0
+        .long	1072693248
+        .long	0
+        .long	0
+        .long	0
+        .long	0
+        .long	0
+        .long	0
+        .long	2147483648
+        .long	2147483648
+        .long	2147483648
+        .long	2147483648
+        .long	2147483648
+        .long	2147483648
+        .long	2147483648
+        .long	2147483648
+        .long	2147483648
+        .long	2147483648
+        .long	2147483648
+        .long	2147483648
+        .long	2147483648
+        .long	2147483648
+        .long	2147483648
+        .long	2147483648
+        .long	2147483647
+        .long	2147483647
+        .long	2147483647
+        .long	2147483647
+        .long	2147483647
+        .long	2147483647
+        .long	2147483647
+        .long	2147483647
+        .long	2147483647
+        .long	2147483647
+        .long	2147483647
+        .long	2147483647
+        .long	2147483647
+        .long	2147483647
+        .long	2147483647
+        .long	2147483647
+        .long	2146959360
+        .long	2146959360
+        .long	2146959360
+        .long	2146959360
+        .long	2146959360
+        .long	2146959360
+        .long	2146959360
+        .long	2146959360
+        .long	2146959360
+        .long	2146959360
+        .long	2146959360
+        .long	2146959360
+        .long	2146959360
+        .long	2146959360
+        .long	2146959360
+        .long	2146959360
+        .long	2130706432
+        .long	2130706432
+        .long	2130706432
+        .long	2130706432
+        .long	2130706432
+        .long	2130706432
+        .long	2130706432
+        .long	2130706432
+        .long	2130706432
+        .long	2130706432
+        .long	2130706432
+        .long	2130706432
+        .long	2130706432
+        .long	2130706432
+        .long	2130706432
+        .long	2130706432
+        .long	1022885888
+        .long	1022885888
+        .long	1022885888
+        .long	1022885888
+        .long	1022885888
+        .long	1022885888
+        .long	1022885888
+        .long	1022885888
+        .long	1022885888
+        .long	1022885888
+        .long	1022885888
+        .long	1022885888
+        .long	1022885888
+        .long	1022885888
+        .long	1022885888
+        .long	1022885888
+        .long	69730304
+        .long	69730304
+        .long	69730304
+        .long	69730304
+        .long	69730304
+        .long	69730304
+        .long	69730304
+        .long	69730304
+        .long	69730304
+        .long	69730304
+        .long	69730304
+        .long	69730304
+        .long	69730304
+        .long	69730304
+        .long	69730304
+        .long	69730304
+        .type	__svml_stanh_data_internal,@object
+        .size	__svml_stanh_data_internal,6016
+        .align 4
+
+__stanh_la__imlsTanhTab:
+        .long	1065353216
+        .long	3212836864
+        .type	__stanh_la__imlsTanhTab,@object
+        .size	__stanh_la__imlsTanhTab,8
diff --git a/sysdeps/x86_64/fpu/multiarch/svml_s_tanhf4_core-sse2.S b/sysdeps/x86_64/fpu/multiarch/svml_s_tanhf4_core-sse2.S
new file mode 100644
index 0000000000..cd290db337
--- /dev/null
+++ b/sysdeps/x86_64/fpu/multiarch/svml_s_tanhf4_core-sse2.S
@@ -0,0 +1,20 @@ 
+/* SSE2 version of vectorized tanhf, vector length is 4.
+   Copyright (C) 2021 Free Software Foundation, Inc.
+   This file is part of the GNU C Library.
+
+   The GNU C Library is free software; you can redistribute it and/or
+   modify it under the terms of the GNU Lesser General Public
+   License as published by the Free Software Foundation; either
+   version 2.1 of the License, or (at your option) any later version.
+
+   The GNU C Library is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+   Lesser General Public License for more details.
+
+   You should have received a copy of the GNU Lesser General Public
+   License along with the GNU C Library; if not, see
+   <https://www.gnu.org/licenses/>.  */
+
+#define _ZGVbN4v_tanhf _ZGVbN4v_tanhf_sse2
+#include "../svml_s_tanhf4_core.S"
diff --git a/sysdeps/x86_64/fpu/multiarch/svml_s_tanhf4_core.c b/sysdeps/x86_64/fpu/multiarch/svml_s_tanhf4_core.c
new file mode 100644
index 0000000000..2dcb1f3676
--- /dev/null
+++ b/sysdeps/x86_64/fpu/multiarch/svml_s_tanhf4_core.c
@@ -0,0 +1,28 @@ 
+/* Multiple versions of vectorized tanhf, vector length is 4.
+   Copyright (C) 2021 Free Software Foundation, Inc.
+   This file is part of the GNU C Library.
+
+   The GNU C Library is free software; you can redistribute it and/or
+   modify it under the terms of the GNU Lesser General Public
+   License as published by the Free Software Foundation; either
+   version 2.1 of the License, or (at your option) any later version.
+
+   The GNU C Library is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+   Lesser General Public License for more details.
+
+   You should have received a copy of the GNU Lesser General Public
+   License along with the GNU C Library; if not, see
+   <https://www.gnu.org/licenses/>.  */
+
+#define SYMBOL_NAME _ZGVbN4v_tanhf
+#include "ifunc-mathvec-sse4_1.h"
+
+libc_ifunc_redirected (REDIRECT_NAME, SYMBOL_NAME, IFUNC_SELECTOR ());
+
+#ifdef SHARED
+__hidden_ver1 (_ZGVbN4v_tanhf, __GI__ZGVbN4v_tanhf,
+	       __redirect__ZGVbN4v_tanhf)
+  __attribute__ ((visibility ("hidden")));
+#endif
diff --git a/sysdeps/x86_64/fpu/multiarch/svml_s_tanhf4_core_sse4.S b/sysdeps/x86_64/fpu/multiarch/svml_s_tanhf4_core_sse4.S
new file mode 100644
index 0000000000..93be4cad75
--- /dev/null
+++ b/sysdeps/x86_64/fpu/multiarch/svml_s_tanhf4_core_sse4.S
@@ -0,0 +1,2144 @@ 
+/* Function tanhf vectorized with SSE4.
+   Copyright (C) 2021 Free Software Foundation, Inc.
+   This file is part of the GNU C Library.
+
+   The GNU C Library is free software; you can redistribute it and/or
+   modify it under the terms of the GNU Lesser General Public
+   License as published by the Free Software Foundation; either
+   version 2.1 of the License, or (at your option) any later version.
+
+   The GNU C Library is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+   Lesser General Public License for more details.
+
+   You should have received a copy of the GNU Lesser General Public
+   License along with the GNU C Library; if not, see
+   https://www.gnu.org/licenses/.  */
+
+/*
+ * ALGORITHM DESCRIPTION:
+ *
+ *   NOTE: Since the hyperbolic tangent function is odd
+ *         (tanh(x) = -tanh(-x)), below algorithm deals with the absolute
+ *         value of the argument |x|: tanh(x) = sign(x) * tanh(|x|)
+ *
+ *   We use a table lookup method to compute tanh(|x|).
+ *   The basic idea is to split the input range into a number of subintervals
+ *   and to approximate tanh(.) with a polynomial on each of them.
+ *
+ *   IEEE SPECIAL CONDITIONS:
+ *   x = [+,-]0, r = [+,-]0
+ *   x = +Inf,   r = +1
+ *   x = -Inf,   r = -1
+ *   x = QNaN,   r = QNaN
+ *   x = SNaN,   r = QNaN
+ *
+ *
+ *   ALGORITHM DETAILS
+ *   We handle special values in a callout function, aside from main path
+ *   computations. "Special" for this algorithm are:
+ *   INF, NAN, |x| > HUGE_THRESHOLD
+ *
+ *
+ *   Main path computations are organized as follows:
+ *   Actually we split the interval [0, SATURATION_THRESHOLD)
+ *   into a number of subintervals.  On each subinterval we approximate tanh(.)
+ *   with a minimax polynomial of pre-defined degree. Polynomial coefficients
+ *   are computed beforehand and stored in table. We also use
+ *
+ *       y := |x| + B,
+ *
+ *   here B depends on subinterval and is used to make argument
+ *   closer to zero.
+ *   We also add large fake interval [SATURATION_THRESHOLD, HUGE_THRESHOLD],
+ *   where 1.0 + 0.0*y + 0.0*y^2 ... coefficients are stored - just to
+ *   preserve main path computation logic but return 1.0 for all arguments.
+ *
+ *   Hence reconstruction looks as follows:
+ *   we extract proper polynomial and range reduction coefficients
+ *        (Pj and B), corresponding to subinterval, to which |x| belongs,
+ *        and return
+ *
+ *       r := sign(x) * (P0 + P1 * y + ... + Pn * y^n)
+ *
+ *   NOTE: we use multiprecision technique to multiply and sum the first
+ *         K terms of the polynomial. So Pj, j = 0..K are stored in
+ *         table each as a pair of target precision numbers (Pj and PLj) to
+ *         achieve wider than target precision.
+ *
+ *
+ */
+
+#include <sysdep.h>
+
+        .text
+	.section .text.sse4,"ax",@progbits
+ENTRY(_ZGVbN4v_tanhf_sse4)
+        pushq     %rbp
+        cfi_def_cfa_offset(16)
+        movq      %rsp, %rbp
+        cfi_def_cfa(6, 16)
+        cfi_offset(6, -16)
+        andq      $-64, %rsp
+        subq      $256, %rsp
+        lea       1360+__svml_stanh_data_internal(%rip), %rcx
+        movups    %xmm15, 96(%rsp)
+        .cfi_escape 0x10, 0x20, 0x0e, 0x38, 0x1c, 0x0d, 0xc0, 0xff, 0xff, 0xff, 0x1a, 0x0d, 0x60, 0xff, 0xff, 0xff, 0x22
+        movaps    %xmm0, %xmm15
+
+/* Here huge arguments, INF and NaNs are filtered out to callout. */
+        movdqu    5760+__svml_stanh_data_internal(%rip), %xmm6
+
+/* if VMIN, VMAX is defined for I type */
+        pxor      %xmm4, %xmm4
+        pand      %xmm15, %xmm6
+        movdqa    %xmm6, %xmm3
+        psubd     5888+__svml_stanh_data_internal(%rip), %xmm6
+
+/*
+ *  small table specific variables *
+ *  Constant loading
+ */
+        movdqu    5952+__svml_stanh_data_internal(%rip), %xmm7
+        movdqa    %xmm6, %xmm2
+        movdqa    %xmm6, %xmm1
+        pcmpgtd   %xmm7, %xmm2
+        pcmpgtd   %xmm4, %xmm1
+        movdqa    %xmm2, %xmm5
+        pand      %xmm1, %xmm6
+        andps     %xmm2, %xmm7
+        andnps    %xmm6, %xmm5
+        orps      %xmm7, %xmm5
+        psrld     $14, %xmm5
+        movups    %xmm12, 160(%rsp)
+        .cfi_escape 0x10, 0x1d, 0x0e, 0x38, 0x1c, 0x0d, 0xc0, 0xff, 0xff, 0xff, 0x1a, 0x0d, 0xa0, 0xff, 0xff, 0xff, 0x22
+        pshufd    $2, %xmm5, %xmm12
+        movd      %xmm5, %edx
+        pshufd    $1, %xmm5, %xmm4
+        pshufd    $3, %xmm5, %xmm5
+        movd      %xmm12, %r9d
+        movd      %xmm5, %r10d
+        movd      %xmm4, %eax
+        pcmpgtd   5824+__svml_stanh_data_internal(%rip), %xmm3
+        movups    5696+__svml_stanh_data_internal(%rip), %xmm0
+        movslq    %r9d, %r9
+        andps     %xmm15, %xmm0
+        movslq    %edx, %rdx
+        movslq    %r10d, %r10
+        movslq    %eax, %rax
+        movups    -16(%r9,%rcx), %xmm4
+        movmskps  %xmm3, %r8d
+        movaps    %xmm4, %xmm12
+        movups    -16(%rdx,%rcx), %xmm3
+        movups    -16(%r10,%rcx), %xmm6
+        movaps    %xmm3, %xmm5
+        movups    -16(%rax,%rcx), %xmm1
+        unpcklpd  %xmm6, %xmm12
+        unpckhpd  %xmm6, %xmm4
+        movups    (%rdx,%rcx), %xmm6
+        unpcklpd  %xmm1, %xmm5
+        unpckhpd  %xmm1, %xmm3
+        movaps    %xmm6, %xmm1
+        movups    (%rax,%rcx), %xmm2
+        movups    (%r9,%rcx), %xmm7
+        movups    %xmm13, 144(%rsp)
+        .cfi_escape 0x10, 0x1e, 0x0e, 0x38, 0x1c, 0x0d, 0xc0, 0xff, 0xff, 0xff, 0x1a, 0x0d, 0x90, 0xff, 0xff, 0xff, 0x22
+        movups    (%r10,%rcx), %xmm13
+        unpcklpd  %xmm2, %xmm1
+        unpckhpd  %xmm2, %xmm6
+        movaps    %xmm7, %xmm2
+        unpcklpd  %xmm13, %xmm2
+        unpckhpd  %xmm13, %xmm7
+        cvtps2pd  %xmm0, %xmm13
+        movhlps   %xmm0, %xmm0
+        cvtps2pd  %xmm0, %xmm0
+        mulpd     %xmm13, %xmm6
+        mulpd     %xmm0, %xmm7
+        addpd     %xmm1, %xmm6
+        addpd     %xmm2, %xmm7
+        mulpd     %xmm13, %xmm6
+        mulpd     %xmm0, %xmm7
+        addpd     %xmm3, %xmm6
+        addpd     %xmm4, %xmm7
+        mulpd     %xmm6, %xmm13
+        mulpd     %xmm7, %xmm0
+        addpd     %xmm5, %xmm13
+        addpd     %xmm12, %xmm0
+        cvtpd2ps  %xmm13, %xmm1
+        cvtpd2ps  %xmm0, %xmm3
+        movups    %xmm14, 112(%rsp)
+        .cfi_escape 0x10, 0x1f, 0x0e, 0x38, 0x1c, 0x0d, 0xc0, 0xff, 0xff, 0xff, 0x1a, 0x0d, 0x70, 0xff, 0xff, 0xff, 0x22
+        movups    5632+__svml_stanh_data_internal(%rip), %xmm14
+        movlhps   %xmm3, %xmm1
+        andps     %xmm15, %xmm14
+        orps      %xmm14, %xmm1
+        testl     %r8d, %r8d
+        jne       L(2)
+
+L(1):
+        movups    160(%rsp), %xmm12
+        cfi_restore(29)
+        movaps    %xmm1, %xmm0
+        movups    144(%rsp), %xmm13
+        cfi_restore(30)
+        movups    112(%rsp), %xmm14
+        cfi_restore(31)
+        movups    96(%rsp), %xmm15
+        cfi_restore(32)
+        movq      %rbp, %rsp
+        popq      %rbp
+        cfi_def_cfa(7, 8)
+        cfi_restore(6)
+        ret
+        cfi_def_cfa(6, 16)
+        cfi_offset(6, -16)
+        .cfi_escape 0x10, 0x1d, 0x0e, 0x38, 0x1c, 0x0d, 0xc0, 0xff, 0xff, 0xff, 0x1a, 0x0d, 0xa0, 0xff, 0xff, 0xff, 0x22
+        .cfi_escape 0x10, 0x1e, 0x0e, 0x38, 0x1c, 0x0d, 0xc0, 0xff, 0xff, 0xff, 0x1a, 0x0d, 0x90, 0xff, 0xff, 0xff, 0x22
+        .cfi_escape 0x10, 0x1f, 0x0e, 0x38, 0x1c, 0x0d, 0xc0, 0xff, 0xff, 0xff, 0x1a, 0x0d, 0x70, 0xff, 0xff, 0xff, 0x22
+        .cfi_escape 0x10, 0x20, 0x0e, 0x38, 0x1c, 0x0d, 0xc0, 0xff, 0xff, 0xff, 0x1a, 0x0d, 0x60, 0xff, 0xff, 0xff, 0x22
+
+L(2):
+        movups    %xmm15, 128(%rsp)
+        movups    %xmm1, 192(%rsp)
+        xorl      %eax, %eax
+        movups    %xmm8, 48(%rsp)
+        movups    %xmm9, 32(%rsp)
+        movups    %xmm10, 16(%rsp)
+        movups    %xmm11, (%rsp)
+        movq      %rsi, 72(%rsp)
+        movq      %rdi, 64(%rsp)
+        movq      %r12, 88(%rsp)
+        .cfi_escape 0x10, 0x04, 0x0e, 0x38, 0x1c, 0x0d, 0xc0, 0xff, 0xff, 0xff, 0x1a, 0x0d, 0x48, 0xff, 0xff, 0xff, 0x22
+        .cfi_escape 0x10, 0x05, 0x0e, 0x38, 0x1c, 0x0d, 0xc0, 0xff, 0xff, 0xff, 0x1a, 0x0d, 0x40, 0xff, 0xff, 0xff, 0x22
+        .cfi_escape 0x10, 0x0c, 0x0e, 0x38, 0x1c, 0x0d, 0xc0, 0xff, 0xff, 0xff, 0x1a, 0x0d, 0x58, 0xff, 0xff, 0xff, 0x22
+        .cfi_escape 0x10, 0x19, 0x0e, 0x38, 0x1c, 0x0d, 0xc0, 0xff, 0xff, 0xff, 0x1a, 0x0d, 0x30, 0xff, 0xff, 0xff, 0x22
+        .cfi_escape 0x10, 0x1a, 0x0e, 0x38, 0x1c, 0x0d, 0xc0, 0xff, 0xff, 0xff, 0x1a, 0x0d, 0x20, 0xff, 0xff, 0xff, 0x22
+        .cfi_escape 0x10, 0x1b, 0x0e, 0x38, 0x1c, 0x0d, 0xc0, 0xff, 0xff, 0xff, 0x1a, 0x0d, 0x10, 0xff, 0xff, 0xff, 0x22
+        .cfi_escape 0x10, 0x1c, 0x0e, 0x38, 0x1c, 0x0d, 0xc0, 0xff, 0xff, 0xff, 0x1a, 0x0d, 0x00, 0xff, 0xff, 0xff, 0x22
+        movl      %eax, %r12d
+        movq      %r13, 80(%rsp)
+        .cfi_escape 0x10, 0x0d, 0x0e, 0x38, 0x1c, 0x0d, 0xc0, 0xff, 0xff, 0xff, 0x1a, 0x0d, 0x50, 0xff, 0xff, 0xff, 0x22
+        movl      %r8d, %r13d
+
+L(3):
+        btl       %r12d, %r13d
+        jc        L(5)
+
+L(4):
+        incl      %r12d
+        cmpl      $4, %r12d
+        jl        L(3)
+        movups    48(%rsp), %xmm8
+        cfi_restore(25)
+        movups    32(%rsp), %xmm9
+        cfi_restore(26)
+        movups    16(%rsp), %xmm10
+        cfi_restore(27)
+        movups    (%rsp), %xmm11
+        cfi_restore(28)
+        movq      72(%rsp), %rsi
+        cfi_restore(4)
+        movq      64(%rsp), %rdi
+        cfi_restore(5)
+        movq      88(%rsp), %r12
+        cfi_restore(12)
+        movq      80(%rsp), %r13
+        cfi_restore(13)
+        movups    192(%rsp), %xmm1
+        jmp       L(1)
+        .cfi_escape 0x10, 0x04, 0x0e, 0x38, 0x1c, 0x0d, 0xc0, 0xff, 0xff, 0xff, 0x1a, 0x0d, 0x48, 0xff, 0xff, 0xff, 0x22
+        .cfi_escape 0x10, 0x05, 0x0e, 0x38, 0x1c, 0x0d, 0xc0, 0xff, 0xff, 0xff, 0x1a, 0x0d, 0x40, 0xff, 0xff, 0xff, 0x22
+        .cfi_escape 0x10, 0x0c, 0x0e, 0x38, 0x1c, 0x0d, 0xc0, 0xff, 0xff, 0xff, 0x1a, 0x0d, 0x58, 0xff, 0xff, 0xff, 0x22
+        .cfi_escape 0x10, 0x0d, 0x0e, 0x38, 0x1c, 0x0d, 0xc0, 0xff, 0xff, 0xff, 0x1a, 0x0d, 0x50, 0xff, 0xff, 0xff, 0x22
+        .cfi_escape 0x10, 0x19, 0x0e, 0x38, 0x1c, 0x0d, 0xc0, 0xff, 0xff, 0xff, 0x1a, 0x0d, 0x30, 0xff, 0xff, 0xff, 0x22
+        .cfi_escape 0x10, 0x1a, 0x0e, 0x38, 0x1c, 0x0d, 0xc0, 0xff, 0xff, 0xff, 0x1a, 0x0d, 0x20, 0xff, 0xff, 0xff, 0x22
+        .cfi_escape 0x10, 0x1b, 0x0e, 0x38, 0x1c, 0x0d, 0xc0, 0xff, 0xff, 0xff, 0x1a, 0x0d, 0x10, 0xff, 0xff, 0xff, 0x22
+        .cfi_escape 0x10, 0x1c, 0x0e, 0x38, 0x1c, 0x0d, 0xc0, 0xff, 0xff, 0xff, 0x1a, 0x0d, 0x00, 0xff, 0xff, 0xff, 0x22
+
+L(5):
+        lea       128(%rsp,%r12,4), %rdi
+        lea       192(%rsp,%r12,4), %rsi
+        call      __svml_stanh_cout_rare_internal
+        jmp       L(4)
+
+END(_ZGVbN4v_tanhf_sse4)
+
+        .align    16,0x90
+
+__svml_stanh_cout_rare_internal:
+
+        cfi_startproc
+
+        lea       __stanh_la__imlsTanhTab(%rip), %rdx
+        movb      3(%rdi), %al
+        andb      $-128, %al
+        shrb      $7, %al
+        movzbl    %al, %ecx
+        movzwl    2(%rdi), %r8d
+        andl      $32640, %r8d
+        movl      (%rdx,%rcx,4), %eax
+        cmpl      $32640, %r8d
+        je        L(8)
+
+L(6):
+        movl      %eax, (%rsi)
+
+L(7):
+        xorl      %eax, %eax
+        ret
+
+L(8):
+        testl     $8388607, (%rdi)
+        je        L(6)
+        movss     (%rdi), %xmm0
+        addss     %xmm0, %xmm0
+        movss     %xmm0, (%rsi)
+        jmp       L(7)
+
+        cfi_endproc
+
+        .type	__svml_stanh_cout_rare_internal,@function
+        .size	__svml_stanh_cout_rare_internal,.-__svml_stanh_cout_rare_internal
+
+        .section .rodata, "a"
+        .align 64
+
+__svml_stanh_data_internal:
+        .long	0
+        .long	1030750208
+        .long	1032847360
+        .long	1034944512
+        .long	1037041664
+        .long	1039138816
+        .long	1041235968
+        .long	1043333120
+        .long	1045430272
+        .long	1047527424
+        .long	1049624576
+        .long	1051721728
+        .long	1053818880
+        .long	1055916032
+        .long	1058013184
+        .long	1060110336
+        .long	1062207488
+        .long	1064304640
+        .long	1066401792
+        .long	1068498944
+        .long	1070596096
+        .long	1072693248
+        .long	1074790400
+        .long	1076887552
+        .long	1078984704
+        .long	1081081856
+        .long	1083179008
+        .long	1085276160
+        .long	1087373312
+        .long	1089470464
+        .long	1091567616
+        .long	0
+        .long	0
+        .long	1030732233
+        .long	1032831839
+        .long	1034916201
+        .long	1036994987
+        .long	1039067209
+        .long	1041174248
+        .long	1043220868
+        .long	1045245838
+        .long	1047245614
+        .long	1049383373
+        .long	1051287907
+        .long	1053115377
+        .long	1054857013
+        .long	1057129528
+        .long	1058581488
+        .long	1059832960
+        .long	1060891676
+        .long	1062153819
+        .long	1063337043
+        .long	1064100733
+        .long	1064582223
+        .long	1064984555
+        .long	1065216645
+        .long	1065302845
+        .long	1065334668
+        .long	1065349076
+        .long	1065352656
+        .long	1065353140
+        .long	1065353206
+        .long	1065353215
+        .long	1065353216
+        .long	0
+        .long	2963361822
+        .long	2971470750
+        .long	2945658640
+        .long	821708412
+        .long	824483568
+        .long	824941280
+        .long	2984085072
+        .long	2957298688
+        .long	838449816
+        .long	2966046080
+        .long	2988320324
+        .long	2989804564
+        .long	842626356
+        .long	3000013710
+        .long	2972725824
+        .long	3002017674
+        .long	853753500
+        .long	2987104448
+        .long	3000350914
+        .long	855535800
+        .long	852410906
+        .long	851608946
+        .long	2988641656
+        .long	2997011000
+        .long	2989576736
+        .long	3000884068
+        .long	2999984336
+        .long	840950056
+        .long	2995215280
+        .long	855269702
+        .long	0
+        .long	1065353216
+        .long	1065295748
+        .long	1065270545
+        .long	1065229919
+        .long	1065181343
+        .long	1065124909
+        .long	1065025765
+        .long	1064867200
+        .long	1064679597
+        .long	1064464345
+        .long	1064093083
+        .long	1063517074
+        .long	1062862743
+        .long	1062146519
+        .long	1060992371
+        .long	1059386208
+        .long	1057800167
+        .long	1055660649
+        .long	1051764737
+        .long	1046959010
+        .long	1041444634
+        .long	1035462611
+        .long	1026689093
+        .long	1015337940
+        .long	1002731447
+        .long	990958554
+        .long	973168670
+        .long	948705851
+        .long	924299482
+        .long	899955662
+        .long	864224966
+        .long	0
+        .long	2956213371
+        .long	3178161821
+        .long	3180268967
+        .long	3182315389
+        .long	3184339487
+        .long	3186337805
+        .long	3188474939
+        .long	3190373619
+        .long	3192189570
+        .long	3193910865
+        .long	3196176320
+        .long	3197556682
+        .long	3198679950
+        .long	3199536798
+        .long	3200331518
+        .long	3200564882
+        .long	3200049264
+        .long	3199029518
+        .long	3197040598
+        .long	3192620804
+        .long	3188208183
+        .long	3182392393
+        .long	3173916356
+        .long	3162750726
+        .long	3150176437
+        .long	3138431708
+        .long	3120650203
+        .long	3096189170
+        .long	3071783062
+        .long	3047439278
+        .long	3011707180
+        .long	0
+        .long	3198855845
+        .long	3198879250
+        .long	3198677023
+        .long	3198476576
+        .long	3198388151
+        .long	3198245218
+        .long	3197982711
+        .long	3197594458
+        .long	3197117197
+        .long	3196587519
+        .long	3195304371
+        .long	3192667528
+        .long	3189843074
+        .long	3186330810
+        .long	3177085101
+        .long	1013669486
+        .long	1032032579
+        .long	1036132065
+        .long	1038305199
+        .long	1036774550
+        .long	1033498413
+        .long	1028927137
+        .long	1021175553
+        .long	1009568359
+        .long	998361895
+        .long	985691041
+        .long	967585842
+        .long	943363289
+        .long	919210013
+        .long	895139148
+        .long	858471606
+        .long	0
+        .long	3077428921
+        .long	3189516141
+        .long	1008586543
+        .long	1036101517
+        .long	1033304453
+        .long	1034073627
+        .long	1036071831
+        .long	1037235824
+        .long	1039436298
+        .long	1040631208
+        .long	1041906362
+        .long	1042793477
+        .long	1043232976
+        .long	1043086916
+        .long	1042100375
+        .long	1039444212
+        .long	1034126600
+        .long	1026638186
+        .long	995501655
+        .long	3165579977
+        .long	3167654937
+        .long	3165317828
+        .long	3158960080
+        .long	3148291549
+        .long	3137354510
+        .long	3124730373
+        .long	3106670759
+        .long	3082457650
+        .long	3058305807
+        .long	3034235241
+        .long	2997581996
+        .long	0
+        .long	1040781545
+        .long	1131811139
+        .long	1097198812
+        .long	3247503190
+        .long	3230402941
+        .long	3224086547
+        .long	3212798938
+        .long	1059790272
+        .long	1053691997
+        .long	1061317268
+        .long	3134918084
+        .long	1034173207
+        .long	3176246152
+        .long	3165561405
+        .long	3174788493
+        .long	3178015405
+        .long	3178847213
+        .long	3177176538
+        .long	3171127099
+        .long	3155996003
+        .long	985352038
+        .long	999682315
+        .long	998398067
+        .long	989522534
+        .long	977926264
+        .long	966355955
+        .long	948911724
+        .long	924561635
+        .long	900244966
+        .long	875993879
+        .long	841254832
+        .long	0
+        .long	3155046246
+        .long	1175181842
+        .long	1138112751
+        .long	3286309950
+        .long	3267011817
+        .long	3259619885
+        .long	3246758786
+        .long	1088248663
+        .long	1078543936
+        .long	1086795944
+        .long	3205436942
+        .long	1043392367
+        .long	3198686087
+        .long	3182586396
+        .long	3174374999
+        .long	3142320544
+        .long	1008565243
+        .long	1014115537
+        .long	1016545052
+        .long	1010017051
+        .long	998649588
+        .long	975680464
+        .long	3124451591
+        .long	3121544226
+        .long	3112148751
+        .long	3100159824
+        .long	3082673659
+        .long	3058641232
+        .long	3034613169
+        .long	3010665978
+        .long	2975473412
+        .long	0
+        .long	2145386496
+        .long	2145386496
+        .long	2145386496
+        .long	2145386496
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .long	1027604480
+        .long	1027604480
+        .long	1027604480
+        .long	1027604480
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .long	65011712
+        .long	65011712
+        .long	65011712
+        .long	65011712
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .long	0
+        .long	0
+        .long	36466923
+        .long	1072693248
+        .long	2365563284
+        .long	3201306247
+        .long	1829111721
+        .long	3218428278
+        .long	3823420055
+        .long	3193165324
+        .long	1098370908
+        .long	1072693250
+        .long	2493848101
+        .long	3205978300
+        .long	1742787824
+        .long	3218423470
+        .long	4013086462
+        .long	3193609799
+        .long	3667406935
+        .long	1072693250
+        .long	1352570026
+        .long	3206273363
+        .long	1445916117
+        .long	3218422747
+        .long	3835089556
+        .long	3194065339
+        .long	2420711447
+        .long	1072693251
+        .long	2169133006
+        .long	3206574718
+        .long	101347106
+        .long	3218421982
+        .long	713636389
+        .long	3194411770
+        .long	1709214929
+        .long	1072693252
+        .long	1710199222
+        .long	3206758855
+        .long	2216669086
+        .long	3218421174
+        .long	3814844772
+        .long	3194836884
+        .long	1591910603
+        .long	1072693253
+        .long	2011589771
+        .long	3206962796
+        .long	3721194918
+        .long	3218420324
+        .long	1295469166
+        .long	3195182212
+        .long	2130808979
+        .long	1072693254
+        .long	1222040805
+        .long	3207187539
+        .long	555871541
+        .long	3218419433
+        .long	401254514
+        .long	3195493098
+        .long	3390924472
+        .long	1072693255
+        .long	3112838711
+        .long	3207434078
+        .long	1558155560
+        .long	3218418499
+        .long	683885552
+        .long	3195864282
+        .long	1145294069
+        .long	1072693257
+        .long	1821670117
+        .long	3207648695
+        .long	2692181933
+        .long	3218417523
+        .long	2704036295
+        .long	3196181879
+        .long	4054831834
+        .long	1072693258
+        .long	1649153664
+        .long	3207795248
+        .long	4228604383
+        .long	3218416505
+        .long	4004758581
+        .long	3196440654
+        .long	3603542514
+        .long	1072693260
+        .long	1123737044
+        .long	3207954183
+        .long	2154630785
+        .long	3218415446
+        .long	2606327835
+        .long	3196743208
+        .long	4163276658
+        .long	1072693262
+        .long	2048619642
+        .long	3208125991
+        .long	1058893780
+        .long	3218414345
+        .long	250194901
+        .long	3197094852
+        .long	1518877548
+        .long	1072693265
+        .long	3379868633
+        .long	3208311162
+        .long	1246516380
+        .long	3218413202
+        .long	1621358934
+        .long	3197304764
+        .long	48033162
+        .long	1072693268
+        .long	957106177
+        .long	3208510185
+        .long	3034045498
+        .long	3218412017
+        .long	798414253
+        .long	3197538466
+        .long	4131323741
+        .long	1072693270
+        .long	2207647163
+        .long	3208683052
+        .long	2454449664
+        .long	3218410791
+        .long	1709648499
+        .long	3197805932
+        .long	972334142
+        .long	1072693274
+        .long	1279092327
+        .long	3208797143
+        .long	4141984674
+        .long	3218409523
+        .long	4279927728
+        .long	3198110676
+        .long	3547307714
+        .long	1072693277
+        .long	873763845
+        .long	3208918886
+        .long	4152286949
+        .long	3218408214
+        .long	947630201
+        .long	3198400037
+        .long	3779918761
+        .long	1072693283
+        .long	2452756690
+        .long	3209115951
+        .long	2900277560
+        .long	3218406175
+        .long	4114829322
+        .long	3198840356
+        .long	1550746642
+        .long	1072693293
+        .long	3179273584
+        .long	3209408258
+        .long	1697097694
+        .long	3218403310
+        .long	3189856208
+        .long	3199299134
+        .long	2567958063
+        .long	1072693304
+        .long	2177201355
+        .long	3209713300
+        .long	663593652
+        .long	3218400281
+        .long	1915839956
+        .long	3199641526
+        .long	3400799630
+        .long	1072693317
+        .long	2625933576
+        .long	3209895292
+        .long	3140727122
+        .long	3218397088
+        .long	2825210621
+        .long	3200061154
+        .long	661592278
+        .long	1072693333
+        .long	2751163500
+        .long	3210096603
+        .long	4055449010
+        .long	3218393733
+        .long	57286782
+        .long	3200412116
+        .long	3889851982
+        .long	1072693350
+        .long	2680384314
+        .long	3210318153
+        .long	2804057046
+        .long	3218390217
+        .long	1812582369
+        .long	3200718155
+        .long	1191734144
+        .long	1072693371
+        .long	867498228
+        .long	3210560852
+        .long	3250577733
+        .long	3218386540
+        .long	3326742410
+        .long	3201083020
+        .long	2188854007
+        .long	1072693394
+        .long	363145135
+        .long	3210782655
+        .long	840173644
+        .long	3218382704
+        .long	1735074843
+        .long	3201408616
+        .long	3657661222
+        .long	1072693420
+        .long	2204762872
+        .long	3210926495
+        .long	4072217384
+        .long	3218378708
+        .long	2965875284
+        .long	3201662196
+        .long	2413420961
+        .long	1072693450
+        .long	1162405510
+        .long	3211082241
+        .long	138720143
+        .long	3218374556
+        .long	454705634
+        .long	3201958187
+        .long	3899194868
+        .long	1072693483
+        .long	669033796
+        .long	3211250324
+        .long	2167069495
+        .long	3218370246
+        .long	1542529428
+        .long	3202301612
+        .long	710018948
+        .long	1072693521
+        .long	2883210692
+        .long	3211431169
+        .long	1973418570
+        .long	3218365781
+        .long	3156689511
+        .long	3202524481
+        .long	2656657906
+        .long	1072693562
+        .long	3498100032
+        .long	3211625196
+        .long	125419693
+        .long	3218361162
+        .long	1620715508
+        .long	3202751895
+        .long	2404819887
+        .long	1072693608
+        .long	4021715948
+        .long	3211810552
+        .long	1645154164
+        .long	3218356389
+        .long	703452016
+        .long	3203011668
+        .long	1243884135
+        .long	1072693659
+        .long	480742811
+        .long	3211921363
+        .long	3122063309
+        .long	3218351464
+        .long	223504399
+        .long	3203307063
+        .long	495862037
+        .long	1072693715
+        .long	300794004
+        .long	3212039372
+        .long	1300653287
+        .long	3218346389
+        .long	1176592120
+        .long	3203610816
+        .long	3274452673
+        .long	1072693808
+        .long	2613861807
+        .long	3212229889
+        .long	359514654
+        .long	3218338503
+        .long	2923503278
+        .long	3204034910
+        .long	3741678157
+        .long	1072693954
+        .long	3651935792
+        .long	3212511436
+        .long	2702507736
+        .long	3218327463
+        .long	2210624435
+        .long	3204506468
+        .long	1100251351
+        .long	1072694127
+        .long	3514265607
+        .long	3212825173
+        .long	957470414
+        .long	3218315845
+        .long	1305550937
+        .long	3204833184
+        .long	2996845965
+        .long	1072694328
+        .long	3142229264
+        .long	3213004685
+        .long	1883674585
+        .long	3218303659
+        .long	3326598907
+        .long	3205231584
+        .long	274977645
+        .long	1072694562
+        .long	3016319234
+        .long	3213195820
+        .long	1539002348
+        .long	3218290918
+        .long	3984366897
+        .long	3205604614
+        .long	1292806442
+        .long	1072694830
+        .long	3262520051
+        .long	3213405058
+        .long	2372653574
+        .long	3218277634
+        .long	2452462577
+        .long	3205892032
+        .long	1815353697
+        .long	1072695136
+        .long	3662183375
+        .long	3213632998
+        .long	250148789
+        .long	3218263821
+        .long	2158010733
+        .long	3206232708
+        .long	2150433494
+        .long	1072695483
+        .long	3919565056
+        .long	3213880202
+        .long	1540395291
+        .long	3218249491
+        .long	3182910565
+        .long	3206589369
+        .long	2808974545
+        .long	1072695874
+        .long	1965799910
+        .long	3214016317
+        .long	1545570484
+        .long	3218234659
+        .long	1413633121
+        .long	3206823218
+        .long	164723038
+        .long	1072696313
+        .long	81021250
+        .long	3214159950
+        .long	1583468454
+        .long	3218219339
+        .long	18571726
+        .long	3207094384
+        .long	3588317822
+        .long	1072696801
+        .long	4095098713
+        .long	3214313941
+        .long	298038316
+        .long	3218203546
+        .long	912947688
+        .long	3207406859
+        .long	1041448961
+        .long	1072697344
+        .long	4179586945
+        .long	3214478495
+        .long	2148027612
+        .long	3218187294
+        .long	3720520462
+        .long	3207679413
+        .long	1980273179
+        .long	1072697943
+        .long	1752543433
+        .long	3214653794
+        .long	124299728
+        .long	3218170600
+        .long	864061540
+        .long	3207883361
+        .long	2949417123
+        .long	1072698602
+        .long	4190073881
+        .long	3214839998
+        .long	1415544749
+        .long	3218153478
+        .long	3694676202
+        .long	3208114560
+        .long	420771937
+        .long	1072699325
+        .long	1282420231
+        .long	3214985633
+        .long	1533345938
+        .long	3218135945
+        .long	2892854837
+        .long	3208375402
+        .long	3632588569
+        .long	1072700113
+        .long	2712748874
+        .long	3215089842
+        .long	1386124246
+        .long	3218118017
+        .long	1634175019
+        .long	3208733922
+        .long	347483009
+        .long	1072701423
+        .long	1161341506
+        .long	3215256321
+        .long	1877668895
+        .long	3218090451
+        .long	4108664264
+        .long	3209099007
+        .long	3038559136
+        .long	1072703435
+        .long	2683048238
+        .long	3215498732
+        .long	1179454900
+        .long	3218025113
+        .long	1332126937
+        .long	3209546908
+        .long	3486307715
+        .long	1072705767
+        .long	2508275841
+        .long	3215764027
+        .long	359393231
+        .long	3217946511
+        .long	1961215910
+        .long	3209890029
+        .long	2252418763
+        .long	1072708441
+        .long	2827865151
+        .long	3216017387
+        .long	3509880367
+        .long	3217865627
+        .long	3222140085
+        .long	3210213923
+        .long	1486994624
+        .long	1072711477
+        .long	3160629487
+        .long	3216172802
+        .long	1178047112
+        .long	3217782741
+        .long	1901428593
+        .long	3210596649
+        .long	3746562216
+        .long	1072714893
+        .long	1033996001
+        .long	3216339382
+        .long	39866696
+        .long	3217698130
+        .long	2908573463
+        .long	3210891953
+        .long	2324761591
+        .long	1072718707
+        .long	2389401627
+        .long	3216516876
+        .long	3645939838
+        .long	3217612071
+        .long	2440236284
+        .long	3211151116
+        .long	1761407793
+        .long	1072722932
+        .long	2502005220
+        .long	3216704962
+        .long	1997398717
+        .long	3217524842
+        .long	2895026412
+        .long	3211448596
+        .long	4114502182
+        .long	1072727579
+        .long	2605061383
+        .long	3216903247
+        .long	58515002
+        .long	3217436714
+        .long	711731960
+        .long	3211787230
+        .long	3951984035
+        .long	1072732658
+        .long	3516063216
+        .long	3217071220
+        .long	3638757279
+        .long	3217347953
+        .long	3233370794
+        .long	3211979005
+        .long	658281779
+        .long	1072738175
+        .long	309554960
+        .long	3217179845
+        .long	1331214594
+        .long	3217258823
+        .long	2937534811
+        .long	3212193451
+        .long	2289001467
+        .long	1072744131
+        .long	2442043690
+        .long	3217292793
+        .long	2664085653
+        .long	3217169576
+        .long	3462081454
+        .long	3212432263
+        .long	3795084150
+        .long	1072750527
+        .long	1130374688
+        .long	3217409754
+        .long	3638257201
+        .long	3217080459
+        .long	3906637920
+        .long	3212696488
+        .long	4040275044
+        .long	1072757360
+        .long	3643517564
+        .long	3217530392
+        .long	4148962921
+        .long	3216952251
+        .long	1995056602
+        .long	3212911950
+        .long	1479928784
+        .long	1072764624
+        .long	2653868580
+        .long	3217654355
+        .long	1010106713
+        .long	3216775940
+        .long	3129357315
+        .long	3213070764
+        .long	2856812514
+        .long	1072772308
+        .long	1621093115
+        .long	3217781272
+        .long	1824031529
+        .long	3216601249
+        .long	2296680075
+        .long	3213333328
+        .long	2460843475
+        .long	1072784536
+        .long	3722925065
+        .long	3217975665
+        .long	3901534801
+        .long	3216343697
+        .long	741495589
+        .long	3213734822
+        .long	13033194
+        .long	1072802249
+        .long	1706090638
+        .long	3218161084
+        .long	4129724113
+        .long	3216008854
+        .long	2582831738
+        .long	3214039094
+        .long	3092949488
+        .long	1072821329
+        .long	4163404160
+        .long	3218296789
+        .long	673560195
+        .long	3215391593
+        .long	1852259695
+        .long	3214295490
+        .long	3663604487
+        .long	1072841572
+        .long	2783926416
+        .long	3218433189
+        .long	538028418
+        .long	3214623601
+        .long	955002681
+        .long	3214577680
+        .long	1457520314
+        .long	1072862739
+        .long	2977011911
+        .long	3218568683
+        .long	2456605794
+        .long	3213048602
+        .long	1782979473
+        .long	3214883178
+        .long	3136246603
+        .long	1072884563
+        .long	4172123069
+        .long	3218701739
+        .long	1041205303
+        .long	1065062250
+        .long	1494191018
+        .long	3215071352
+        .long	2030188257
+        .long	1072906761
+        .long	242335435
+        .long	3218830924
+        .long	3225388224
+        .long	1066807264
+        .long	2597486284
+        .long	3215242091
+        .long	1527970838
+        .long	1072929036
+        .long	2966426512
+        .long	3218954923
+        .long	1554080475
+        .long	1067589039
+        .long	1299968651
+        .long	3215418462
+        .long	3575385503
+        .long	1072951087
+        .long	2115725422
+        .long	3219072567
+        .long	1970202642
+        .long	1068007486
+        .long	633750547
+        .long	3215597833
+        .long	4170701031
+        .long	1072972617
+        .long	46586082
+        .long	3219155579
+        .long	1194653136
+        .long	1068384025
+        .long	4171340731
+        .long	3215777352
+        .long	3578160514
+        .long	1072993337
+        .long	3238411740
+        .long	3219206599
+        .long	3278559237
+        .long	1068609006
+        .long	2404931200
+        .long	3215954013
+        .long	533888921
+        .long	1073012973
+        .long	1507597629
+        .long	3219253160
+        .long	2386969249
+        .long	1068756225
+        .long	272720058
+        .long	3216053653
+        .long	54544651
+        .long	1073031269
+        .long	3020671348
+        .long	3219294996
+        .long	4122670807
+        .long	1068883785
+        .long	2536786852
+        .long	3216134458
+        .long	230026772
+        .long	1073047994
+        .long	2830531360
+        .long	3219331923
+        .long	2545616196
+        .long	1068992498
+        .long	3897096954
+        .long	3216209170
+        .long	867435464
+        .long	1073062943
+        .long	3935983781
+        .long	3219363830
+        .long	4280666630
+        .long	1069083305
+        .long	1614478429
+        .long	3216276286
+        .long	3991143559
+        .long	1073075939
+        .long	3165050417
+        .long	3219390677
+        .long	248866814
+        .long	1069157251
+        .long	2328429718
+        .long	3216358398
+        .long	1880129173
+        .long	1073091258
+        .long	4059723411
+        .long	3219421162
+        .long	3082848917
+        .long	1069238148
+        .long	1081358649
+        .long	3216430553
+        .long	1955557582
+        .long	1073104040
+        .long	2869422647
+        .long	3219445318
+        .long	1310544530
+        .long	1069299023
+        .long	434435025
+        .long	3216450109
+        .long	3947018234
+        .long	1073107343
+        .long	3414641036
+        .long	3219451270
+        .long	4069313179
+        .long	1069313321
+        .long	1392468754
+        .long	3216410502
+        .long	3271741504
+        .long	1073101128
+        .long	3884994071
+        .long	3219440866
+        .long	1456085694
+        .long	1069290099
+        .long	2332856790
+        .long	3216307665
+        .long	3950891192
+        .long	1073085735
+        .long	439037894
+        .long	3219416288
+        .long	1197951536
+        .long	1069237765
+        .long	4195788421
+        .long	3216139842
+        .long	3990997338
+        .long	1073061787
+        .long	550042602
+        .long	3219379833
+        .long	2832452545
+        .long	1069163766
+        .long	1200943255
+        .long	3215832361
+        .long	2073883731
+        .long	1073030122
+        .long	3042850267
+        .long	3219333800
+        .long	991641143
+        .long	1069074535
+        .long	1637244010
+        .long	3215243222
+        .long	3805163810
+        .long	1072991715
+        .long	3517445189
+        .long	3219280382
+        .long	2680864185
+        .long	1068975465
+        .long	1457843741
+        .long	3214140932
+        .long	1315080793
+        .long	1072947617
+        .long	3059804278
+        .long	3219221594
+        .long	2861308047
+        .long	1068870963
+        .long	3296491873
+        .long	1064537111
+        .long	3728462150
+        .long	1072898893
+        .long	3615137083
+        .long	3219159232
+        .long	3017963192
+        .long	1068764532
+        .long	3972434375
+        .long	1067468619
+        .long	1336398218
+        .long	1072846587
+        .long	1068664290
+        .long	3219061390
+        .long	122240345
+        .long	1068658880
+        .long	508009436
+        .long	1068456917
+        .long	3501538245
+        .long	1072791681
+        .long	968690691
+        .long	3218931236
+        .long	1514516445
+        .long	1068556030
+        .long	671541798
+        .long	1069006173
+        .long	3814409280
+        .long	1072735081
+        .long	1553551847
+        .long	3218801852
+        .long	2849431279
+        .long	1068415930
+        .long	285838780
+        .long	1069554660
+        .long	2881499585
+        .long	1072661949
+        .long	928028610
+        .long	3218674977
+        .long	8837506
+        .long	1068229231
+        .long	4283922105
+        .long	1069842903
+        .long	1813934616
+        .long	1072546640
+        .long	2296020303
+        .long	3218551962
+        .long	3757630126
+        .long	1068054242
+        .long	4184842874
+        .long	1070138481
+        .long	1612285858
+        .long	1072432209
+        .long	3568867548
+        .long	3218433820
+        .long	2489334631
+        .long	1067891605
+        .long	3119354956
+        .long	1070586029
+        .long	1945534618
+        .long	1072265408
+        .long	12375465
+        .long	3218268030
+        .long	869568690
+        .long	1067671872
+        .long	313517472
+        .long	1070892138
+        .long	1205077106
+        .long	1072052753
+        .long	2329101392
+        .long	3218055718
+        .long	31064032
+        .long	1067390210
+        .long	1106783211
+        .long	1071186310
+        .long	571472860
+        .long	1071856508
+        .long	2279775366
+        .long	3217706561
+        .long	3977902324
+        .long	1066976012
+        .long	1438560376
+        .long	1071467394
+        .long	433300635
+        .long	1071678859
+        .long	2662131044
+        .long	3217407122
+        .long	3461865003
+        .long	1066639491
+        .long	3761842524
+        .long	1071687909
+        .long	591758334
+        .long	1071396321
+        .long	1311878841
+        .long	3217153539
+        .long	3007781852
+        .long	1066335723
+        .long	1614590629
+        .long	1071809819
+        .long	1253814918
+        .long	1071117476
+        .long	1728609767
+        .long	3216850667
+        .long	2200561853
+        .long	1065903347
+        .long	3821226689
+        .long	1071921115
+        .long	2022982069
+        .long	1070874479
+        .long	2030156196
+        .long	3216496942
+        .long	874711265
+        .long	1065560045
+        .long	2003227996
+        .long	1072021655
+        .long	2808404217
+        .long	1070664514
+        .long	1372837647
+        .long	3216204595
+        .long	822053276
+        .long	1065224094
+        .long	3767175364
+        .long	1072111660
+        .long	3043371777
+        .long	1070372670
+        .long	1442419211
+        .long	3215945892
+        .long	298752438
+        .long	1064796452
+        .long	1111528881
+        .long	1072191609
+        .long	3513208196
+        .long	1070065467
+        .long	3837735739
+        .long	3215552388
+        .long	3701924119
+        .long	1064460397
+        .long	1230501085
+        .long	1072262142
+        .long	2161267832
+        .long	1069804871
+        .long	4188367704
+        .long	3215231429
+        .long	401190186
+        .long	1064089052
+        .long	3002339892
+        .long	1072323996
+        .long	1480019407
+        .long	1069584807
+        .long	1833655520
+        .long	3214970435
+        .long	2907956919
+        .long	1063676311
+        .long	875346000
+        .long	1072377952
+        .long	3150437403
+        .long	1069251888
+        .long	876861923
+        .long	3214583482
+        .long	1689748747
+        .long	1063353511
+        .long	2795554744
+        .long	1072424793
+        .long	3869705215
+        .long	1068941581
+        .long	1837883894
+        .long	3214240854
+        .long	2762317048
+        .long	1062946513
+        .long	2491972100
+        .long	1072465284
+        .long	4114823501
+        .long	1068682289
+        .long	2146865463
+        .long	3213964103
+        .long	800804261
+        .long	1062552648
+        .long	2634953449
+        .long	1072500149
+        .long	2952556276
+        .long	1068433515
+        .long	1872935290
+        .long	3213596436
+        .long	525130857
+        .long	1062245296
+        .long	3287041404
+        .long	1072542855
+        .long	164674845
+        .long	1067923724
+        .long	3273134342
+        .long	3213089271
+        .long	171708004
+        .long	1061610314
+        .long	3035032320
+        .long	1072586748
+        .long	3976243935
+        .long	1067403539
+        .long	3504708444
+        .long	3212404491
+        .long	3955947885
+        .long	1060882840
+        .long	513098494
+        .long	1072618404
+        .long	416924237
+        .long	1066726877
+        .long	1788945081
+        .long	3211801737
+        .long	1199639353
+        .long	1060166859
+        .long	2284134637
+        .long	1072641010
+        .long	754275327
+        .long	1066136447
+        .long	94803481
+        .long	3211042671
+        .long	3377507017
+        .long	1059354147
+        .long	1467291457
+        .long	1072657015
+        .long	2435597312
+        .long	1065520743
+        .long	2819017772
+        .long	3210358609
+        .long	1988617747
+        .long	1058591581
+        .long	633705514
+        .long	1072668259
+        .long	392269686
+        .long	1064864433
+        .long	2964449929
+        .long	3209729770
+        .long	3963893163
+        .long	1057889872
+        .long	2214892393
+        .long	1072676103
+        .long	2190738271
+        .long	1064315837
+        .long	3773826451
+        .long	3208969045
+        .long	3609404170
+        .long	1057113308
+        .long	3795216963
+        .long	1072681541
+        .long	3959981107
+        .long	1063599490
+        .long	1577139384
+        .long	3208281591
+        .long	1777963469
+        .long	1056319886
+        .long	2768813161
+        .long	1072685290
+        .long	452197850
+        .long	1062981751
+        .long	625862001
+        .long	3207639777
+        .long	1894515286
+        .long	1055580811
+        .long	809336726
+        .long	1072687861
+        .long	325412222
+        .long	1062349073
+        .long	3494772326
+        .long	3206874482
+        .long	3143092609
+        .long	1054887561
+        .long	1391578948
+        .long	1072689615
+        .long	370441451
+        .long	1061660435
+        .long	67458841
+        .long	3206180214
+        .long	1971759196
+        .long	1054066692
+        .long	57274217
+        .long	1072690807
+        .long	293665776
+        .long	1061075750
+        .long	1340185983
+        .long	3205535605
+        .long	2210177191
+        .long	1053294335
+        .long	1110907588
+        .long	1072691613
+        .long	3961986905
+        .long	1060367146
+        .long	3774614905
+        .long	3204763416
+        .long	3590429673
+        .long	1052580827
+        .long	2737507729
+        .long	1072692156
+        .long	370479370
+        .long	1059701790
+        .long	1033751386
+        .long	3204059641
+        .long	1162278823
+        .long	1051830218
+        .long	2341375458
+        .long	1072692521
+        .long	760364123
+        .long	1059103172
+        .long	910883556
+        .long	3203420282
+        .long	401067508
+        .long	1051028170
+        .long	3358303651
+        .long	1072692765
+        .long	3104773993
+        .long	1058369139
+        .long	2043715743
+        .long	3202639413
+        .long	4274377921
+        .long	1050278646
+        .long	3501940353
+        .long	1072692984
+        .long	2710387139
+        .long	1057384557
+        .long	2550611600
+        .long	3201592258
+        .long	2260324605
+        .long	1049158690
+        .long	3160989127
+        .long	1072693133
+        .long	1403521776
+        .long	1056074537
+        .long	760745859
+        .long	3200238663
+        .long	1163121055
+        .long	1047679067
+        .long	3509020169
+        .long	1072693198
+        .long	3352058101
+        .long	1054743188
+        .long	2289323607
+        .long	3198722761
+        .long	918272756
+        .long	1046147840
+        .long	4268817660
+        .long	1072693226
+        .long	1580550645
+        .long	1053325591
+        .long	1736251411
+        .long	3197308470
+        .long	1531106447
+        .long	1044632576
+        .long	0
+        .long	1072693248
+        .long	0
+        .long	0
+        .long	0
+        .long	0
+        .long	0
+        .long	0
+        .long	2147483648
+        .long	2147483648
+        .long	2147483648
+        .long	2147483648
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .long	2147483647
+        .long	2147483647
+        .long	2147483647
+        .long	2147483647
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .long	2146959360
+        .long	2146959360
+        .long	2146959360
+        .long	2146959360
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .long	2130706432
+        .long	2130706432
+        .long	2130706432
+        .long	2130706432
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .long	1022885888
+        .long	1022885888
+        .long	1022885888
+        .long	1022885888
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .long	69730304
+        .long	69730304
+        .long	69730304
+        .long	69730304
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .type	__svml_stanh_data_internal,@object
+        .size	__svml_stanh_data_internal,6016
+        .align 4
+
+__stanh_la__imlsTanhTab:
+        .long	1065353216
+        .long	3212836864
+        .type	__stanh_la__imlsTanhTab,@object
+        .size	__stanh_la__imlsTanhTab,8
diff --git a/sysdeps/x86_64/fpu/multiarch/svml_s_tanhf8_core-sse.S b/sysdeps/x86_64/fpu/multiarch/svml_s_tanhf8_core-sse.S
new file mode 100644
index 0000000000..a56795e3cd
--- /dev/null
+++ b/sysdeps/x86_64/fpu/multiarch/svml_s_tanhf8_core-sse.S
@@ -0,0 +1,20 @@ 
+/* SSE version of vectorized tanhf, vector length is 8.
+   Copyright (C) 2021 Free Software Foundation, Inc.
+   This file is part of the GNU C Library.
+
+   The GNU C Library is free software; you can redistribute it and/or
+   modify it under the terms of the GNU Lesser General Public
+   License as published by the Free Software Foundation; either
+   version 2.1 of the License, or (at your option) any later version.
+
+   The GNU C Library is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+    Lesser General Public License for more details.
+
+   You should have received a copy of the GNU Lesser General Public
+   License along with the GNU C Library; if not, see
+   <https://www.gnu.org/licenses/>.  */
+
+#define _ZGVdN8v_tanhf _ZGVdN8v_tanhf_sse_wrapper
+#include "../svml_s_tanhf8_core.S"
diff --git a/sysdeps/x86_64/fpu/multiarch/svml_s_tanhf8_core.c b/sysdeps/x86_64/fpu/multiarch/svml_s_tanhf8_core.c
new file mode 100644
index 0000000000..fadcea36ab
--- /dev/null
+++ b/sysdeps/x86_64/fpu/multiarch/svml_s_tanhf8_core.c
@@ -0,0 +1,28 @@ 
+/* Multiple versions of vectorized tanhf, vector length is 8.
+   Copyright (C) 2021 Free Software Foundation, Inc.
+   This file is part of the GNU C Library.
+
+   The GNU C Library is free software; you can redistribute it and/or
+   modify it under the terms of the GNU Lesser General Public
+   License as published by the Free Software Foundation; either
+   version 2.1 of the License, or (at your option) any later version.
+
+   The GNU C Library is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+   Lesser General Public License for more details.
+
+   You should have received a copy of the GNU Lesser General Public
+   License along with the GNU C Library; if not, see
+   <https://www.gnu.org/licenses/>.  */
+
+#define SYMBOL_NAME _ZGVdN8v_tanhf
+#include "ifunc-mathvec-avx2.h"
+
+libc_ifunc_redirected (REDIRECT_NAME, SYMBOL_NAME, IFUNC_SELECTOR ());
+
+#ifdef SHARED
+__hidden_ver1 (_ZGVdN8v_tanhf, __GI__ZGVdN8v_tanhf,
+	       __redirect__ZGVdN8v_tanhf)
+  __attribute__ ((visibility ("hidden")));
+#endif
diff --git a/sysdeps/x86_64/fpu/multiarch/svml_s_tanhf8_core_avx2.S b/sysdeps/x86_64/fpu/multiarch/svml_s_tanhf8_core_avx2.S
new file mode 100644
index 0000000000..f36ad74775
--- /dev/null
+++ b/sysdeps/x86_64/fpu/multiarch/svml_s_tanhf8_core_avx2.S
@@ -0,0 +1,2036 @@ 
+/* Function tanhf vectorized with AVX2.
+   Copyright (C) 2021 Free Software Foundation, Inc.
+   This file is part of the GNU C Library.
+
+   The GNU C Library is free software; you can redistribute it and/or
+   modify it under the terms of the GNU Lesser General Public
+   License as published by the Free Software Foundation; either
+   version 2.1 of the License, or (at your option) any later version.
+
+   The GNU C Library is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+   Lesser General Public License for more details.
+
+   You should have received a copy of the GNU Lesser General Public
+   License along with the GNU C Library; if not, see
+   https://www.gnu.org/licenses/.  */
+
+/*
+ * ALGORITHM DESCRIPTION:
+ *
+ *   NOTE: Since the hyperbolic tangent function is odd
+ *         (tanh(x) = -tanh(-x)), below algorithm deals with the absolute
+ *         value of the argument |x|: tanh(x) = sign(x) * tanh(|x|)
+ *
+ *   We use a table lookup method to compute tanh(|x|).
+ *   The basic idea is to split the input range into a number of subintervals
+ *   and to approximate tanh(.) with a polynomial on each of them.
+ *
+ *   IEEE SPECIAL CONDITIONS:
+ *   x = [+,-]0, r = [+,-]0
+ *   x = +Inf,   r = +1
+ *   x = -Inf,   r = -1
+ *   x = QNaN,   r = QNaN
+ *   x = SNaN,   r = QNaN
+ *
+ *
+ *   ALGORITHM DETAILS
+ *   We handle special values in a callout function, aside from main path
+ *   computations. "Special" for this algorithm are:
+ *   INF, NAN, |x| > HUGE_THRESHOLD
+ *
+ *
+ *   Main path computations are organized as follows:
+ *   Actually we split the interval [0, SATURATION_THRESHOLD)
+ *   into a number of subintervals.  On each subinterval we approximate tanh(.)
+ *   with a minimax polynomial of pre-defined degree. Polynomial coefficients
+ *   are computed beforehand and stored in table. We also use
+ *
+ *       y := |x| + B,
+ *
+ *   here B depends on subinterval and is used to make argument
+ *   closer to zero.
+ *   We also add large fake interval [SATURATION_THRESHOLD, HUGE_THRESHOLD],
+ *   where 1.0 + 0.0*y + 0.0*y^2 ... coefficients are stored - just to
+ *   preserve main path computation logic but return 1.0 for all arguments.
+ *
+ *   Hence reconstruction looks as follows:
+ *   we extract proper polynomial and range reduction coefficients
+ *        (Pj and B), corresponding to subinterval, to which |x| belongs,
+ *        and return
+ *
+ *       r := sign(x) * (P0 + P1 * y + ... + Pn * y^n)
+ *
+ *   NOTE: we use multiprecision technique to multiply and sum the first
+ *         K terms of the polynomial. So Pj, j = 0..K are stored in
+ *         table each as a pair of target precision numbers (Pj and PLj) to
+ *         achieve wider than target precision.
+ *
+ *
+ */
+
+#include <sysdep.h>
+
+        .text
+	.section .text.avx2,"ax",@progbits
+ENTRY(_ZGVdN8v_tanhf_avx2)
+        pushq     %rbp
+        cfi_def_cfa_offset(16)
+        movq      %rsp, %rbp
+        cfi_def_cfa(6, 16)
+        cfi_offset(6, -16)
+        andq      $-64, %rsp
+        pushq     %r14
+        pushq     %r15
+        pushq     %rbx
+        subq      $360, %rsp
+        .cfi_escape 0x10, 0x03, 0x0e, 0x38, 0x1c, 0x0d, 0xc0, 0xff, 0xff, 0xff, 0x1a, 0x0d, 0xe8, 0xff, 0xff, 0xff, 0x22
+        .cfi_escape 0x10, 0x0e, 0x0e, 0x38, 0x1c, 0x0d, 0xc0, 0xff, 0xff, 0xff, 0x1a, 0x0d, 0xf8, 0xff, 0xff, 0xff, 0x22
+        .cfi_escape 0x10, 0x0f, 0x0e, 0x38, 0x1c, 0x0d, 0xc0, 0xff, 0xff, 0xff, 0x1a, 0x0d, 0xf0, 0xff, 0xff, 0xff, 0x22
+        lea       1360+__svml_stanh_data_internal(%rip), %r14
+        vmovups   %ymm12, 224(%rsp)
+
+/*
+ *  small table specific variables *
+ *  Constant loading
+ */
+        vmovups   5952+__svml_stanh_data_internal(%rip), %ymm4
+        vmovups   %ymm13, 256(%rsp)
+        vmovups   %ymm14, 288(%rsp)
+        vmovups   %ymm15, 320(%rsp)
+        vmovups   %ymm8, 32(%rsp)
+        vmovups   %ymm10, 160(%rsp)
+        vmovups   %ymm9, 96(%rsp)
+        vmovups   %ymm11, 192(%rsp)
+        .cfi_escape 0x10, 0xdb, 0x00, 0x0e, 0x38, 0x1c, 0x0d, 0xc0, 0xff, 0xff, 0xff, 0x1a, 0x0d, 0xa0, 0xfe, 0xff, 0xff, 0x22
+        .cfi_escape 0x10, 0xdc, 0x00, 0x0e, 0x38, 0x1c, 0x0d, 0xc0, 0xff, 0xff, 0xff, 0x1a, 0x0d, 0xe0, 0xfe, 0xff, 0xff, 0x22
+        .cfi_escape 0x10, 0xdd, 0x00, 0x0e, 0x38, 0x1c, 0x0d, 0xc0, 0xff, 0xff, 0xff, 0x1a, 0x0d, 0x20, 0xff, 0xff, 0xff, 0x22
+        .cfi_escape 0x10, 0xde, 0x00, 0x0e, 0x38, 0x1c, 0x0d, 0xc0, 0xff, 0xff, 0xff, 0x1a, 0x0d, 0x40, 0xff, 0xff, 0xff, 0x22
+        .cfi_escape 0x10, 0xdf, 0x00, 0x0e, 0x38, 0x1c, 0x0d, 0xc0, 0xff, 0xff, 0xff, 0x1a, 0x0d, 0x60, 0xff, 0xff, 0xff, 0x22
+        .cfi_escape 0x10, 0xe0, 0x00, 0x0e, 0x38, 0x1c, 0x0d, 0xc0, 0xff, 0xff, 0xff, 0x1a, 0x0d, 0x80, 0xff, 0xff, 0xff, 0x22
+        .cfi_escape 0x10, 0xe1, 0x00, 0x0e, 0x38, 0x1c, 0x0d, 0xc0, 0xff, 0xff, 0xff, 0x1a, 0x0d, 0xa0, 0xff, 0xff, 0xff, 0x22
+        .cfi_escape 0x10, 0xe2, 0x00, 0x0e, 0x38, 0x1c, 0x0d, 0xc0, 0xff, 0xff, 0xff, 0x1a, 0x0d, 0xc0, 0xff, 0xff, 0xff, 0x22
+        vmovaps   %ymm0, %ymm12
+
+/* Here huge arguments, INF and NaNs are filtered out to callout. */
+        vpand     5760+__svml_stanh_data_internal(%rip), %ymm12, %ymm6
+        vpsubd    5888+__svml_stanh_data_internal(%rip), %ymm6, %ymm2
+
+/* if VMIN, VMAX is defined for I type */
+        vxorps    %ymm3, %ymm3, %ymm3
+        vpcmpgtd  %ymm3, %ymm2, %ymm1
+        vpand     %ymm1, %ymm2, %ymm5
+        vpcmpgtd  %ymm4, %ymm2, %ymm13
+        vblendvps %ymm13, %ymm4, %ymm5, %ymm14
+        vpsrld    $14, %ymm14, %ymm15
+        vpcmpgtd  5824+__svml_stanh_data_internal(%rip), %ymm6, %ymm7
+        vandps    5696+__svml_stanh_data_internal(%rip), %ymm12, %ymm10
+        vmovmskps %ymm7, %ebx
+        vandps    5632+__svml_stanh_data_internal(%rip), %ymm12, %ymm11
+        vextractf128 $1, %ymm15, %xmm0
+        vmovd     %xmm15, %r11d
+        vmovd     %xmm0, %ecx
+        vpextrd   $1, %xmm0, %edx
+        movslq    %ecx, %rcx
+        movslq    %edx, %rdx
+        vpextrd   $2, %xmm0, %eax
+        vpextrd   $3, %xmm0, %r15d
+        movslq    %r11d, %r11
+        vpextrd   $1, %xmm15, %r10d
+        vpextrd   $2, %xmm15, %r9d
+        movslq    %eax, %rax
+        movslq    %r15d, %r15
+        movslq    %r10d, %r10
+        movslq    %r9d, %r9
+        vpextrd   $3, %xmm15, %r8d
+        movslq    %r8d, %r8
+        vmovupd   -16(%rcx,%r14), %xmm8
+        vmovupd   -16(%rdx,%r14), %xmm6
+        vmovupd   (%r11,%r14), %xmm13
+        vmovupd   (%rcx,%r14), %xmm0
+        vmovupd   (%rdx,%r14), %xmm4
+        vmovupd   -16(%r11,%r14), %xmm9
+        vmovupd   -16(%r10,%r14), %xmm7
+        vmovupd   (%r10,%r14), %xmm14
+        vinsertf128 $1, -16(%rax,%r14), %ymm8, %ymm2
+        vinsertf128 $1, -16(%r15,%r14), %ymm6, %ymm5
+        vunpcklpd %ymm5, %ymm2, %ymm8
+        vunpckhpd %ymm5, %ymm2, %ymm6
+        vinsertf128 $1, (%r9,%r14), %ymm13, %ymm5
+        vinsertf128 $1, (%rax,%r14), %ymm0, %ymm13
+        vinsertf128 $1, (%r15,%r14), %ymm4, %ymm0
+        vcvtps2pd %xmm10, %ymm4
+        vextractf128 $1, %ymm10, %xmm10
+        vinsertf128 $1, -16(%r9,%r14), %ymm9, %ymm3
+        vinsertf128 $1, -16(%r8,%r14), %ymm7, %ymm1
+        vunpcklpd %ymm1, %ymm3, %ymm9
+        vunpckhpd %ymm1, %ymm3, %ymm7
+        vinsertf128 $1, (%r8,%r14), %ymm14, %ymm1
+        vunpcklpd %ymm1, %ymm5, %ymm3
+        vunpckhpd %ymm1, %ymm5, %ymm2
+        vcvtps2pd %xmm10, %ymm5
+        vfmadd213pd %ymm3, %ymm4, %ymm2
+        vfmadd213pd %ymm7, %ymm4, %ymm2
+        vunpcklpd %ymm0, %ymm13, %ymm1
+        vunpckhpd %ymm0, %ymm13, %ymm0
+        vfmadd213pd %ymm1, %ymm5, %ymm0
+        vfmadd213pd %ymm9, %ymm4, %ymm2
+        vfmadd213pd %ymm6, %ymm5, %ymm0
+        vcvtpd2ps %ymm2, %xmm1
+        vfmadd213pd %ymm8, %ymm5, %ymm0
+        vcvtpd2ps %ymm0, %xmm0
+        vinsertf128 $1, %xmm0, %ymm1, %ymm2
+        vorps     %ymm11, %ymm2, %ymm0
+        testl     %ebx, %ebx
+        jne       L(2)
+
+L(1):
+        vmovups   32(%rsp), %ymm8
+        cfi_restore(91)
+        vmovups   96(%rsp), %ymm9
+        cfi_restore(92)
+        vmovups   160(%rsp), %ymm10
+        cfi_restore(93)
+        vmovups   192(%rsp), %ymm11
+        cfi_restore(94)
+        vmovups   224(%rsp), %ymm12
+        cfi_restore(95)
+        vmovups   256(%rsp), %ymm13
+        cfi_restore(96)
+        vmovups   288(%rsp), %ymm14
+        cfi_restore(97)
+        vmovups   320(%rsp), %ymm15
+        cfi_restore(98)
+        addq      $360, %rsp
+        cfi_restore(3)
+        popq      %rbx
+        cfi_restore(15)
+        popq      %r15
+        cfi_restore(14)
+        popq      %r14
+        movq      %rbp, %rsp
+        popq      %rbp
+        cfi_def_cfa(7, 8)
+        cfi_restore(6)
+        ret
+        cfi_def_cfa(6, 16)
+        .cfi_escape 0x10, 0x03, 0x0e, 0x38, 0x1c, 0x0d, 0xc0, 0xff, 0xff, 0xff, 0x1a, 0x0d, 0xe8, 0xff, 0xff, 0xff, 0x22
+        cfi_offset(6, -16)
+        .cfi_escape 0x10, 0x0e, 0x0e, 0x38, 0x1c, 0x0d, 0xc0, 0xff, 0xff, 0xff, 0x1a, 0x0d, 0xf8, 0xff, 0xff, 0xff, 0x22
+        .cfi_escape 0x10, 0x0f, 0x0e, 0x38, 0x1c, 0x0d, 0xc0, 0xff, 0xff, 0xff, 0x1a, 0x0d, 0xf0, 0xff, 0xff, 0xff, 0x22
+        .cfi_escape 0x10, 0xdb, 0x00, 0x0e, 0x38, 0x1c, 0x0d, 0xc0, 0xff, 0xff, 0xff, 0x1a, 0x0d, 0xa0, 0xfe, 0xff, 0xff, 0x22
+        .cfi_escape 0x10, 0xdc, 0x00, 0x0e, 0x38, 0x1c, 0x0d, 0xc0, 0xff, 0xff, 0xff, 0x1a, 0x0d, 0xe0, 0xfe, 0xff, 0xff, 0x22
+        .cfi_escape 0x10, 0xdd, 0x00, 0x0e, 0x38, 0x1c, 0x0d, 0xc0, 0xff, 0xff, 0xff, 0x1a, 0x0d, 0x20, 0xff, 0xff, 0xff, 0x22
+        .cfi_escape 0x10, 0xde, 0x00, 0x0e, 0x38, 0x1c, 0x0d, 0xc0, 0xff, 0xff, 0xff, 0x1a, 0x0d, 0x40, 0xff, 0xff, 0xff, 0x22
+        .cfi_escape 0x10, 0xdf, 0x00, 0x0e, 0x38, 0x1c, 0x0d, 0xc0, 0xff, 0xff, 0xff, 0x1a, 0x0d, 0x60, 0xff, 0xff, 0xff, 0x22
+        .cfi_escape 0x10, 0xe0, 0x00, 0x0e, 0x38, 0x1c, 0x0d, 0xc0, 0xff, 0xff, 0xff, 0x1a, 0x0d, 0x80, 0xff, 0xff, 0xff, 0x22
+        .cfi_escape 0x10, 0xe1, 0x00, 0x0e, 0x38, 0x1c, 0x0d, 0xc0, 0xff, 0xff, 0xff, 0x1a, 0x0d, 0xa0, 0xff, 0xff, 0xff, 0x22
+        .cfi_escape 0x10, 0xe2, 0x00, 0x0e, 0x38, 0x1c, 0x0d, 0xc0, 0xff, 0xff, 0xff, 0x1a, 0x0d, 0xc0, 0xff, 0xff, 0xff, 0x22
+
+L(2):
+        vmovups   %ymm12, 64(%rsp)
+        vmovups   %ymm0, 128(%rsp)
+        je        L(1)
+        xorl      %r14d, %r14d
+        vzeroupper
+        movq      %rsi, 8(%rsp)
+        movq      %rdi, (%rsp)
+        .cfi_escape 0x10, 0x04, 0x0e, 0x38, 0x1c, 0x0d, 0xc0, 0xff, 0xff, 0xff, 0x1a, 0x0d, 0x88, 0xfe, 0xff, 0xff, 0x22
+        .cfi_escape 0x10, 0x05, 0x0e, 0x38, 0x1c, 0x0d, 0xc0, 0xff, 0xff, 0xff, 0x1a, 0x0d, 0x80, 0xfe, 0xff, 0xff, 0x22
+
+L(3):
+        btl       %r14d, %ebx
+        jc        L(5)
+
+L(4):
+        incl      %r14d
+        cmpl      $8, %r14d
+        jl        L(3)
+        movq      8(%rsp), %rsi
+        cfi_restore(4)
+        movq      (%rsp), %rdi
+        cfi_restore(5)
+        vmovups   128(%rsp), %ymm0
+        jmp       L(1)
+        .cfi_escape 0x10, 0x04, 0x0e, 0x38, 0x1c, 0x0d, 0xc0, 0xff, 0xff, 0xff, 0x1a, 0x0d, 0x88, 0xfe, 0xff, 0xff, 0x22
+        .cfi_escape 0x10, 0x05, 0x0e, 0x38, 0x1c, 0x0d, 0xc0, 0xff, 0xff, 0xff, 0x1a, 0x0d, 0x80, 0xfe, 0xff, 0xff, 0x22
+
+L(5):
+        lea       64(%rsp,%r14,4), %rdi
+        lea       128(%rsp,%r14,4), %rsi
+        call      __svml_stanh_cout_rare_internal
+        jmp       L(4)
+
+END(_ZGVdN8v_tanhf_avx2)
+
+        .align    16,0x90
+
+__svml_stanh_cout_rare_internal:
+
+        cfi_startproc
+
+        lea       __stanh_la__imlsTanhTab(%rip), %rdx
+        movb      3(%rdi), %al
+        andb      $-128, %al
+        shrb      $7, %al
+        movzbl    %al, %ecx
+        movzwl    2(%rdi), %r8d
+        andl      $32640, %r8d
+        movl      (%rdx,%rcx,4), %eax
+        cmpl      $32640, %r8d
+        je        L(8)
+
+L(6):
+        movl      %eax, (%rsi)
+
+L(7):
+        xorl      %eax, %eax
+        ret
+
+L(8):
+        testl     $8388607, (%rdi)
+        je        L(6)
+        movss     (%rdi), %xmm0
+        addss     %xmm0, %xmm0
+        movss     %xmm0, (%rsi)
+        jmp       L(7)
+
+        cfi_endproc
+
+        .type	__svml_stanh_cout_rare_internal,@function
+        .size	__svml_stanh_cout_rare_internal,.-__svml_stanh_cout_rare_internal
+
+        .section .rodata, "a"
+        .align 64
+
+__svml_stanh_data_internal:
+        .long	0
+        .long	1030750208
+        .long	1032847360
+        .long	1034944512
+        .long	1037041664
+        .long	1039138816
+        .long	1041235968
+        .long	1043333120
+        .long	1045430272
+        .long	1047527424
+        .long	1049624576
+        .long	1051721728
+        .long	1053818880
+        .long	1055916032
+        .long	1058013184
+        .long	1060110336
+        .long	1062207488
+        .long	1064304640
+        .long	1066401792
+        .long	1068498944
+        .long	1070596096
+        .long	1072693248
+        .long	1074790400
+        .long	1076887552
+        .long	1078984704
+        .long	1081081856
+        .long	1083179008
+        .long	1085276160
+        .long	1087373312
+        .long	1089470464
+        .long	1091567616
+        .long	0
+        .long	0
+        .long	1030732233
+        .long	1032831839
+        .long	1034916201
+        .long	1036994987
+        .long	1039067209
+        .long	1041174248
+        .long	1043220868
+        .long	1045245838
+        .long	1047245614
+        .long	1049383373
+        .long	1051287907
+        .long	1053115377
+        .long	1054857013
+        .long	1057129528
+        .long	1058581488
+        .long	1059832960
+        .long	1060891676
+        .long	1062153819
+        .long	1063337043
+        .long	1064100733
+        .long	1064582223
+        .long	1064984555
+        .long	1065216645
+        .long	1065302845
+        .long	1065334668
+        .long	1065349076
+        .long	1065352656
+        .long	1065353140
+        .long	1065353206
+        .long	1065353215
+        .long	1065353216
+        .long	0
+        .long	2963361822
+        .long	2971470750
+        .long	2945658640
+        .long	821708412
+        .long	824483568
+        .long	824941280
+        .long	2984085072
+        .long	2957298688
+        .long	838449816
+        .long	2966046080
+        .long	2988320324
+        .long	2989804564
+        .long	842626356
+        .long	3000013710
+        .long	2972725824
+        .long	3002017674
+        .long	853753500
+        .long	2987104448
+        .long	3000350914
+        .long	855535800
+        .long	852410906
+        .long	851608946
+        .long	2988641656
+        .long	2997011000
+        .long	2989576736
+        .long	3000884068
+        .long	2999984336
+        .long	840950056
+        .long	2995215280
+        .long	855269702
+        .long	0
+        .long	1065353216
+        .long	1065295748
+        .long	1065270545
+        .long	1065229919
+        .long	1065181343
+        .long	1065124909
+        .long	1065025765
+        .long	1064867200
+        .long	1064679597
+        .long	1064464345
+        .long	1064093083
+        .long	1063517074
+        .long	1062862743
+        .long	1062146519
+        .long	1060992371
+        .long	1059386208
+        .long	1057800167
+        .long	1055660649
+        .long	1051764737
+        .long	1046959010
+        .long	1041444634
+        .long	1035462611
+        .long	1026689093
+        .long	1015337940
+        .long	1002731447
+        .long	990958554
+        .long	973168670
+        .long	948705851
+        .long	924299482
+        .long	899955662
+        .long	864224966
+        .long	0
+        .long	2956213371
+        .long	3178161821
+        .long	3180268967
+        .long	3182315389
+        .long	3184339487
+        .long	3186337805
+        .long	3188474939
+        .long	3190373619
+        .long	3192189570
+        .long	3193910865
+        .long	3196176320
+        .long	3197556682
+        .long	3198679950
+        .long	3199536798
+        .long	3200331518
+        .long	3200564882
+        .long	3200049264
+        .long	3199029518
+        .long	3197040598
+        .long	3192620804
+        .long	3188208183
+        .long	3182392393
+        .long	3173916356
+        .long	3162750726
+        .long	3150176437
+        .long	3138431708
+        .long	3120650203
+        .long	3096189170
+        .long	3071783062
+        .long	3047439278
+        .long	3011707180
+        .long	0
+        .long	3198855845
+        .long	3198879250
+        .long	3198677023
+        .long	3198476576
+        .long	3198388151
+        .long	3198245218
+        .long	3197982711
+        .long	3197594458
+        .long	3197117197
+        .long	3196587519
+        .long	3195304371
+        .long	3192667528
+        .long	3189843074
+        .long	3186330810
+        .long	3177085101
+        .long	1013669486
+        .long	1032032579
+        .long	1036132065
+        .long	1038305199
+        .long	1036774550
+        .long	1033498413
+        .long	1028927137
+        .long	1021175553
+        .long	1009568359
+        .long	998361895
+        .long	985691041
+        .long	967585842
+        .long	943363289
+        .long	919210013
+        .long	895139148
+        .long	858471606
+        .long	0
+        .long	3077428921
+        .long	3189516141
+        .long	1008586543
+        .long	1036101517
+        .long	1033304453
+        .long	1034073627
+        .long	1036071831
+        .long	1037235824
+        .long	1039436298
+        .long	1040631208
+        .long	1041906362
+        .long	1042793477
+        .long	1043232976
+        .long	1043086916
+        .long	1042100375
+        .long	1039444212
+        .long	1034126600
+        .long	1026638186
+        .long	995501655
+        .long	3165579977
+        .long	3167654937
+        .long	3165317828
+        .long	3158960080
+        .long	3148291549
+        .long	3137354510
+        .long	3124730373
+        .long	3106670759
+        .long	3082457650
+        .long	3058305807
+        .long	3034235241
+        .long	2997581996
+        .long	0
+        .long	1040781545
+        .long	1131811139
+        .long	1097198812
+        .long	3247503190
+        .long	3230402941
+        .long	3224086547
+        .long	3212798938
+        .long	1059790272
+        .long	1053691997
+        .long	1061317268
+        .long	3134918084
+        .long	1034173207
+        .long	3176246152
+        .long	3165561405
+        .long	3174788493
+        .long	3178015405
+        .long	3178847213
+        .long	3177176538
+        .long	3171127099
+        .long	3155996003
+        .long	985352038
+        .long	999682315
+        .long	998398067
+        .long	989522534
+        .long	977926264
+        .long	966355955
+        .long	948911724
+        .long	924561635
+        .long	900244966
+        .long	875993879
+        .long	841254832
+        .long	0
+        .long	3155046246
+        .long	1175181842
+        .long	1138112751
+        .long	3286309950
+        .long	3267011817
+        .long	3259619885
+        .long	3246758786
+        .long	1088248663
+        .long	1078543936
+        .long	1086795944
+        .long	3205436942
+        .long	1043392367
+        .long	3198686087
+        .long	3182586396
+        .long	3174374999
+        .long	3142320544
+        .long	1008565243
+        .long	1014115537
+        .long	1016545052
+        .long	1010017051
+        .long	998649588
+        .long	975680464
+        .long	3124451591
+        .long	3121544226
+        .long	3112148751
+        .long	3100159824
+        .long	3082673659
+        .long	3058641232
+        .long	3034613169
+        .long	3010665978
+        .long	2975473412
+        .long	0
+        .long	2145386496
+        .long	2145386496
+        .long	2145386496
+        .long	2145386496
+        .long	2145386496
+        .long	2145386496
+        .long	2145386496
+        .long	2145386496
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .long	1027604480
+        .long	1027604480
+        .long	1027604480
+        .long	1027604480
+        .long	1027604480
+        .long	1027604480
+        .long	1027604480
+        .long	1027604480
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .long	65011712
+        .long	65011712
+        .long	65011712
+        .long	65011712
+        .long	65011712
+        .long	65011712
+        .long	65011712
+        .long	65011712
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .long	0
+        .long	0
+        .long	36466923
+        .long	1072693248
+        .long	2365563284
+        .long	3201306247
+        .long	1829111721
+        .long	3218428278
+        .long	3823420055
+        .long	3193165324
+        .long	1098370908
+        .long	1072693250
+        .long	2493848101
+        .long	3205978300
+        .long	1742787824
+        .long	3218423470
+        .long	4013086462
+        .long	3193609799
+        .long	3667406935
+        .long	1072693250
+        .long	1352570026
+        .long	3206273363
+        .long	1445916117
+        .long	3218422747
+        .long	3835089556
+        .long	3194065339
+        .long	2420711447
+        .long	1072693251
+        .long	2169133006
+        .long	3206574718
+        .long	101347106
+        .long	3218421982
+        .long	713636389
+        .long	3194411770
+        .long	1709214929
+        .long	1072693252
+        .long	1710199222
+        .long	3206758855
+        .long	2216669086
+        .long	3218421174
+        .long	3814844772
+        .long	3194836884
+        .long	1591910603
+        .long	1072693253
+        .long	2011589771
+        .long	3206962796
+        .long	3721194918
+        .long	3218420324
+        .long	1295469166
+        .long	3195182212
+        .long	2130808979
+        .long	1072693254
+        .long	1222040805
+        .long	3207187539
+        .long	555871541
+        .long	3218419433
+        .long	401254514
+        .long	3195493098
+        .long	3390924472
+        .long	1072693255
+        .long	3112838711
+        .long	3207434078
+        .long	1558155560
+        .long	3218418499
+        .long	683885552
+        .long	3195864282
+        .long	1145294069
+        .long	1072693257
+        .long	1821670117
+        .long	3207648695
+        .long	2692181933
+        .long	3218417523
+        .long	2704036295
+        .long	3196181879
+        .long	4054831834
+        .long	1072693258
+        .long	1649153664
+        .long	3207795248
+        .long	4228604383
+        .long	3218416505
+        .long	4004758581
+        .long	3196440654
+        .long	3603542514
+        .long	1072693260
+        .long	1123737044
+        .long	3207954183
+        .long	2154630785
+        .long	3218415446
+        .long	2606327835
+        .long	3196743208
+        .long	4163276658
+        .long	1072693262
+        .long	2048619642
+        .long	3208125991
+        .long	1058893780
+        .long	3218414345
+        .long	250194901
+        .long	3197094852
+        .long	1518877548
+        .long	1072693265
+        .long	3379868633
+        .long	3208311162
+        .long	1246516380
+        .long	3218413202
+        .long	1621358934
+        .long	3197304764
+        .long	48033162
+        .long	1072693268
+        .long	957106177
+        .long	3208510185
+        .long	3034045498
+        .long	3218412017
+        .long	798414253
+        .long	3197538466
+        .long	4131323741
+        .long	1072693270
+        .long	2207647163
+        .long	3208683052
+        .long	2454449664
+        .long	3218410791
+        .long	1709648499
+        .long	3197805932
+        .long	972334142
+        .long	1072693274
+        .long	1279092327
+        .long	3208797143
+        .long	4141984674
+        .long	3218409523
+        .long	4279927728
+        .long	3198110676
+        .long	3547307714
+        .long	1072693277
+        .long	873763845
+        .long	3208918886
+        .long	4152286949
+        .long	3218408214
+        .long	947630201
+        .long	3198400037
+        .long	3779918761
+        .long	1072693283
+        .long	2452756690
+        .long	3209115951
+        .long	2900277560
+        .long	3218406175
+        .long	4114829322
+        .long	3198840356
+        .long	1550746642
+        .long	1072693293
+        .long	3179273584
+        .long	3209408258
+        .long	1697097694
+        .long	3218403310
+        .long	3189856208
+        .long	3199299134
+        .long	2567958063
+        .long	1072693304
+        .long	2177201355
+        .long	3209713300
+        .long	663593652
+        .long	3218400281
+        .long	1915839956
+        .long	3199641526
+        .long	3400799630
+        .long	1072693317
+        .long	2625933576
+        .long	3209895292
+        .long	3140727122
+        .long	3218397088
+        .long	2825210621
+        .long	3200061154
+        .long	661592278
+        .long	1072693333
+        .long	2751163500
+        .long	3210096603
+        .long	4055449010
+        .long	3218393733
+        .long	57286782
+        .long	3200412116
+        .long	3889851982
+        .long	1072693350
+        .long	2680384314
+        .long	3210318153
+        .long	2804057046
+        .long	3218390217
+        .long	1812582369
+        .long	3200718155
+        .long	1191734144
+        .long	1072693371
+        .long	867498228
+        .long	3210560852
+        .long	3250577733
+        .long	3218386540
+        .long	3326742410
+        .long	3201083020
+        .long	2188854007
+        .long	1072693394
+        .long	363145135
+        .long	3210782655
+        .long	840173644
+        .long	3218382704
+        .long	1735074843
+        .long	3201408616
+        .long	3657661222
+        .long	1072693420
+        .long	2204762872
+        .long	3210926495
+        .long	4072217384
+        .long	3218378708
+        .long	2965875284
+        .long	3201662196
+        .long	2413420961
+        .long	1072693450
+        .long	1162405510
+        .long	3211082241
+        .long	138720143
+        .long	3218374556
+        .long	454705634
+        .long	3201958187
+        .long	3899194868
+        .long	1072693483
+        .long	669033796
+        .long	3211250324
+        .long	2167069495
+        .long	3218370246
+        .long	1542529428
+        .long	3202301612
+        .long	710018948
+        .long	1072693521
+        .long	2883210692
+        .long	3211431169
+        .long	1973418570
+        .long	3218365781
+        .long	3156689511
+        .long	3202524481
+        .long	2656657906
+        .long	1072693562
+        .long	3498100032
+        .long	3211625196
+        .long	125419693
+        .long	3218361162
+        .long	1620715508
+        .long	3202751895
+        .long	2404819887
+        .long	1072693608
+        .long	4021715948
+        .long	3211810552
+        .long	1645154164
+        .long	3218356389
+        .long	703452016
+        .long	3203011668
+        .long	1243884135
+        .long	1072693659
+        .long	480742811
+        .long	3211921363
+        .long	3122063309
+        .long	3218351464
+        .long	223504399
+        .long	3203307063
+        .long	495862037
+        .long	1072693715
+        .long	300794004
+        .long	3212039372
+        .long	1300653287
+        .long	3218346389
+        .long	1176592120
+        .long	3203610816
+        .long	3274452673
+        .long	1072693808
+        .long	2613861807
+        .long	3212229889
+        .long	359514654
+        .long	3218338503
+        .long	2923503278
+        .long	3204034910
+        .long	3741678157
+        .long	1072693954
+        .long	3651935792
+        .long	3212511436
+        .long	2702507736
+        .long	3218327463
+        .long	2210624435
+        .long	3204506468
+        .long	1100251351
+        .long	1072694127
+        .long	3514265607
+        .long	3212825173
+        .long	957470414
+        .long	3218315845
+        .long	1305550937
+        .long	3204833184
+        .long	2996845965
+        .long	1072694328
+        .long	3142229264
+        .long	3213004685
+        .long	1883674585
+        .long	3218303659
+        .long	3326598907
+        .long	3205231584
+        .long	274977645
+        .long	1072694562
+        .long	3016319234
+        .long	3213195820
+        .long	1539002348
+        .long	3218290918
+        .long	3984366897
+        .long	3205604614
+        .long	1292806442
+        .long	1072694830
+        .long	3262520051
+        .long	3213405058
+        .long	2372653574
+        .long	3218277634
+        .long	2452462577
+        .long	3205892032
+        .long	1815353697
+        .long	1072695136
+        .long	3662183375
+        .long	3213632998
+        .long	250148789
+        .long	3218263821
+        .long	2158010733
+        .long	3206232708
+        .long	2150433494
+        .long	1072695483
+        .long	3919565056
+        .long	3213880202
+        .long	1540395291
+        .long	3218249491
+        .long	3182910565
+        .long	3206589369
+        .long	2808974545
+        .long	1072695874
+        .long	1965799910
+        .long	3214016317
+        .long	1545570484
+        .long	3218234659
+        .long	1413633121
+        .long	3206823218
+        .long	164723038
+        .long	1072696313
+        .long	81021250
+        .long	3214159950
+        .long	1583468454
+        .long	3218219339
+        .long	18571726
+        .long	3207094384
+        .long	3588317822
+        .long	1072696801
+        .long	4095098713
+        .long	3214313941
+        .long	298038316
+        .long	3218203546
+        .long	912947688
+        .long	3207406859
+        .long	1041448961
+        .long	1072697344
+        .long	4179586945
+        .long	3214478495
+        .long	2148027612
+        .long	3218187294
+        .long	3720520462
+        .long	3207679413
+        .long	1980273179
+        .long	1072697943
+        .long	1752543433
+        .long	3214653794
+        .long	124299728
+        .long	3218170600
+        .long	864061540
+        .long	3207883361
+        .long	2949417123
+        .long	1072698602
+        .long	4190073881
+        .long	3214839998
+        .long	1415544749
+        .long	3218153478
+        .long	3694676202
+        .long	3208114560
+        .long	420771937
+        .long	1072699325
+        .long	1282420231
+        .long	3214985633
+        .long	1533345938
+        .long	3218135945
+        .long	2892854837
+        .long	3208375402
+        .long	3632588569
+        .long	1072700113
+        .long	2712748874
+        .long	3215089842
+        .long	1386124246
+        .long	3218118017
+        .long	1634175019
+        .long	3208733922
+        .long	347483009
+        .long	1072701423
+        .long	1161341506
+        .long	3215256321
+        .long	1877668895
+        .long	3218090451
+        .long	4108664264
+        .long	3209099007
+        .long	3038559136
+        .long	1072703435
+        .long	2683048238
+        .long	3215498732
+        .long	1179454900
+        .long	3218025113
+        .long	1332126937
+        .long	3209546908
+        .long	3486307715
+        .long	1072705767
+        .long	2508275841
+        .long	3215764027
+        .long	359393231
+        .long	3217946511
+        .long	1961215910
+        .long	3209890029
+        .long	2252418763
+        .long	1072708441
+        .long	2827865151
+        .long	3216017387
+        .long	3509880367
+        .long	3217865627
+        .long	3222140085
+        .long	3210213923
+        .long	1486994624
+        .long	1072711477
+        .long	3160629487
+        .long	3216172802
+        .long	1178047112
+        .long	3217782741
+        .long	1901428593
+        .long	3210596649
+        .long	3746562216
+        .long	1072714893
+        .long	1033996001
+        .long	3216339382
+        .long	39866696
+        .long	3217698130
+        .long	2908573463
+        .long	3210891953
+        .long	2324761591
+        .long	1072718707
+        .long	2389401627
+        .long	3216516876
+        .long	3645939838
+        .long	3217612071
+        .long	2440236284
+        .long	3211151116
+        .long	1761407793
+        .long	1072722932
+        .long	2502005220
+        .long	3216704962
+        .long	1997398717
+        .long	3217524842
+        .long	2895026412
+        .long	3211448596
+        .long	4114502182
+        .long	1072727579
+        .long	2605061383
+        .long	3216903247
+        .long	58515002
+        .long	3217436714
+        .long	711731960
+        .long	3211787230
+        .long	3951984035
+        .long	1072732658
+        .long	3516063216
+        .long	3217071220
+        .long	3638757279
+        .long	3217347953
+        .long	3233370794
+        .long	3211979005
+        .long	658281779
+        .long	1072738175
+        .long	309554960
+        .long	3217179845
+        .long	1331214594
+        .long	3217258823
+        .long	2937534811
+        .long	3212193451
+        .long	2289001467
+        .long	1072744131
+        .long	2442043690
+        .long	3217292793
+        .long	2664085653
+        .long	3217169576
+        .long	3462081454
+        .long	3212432263
+        .long	3795084150
+        .long	1072750527
+        .long	1130374688
+        .long	3217409754
+        .long	3638257201
+        .long	3217080459
+        .long	3906637920
+        .long	3212696488
+        .long	4040275044
+        .long	1072757360
+        .long	3643517564
+        .long	3217530392
+        .long	4148962921
+        .long	3216952251
+        .long	1995056602
+        .long	3212911950
+        .long	1479928784
+        .long	1072764624
+        .long	2653868580
+        .long	3217654355
+        .long	1010106713
+        .long	3216775940
+        .long	3129357315
+        .long	3213070764
+        .long	2856812514
+        .long	1072772308
+        .long	1621093115
+        .long	3217781272
+        .long	1824031529
+        .long	3216601249
+        .long	2296680075
+        .long	3213333328
+        .long	2460843475
+        .long	1072784536
+        .long	3722925065
+        .long	3217975665
+        .long	3901534801
+        .long	3216343697
+        .long	741495589
+        .long	3213734822
+        .long	13033194
+        .long	1072802249
+        .long	1706090638
+        .long	3218161084
+        .long	4129724113
+        .long	3216008854
+        .long	2582831738
+        .long	3214039094
+        .long	3092949488
+        .long	1072821329
+        .long	4163404160
+        .long	3218296789
+        .long	673560195
+        .long	3215391593
+        .long	1852259695
+        .long	3214295490
+        .long	3663604487
+        .long	1072841572
+        .long	2783926416
+        .long	3218433189
+        .long	538028418
+        .long	3214623601
+        .long	955002681
+        .long	3214577680
+        .long	1457520314
+        .long	1072862739
+        .long	2977011911
+        .long	3218568683
+        .long	2456605794
+        .long	3213048602
+        .long	1782979473
+        .long	3214883178
+        .long	3136246603
+        .long	1072884563
+        .long	4172123069
+        .long	3218701739
+        .long	1041205303
+        .long	1065062250
+        .long	1494191018
+        .long	3215071352
+        .long	2030188257
+        .long	1072906761
+        .long	242335435
+        .long	3218830924
+        .long	3225388224
+        .long	1066807264
+        .long	2597486284
+        .long	3215242091
+        .long	1527970838
+        .long	1072929036
+        .long	2966426512
+        .long	3218954923
+        .long	1554080475
+        .long	1067589039
+        .long	1299968651
+        .long	3215418462
+        .long	3575385503
+        .long	1072951087
+        .long	2115725422
+        .long	3219072567
+        .long	1970202642
+        .long	1068007486
+        .long	633750547
+        .long	3215597833
+        .long	4170701031
+        .long	1072972617
+        .long	46586082
+        .long	3219155579
+        .long	1194653136
+        .long	1068384025
+        .long	4171340731
+        .long	3215777352
+        .long	3578160514
+        .long	1072993337
+        .long	3238411740
+        .long	3219206599
+        .long	3278559237
+        .long	1068609006
+        .long	2404931200
+        .long	3215954013
+        .long	533888921
+        .long	1073012973
+        .long	1507597629
+        .long	3219253160
+        .long	2386969249
+        .long	1068756225
+        .long	272720058
+        .long	3216053653
+        .long	54544651
+        .long	1073031269
+        .long	3020671348
+        .long	3219294996
+        .long	4122670807
+        .long	1068883785
+        .long	2536786852
+        .long	3216134458
+        .long	230026772
+        .long	1073047994
+        .long	2830531360
+        .long	3219331923
+        .long	2545616196
+        .long	1068992498
+        .long	3897096954
+        .long	3216209170
+        .long	867435464
+        .long	1073062943
+        .long	3935983781
+        .long	3219363830
+        .long	4280666630
+        .long	1069083305
+        .long	1614478429
+        .long	3216276286
+        .long	3991143559
+        .long	1073075939
+        .long	3165050417
+        .long	3219390677
+        .long	248866814
+        .long	1069157251
+        .long	2328429718
+        .long	3216358398
+        .long	1880129173
+        .long	1073091258
+        .long	4059723411
+        .long	3219421162
+        .long	3082848917
+        .long	1069238148
+        .long	1081358649
+        .long	3216430553
+        .long	1955557582
+        .long	1073104040
+        .long	2869422647
+        .long	3219445318
+        .long	1310544530
+        .long	1069299023
+        .long	434435025
+        .long	3216450109
+        .long	3947018234
+        .long	1073107343
+        .long	3414641036
+        .long	3219451270
+        .long	4069313179
+        .long	1069313321
+        .long	1392468754
+        .long	3216410502
+        .long	3271741504
+        .long	1073101128
+        .long	3884994071
+        .long	3219440866
+        .long	1456085694
+        .long	1069290099
+        .long	2332856790
+        .long	3216307665
+        .long	3950891192
+        .long	1073085735
+        .long	439037894
+        .long	3219416288
+        .long	1197951536
+        .long	1069237765
+        .long	4195788421
+        .long	3216139842
+        .long	3990997338
+        .long	1073061787
+        .long	550042602
+        .long	3219379833
+        .long	2832452545
+        .long	1069163766
+        .long	1200943255
+        .long	3215832361
+        .long	2073883731
+        .long	1073030122
+        .long	3042850267
+        .long	3219333800
+        .long	991641143
+        .long	1069074535
+        .long	1637244010
+        .long	3215243222
+        .long	3805163810
+        .long	1072991715
+        .long	3517445189
+        .long	3219280382
+        .long	2680864185
+        .long	1068975465
+        .long	1457843741
+        .long	3214140932
+        .long	1315080793
+        .long	1072947617
+        .long	3059804278
+        .long	3219221594
+        .long	2861308047
+        .long	1068870963
+        .long	3296491873
+        .long	1064537111
+        .long	3728462150
+        .long	1072898893
+        .long	3615137083
+        .long	3219159232
+        .long	3017963192
+        .long	1068764532
+        .long	3972434375
+        .long	1067468619
+        .long	1336398218
+        .long	1072846587
+        .long	1068664290
+        .long	3219061390
+        .long	122240345
+        .long	1068658880
+        .long	508009436
+        .long	1068456917
+        .long	3501538245
+        .long	1072791681
+        .long	968690691
+        .long	3218931236
+        .long	1514516445
+        .long	1068556030
+        .long	671541798
+        .long	1069006173
+        .long	3814409280
+        .long	1072735081
+        .long	1553551847
+        .long	3218801852
+        .long	2849431279
+        .long	1068415930
+        .long	285838780
+        .long	1069554660
+        .long	2881499585
+        .long	1072661949
+        .long	928028610
+        .long	3218674977
+        .long	8837506
+        .long	1068229231
+        .long	4283922105
+        .long	1069842903
+        .long	1813934616
+        .long	1072546640
+        .long	2296020303
+        .long	3218551962
+        .long	3757630126
+        .long	1068054242
+        .long	4184842874
+        .long	1070138481
+        .long	1612285858
+        .long	1072432209
+        .long	3568867548
+        .long	3218433820
+        .long	2489334631
+        .long	1067891605
+        .long	3119354956
+        .long	1070586029
+        .long	1945534618
+        .long	1072265408
+        .long	12375465
+        .long	3218268030
+        .long	869568690
+        .long	1067671872
+        .long	313517472
+        .long	1070892138
+        .long	1205077106
+        .long	1072052753
+        .long	2329101392
+        .long	3218055718
+        .long	31064032
+        .long	1067390210
+        .long	1106783211
+        .long	1071186310
+        .long	571472860
+        .long	1071856508
+        .long	2279775366
+        .long	3217706561
+        .long	3977902324
+        .long	1066976012
+        .long	1438560376
+        .long	1071467394
+        .long	433300635
+        .long	1071678859
+        .long	2662131044
+        .long	3217407122
+        .long	3461865003
+        .long	1066639491
+        .long	3761842524
+        .long	1071687909
+        .long	591758334
+        .long	1071396321
+        .long	1311878841
+        .long	3217153539
+        .long	3007781852
+        .long	1066335723
+        .long	1614590629
+        .long	1071809819
+        .long	1253814918
+        .long	1071117476
+        .long	1728609767
+        .long	3216850667
+        .long	2200561853
+        .long	1065903347
+        .long	3821226689
+        .long	1071921115
+        .long	2022982069
+        .long	1070874479
+        .long	2030156196
+        .long	3216496942
+        .long	874711265
+        .long	1065560045
+        .long	2003227996
+        .long	1072021655
+        .long	2808404217
+        .long	1070664514
+        .long	1372837647
+        .long	3216204595
+        .long	822053276
+        .long	1065224094
+        .long	3767175364
+        .long	1072111660
+        .long	3043371777
+        .long	1070372670
+        .long	1442419211
+        .long	3215945892
+        .long	298752438
+        .long	1064796452
+        .long	1111528881
+        .long	1072191609
+        .long	3513208196
+        .long	1070065467
+        .long	3837735739
+        .long	3215552388
+        .long	3701924119
+        .long	1064460397
+        .long	1230501085
+        .long	1072262142
+        .long	2161267832
+        .long	1069804871
+        .long	4188367704
+        .long	3215231429
+        .long	401190186
+        .long	1064089052
+        .long	3002339892
+        .long	1072323996
+        .long	1480019407
+        .long	1069584807
+        .long	1833655520
+        .long	3214970435
+        .long	2907956919
+        .long	1063676311
+        .long	875346000
+        .long	1072377952
+        .long	3150437403
+        .long	1069251888
+        .long	876861923
+        .long	3214583482
+        .long	1689748747
+        .long	1063353511
+        .long	2795554744
+        .long	1072424793
+        .long	3869705215
+        .long	1068941581
+        .long	1837883894
+        .long	3214240854
+        .long	2762317048
+        .long	1062946513
+        .long	2491972100
+        .long	1072465284
+        .long	4114823501
+        .long	1068682289
+        .long	2146865463
+        .long	3213964103
+        .long	800804261
+        .long	1062552648
+        .long	2634953449
+        .long	1072500149
+        .long	2952556276
+        .long	1068433515
+        .long	1872935290
+        .long	3213596436
+        .long	525130857
+        .long	1062245296
+        .long	3287041404
+        .long	1072542855
+        .long	164674845
+        .long	1067923724
+        .long	3273134342
+        .long	3213089271
+        .long	171708004
+        .long	1061610314
+        .long	3035032320
+        .long	1072586748
+        .long	3976243935
+        .long	1067403539
+        .long	3504708444
+        .long	3212404491
+        .long	3955947885
+        .long	1060882840
+        .long	513098494
+        .long	1072618404
+        .long	416924237
+        .long	1066726877
+        .long	1788945081
+        .long	3211801737
+        .long	1199639353
+        .long	1060166859
+        .long	2284134637
+        .long	1072641010
+        .long	754275327
+        .long	1066136447
+        .long	94803481
+        .long	3211042671
+        .long	3377507017
+        .long	1059354147
+        .long	1467291457
+        .long	1072657015
+        .long	2435597312
+        .long	1065520743
+        .long	2819017772
+        .long	3210358609
+        .long	1988617747
+        .long	1058591581
+        .long	633705514
+        .long	1072668259
+        .long	392269686
+        .long	1064864433
+        .long	2964449929
+        .long	3209729770
+        .long	3963893163
+        .long	1057889872
+        .long	2214892393
+        .long	1072676103
+        .long	2190738271
+        .long	1064315837
+        .long	3773826451
+        .long	3208969045
+        .long	3609404170
+        .long	1057113308
+        .long	3795216963
+        .long	1072681541
+        .long	3959981107
+        .long	1063599490
+        .long	1577139384
+        .long	3208281591
+        .long	1777963469
+        .long	1056319886
+        .long	2768813161
+        .long	1072685290
+        .long	452197850
+        .long	1062981751
+        .long	625862001
+        .long	3207639777
+        .long	1894515286
+        .long	1055580811
+        .long	809336726
+        .long	1072687861
+        .long	325412222
+        .long	1062349073
+        .long	3494772326
+        .long	3206874482
+        .long	3143092609
+        .long	1054887561
+        .long	1391578948
+        .long	1072689615
+        .long	370441451
+        .long	1061660435
+        .long	67458841
+        .long	3206180214
+        .long	1971759196
+        .long	1054066692
+        .long	57274217
+        .long	1072690807
+        .long	293665776
+        .long	1061075750
+        .long	1340185983
+        .long	3205535605
+        .long	2210177191
+        .long	1053294335
+        .long	1110907588
+        .long	1072691613
+        .long	3961986905
+        .long	1060367146
+        .long	3774614905
+        .long	3204763416
+        .long	3590429673
+        .long	1052580827
+        .long	2737507729
+        .long	1072692156
+        .long	370479370
+        .long	1059701790
+        .long	1033751386
+        .long	3204059641
+        .long	1162278823
+        .long	1051830218
+        .long	2341375458
+        .long	1072692521
+        .long	760364123
+        .long	1059103172
+        .long	910883556
+        .long	3203420282
+        .long	401067508
+        .long	1051028170
+        .long	3358303651
+        .long	1072692765
+        .long	3104773993
+        .long	1058369139
+        .long	2043715743
+        .long	3202639413
+        .long	4274377921
+        .long	1050278646
+        .long	3501940353
+        .long	1072692984
+        .long	2710387139
+        .long	1057384557
+        .long	2550611600
+        .long	3201592258
+        .long	2260324605
+        .long	1049158690
+        .long	3160989127
+        .long	1072693133
+        .long	1403521776
+        .long	1056074537
+        .long	760745859
+        .long	3200238663
+        .long	1163121055
+        .long	1047679067
+        .long	3509020169
+        .long	1072693198
+        .long	3352058101
+        .long	1054743188
+        .long	2289323607
+        .long	3198722761
+        .long	918272756
+        .long	1046147840
+        .long	4268817660
+        .long	1072693226
+        .long	1580550645
+        .long	1053325591
+        .long	1736251411
+        .long	3197308470
+        .long	1531106447
+        .long	1044632576
+        .long	0
+        .long	1072693248
+        .long	0
+        .long	0
+        .long	0
+        .long	0
+        .long	0
+        .long	0
+        .long	2147483648
+        .long	2147483648
+        .long	2147483648
+        .long	2147483648
+        .long	2147483648
+        .long	2147483648
+        .long	2147483648
+        .long	2147483648
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .long	2147483647
+        .long	2147483647
+        .long	2147483647
+        .long	2147483647
+        .long	2147483647
+        .long	2147483647
+        .long	2147483647
+        .long	2147483647
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .long	2146959360
+        .long	2146959360
+        .long	2146959360
+        .long	2146959360
+        .long	2146959360
+        .long	2146959360
+        .long	2146959360
+        .long	2146959360
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .long	2130706432
+        .long	2130706432
+        .long	2130706432
+        .long	2130706432
+        .long	2130706432
+        .long	2130706432
+        .long	2130706432
+        .long	2130706432
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .long	1022885888
+        .long	1022885888
+        .long	1022885888
+        .long	1022885888
+        .long	1022885888
+        .long	1022885888
+        .long	1022885888
+        .long	1022885888
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .long	69730304
+        .long	69730304
+        .long	69730304
+        .long	69730304
+        .long	69730304
+        .long	69730304
+        .long	69730304
+        .long	69730304
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .type	__svml_stanh_data_internal,@object
+        .size	__svml_stanh_data_internal,6016
+        .align 4
+
+__stanh_la__imlsTanhTab:
+        .long	1065353216
+        .long	3212836864
+        .type	__stanh_la__imlsTanhTab,@object
+        .size	__stanh_la__imlsTanhTab,8
diff --git a/sysdeps/x86_64/fpu/svml_d_tanh2_core.S b/sysdeps/x86_64/fpu/svml_d_tanh2_core.S
new file mode 100644
index 0000000000..c703131777
--- /dev/null
+++ b/sysdeps/x86_64/fpu/svml_d_tanh2_core.S
@@ -0,0 +1,29 @@ 
+/* Function tanh vectorized with SSE2.
+   Copyright (C) 2021 Free Software Foundation, Inc.
+   This file is part of the GNU C Library.
+
+   The GNU C Library is free software; you can redistribute it and/or
+   modify it under the terms of the GNU Lesser General Public
+   License as published by the Free Software Foundation; either
+   version 2.1 of the License, or (at your option) any later version.
+
+   The GNU C Library is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+   Lesser General Public License for more details.
+
+   You should have received a copy of the GNU Lesser General Public
+   License along with the GNU C Library; if not, see
+   <https://www.gnu.org/licenses/>.  */
+
+#include <sysdep.h>
+#include "svml_d_wrapper_impl.h"
+
+	.text
+ENTRY (_ZGVbN2v_tanh)
+WRAPPER_IMPL_SSE2 tanh
+END (_ZGVbN2v_tanh)
+
+#ifndef USE_MULTIARCH
+ libmvec_hidden_def (_ZGVbN2v_tanh)
+#endif
diff --git a/sysdeps/x86_64/fpu/svml_d_tanh4_core.S b/sysdeps/x86_64/fpu/svml_d_tanh4_core.S
new file mode 100644
index 0000000000..fb293f4dba
--- /dev/null
+++ b/sysdeps/x86_64/fpu/svml_d_tanh4_core.S
@@ -0,0 +1,29 @@ 
+/* Function tanh vectorized with AVX2, wrapper version.
+   Copyright (C) 2021 Free Software Foundation, Inc.
+   This file is part of the GNU C Library.
+
+   The GNU C Library is free software; you can redistribute it and/or
+   modify it under the terms of the GNU Lesser General Public
+   License as published by the Free Software Foundation; either
+   version 2.1 of the License, or (at your option) any later version.
+
+   The GNU C Library is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+   Lesser General Public License for more details.
+
+   You should have received a copy of the GNU Lesser General Public
+   License along with the GNU C Library; if not, see
+   <https://www.gnu.org/licenses/>.  */
+
+#include <sysdep.h>
+#include "svml_d_wrapper_impl.h"
+
+	.text
+ENTRY (_ZGVdN4v_tanh)
+WRAPPER_IMPL_AVX _ZGVbN2v_tanh
+END (_ZGVdN4v_tanh)
+
+#ifndef USE_MULTIARCH
+ libmvec_hidden_def (_ZGVdN4v_tanh)
+#endif
diff --git a/sysdeps/x86_64/fpu/svml_d_tanh4_core_avx.S b/sysdeps/x86_64/fpu/svml_d_tanh4_core_avx.S
new file mode 100644
index 0000000000..5385a2c27c
--- /dev/null
+++ b/sysdeps/x86_64/fpu/svml_d_tanh4_core_avx.S
@@ -0,0 +1,25 @@ 
+/* Function tanh vectorized in AVX ISA as wrapper to SSE4 ISA version.
+   Copyright (C) 2021 Free Software Foundation, Inc.
+   This file is part of the GNU C Library.
+
+   The GNU C Library is free software; you can redistribute it and/or
+   modify it under the terms of the GNU Lesser General Public
+   License as published by the Free Software Foundation; either
+   version 2.1 of the License, or (at your option) any later version.
+
+   The GNU C Library is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+   Lesser General Public License for more details.
+
+   You should have received a copy of the GNU Lesser General Public
+   License along with the GNU C Library; if not, see
+   <https://www.gnu.org/licenses/>.  */
+
+#include <sysdep.h>
+#include "svml_d_wrapper_impl.h"
+
+	.text
+ENTRY (_ZGVcN4v_tanh)
+WRAPPER_IMPL_AVX _ZGVbN2v_tanh
+END (_ZGVcN4v_tanh)
diff --git a/sysdeps/x86_64/fpu/svml_d_tanh8_core.S b/sysdeps/x86_64/fpu/svml_d_tanh8_core.S
new file mode 100644
index 0000000000..9dafa7bb9a
--- /dev/null
+++ b/sysdeps/x86_64/fpu/svml_d_tanh8_core.S
@@ -0,0 +1,25 @@ 
+/* Function tanh vectorized with AVX-512, wrapper to AVX2.
+   Copyright (C) 2021 Free Software Foundation, Inc.
+   This file is part of the GNU C Library.
+
+   The GNU C Library is free software; you can redistribute it and/or
+   modify it under the terms of the GNU Lesser General Public
+   License as published by the Free Software Foundation; either
+   version 2.1 of the License, or (at your option) any later version.
+
+   The GNU C Library is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+   Lesser General Public License for more details.
+
+   You should have received a copy of the GNU Lesser General Public
+   License along with the GNU C Library; if not, see
+   <https://www.gnu.org/licenses/>.  */
+
+#include <sysdep.h>
+#include "svml_d_wrapper_impl.h"
+
+	.text
+ENTRY (_ZGVeN8v_tanh)
+WRAPPER_IMPL_AVX512 _ZGVdN4v_tanh
+END (_ZGVeN8v_tanh)
diff --git a/sysdeps/x86_64/fpu/svml_s_tanhf16_core.S b/sysdeps/x86_64/fpu/svml_s_tanhf16_core.S
new file mode 100644
index 0000000000..19d51365e8
--- /dev/null
+++ b/sysdeps/x86_64/fpu/svml_s_tanhf16_core.S
@@ -0,0 +1,25 @@ 
+/* Function tanhf vectorized with AVX-512. Wrapper to AVX2 version.
+   Copyright (C) 2021 Free Software Foundation, Inc.
+   This file is part of the GNU C Library.
+
+   The GNU C Library is free software; you can redistribute it and/or
+   modify it under the terms of the GNU Lesser General Public
+   License as published by the Free Software Foundation; either
+   version 2.1 of the License, or (at your option) any later version.
+
+   The GNU C Library is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+   Lesser General Public License for more details.
+
+   You should have received a copy of the GNU Lesser General Public
+   License along with the GNU C Library; if not, see
+   <https://www.gnu.org/licenses/>.  */
+
+#include <sysdep.h>
+#include "svml_s_wrapper_impl.h"
+
+	.text
+ENTRY (_ZGVeN16v_tanhf)
+WRAPPER_IMPL_AVX512 _ZGVdN8v_tanhf
+END (_ZGVeN16v_tanhf)
diff --git a/sysdeps/x86_64/fpu/svml_s_tanhf4_core.S b/sysdeps/x86_64/fpu/svml_s_tanhf4_core.S
new file mode 100644
index 0000000000..6b98950f84
--- /dev/null
+++ b/sysdeps/x86_64/fpu/svml_s_tanhf4_core.S
@@ -0,0 +1,29 @@ 
+/* Function tanhf vectorized with SSE2, wrapper version.
+   Copyright (C) 2021 Free Software Foundation, Inc.
+   This file is part of the GNU C Library.
+
+   The GNU C Library is free software; you can redistribute it and/or
+   modify it under the terms of the GNU Lesser General Public
+   License as published by the Free Software Foundation; either
+   version 2.1 of the License, or (at your option) any later version.
+
+   The GNU C Library is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+   Lesser General Public License for more details.
+
+   You should have received a copy of the GNU Lesser General Public
+   License along with the GNU C Library; if not, see
+   <https://www.gnu.org/licenses/>.  */
+
+#include <sysdep.h>
+#include "svml_s_wrapper_impl.h"
+
+	.text
+ENTRY (_ZGVbN4v_tanhf)
+WRAPPER_IMPL_SSE2 tanhf
+END (_ZGVbN4v_tanhf)
+
+#ifndef USE_MULTIARCH
+ libmvec_hidden_def (_ZGVbN4v_tanhf)
+#endif
diff --git a/sysdeps/x86_64/fpu/svml_s_tanhf8_core.S b/sysdeps/x86_64/fpu/svml_s_tanhf8_core.S
new file mode 100644
index 0000000000..3ada061ae0
--- /dev/null
+++ b/sysdeps/x86_64/fpu/svml_s_tanhf8_core.S
@@ -0,0 +1,29 @@ 
+/* Function tanhf vectorized with AVX2, wrapper version.
+   Copyright (C) 2021 Free Software Foundation, Inc.
+   This file is part of the GNU C Library.
+
+   The GNU C Library is free software; you can redistribute it and/or
+   modify it under the terms of the GNU Lesser General Public
+   License as published by the Free Software Foundation; either
+   version 2.1 of the License, or (at your option) any later version.
+
+   The GNU C Library is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+   Lesser General Public License for more details.
+
+   You should have received a copy of the GNU Lesser General Public
+   License along with the GNU C Library; if not, see
+   <https://www.gnu.org/licenses/>.  */
+
+#include <sysdep.h>
+#include "svml_s_wrapper_impl.h"
+
+	.text
+ENTRY (_ZGVdN8v_tanhf)
+WRAPPER_IMPL_AVX _ZGVbN4v_tanhf
+END (_ZGVdN8v_tanhf)
+
+#ifndef USE_MULTIARCH
+ libmvec_hidden_def (_ZGVdN8v_tanhf)
+#endif
diff --git a/sysdeps/x86_64/fpu/svml_s_tanhf8_core_avx.S b/sysdeps/x86_64/fpu/svml_s_tanhf8_core_avx.S
new file mode 100644
index 0000000000..255d45952d
--- /dev/null
+++ b/sysdeps/x86_64/fpu/svml_s_tanhf8_core_avx.S
@@ -0,0 +1,25 @@ 
+/* Function tanhf vectorized in AVX ISA as wrapper to SSE4 ISA version.
+   Copyright (C) 2021 Free Software Foundation, Inc.
+   This file is part of the GNU C Library.
+
+   The GNU C Library is free software; you can redistribute it and/or
+   modify it under the terms of the GNU Lesser General Public
+   License as published by the Free Software Foundation; either
+   version 2.1 of the License, or (at your option) any later version.
+
+   The GNU C Library is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+   Lesser General Public License for more details.
+
+   You should have received a copy of the GNU Lesser General Public
+   License along with the GNU C Library; if not, see
+   <https://www.gnu.org/licenses/>.  */
+
+#include <sysdep.h>
+#include "svml_s_wrapper_impl.h"
+
+        .text
+ENTRY (_ZGVcN8v_tanhf)
+WRAPPER_IMPL_AVX _ZGVbN4v_tanhf
+END (_ZGVcN8v_tanhf)
diff --git a/sysdeps/x86_64/fpu/test-double-libmvec-tanh-avx.c b/sysdeps/x86_64/fpu/test-double-libmvec-tanh-avx.c
new file mode 100644
index 0000000000..a456c574e2
--- /dev/null
+++ b/sysdeps/x86_64/fpu/test-double-libmvec-tanh-avx.c
@@ -0,0 +1 @@ 
+#include "test-double-libmvec-tanh.c"
diff --git a/sysdeps/x86_64/fpu/test-double-libmvec-tanh-avx2.c b/sysdeps/x86_64/fpu/test-double-libmvec-tanh-avx2.c
new file mode 100644
index 0000000000..a456c574e2
--- /dev/null
+++ b/sysdeps/x86_64/fpu/test-double-libmvec-tanh-avx2.c
@@ -0,0 +1 @@ 
+#include "test-double-libmvec-tanh.c"
diff --git a/sysdeps/x86_64/fpu/test-double-libmvec-tanh-avx512f.c b/sysdeps/x86_64/fpu/test-double-libmvec-tanh-avx512f.c
new file mode 100644
index 0000000000..a456c574e2
--- /dev/null
+++ b/sysdeps/x86_64/fpu/test-double-libmvec-tanh-avx512f.c
@@ -0,0 +1 @@ 
+#include "test-double-libmvec-tanh.c"
diff --git a/sysdeps/x86_64/fpu/test-double-libmvec-tanh.c b/sysdeps/x86_64/fpu/test-double-libmvec-tanh.c
new file mode 100644
index 0000000000..4cb6a169d8
--- /dev/null
+++ b/sysdeps/x86_64/fpu/test-double-libmvec-tanh.c
@@ -0,0 +1,3 @@ 
+#define LIBMVEC_TYPE double
+#define LIBMVEC_FUNC tanh
+#include "test-vector-abi-arg1.h"
diff --git a/sysdeps/x86_64/fpu/test-double-vlen2-wrappers.c b/sysdeps/x86_64/fpu/test-double-vlen2-wrappers.c
index d6b866263f..5c92c06aea 100644
--- a/sysdeps/x86_64/fpu/test-double-vlen2-wrappers.c
+++ b/sysdeps/x86_64/fpu/test-double-vlen2-wrappers.c
@@ -47,6 +47,7 @@  VECTOR_WRAPPER (WRAPPER_NAME (log1p), _ZGVbN2v_log1p)
 VECTOR_WRAPPER (WRAPPER_NAME (log2), _ZGVbN2v_log2)
 VECTOR_WRAPPER (WRAPPER_NAME (sinh), _ZGVbN2v_sinh)
 VECTOR_WRAPPER (WRAPPER_NAME (tan), _ZGVbN2v_tan)
+VECTOR_WRAPPER (WRAPPER_NAME (tanh), _ZGVbN2v_tanh)
 
 #define VEC_INT_TYPE __m128i
 
diff --git a/sysdeps/x86_64/fpu/test-double-vlen4-avx2-wrappers.c b/sysdeps/x86_64/fpu/test-double-vlen4-avx2-wrappers.c
index 88e7f8e375..85f52cf5b1 100644
--- a/sysdeps/x86_64/fpu/test-double-vlen4-avx2-wrappers.c
+++ b/sysdeps/x86_64/fpu/test-double-vlen4-avx2-wrappers.c
@@ -50,6 +50,7 @@  VECTOR_WRAPPER (WRAPPER_NAME (log1p), _ZGVdN4v_log1p)
 VECTOR_WRAPPER (WRAPPER_NAME (log2), _ZGVdN4v_log2)
 VECTOR_WRAPPER (WRAPPER_NAME (sinh), _ZGVdN4v_sinh)
 VECTOR_WRAPPER (WRAPPER_NAME (tan), _ZGVdN4v_tan)
+VECTOR_WRAPPER (WRAPPER_NAME (tanh), _ZGVdN4v_tanh)
 
 #ifndef __ILP32__
 # define VEC_INT_TYPE __m256i
diff --git a/sysdeps/x86_64/fpu/test-double-vlen4-wrappers.c b/sysdeps/x86_64/fpu/test-double-vlen4-wrappers.c
index 79f6275ceb..971742e77d 100644
--- a/sysdeps/x86_64/fpu/test-double-vlen4-wrappers.c
+++ b/sysdeps/x86_64/fpu/test-double-vlen4-wrappers.c
@@ -47,6 +47,7 @@  VECTOR_WRAPPER (WRAPPER_NAME (log1p), _ZGVcN4v_log1p)
 VECTOR_WRAPPER (WRAPPER_NAME (log2), _ZGVcN4v_log2)
 VECTOR_WRAPPER (WRAPPER_NAME (sinh), _ZGVcN4v_sinh)
 VECTOR_WRAPPER (WRAPPER_NAME (tan), _ZGVcN4v_tan)
+VECTOR_WRAPPER (WRAPPER_NAME (tanh), _ZGVcN4v_tanh)
 
 #define VEC_INT_TYPE __m128i
 
diff --git a/sysdeps/x86_64/fpu/test-double-vlen8-wrappers.c b/sysdeps/x86_64/fpu/test-double-vlen8-wrappers.c
index 80025ee612..fdfc24bc85 100644
--- a/sysdeps/x86_64/fpu/test-double-vlen8-wrappers.c
+++ b/sysdeps/x86_64/fpu/test-double-vlen8-wrappers.c
@@ -47,6 +47,7 @@  VECTOR_WRAPPER (WRAPPER_NAME (log1p), _ZGVeN8v_log1p)
 VECTOR_WRAPPER (WRAPPER_NAME (log2), _ZGVeN8v_log2)
 VECTOR_WRAPPER (WRAPPER_NAME (sinh), _ZGVeN8v_sinh)
 VECTOR_WRAPPER (WRAPPER_NAME (tan), _ZGVeN8v_tan)
+VECTOR_WRAPPER (WRAPPER_NAME (tanh), _ZGVeN8v_tanh)
 
 #ifndef __ILP32__
 # define VEC_INT_TYPE __m512i
diff --git a/sysdeps/x86_64/fpu/test-float-libmvec-tanhf-avx.c b/sysdeps/x86_64/fpu/test-float-libmvec-tanhf-avx.c
new file mode 100644
index 0000000000..254f9201aa
--- /dev/null
+++ b/sysdeps/x86_64/fpu/test-float-libmvec-tanhf-avx.c
@@ -0,0 +1 @@ 
+#include "test-float-libmvec-tanhf.c"
diff --git a/sysdeps/x86_64/fpu/test-float-libmvec-tanhf-avx2.c b/sysdeps/x86_64/fpu/test-float-libmvec-tanhf-avx2.c
new file mode 100644
index 0000000000..254f9201aa
--- /dev/null
+++ b/sysdeps/x86_64/fpu/test-float-libmvec-tanhf-avx2.c
@@ -0,0 +1 @@ 
+#include "test-float-libmvec-tanhf.c"
diff --git a/sysdeps/x86_64/fpu/test-float-libmvec-tanhf-avx512f.c b/sysdeps/x86_64/fpu/test-float-libmvec-tanhf-avx512f.c
new file mode 100644
index 0000000000..254f9201aa
--- /dev/null
+++ b/sysdeps/x86_64/fpu/test-float-libmvec-tanhf-avx512f.c
@@ -0,0 +1 @@ 
+#include "test-float-libmvec-tanhf.c"
diff --git a/sysdeps/x86_64/fpu/test-float-libmvec-tanhf.c b/sysdeps/x86_64/fpu/test-float-libmvec-tanhf.c
new file mode 100644
index 0000000000..9a61ee8f9c
--- /dev/null
+++ b/sysdeps/x86_64/fpu/test-float-libmvec-tanhf.c
@@ -0,0 +1,3 @@ 
+#define LIBMVEC_TYPE float
+#define LIBMVEC_FUNC tanhf
+#include "test-vector-abi-arg1.h"
diff --git a/sysdeps/x86_64/fpu/test-float-vlen16-wrappers.c b/sysdeps/x86_64/fpu/test-float-vlen16-wrappers.c
index f8f0a3858a..b1a6360b1a 100644
--- a/sysdeps/x86_64/fpu/test-float-vlen16-wrappers.c
+++ b/sysdeps/x86_64/fpu/test-float-vlen16-wrappers.c
@@ -47,6 +47,7 @@  VECTOR_WRAPPER (WRAPPER_NAME (log1pf), _ZGVeN16v_log1pf)
 VECTOR_WRAPPER (WRAPPER_NAME (log2f), _ZGVeN16v_log2f)
 VECTOR_WRAPPER (WRAPPER_NAME (sinhf), _ZGVeN16v_sinhf)
 VECTOR_WRAPPER (WRAPPER_NAME (tanf), _ZGVeN16v_tanf)
+VECTOR_WRAPPER (WRAPPER_NAME (tanhf), _ZGVeN16v_tanhf)
 
 #define VEC_INT_TYPE __m512i
 
diff --git a/sysdeps/x86_64/fpu/test-float-vlen4-wrappers.c b/sysdeps/x86_64/fpu/test-float-vlen4-wrappers.c
index 9778549534..8a29d4e630 100644
--- a/sysdeps/x86_64/fpu/test-float-vlen4-wrappers.c
+++ b/sysdeps/x86_64/fpu/test-float-vlen4-wrappers.c
@@ -47,6 +47,7 @@  VECTOR_WRAPPER (WRAPPER_NAME (log1pf), _ZGVbN4v_log1pf)
 VECTOR_WRAPPER (WRAPPER_NAME (log2f), _ZGVbN4v_log2f)
 VECTOR_WRAPPER (WRAPPER_NAME (sinhf), _ZGVbN4v_sinhf)
 VECTOR_WRAPPER (WRAPPER_NAME (tanf), _ZGVbN4v_tanf)
+VECTOR_WRAPPER (WRAPPER_NAME (tanhf), _ZGVbN4v_tanhf)
 
 #define VEC_INT_TYPE __m128i
 
diff --git a/sysdeps/x86_64/fpu/test-float-vlen8-avx2-wrappers.c b/sysdeps/x86_64/fpu/test-float-vlen8-avx2-wrappers.c
index f00ba85eaa..f3337c4656 100644
--- a/sysdeps/x86_64/fpu/test-float-vlen8-avx2-wrappers.c
+++ b/sysdeps/x86_64/fpu/test-float-vlen8-avx2-wrappers.c
@@ -50,6 +50,7 @@  VECTOR_WRAPPER (WRAPPER_NAME (log1pf), _ZGVdN8v_log1pf)
 VECTOR_WRAPPER (WRAPPER_NAME (log2f), _ZGVdN8v_log2f)
 VECTOR_WRAPPER (WRAPPER_NAME (sinhf), _ZGVdN8v_sinhf)
 VECTOR_WRAPPER (WRAPPER_NAME (tanf), _ZGVdN8v_tanf)
+VECTOR_WRAPPER (WRAPPER_NAME (tanhf), _ZGVdN8v_tanhf)
 
 /* Redefinition of wrapper to be compatible with _ZGVdN8vvv_sincosf.  */
 #undef VECTOR_WRAPPER_fFF
diff --git a/sysdeps/x86_64/fpu/test-float-vlen8-wrappers.c b/sysdeps/x86_64/fpu/test-float-vlen8-wrappers.c
index 45bcf55340..3e8b6aa331 100644
--- a/sysdeps/x86_64/fpu/test-float-vlen8-wrappers.c
+++ b/sysdeps/x86_64/fpu/test-float-vlen8-wrappers.c
@@ -47,6 +47,7 @@  VECTOR_WRAPPER (WRAPPER_NAME (log1pf), _ZGVcN8v_log1pf)
 VECTOR_WRAPPER (WRAPPER_NAME (log2f), _ZGVcN8v_log2f)
 VECTOR_WRAPPER (WRAPPER_NAME (sinhf), _ZGVcN8v_sinhf)
 VECTOR_WRAPPER (WRAPPER_NAME (tanf), _ZGVcN8v_tanf)
+VECTOR_WRAPPER (WRAPPER_NAME (tanhf), _ZGVcN8v_tanhf)
 
 #define VEC_INT_TYPE __m128i