diff mbox series

[13/42] x86-64: Add vector atanh/atanhf implementation to libmvec

Message ID 20211124193807.2093208-14-skpgkp2@gmail.com
State New
Headers show
Series x86-64: Add vector math functions to libmvec | expand

Commit Message

Sunil Pandey Nov. 24, 2021, 7:37 p.m. UTC
Implement vectorized atanh/atanhf containing SSE, AVX, AVX2 and
AVX512 versions for libmvec as per vector ABI.  It also contains
accuracy and ABI tests for vector atanh/atanhf 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 +
 sysdeps/x86_64/fpu/Makeconfig                 |    1 +
 sysdeps/x86_64/fpu/Versions                   |    2 +
 sysdeps/x86_64/fpu/libm-test-ulps             |   20 +
 .../fpu/multiarch/svml_d_atanh2_core-sse2.S   |   20 +
 .../x86_64/fpu/multiarch/svml_d_atanh2_core.c |   27 +
 .../fpu/multiarch/svml_d_atanh2_core_sse4.S   | 5501 +++++++++++++++++
 .../fpu/multiarch/svml_d_atanh4_core-sse.S    |   20 +
 .../x86_64/fpu/multiarch/svml_d_atanh4_core.c |   27 +
 .../fpu/multiarch/svml_d_atanh4_core_avx2.S   | 5080 +++++++++++++++
 .../fpu/multiarch/svml_d_atanh8_core-avx2.S   |   20 +
 .../x86_64/fpu/multiarch/svml_d_atanh8_core.c |   27 +
 .../fpu/multiarch/svml_d_atanh8_core_avx512.S |  632 ++
 .../fpu/multiarch/svml_s_atanhf16_core-avx2.S |   20 +
 .../fpu/multiarch/svml_s_atanhf16_core.c      |   28 +
 .../multiarch/svml_s_atanhf16_core_avx512.S   |  531 ++
 .../fpu/multiarch/svml_s_atanhf4_core-sse2.S  |   20 +
 .../fpu/multiarch/svml_s_atanhf4_core.c       |   28 +
 .../fpu/multiarch/svml_s_atanhf4_core_sse4.S  | 2536 ++++++++
 .../fpu/multiarch/svml_s_atanhf8_core-sse.S   |   20 +
 .../fpu/multiarch/svml_s_atanhf8_core.c       |   28 +
 .../fpu/multiarch/svml_s_atanhf8_core_avx2.S  | 2131 +++++++
 sysdeps/x86_64/fpu/svml_d_atanh2_core.S       |   29 +
 sysdeps/x86_64/fpu/svml_d_atanh4_core.S       |   29 +
 sysdeps/x86_64/fpu/svml_d_atanh4_core_avx.S   |   25 +
 sysdeps/x86_64/fpu/svml_d_atanh8_core.S       |   25 +
 sysdeps/x86_64/fpu/svml_s_atanhf16_core.S     |   25 +
 sysdeps/x86_64/fpu/svml_s_atanhf4_core.S      |   29 +
 sysdeps/x86_64/fpu/svml_s_atanhf8_core.S      |   29 +
 sysdeps/x86_64/fpu/svml_s_atanhf8_core_avx.S  |   25 +
 .../fpu/test-double-libmvec-atanh-avx.c       |    1 +
 .../fpu/test-double-libmvec-atanh-avx2.c      |    1 +
 .../fpu/test-double-libmvec-atanh-avx512f.c   |    1 +
 .../x86_64/fpu/test-double-libmvec-atanh.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 +
 .../fpu/test-float-libmvec-atanhf-avx.c       |    1 +
 .../fpu/test-float-libmvec-atanhf-avx2.c      |    1 +
 .../fpu/test-float-libmvec-atanhf-avx512f.c   |    1 +
 .../x86_64/fpu/test-float-libmvec-atanhf.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 +
 49 files changed, 16979 insertions(+), 1 deletion(-)
 create mode 100644 sysdeps/x86_64/fpu/multiarch/svml_d_atanh2_core-sse2.S
 create mode 100644 sysdeps/x86_64/fpu/multiarch/svml_d_atanh2_core.c
 create mode 100644 sysdeps/x86_64/fpu/multiarch/svml_d_atanh2_core_sse4.S
 create mode 100644 sysdeps/x86_64/fpu/multiarch/svml_d_atanh4_core-sse.S
 create mode 100644 sysdeps/x86_64/fpu/multiarch/svml_d_atanh4_core.c
 create mode 100644 sysdeps/x86_64/fpu/multiarch/svml_d_atanh4_core_avx2.S
 create mode 100644 sysdeps/x86_64/fpu/multiarch/svml_d_atanh8_core-avx2.S
 create mode 100644 sysdeps/x86_64/fpu/multiarch/svml_d_atanh8_core.c
 create mode 100644 sysdeps/x86_64/fpu/multiarch/svml_d_atanh8_core_avx512.S
 create mode 100644 sysdeps/x86_64/fpu/multiarch/svml_s_atanhf16_core-avx2.S
 create mode 100644 sysdeps/x86_64/fpu/multiarch/svml_s_atanhf16_core.c
 create mode 100644 sysdeps/x86_64/fpu/multiarch/svml_s_atanhf16_core_avx512.S
 create mode 100644 sysdeps/x86_64/fpu/multiarch/svml_s_atanhf4_core-sse2.S
 create mode 100644 sysdeps/x86_64/fpu/multiarch/svml_s_atanhf4_core.c
 create mode 100644 sysdeps/x86_64/fpu/multiarch/svml_s_atanhf4_core_sse4.S
 create mode 100644 sysdeps/x86_64/fpu/multiarch/svml_s_atanhf8_core-sse.S
 create mode 100644 sysdeps/x86_64/fpu/multiarch/svml_s_atanhf8_core.c
 create mode 100644 sysdeps/x86_64/fpu/multiarch/svml_s_atanhf8_core_avx2.S
 create mode 100644 sysdeps/x86_64/fpu/svml_d_atanh2_core.S
 create mode 100644 sysdeps/x86_64/fpu/svml_d_atanh4_core.S
 create mode 100644 sysdeps/x86_64/fpu/svml_d_atanh4_core_avx.S
 create mode 100644 sysdeps/x86_64/fpu/svml_d_atanh8_core.S
 create mode 100644 sysdeps/x86_64/fpu/svml_s_atanhf16_core.S
 create mode 100644 sysdeps/x86_64/fpu/svml_s_atanhf4_core.S
 create mode 100644 sysdeps/x86_64/fpu/svml_s_atanhf8_core.S
 create mode 100644 sysdeps/x86_64/fpu/svml_s_atanhf8_core_avx.S
 create mode 100644 sysdeps/x86_64/fpu/test-double-libmvec-atanh-avx.c
 create mode 100644 sysdeps/x86_64/fpu/test-double-libmvec-atanh-avx2.c
 create mode 100644 sysdeps/x86_64/fpu/test-double-libmvec-atanh-avx512f.c
 create mode 100644 sysdeps/x86_64/fpu/test-double-libmvec-atanh.c
 create mode 100644 sysdeps/x86_64/fpu/test-float-libmvec-atanhf-avx.c
 create mode 100644 sysdeps/x86_64/fpu/test-float-libmvec-atanhf-avx2.c
 create mode 100644 sysdeps/x86_64/fpu/test-float-libmvec-atanhf-avx512f.c
 create mode 100644 sysdeps/x86_64/fpu/test-float-libmvec-atanhf.c
diff mbox series

Patch

diff --git a/bits/libm-simd-decl-stubs.h b/bits/libm-simd-decl-stubs.h
index bd8019839c..591f0850ca 100644
--- a/bits/libm-simd-decl-stubs.h
+++ b/bits/libm-simd-decl-stubs.h
@@ -164,4 +164,15 @@ 
 #define __DECL_SIMD_atan2f32x
 #define __DECL_SIMD_atan2f64x
 #define __DECL_SIMD_atan2f128x
+
+#define __DECL_SIMD_atanh
+#define __DECL_SIMD_atanhf
+#define __DECL_SIMD_atanhl
+#define __DECL_SIMD_atanhf16
+#define __DECL_SIMD_atanhf32
+#define __DECL_SIMD_atanhf64
+#define __DECL_SIMD_atanhf128
+#define __DECL_SIMD_atanhf32x
+#define __DECL_SIMD_atanhf64x
+#define __DECL_SIMD_atanhf128x
 #endif
diff --git a/math/bits/mathcalls.h b/math/bits/mathcalls.h
index b1b11b74ee..be18431fd4 100644
--- a/math/bits/mathcalls.h
+++ b/math/bits/mathcalls.h
@@ -86,7 +86,7 @@  __MATHCALL_VEC (acosh,, (_Mdouble_ __x));
 /* Hyperbolic arc sine of X.  */
 __MATHCALL_VEC (asinh,, (_Mdouble_ __x));
 /* Hyperbolic arc tangent of X.  */
-__MATHCALL (atanh,, (_Mdouble_ __x));
+__MATHCALL_VEC (atanh,, (_Mdouble_ __x));
 #endif
 
 /* Exponential and logarithmic functions.  */
diff --git a/sysdeps/unix/sysv/linux/x86_64/libmvec.abilist b/sysdeps/unix/sysv/linux/x86_64/libmvec.abilist
index 9b47e83aec..54489301ac 100644
--- a/sysdeps/unix/sysv/linux/x86_64/libmvec.abilist
+++ b/sysdeps/unix/sysv/linux/x86_64/libmvec.abilist
@@ -51,46 +51,54 @@  GLIBC_2.35 _ZGVbN2v_acosh F
 GLIBC_2.35 _ZGVbN2v_asin F
 GLIBC_2.35 _ZGVbN2v_asinh F
 GLIBC_2.35 _ZGVbN2v_atan F
+GLIBC_2.35 _ZGVbN2v_atanh F
 GLIBC_2.35 _ZGVbN2vv_atan2 F
 GLIBC_2.35 _ZGVbN4v_acosf F
 GLIBC_2.35 _ZGVbN4v_acoshf F
 GLIBC_2.35 _ZGVbN4v_asinf F
 GLIBC_2.35 _ZGVbN4v_asinhf F
 GLIBC_2.35 _ZGVbN4v_atanf F
+GLIBC_2.35 _ZGVbN4v_atanhf F
 GLIBC_2.35 _ZGVbN4vv_atan2f F
 GLIBC_2.35 _ZGVcN4v_acos F
 GLIBC_2.35 _ZGVcN4v_acosh F
 GLIBC_2.35 _ZGVcN4v_asin F
 GLIBC_2.35 _ZGVcN4v_asinh F
 GLIBC_2.35 _ZGVcN4v_atan F
+GLIBC_2.35 _ZGVcN4v_atanh F
 GLIBC_2.35 _ZGVcN4vv_atan2 F
 GLIBC_2.35 _ZGVcN8v_acosf F
 GLIBC_2.35 _ZGVcN8v_acoshf F
 GLIBC_2.35 _ZGVcN8v_asinf F
 GLIBC_2.35 _ZGVcN8v_asinhf F
 GLIBC_2.35 _ZGVcN8v_atanf F
+GLIBC_2.35 _ZGVcN8v_atanhf F
 GLIBC_2.35 _ZGVcN8vv_atan2f F
 GLIBC_2.35 _ZGVdN4v_acos F
 GLIBC_2.35 _ZGVdN4v_acosh F
 GLIBC_2.35 _ZGVdN4v_asin F
 GLIBC_2.35 _ZGVdN4v_asinh F
 GLIBC_2.35 _ZGVdN4v_atan F
+GLIBC_2.35 _ZGVdN4v_atanh F
 GLIBC_2.35 _ZGVdN4vv_atan2 F
 GLIBC_2.35 _ZGVdN8v_acosf F
 GLIBC_2.35 _ZGVdN8v_acoshf F
 GLIBC_2.35 _ZGVdN8v_asinf F
 GLIBC_2.35 _ZGVdN8v_asinhf F
 GLIBC_2.35 _ZGVdN8v_atanf F
+GLIBC_2.35 _ZGVdN8v_atanhf F
 GLIBC_2.35 _ZGVdN8vv_atan2f F
 GLIBC_2.35 _ZGVeN16v_acosf F
 GLIBC_2.35 _ZGVeN16v_acoshf F
 GLIBC_2.35 _ZGVeN16v_asinf F
 GLIBC_2.35 _ZGVeN16v_asinhf F
 GLIBC_2.35 _ZGVeN16v_atanf F
+GLIBC_2.35 _ZGVeN16v_atanhf F
 GLIBC_2.35 _ZGVeN16vv_atan2f F
 GLIBC_2.35 _ZGVeN8v_acos F
 GLIBC_2.35 _ZGVeN8v_acosh F
 GLIBC_2.35 _ZGVeN8v_asin F
 GLIBC_2.35 _ZGVeN8v_asinh F
 GLIBC_2.35 _ZGVeN8v_atan F
+GLIBC_2.35 _ZGVeN8v_atanh F
 GLIBC_2.35 _ZGVeN8vv_atan2 F
diff --git a/sysdeps/x86/fpu/bits/math-vector.h b/sysdeps/x86/fpu/bits/math-vector.h
index 67a326566c..753b6ff9d1 100644
--- a/sysdeps/x86/fpu/bits/math-vector.h
+++ b/sysdeps/x86/fpu/bits/math-vector.h
@@ -82,6 +82,10 @@ 
 #  define __DECL_SIMD_atan2 __DECL_SIMD_x86_64
 #  undef __DECL_SIMD_atan2f
 #  define __DECL_SIMD_atan2f __DECL_SIMD_x86_64
+#  undef __DECL_SIMD_atanh
+#  define __DECL_SIMD_atanh __DECL_SIMD_x86_64
+#  undef __DECL_SIMD_atanhf
+#  define __DECL_SIMD_atanhf __DECL_SIMD_x86_64
 
 # endif
 #endif
diff --git a/sysdeps/x86_64/fpu/Makeconfig b/sysdeps/x86_64/fpu/Makeconfig
index 4f33886dd2..dea6989d9a 100644
--- a/sysdeps/x86_64/fpu/Makeconfig
+++ b/sysdeps/x86_64/fpu/Makeconfig
@@ -28,6 +28,7 @@  libmvec-funcs = \
   asinh \
   atan \
   atan2 \
+  atanh \
   cos \
   exp \
   log \
diff --git a/sysdeps/x86_64/fpu/Versions b/sysdeps/x86_64/fpu/Versions
index 57de41e864..f80889e3b5 100644
--- a/sysdeps/x86_64/fpu/Versions
+++ b/sysdeps/x86_64/fpu/Versions
@@ -19,12 +19,14 @@  libmvec {
     _ZGVbN2v_asin; _ZGVcN4v_asin; _ZGVdN4v_asin; _ZGVeN8v_asin;
     _ZGVbN2v_asinh; _ZGVcN4v_asinh; _ZGVdN4v_asinh; _ZGVeN8v_asinh;
     _ZGVbN2v_atan; _ZGVcN4v_atan; _ZGVdN4v_atan; _ZGVeN8v_atan;
+    _ZGVbN2v_atanh; _ZGVcN4v_atanh; _ZGVdN4v_atanh; _ZGVeN8v_atanh;
     _ZGVbN2vv_atan2; _ZGVcN4vv_atan2; _ZGVdN4vv_atan2; _ZGVeN8vv_atan2;
     _ZGVbN4v_acosf; _ZGVcN8v_acosf; _ZGVdN8v_acosf; _ZGVeN16v_acosf;
     _ZGVbN4v_acoshf; _ZGVcN8v_acoshf; _ZGVdN8v_acoshf; _ZGVeN16v_acoshf;
     _ZGVbN4v_asinf; _ZGVcN8v_asinf; _ZGVdN8v_asinf; _ZGVeN16v_asinf;
     _ZGVbN4v_asinhf; _ZGVcN8v_asinhf; _ZGVdN8v_asinhf; _ZGVeN16v_asinhf;
     _ZGVbN4v_atanf; _ZGVcN8v_atanf; _ZGVdN8v_atanf; _ZGVeN16v_atanf;
+    _ZGVbN4v_atanhf; _ZGVcN8v_atanhf; _ZGVdN8v_atanhf; _ZGVeN16v_atanhf;
     _ZGVbN4vv_atan2f; _ZGVcN8vv_atan2f; _ZGVdN8vv_atan2f; _ZGVeN16vv_atan2f;
   }
 }
diff --git a/sysdeps/x86_64/fpu/libm-test-ulps b/sysdeps/x86_64/fpu/libm-test-ulps
index 329e7f58a2..30ac652738 100644
--- a/sysdeps/x86_64/fpu/libm-test-ulps
+++ b/sysdeps/x86_64/fpu/libm-test-ulps
@@ -285,6 +285,26 @@  float: 3
 float128: 4
 ldouble: 5
 
+Function: "atanh_vlen16":
+float: 1
+
+Function: "atanh_vlen2":
+double: 1
+
+Function: "atanh_vlen4":
+double: 1
+float: 1
+
+Function: "atanh_vlen4_avx2":
+double: 1
+
+Function: "atanh_vlen8":
+double: 1
+float: 1
+
+Function: "atanh_vlen8_avx2":
+float: 1
+
 Function: "cabs":
 double: 1
 float128: 1
diff --git a/sysdeps/x86_64/fpu/multiarch/svml_d_atanh2_core-sse2.S b/sysdeps/x86_64/fpu/multiarch/svml_d_atanh2_core-sse2.S
new file mode 100644
index 0000000000..b154ab8649
--- /dev/null
+++ b/sysdeps/x86_64/fpu/multiarch/svml_d_atanh2_core-sse2.S
@@ -0,0 +1,20 @@ 
+/* SSE2 version of vectorized atanh, 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_atanh _ZGVbN2v_atanh_sse2
+#include "../svml_d_atanh2_core.S"
diff --git a/sysdeps/x86_64/fpu/multiarch/svml_d_atanh2_core.c b/sysdeps/x86_64/fpu/multiarch/svml_d_atanh2_core.c
new file mode 100644
index 0000000000..138190e568
--- /dev/null
+++ b/sysdeps/x86_64/fpu/multiarch/svml_d_atanh2_core.c
@@ -0,0 +1,27 @@ 
+/* Multiple versions of vectorized atanh, 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_atanh
+#include "ifunc-mathvec-sse4_1.h"
+
+libc_ifunc_redirected (REDIRECT_NAME, SYMBOL_NAME, IFUNC_SELECTOR ());
+
+#ifdef SHARED
+__hidden_ver1 (_ZGVbN2v_atanh, __GI__ZGVbN2v_atanh, __redirect__ZGVbN2v_atanh)
+  __attribute__ ((visibility ("hidden")));
+#endif
diff --git a/sysdeps/x86_64/fpu/multiarch/svml_d_atanh2_core_sse4.S b/sysdeps/x86_64/fpu/multiarch/svml_d_atanh2_core_sse4.S
new file mode 100644
index 0000000000..3768a87849
--- /dev/null
+++ b/sysdeps/x86_64/fpu/multiarch/svml_d_atanh2_core_sse4.S
@@ -0,0 +1,5501 @@ 
+/* Function atanh 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:
+ *
+ *   Compute atanh(x) as 0.5 * log((1 + x)/(1 - x))
+ *
+ *   Special cases:
+ *
+ *   atanh(0)  = 0
+ *   atanh(+1) = +INF
+ *   atanh(-1) = -INF
+ *   atanh(x)  = NaN if |x| > 1, or if x is a NaN or INF
+ *
+ */
+
+#include <sysdep.h>
+
+        .text
+ENTRY(_ZGVbN2v_atanh_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       -4218816+__svml_datanh_data_internal(%rip), %r8
+        movups    12864+__svml_datanh_data_internal(%rip), %xmm3
+
+/* Load the constant 1 and a sign mask */
+        movups    12800+__svml_datanh_data_internal(%rip), %xmm5
+
+/* Strip off the sign, so treat X as positive until right at the end */
+        movaps    %xmm3, %xmm2
+        movups    %xmm11, 144(%rsp)
+        .cfi_escape 0x10, 0x1c, 0x0e, 0x38, 0x1c, 0x0d, 0xc0, 0xff, 0xff, 0xff, 0x1a, 0x0d, 0x90, 0xff, 0xff, 0xff, 0x22
+        movaps    %xmm0, %xmm11
+        andps     %xmm11, %xmm2
+        movaps    %xmm5, %xmm0
+        subpd     %xmm2, %xmm0
+        movups    %xmm15, 96(%rsp)
+        .cfi_escape 0x10, 0x20, 0x0e, 0x38, 0x1c, 0x0d, 0xc0, 0xff, 0xff, 0xff, 0x1a, 0x0d, 0x60, 0xff, 0xff, 0xff, 0x22
+        movaps    %xmm5, %xmm15
+        subpd     %xmm0, %xmm15
+        movups    %xmm14, 112(%rsp)
+
+/*
+ * Compute V = 2 * X trivially, and UHi + U_lo = 1 - X in two pieces,
+ * the upper part UHi being <= 41 bits long. Then we have
+ * atanh(X) = 1/2 * log((1 + X) / (1 - X)) = 1/2 * log1p(V / (UHi + ULo)).
+ */
+        movaps    %xmm2, %xmm1
+        .cfi_escape 0x10, 0x1f, 0x0e, 0x38, 0x1c, 0x0d, 0xc0, 0xff, 0xff, 0xff, 0x1a, 0x0d, 0x70, 0xff, 0xff, 0xff, 0x22
+        movups    14400+__svml_datanh_data_internal(%rip), %xmm14
+
+/*
+ * Check whether |X| < 1, in which case we use the main function.
+ * Otherwise set the rangemask so that the callout will get used.
+ * Note that this will also use the callout for NaNs since not(NaN < 1).
+ */
+        movaps    %xmm2, %xmm6
+        movaps    %xmm14, %xmm4
+        movaps    %xmm2, %xmm7
+        andps     %xmm0, %xmm4
+        addpd     %xmm2, %xmm1
+        subpd     %xmm2, %xmm15
+        subpd     %xmm4, %xmm0
+        cmpnltpd  %xmm5, %xmm6
+        cmpltpd   14528+__svml_datanh_data_internal(%rip), %xmm7
+
+/*
+ * Now compute R = 1/(UHi+ULo) * (1 - E) and the error term E
+ * The first FMR is exact (we force R to 12 bits just in case it
+ * isn't already, to make absolutely sure), and since E is ~ 2^-12,
+ * the rounding error in the other one is acceptable.
+ */
+        cvtpd2ps  %xmm4, %xmm2
+        addpd     %xmm0, %xmm15
+        movmskpd  %xmm6, %edx
+        movlhps   %xmm2, %xmm2
+        movaps    %xmm5, %xmm0
+        rcpps     %xmm2, %xmm2
+        cvtps2pd  %xmm2, %xmm2
+        andps     14208+__svml_datanh_data_internal(%rip), %xmm2
+
+/*
+ * Split V as well into upper 41 bits and lower part, so that we can get
+ * a preliminary quotient estimate without rounding error.
+ */
+        andps     %xmm1, %xmm14
+        mulpd     %xmm2, %xmm4
+        mulpd     %xmm2, %xmm15
+        subpd     %xmm4, %xmm0
+        subpd     %xmm14, %xmm1
+
+/* Hence get initial quotient estimate QHi + QLo = R * VHi + R * VLo */
+        mulpd     %xmm2, %xmm14
+        subpd     %xmm15, %xmm0
+        mulpd     %xmm1, %xmm2
+
+/*
+ * Compute D = E + E^2 + E^3 + E^4 + E^5
+ * = E + (E + E^2) (E + E * E^2)
+ */
+        movaps    %xmm0, %xmm15
+        movaps    %xmm0, %xmm1
+        mulpd     %xmm0, %xmm15
+        mulpd     %xmm15, %xmm1
+        addpd     %xmm0, %xmm15
+        addpd     %xmm0, %xmm1
+        mulpd     %xmm1, %xmm15
+        addpd     %xmm15, %xmm0
+
+/*
+ * Compute R * (VHi + VLo) * (1 + E + E^2 + E^3 + E^4 + E^5)
+ * = R *  (VHi + VLo) * (1 + D)
+ * = QHi + (QHi * D + QLo + QLo * D)
+ */
+        movaps    %xmm0, %xmm4
+        mulpd     %xmm2, %xmm0
+        mulpd     %xmm14, %xmm4
+        addpd     %xmm0, %xmm2
+        addpd     %xmm2, %xmm4
+
+/*
+ * Now finally accumulate the high and low parts of the
+ * argument to log1p, H + L, with a final compensated summation.
+ */
+        addpd     %xmm4, %xmm14
+
+/*
+ * Now we feed into the log1p code, using H in place of _VARG1 and
+ * later incorporating L into the reduced argument.
+ * compute 1+x as high, low parts
+ */
+        movaps    %xmm5, %xmm0
+        movaps    %xmm5, %xmm4
+        maxpd     %xmm14, %xmm0
+        minpd     %xmm14, %xmm4
+        andps     %xmm3, %xmm14
+        movaps    %xmm0, %xmm2
+        cmpltpd   12928+__svml_datanh_data_internal(%rip), %xmm14
+        addpd     %xmm4, %xmm2
+        orps      12992+__svml_datanh_data_internal(%rip), %xmm14
+        andps     %xmm14, %xmm2
+
+/* preserve mantissa, set input exponent to 2^(-10) */
+        movups    12480+__svml_datanh_data_internal(%rip), %xmm14
+        andps     %xmm2, %xmm14
+        orps      12544+__svml_datanh_data_internal(%rip), %xmm14
+
+/* reciprocal approximation good to at least 11 bits */
+        cvtpd2ps  %xmm14, %xmm3
+        subpd     %xmm2, %xmm0
+        movlhps   %xmm3, %xmm3
+        rcpps     %xmm3, %xmm1
+        addpd     %xmm0, %xmm4
+        cvtps2pd  %xmm1, %xmm0
+
+/* round reciprocal to nearest integer, will have 1+9 mantissa bits */
+        movups    .FLT_26(%rip), %xmm14
+
+/* exponent bits */
+        movaps    %xmm2, %xmm1
+        addpd     %xmm14, %xmm0
+        subpd     %xmm14, %xmm0
+
+/* exponent of X needed to scale Xl */
+        movdqu    13376+__svml_datanh_data_internal(%rip), %xmm15
+        psrlq     $20, %xmm1
+
+/* 2^ (-10-exp(X) ) */
+        movdqu    13440+__svml_datanh_data_internal(%rip), %xmm3
+        pand      %xmm2, %xmm15
+        psubq     %xmm15, %xmm3
+
+/* scale DblRcp */
+        mulpd     %xmm0, %xmm3
+
+/* argument reduction */
+        mulpd     %xmm3, %xmm2
+        mulpd     %xmm3, %xmm4
+        subpd     %xmm5, %xmm2
+        pshufd    $221, %xmm1, %xmm15
+
+/*
+ * prepare table index
+ * table lookup
+ */
+        movaps    %xmm0, %xmm1
+        psrlq     $40, %xmm1
+        movd      %xmm1, %eax
+        pshufd    $2, %xmm1, %xmm1
+
+/* polynomial */
+        movups    12416+__svml_datanh_data_internal(%rip), %xmm5
+        addpd     %xmm4, %xmm2
+
+/* biased exponent in DP format */
+        cvtdq2pd  %xmm15, %xmm15
+        movd      %xmm1, %ecx
+        mulpd     %xmm2, %xmm5
+
+/* exponent*log(2.0) */
+        movups    13184+__svml_datanh_data_internal(%rip), %xmm1
+        cmpltpd   %xmm0, %xmm1
+        addpd     12432+__svml_datanh_data_internal(%rip), %xmm5
+        andps     13248+__svml_datanh_data_internal(%rip), %xmm1
+        orps      13312+__svml_datanh_data_internal(%rip), %xmm1
+        subpd     %xmm1, %xmm15
+        movaps    %xmm2, %xmm1
+        mulpd     %xmm2, %xmm1
+        mulpd     13504+__svml_datanh_data_internal(%rip), %xmm15
+        mulpd     %xmm1, %xmm5
+        movups    12448+__svml_datanh_data_internal(%rip), %xmm0
+        mulpd     %xmm2, %xmm0
+        addpd     12464+__svml_datanh_data_internal(%rip), %xmm0
+        addpd     %xmm5, %xmm0
+
+/* reconstruction */
+        mulpd     %xmm0, %xmm1
+        movslq    %eax, %rax
+        movaps    %xmm7, %xmm0
+        addpd     %xmm1, %xmm2
+        movslq    %ecx, %rcx
+        movsd     (%r8,%rax), %xmm14
+        movups    %xmm10, 160(%rsp)
+        .cfi_escape 0x10, 0x1b, 0x0e, 0x38, 0x1c, 0x0d, 0xc0, 0xff, 0xff, 0xff, 0x1a, 0x0d, 0xa0, 0xff, 0xff, 0xff, 0x22
+        movaps    %xmm11, %xmm10
+        mulpd     %xmm11, %xmm10
+        movhpd    (%r8,%rcx), %xmm14
+        addpd     %xmm2, %xmm14
+        addpd     %xmm11, %xmm10
+        addpd     %xmm14, %xmm15
+
+/* Record the sign for eventual reincorporation. */
+        movups    14080+__svml_datanh_data_internal(%rip), %xmm6
+
+/* Finally, halve the result and reincorporate the sign */
+        movups    13888+__svml_datanh_data_internal(%rip), %xmm2
+        andps     %xmm11, %xmm6
+        pxor      %xmm6, %xmm2
+
+/* Or the sign bit in with the tiny result to handle atanh(-0) correctly */
+        orps      %xmm6, %xmm10
+        mulpd     %xmm15, %xmm2
+        andnps    %xmm2, %xmm0
+        andps     %xmm7, %xmm10
+        orps      %xmm10, %xmm0
+        testl     %edx, %edx
+        jne       .LBL_1_3
+
+.LBL_1_2:
+        movups    160(%rsp), %xmm10
+        cfi_restore(27)
+        movups    144(%rsp), %xmm11
+        cfi_restore(28)
+        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, 0x1b, 0x0e, 0x38, 0x1c, 0x0d, 0xc0, 0xff, 0xff, 0xff, 0x1a, 0x0d, 0xa0, 0xff, 0xff, 0xff, 0x22
+        .cfi_escape 0x10, 0x1c, 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
+
+.LBL_1_3:
+        movups    %xmm11, 128(%rsp)
+        movups    %xmm0, 192(%rsp)
+        xorl      %eax, %eax
+        movups    %xmm8, 48(%rsp)
+        movups    %xmm9, 32(%rsp)
+        movups    %xmm12, 16(%rsp)
+        movups    %xmm13, (%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, 0x1d, 0x0e, 0x38, 0x1c, 0x0d, 0xc0, 0xff, 0xff, 0xff, 0x1a, 0x0d, 0x10, 0xff, 0xff, 0xff, 0x22
+        .cfi_escape 0x10, 0x1e, 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      %edx, %r13d
+
+.LBL_1_7:
+        btl       %r12d, %r13d
+        jc        .LBL_1_10
+
+.LBL_1_8:
+        incl      %r12d
+        cmpl      $2, %r12d
+        jl        .LBL_1_7
+        movups    48(%rsp), %xmm8
+        cfi_restore(25)
+        movups    32(%rsp), %xmm9
+        cfi_restore(26)
+        movups    16(%rsp), %xmm12
+        cfi_restore(29)
+        movups    (%rsp), %xmm13
+        cfi_restore(30)
+        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), %xmm0
+        jmp       .LBL_1_2
+        .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, 0x1d, 0x0e, 0x38, 0x1c, 0x0d, 0xc0, 0xff, 0xff, 0xff, 0x1a, 0x0d, 0x10, 0xff, 0xff, 0xff, 0x22
+        .cfi_escape 0x10, 0x1e, 0x0e, 0x38, 0x1c, 0x0d, 0xc0, 0xff, 0xff, 0xff, 0x1a, 0x0d, 0x00, 0xff, 0xff, 0xff, 0x22
+
+.LBL_1_10:
+        lea       128(%rsp,%r12,8), %rdi
+        lea       192(%rsp,%r12,8), %rsi
+        call      __svml_datanh_cout_rare_internal
+        jmp       .LBL_1_8
+
+END(_ZGVbN2v_atanh_sse4)
+
+        .align    16,0x90
+
+__svml_datanh_cout_rare_internal:
+
+        cfi_startproc
+
+        movzwl    6(%rdi), %eax
+        andl      $32752, %eax
+        movsd     (%rdi), %xmm0
+        movb      7(%rdi), %dl
+        andb      $127, %dl
+        movsd     %xmm0, -8(%rsp)
+        cmpl      $32752, %eax
+        je        .LBL_2_6
+
+.LBL_2_2:
+        cmpl      $0, -8(%rsp)
+        jne       .LBL_2_5
+        movb      %dl, -1(%rsp)
+        cmpl      $1072693248, -4(%rsp)
+        jne       .LBL_2_5
+        divsd     8+__datanh_la_CoutTab(%rip), %xmm0
+        movsd     %xmm0, (%rsi)
+        movl      $2, %eax
+        ret
+
+.LBL_2_5:
+        movsd     8+__datanh_la_CoutTab(%rip), %xmm0
+        movl      $1, %eax
+        mulsd     16+__datanh_la_CoutTab(%rip), %xmm0
+        movsd     %xmm0, (%rsi)
+        ret
+
+.LBL_2_6:
+        testl     $1048575, 4(%rdi)
+        jne       .LBL_2_8
+        cmpl      $0, (%rdi)
+        je        .LBL_2_2
+
+.LBL_2_8:
+        mulsd     %xmm0, %xmm0
+        xorl      %eax, %eax
+        movsd     %xmm0, (%rsi)
+        ret
+
+        cfi_endproc
+
+        .type	__svml_datanh_cout_rare_internal,@function
+        .size	__svml_datanh_cout_rare_internal,.-__svml_datanh_cout_rare_internal
+
+        .section .rodata, "a"
+        .align 64
+
+__svml_datanh_data_internal:
+        .long	3715793664
+        .long	3230016299
+        .long	4013928704
+        .long	3189565726
+        .long	3699038248
+        .long	3230016303
+        .long	4255595370
+        .long	3189567439
+        .long	3648859040
+        .long	3230016307
+        .long	1732833791
+        .long	3189567296
+        .long	3565385952
+        .long	3230016311
+        .long	2485752410
+        .long	3189567274
+        .long	3448748152
+        .long	3230016315
+        .long	3514744523
+        .long	3189567800
+        .long	3299074072
+        .long	3230016319
+        .long	3686511262
+        .long	3189567474
+        .long	3116491376
+        .long	3230016323
+        .long	716063611
+        .long	3189567908
+        .long	2901127016
+        .long	3230016327
+        .long	354437295
+        .long	3189567291
+        .long	2653107184
+        .long	3230016331
+        .long	3777462366
+        .long	3189567264
+        .long	2372557360
+        .long	3230016335
+        .long	3590663412
+        .long	3189567498
+        .long	2059602304
+        .long	3230016339
+        .long	1680795031
+        .long	3189567428
+        .long	1714366048
+        .long	3230016343
+        .long	2010344982
+        .long	3189567986
+        .long	1336971936
+        .long	3230016347
+        .long	166254822
+        .long	3189567184
+        .long	927542568
+        .long	3230016351
+        .long	59552610
+        .long	3189567972
+        .long	486199888
+        .long	3230016355
+        .long	2268824919
+        .long	3189567664
+        .long	13065112
+        .long	3230016359
+        .long	3005381643
+        .long	3189567835
+        .long	3803226080
+        .long	3230016362
+        .long	4018973165
+        .long	3189567825
+        .long	3266868056
+        .long	3230016366
+        .long	3693925101
+        .long	3189567457
+        .long	2699077504
+        .long	3230016370
+        .long	4005905743
+        .long	3189567697
+        .long	2099972936
+        .long	3230016374
+        .long	3580935118
+        .long	3189567215
+        .long	1469672176
+        .long	3230016378
+        .long	2928784295
+        .long	3189567129
+        .long	808292392
+        .long	3230016382
+        .long	674298833
+        .long	3189567553
+        .long	115950104
+        .long	3230016386
+        .long	2555938320
+        .long	3189567208
+        .long	3687728456
+        .long	3230016389
+        .long	532458218
+        .long	3189567130
+        .long	2933808064
+        .long	3230016393
+        .long	3888913110
+        .long	3189567192
+        .long	2149270784
+        .long	3230016397
+        .long	2365955494
+        .long	3189567756
+        .long	1334230552
+        .long	3230016401
+        .long	3325722981
+        .long	3189567206
+        .long	488800640
+        .long	3230016405
+        .long	1496133617
+        .long	3189567683
+        .long	3908061016
+        .long	3230016408
+        .long	1824836379
+        .long	3189567490
+        .long	3002189112
+        .long	3230016412
+        .long	1222174320
+        .long	3189567837
+        .long	2066263648
+        .long	3230016416
+        .long	2472769660
+        .long	3189567285
+        .long	1100395408
+        .long	3230016420
+        .long	447932460
+        .long	3189567455
+        .long	104694584
+        .long	3230016424
+        .long	1006807684
+        .long	3189567460
+        .long	3374238048
+        .long	3230016427
+        .long	4121834935
+        .long	3189567556
+        .long	2319200184
+        .long	3230016431
+        .long	3019906587
+        .long	3189567664
+        .long	1234656664
+        .long	3230016435
+        .long	3882744783
+        .long	3189567930
+        .long	120715280
+        .long	3230016439
+        .long	1927363170
+        .long	3189567242
+        .long	3272450504
+        .long	3230016442
+        .long	8203115
+        .long	3189567876
+        .long	2100034368
+        .long	3230016446
+        .long	1260625560
+        .long	3189567855
+        .long	898540192
+        .long	3230016450
+        .long	1791679111
+        .long	3189567639
+        .long	3963040720
+        .long	3230016453
+        .long	831133439
+        .long	3189567590
+        .long	2703706240
+        .long	3230016457
+        .long	2803140504
+        .long	3189567482
+        .long	1415608352
+        .long	3230016461
+        .long	2955844462
+        .long	3189568058
+        .long	98850816
+        .long	3230016465
+        .long	4017967070
+        .long	3189567455
+        .long	3048504096
+        .long	3230016468
+        .long	3974385451
+        .long	3189567871
+        .long	1674736240
+        .long	3230016472
+        .long	2424114556
+        .long	3189567887
+        .long	272616624
+        .long	3230016476
+        .long	4261883032
+        .long	3189567073
+        .long	3137214056
+        .long	3230016479
+        .long	3716750895
+        .long	3189567522
+        .long	1678694944
+        .long	3230016483
+        .long	498025304
+        .long	3189567180
+        .long	192127016
+        .long	3230016487
+        .long	1011852160
+        .long	3189567511
+        .long	2972577480
+        .long	3230016490
+        .long	558940916
+        .long	3189567850
+        .long	1430211120
+        .long	3230016494
+        .long	2550865739
+        .long	3189567935
+        .long	4155061376
+        .long	3230016497
+        .long	1930847170
+        .long	3189567371
+        .long	2557291968
+        .long	3230016501
+        .long	1716354804
+        .long	3189567130
+        .long	931967984
+        .long	3230016505
+        .long	2729403392
+        .long	3189567981
+        .long	3574154016
+        .long	3230016508
+        .long	1067280599
+        .long	3189567890
+        .long	1894012232
+        .long	3230016512
+        .long	2094260282
+        .long	3189567604
+        .long	186606176
+        .long	3230016516
+        .long	3897933165
+        .long	3189568046
+        .long	2746998904
+        .long	3230016519
+        .long	1935720459
+        .long	3189567701
+        .long	985351064
+        .long	3230016523
+        .long	2170344821
+        .long	3189567164
+        .long	3491691984
+        .long	3230016526
+        .long	4220979537
+        .long	3189567547
+        .long	1676181328
+        .long	3230016530
+        .long	1953924393
+        .long	3189567854
+        .long	4128847448
+        .long	3230016533
+        .long	1689829067
+        .long	3189567468
+        .long	2259849008
+        .long	3230016537
+        .long	2367753130
+        .long	3189567619
+        .long	364246088
+        .long	3230016541
+        .long	2263309073
+        .long	3189567722
+        .long	2737098280
+        .long	3230016544
+        .long	2366756869
+        .long	3189567856
+        .long	788562816
+        .long	3230016548
+        .long	2294653975
+        .long	3189567145
+        .long	3108665616
+        .long	3230016551
+        .long	1786494117
+        .long	3189567254
+        .long	1107562960
+        .long	3230016555
+        .long	3655887416
+        .long	3189567689
+        .long	3375279848
+        .long	3230016558
+        .long	1178948625
+        .long	3189567241
+        .long	1321971608
+        .long	3230016562
+        .long	1620080441
+        .long	3189567466
+        .long	3537662304
+        .long	3230016565
+        .long	154455618
+        .long	3189567981
+        .long	1432506360
+        .long	3230016569
+        .long	3128192125
+        .long	3189567889
+        .long	3596526920
+        .long	3230016572
+        .long	2026842750
+        .long	3189567212
+        .long	1439877480
+        .long	3230016576
+        .long	1384431897
+        .long	3189567284
+        .long	3552580280
+        .long	3230016579
+        .long	1999983129
+        .long	3189568079
+        .long	1344787944
+        .long	3230016583
+        .long	4035436820
+        .long	3189567579
+        .long	3406521808
+        .long	3230016586
+        .long	77799817
+        .long	3189567285
+        .long	1147933592
+        .long	3230016590
+        .long	1261060207
+        .long	3189567477
+        .long	3159043768
+        .long	3230016593
+        .long	2102717775
+        .long	3189567605
+        .long	850003184
+        .long	3230016597
+        .long	161472469
+        .long	3189567688
+        .long	2810831440
+        .long	3230016600
+        .long	1937336881
+        .long	3189567665
+        .long	451678520
+        .long	3230016604
+        .long	2268353549
+        .long	3189567773
+        .long	2362563168
+        .long	3230016607
+        .long	1785871595
+        .long	3189567889
+        .long	4248601816
+        .long	3230016610
+        .long	2434669991
+        .long	3189567898
+        .long	1814910472
+        .long	3230016614
+        .long	2666999375
+        .long	3189568058
+        .long	3651506624
+        .long	3230016617
+        .long	1033139811
+        .long	3189567312
+        .long	1168538136
+        .long	3230016621
+        .long	4004618418
+        .long	3189567740
+        .long	2956021672
+        .long	3230016624
+        .long	3799928764
+        .long	3189567751
+        .long	424104288
+        .long	3230016628
+        .long	3650233137
+        .long	3189567549
+        .long	2162801816
+        .long	3230016631
+        .long	437313833
+        .long	3189567438
+        .long	3877227800
+        .long	3230016634
+        .long	2138293494
+        .long	3189567140
+        .long	1272495376
+        .long	3230016638
+        .long	2891370752
+        .long	3189567168
+        .long	2938619176
+        .long	3230016641
+        .long	1704142730
+        .long	3189567114
+        .long	285744240
+        .long	3230016645
+        .long	500817607
+        .long	3189568035
+        .long	1903884424
+        .long	3230016648
+        .long	3102571944
+        .long	3189567668
+        .long	3498151272
+        .long	3230016651
+        .long	2374193154
+        .long	3189567933
+        .long	773655960
+        .long	3230016655
+        .long	2898331636
+        .long	3189568089
+        .long	2320411168
+        .long	3230016658
+        .long	1983295500
+        .long	3189567113
+        .long	3843527280
+        .long	3230016661
+        .long	2132853542
+        .long	3189567093
+        .long	1048114320
+        .long	3230016665
+        .long	3551155364
+        .long	3189567407
+        .long	2524183824
+        .long	3230016668
+        .long	2564000663
+        .long	3189567090
+        .long	3976845048
+        .long	3230016671
+        .long	361581803
+        .long	3189567196
+        .long	1111206880
+        .long	3230016675
+        .long	696765230
+        .long	3189568040
+        .long	2517279744
+        .long	3230016678
+        .long	941542475
+        .long	3189567463
+        .long	3900171776
+        .long	3230016681
+        .long	2377895552
+        .long	3189567282
+        .long	964990760
+        .long	3230016685
+        .long	1173605489
+        .long	3189567454
+        .long	2301746008
+        .long	3230016688
+        .long	3096720313
+        .long	3189567400
+        .long	3615544576
+        .long	3230016691
+        .long	1942008121
+        .long	3189567335
+        .long	611493160
+        .long	3230016695
+        .long	3375481119
+        .long	3189567537
+        .long	1879599992
+        .long	3230016698
+        .long	4103239143
+        .long	3189567624
+        .long	3124971056
+        .long	3230016701
+        .long	3773474925
+        .long	3189567869
+        .long	52711992
+        .long	3230016705
+        .long	2465315445
+        .long	3189567444
+        .long	1252829960
+        .long	3230016708
+        .long	1041581158
+        .long	3189567781
+        .long	2430429904
+        .long	3230016711
+        .long	166620501
+        .long	3189567739
+        .long	3585583704
+        .long	3230016714
+        .long	2379237630
+        .long	3189567984
+        .long	423395616
+        .long	3230016718
+        .long	134834559
+        .long	3189567178
+        .long	1533871416
+        .long	3230016721
+        .long	1449318760
+        .long	3189567373
+        .long	2622114680
+        .long	3230016724
+        .long	3042372984
+        .long	3189567127
+        .long	3688195920
+        .long	3230016727
+        .long	1265290101
+        .long	3189567921
+        .long	437218048
+        .long	3230016731
+        .long	2248549362
+        .long	3189567262
+        .long	1459185496
+        .long	3230016734
+        .long	1293250365
+        .long	3189567151
+        .long	2459200496
+        .long	3230016737
+        .long	313786605
+        .long	3189567180
+        .long	3437332240
+        .long	3230016740
+        .long	3289151823
+        .long	3189567872
+        .long	98682312
+        .long	3230016744
+        .long	2693758821
+        .long	3189567877
+        .long	1033253848
+        .long	3230016747
+        .long	4237443192
+        .long	3189567301
+        .long	1946147760
+        .long	3230016750
+        .long	4099404586
+        .long	3189567972
+        .long	2837431968
+        .long	3230016753
+        .long	343640666
+        .long	3189567552
+        .long	3707174040
+        .long	3230016756
+        .long	4238401458
+        .long	3189567983
+        .long	260473960
+        .long	3230016760
+        .long	21423548
+        .long	3189567559
+        .long	1087333264
+        .long	3230016763
+        .long	3515278593
+        .long	3189567309
+        .long	1892851296
+        .long	3230016766
+        .long	629106375
+        .long	3189567166
+        .long	2677094384
+        .long	3230016769
+        .long	2048670044
+        .long	3189567227
+        .long	3440128544
+        .long	3230016772
+        .long	3739217292
+        .long	3189568009
+        .long	4182019504
+        .long	3230016775
+        .long	3662039444
+        .long	3189567618
+        .long	607865368
+        .long	3230016779
+        .long	1766486991
+        .long	3189567112
+        .long	1307665824
+        .long	3230016782
+        .long	512689457
+        .long	3189567670
+        .long	1986518392
+        .long	3230016785
+        .long	1704577378
+        .long	3189567760
+        .long	2644487576
+        .long	3230016788
+        .long	4001935135
+        .long	3189567473
+        .long	3281637576
+        .long	3230016791
+        .long	1184452342
+        .long	3189567735
+        .long	3898032312
+        .long	3230016794
+        .long	2714793956
+        .long	3189567464
+        .long	198768096
+        .long	3230016798
+        .long	3657654418
+        .long	3189567905
+        .long	773842856
+        .long	3230016801
+        .long	2809688013
+        .long	3189567736
+        .long	1328352328
+        .long	3230016804
+        .long	390727591
+        .long	3189567393
+        .long	1862359256
+        .long	3230016807
+        .long	1135237925
+        .long	3189567248
+        .long	2375926096
+        .long	3230016810
+        .long	1377572509
+        .long	3189567837
+        .long	2869115032
+        .long	3230016813
+        .long	3148383775
+        .long	3189568032
+        .long	3341987960
+        .long	3230016816
+        .long	3809536738
+        .long	3189567313
+        .long	3794606472
+        .long	3230016819
+        .long	4243445934
+        .long	3189568034
+        .long	4227031920
+        .long	3230016822
+        .long	1302642088
+        .long	3189567451
+        .long	344358048
+        .long	3230016826
+        .long	3239125361
+        .long	3189567151
+        .long	736580224
+        .long	3230016829
+        .long	3753161736
+        .long	3189567129
+        .long	1108791648
+        .long	3230016832
+        .long	624357483
+        .long	3189568045
+        .long	1461052568
+        .long	3230016835
+        .long	3153257064
+        .long	3189567338
+        .long	1793422920
+        .long	3230016838
+        .long	2705820149
+        .long	3189567635
+        .long	2105962400
+        .long	3230016841
+        .long	911564860
+        .long	3189567737
+        .long	2398730424
+        .long	3230016844
+        .long	1086958332
+        .long	3189567948
+        .long	2671786152
+        .long	3230016847
+        .long	1598984535
+        .long	3189567210
+        .long	2925188456
+        .long	3230016850
+        .long	4113385879
+        .long	3189567401
+        .long	3158995968
+        .long	3230016853
+        .long	2426812671
+        .long	3189567396
+        .long	3373267048
+        .long	3230016856
+        .long	3480845679
+        .long	3189567359
+        .long	3568059792
+        .long	3230016859
+        .long	3306230729
+        .long	3189567924
+        .long	3743432056
+        .long	3230016862
+        .long	3853821277
+        .long	3189567317
+        .long	3899441408
+        .long	3230016865
+        .long	2049309148
+        .long	3189567699
+        .long	4036145192
+        .long	3230016868
+        .long	2667321817
+        .long	3189567166
+        .long	4153600472
+        .long	3230016871
+        .long	3540670389
+        .long	3189567114
+        .long	4251864072
+        .long	3230016874
+        .long	404207883
+        .long	3189567310
+        .long	36025272
+        .long	3230016878
+        .long	2837617046
+        .long	3189567103
+        .long	96074976
+        .long	3230016881
+        .long	1231280453
+        .long	3189567669
+        .long	137101976
+        .long	3230016884
+        .long	792492437
+        .long	3189567071
+        .long	159162080
+        .long	3230016887
+        .long	2385525292
+        .long	3189567618
+        .long	162310880
+        .long	3230016890
+        .long	3272051015
+        .long	3189567858
+        .long	146603712
+        .long	3230016893
+        .long	623573538
+        .long	3189567881
+        .long	112095672
+        .long	3230016896
+        .long	2151835939
+        .long	3189567451
+        .long	58841608
+        .long	3230016899
+        .long	958006130
+        .long	3189567217
+        .long	4281863424
+        .long	3230016901
+        .long	549948691
+        .long	3189567863
+        .long	4191280920
+        .long	3230016904
+        .long	4177689987
+        .long	3189567217
+        .long	4082115512
+        .long	3230016907
+        .long	2895765193
+        .long	3189567599
+        .long	3954421112
+        .long	3230016910
+        .long	1055606208
+        .long	3189567799
+        .long	3808251392
+        .long	3230016913
+        .long	1966521217
+        .long	3189567351
+        .long	3643659776
+        .long	3230016916
+        .long	1017382758
+        .long	3189567732
+        .long	3460699480
+        .long	3230016919
+        .long	3485890155
+        .long	3189567410
+        .long	3259423472
+        .long	3230016922
+        .long	2657419170
+        .long	3189567140
+        .long	3039884488
+        .long	3230016925
+        .long	4198858220
+        .long	3189568080
+        .long	2802135064
+        .long	3230016928
+        .long	2343740494
+        .long	3189567869
+        .long	2546227480
+        .long	3230016931
+        .long	2423084215
+        .long	3189567957
+        .long	2272213808
+        .long	3230016934
+        .long	3887273856
+        .long	3189567631
+        .long	1980145888
+        .long	3230016937
+        .long	3992755473
+        .long	3189567251
+        .long	1670075336
+        .long	3230016940
+        .long	722498073
+        .long	3189567389
+        .long	1342053552
+        .long	3230016943
+        .long	3573506400
+        .long	3189567965
+        .long	996131728
+        .long	3230016946
+        .long	714695829
+        .long	3189567392
+        .long	632360808
+        .long	3230016949
+        .long	2816704229
+        .long	3189567846
+        .long	250791552
+        .long	3230016952
+        .long	386951333
+        .long	3189567243
+        .long	4146441768
+        .long	3230016954
+        .long	2155319939
+        .long	3189567580
+        .long	3729427184
+        .long	3230016957
+        .long	4227840137
+        .long	3189567931
+        .long	3294765200
+        .long	3230016960
+        .long	1718354212
+        .long	3189567672
+        .long	2842505696
+        .long	3230016963
+        .long	4243880582
+        .long	3189567656
+        .long	2372698352
+        .long	3230016966
+        .long	3784093842
+        .long	3189567302
+        .long	1885392624
+        .long	3230016969
+        .long	2318733051
+        .long	3189567813
+        .long	1380637784
+        .long	3230016972
+        .long	497929746
+        .long	3189567210
+        .long	858482864
+        .long	3230016975
+        .long	3218883783
+        .long	3189567649
+        .long	318976720
+        .long	3230016978
+        .long	3492652862
+        .long	3189567382
+        .long	4057135272
+        .long	3230016980
+        .long	473724673
+        .long	3189568069
+        .long	3483072376
+        .long	3230016983
+        .long	150485010
+        .long	3189567757
+        .long	2891803552
+        .long	3230016986
+        .long	3028900958
+        .long	3189567173
+        .long	2283376816
+        .long	3230016989
+        .long	321242596
+        .long	3189567822
+        .long	1657840008
+        .long	3230016992
+        .long	151305746
+        .long	3189568029
+        .long	1015240760
+        .long	3230016995
+        .long	2208026401
+        .long	3189567184
+        .long	355626480
+        .long	3230016998
+        .long	2487781842
+        .long	3189567931
+        .long	3974011720
+        .long	3230017000
+        .long	2391142094
+        .long	3189567091
+        .long	3280508896
+        .long	3230017003
+        .long	734457618
+        .long	3189568092
+        .long	2570132168
+        .long	3230017006
+        .long	3070902701
+        .long	3189567794
+        .long	1842928168
+        .long	3230017009
+        .long	1110877923
+        .long	3189567896
+        .long	1098943352
+        .long	3230017012
+        .long	3880360185
+        .long	3189567898
+        .long	338223984
+        .long	3230017015
+        .long	391995809
+        .long	3189567294
+        .long	3855783416
+        .long	3230017017
+        .long	4186345433
+        .long	3189567745
+        .long	3061732952
+        .long	3230017020
+        .long	3682852050
+        .long	3189567081
+        .long	2251085560
+        .long	3230017023
+        .long	3057037137
+        .long	3189567617
+        .long	1423886760
+        .long	3230017026
+        .long	3352664894
+        .long	3189567074
+        .long	580181848
+        .long	3230017029
+        .long	1170568982
+        .long	3189567927
+        .long	4014983272
+        .long	3230017031
+        .long	671148579
+        .long	3189567293
+        .long	3138401368
+        .long	3230017034
+        .long	267496658
+        .long	3189567304
+        .long	2245448192
+        .long	3230017037
+        .long	1285167087
+        .long	3189568066
+        .long	1336168336
+        .long	3230017040
+        .long	4259909589
+        .long	3189567788
+        .long	410606184
+        .long	3230017043
+        .long	1494078902
+        .long	3189568031
+        .long	3763773256
+        .long	3230017045
+        .long	261935754
+        .long	3189567685
+        .long	2805778992
+        .long	3230017048
+        .long	3679585605
+        .long	3189567195
+        .long	1831634536
+        .long	3230017051
+        .long	809066513
+        .long	3189567664
+        .long	841383576
+        .long	3230017054
+        .long	385945238
+        .long	3189567897
+        .long	4130036912
+        .long	3230017056
+        .long	825579909
+        .long	3189567603
+        .long	3107703272
+        .long	3230017059
+        .long	3911295427
+        .long	3189567514
+        .long	2069393104
+        .long	3230017062
+        .long	3473784588
+        .long	3189567461
+        .long	1015149384
+        .long	3230017065
+        .long	629861200
+        .long	3189567515
+        .long	4239982216
+        .long	3230017067
+        .long	2659142760
+        .long	3189567083
+        .long	3153999632
+        .long	3230017070
+        .long	1251680713
+        .long	3189567080
+        .long	2052211384
+        .long	3230017073
+        .long	3168705163
+        .long	3189567992
+        .long	934659776
+        .long	3230017076
+        .long	1674797624
+        .long	3189567952
+        .long	4096354216
+        .long	3230017078
+        .long	437847902
+        .long	3189567971
+        .long	2947402064
+        .long	3230017081
+        .long	4024401533
+        .long	3189567960
+        .long	1782812400
+        .long	3230017084
+        .long	786902458
+        .long	3189567873
+        .long	602626840
+        .long	3230017087
+        .long	2593792633
+        .long	3189567812
+        .long	3701854136
+        .long	3230017089
+        .long	3989721221
+        .long	3189567126
+        .long	2490600968
+        .long	3230017092
+        .long	2545746866
+        .long	3189567591
+        .long	1263875768
+        .long	3230017095
+        .long	3115843521
+        .long	3189567377
+        .long	21719488
+        .long	3230017098
+        .long	1730226063
+        .long	3189567307
+        .long	3059140216
+        .long	3230017100
+        .long	690350922
+        .long	3189567892
+        .long	1786244008
+        .long	3230017103
+        .long	3350998585
+        .long	3189567394
+        .long	498038616
+        .long	3230017106
+        .long	1499123379
+        .long	3189568082
+        .long	3489531672
+        .long	3230017108
+        .long	2598665922
+        .long	3189567118
+        .long	2170828712
+        .long	3230017111
+        .long	2436376826
+        .long	3189567935
+        .long	836937048
+        .long	3230017114
+        .long	1977004902
+        .long	3189568052
+        .long	3782863816
+        .long	3230017116
+        .long	4027224619
+        .long	3189567373
+        .long	2418714096
+        .long	3230017119
+        .long	2616869856
+        .long	3189567271
+        .long	1039494712
+        .long	3230017122
+        .long	3775628133
+        .long	3189567616
+        .long	3940212336
+        .long	3230017124
+        .long	419018052
+        .long	3189567909
+        .long	2530971600
+        .long	3230017127
+        .long	150919657
+        .long	3189567379
+        .long	1106778856
+        .long	3230017130
+        .long	2926254537
+        .long	3189567139
+        .long	3962640312
+        .long	3230017132
+        .long	1610863810
+        .long	3189567216
+        .long	2508660136
+        .long	3230017135
+        .long	1166015244
+        .long	3189567672
+        .long	1039844240
+        .long	3230017138
+        .long	645159638
+        .long	3189567685
+        .long	3851198376
+        .long	3230017140
+        .long	2449439581
+        .long	3189567695
+        .long	2352826264
+        .long	3230017143
+        .long	1619104640
+        .long	3189567458
+        .long	839733360
+        .long	3230017146
+        .long	2427070371
+        .long	3189567165
+        .long	3606924968
+        .long	3230017148
+        .long	2166480890
+        .long	3189567544
+        .long	2064504368
+        .long	3230017151
+        .long	2283025905
+        .long	3189567907
+        .long	507476584
+        .long	3230017154
+        .long	3923356754
+        .long	3189567272
+        .long	3230846472
+        .long	3230017156
+        .long	805331677
+        .long	3189567533
+        .long	1644716880
+        .long	3230017159
+        .long	3790469685
+        .long	3189567406
+        .long	44092384
+        .long	3230017162
+        .long	2689788214
+        .long	3189567653
+        .long	2723977432
+        .long	3230017164
+        .long	2762250221
+        .long	3189567072
+        .long	1094474416
+        .long	3230017167
+        .long	2781925193
+        .long	3189567716
+        .long	3745554800
+        .long	3230017169
+        .long	593120878
+        .long	3189567817
+        .long	2087320704
+        .long	3230017172
+        .long	403414988
+        .long	3189568021
+        .long	414776008
+        .long	3230017175
+        .long	359307328
+        .long	3189567387
+        .long	3022924432
+        .long	3230017177
+        .long	3373547966
+        .long	3189567572
+        .long	1321867688
+        .long	3230017180
+        .long	3978711340
+        .long	3189567805
+        .long	3901576528
+        .long	3230017182
+        .long	2765663238
+        .long	3189568046
+        .long	2172152384
+        .long	3230017185
+        .long	1181150766
+        .long	3189568053
+        .long	428598440
+        .long	3230017188
+        .long	2473022131
+        .long	3189567471
+        .long	2965917728
+        .long	3230017190
+        .long	1621744488
+        .long	3189567971
+        .long	1194211288
+        .long	3230017193
+        .long	2931299013
+        .long	3189567190
+        .long	3703449168
+        .long	3230017195
+        .long	873154950
+        .long	3189568039
+        .long	1903732144
+        .long	3230017198
+        .long	1510784525
+        .long	3189567521
+        .long	90062704
+        .long	3230017201
+        .long	2918231590
+        .long	3189568086
+        .long	2557443240
+        .long	3230017203
+        .long	3329944838
+        .long	3189567475
+        .long	715974088
+        .long	3230017206
+        .long	2679715410
+        .long	3189568021
+        .long	3155624672
+        .long	3230017208
+        .long	1841110143
+        .long	3189567518
+        .long	1286495072
+        .long	3230017211
+        .long	3881638924
+        .long	3189567497
+        .long	3698554440
+        .long	3230017213
+        .long	167906931
+        .long	3189567169
+        .long	1801902600
+        .long	3230017216
+        .long	1468264167
+        .long	3189567597
+        .long	4186508448
+        .long	3230017218
+        .long	2400624638
+        .long	3189567691
+        .long	2262471560
+        .long	3230017221
+        .long	3796182064
+        .long	3189567357
+        .long	324793264
+        .long	3230017224
+        .long	2801238958
+        .long	3189567581
+        .long	2668474776
+        .long	3230017226
+        .long	2273142813
+        .long	3189567436
+        .long	703615288
+        .long	3230017229
+        .long	831867571
+        .long	3189567237
+        .long	3020183048
+        .long	3230017231
+        .long	2238048829
+        .long	3189567595
+        .long	1028277008
+        .long	3230017234
+        .long	1163763070
+        .long	3189567452
+        .long	3317865168
+        .long	3230017236
+        .long	1206450788
+        .long	3189567228
+        .long	1299046216
+        .long	3230017239
+        .long	737162226
+        .long	3189567879
+        .long	3561787920
+        .long	3230017241
+        .long	2433253277
+        .long	3189567901
+        .long	1516188728
+        .long	3230017244
+        .long	3561277099
+        .long	3189567506
+        .long	3752216144
+        .long	3230017246
+        .long	1385095507
+        .long	3189567674
+        .long	1679968384
+        .long	3230017249
+        .long	829462408
+        .long	3189567156
+        .long	3889412704
+        .long	3230017251
+        .long	2939266725
+        .long	3189567673
+        .long	1790647080
+        .long	3230017254
+        .long	4214100827
+        .long	3189567848
+        .long	3973638544
+        .long	3230017256
+        .long	2537954451
+        .long	3189567376
+        .long	1848484816
+        .long	3230017259
+        .long	1128740312
+        .long	3189567098
+        .long	4005152680
+        .long	3230017261
+        .long	1932232434
+        .long	3189568053
+        .long	1853739648
+        .long	3230017264
+        .long	1359710694
+        .long	3189567457
+        .long	3984212256
+        .long	3230017266
+        .long	1268482287
+        .long	3189567990
+        .long	1806667776
+        .long	3230017269
+        .long	839689017
+        .long	3189567631
+        .long	3911072520
+        .long	3230017271
+        .long	3727165601
+        .long	3189567921
+        .long	1707523520
+        .long	3230017274
+        .long	1836550952
+        .long	3189567895
+        .long	3785986872
+        .long	3230017276
+        .long	172951407
+        .long	3189567220
+        .long	1556559360
+        .long	3230017279
+        .long	1166449891
+        .long	3189567294
+        .long	3609206856
+        .long	3230017281
+        .long	28625366
+        .long	3189567222
+        .long	1354025920
+        .long	3230017284
+        .long	4038426582
+        .long	3189567978
+        .long	3380982208
+        .long	3230017286
+        .long	2756284659
+        .long	3189567362
+        .long	1100172048
+        .long	3230017289
+        .long	848830252
+        .long	3189567230
+        .long	3101560856
+        .long	3230017291
+        .long	1868170309
+        .long	3189567423
+        .long	795244752
+        .long	3230017294
+        .long	3128260908
+        .long	3189567885
+        .long	2771188936
+        .long	3230017296
+        .long	1691261279
+        .long	3189567706
+        .long	439489304
+        .long	3230017299
+        .long	2886711298
+        .long	3189567236
+        .long	2390110824
+        .long	3230017301
+        .long	1311431101
+        .long	3189567133
+        .long	33149176
+        .long	3230017304
+        .long	3042183093
+        .long	3189567401
+        .long	1958569120
+        .long	3230017306
+        .long	3174208880
+        .long	3189567462
+        .long	3871433416
+        .long	3230017308
+        .long	302374021
+        .long	3189567243
+        .long	1476804712
+        .long	3230017311
+        .long	712531519
+        .long	3189567241
+        .long	3364647440
+        .long	3230017313
+        .long	3705318448
+        .long	3189567568
+        .long	945056744
+        .long	3230017316
+        .long	2424171915
+        .long	3189568016
+        .long	2807996856
+        .long	3230017318
+        .long	199511961
+        .long	3189567094
+        .long	363562688
+        .long	3230017321
+        .long	3766234060
+        .long	3189567214
+        .long	2201718256
+        .long	3230017323
+        .long	1956195829
+        .long	3189567592
+        .long	4027525584
+        .long	3230017325
+        .long	2891794585
+        .long	3189567375
+        .long	1546046576
+        .long	3230017328
+        .long	843173017
+        .long	3189567760
+        .long	3347244936
+        .long	3230017330
+        .long	1609532414
+        .long	3189567955
+        .long	841215080
+        .long	3230017333
+        .long	3356704285
+        .long	3189567294
+        .long	2617920488
+        .long	3230017335
+        .long	1641729240
+        .long	3189567346
+        .long	87455368
+        .long	3230017338
+        .long	1455753222
+        .long	3189567878
+        .long	1839783016
+        .long	3230017340
+        .long	1936589978
+        .long	3189567944
+        .long	3579964728
+        .long	3230017342
+        .long	1006586129
+        .long	3189567993
+        .long	1013061704
+        .long	3230017345
+        .long	2766825484
+        .long	3189567880
+        .long	2729036928
+        .long	3230017347
+        .long	1888685184
+        .long	3189567954
+        .long	137984104
+        .long	3230017350
+        .long	848046306
+        .long	3189568090
+        .long	1829866024
+        .long	3230017352
+        .long	4178224056
+        .long	3189567750
+        .long	3509743488
+        .long	3230017354
+        .long	2637072474
+        .long	3189567070
+        .long	882677184
+        .long	3230017357
+        .long	3133305384
+        .long	3189567936
+        .long	2538629624
+        .long	3230017359
+        .long	1343200028
+        .long	3189567905
+        .long	4182661312
+        .long	3230017361
+        .long	107195460
+        .long	3189567427
+        .long	1519832648
+        .long	3230017364
+        .long	602154914
+        .long	3189567857
+        .long	3140105848
+        .long	3230017366
+        .long	659160740
+        .long	3189567417
+        .long	453573824
+        .long	3230017369
+        .long	236889930
+        .long	3189567396
+        .long	2050198592
+        .long	3230017371
+        .long	1175634921
+        .long	3189567087
+        .long	3635040168
+        .long	3230017373
+        .long	1241855527
+        .long	3189567941
+        .long	913158504
+        .long	3230017376
+        .long	3947904414
+        .long	3189567477
+        .long	2474515312
+        .long	3230017378
+        .long	1206979822
+        .long	3189567534
+        .long	4024170344
+        .long	3230017380
+        .long	1847397805
+        .long	3189567152
+        .long	1267183240
+        .long	3230017383
+        .long	2916539301
+        .long	3189567754
+        .long	2793515456
+        .long	3230017385
+        .long	2568213263
+        .long	3189568078
+        .long	13259168
+        .long	3230017388
+        .long	3003245330
+        .long	3189567303
+        .long	1516375624
+        .long	3230017390
+        .long	3472633477
+        .long	3189567153
+        .long	3007924104
+        .long	3230017392
+        .long	532406289
+        .long	3189567855
+        .long	192963816
+        .long	3230017395
+        .long	4149310663
+        .long	3189567165
+        .long	1661455728
+        .long	3230017397
+        .long	946970842
+        .long	3189567598
+        .long	3118458864
+        .long	3230017399
+        .long	2040517972
+        .long	3189567254
+        .long	269032128
+        .long	3230017402
+        .long	3669971831
+        .long	3189568072
+        .long	1703136256
+        .long	3230017404
+        .long	2375197389
+        .long	3189567687
+        .long	3125829976
+        .long	3230017406
+        .long	296757744
+        .long	3189567673
+        .long	242171944
+        .long	3230017409
+        .long	611424102
+        .long	3189567452
+        .long	1642122608
+        .long	3230017411
+        .long	1700968423
+        .long	3189567419
+        .long	3030740440
+        .long	3230017413
+        .long	2947762668
+        .long	3189567968
+        .long	113083840
+        .long	3230017416
+        .long	690901756
+        .long	3189567496
+        .long	1479112984
+        .long	3230017418
+        .long	121139903
+        .long	3189567571
+        .long	2833886088
+        .long	3230017420
+        .long	173386055
+        .long	3189567866
+        .long	4177428584
+        .long	3230017422
+        .long	2964718132
+        .long	3189567231
+        .long	1214798496
+        .long	3230017425
+        .long	541562024
+        .long	3189567842
+        .long	2535955680
+        .long	3230017427
+        .long	3368765612
+        .long	3189568076
+        .long	3845958008
+        .long	3230017429
+        .long	3194541507
+        .long	3189567689
+        .long	849863256
+        .long	3230017432
+        .long	3443356552
+        .long	3189567858
+        .long	2137631024
+        .long	3230017434
+        .long	1180679397
+        .long	3189567138
+        .long	3414318912
+        .long	3230017436
+        .long	2261929999
+        .long	3189567651
+        .long	384984464
+        .long	3230017439
+        .long	954057098
+        .long	3189567971
+        .long	1639587024
+        .long	3230017441
+        .long	1346995839
+        .long	3189567263
+        .long	2883183944
+        .long	3230017443
+        .long	3253373727
+        .long	3189567382
+        .long	4115799808
+        .long	3230017445
+        .long	4143791142
+        .long	3189567800
+        .long	1042491824
+        .long	3230017448
+        .long	4240432954
+        .long	3189567700
+        .long	2253218992
+        .long	3230017450
+        .long	1891708033
+        .long	3189568072
+        .long	3453038360
+        .long	3230017452
+        .long	710292621
+        .long	3189567662
+        .long	347006880
+        .long	3230017455
+        .long	2712254611
+        .long	3189567116
+        .long	1525083304
+        .long	3230017457
+        .long	349583280
+        .long	3189568004
+        .long	2692324448
+        .long	3230017459
+        .long	1803227864
+        .long	3189567740
+        .long	3848754312
+        .long	3230017461
+        .long	3644606976
+        .long	3189567826
+        .long	699429536
+        .long	3230017464
+        .long	1067153346
+        .long	3189567751
+        .long	1834308568
+        .long	3230017466
+        .long	1335350692
+        .long	3189567081
+        .long	2958447872
+        .long	3230017468
+        .long	1803696599
+        .long	3189567557
+        .long	4071871152
+        .long	3230017470
+        .long	1232152547
+        .long	3189568017
+        .long	879634736
+        .long	3230017473
+        .long	1455437901
+        .long	3189567512
+        .long	1971696744
+        .long	3230017475
+        .long	3708110750
+        .long	3189567399
+        .long	3053113344
+        .long	3230017477
+        .long	3907324819
+        .long	3189567290
+        .long	4123907920
+        .long	3230017479
+        .long	4080000314
+        .long	3189567141
+        .long	889136480
+        .long	3230017482
+        .long	1286519001
+        .long	3189567298
+        .long	1938756848
+        .long	3230017484
+        .long	1292347423
+        .long	3189567513
+        .long	2977824880
+        .long	3230017486
+        .long	1159725249
+        .long	3189568015
+        .long	4006363664
+        .long	3230017488
+        .long	895621348
+        .long	3189567502
+        .long	729428896
+        .long	3230017491
+        .long	1212894155
+        .long	3189567280
+        .long	1736978096
+        .long	3230017493
+        .long	296117275
+        .long	3189567210
+        .long	2734066816
+        .long	3230017495
+        .long	2463481211
+        .long	3189567796
+        .long	3720717848
+        .long	3230017497
+        .long	76524950
+        .long	3189567159
+        .long	401986584
+        .long	3230017500
+        .long	1718551671
+        .long	3189567216
+        .long	1367830248
+        .long	3230017502
+        .long	3568874946
+        .long	3189567584
+        .long	2323304104
+        .long	3230017504
+        .long	2763456396
+        .long	3189567666
+        .long	3268430632
+        .long	3230017506
+        .long	1208592501
+        .long	3189567715
+        .long	4203232240
+        .long	3230017508
+        .long	4148835618
+        .long	3189567851
+        .long	832763976
+        .long	3230017511
+        .long	610418007
+        .long	3189567082
+        .long	1746982680
+        .long	3230017513
+        .long	3035714190
+        .long	3189567431
+        .long	2650943256
+        .long	3230017515
+        .long	85931336
+        .long	3189567843
+        .long	3544667832
+        .long	3230017517
+        .long	3006685957
+        .long	3189567286
+        .long	133211144
+        .long	3230017520
+        .long	878859600
+        .long	3189567873
+        .long	1006529776
+        .long	3230017522
+        .long	854333969
+        .long	3189567724
+        .long	1869678336
+        .long	3230017524
+        .long	3058646748
+        .long	3189567155
+        .long	2722678648
+        .long	3230017526
+        .long	360733640
+        .long	3189567693
+        .long	3565552488
+        .long	3230017528
+        .long	3015564990
+        .long	3189568013
+        .long	103354256
+        .long	3230017531
+        .long	2286095909
+        .long	3189568081
+        .long	926040176
+        .long	3230017533
+        .long	1899270393
+        .long	3189567137
+        .long	1738664488
+        .long	3230017535
+        .long	1377641292
+        .long	3189567833
+        .long	2541248696
+        .long	3230017537
+        .long	4266686523
+        .long	3189568077
+        .long	3333814224
+        .long	3230017539
+        .long	4018775563
+        .long	3189567218
+        .long	4116382408
+        .long	3230017541
+        .long	3373913644
+        .long	3189567103
+        .long	594007232
+        .long	3230017544
+        .long	2818265402
+        .long	3189568021
+        .long	1356644520
+        .long	3230017546
+        .long	1075601108
+        .long	3189567716
+        .long	2109348112
+        .long	3230017548
+        .long	3342127702
+        .long	3189567566
+        .long	2852139088
+        .long	3230017550
+        .long	2910355434
+        .long	3189567504
+        .long	3585038464
+        .long	3230017552
+        .long	611858749
+        .long	3189567074
+        .long	13099880
+        .long	3230017555
+        .long	1954698831
+        .long	3189567516
+        .long	726278816
+        .long	3230017557
+        .long	550712630
+        .long	3189567710
+        .long	1429628792
+        .long	3230017559
+        .long	3672474493
+        .long	3189567278
+        .long	2123170544
+        .long	3230017561
+        .long	1160875209
+        .long	3189567651
+        .long	2806924760
+        .long	3230017563
+        .long	2242524344
+        .long	3189568000
+        .long	3480912064
+        .long	3230017565
+        .long	2823138691
+        .long	3189567327
+        .long	4145152992
+        .long	3230017567
+        .long	3521079748
+        .long	3189567568
+        .long	504700744
+        .long	3230017570
+        .long	1136670137
+        .long	3189567486
+        .long	1149510328
+        .long	3230017572
+        .long	806933442
+        .long	3189567823
+        .long	1784634816
+        .long	3230017574
+        .long	1606084669
+        .long	3189567242
+        .long	2410094488
+        .long	3230017576
+        .long	2841342625
+        .long	3189567480
+        .long	3025909584
+        .long	3230017578
+        .long	984188059
+        .long	3189567239
+        .long	3632100264
+        .long	3230017580
+        .long	3011730434
+        .long	3189567337
+        .long	4228686632
+        .long	3230017582
+        .long	328432041
+        .long	3189567676
+        .long	520721440
+        .long	3230017585
+        .long	2057225622
+        .long	3189567268
+        .long	1098159248
+        .long	3230017587
+        .long	3150727306
+        .long	3189567348
+        .long	1666052680
+        .long	3230017589
+        .long	3291380622
+        .long	3189567307
+        .long	2224421584
+        .long	3230017591
+        .long	3570771984
+        .long	3189567798
+        .long	2773285760
+        .long	3230017593
+        .long	2427604440
+        .long	3189567698
+        .long	3312664936
+        .long	3230017595
+        .long	3733848165
+        .long	3189567211
+        .long	3842578768
+        .long	3230017597
+        .long	2673912350
+        .long	3189567904
+        .long	68079584
+        .long	3230017600
+        .long	960995892
+        .long	3189567616
+        .long	579121512
+        .long	3230017602
+        .long	4150493479
+        .long	3189567659
+        .long	1080756744
+        .long	3230017604
+        .long	1054941272
+        .long	3189567735
+        .long	1573004704
+        .long	3230017606
+        .long	2574365292
+        .long	3189568007
+        .long	2055884768
+        .long	3230017608
+        .long	2507498673
+        .long	3189567092
+        .long	2529416224
+        .long	3230017610
+        .long	2082176323
+        .long	3189567207
+        .long	2993618320
+        .long	3230017612
+        .long	3719982601
+        .long	3189568058
+        .long	3448510256
+        .long	3230017614
+        .long	4104247904
+        .long	3189567897
+        .long	3894111152
+        .long	3230017616
+        .long	3735557011
+        .long	3189567647
+        .long	35472776
+        .long	3230017619
+        .long	2914260983
+        .long	3189567862
+        .long	462548736
+        .long	3230017621
+        .long	1334094042
+        .long	3189567734
+        .long	880390688
+        .long	3230017623
+        .long	1291097379
+        .long	3189567171
+        .long	1289017512
+        .long	3230017625
+        .long	1627119803
+        .long	3189567853
+        .long	1688448064
+        .long	3230017627
+        .long	3886873723
+        .long	3189567117
+        .long	2078701104
+        .long	3230017629
+        .long	627887757
+        .long	3189567206
+        .long	2459795360
+        .long	3230017631
+        .long	1722013861
+        .long	3189567101
+        .long	2831749488
+        .long	3230017633
+        .long	4163262354
+        .long	3189567678
+        .long	3194582104
+        .long	3230017635
+        .long	4170237688
+        .long	3189567639
+        .long	3548311752
+        .long	3230017637
+        .long	47563772
+        .long	3189567637
+        .long	3892956928
+        .long	3230017639
+        .long	2990136007
+        .long	3189567231
+        .long	4228536056
+        .long	3230017641
+        .long	4294532248
+        .long	3189567995
+        .long	260100240
+        .long	3230017644
+        .long	2060709623
+        .long	3189567397
+        .long	577602376
+        .long	3230017646
+        .long	1488525373
+        .long	3189568044
+        .long	886093456
+        .long	3230017648
+        .long	1657840200
+        .long	3189567474
+        .long	1185591680
+        .long	3230017650
+        .long	3155771782
+        .long	3189567399
+        .long	1476115208
+        .long	3230017652
+        .long	2195162329
+        .long	3189567591
+        .long	1757682144
+        .long	3230017654
+        .long	1292806663
+        .long	3189567956
+        .long	2030310544
+        .long	3230017656
+        .long	2151451208
+        .long	3189567540
+        .long	2294018392
+        .long	3230017658
+        .long	2224122735
+        .long	3189567630
+        .long	2548823632
+        .long	3230017660
+        .long	3554417607
+        .long	3189567684
+        .long	2794744152
+        .long	3230017662
+        .long	3831650627
+        .long	3189567409
+        .long	3031797776
+        .long	3230017664
+        .long	4024246224
+        .long	3189567811
+        .long	3260002296
+        .long	3230017666
+        .long	2530219738
+        .long	3189567128
+        .long	3479375416
+        .long	3230017668
+        .long	1618145996
+        .long	3189568024
+        .long	3689934832
+        .long	3230017670
+        .long	392379700
+        .long	3189567378
+        .long	3891698144
+        .long	3230017672
+        .long	55874694
+        .long	3189567574
+        .long	4084682928
+        .long	3230017674
+        .long	4294251475
+        .long	3189567312
+        .long	4268906688
+        .long	3230017676
+        .long	1899705040
+        .long	3189567783
+        .long	149419600
+        .long	3230017679
+        .long	357699389
+        .long	3189567568
+        .long	316173656
+        .long	3230017681
+        .long	3025711727
+        .long	3189567790
+        .long	474218920
+        .long	3230017683
+        .long	2921891821
+        .long	3189568046
+        .long	623572704
+        .long	3230017685
+        .long	1716968749
+        .long	3189567453
+        .long	764252248
+        .long	3230017687
+        .long	2393171526
+        .long	3189567748
+        .long	896274768
+        .long	3230017689
+        .long	1343317993
+        .long	3189567172
+        .long	1019657400
+        .long	3230017691
+        .long	1388235839
+        .long	3189567661
+        .long	1134417256
+        .long	3230017693
+        .long	2766147125
+        .long	3189567706
+        .long	1240571384
+        .long	3230017695
+        .long	2162068842
+        .long	3189567499
+        .long	1338136776
+        .long	3230017697
+        .long	4075455588
+        .long	3189567932
+        .long	1427130392
+        .long	3230017699
+        .long	1579647664
+        .long	3189567555
+        .long	1507569120
+        .long	3230017701
+        .long	3785749868
+        .long	3189567715
+        .long	1579469816
+        .long	3230017703
+        .long	2639950365
+        .long	3189567469
+        .long	1642849272
+        .long	3230017705
+        .long	3611501026
+        .long	3189567698
+        .long	1697724240
+        .long	3230017707
+        .long	15422953
+        .long	3189568066
+        .long	1744111424
+        .long	3230017709
+        .long	2642213241
+        .long	3189568062
+        .long	1782027472
+        .long	3230017711
+        .long	143606300
+        .long	3189568058
+        .long	1811488992
+        .long	3230017713
+        .long	501328690
+        .long	3189567276
+        .long	1832512520
+        .long	3230017715
+        .long	3258054578
+        .long	3189567915
+        .long	1845114576
+        .long	3230017717
+        .long	1297851139
+        .long	3189568007
+        .long	1849311616
+        .long	3230017719
+        .long	3589200000
+        .long	3189567580
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .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	2846560486
+        .long	3210737666
+        .long	2729511872
+        .long	3211784202
+        .long	3956813460
+        .long	3212307985
+        .long	1796237193
+        .long	3212828714
+        .long	1562748889
+        .long	3213092649
+        .long	1602292343
+        .long	3213352007
+        .long	745814092
+        .long	3213610865
+        .long	2969306084
+        .long	3213869224
+        .long	3953060839
+        .long	3214006263
+        .long	1128703349
+        .long	3214134948
+        .long	1371067273
+        .long	3214263386
+        .long	131445019
+        .long	3214391579
+        .long	1427948820
+        .long	3214519527
+        .long	665817496
+        .long	3214647232
+        .long	1817459908
+        .long	3214774694
+        .long	242758400
+        .long	3214901915
+        .long	2082038134
+        .long	3214981455
+        .long	2300828032
+        .long	3215044825
+        .long	571795571
+        .long	3215108076
+        .long	3120479584
+        .long	3215171207
+        .long	3276640540
+        .long	3215234220
+        .long	2949178581
+        .long	3215297115
+        .long	4036279704
+        .long	3215359892
+        .long	4130528508
+        .long	3215422552
+        .long	813954767
+        .long	3215485096
+        .long	248046571
+        .long	3215547523
+        .long	4288926261
+        .long	3215609833
+        .long	1897492927
+        .long	3215672029
+        .long	3499237165
+        .long	3215734109
+        .long	2329611090
+        .long	3215796075
+        .long	203907094
+        .long	3215857927
+        .long	3222364838
+        .long	3215919664
+        .long	295408387
+        .long	3215981289
+        .long	899212401
+        .long	3216012696
+        .long	2606049022
+        .long	3216043395
+        .long	4003691233
+        .long	3216074038
+        .long	1675303236
+        .long	3216104626
+        .long	789189655
+        .long	3216135158
+        .long	2213928479
+        .long	3216165634
+        .long	2518405585
+        .long	3216196055
+        .long	2561783534
+        .long	3216226421
+        .long	3198568176
+        .long	3216256732
+        .long	983674944
+        .long	3216286989
+        .long	1057364031
+        .long	3216317191
+        .long	4260371496
+        .long	3216347338
+        .long	2838974660
+        .long	3216377432
+        .long	1919860988
+        .long	3216407472
+        .long	2330291020
+        .long	3216437458
+        .long	598130195
+        .long	3216467391
+        .long	1836782285
+        .long	3216497270
+        .long	2565351466
+        .long	3216527096
+        .long	3593575201
+        .long	3216556869
+        .long	1431920350
+        .long	3216586590
+        .long	1176515501
+        .long	3216616258
+        .long	3624279252
+        .long	3216645873
+        .long	977982819
+        .long	3216675437
+        .long	2616083454
+        .long	3216704948
+        .long	733015457
+        .long	3216734408
+        .long	403990373
+        .long	3216763816
+        .long	2405156675
+        .long	3216793172
+        .long	3213628385
+        .long	3216822477
+        .long	3597448029
+        .long	3216851731
+        .long	25680167
+        .long	3216880935
+        .long	1848308454
+        .long	3216910087
+        .long	1231492199
+        .long	3216939189
+        .long	3222364838
+        .long	3216968240
+        .long	4274224607
+        .long	3216997241
+        .long	836496059
+        .long	3217026193
+        .long	1119829323
+        .long	3217043131
+        .long	315251054
+        .long	3217057557
+        .long	518461891
+        .long	3217071958
+        .long	2094042713
+        .long	3217086334
+        .long	1109735857
+        .long	3217100686
+        .long	2221359788
+        .long	3217115013
+        .long	1492952593
+        .long	3217129316
+        .long	3576653728
+        .long	3217143594
+        .long	237880003
+        .long	3217157849
+        .long	420109003
+        .long	3217172079
+        .long	180120274
+        .long	3217186285
+        .long	4162843939
+        .long	3217200466
+        .long	4126536273
+        .long	3217214624
+        .long	417628115
+        .long	3217228759
+        .long	1970736719
+        .long	3217242869
+        .long	538873716
+        .long	3217256956
+        .long	758227830
+        .long	3217271019
+        .long	2968307242
+        .long	3217285058
+        .long	3211951040
+        .long	3217299074
+        .long	1825275166
+        .long	3217313067
+        .long	3437683677
+        .long	3217327036
+        .long	4086978021
+        .long	3217340982
+        .long	4104270002
+        .long	3217354905
+        .long	3819025464
+        .long	3217368805
+        .long	3559075183
+        .long	3217382682
+        .long	3650625670
+        .long	3217396536
+        .long	123302585
+        .long	3217410368
+        .long	1890030548
+        .long	3217424176
+        .long	682272600
+        .long	3217437962
+        .long	1114811729
+        .long	3217451725
+        .long	3505892050
+        .long	3217465465
+        .long	3877229085
+        .long	3217479183
+        .long	2543954549
+        .long	3217492879
+        .long	4114626469
+        .long	3217506552
+        .long	311370023
+        .long	3217520204
+        .long	34658569
+        .long	3217533833
+        .long	3593519732
+        .long	3217547439
+        .long	2705545195
+        .long	3217561024
+        .long	1971736889
+        .long	3217574587
+        .long	1696647441
+        .long	3217588128
+        .long	2183357019
+        .long	3217601647
+        .long	3733482817
+        .long	3217615144
+        .long	2352221150
+        .long	3217628620
+        .long	2633258676
+        .long	3217642074
+        .long	578912458
+        .long	3217655507
+        .long	780008323
+        .long	3217668918
+        .long	3530988084
+        .long	3217682307
+        .long	534951267
+        .long	3217695676
+        .long	673467853
+        .long	3217709023
+        .long	4236783385
+        .long	3217722348
+        .long	2923827788
+        .long	3217735653
+        .long	1317060595
+        .long	3217748937
+        .long	3997577740
+        .long	3217762199
+        .long	2660218276
+        .long	3217775441
+        .long	1883376699
+        .long	3217788662
+        .long	1949142230
+        .long	3217801862
+        .long	3138274530
+        .long	3217815041
+        .long	1435244737
+        .long	3217828200
+        .long	1413145637
+        .long	3217841338
+        .long	3348797986
+        .long	3217854455
+        .long	3222758658
+        .long	3217867552
+        .long	1309263324
+        .long	3217880629
+        .long	2176234471
+        .long	3217893685
+        .long	1800387473
+        .long	3217906721
+        .long	452140382
+        .long	3217919737
+        .long	2695621757
+        .long	3217932732
+        .long	208809263
+        .long	3217945708
+        .long	1848308454
+        .long	3217958663
+        .long	3584589359
+        .long	3217971598
+        .long	1386895968
+        .long	3217984514
+        .long	4108155659
+        .long	3217997409
+        .long	3420215606
+        .long	3218010285
+        .long	3878621277
+        .long	3218023141
+        .long	1447787319
+        .long	3218035978
+        .long	680874053
+        .long	3218048795
+        .long	1834892843
+        .long	3218061592
+        .long	870713292
+        .long	3218074370
+        .long	1168986141
+        .long	3218083436
+        .long	3245089583
+        .long	3218089805
+        .long	2494877761
+        .long	3218096165
+        .long	3338922950
+        .long	3218102515
+        .long	1607293197
+        .long	3218108856
+        .long	1719424943
+        .long	3218115187
+        .long	3799224547
+        .long	3218121508
+        .long	3675071677
+        .long	3218127820
+        .long	1469757259
+        .long	3218134123
+        .long	1600486820
+        .long	3218140416
+        .long	4188949205
+        .long	3218146699
+        .long	766352567
+        .long	3218152974
+        .long	43231408
+        .long	3218159239
+        .long	2139646042
+        .long	3218165494
+        .long	2880153102
+        .long	3218171740
+        .long	2383743325
+        .long	3218177977
+        .long	768877423
+        .long	3218184205
+        .long	2448456521
+        .long	3218190423
+        .long	3244923387
+        .long	3218196632
+        .long	3275167422
+        .long	3218202832
+        .long	2655560435
+        .long	3218209023
+        .long	1501959692
+        .long	3218215205
+        .long	4224678246
+        .long	3218221377
+        .long	2348618756
+        .long	3218227541
+        .long	283080250
+        .long	3218233696
+        .long	2436859197
+        .long	3218239841
+        .long	333350563
+        .long	3218245978
+        .long	2675321801
+        .long	3218252105
+        .long	985177381
+        .long	3218258224
+        .long	3964700035
+        .long	3218264333
+        .long	3135315249
+        .long	3218270434
+        .long	2902865164
+        .long	3218276526
+        .long	3377742213
+        .long	3218282609
+        .long	374891912
+        .long	3218288684
+        .long	2593684821
+        .long	3218294749
+        .long	1553148222
+        .long	3218300806
+        .long	1656739931
+        .long	3218306854
+        .long	3012481825
+        .long	3218312893
+        .long	1432962538
+        .long	3218318924
+        .long	1320242026
+        .long	3218324946
+        .long	2780952336
+        .long	3218330959
+        .long	1626300240
+        .long	3218336964
+        .long	2256971748
+        .long	3218342960
+        .long	483265518
+        .long	3218348948
+        .long	704964628
+        .long	3218354927
+        .long	3026437244
+        .long	3218360897
+        .long	3256639170
+        .long	3218366859
+        .long	1499050969
+        .long	3218372813
+        .long	2151680465
+        .long	3218378758
+        .long	1022163351
+        .long	3218384695
+        .long	2507634849
+        .long	3218390623
+        .long	2414862975
+        .long	3218396543
+        .long	845152874
+        .long	3218402455
+        .long	2194349235
+        .long	3218408358
+        .long	2267936813
+        .long	3218414253
+        .long	1165944702
+        .long	3218420140
+        .long	3282948707
+        .long	3218426018
+        .long	128204514
+        .long	3218431889
+        .long	390421100
+        .long	3218437751
+        .long	4167959282
+        .long	3218443604
+        .long	2968834018
+        .long	3218449450
+        .long	1185553177
+        .long	3218455288
+        .long	3210217930
+        .long	3218461117
+        .long	549623114
+        .long	3218466939
+        .long	1890030548
+        .long	3218472752
+        .long	3032400188
+        .long	3218478557
+        .long	4072261525
+        .long	3218484354
+        .long	3450874911
+        .long	1070995813
+        .long	2331021804
+        .long	1070990032
+        .long	1029453230
+        .long	1070984259
+        .long	3747176240
+        .long	1070978493
+        .long	1800682930
+        .long	1070972736
+        .long	3686719393
+        .long	1070966986
+        .long	722545241
+        .long	1070961245
+        .long	1405669883
+        .long	1070955511
+        .long	1349079372
+        .long	1070949785
+        .long	461103529
+        .long	1070944067
+        .long	2945413886
+        .long	1070938356
+        .long	121152472
+        .long	1070932654
+        .long	487700860
+        .long	1070926959
+        .long	3954874384
+        .long	1070921271
+        .long	1842920138
+        .long	1070915592
+        .long	2652318780
+        .long	1070909920
+        .long	1999011482
+        .long	1070904256
+        .long	4089234463
+        .long	1070898599
+        .long	244680560
+        .long	1070892951
+        .long	3262235675
+        .long	1070887309
+        .long	169336595
+        .long	1070881676
+        .long	3763576649
+        .long	1070876049
+        .long	1073096258
+        .long	1070870431
+        .long	601221319
+        .long	1070864820
+        .long	2261690268
+        .long	1070859216
+        .long	1673619518
+        .long	1070853620
+        .long	3046403514
+        .long	1070848031
+        .long	1999843716
+        .long	1070842450
+        .long	2744015967
+        .long	1070836876
+        .long	899399508
+        .long	1070831310
+        .long	676744370
+        .long	1070825751
+        .long	1992167703
+        .long	1070820199
+        .long	467152011
+        .long	1070814655
+        .long	313445281
+        .long	1070809118
+        .long	1448157352
+        .long	1070803588
+        .long	3788725476
+        .long	1070798065
+        .long	2957945300
+        .long	1070792550
+        .long	3168871046
+        .long	1070787042
+        .long	44944622
+        .long	1070781542
+        .long	2094830420
+        .long	1070776048
+        .long	647642559
+        .long	1070770562
+        .long	4212681596
+        .long	1070765082
+        .long	4119694493
+        .long	1070759610
+        .long	288676754
+        .long	1070754146
+        .long	1229870791
+        .long	1070748688
+        .long	2568927817
+        .long	1070743237
+        .long	4226775419
+        .long	1070737793
+        .long	1829681364
+        .long	1070732357
+        .long	3889121191
+        .long	1070726927
+        .long	1737005556
+        .long	1070721505
+        .long	3885417029
+        .long	1070716089
+        .long	1666870165
+        .long	1070710681
+        .long	3594048319
+        .long	1070705279
+        .long	1000063738
+        .long	1070699885
+        .long	2398194399
+        .long	1070694497
+        .long	3417111411
+        .long	1070689116
+        .long	3980746691
+        .long	1070683742
+        .long	4013324163
+        .long	1070678375
+        .long	3439358267
+        .long	1070673015
+        .long	2183652476
+        .long	1070667662
+        .long	171297820
+        .long	1070662316
+        .long	1622638721
+        .long	1070656976
+        .long	2168369647
+        .long	1070651643
+        .long	1734435555
+        .long	1070646317
+        .long	247063161
+        .long	1070640998
+        .long	1927726804
+        .long	1070635685
+        .long	2408245143
+        .long	1070630379
+        .long	1615681634
+        .long	1070625080
+        .long	3772343130
+        .long	1070619787
+        .long	215909304
+        .long	1070614502
+        .long	3759169634
+        .long	1070609222
+        .long	1445381777
+        .long	1070603950
+        .long	1792910451
+        .long	1070598684
+        .long	870975437
+        .long	1070590754
+        .long	3194096222
+        .long	1070580248
+        .long	1823716217
+        .long	1070569756
+        .long	913800688
+        .long	1070559277
+        .long	323875369
+        .long	1070548811
+        .long	4208958430
+        .long	1070538357
+        .long	3839688678
+        .long	1070527917
+        .long	3372126730
+        .long	1070517490
+        .long	2667883253
+        .long	1070507076
+        .long	1589083690
+        .long	1070496675
+        .long	4293333010
+        .long	1070486286
+        .long	2053843986
+        .long	1070475911
+        .long	3324205749
+        .long	1070465548
+        .long	3673610217
+        .long	1070455198
+        .long	2966718784
+        .long	1070444861
+        .long	1068692560
+        .long	1070434537
+        .long	2140157205
+        .long	1070424225
+        .long	1752298597
+        .long	1070413926
+        .long	4066729595
+        .long	1070403639
+        .long	360651144
+        .long	1070393366
+        .long	3386588242
+        .long	1070383104
+        .long	127747308
+        .long	1070372856
+        .long	3337621361
+        .long	1070362619
+        .long	380113
+        .long	1070352396
+        .long	2870475188
+        .long	1070342184
+        .long	3227997535
+        .long	1070331985
+        .long	943446189
+        .long	1070321799
+        .long	182758681
+        .long	1070311625
+        .long	817374162
+        .long	1070301463
+        .long	2719198427
+        .long	1070291313
+        .long	1465634365
+        .long	1070281176
+        .long	1224481606
+        .long	1070271051
+        .long	1869032404
+        .long	1070260938
+        .long	3273036717
+        .long	1070250837
+        .long	1015732707
+        .long	1070240749
+        .long	3561713742
+        .long	1070230672
+        .long	2196155141
+        .long	1070220608
+        .long	1089583089
+        .long	1070210556
+        .long	118003300
+        .long	1070200516
+        .long	3452833475
+        .long	1070190487
+        .long	2381031992
+        .long	1070180471
+        .long	1074899573
+        .long	1070170467
+        .long	3707175295
+        .long	1070160474
+        .long	1566132617
+        .long	1070150494
+        .long	3120348377
+        .long	1070140525
+        .long	3953929663
+        .long	1070130568
+        .long	3946380940
+        .long	1070120623
+        .long	2977634725
+        .long	1070110690
+        .long	928049556
+        .long	1070100769
+        .long	1973375279
+        .long	1070090859
+        .long	1699849154
+        .long	1070080961
+        .long	4284063055
+        .long	1070071074
+        .long	1018125008
+        .long	1070061200
+        .long	374428300
+        .long	1070051337
+        .long	2235845747
+        .long	1070041485
+        .long	2190695046
+        .long	1070031645
+        .long	122671437
+        .long	1070021817
+        .long	210845780
+        .long	1070012000
+        .long	2339728060
+        .long	1070002194
+        .long	2099265479
+        .long	1069992400
+        .long	3669742467
+        .long	1069982617
+        .long	2641909617
+        .long	1069972846
+        .long	3196851002
+        .long	1069963086
+        .long	926113142
+        .long	1069953338
+        .long	11572342
+        .long	1069943601
+        .long	340530969
+        .long	1069933875
+        .long	1800682930
+        .long	1069924160
+        .long	4280111857
+        .long	1069914456
+        .long	3372322013
+        .long	1069904764
+        .long	3261138386
+        .long	1069895083
+        .long	3835803021
+        .long	1069885413
+        .long	690973253
+        .long	1069875755
+        .long	2306589128
+        .long	1069866107
+        .long	4278067876
+        .long	1069856470
+        .long	2201204065
+        .long	1069846845
+        .long	262102455
+        .long	1069837231
+        .long	2647241692
+        .long	1069827627
+        .long	658570708
+        .long	1069818035
+        .long	2778278092
+        .long	1069808453
+        .long	309052031
+        .long	1069798883
+        .long	1733817001
+        .long	1069789323
+        .long	2650961017
+        .long	1069779774
+        .long	2954203158
+        .long	1069770236
+        .long	2537624622
+        .long	1069760709
+        .long	1295667077
+        .long	1069751193
+        .long	3418098326
+        .long	1069741687
+        .long	210141498
+        .long	1069732193
+        .long	157244505
+        .long	1069722709
+        .long	3155274661
+        .long	1069713235
+        .long	510517079
+        .long	1069703773
+        .long	709476866
+        .long	1069694321
+        .long	3649073763
+        .long	1069684879
+        .long	636640577
+        .long	1069675449
+        .long	159725394
+        .long	1069666029
+        .long	2116286250
+        .long	1069656619
+        .long	2109656884
+        .long	1069647220
+        .long	38479793
+        .long	1069637832
+        .long	96704707
+        .long	1069628454
+        .long	2183652476
+        .long	1069619086
+        .long	1904013563
+        .long	1069609729
+        .long	3452748429
+        .long	1069600382
+        .long	2435216853
+        .long	1069591046
+        .long	3047045639
+        .long	1069581720
+        .long	894257944
+        .long	1069572405
+        .long	173141005
+        .long	1069563100
+        .long	785342784
+        .long	1069553805
+        .long	970708326
+        .long	1069541521
+        .long	2645916898
+        .long	1069522972
+        .long	2106590683
+        .long	1069504444
+        .long	3453588195
+        .long	1069485936
+        .long	2198475040
+        .long	1069467449
+        .long	2443390270
+        .long	1069448982
+        .long	3996141691
+        .long	1069430535
+        .long	2370203065
+        .long	1069412109
+        .long	1669613218
+        .long	1069393703
+        .long	1704071394
+        .long	1069375317
+        .long	2283901796
+        .long	1069356951
+        .long	3220050856
+        .long	1069338605
+        .long	29117219
+        .long	1069320280
+        .long	1113218225
+        .long	1069301974
+        .long	1990183441
+        .long	1069283688
+        .long	2473421172
+        .long	1069265422
+        .long	2376948508
+        .long	1069247176
+        .long	1515388672
+        .long	1069228950
+        .long	3998935692
+        .long	1069210743
+        .long	1053482595
+        .long	1069192557
+        .long	1085389880
+        .long	1069174390
+        .long	3911679148
+        .long	1069156242
+        .long	760030536
+        .long	1069138115
+        .long	38583924
+        .long	1069120007
+        .long	1566132617
+        .long	1069101918
+        .long	867088104
+        .long	1069083849
+        .long	2056379433
+        .long	1069065799
+        .long	659581512
+        .long	1069047769
+        .long	792781808
+        .long	1069029758
+        .long	2277675977
+        .long	1069011766
+        .long	641565395
+        .long	1068993794
+        .long	2256601
+        .long	1068975841
+        .long	183156961
+        .long	1068957907
+        .long	1008239542
+        .long	1068939992
+        .long	2302040698
+        .long	1068922096
+        .long	3889657667
+        .long	1068904219
+        .long	1301778891
+        .long	1068886362
+        .long	2954550821
+        .long	1068868523
+        .long	84804484
+        .long	1068850704
+        .long	1109791498
+        .long	1068832903
+        .long	1562410668
+        .long	1068815121
+        .long	1271074840
+        .long	1068797358
+        .long	64741293
+        .long	1068779614
+        .long	2067876735
+        .long	1068761888
+        .long	2815553124
+        .long	1068744181
+        .long	2138347284
+        .long	1068726493
+        .long	4162338635
+        .long	1068708823
+        .long	129237761
+        .long	1068691173
+        .long	2756122533
+        .long	1068673540
+        .long	3285762921
+        .long	1068655926
+        .long	1551389854
+        .long	1068638331
+        .long	1681725707
+        .long	1068620754
+        .long	3511047527
+        .long	1068603195
+        .long	2579184841
+        .long	1068585655
+        .long	3016419377
+        .long	1068568133
+        .long	363613719
+        .long	1068550630
+        .long	3047045639
+        .long	1068533144
+        .long	2313634884
+        .long	1068515677
+        .long	296456961
+        .long	1068497513
+        .long	1367328035
+        .long	1068462651
+        .long	3221665916
+        .long	1068427825
+        .long	1242258971
+        .long	1068393036
+        .long	3697798734
+        .long	1068358282
+        .long	1678104687
+        .long	1068323565
+        .long	3453858508
+        .long	1068288883
+        .long	116861598
+        .long	1068254238
+        .long	4234736672
+        .long	1068219627
+        .long	2606283437
+        .long	1068185053
+        .long	3506114812
+        .long	1068150514
+        .long	2324914545
+        .long	1068116011
+        .long	3044269692
+        .long	1068081543
+        .long	1056797460
+        .long	1068047111
+        .long	346010435
+        .long	1068012714
+        .long	601410756
+        .long	1067978352
+        .long	1513453498
+        .long	1067944025
+        .long	2773542775
+        .long	1067909733
+        .long	4074027864
+        .long	1067875476
+        .long	813232056
+        .long	1067841255
+        .long	1275317999
+        .long	1067807068
+        .long	860480111
+        .long	1067772916
+        .long	3559777258
+        .long	1067738798
+        .long	480292498
+        .long	1067704716
+        .long	4204867691
+        .long	1067670667
+        .long	1547459502
+        .long	1067636654
+        .long	797775935
+        .long	1067602675
+        .long	1656501562
+        .long	1067568730
+        .long	3825228429
+        .long	1067534819
+        .long	2711485098
+        .long	1067500943
+        .long	2313634884
+        .long	1067467101
+        .long	376973398
+        .long	1067416219
+        .long	672386641
+        .long	1067348671
+        .long	630691842
+        .long	1067281191
+        .long	3960777458
+        .long	1067213778
+        .long	1488394470
+        .long	1067146434
+        .long	1220920383
+        .long	1067079157
+        .long	2577548405
+        .long	1067011947
+        .long	684247743
+        .long	1066944805
+        .long	3553625811
+        .long	1066877729
+        .long	2020150230
+        .long	1066810721
+        .long	4099880293
+        .long	1066743779
+        .long	630721729
+        .long	1066676905
+        .long	3927125538
+        .long	1066610096
+        .long	535440936
+        .long	1066543355
+        .long	2773516144
+        .long	1066476679
+        .long	1486051399
+        .long	1066410070
+        .long	808661260
+        .long	1066285262
+        .long	2227658502
+        .long	1066152307
+        .long	1813447778
+        .long	1066019484
+        .long	2743640746
+        .long	1065886792
+        .long	3904192454
+        .long	1065754231
+        .long	4184355568
+        .long	1065621801
+        .long	2476667369
+        .long	1065489502
+        .long	1971904113
+        .long	1065357333
+        .long	3138267131
+        .long	1065097372
+        .long	341338964
+        .long	1064833554
+        .long	1954052322
+        .long	1064569994
+        .long	1498975029
+        .long	1064306693
+        .long	2190050752
+        .long	1063782660
+        .long	1440057502
+        .long	1063257089
+        .long	1432705161
+        .long	1062208000
+        .long	0
+        .long	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .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	2900053258
+        .long	1070176668
+        .long	2900053258
+        .long	1070176668
+        .long	1208323809
+        .long	3218079745
+        .long	1208323809
+        .long	3218079745
+        .long	1431651269
+        .long	1070945621
+        .long	1431651269
+        .long	1070945621
+        .long	4294965279
+        .long	3219128319
+        .long	4294965279
+        .long	3219128319
+        .long	4294967295
+        .long	1048575
+        .long	4294967295
+        .long	1048575
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .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	1062207488
+        .long	0
+        .long	1062207488
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .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	3220176895
+        .long	4294967295
+        .long	3220176895
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .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	4294963200
+        .long	2134900735
+        .long	4294963200
+        .long	2134900735
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .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	4227858432
+        .long	4294967295
+        .long	4227858432
+        .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	1072693248
+        .long	0
+        .long	1072693248
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .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	0
+        .long	1040187392
+        .long	0
+        .long	1040187392
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .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	4294966272
+        .long	4294967295
+        .long	4294966272
+        .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	4277796864
+        .long	1072049730
+        .long	4277796864
+        .long	1072049730
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .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	3164471296
+        .long	1031600026
+        .long	3164471296
+        .long	1031600026
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .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	1082564608
+        .long	0
+        .long	1082564608
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .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	1083176960
+        .long	0
+        .long	1083176960
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .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	1083174912
+        .long	0
+        .long	1083174912
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .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	2146435072
+        .long	0
+        .long	2146435072
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .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	2134900736
+        .long	0
+        .long	2134900736
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .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	4277811695
+        .long	1072049730
+        .long	4277811695
+        .long	1072049730
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .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	1104150528
+        .long	0
+        .long	1104150528
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .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	1071120384
+        .long	0
+        .long	1071120384
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .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	1070858240
+        .long	0
+        .long	1070858240
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .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	1070694400
+        .long	0
+        .long	1070694400
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .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	1070563328
+        .long	0
+        .long	1070563328
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .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	1071644672
+        .long	0
+        .long	1071644672
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .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	2146435071
+        .long	4294967295
+        .long	2146435071
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .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	1063256064
+        .long	0
+        .long	1063256064
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .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	0
+        .long	1077870592
+        .long	0
+        .long	1077870592
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .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	4294966784
+        .long	0
+        .long	4294966784
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .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	4160749568
+        .long	4294967295
+        .long	4160749568
+        .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	4278190080
+        .long	4294967295
+        .long	4278190080
+        .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	4294963200
+        .long	4294967295
+        .long	4294963200
+        .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	1041235968
+        .long	0
+        .long	1041235968
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .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	55574528
+        .long	0
+        .long	55574528
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .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	2146435072
+        .long	0
+        .long	4293918720
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .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	1072693248
+        .long	0
+        .long	3220176896
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .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	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
+        .type	__svml_datanh_data_internal,@object
+        .size	__svml_datanh_data_internal,14784
+        .align 16
+
+.FLT_26:
+        .long	0x00000000,0x43380000,0x00000000,0x43380000
+        .type	.FLT_26,@object
+        .size	.FLT_26,16
+        .align 8
+
+__datanh_la_CoutTab:
+        .long	0
+        .long	1072693248
+        .long	0
+        .long	0
+        .long	0
+        .long	2146435072
+        .long	0
+        .long	4293918720
+        .type	__datanh_la_CoutTab,@object
+        .size	__datanh_la_CoutTab,32
diff --git a/sysdeps/x86_64/fpu/multiarch/svml_d_atanh4_core-sse.S b/sysdeps/x86_64/fpu/multiarch/svml_d_atanh4_core-sse.S
new file mode 100644
index 0000000000..a39cbb7595
--- /dev/null
+++ b/sysdeps/x86_64/fpu/multiarch/svml_d_atanh4_core-sse.S
@@ -0,0 +1,20 @@ 
+/* SSE version of vectorized atanh, 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_atanh _ZGVdN4v_atanh_sse_wrapper
+#include "../svml_d_atanh4_core.S"
diff --git a/sysdeps/x86_64/fpu/multiarch/svml_d_atanh4_core.c b/sysdeps/x86_64/fpu/multiarch/svml_d_atanh4_core.c
new file mode 100644
index 0000000000..e8ef343ae7
--- /dev/null
+++ b/sysdeps/x86_64/fpu/multiarch/svml_d_atanh4_core.c
@@ -0,0 +1,27 @@ 
+/* Multiple versions of vectorized atanh, 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_atanh
+#include "ifunc-mathvec-avx2.h"
+
+libc_ifunc_redirected (REDIRECT_NAME, SYMBOL_NAME, IFUNC_SELECTOR ());
+
+#ifdef SHARED
+__hidden_ver1 (_ZGVdN4v_atanh, __GI__ZGVdN4v_atanh, __redirect__ZGVdN4v_atanh)
+  __attribute__ ((visibility ("hidden")));
+#endif
diff --git a/sysdeps/x86_64/fpu/multiarch/svml_d_atanh4_core_avx2.S b/sysdeps/x86_64/fpu/multiarch/svml_d_atanh4_core_avx2.S
new file mode 100644
index 0000000000..6dc72f269d
--- /dev/null
+++ b/sysdeps/x86_64/fpu/multiarch/svml_d_atanh4_core_avx2.S
@@ -0,0 +1,5080 @@ 
+/* Function atanh 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:
+ *
+ *   Compute atanh(x) as 0.5 * log((1 + x)/(1 - x))
+ *
+ *   Special cases:
+ *
+ *   atanh(0)  = 0
+ *   atanh(+1) = +INF
+ *   atanh(-1) = -INF
+ *   atanh(x)  = NaN if |x| > 1, or if x is a NaN or INF
+ *
+ */
+
+#include <sysdep.h>
+
+        .text
+ENTRY(_ZGVdN4v_atanh_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       -4218816+__svml_datanh_data_internal(%rip), %rax
+        vmovupd   12928+__svml_datanh_data_internal(%rip), %ymm7
+        vmovups   %ymm11, 192(%rsp)
+        .cfi_escape 0x10, 0xde, 0x00, 0x0e, 0x38, 0x1c, 0x0d, 0xc0, 0xff, 0xff, 0xff, 0x1a, 0x0d, 0x40, 0xff, 0xff, 0xff, 0x22
+
+/* Load the constant 1 and a sign mask */
+        vmovupd   12864+__svml_datanh_data_internal(%rip), %ymm11
+        vmovups   %ymm12, 224(%rsp)
+        vmovups   %ymm13, 256(%rsp)
+        vmovups   %ymm14, 288(%rsp)
+        vmovups   %ymm9, 32(%rsp)
+        vmovups   %ymm8, 96(%rsp)
+        vmovups   %ymm15, 320(%rsp)
+        vmovups   %ymm10, 160(%rsp)
+        .cfi_escape 0x10, 0xdb, 0x00, 0x0e, 0x38, 0x1c, 0x0d, 0xc0, 0xff, 0xff, 0xff, 0x1a, 0x0d, 0xe0, 0xfe, 0xff, 0xff, 0x22
+        .cfi_escape 0x10, 0xdc, 0x00, 0x0e, 0x38, 0x1c, 0x0d, 0xc0, 0xff, 0xff, 0xff, 0x1a, 0x0d, 0xa0, 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, 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
+        vmovapd   %ymm0, %ymm12
+
+/* Strip off the sign, so treat X as positive until right at the end */
+        vandpd    %ymm7, %ymm12, %ymm1
+        vsubpd    %ymm1, %ymm11, %ymm6
+
+/*
+ * Check whether |X| < 1, in which case we use the main function.
+ * Otherwise set the rangemask so that the callout will get used.
+ * Note that this will also use the callout for NaNs since not(NaN < 1).
+ */
+        vcmpnlt_uqpd %ymm11, %ymm1, %ymm5
+        vcmplt_oqpd 14592+__svml_datanh_data_internal(%rip), %ymm1, %ymm10
+        vsubpd    %ymm6, %ymm11, %ymm2
+
+/*
+ * Compute V = 2 * X trivially, and UHi + U_lo = 1 - X in two pieces,
+ * the upper part UHi being <= 41 bits long. Then we have
+ * atanh(X) = 1/2 * log((1 + X) / (1 - X)) = 1/2 * log1p(V / (UHi + ULo)).
+ */
+        vaddpd    %ymm1, %ymm1, %ymm0
+        vcvtpd2ps %ymm6, %xmm3
+        vsubpd    %ymm1, %ymm2, %ymm15
+        vrcpps    %xmm3, %xmm13
+        vmovapd   %ymm12, %ymm4
+        vfmadd213pd %ymm12, %ymm12, %ymm4
+        vcvtps2pd %xmm13, %ymm14
+
+/* Record the sign for eventual reincorporation. */
+        vandpd    14144+__svml_datanh_data_internal(%rip), %ymm12, %ymm9
+
+/* Or the sign bit in with the tiny result to handle atanh(-0) correctly */
+        vorpd     %ymm9, %ymm4, %ymm8
+        vandpd    14272+__svml_datanh_data_internal(%rip), %ymm14, %ymm4
+
+/* No need to split dU when FMA is available */
+        vfnmadd213pd %ymm11, %ymm4, %ymm6
+        vfnmadd231pd %ymm4, %ymm15, %ymm6
+
+/* 2^ (-10-exp(X) ) */
+        vmovupd   13504+__svml_datanh_data_internal(%rip), %ymm15
+
+/*
+ * Compute D = E + E^2 + E^3 + E^4 + E^5
+ * = E + (E + E^2) (E + E * E^2)
+ * Only saves when FMA is available
+ */
+        vmovapd   %ymm11, %ymm1
+        vmovapd   %ymm6, %ymm3
+        vfmadd231pd %ymm6, %ymm6, %ymm1
+        vfmadd213pd %ymm6, %ymm6, %ymm3
+        vfmadd213pd %ymm11, %ymm1, %ymm3
+        vmovmskpd %ymm5, %edx
+
+/*
+ * Split V as well into upper 41 bits and lower part, so that we can get
+ * a preliminary quotient estimate without rounding error.
+ */
+        vandpd    14464+__svml_datanh_data_internal(%rip), %ymm0, %ymm5
+        vsubpd    %ymm5, %ymm0, %ymm2
+
+/* Hence get initial quotient estimate QHi + QLo = R * VHi + R * VLo */
+        vmulpd    %ymm5, %ymm4, %ymm14
+        vmulpd    %ymm3, %ymm6, %ymm0
+        vmulpd    %ymm2, %ymm4, %ymm13
+
+/*
+ * Compute R * (VHi + VLo) * (1 + E + E^2 + E^3 + E^4 + E^5)
+ * = R *  (VHi + VLo) * (1 + D)
+ * = QHi + (QHi * D + QLo + QLo * D)
+ */
+        vmulpd    %ymm0, %ymm14, %ymm6
+        vfmadd213pd %ymm13, %ymm13, %ymm0
+        vaddpd    %ymm0, %ymm6, %ymm5
+
+/*
+ * Now finally accumulate the high and low parts of the
+ * argument to log1p, H + L, with a final compensated summation.
+ */
+        vaddpd    %ymm5, %ymm14, %ymm4
+
+/*
+ * Now we feed into the log1p code, using H in place of _VARG1 and
+ * later incorporating L into the reduced argument.
+ * compute 1+x as high, low parts
+ */
+        vmaxpd    %ymm4, %ymm11, %ymm2
+        vminpd    %ymm4, %ymm11, %ymm1
+        vandpd    %ymm7, %ymm4, %ymm7
+        vcmplt_oqpd 12992+__svml_datanh_data_internal(%rip), %ymm7, %ymm0
+        vaddpd    %ymm1, %ymm2, %ymm5
+        vorpd     13056+__svml_datanh_data_internal(%rip), %ymm0, %ymm4
+        vandpd    %ymm4, %ymm5, %ymm5
+
+/* preserve mantissa, set input exponent to 2^(-10) */
+        vandpd    12544+__svml_datanh_data_internal(%rip), %ymm5, %ymm6
+        vorpd     12608+__svml_datanh_data_internal(%rip), %ymm6, %ymm7
+
+/* reciprocal approximation good to at least 11 bits */
+        vcvtpd2ps %ymm7, %xmm13
+        vsubpd    %ymm5, %ymm2, %ymm3
+
+/* exponent bits */
+        vpsrlq    $20, %ymm5, %ymm2
+        vrcpps    %xmm13, %xmm14
+        vaddpd    %ymm3, %ymm1, %ymm4
+        vcvtps2pd %xmm14, %ymm3
+
+/* round reciprocal to nearest integer, will have 1+9 mantissa bits */
+        vroundpd  $0, %ymm3, %ymm3
+
+/*
+ * prepare table index
+ * table lookup
+ */
+        vpsrlq    $40, %ymm3, %ymm13
+
+/* exponent of X needed to scale Xl */
+        vandps    13440+__svml_datanh_data_internal(%rip), %ymm5, %ymm0
+        vpsubq    %ymm0, %ymm15, %ymm6
+
+/* Finally, halve the result and reincorporate the sign */
+        vxorpd    13952+__svml_datanh_data_internal(%rip), %ymm9, %ymm9
+        vmovd     %xmm13, %ecx
+        vextractf128 $1, %ymm13, %xmm0
+        movslq    %ecx, %rcx
+        vpextrd   $2, %xmm13, %r8d
+        movslq    %r8d, %r8
+        vmovd     %xmm0, %r9d
+        vmovsd    (%rax,%rcx), %xmm14
+        vmovhpd   (%rax,%r8), %xmm14, %xmm15
+
+/* exponent*log(2.0) */
+        vmovupd   13248+__svml_datanh_data_internal(%rip), %ymm14
+        movslq    %r9d, %r9
+        vpextrd   $2, %xmm0, %r10d
+        movslq    %r10d, %r10
+        vextractf128 $1, %ymm2, %xmm1
+        vshufps   $221, %xmm1, %xmm2, %xmm7
+
+/* scale DblRcp */
+        vmulpd    %ymm6, %ymm3, %ymm2
+        vmovsd    (%rax,%r9), %xmm6
+
+/* biased exponent in DP format */
+        vcvtdq2pd %xmm7, %ymm1
+        vmovhpd   (%rax,%r10), %xmm6, %xmm7
+        vcmplt_oqpd %ymm3, %ymm14, %ymm3
+
+/* argument reduction */
+        vfmsub213pd %ymm11, %ymm2, %ymm5
+        vmulpd    %ymm2, %ymm4, %ymm11
+        vmovupd   12480+__svml_datanh_data_internal(%rip), %ymm2
+        vaddpd    %ymm11, %ymm5, %ymm5
+        vandpd    13312+__svml_datanh_data_internal(%rip), %ymm3, %ymm3
+        vorpd     13376+__svml_datanh_data_internal(%rip), %ymm3, %ymm6
+        vsubpd    %ymm6, %ymm1, %ymm1
+        vfmadd213pd 12512+__svml_datanh_data_internal(%rip), %ymm5, %ymm2
+        vmulpd    %ymm5, %ymm5, %ymm4
+        vmulpd    13568+__svml_datanh_data_internal(%rip), %ymm1, %ymm3
+
+/* polynomial */
+        vmovupd   12416+__svml_datanh_data_internal(%rip), %ymm1
+        vfmadd213pd 12448+__svml_datanh_data_internal(%rip), %ymm5, %ymm1
+        vfmadd213pd %ymm2, %ymm4, %ymm1
+
+/* reconstruction */
+        vfmadd213pd %ymm5, %ymm4, %ymm1
+        vinsertf128 $1, %xmm7, %ymm15, %ymm0
+        vaddpd    %ymm1, %ymm0, %ymm0
+        vaddpd    %ymm0, %ymm3, %ymm6
+        vmulpd    %ymm6, %ymm9, %ymm0
+        vblendvpd %ymm10, %ymm8, %ymm0, %ymm0
+        testl     %edx, %edx
+        jne       .LBL_1_3
+
+.LBL_1_2:
+        vmovups   96(%rsp), %ymm8
+        cfi_restore(91)
+        vmovups   32(%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, 0xe0, 0xfe, 0xff, 0xff, 0x22
+        .cfi_escape 0x10, 0xdc, 0x00, 0x0e, 0x38, 0x1c, 0x0d, 0xc0, 0xff, 0xff, 0xff, 0x1a, 0x0d, 0xa0, 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
+
+.LBL_1_3:
+        vmovupd   %ymm12, 64(%rsp)
+        vmovupd   %ymm0, 128(%rsp)
+        je        .LBL_1_2
+        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      %edx, %r13d
+
+.LBL_1_7:
+        btl       %r12d, %r13d
+        jc        .LBL_1_10
+
+.LBL_1_8:
+        incl      %r12d
+        cmpl      $4, %r12d
+        jl        .LBL_1_7
+        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       .LBL_1_2
+        .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
+
+.LBL_1_10:
+        lea       64(%rsp,%r12,8), %rdi
+        lea       128(%rsp,%r12,8), %rsi
+        call      __svml_datanh_cout_rare_internal
+        jmp       .LBL_1_8
+
+END(_ZGVdN4v_atanh_avx2)
+
+        .align    16,0x90
+
+__svml_datanh_cout_rare_internal:
+
+        cfi_startproc
+
+        movzwl    6(%rdi), %eax
+        andl      $32752, %eax
+        movsd     (%rdi), %xmm0
+        movb      7(%rdi), %dl
+        andb      $127, %dl
+        movsd     %xmm0, -8(%rsp)
+        cmpl      $32752, %eax
+        je        .LBL_2_6
+
+.LBL_2_2:
+        cmpl      $0, -8(%rsp)
+        jne       .LBL_2_5
+        movb      %dl, -1(%rsp)
+        cmpl      $1072693248, -4(%rsp)
+        jne       .LBL_2_5
+        divsd     8+__datanh_la_CoutTab(%rip), %xmm0
+        movsd     %xmm0, (%rsi)
+        movl      $2, %eax
+        ret
+
+.LBL_2_5:
+        movsd     8+__datanh_la_CoutTab(%rip), %xmm0
+        movl      $1, %eax
+        mulsd     16+__datanh_la_CoutTab(%rip), %xmm0
+        movsd     %xmm0, (%rsi)
+        ret
+
+.LBL_2_6:
+        testl     $1048575, 4(%rdi)
+        jne       .LBL_2_8
+        cmpl      $0, (%rdi)
+        je        .LBL_2_2
+
+.LBL_2_8:
+        mulsd     %xmm0, %xmm0
+        xorl      %eax, %eax
+        movsd     %xmm0, (%rsi)
+        ret
+
+        cfi_endproc
+
+        .type	__svml_datanh_cout_rare_internal,@function
+        .size	__svml_datanh_cout_rare_internal,.-__svml_datanh_cout_rare_internal
+
+        .section .rodata, "a"
+        .align 64
+
+__svml_datanh_data_internal:
+        .long	3715793664
+        .long	3230016299
+        .long	4013928704
+        .long	3189565726
+        .long	3699038248
+        .long	3230016303
+        .long	4255595370
+        .long	3189567439
+        .long	3648859040
+        .long	3230016307
+        .long	1732833791
+        .long	3189567296
+        .long	3565385952
+        .long	3230016311
+        .long	2485752410
+        .long	3189567274
+        .long	3448748152
+        .long	3230016315
+        .long	3514744523
+        .long	3189567800
+        .long	3299074072
+        .long	3230016319
+        .long	3686511262
+        .long	3189567474
+        .long	3116491376
+        .long	3230016323
+        .long	716063611
+        .long	3189567908
+        .long	2901127016
+        .long	3230016327
+        .long	354437295
+        .long	3189567291
+        .long	2653107184
+        .long	3230016331
+        .long	3777462366
+        .long	3189567264
+        .long	2372557360
+        .long	3230016335
+        .long	3590663412
+        .long	3189567498
+        .long	2059602304
+        .long	3230016339
+        .long	1680795031
+        .long	3189567428
+        .long	1714366048
+        .long	3230016343
+        .long	2010344982
+        .long	3189567986
+        .long	1336971936
+        .long	3230016347
+        .long	166254822
+        .long	3189567184
+        .long	927542568
+        .long	3230016351
+        .long	59552610
+        .long	3189567972
+        .long	486199888
+        .long	3230016355
+        .long	2268824919
+        .long	3189567664
+        .long	13065112
+        .long	3230016359
+        .long	3005381643
+        .long	3189567835
+        .long	3803226080
+        .long	3230016362
+        .long	4018973165
+        .long	3189567825
+        .long	3266868056
+        .long	3230016366
+        .long	3693925101
+        .long	3189567457
+        .long	2699077504
+        .long	3230016370
+        .long	4005905743
+        .long	3189567697
+        .long	2099972936
+        .long	3230016374
+        .long	3580935118
+        .long	3189567215
+        .long	1469672176
+        .long	3230016378
+        .long	2928784295
+        .long	3189567129
+        .long	808292392
+        .long	3230016382
+        .long	674298833
+        .long	3189567553
+        .long	115950104
+        .long	3230016386
+        .long	2555938320
+        .long	3189567208
+        .long	3687728456
+        .long	3230016389
+        .long	532458218
+        .long	3189567130
+        .long	2933808064
+        .long	3230016393
+        .long	3888913110
+        .long	3189567192
+        .long	2149270784
+        .long	3230016397
+        .long	2365955494
+        .long	3189567756
+        .long	1334230552
+        .long	3230016401
+        .long	3325722981
+        .long	3189567206
+        .long	488800640
+        .long	3230016405
+        .long	1496133617
+        .long	3189567683
+        .long	3908061016
+        .long	3230016408
+        .long	1824836379
+        .long	3189567490
+        .long	3002189112
+        .long	3230016412
+        .long	1222174320
+        .long	3189567837
+        .long	2066263648
+        .long	3230016416
+        .long	2472769660
+        .long	3189567285
+        .long	1100395408
+        .long	3230016420
+        .long	447932460
+        .long	3189567455
+        .long	104694584
+        .long	3230016424
+        .long	1006807684
+        .long	3189567460
+        .long	3374238048
+        .long	3230016427
+        .long	4121834935
+        .long	3189567556
+        .long	2319200184
+        .long	3230016431
+        .long	3019906587
+        .long	3189567664
+        .long	1234656664
+        .long	3230016435
+        .long	3882744783
+        .long	3189567930
+        .long	120715280
+        .long	3230016439
+        .long	1927363170
+        .long	3189567242
+        .long	3272450504
+        .long	3230016442
+        .long	8203115
+        .long	3189567876
+        .long	2100034368
+        .long	3230016446
+        .long	1260625560
+        .long	3189567855
+        .long	898540192
+        .long	3230016450
+        .long	1791679111
+        .long	3189567639
+        .long	3963040720
+        .long	3230016453
+        .long	831133439
+        .long	3189567590
+        .long	2703706240
+        .long	3230016457
+        .long	2803140504
+        .long	3189567482
+        .long	1415608352
+        .long	3230016461
+        .long	2955844462
+        .long	3189568058
+        .long	98850816
+        .long	3230016465
+        .long	4017967070
+        .long	3189567455
+        .long	3048504096
+        .long	3230016468
+        .long	3974385451
+        .long	3189567871
+        .long	1674736240
+        .long	3230016472
+        .long	2424114556
+        .long	3189567887
+        .long	272616624
+        .long	3230016476
+        .long	4261883032
+        .long	3189567073
+        .long	3137214056
+        .long	3230016479
+        .long	3716750895
+        .long	3189567522
+        .long	1678694944
+        .long	3230016483
+        .long	498025304
+        .long	3189567180
+        .long	192127016
+        .long	3230016487
+        .long	1011852160
+        .long	3189567511
+        .long	2972577480
+        .long	3230016490
+        .long	558940916
+        .long	3189567850
+        .long	1430211120
+        .long	3230016494
+        .long	2550865739
+        .long	3189567935
+        .long	4155061376
+        .long	3230016497
+        .long	1930847170
+        .long	3189567371
+        .long	2557291968
+        .long	3230016501
+        .long	1716354804
+        .long	3189567130
+        .long	931967984
+        .long	3230016505
+        .long	2729403392
+        .long	3189567981
+        .long	3574154016
+        .long	3230016508
+        .long	1067280599
+        .long	3189567890
+        .long	1894012232
+        .long	3230016512
+        .long	2094260282
+        .long	3189567604
+        .long	186606176
+        .long	3230016516
+        .long	3897933165
+        .long	3189568046
+        .long	2746998904
+        .long	3230016519
+        .long	1935720459
+        .long	3189567701
+        .long	985351064
+        .long	3230016523
+        .long	2170344821
+        .long	3189567164
+        .long	3491691984
+        .long	3230016526
+        .long	4220979537
+        .long	3189567547
+        .long	1676181328
+        .long	3230016530
+        .long	1953924393
+        .long	3189567854
+        .long	4128847448
+        .long	3230016533
+        .long	1689829067
+        .long	3189567468
+        .long	2259849008
+        .long	3230016537
+        .long	2367753130
+        .long	3189567619
+        .long	364246088
+        .long	3230016541
+        .long	2263309073
+        .long	3189567722
+        .long	2737098280
+        .long	3230016544
+        .long	2366756869
+        .long	3189567856
+        .long	788562816
+        .long	3230016548
+        .long	2294653975
+        .long	3189567145
+        .long	3108665616
+        .long	3230016551
+        .long	1786494117
+        .long	3189567254
+        .long	1107562960
+        .long	3230016555
+        .long	3655887416
+        .long	3189567689
+        .long	3375279848
+        .long	3230016558
+        .long	1178948625
+        .long	3189567241
+        .long	1321971608
+        .long	3230016562
+        .long	1620080441
+        .long	3189567466
+        .long	3537662304
+        .long	3230016565
+        .long	154455618
+        .long	3189567981
+        .long	1432506360
+        .long	3230016569
+        .long	3128192125
+        .long	3189567889
+        .long	3596526920
+        .long	3230016572
+        .long	2026842750
+        .long	3189567212
+        .long	1439877480
+        .long	3230016576
+        .long	1384431897
+        .long	3189567284
+        .long	3552580280
+        .long	3230016579
+        .long	1999983129
+        .long	3189568079
+        .long	1344787944
+        .long	3230016583
+        .long	4035436820
+        .long	3189567579
+        .long	3406521808
+        .long	3230016586
+        .long	77799817
+        .long	3189567285
+        .long	1147933592
+        .long	3230016590
+        .long	1261060207
+        .long	3189567477
+        .long	3159043768
+        .long	3230016593
+        .long	2102717775
+        .long	3189567605
+        .long	850003184
+        .long	3230016597
+        .long	161472469
+        .long	3189567688
+        .long	2810831440
+        .long	3230016600
+        .long	1937336881
+        .long	3189567665
+        .long	451678520
+        .long	3230016604
+        .long	2268353549
+        .long	3189567773
+        .long	2362563168
+        .long	3230016607
+        .long	1785871595
+        .long	3189567889
+        .long	4248601816
+        .long	3230016610
+        .long	2434669991
+        .long	3189567898
+        .long	1814910472
+        .long	3230016614
+        .long	2666999375
+        .long	3189568058
+        .long	3651506624
+        .long	3230016617
+        .long	1033139811
+        .long	3189567312
+        .long	1168538136
+        .long	3230016621
+        .long	4004618418
+        .long	3189567740
+        .long	2956021672
+        .long	3230016624
+        .long	3799928764
+        .long	3189567751
+        .long	424104288
+        .long	3230016628
+        .long	3650233137
+        .long	3189567549
+        .long	2162801816
+        .long	3230016631
+        .long	437313833
+        .long	3189567438
+        .long	3877227800
+        .long	3230016634
+        .long	2138293494
+        .long	3189567140
+        .long	1272495376
+        .long	3230016638
+        .long	2891370752
+        .long	3189567168
+        .long	2938619176
+        .long	3230016641
+        .long	1704142730
+        .long	3189567114
+        .long	285744240
+        .long	3230016645
+        .long	500817607
+        .long	3189568035
+        .long	1903884424
+        .long	3230016648
+        .long	3102571944
+        .long	3189567668
+        .long	3498151272
+        .long	3230016651
+        .long	2374193154
+        .long	3189567933
+        .long	773655960
+        .long	3230016655
+        .long	2898331636
+        .long	3189568089
+        .long	2320411168
+        .long	3230016658
+        .long	1983295500
+        .long	3189567113
+        .long	3843527280
+        .long	3230016661
+        .long	2132853542
+        .long	3189567093
+        .long	1048114320
+        .long	3230016665
+        .long	3551155364
+        .long	3189567407
+        .long	2524183824
+        .long	3230016668
+        .long	2564000663
+        .long	3189567090
+        .long	3976845048
+        .long	3230016671
+        .long	361581803
+        .long	3189567196
+        .long	1111206880
+        .long	3230016675
+        .long	696765230
+        .long	3189568040
+        .long	2517279744
+        .long	3230016678
+        .long	941542475
+        .long	3189567463
+        .long	3900171776
+        .long	3230016681
+        .long	2377895552
+        .long	3189567282
+        .long	964990760
+        .long	3230016685
+        .long	1173605489
+        .long	3189567454
+        .long	2301746008
+        .long	3230016688
+        .long	3096720313
+        .long	3189567400
+        .long	3615544576
+        .long	3230016691
+        .long	1942008121
+        .long	3189567335
+        .long	611493160
+        .long	3230016695
+        .long	3375481119
+        .long	3189567537
+        .long	1879599992
+        .long	3230016698
+        .long	4103239143
+        .long	3189567624
+        .long	3124971056
+        .long	3230016701
+        .long	3773474925
+        .long	3189567869
+        .long	52711992
+        .long	3230016705
+        .long	2465315445
+        .long	3189567444
+        .long	1252829960
+        .long	3230016708
+        .long	1041581158
+        .long	3189567781
+        .long	2430429904
+        .long	3230016711
+        .long	166620501
+        .long	3189567739
+        .long	3585583704
+        .long	3230016714
+        .long	2379237630
+        .long	3189567984
+        .long	423395616
+        .long	3230016718
+        .long	134834559
+        .long	3189567178
+        .long	1533871416
+        .long	3230016721
+        .long	1449318760
+        .long	3189567373
+        .long	2622114680
+        .long	3230016724
+        .long	3042372984
+        .long	3189567127
+        .long	3688195920
+        .long	3230016727
+        .long	1265290101
+        .long	3189567921
+        .long	437218048
+        .long	3230016731
+        .long	2248549362
+        .long	3189567262
+        .long	1459185496
+        .long	3230016734
+        .long	1293250365
+        .long	3189567151
+        .long	2459200496
+        .long	3230016737
+        .long	313786605
+        .long	3189567180
+        .long	3437332240
+        .long	3230016740
+        .long	3289151823
+        .long	3189567872
+        .long	98682312
+        .long	3230016744
+        .long	2693758821
+        .long	3189567877
+        .long	1033253848
+        .long	3230016747
+        .long	4237443192
+        .long	3189567301
+        .long	1946147760
+        .long	3230016750
+        .long	4099404586
+        .long	3189567972
+        .long	2837431968
+        .long	3230016753
+        .long	343640666
+        .long	3189567552
+        .long	3707174040
+        .long	3230016756
+        .long	4238401458
+        .long	3189567983
+        .long	260473960
+        .long	3230016760
+        .long	21423548
+        .long	3189567559
+        .long	1087333264
+        .long	3230016763
+        .long	3515278593
+        .long	3189567309
+        .long	1892851296
+        .long	3230016766
+        .long	629106375
+        .long	3189567166
+        .long	2677094384
+        .long	3230016769
+        .long	2048670044
+        .long	3189567227
+        .long	3440128544
+        .long	3230016772
+        .long	3739217292
+        .long	3189568009
+        .long	4182019504
+        .long	3230016775
+        .long	3662039444
+        .long	3189567618
+        .long	607865368
+        .long	3230016779
+        .long	1766486991
+        .long	3189567112
+        .long	1307665824
+        .long	3230016782
+        .long	512689457
+        .long	3189567670
+        .long	1986518392
+        .long	3230016785
+        .long	1704577378
+        .long	3189567760
+        .long	2644487576
+        .long	3230016788
+        .long	4001935135
+        .long	3189567473
+        .long	3281637576
+        .long	3230016791
+        .long	1184452342
+        .long	3189567735
+        .long	3898032312
+        .long	3230016794
+        .long	2714793956
+        .long	3189567464
+        .long	198768096
+        .long	3230016798
+        .long	3657654418
+        .long	3189567905
+        .long	773842856
+        .long	3230016801
+        .long	2809688013
+        .long	3189567736
+        .long	1328352328
+        .long	3230016804
+        .long	390727591
+        .long	3189567393
+        .long	1862359256
+        .long	3230016807
+        .long	1135237925
+        .long	3189567248
+        .long	2375926096
+        .long	3230016810
+        .long	1377572509
+        .long	3189567837
+        .long	2869115032
+        .long	3230016813
+        .long	3148383775
+        .long	3189568032
+        .long	3341987960
+        .long	3230016816
+        .long	3809536738
+        .long	3189567313
+        .long	3794606472
+        .long	3230016819
+        .long	4243445934
+        .long	3189568034
+        .long	4227031920
+        .long	3230016822
+        .long	1302642088
+        .long	3189567451
+        .long	344358048
+        .long	3230016826
+        .long	3239125361
+        .long	3189567151
+        .long	736580224
+        .long	3230016829
+        .long	3753161736
+        .long	3189567129
+        .long	1108791648
+        .long	3230016832
+        .long	624357483
+        .long	3189568045
+        .long	1461052568
+        .long	3230016835
+        .long	3153257064
+        .long	3189567338
+        .long	1793422920
+        .long	3230016838
+        .long	2705820149
+        .long	3189567635
+        .long	2105962400
+        .long	3230016841
+        .long	911564860
+        .long	3189567737
+        .long	2398730424
+        .long	3230016844
+        .long	1086958332
+        .long	3189567948
+        .long	2671786152
+        .long	3230016847
+        .long	1598984535
+        .long	3189567210
+        .long	2925188456
+        .long	3230016850
+        .long	4113385879
+        .long	3189567401
+        .long	3158995968
+        .long	3230016853
+        .long	2426812671
+        .long	3189567396
+        .long	3373267048
+        .long	3230016856
+        .long	3480845679
+        .long	3189567359
+        .long	3568059792
+        .long	3230016859
+        .long	3306230729
+        .long	3189567924
+        .long	3743432056
+        .long	3230016862
+        .long	3853821277
+        .long	3189567317
+        .long	3899441408
+        .long	3230016865
+        .long	2049309148
+        .long	3189567699
+        .long	4036145192
+        .long	3230016868
+        .long	2667321817
+        .long	3189567166
+        .long	4153600472
+        .long	3230016871
+        .long	3540670389
+        .long	3189567114
+        .long	4251864072
+        .long	3230016874
+        .long	404207883
+        .long	3189567310
+        .long	36025272
+        .long	3230016878
+        .long	2837617046
+        .long	3189567103
+        .long	96074976
+        .long	3230016881
+        .long	1231280453
+        .long	3189567669
+        .long	137101976
+        .long	3230016884
+        .long	792492437
+        .long	3189567071
+        .long	159162080
+        .long	3230016887
+        .long	2385525292
+        .long	3189567618
+        .long	162310880
+        .long	3230016890
+        .long	3272051015
+        .long	3189567858
+        .long	146603712
+        .long	3230016893
+        .long	623573538
+        .long	3189567881
+        .long	112095672
+        .long	3230016896
+        .long	2151835939
+        .long	3189567451
+        .long	58841608
+        .long	3230016899
+        .long	958006130
+        .long	3189567217
+        .long	4281863424
+        .long	3230016901
+        .long	549948691
+        .long	3189567863
+        .long	4191280920
+        .long	3230016904
+        .long	4177689987
+        .long	3189567217
+        .long	4082115512
+        .long	3230016907
+        .long	2895765193
+        .long	3189567599
+        .long	3954421112
+        .long	3230016910
+        .long	1055606208
+        .long	3189567799
+        .long	3808251392
+        .long	3230016913
+        .long	1966521217
+        .long	3189567351
+        .long	3643659776
+        .long	3230016916
+        .long	1017382758
+        .long	3189567732
+        .long	3460699480
+        .long	3230016919
+        .long	3485890155
+        .long	3189567410
+        .long	3259423472
+        .long	3230016922
+        .long	2657419170
+        .long	3189567140
+        .long	3039884488
+        .long	3230016925
+        .long	4198858220
+        .long	3189568080
+        .long	2802135064
+        .long	3230016928
+        .long	2343740494
+        .long	3189567869
+        .long	2546227480
+        .long	3230016931
+        .long	2423084215
+        .long	3189567957
+        .long	2272213808
+        .long	3230016934
+        .long	3887273856
+        .long	3189567631
+        .long	1980145888
+        .long	3230016937
+        .long	3992755473
+        .long	3189567251
+        .long	1670075336
+        .long	3230016940
+        .long	722498073
+        .long	3189567389
+        .long	1342053552
+        .long	3230016943
+        .long	3573506400
+        .long	3189567965
+        .long	996131728
+        .long	3230016946
+        .long	714695829
+        .long	3189567392
+        .long	632360808
+        .long	3230016949
+        .long	2816704229
+        .long	3189567846
+        .long	250791552
+        .long	3230016952
+        .long	386951333
+        .long	3189567243
+        .long	4146441768
+        .long	3230016954
+        .long	2155319939
+        .long	3189567580
+        .long	3729427184
+        .long	3230016957
+        .long	4227840137
+        .long	3189567931
+        .long	3294765200
+        .long	3230016960
+        .long	1718354212
+        .long	3189567672
+        .long	2842505696
+        .long	3230016963
+        .long	4243880582
+        .long	3189567656
+        .long	2372698352
+        .long	3230016966
+        .long	3784093842
+        .long	3189567302
+        .long	1885392624
+        .long	3230016969
+        .long	2318733051
+        .long	3189567813
+        .long	1380637784
+        .long	3230016972
+        .long	497929746
+        .long	3189567210
+        .long	858482864
+        .long	3230016975
+        .long	3218883783
+        .long	3189567649
+        .long	318976720
+        .long	3230016978
+        .long	3492652862
+        .long	3189567382
+        .long	4057135272
+        .long	3230016980
+        .long	473724673
+        .long	3189568069
+        .long	3483072376
+        .long	3230016983
+        .long	150485010
+        .long	3189567757
+        .long	2891803552
+        .long	3230016986
+        .long	3028900958
+        .long	3189567173
+        .long	2283376816
+        .long	3230016989
+        .long	321242596
+        .long	3189567822
+        .long	1657840008
+        .long	3230016992
+        .long	151305746
+        .long	3189568029
+        .long	1015240760
+        .long	3230016995
+        .long	2208026401
+        .long	3189567184
+        .long	355626480
+        .long	3230016998
+        .long	2487781842
+        .long	3189567931
+        .long	3974011720
+        .long	3230017000
+        .long	2391142094
+        .long	3189567091
+        .long	3280508896
+        .long	3230017003
+        .long	734457618
+        .long	3189568092
+        .long	2570132168
+        .long	3230017006
+        .long	3070902701
+        .long	3189567794
+        .long	1842928168
+        .long	3230017009
+        .long	1110877923
+        .long	3189567896
+        .long	1098943352
+        .long	3230017012
+        .long	3880360185
+        .long	3189567898
+        .long	338223984
+        .long	3230017015
+        .long	391995809
+        .long	3189567294
+        .long	3855783416
+        .long	3230017017
+        .long	4186345433
+        .long	3189567745
+        .long	3061732952
+        .long	3230017020
+        .long	3682852050
+        .long	3189567081
+        .long	2251085560
+        .long	3230017023
+        .long	3057037137
+        .long	3189567617
+        .long	1423886760
+        .long	3230017026
+        .long	3352664894
+        .long	3189567074
+        .long	580181848
+        .long	3230017029
+        .long	1170568982
+        .long	3189567927
+        .long	4014983272
+        .long	3230017031
+        .long	671148579
+        .long	3189567293
+        .long	3138401368
+        .long	3230017034
+        .long	267496658
+        .long	3189567304
+        .long	2245448192
+        .long	3230017037
+        .long	1285167087
+        .long	3189568066
+        .long	1336168336
+        .long	3230017040
+        .long	4259909589
+        .long	3189567788
+        .long	410606184
+        .long	3230017043
+        .long	1494078902
+        .long	3189568031
+        .long	3763773256
+        .long	3230017045
+        .long	261935754
+        .long	3189567685
+        .long	2805778992
+        .long	3230017048
+        .long	3679585605
+        .long	3189567195
+        .long	1831634536
+        .long	3230017051
+        .long	809066513
+        .long	3189567664
+        .long	841383576
+        .long	3230017054
+        .long	385945238
+        .long	3189567897
+        .long	4130036912
+        .long	3230017056
+        .long	825579909
+        .long	3189567603
+        .long	3107703272
+        .long	3230017059
+        .long	3911295427
+        .long	3189567514
+        .long	2069393104
+        .long	3230017062
+        .long	3473784588
+        .long	3189567461
+        .long	1015149384
+        .long	3230017065
+        .long	629861200
+        .long	3189567515
+        .long	4239982216
+        .long	3230017067
+        .long	2659142760
+        .long	3189567083
+        .long	3153999632
+        .long	3230017070
+        .long	1251680713
+        .long	3189567080
+        .long	2052211384
+        .long	3230017073
+        .long	3168705163
+        .long	3189567992
+        .long	934659776
+        .long	3230017076
+        .long	1674797624
+        .long	3189567952
+        .long	4096354216
+        .long	3230017078
+        .long	437847902
+        .long	3189567971
+        .long	2947402064
+        .long	3230017081
+        .long	4024401533
+        .long	3189567960
+        .long	1782812400
+        .long	3230017084
+        .long	786902458
+        .long	3189567873
+        .long	602626840
+        .long	3230017087
+        .long	2593792633
+        .long	3189567812
+        .long	3701854136
+        .long	3230017089
+        .long	3989721221
+        .long	3189567126
+        .long	2490600968
+        .long	3230017092
+        .long	2545746866
+        .long	3189567591
+        .long	1263875768
+        .long	3230017095
+        .long	3115843521
+        .long	3189567377
+        .long	21719488
+        .long	3230017098
+        .long	1730226063
+        .long	3189567307
+        .long	3059140216
+        .long	3230017100
+        .long	690350922
+        .long	3189567892
+        .long	1786244008
+        .long	3230017103
+        .long	3350998585
+        .long	3189567394
+        .long	498038616
+        .long	3230017106
+        .long	1499123379
+        .long	3189568082
+        .long	3489531672
+        .long	3230017108
+        .long	2598665922
+        .long	3189567118
+        .long	2170828712
+        .long	3230017111
+        .long	2436376826
+        .long	3189567935
+        .long	836937048
+        .long	3230017114
+        .long	1977004902
+        .long	3189568052
+        .long	3782863816
+        .long	3230017116
+        .long	4027224619
+        .long	3189567373
+        .long	2418714096
+        .long	3230017119
+        .long	2616869856
+        .long	3189567271
+        .long	1039494712
+        .long	3230017122
+        .long	3775628133
+        .long	3189567616
+        .long	3940212336
+        .long	3230017124
+        .long	419018052
+        .long	3189567909
+        .long	2530971600
+        .long	3230017127
+        .long	150919657
+        .long	3189567379
+        .long	1106778856
+        .long	3230017130
+        .long	2926254537
+        .long	3189567139
+        .long	3962640312
+        .long	3230017132
+        .long	1610863810
+        .long	3189567216
+        .long	2508660136
+        .long	3230017135
+        .long	1166015244
+        .long	3189567672
+        .long	1039844240
+        .long	3230017138
+        .long	645159638
+        .long	3189567685
+        .long	3851198376
+        .long	3230017140
+        .long	2449439581
+        .long	3189567695
+        .long	2352826264
+        .long	3230017143
+        .long	1619104640
+        .long	3189567458
+        .long	839733360
+        .long	3230017146
+        .long	2427070371
+        .long	3189567165
+        .long	3606924968
+        .long	3230017148
+        .long	2166480890
+        .long	3189567544
+        .long	2064504368
+        .long	3230017151
+        .long	2283025905
+        .long	3189567907
+        .long	507476584
+        .long	3230017154
+        .long	3923356754
+        .long	3189567272
+        .long	3230846472
+        .long	3230017156
+        .long	805331677
+        .long	3189567533
+        .long	1644716880
+        .long	3230017159
+        .long	3790469685
+        .long	3189567406
+        .long	44092384
+        .long	3230017162
+        .long	2689788214
+        .long	3189567653
+        .long	2723977432
+        .long	3230017164
+        .long	2762250221
+        .long	3189567072
+        .long	1094474416
+        .long	3230017167
+        .long	2781925193
+        .long	3189567716
+        .long	3745554800
+        .long	3230017169
+        .long	593120878
+        .long	3189567817
+        .long	2087320704
+        .long	3230017172
+        .long	403414988
+        .long	3189568021
+        .long	414776008
+        .long	3230017175
+        .long	359307328
+        .long	3189567387
+        .long	3022924432
+        .long	3230017177
+        .long	3373547966
+        .long	3189567572
+        .long	1321867688
+        .long	3230017180
+        .long	3978711340
+        .long	3189567805
+        .long	3901576528
+        .long	3230017182
+        .long	2765663238
+        .long	3189568046
+        .long	2172152384
+        .long	3230017185
+        .long	1181150766
+        .long	3189568053
+        .long	428598440
+        .long	3230017188
+        .long	2473022131
+        .long	3189567471
+        .long	2965917728
+        .long	3230017190
+        .long	1621744488
+        .long	3189567971
+        .long	1194211288
+        .long	3230017193
+        .long	2931299013
+        .long	3189567190
+        .long	3703449168
+        .long	3230017195
+        .long	873154950
+        .long	3189568039
+        .long	1903732144
+        .long	3230017198
+        .long	1510784525
+        .long	3189567521
+        .long	90062704
+        .long	3230017201
+        .long	2918231590
+        .long	3189568086
+        .long	2557443240
+        .long	3230017203
+        .long	3329944838
+        .long	3189567475
+        .long	715974088
+        .long	3230017206
+        .long	2679715410
+        .long	3189568021
+        .long	3155624672
+        .long	3230017208
+        .long	1841110143
+        .long	3189567518
+        .long	1286495072
+        .long	3230017211
+        .long	3881638924
+        .long	3189567497
+        .long	3698554440
+        .long	3230017213
+        .long	167906931
+        .long	3189567169
+        .long	1801902600
+        .long	3230017216
+        .long	1468264167
+        .long	3189567597
+        .long	4186508448
+        .long	3230017218
+        .long	2400624638
+        .long	3189567691
+        .long	2262471560
+        .long	3230017221
+        .long	3796182064
+        .long	3189567357
+        .long	324793264
+        .long	3230017224
+        .long	2801238958
+        .long	3189567581
+        .long	2668474776
+        .long	3230017226
+        .long	2273142813
+        .long	3189567436
+        .long	703615288
+        .long	3230017229
+        .long	831867571
+        .long	3189567237
+        .long	3020183048
+        .long	3230017231
+        .long	2238048829
+        .long	3189567595
+        .long	1028277008
+        .long	3230017234
+        .long	1163763070
+        .long	3189567452
+        .long	3317865168
+        .long	3230017236
+        .long	1206450788
+        .long	3189567228
+        .long	1299046216
+        .long	3230017239
+        .long	737162226
+        .long	3189567879
+        .long	3561787920
+        .long	3230017241
+        .long	2433253277
+        .long	3189567901
+        .long	1516188728
+        .long	3230017244
+        .long	3561277099
+        .long	3189567506
+        .long	3752216144
+        .long	3230017246
+        .long	1385095507
+        .long	3189567674
+        .long	1679968384
+        .long	3230017249
+        .long	829462408
+        .long	3189567156
+        .long	3889412704
+        .long	3230017251
+        .long	2939266725
+        .long	3189567673
+        .long	1790647080
+        .long	3230017254
+        .long	4214100827
+        .long	3189567848
+        .long	3973638544
+        .long	3230017256
+        .long	2537954451
+        .long	3189567376
+        .long	1848484816
+        .long	3230017259
+        .long	1128740312
+        .long	3189567098
+        .long	4005152680
+        .long	3230017261
+        .long	1932232434
+        .long	3189568053
+        .long	1853739648
+        .long	3230017264
+        .long	1359710694
+        .long	3189567457
+        .long	3984212256
+        .long	3230017266
+        .long	1268482287
+        .long	3189567990
+        .long	1806667776
+        .long	3230017269
+        .long	839689017
+        .long	3189567631
+        .long	3911072520
+        .long	3230017271
+        .long	3727165601
+        .long	3189567921
+        .long	1707523520
+        .long	3230017274
+        .long	1836550952
+        .long	3189567895
+        .long	3785986872
+        .long	3230017276
+        .long	172951407
+        .long	3189567220
+        .long	1556559360
+        .long	3230017279
+        .long	1166449891
+        .long	3189567294
+        .long	3609206856
+        .long	3230017281
+        .long	28625366
+        .long	3189567222
+        .long	1354025920
+        .long	3230017284
+        .long	4038426582
+        .long	3189567978
+        .long	3380982208
+        .long	3230017286
+        .long	2756284659
+        .long	3189567362
+        .long	1100172048
+        .long	3230017289
+        .long	848830252
+        .long	3189567230
+        .long	3101560856
+        .long	3230017291
+        .long	1868170309
+        .long	3189567423
+        .long	795244752
+        .long	3230017294
+        .long	3128260908
+        .long	3189567885
+        .long	2771188936
+        .long	3230017296
+        .long	1691261279
+        .long	3189567706
+        .long	439489304
+        .long	3230017299
+        .long	2886711298
+        .long	3189567236
+        .long	2390110824
+        .long	3230017301
+        .long	1311431101
+        .long	3189567133
+        .long	33149176
+        .long	3230017304
+        .long	3042183093
+        .long	3189567401
+        .long	1958569120
+        .long	3230017306
+        .long	3174208880
+        .long	3189567462
+        .long	3871433416
+        .long	3230017308
+        .long	302374021
+        .long	3189567243
+        .long	1476804712
+        .long	3230017311
+        .long	712531519
+        .long	3189567241
+        .long	3364647440
+        .long	3230017313
+        .long	3705318448
+        .long	3189567568
+        .long	945056744
+        .long	3230017316
+        .long	2424171915
+        .long	3189568016
+        .long	2807996856
+        .long	3230017318
+        .long	199511961
+        .long	3189567094
+        .long	363562688
+        .long	3230017321
+        .long	3766234060
+        .long	3189567214
+        .long	2201718256
+        .long	3230017323
+        .long	1956195829
+        .long	3189567592
+        .long	4027525584
+        .long	3230017325
+        .long	2891794585
+        .long	3189567375
+        .long	1546046576
+        .long	3230017328
+        .long	843173017
+        .long	3189567760
+        .long	3347244936
+        .long	3230017330
+        .long	1609532414
+        .long	3189567955
+        .long	841215080
+        .long	3230017333
+        .long	3356704285
+        .long	3189567294
+        .long	2617920488
+        .long	3230017335
+        .long	1641729240
+        .long	3189567346
+        .long	87455368
+        .long	3230017338
+        .long	1455753222
+        .long	3189567878
+        .long	1839783016
+        .long	3230017340
+        .long	1936589978
+        .long	3189567944
+        .long	3579964728
+        .long	3230017342
+        .long	1006586129
+        .long	3189567993
+        .long	1013061704
+        .long	3230017345
+        .long	2766825484
+        .long	3189567880
+        .long	2729036928
+        .long	3230017347
+        .long	1888685184
+        .long	3189567954
+        .long	137984104
+        .long	3230017350
+        .long	848046306
+        .long	3189568090
+        .long	1829866024
+        .long	3230017352
+        .long	4178224056
+        .long	3189567750
+        .long	3509743488
+        .long	3230017354
+        .long	2637072474
+        .long	3189567070
+        .long	882677184
+        .long	3230017357
+        .long	3133305384
+        .long	3189567936
+        .long	2538629624
+        .long	3230017359
+        .long	1343200028
+        .long	3189567905
+        .long	4182661312
+        .long	3230017361
+        .long	107195460
+        .long	3189567427
+        .long	1519832648
+        .long	3230017364
+        .long	602154914
+        .long	3189567857
+        .long	3140105848
+        .long	3230017366
+        .long	659160740
+        .long	3189567417
+        .long	453573824
+        .long	3230017369
+        .long	236889930
+        .long	3189567396
+        .long	2050198592
+        .long	3230017371
+        .long	1175634921
+        .long	3189567087
+        .long	3635040168
+        .long	3230017373
+        .long	1241855527
+        .long	3189567941
+        .long	913158504
+        .long	3230017376
+        .long	3947904414
+        .long	3189567477
+        .long	2474515312
+        .long	3230017378
+        .long	1206979822
+        .long	3189567534
+        .long	4024170344
+        .long	3230017380
+        .long	1847397805
+        .long	3189567152
+        .long	1267183240
+        .long	3230017383
+        .long	2916539301
+        .long	3189567754
+        .long	2793515456
+        .long	3230017385
+        .long	2568213263
+        .long	3189568078
+        .long	13259168
+        .long	3230017388
+        .long	3003245330
+        .long	3189567303
+        .long	1516375624
+        .long	3230017390
+        .long	3472633477
+        .long	3189567153
+        .long	3007924104
+        .long	3230017392
+        .long	532406289
+        .long	3189567855
+        .long	192963816
+        .long	3230017395
+        .long	4149310663
+        .long	3189567165
+        .long	1661455728
+        .long	3230017397
+        .long	946970842
+        .long	3189567598
+        .long	3118458864
+        .long	3230017399
+        .long	2040517972
+        .long	3189567254
+        .long	269032128
+        .long	3230017402
+        .long	3669971831
+        .long	3189568072
+        .long	1703136256
+        .long	3230017404
+        .long	2375197389
+        .long	3189567687
+        .long	3125829976
+        .long	3230017406
+        .long	296757744
+        .long	3189567673
+        .long	242171944
+        .long	3230017409
+        .long	611424102
+        .long	3189567452
+        .long	1642122608
+        .long	3230017411
+        .long	1700968423
+        .long	3189567419
+        .long	3030740440
+        .long	3230017413
+        .long	2947762668
+        .long	3189567968
+        .long	113083840
+        .long	3230017416
+        .long	690901756
+        .long	3189567496
+        .long	1479112984
+        .long	3230017418
+        .long	121139903
+        .long	3189567571
+        .long	2833886088
+        .long	3230017420
+        .long	173386055
+        .long	3189567866
+        .long	4177428584
+        .long	3230017422
+        .long	2964718132
+        .long	3189567231
+        .long	1214798496
+        .long	3230017425
+        .long	541562024
+        .long	3189567842
+        .long	2535955680
+        .long	3230017427
+        .long	3368765612
+        .long	3189568076
+        .long	3845958008
+        .long	3230017429
+        .long	3194541507
+        .long	3189567689
+        .long	849863256
+        .long	3230017432
+        .long	3443356552
+        .long	3189567858
+        .long	2137631024
+        .long	3230017434
+        .long	1180679397
+        .long	3189567138
+        .long	3414318912
+        .long	3230017436
+        .long	2261929999
+        .long	3189567651
+        .long	384984464
+        .long	3230017439
+        .long	954057098
+        .long	3189567971
+        .long	1639587024
+        .long	3230017441
+        .long	1346995839
+        .long	3189567263
+        .long	2883183944
+        .long	3230017443
+        .long	3253373727
+        .long	3189567382
+        .long	4115799808
+        .long	3230017445
+        .long	4143791142
+        .long	3189567800
+        .long	1042491824
+        .long	3230017448
+        .long	4240432954
+        .long	3189567700
+        .long	2253218992
+        .long	3230017450
+        .long	1891708033
+        .long	3189568072
+        .long	3453038360
+        .long	3230017452
+        .long	710292621
+        .long	3189567662
+        .long	347006880
+        .long	3230017455
+        .long	2712254611
+        .long	3189567116
+        .long	1525083304
+        .long	3230017457
+        .long	349583280
+        .long	3189568004
+        .long	2692324448
+        .long	3230017459
+        .long	1803227864
+        .long	3189567740
+        .long	3848754312
+        .long	3230017461
+        .long	3644606976
+        .long	3189567826
+        .long	699429536
+        .long	3230017464
+        .long	1067153346
+        .long	3189567751
+        .long	1834308568
+        .long	3230017466
+        .long	1335350692
+        .long	3189567081
+        .long	2958447872
+        .long	3230017468
+        .long	1803696599
+        .long	3189567557
+        .long	4071871152
+        .long	3230017470
+        .long	1232152547
+        .long	3189568017
+        .long	879634736
+        .long	3230017473
+        .long	1455437901
+        .long	3189567512
+        .long	1971696744
+        .long	3230017475
+        .long	3708110750
+        .long	3189567399
+        .long	3053113344
+        .long	3230017477
+        .long	3907324819
+        .long	3189567290
+        .long	4123907920
+        .long	3230017479
+        .long	4080000314
+        .long	3189567141
+        .long	889136480
+        .long	3230017482
+        .long	1286519001
+        .long	3189567298
+        .long	1938756848
+        .long	3230017484
+        .long	1292347423
+        .long	3189567513
+        .long	2977824880
+        .long	3230017486
+        .long	1159725249
+        .long	3189568015
+        .long	4006363664
+        .long	3230017488
+        .long	895621348
+        .long	3189567502
+        .long	729428896
+        .long	3230017491
+        .long	1212894155
+        .long	3189567280
+        .long	1736978096
+        .long	3230017493
+        .long	296117275
+        .long	3189567210
+        .long	2734066816
+        .long	3230017495
+        .long	2463481211
+        .long	3189567796
+        .long	3720717848
+        .long	3230017497
+        .long	76524950
+        .long	3189567159
+        .long	401986584
+        .long	3230017500
+        .long	1718551671
+        .long	3189567216
+        .long	1367830248
+        .long	3230017502
+        .long	3568874946
+        .long	3189567584
+        .long	2323304104
+        .long	3230017504
+        .long	2763456396
+        .long	3189567666
+        .long	3268430632
+        .long	3230017506
+        .long	1208592501
+        .long	3189567715
+        .long	4203232240
+        .long	3230017508
+        .long	4148835618
+        .long	3189567851
+        .long	832763976
+        .long	3230017511
+        .long	610418007
+        .long	3189567082
+        .long	1746982680
+        .long	3230017513
+        .long	3035714190
+        .long	3189567431
+        .long	2650943256
+        .long	3230017515
+        .long	85931336
+        .long	3189567843
+        .long	3544667832
+        .long	3230017517
+        .long	3006685957
+        .long	3189567286
+        .long	133211144
+        .long	3230017520
+        .long	878859600
+        .long	3189567873
+        .long	1006529776
+        .long	3230017522
+        .long	854333969
+        .long	3189567724
+        .long	1869678336
+        .long	3230017524
+        .long	3058646748
+        .long	3189567155
+        .long	2722678648
+        .long	3230017526
+        .long	360733640
+        .long	3189567693
+        .long	3565552488
+        .long	3230017528
+        .long	3015564990
+        .long	3189568013
+        .long	103354256
+        .long	3230017531
+        .long	2286095909
+        .long	3189568081
+        .long	926040176
+        .long	3230017533
+        .long	1899270393
+        .long	3189567137
+        .long	1738664488
+        .long	3230017535
+        .long	1377641292
+        .long	3189567833
+        .long	2541248696
+        .long	3230017537
+        .long	4266686523
+        .long	3189568077
+        .long	3333814224
+        .long	3230017539
+        .long	4018775563
+        .long	3189567218
+        .long	4116382408
+        .long	3230017541
+        .long	3373913644
+        .long	3189567103
+        .long	594007232
+        .long	3230017544
+        .long	2818265402
+        .long	3189568021
+        .long	1356644520
+        .long	3230017546
+        .long	1075601108
+        .long	3189567716
+        .long	2109348112
+        .long	3230017548
+        .long	3342127702
+        .long	3189567566
+        .long	2852139088
+        .long	3230017550
+        .long	2910355434
+        .long	3189567504
+        .long	3585038464
+        .long	3230017552
+        .long	611858749
+        .long	3189567074
+        .long	13099880
+        .long	3230017555
+        .long	1954698831
+        .long	3189567516
+        .long	726278816
+        .long	3230017557
+        .long	550712630
+        .long	3189567710
+        .long	1429628792
+        .long	3230017559
+        .long	3672474493
+        .long	3189567278
+        .long	2123170544
+        .long	3230017561
+        .long	1160875209
+        .long	3189567651
+        .long	2806924760
+        .long	3230017563
+        .long	2242524344
+        .long	3189568000
+        .long	3480912064
+        .long	3230017565
+        .long	2823138691
+        .long	3189567327
+        .long	4145152992
+        .long	3230017567
+        .long	3521079748
+        .long	3189567568
+        .long	504700744
+        .long	3230017570
+        .long	1136670137
+        .long	3189567486
+        .long	1149510328
+        .long	3230017572
+        .long	806933442
+        .long	3189567823
+        .long	1784634816
+        .long	3230017574
+        .long	1606084669
+        .long	3189567242
+        .long	2410094488
+        .long	3230017576
+        .long	2841342625
+        .long	3189567480
+        .long	3025909584
+        .long	3230017578
+        .long	984188059
+        .long	3189567239
+        .long	3632100264
+        .long	3230017580
+        .long	3011730434
+        .long	3189567337
+        .long	4228686632
+        .long	3230017582
+        .long	328432041
+        .long	3189567676
+        .long	520721440
+        .long	3230017585
+        .long	2057225622
+        .long	3189567268
+        .long	1098159248
+        .long	3230017587
+        .long	3150727306
+        .long	3189567348
+        .long	1666052680
+        .long	3230017589
+        .long	3291380622
+        .long	3189567307
+        .long	2224421584
+        .long	3230017591
+        .long	3570771984
+        .long	3189567798
+        .long	2773285760
+        .long	3230017593
+        .long	2427604440
+        .long	3189567698
+        .long	3312664936
+        .long	3230017595
+        .long	3733848165
+        .long	3189567211
+        .long	3842578768
+        .long	3230017597
+        .long	2673912350
+        .long	3189567904
+        .long	68079584
+        .long	3230017600
+        .long	960995892
+        .long	3189567616
+        .long	579121512
+        .long	3230017602
+        .long	4150493479
+        .long	3189567659
+        .long	1080756744
+        .long	3230017604
+        .long	1054941272
+        .long	3189567735
+        .long	1573004704
+        .long	3230017606
+        .long	2574365292
+        .long	3189568007
+        .long	2055884768
+        .long	3230017608
+        .long	2507498673
+        .long	3189567092
+        .long	2529416224
+        .long	3230017610
+        .long	2082176323
+        .long	3189567207
+        .long	2993618320
+        .long	3230017612
+        .long	3719982601
+        .long	3189568058
+        .long	3448510256
+        .long	3230017614
+        .long	4104247904
+        .long	3189567897
+        .long	3894111152
+        .long	3230017616
+        .long	3735557011
+        .long	3189567647
+        .long	35472776
+        .long	3230017619
+        .long	2914260983
+        .long	3189567862
+        .long	462548736
+        .long	3230017621
+        .long	1334094042
+        .long	3189567734
+        .long	880390688
+        .long	3230017623
+        .long	1291097379
+        .long	3189567171
+        .long	1289017512
+        .long	3230017625
+        .long	1627119803
+        .long	3189567853
+        .long	1688448064
+        .long	3230017627
+        .long	3886873723
+        .long	3189567117
+        .long	2078701104
+        .long	3230017629
+        .long	627887757
+        .long	3189567206
+        .long	2459795360
+        .long	3230017631
+        .long	1722013861
+        .long	3189567101
+        .long	2831749488
+        .long	3230017633
+        .long	4163262354
+        .long	3189567678
+        .long	3194582104
+        .long	3230017635
+        .long	4170237688
+        .long	3189567639
+        .long	3548311752
+        .long	3230017637
+        .long	47563772
+        .long	3189567637
+        .long	3892956928
+        .long	3230017639
+        .long	2990136007
+        .long	3189567231
+        .long	4228536056
+        .long	3230017641
+        .long	4294532248
+        .long	3189567995
+        .long	260100240
+        .long	3230017644
+        .long	2060709623
+        .long	3189567397
+        .long	577602376
+        .long	3230017646
+        .long	1488525373
+        .long	3189568044
+        .long	886093456
+        .long	3230017648
+        .long	1657840200
+        .long	3189567474
+        .long	1185591680
+        .long	3230017650
+        .long	3155771782
+        .long	3189567399
+        .long	1476115208
+        .long	3230017652
+        .long	2195162329
+        .long	3189567591
+        .long	1757682144
+        .long	3230017654
+        .long	1292806663
+        .long	3189567956
+        .long	2030310544
+        .long	3230017656
+        .long	2151451208
+        .long	3189567540
+        .long	2294018392
+        .long	3230017658
+        .long	2224122735
+        .long	3189567630
+        .long	2548823632
+        .long	3230017660
+        .long	3554417607
+        .long	3189567684
+        .long	2794744152
+        .long	3230017662
+        .long	3831650627
+        .long	3189567409
+        .long	3031797776
+        .long	3230017664
+        .long	4024246224
+        .long	3189567811
+        .long	3260002296
+        .long	3230017666
+        .long	2530219738
+        .long	3189567128
+        .long	3479375416
+        .long	3230017668
+        .long	1618145996
+        .long	3189568024
+        .long	3689934832
+        .long	3230017670
+        .long	392379700
+        .long	3189567378
+        .long	3891698144
+        .long	3230017672
+        .long	55874694
+        .long	3189567574
+        .long	4084682928
+        .long	3230017674
+        .long	4294251475
+        .long	3189567312
+        .long	4268906688
+        .long	3230017676
+        .long	1899705040
+        .long	3189567783
+        .long	149419600
+        .long	3230017679
+        .long	357699389
+        .long	3189567568
+        .long	316173656
+        .long	3230017681
+        .long	3025711727
+        .long	3189567790
+        .long	474218920
+        .long	3230017683
+        .long	2921891821
+        .long	3189568046
+        .long	623572704
+        .long	3230017685
+        .long	1716968749
+        .long	3189567453
+        .long	764252248
+        .long	3230017687
+        .long	2393171526
+        .long	3189567748
+        .long	896274768
+        .long	3230017689
+        .long	1343317993
+        .long	3189567172
+        .long	1019657400
+        .long	3230017691
+        .long	1388235839
+        .long	3189567661
+        .long	1134417256
+        .long	3230017693
+        .long	2766147125
+        .long	3189567706
+        .long	1240571384
+        .long	3230017695
+        .long	2162068842
+        .long	3189567499
+        .long	1338136776
+        .long	3230017697
+        .long	4075455588
+        .long	3189567932
+        .long	1427130392
+        .long	3230017699
+        .long	1579647664
+        .long	3189567555
+        .long	1507569120
+        .long	3230017701
+        .long	3785749868
+        .long	3189567715
+        .long	1579469816
+        .long	3230017703
+        .long	2639950365
+        .long	3189567469
+        .long	1642849272
+        .long	3230017705
+        .long	3611501026
+        .long	3189567698
+        .long	1697724240
+        .long	3230017707
+        .long	15422953
+        .long	3189568066
+        .long	1744111424
+        .long	3230017709
+        .long	2642213241
+        .long	3189568062
+        .long	1782027472
+        .long	3230017711
+        .long	143606300
+        .long	3189568058
+        .long	1811488992
+        .long	3230017713
+        .long	501328690
+        .long	3189567276
+        .long	1832512520
+        .long	3230017715
+        .long	3258054578
+        .long	3189567915
+        .long	1845114576
+        .long	3230017717
+        .long	1297851139
+        .long	3189568007
+        .long	1849311616
+        .long	3230017719
+        .long	3589200000
+        .long	3189567580
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .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	2846560486
+        .long	3210737666
+        .long	2729511872
+        .long	3211784202
+        .long	3956813460
+        .long	3212307985
+        .long	1796237193
+        .long	3212828714
+        .long	1562748889
+        .long	3213092649
+        .long	1602292343
+        .long	3213352007
+        .long	745814092
+        .long	3213610865
+        .long	2969306084
+        .long	3213869224
+        .long	3953060839
+        .long	3214006263
+        .long	1128703349
+        .long	3214134948
+        .long	1371067273
+        .long	3214263386
+        .long	131445019
+        .long	3214391579
+        .long	1427948820
+        .long	3214519527
+        .long	665817496
+        .long	3214647232
+        .long	1817459908
+        .long	3214774694
+        .long	242758400
+        .long	3214901915
+        .long	2082038134
+        .long	3214981455
+        .long	2300828032
+        .long	3215044825
+        .long	571795571
+        .long	3215108076
+        .long	3120479584
+        .long	3215171207
+        .long	3276640540
+        .long	3215234220
+        .long	2949178581
+        .long	3215297115
+        .long	4036279704
+        .long	3215359892
+        .long	4130528508
+        .long	3215422552
+        .long	813954767
+        .long	3215485096
+        .long	248046571
+        .long	3215547523
+        .long	4288926261
+        .long	3215609833
+        .long	1897492927
+        .long	3215672029
+        .long	3499237165
+        .long	3215734109
+        .long	2329611090
+        .long	3215796075
+        .long	203907094
+        .long	3215857927
+        .long	3222364838
+        .long	3215919664
+        .long	295408387
+        .long	3215981289
+        .long	899212401
+        .long	3216012696
+        .long	2606049022
+        .long	3216043395
+        .long	4003691233
+        .long	3216074038
+        .long	1675303236
+        .long	3216104626
+        .long	789189655
+        .long	3216135158
+        .long	2213928479
+        .long	3216165634
+        .long	2518405585
+        .long	3216196055
+        .long	2561783534
+        .long	3216226421
+        .long	3198568176
+        .long	3216256732
+        .long	983674944
+        .long	3216286989
+        .long	1057364031
+        .long	3216317191
+        .long	4260371496
+        .long	3216347338
+        .long	2838974660
+        .long	3216377432
+        .long	1919860988
+        .long	3216407472
+        .long	2330291020
+        .long	3216437458
+        .long	598130195
+        .long	3216467391
+        .long	1836782285
+        .long	3216497270
+        .long	2565351466
+        .long	3216527096
+        .long	3593575201
+        .long	3216556869
+        .long	1431920350
+        .long	3216586590
+        .long	1176515501
+        .long	3216616258
+        .long	3624279252
+        .long	3216645873
+        .long	977982819
+        .long	3216675437
+        .long	2616083454
+        .long	3216704948
+        .long	733015457
+        .long	3216734408
+        .long	403990373
+        .long	3216763816
+        .long	2405156675
+        .long	3216793172
+        .long	3213628385
+        .long	3216822477
+        .long	3597448029
+        .long	3216851731
+        .long	25680167
+        .long	3216880935
+        .long	1848308454
+        .long	3216910087
+        .long	1231492199
+        .long	3216939189
+        .long	3222364838
+        .long	3216968240
+        .long	4274224607
+        .long	3216997241
+        .long	836496059
+        .long	3217026193
+        .long	1119829323
+        .long	3217043131
+        .long	315251054
+        .long	3217057557
+        .long	518461891
+        .long	3217071958
+        .long	2094042713
+        .long	3217086334
+        .long	1109735857
+        .long	3217100686
+        .long	2221359788
+        .long	3217115013
+        .long	1492952593
+        .long	3217129316
+        .long	3576653728
+        .long	3217143594
+        .long	237880003
+        .long	3217157849
+        .long	420109003
+        .long	3217172079
+        .long	180120274
+        .long	3217186285
+        .long	4162843939
+        .long	3217200466
+        .long	4126536273
+        .long	3217214624
+        .long	417628115
+        .long	3217228759
+        .long	1970736719
+        .long	3217242869
+        .long	538873716
+        .long	3217256956
+        .long	758227830
+        .long	3217271019
+        .long	2968307242
+        .long	3217285058
+        .long	3211951040
+        .long	3217299074
+        .long	1825275166
+        .long	3217313067
+        .long	3437683677
+        .long	3217327036
+        .long	4086978021
+        .long	3217340982
+        .long	4104270002
+        .long	3217354905
+        .long	3819025464
+        .long	3217368805
+        .long	3559075183
+        .long	3217382682
+        .long	3650625670
+        .long	3217396536
+        .long	123302585
+        .long	3217410368
+        .long	1890030548
+        .long	3217424176
+        .long	682272600
+        .long	3217437962
+        .long	1114811729
+        .long	3217451725
+        .long	3505892050
+        .long	3217465465
+        .long	3877229085
+        .long	3217479183
+        .long	2543954549
+        .long	3217492879
+        .long	4114626469
+        .long	3217506552
+        .long	311370023
+        .long	3217520204
+        .long	34658569
+        .long	3217533833
+        .long	3593519732
+        .long	3217547439
+        .long	2705545195
+        .long	3217561024
+        .long	1971736889
+        .long	3217574587
+        .long	1696647441
+        .long	3217588128
+        .long	2183357019
+        .long	3217601647
+        .long	3733482817
+        .long	3217615144
+        .long	2352221150
+        .long	3217628620
+        .long	2633258676
+        .long	3217642074
+        .long	578912458
+        .long	3217655507
+        .long	780008323
+        .long	3217668918
+        .long	3530988084
+        .long	3217682307
+        .long	534951267
+        .long	3217695676
+        .long	673467853
+        .long	3217709023
+        .long	4236783385
+        .long	3217722348
+        .long	2923827788
+        .long	3217735653
+        .long	1317060595
+        .long	3217748937
+        .long	3997577740
+        .long	3217762199
+        .long	2660218276
+        .long	3217775441
+        .long	1883376699
+        .long	3217788662
+        .long	1949142230
+        .long	3217801862
+        .long	3138274530
+        .long	3217815041
+        .long	1435244737
+        .long	3217828200
+        .long	1413145637
+        .long	3217841338
+        .long	3348797986
+        .long	3217854455
+        .long	3222758658
+        .long	3217867552
+        .long	1309263324
+        .long	3217880629
+        .long	2176234471
+        .long	3217893685
+        .long	1800387473
+        .long	3217906721
+        .long	452140382
+        .long	3217919737
+        .long	2695621757
+        .long	3217932732
+        .long	208809263
+        .long	3217945708
+        .long	1848308454
+        .long	3217958663
+        .long	3584589359
+        .long	3217971598
+        .long	1386895968
+        .long	3217984514
+        .long	4108155659
+        .long	3217997409
+        .long	3420215606
+        .long	3218010285
+        .long	3878621277
+        .long	3218023141
+        .long	1447787319
+        .long	3218035978
+        .long	680874053
+        .long	3218048795
+        .long	1834892843
+        .long	3218061592
+        .long	870713292
+        .long	3218074370
+        .long	1168986141
+        .long	3218083436
+        .long	3245089583
+        .long	3218089805
+        .long	2494877761
+        .long	3218096165
+        .long	3338922950
+        .long	3218102515
+        .long	1607293197
+        .long	3218108856
+        .long	1719424943
+        .long	3218115187
+        .long	3799224547
+        .long	3218121508
+        .long	3675071677
+        .long	3218127820
+        .long	1469757259
+        .long	3218134123
+        .long	1600486820
+        .long	3218140416
+        .long	4188949205
+        .long	3218146699
+        .long	766352567
+        .long	3218152974
+        .long	43231408
+        .long	3218159239
+        .long	2139646042
+        .long	3218165494
+        .long	2880153102
+        .long	3218171740
+        .long	2383743325
+        .long	3218177977
+        .long	768877423
+        .long	3218184205
+        .long	2448456521
+        .long	3218190423
+        .long	3244923387
+        .long	3218196632
+        .long	3275167422
+        .long	3218202832
+        .long	2655560435
+        .long	3218209023
+        .long	1501959692
+        .long	3218215205
+        .long	4224678246
+        .long	3218221377
+        .long	2348618756
+        .long	3218227541
+        .long	283080250
+        .long	3218233696
+        .long	2436859197
+        .long	3218239841
+        .long	333350563
+        .long	3218245978
+        .long	2675321801
+        .long	3218252105
+        .long	985177381
+        .long	3218258224
+        .long	3964700035
+        .long	3218264333
+        .long	3135315249
+        .long	3218270434
+        .long	2902865164
+        .long	3218276526
+        .long	3377742213
+        .long	3218282609
+        .long	374891912
+        .long	3218288684
+        .long	2593684821
+        .long	3218294749
+        .long	1553148222
+        .long	3218300806
+        .long	1656739931
+        .long	3218306854
+        .long	3012481825
+        .long	3218312893
+        .long	1432962538
+        .long	3218318924
+        .long	1320242026
+        .long	3218324946
+        .long	2780952336
+        .long	3218330959
+        .long	1626300240
+        .long	3218336964
+        .long	2256971748
+        .long	3218342960
+        .long	483265518
+        .long	3218348948
+        .long	704964628
+        .long	3218354927
+        .long	3026437244
+        .long	3218360897
+        .long	3256639170
+        .long	3218366859
+        .long	1499050969
+        .long	3218372813
+        .long	2151680465
+        .long	3218378758
+        .long	1022163351
+        .long	3218384695
+        .long	2507634849
+        .long	3218390623
+        .long	2414862975
+        .long	3218396543
+        .long	845152874
+        .long	3218402455
+        .long	2194349235
+        .long	3218408358
+        .long	2267936813
+        .long	3218414253
+        .long	1165944702
+        .long	3218420140
+        .long	3282948707
+        .long	3218426018
+        .long	128204514
+        .long	3218431889
+        .long	390421100
+        .long	3218437751
+        .long	4167959282
+        .long	3218443604
+        .long	2968834018
+        .long	3218449450
+        .long	1185553177
+        .long	3218455288
+        .long	3210217930
+        .long	3218461117
+        .long	549623114
+        .long	3218466939
+        .long	1890030548
+        .long	3218472752
+        .long	3032400188
+        .long	3218478557
+        .long	4072261525
+        .long	3218484354
+        .long	3450874911
+        .long	1070995813
+        .long	2331021804
+        .long	1070990032
+        .long	1029453230
+        .long	1070984259
+        .long	3747176240
+        .long	1070978493
+        .long	1800682930
+        .long	1070972736
+        .long	3686719393
+        .long	1070966986
+        .long	722545241
+        .long	1070961245
+        .long	1405669883
+        .long	1070955511
+        .long	1349079372
+        .long	1070949785
+        .long	461103529
+        .long	1070944067
+        .long	2945413886
+        .long	1070938356
+        .long	121152472
+        .long	1070932654
+        .long	487700860
+        .long	1070926959
+        .long	3954874384
+        .long	1070921271
+        .long	1842920138
+        .long	1070915592
+        .long	2652318780
+        .long	1070909920
+        .long	1999011482
+        .long	1070904256
+        .long	4089234463
+        .long	1070898599
+        .long	244680560
+        .long	1070892951
+        .long	3262235675
+        .long	1070887309
+        .long	169336595
+        .long	1070881676
+        .long	3763576649
+        .long	1070876049
+        .long	1073096258
+        .long	1070870431
+        .long	601221319
+        .long	1070864820
+        .long	2261690268
+        .long	1070859216
+        .long	1673619518
+        .long	1070853620
+        .long	3046403514
+        .long	1070848031
+        .long	1999843716
+        .long	1070842450
+        .long	2744015967
+        .long	1070836876
+        .long	899399508
+        .long	1070831310
+        .long	676744370
+        .long	1070825751
+        .long	1992167703
+        .long	1070820199
+        .long	467152011
+        .long	1070814655
+        .long	313445281
+        .long	1070809118
+        .long	1448157352
+        .long	1070803588
+        .long	3788725476
+        .long	1070798065
+        .long	2957945300
+        .long	1070792550
+        .long	3168871046
+        .long	1070787042
+        .long	44944622
+        .long	1070781542
+        .long	2094830420
+        .long	1070776048
+        .long	647642559
+        .long	1070770562
+        .long	4212681596
+        .long	1070765082
+        .long	4119694493
+        .long	1070759610
+        .long	288676754
+        .long	1070754146
+        .long	1229870791
+        .long	1070748688
+        .long	2568927817
+        .long	1070743237
+        .long	4226775419
+        .long	1070737793
+        .long	1829681364
+        .long	1070732357
+        .long	3889121191
+        .long	1070726927
+        .long	1737005556
+        .long	1070721505
+        .long	3885417029
+        .long	1070716089
+        .long	1666870165
+        .long	1070710681
+        .long	3594048319
+        .long	1070705279
+        .long	1000063738
+        .long	1070699885
+        .long	2398194399
+        .long	1070694497
+        .long	3417111411
+        .long	1070689116
+        .long	3980746691
+        .long	1070683742
+        .long	4013324163
+        .long	1070678375
+        .long	3439358267
+        .long	1070673015
+        .long	2183652476
+        .long	1070667662
+        .long	171297820
+        .long	1070662316
+        .long	1622638721
+        .long	1070656976
+        .long	2168369647
+        .long	1070651643
+        .long	1734435555
+        .long	1070646317
+        .long	247063161
+        .long	1070640998
+        .long	1927726804
+        .long	1070635685
+        .long	2408245143
+        .long	1070630379
+        .long	1615681634
+        .long	1070625080
+        .long	3772343130
+        .long	1070619787
+        .long	215909304
+        .long	1070614502
+        .long	3759169634
+        .long	1070609222
+        .long	1445381777
+        .long	1070603950
+        .long	1792910451
+        .long	1070598684
+        .long	870975437
+        .long	1070590754
+        .long	3194096222
+        .long	1070580248
+        .long	1823716217
+        .long	1070569756
+        .long	913800688
+        .long	1070559277
+        .long	323875369
+        .long	1070548811
+        .long	4208958430
+        .long	1070538357
+        .long	3839688678
+        .long	1070527917
+        .long	3372126730
+        .long	1070517490
+        .long	2667883253
+        .long	1070507076
+        .long	1589083690
+        .long	1070496675
+        .long	4293333010
+        .long	1070486286
+        .long	2053843986
+        .long	1070475911
+        .long	3324205749
+        .long	1070465548
+        .long	3673610217
+        .long	1070455198
+        .long	2966718784
+        .long	1070444861
+        .long	1068692560
+        .long	1070434537
+        .long	2140157205
+        .long	1070424225
+        .long	1752298597
+        .long	1070413926
+        .long	4066729595
+        .long	1070403639
+        .long	360651144
+        .long	1070393366
+        .long	3386588242
+        .long	1070383104
+        .long	127747308
+        .long	1070372856
+        .long	3337621361
+        .long	1070362619
+        .long	380113
+        .long	1070352396
+        .long	2870475188
+        .long	1070342184
+        .long	3227997535
+        .long	1070331985
+        .long	943446189
+        .long	1070321799
+        .long	182758681
+        .long	1070311625
+        .long	817374162
+        .long	1070301463
+        .long	2719198427
+        .long	1070291313
+        .long	1465634365
+        .long	1070281176
+        .long	1224481606
+        .long	1070271051
+        .long	1869032404
+        .long	1070260938
+        .long	3273036717
+        .long	1070250837
+        .long	1015732707
+        .long	1070240749
+        .long	3561713742
+        .long	1070230672
+        .long	2196155141
+        .long	1070220608
+        .long	1089583089
+        .long	1070210556
+        .long	118003300
+        .long	1070200516
+        .long	3452833475
+        .long	1070190487
+        .long	2381031992
+        .long	1070180471
+        .long	1074899573
+        .long	1070170467
+        .long	3707175295
+        .long	1070160474
+        .long	1566132617
+        .long	1070150494
+        .long	3120348377
+        .long	1070140525
+        .long	3953929663
+        .long	1070130568
+        .long	3946380940
+        .long	1070120623
+        .long	2977634725
+        .long	1070110690
+        .long	928049556
+        .long	1070100769
+        .long	1973375279
+        .long	1070090859
+        .long	1699849154
+        .long	1070080961
+        .long	4284063055
+        .long	1070071074
+        .long	1018125008
+        .long	1070061200
+        .long	374428300
+        .long	1070051337
+        .long	2235845747
+        .long	1070041485
+        .long	2190695046
+        .long	1070031645
+        .long	122671437
+        .long	1070021817
+        .long	210845780
+        .long	1070012000
+        .long	2339728060
+        .long	1070002194
+        .long	2099265479
+        .long	1069992400
+        .long	3669742467
+        .long	1069982617
+        .long	2641909617
+        .long	1069972846
+        .long	3196851002
+        .long	1069963086
+        .long	926113142
+        .long	1069953338
+        .long	11572342
+        .long	1069943601
+        .long	340530969
+        .long	1069933875
+        .long	1800682930
+        .long	1069924160
+        .long	4280111857
+        .long	1069914456
+        .long	3372322013
+        .long	1069904764
+        .long	3261138386
+        .long	1069895083
+        .long	3835803021
+        .long	1069885413
+        .long	690973253
+        .long	1069875755
+        .long	2306589128
+        .long	1069866107
+        .long	4278067876
+        .long	1069856470
+        .long	2201204065
+        .long	1069846845
+        .long	262102455
+        .long	1069837231
+        .long	2647241692
+        .long	1069827627
+        .long	658570708
+        .long	1069818035
+        .long	2778278092
+        .long	1069808453
+        .long	309052031
+        .long	1069798883
+        .long	1733817001
+        .long	1069789323
+        .long	2650961017
+        .long	1069779774
+        .long	2954203158
+        .long	1069770236
+        .long	2537624622
+        .long	1069760709
+        .long	1295667077
+        .long	1069751193
+        .long	3418098326
+        .long	1069741687
+        .long	210141498
+        .long	1069732193
+        .long	157244505
+        .long	1069722709
+        .long	3155274661
+        .long	1069713235
+        .long	510517079
+        .long	1069703773
+        .long	709476866
+        .long	1069694321
+        .long	3649073763
+        .long	1069684879
+        .long	636640577
+        .long	1069675449
+        .long	159725394
+        .long	1069666029
+        .long	2116286250
+        .long	1069656619
+        .long	2109656884
+        .long	1069647220
+        .long	38479793
+        .long	1069637832
+        .long	96704707
+        .long	1069628454
+        .long	2183652476
+        .long	1069619086
+        .long	1904013563
+        .long	1069609729
+        .long	3452748429
+        .long	1069600382
+        .long	2435216853
+        .long	1069591046
+        .long	3047045639
+        .long	1069581720
+        .long	894257944
+        .long	1069572405
+        .long	173141005
+        .long	1069563100
+        .long	785342784
+        .long	1069553805
+        .long	970708326
+        .long	1069541521
+        .long	2645916898
+        .long	1069522972
+        .long	2106590683
+        .long	1069504444
+        .long	3453588195
+        .long	1069485936
+        .long	2198475040
+        .long	1069467449
+        .long	2443390270
+        .long	1069448982
+        .long	3996141691
+        .long	1069430535
+        .long	2370203065
+        .long	1069412109
+        .long	1669613218
+        .long	1069393703
+        .long	1704071394
+        .long	1069375317
+        .long	2283901796
+        .long	1069356951
+        .long	3220050856
+        .long	1069338605
+        .long	29117219
+        .long	1069320280
+        .long	1113218225
+        .long	1069301974
+        .long	1990183441
+        .long	1069283688
+        .long	2473421172
+        .long	1069265422
+        .long	2376948508
+        .long	1069247176
+        .long	1515388672
+        .long	1069228950
+        .long	3998935692
+        .long	1069210743
+        .long	1053482595
+        .long	1069192557
+        .long	1085389880
+        .long	1069174390
+        .long	3911679148
+        .long	1069156242
+        .long	760030536
+        .long	1069138115
+        .long	38583924
+        .long	1069120007
+        .long	1566132617
+        .long	1069101918
+        .long	867088104
+        .long	1069083849
+        .long	2056379433
+        .long	1069065799
+        .long	659581512
+        .long	1069047769
+        .long	792781808
+        .long	1069029758
+        .long	2277675977
+        .long	1069011766
+        .long	641565395
+        .long	1068993794
+        .long	2256601
+        .long	1068975841
+        .long	183156961
+        .long	1068957907
+        .long	1008239542
+        .long	1068939992
+        .long	2302040698
+        .long	1068922096
+        .long	3889657667
+        .long	1068904219
+        .long	1301778891
+        .long	1068886362
+        .long	2954550821
+        .long	1068868523
+        .long	84804484
+        .long	1068850704
+        .long	1109791498
+        .long	1068832903
+        .long	1562410668
+        .long	1068815121
+        .long	1271074840
+        .long	1068797358
+        .long	64741293
+        .long	1068779614
+        .long	2067876735
+        .long	1068761888
+        .long	2815553124
+        .long	1068744181
+        .long	2138347284
+        .long	1068726493
+        .long	4162338635
+        .long	1068708823
+        .long	129237761
+        .long	1068691173
+        .long	2756122533
+        .long	1068673540
+        .long	3285762921
+        .long	1068655926
+        .long	1551389854
+        .long	1068638331
+        .long	1681725707
+        .long	1068620754
+        .long	3511047527
+        .long	1068603195
+        .long	2579184841
+        .long	1068585655
+        .long	3016419377
+        .long	1068568133
+        .long	363613719
+        .long	1068550630
+        .long	3047045639
+        .long	1068533144
+        .long	2313634884
+        .long	1068515677
+        .long	296456961
+        .long	1068497513
+        .long	1367328035
+        .long	1068462651
+        .long	3221665916
+        .long	1068427825
+        .long	1242258971
+        .long	1068393036
+        .long	3697798734
+        .long	1068358282
+        .long	1678104687
+        .long	1068323565
+        .long	3453858508
+        .long	1068288883
+        .long	116861598
+        .long	1068254238
+        .long	4234736672
+        .long	1068219627
+        .long	2606283437
+        .long	1068185053
+        .long	3506114812
+        .long	1068150514
+        .long	2324914545
+        .long	1068116011
+        .long	3044269692
+        .long	1068081543
+        .long	1056797460
+        .long	1068047111
+        .long	346010435
+        .long	1068012714
+        .long	601410756
+        .long	1067978352
+        .long	1513453498
+        .long	1067944025
+        .long	2773542775
+        .long	1067909733
+        .long	4074027864
+        .long	1067875476
+        .long	813232056
+        .long	1067841255
+        .long	1275317999
+        .long	1067807068
+        .long	860480111
+        .long	1067772916
+        .long	3559777258
+        .long	1067738798
+        .long	480292498
+        .long	1067704716
+        .long	4204867691
+        .long	1067670667
+        .long	1547459502
+        .long	1067636654
+        .long	797775935
+        .long	1067602675
+        .long	1656501562
+        .long	1067568730
+        .long	3825228429
+        .long	1067534819
+        .long	2711485098
+        .long	1067500943
+        .long	2313634884
+        .long	1067467101
+        .long	376973398
+        .long	1067416219
+        .long	672386641
+        .long	1067348671
+        .long	630691842
+        .long	1067281191
+        .long	3960777458
+        .long	1067213778
+        .long	1488394470
+        .long	1067146434
+        .long	1220920383
+        .long	1067079157
+        .long	2577548405
+        .long	1067011947
+        .long	684247743
+        .long	1066944805
+        .long	3553625811
+        .long	1066877729
+        .long	2020150230
+        .long	1066810721
+        .long	4099880293
+        .long	1066743779
+        .long	630721729
+        .long	1066676905
+        .long	3927125538
+        .long	1066610096
+        .long	535440936
+        .long	1066543355
+        .long	2773516144
+        .long	1066476679
+        .long	1486051399
+        .long	1066410070
+        .long	808661260
+        .long	1066285262
+        .long	2227658502
+        .long	1066152307
+        .long	1813447778
+        .long	1066019484
+        .long	2743640746
+        .long	1065886792
+        .long	3904192454
+        .long	1065754231
+        .long	4184355568
+        .long	1065621801
+        .long	2476667369
+        .long	1065489502
+        .long	1971904113
+        .long	1065357333
+        .long	3138267131
+        .long	1065097372
+        .long	341338964
+        .long	1064833554
+        .long	1954052322
+        .long	1064569994
+        .long	1498975029
+        .long	1064306693
+        .long	2190050752
+        .long	1063782660
+        .long	1440057502
+        .long	1063257089
+        .long	1432705161
+        .long	1062208000
+        .long	0
+        .long	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .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	2900053258
+        .long	1070176668
+        .long	2900053258
+        .long	1070176668
+        .long	2900053258
+        .long	1070176668
+        .long	2900053258
+        .long	1070176668
+        .long	1208323809
+        .long	3218079745
+        .long	1208323809
+        .long	3218079745
+        .long	1208323809
+        .long	3218079745
+        .long	1208323809
+        .long	3218079745
+        .long	1431651269
+        .long	1070945621
+        .long	1431651269
+        .long	1070945621
+        .long	1431651269
+        .long	1070945621
+        .long	1431651269
+        .long	1070945621
+        .long	4294965279
+        .long	3219128319
+        .long	4294965279
+        .long	3219128319
+        .long	4294965279
+        .long	3219128319
+        .long	4294965279
+        .long	3219128319
+        .long	4294967295
+        .long	1048575
+        .long	4294967295
+        .long	1048575
+        .long	4294967295
+        .long	1048575
+        .long	4294967295
+        .long	1048575
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .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	1062207488
+        .long	0
+        .long	1062207488
+        .long	0
+        .long	1062207488
+        .long	0
+        .long	1062207488
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .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	3220176895
+        .long	4294967295
+        .long	3220176895
+        .long	4294967295
+        .long	3220176895
+        .long	4294967295
+        .long	3220176895
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .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	4294963200
+        .long	2134900735
+        .long	4294963200
+        .long	2134900735
+        .long	4294963200
+        .long	2134900735
+        .long	4294963200
+        .long	2134900735
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .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	4227858432
+        .long	4294967295
+        .long	4227858432
+        .long	4294967295
+        .long	4227858432
+        .long	4294967295
+        .long	4227858432
+        .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	1072693248
+        .long	0
+        .long	1072693248
+        .long	0
+        .long	1072693248
+        .long	0
+        .long	1072693248
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .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	0
+        .long	1040187392
+        .long	0
+        .long	1040187392
+        .long	0
+        .long	1040187392
+        .long	0
+        .long	1040187392
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .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	4294966272
+        .long	4294967295
+        .long	4294966272
+        .long	4294967295
+        .long	4294966272
+        .long	4294967295
+        .long	4294966272
+        .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	4277796864
+        .long	1072049730
+        .long	4277796864
+        .long	1072049730
+        .long	4277796864
+        .long	1072049730
+        .long	4277796864
+        .long	1072049730
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .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	3164471296
+        .long	1031600026
+        .long	3164471296
+        .long	1031600026
+        .long	3164471296
+        .long	1031600026
+        .long	3164471296
+        .long	1031600026
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .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	1082564608
+        .long	0
+        .long	1082564608
+        .long	0
+        .long	1082564608
+        .long	0
+        .long	1082564608
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .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	1083176960
+        .long	0
+        .long	1083176960
+        .long	0
+        .long	1083176960
+        .long	0
+        .long	1083176960
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .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	1083174912
+        .long	0
+        .long	1083174912
+        .long	0
+        .long	1083174912
+        .long	0
+        .long	1083174912
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .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	2146435072
+        .long	0
+        .long	2146435072
+        .long	0
+        .long	2146435072
+        .long	0
+        .long	2146435072
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .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	2134900736
+        .long	0
+        .long	2134900736
+        .long	0
+        .long	2134900736
+        .long	0
+        .long	2134900736
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .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	4277811695
+        .long	1072049730
+        .long	4277811695
+        .long	1072049730
+        .long	4277811695
+        .long	1072049730
+        .long	4277811695
+        .long	1072049730
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .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	1104150528
+        .long	0
+        .long	1104150528
+        .long	0
+        .long	1104150528
+        .long	0
+        .long	1104150528
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .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	1071120384
+        .long	0
+        .long	1071120384
+        .long	0
+        .long	1071120384
+        .long	0
+        .long	1071120384
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .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	1070858240
+        .long	0
+        .long	1070858240
+        .long	0
+        .long	1070858240
+        .long	0
+        .long	1070858240
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .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	1070694400
+        .long	0
+        .long	1070694400
+        .long	0
+        .long	1070694400
+        .long	0
+        .long	1070694400
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .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	1070563328
+        .long	0
+        .long	1070563328
+        .long	0
+        .long	1070563328
+        .long	0
+        .long	1070563328
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .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	1071644672
+        .long	0
+        .long	1071644672
+        .long	0
+        .long	1071644672
+        .long	0
+        .long	1071644672
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .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	2146435071
+        .long	4294967295
+        .long	2146435071
+        .long	4294967295
+        .long	2146435071
+        .long	4294967295
+        .long	2146435071
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .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	1063256064
+        .long	0
+        .long	1063256064
+        .long	0
+        .long	1063256064
+        .long	0
+        .long	1063256064
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .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	0
+        .long	1077870592
+        .long	0
+        .long	1077870592
+        .long	0
+        .long	1077870592
+        .long	0
+        .long	1077870592
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .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	4294966784
+        .long	0
+        .long	4294966784
+        .long	0
+        .long	4294966784
+        .long	0
+        .long	4294966784
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .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	4160749568
+        .long	4294967295
+        .long	4160749568
+        .long	4294967295
+        .long	4160749568
+        .long	4294967295
+        .long	4160749568
+        .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	4278190080
+        .long	4294967295
+        .long	4278190080
+        .long	4294967295
+        .long	4278190080
+        .long	4294967295
+        .long	4278190080
+        .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	4294963200
+        .long	4294967295
+        .long	4294963200
+        .long	4294967295
+        .long	4294963200
+        .long	4294967295
+        .long	4294963200
+        .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	1041235968
+        .long	0
+        .long	1041235968
+        .long	0
+        .long	1041235968
+        .long	0
+        .long	1041235968
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .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	55574528
+        .long	0
+        .long	55574528
+        .long	0
+        .long	55574528
+        .long	0
+        .long	55574528
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .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	2146435072
+        .long	0
+        .long	4293918720
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .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	1072693248
+        .long	0
+        .long	3220176896
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .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	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
+        .type	__svml_datanh_data_internal,@object
+        .size	__svml_datanh_data_internal,14848
+        .align 8
+
+__datanh_la_CoutTab:
+        .long	0
+        .long	1072693248
+        .long	0
+        .long	0
+        .long	0
+        .long	2146435072
+        .long	0
+        .long	4293918720
+        .type	__datanh_la_CoutTab,@object
+        .size	__datanh_la_CoutTab,32
diff --git a/sysdeps/x86_64/fpu/multiarch/svml_d_atanh8_core-avx2.S b/sysdeps/x86_64/fpu/multiarch/svml_d_atanh8_core-avx2.S
new file mode 100644
index 0000000000..675ebd2fd6
--- /dev/null
+++ b/sysdeps/x86_64/fpu/multiarch/svml_d_atanh8_core-avx2.S
@@ -0,0 +1,20 @@ 
+/* AVX2 version of vectorized atanh, 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_atanh _ZGVeN8v_atanh_avx2_wrapper
+#include "../svml_d_atanh8_core.S"
diff --git a/sysdeps/x86_64/fpu/multiarch/svml_d_atanh8_core.c b/sysdeps/x86_64/fpu/multiarch/svml_d_atanh8_core.c
new file mode 100644
index 0000000000..4da8e20fad
--- /dev/null
+++ b/sysdeps/x86_64/fpu/multiarch/svml_d_atanh8_core.c
@@ -0,0 +1,27 @@ 
+/* Multiple versions of vectorized atanh, 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_atanh
+#include "ifunc-mathvec-avx512-skx.h"
+
+libc_ifunc_redirected (REDIRECT_NAME, SYMBOL_NAME, IFUNC_SELECTOR ());
+
+#ifdef SHARED
+__hidden_ver1 (_ZGVeN8v_atanh, __GI__ZGVeN8v_atanh, __redirect__ZGVeN8v_atanh)
+  __attribute__ ((visibility ("hidden")));
+#endif
diff --git a/sysdeps/x86_64/fpu/multiarch/svml_d_atanh8_core_avx512.S b/sysdeps/x86_64/fpu/multiarch/svml_d_atanh8_core_avx512.S
new file mode 100644
index 0000000000..9881d70d6f
--- /dev/null
+++ b/sysdeps/x86_64/fpu/multiarch/svml_d_atanh8_core_avx512.S
@@ -0,0 +1,632 @@ 
+/* Function atanh 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:
+ *
+ *   Compute atanh(x) as 0.5 * log((1 + x)/(1 - x))
+ *   using small lookup table that map to AVX-512 permute instructions
+ *
+ *   Special cases:
+ *
+ *   atanh(0)  = 0
+ *   atanh(+1) = +INF
+ *   atanh(-1) = -INF
+ *   atanh(x)  = NaN if |x| > 1, or if x is a NaN or INF
+ *
+ */
+
+#include <sysdep.h>
+
+        .text
+ENTRY(_ZGVeN8v_atanh_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
+        vmovups   256+__svml_datanh_data_internal_avx512(%rip), %zmm15
+
+/* round reciprocals to 1+4b mantissas */
+        vmovups   384+__svml_datanh_data_internal_avx512(%rip), %zmm6
+        vmovups   448+__svml_datanh_data_internal_avx512(%rip), %zmm9
+        vmovaps   %zmm0, %zmm2
+        vandpd    320+__svml_datanh_data_internal_avx512(%rip), %zmm2, %zmm13
+
+/* 1+y */
+        vaddpd    {rn-sae}, %zmm15, %zmm13, %zmm0
+
+/* 1-y */
+        vsubpd    {rn-sae}, %zmm13, %zmm15, %zmm4
+        vxorpd    %zmm13, %zmm2, %zmm1
+
+/* Yp_high */
+        vsubpd    {rn-sae}, %zmm15, %zmm0, %zmm7
+
+/* -Ym_high */
+        vsubpd    {rn-sae}, %zmm15, %zmm4, %zmm12
+
+/* RcpP ~ 1/Yp */
+        vrcp14pd  %zmm0, %zmm3
+
+/* RcpM ~ 1/Ym */
+        vrcp14pd  %zmm4, %zmm5
+
+/* input outside (-1, 1) ? */
+        vcmppd    $21, {sae}, %zmm15, %zmm13, %k0
+        vpaddq    %zmm6, %zmm3, %zmm11
+        vpaddq    %zmm6, %zmm5, %zmm10
+
+/* Yp_low */
+        vsubpd    {rn-sae}, %zmm7, %zmm13, %zmm8
+        vandpd    %zmm9, %zmm11, %zmm14
+        vandpd    %zmm9, %zmm10, %zmm3
+
+/* Ym_low */
+        vaddpd    {rn-sae}, %zmm12, %zmm13, %zmm12
+
+/* Reduced argument: Rp = (RcpP*Yp - 1)+RcpP*Yp_low */
+        vfmsub213pd {rn-sae}, %zmm15, %zmm14, %zmm0
+
+/* Reduced argument: Rm = (RcpM*Ym - 1)+RcpM*Ym_low */
+        vfmsub231pd {rn-sae}, %zmm3, %zmm4, %zmm15
+
+/* exponents */
+        vgetexppd {sae}, %zmm14, %zmm5
+        vgetexppd {sae}, %zmm3, %zmm4
+
+/* Table lookups */
+        vmovups   __svml_datanh_data_internal_avx512(%rip), %zmm9
+        vmovups   64+__svml_datanh_data_internal_avx512(%rip), %zmm13
+        vmovups   128+__svml_datanh_data_internal_avx512(%rip), %zmm7
+        vfmadd231pd {rn-sae}, %zmm14, %zmm8, %zmm0
+        vfnmadd231pd {rn-sae}, %zmm3, %zmm12, %zmm15
+
+/* Prepare table index */
+        vpsrlq    $48, %zmm14, %zmm11
+        vpsrlq    $48, %zmm3, %zmm8
+        vmovups   192+__svml_datanh_data_internal_avx512(%rip), %zmm14
+
+/* polynomials */
+        vmovups   512+__svml_datanh_data_internal_avx512(%rip), %zmm3
+
+/* Km-Kp */
+        vsubpd    {rn-sae}, %zmm5, %zmm4, %zmm5
+        vmovups   576+__svml_datanh_data_internal_avx512(%rip), %zmm4
+        kmovw     %k0, %edx
+        vmovaps   %zmm11, %zmm10
+        vmovaps   %zmm4, %zmm6
+        vpermi2pd %zmm13, %zmm9, %zmm10
+        vpermi2pd %zmm14, %zmm7, %zmm11
+        vpermt2pd %zmm13, %zmm8, %zmm9
+        vpermt2pd %zmm14, %zmm8, %zmm7
+        vmovups   640+__svml_datanh_data_internal_avx512(%rip), %zmm8
+        vfmadd231pd {rn-sae}, %zmm0, %zmm3, %zmm6
+        vfmadd231pd {rn-sae}, %zmm15, %zmm3, %zmm4
+        vmovups   832+__svml_datanh_data_internal_avx512(%rip), %zmm13
+        vmovups   896+__svml_datanh_data_internal_avx512(%rip), %zmm14
+        vfmadd213pd {rn-sae}, %zmm8, %zmm0, %zmm6
+        vfmadd213pd {rn-sae}, %zmm8, %zmm15, %zmm4
+        vmovups   1024+__svml_datanh_data_internal_avx512(%rip), %zmm8
+        vsubpd    {rn-sae}, %zmm11, %zmm7, %zmm12
+
+/* table values */
+        vsubpd    {rn-sae}, %zmm10, %zmm9, %zmm3
+        vmovups   704+__svml_datanh_data_internal_avx512(%rip), %zmm7
+        vmovups   768+__svml_datanh_data_internal_avx512(%rip), %zmm9
+
+/* K*L2H + Th */
+        vmovups   1152+__svml_datanh_data_internal_avx512(%rip), %zmm10
+
+/* K*L2L + Tl */
+        vmovups   1216+__svml_datanh_data_internal_avx512(%rip), %zmm11
+        vfmadd213pd {rn-sae}, %zmm7, %zmm0, %zmm6
+        vfmadd213pd {rn-sae}, %zmm7, %zmm15, %zmm4
+        vmovups   960+__svml_datanh_data_internal_avx512(%rip), %zmm7
+        vfmadd231pd {rn-sae}, %zmm5, %zmm10, %zmm3
+        vfmadd213pd {rn-sae}, %zmm12, %zmm11, %zmm5
+        vfmadd213pd {rn-sae}, %zmm9, %zmm0, %zmm6
+        vfmadd213pd {rn-sae}, %zmm9, %zmm15, %zmm4
+        vfmadd213pd {rn-sae}, %zmm13, %zmm0, %zmm6
+        vfmadd213pd {rn-sae}, %zmm13, %zmm15, %zmm4
+        vfmadd213pd {rn-sae}, %zmm14, %zmm0, %zmm6
+        vfmadd213pd {rn-sae}, %zmm14, %zmm15, %zmm4
+        vfmadd213pd {rn-sae}, %zmm7, %zmm0, %zmm6
+        vfmadd213pd {rn-sae}, %zmm7, %zmm15, %zmm4
+        vfmadd213pd {rn-sae}, %zmm8, %zmm0, %zmm6
+        vfmadd213pd {rn-sae}, %zmm8, %zmm15, %zmm4
+
+/* (K*L2L + Tl) + Rp*PolyP */
+        vfmadd213pd {rn-sae}, %zmm5, %zmm0, %zmm6
+        vorpd     1088+__svml_datanh_data_internal_avx512(%rip), %zmm1, %zmm0
+
+/* (K*L2L + Tl) + Rp*PolyP -Rm*PolyM */
+        vfnmadd213pd {rn-sae}, %zmm6, %zmm15, %zmm4
+        vaddpd    {rn-sae}, %zmm4, %zmm3, %zmm1
+        vmulpd    {rn-sae}, %zmm0, %zmm1, %zmm0
+        testl     %edx, %edx
+        jne       .LBL_1_3
+
+.LBL_1_2:
+        movq      %rbp, %rsp
+        popq      %rbp
+        cfi_def_cfa(7, 8)
+        cfi_restore(6)
+        ret
+        cfi_def_cfa(6, 16)
+        cfi_offset(6, -16)
+
+.LBL_1_3:
+        vmovups   %zmm2, 64(%rsp)
+        vmovups   %zmm0, 128(%rsp)
+        je        .LBL_1_2
+        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
+
+.LBL_1_7:
+        btl       %r12d, %r13d
+        jc        .LBL_1_10
+
+.LBL_1_8:
+        incl      %r12d
+        cmpl      $8, %r12d
+        jl        .LBL_1_7
+        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       .LBL_1_2
+        .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
+
+.LBL_1_10:
+        lea       64(%rsp,%r12,8), %rdi
+        lea       128(%rsp,%r12,8), %rsi
+        call      __svml_datanh_cout_rare_internal
+        jmp       .LBL_1_8
+
+END(_ZGVeN8v_atanh_skx)
+
+        .align    16,0x90
+
+__svml_datanh_cout_rare_internal:
+
+        cfi_startproc
+
+        movzwl    6(%rdi), %eax
+        andl      $32752, %eax
+        movsd     (%rdi), %xmm0
+        movb      7(%rdi), %dl
+        andb      $127, %dl
+        movsd     %xmm0, -8(%rsp)
+        cmpl      $32752, %eax
+        je        .LBL_2_6
+
+.LBL_2_2:
+        cmpl      $0, -8(%rsp)
+        jne       .LBL_2_5
+        movb      %dl, -1(%rsp)
+        cmpl      $1072693248, -4(%rsp)
+        jne       .LBL_2_5
+        divsd     8+__datanh_la_CoutTab(%rip), %xmm0
+        movsd     %xmm0, (%rsi)
+        movl      $2, %eax
+        ret
+
+.LBL_2_5:
+        movsd     8+__datanh_la_CoutTab(%rip), %xmm0
+        movl      $1, %eax
+        mulsd     16+__datanh_la_CoutTab(%rip), %xmm0
+        movsd     %xmm0, (%rsi)
+        ret
+
+.LBL_2_6:
+        testl     $1048575, 4(%rdi)
+        jne       .LBL_2_8
+        cmpl      $0, (%rdi)
+        je        .LBL_2_2
+
+.LBL_2_8:
+        mulsd     %xmm0, %xmm0
+        xorl      %eax, %eax
+        movsd     %xmm0, (%rsi)
+        ret
+
+        cfi_endproc
+
+        .type	__svml_datanh_cout_rare_internal,@function
+        .size	__svml_datanh_cout_rare_internal,.-__svml_datanh_cout_rare_internal
+
+        .section .rodata, "a"
+        .align 64
+
+__svml_datanh_data_internal_avx512:
+        .long	0
+        .long	0
+        .long	3222274048
+        .long	1068436016
+        .long	1848246272
+        .long	1069426439
+        .long	1890058240
+        .long	1069940528
+        .long	3348824064
+        .long	1070370807
+        .long	2880143360
+        .long	1070688092
+        .long	3256647680
+        .long	1070883211
+        .long	4139515904
+        .long	1071069655
+        .long	3971973120
+        .long	1071248163
+        .long	3348791296
+        .long	1071419383
+        .long	1605304320
+        .long	1071583887
+        .long	3827646464
+        .long	1071693426
+        .long	1584414720
+        .long	1071769695
+        .long	860815360
+        .long	1071843287
+        .long	3896934400
+        .long	1071914383
+        .long	643547136
+        .long	1071983149
+        .long	0
+        .long	0
+        .long	399283991
+        .long	1030105702
+        .long	1028718588
+        .long	1030642877
+        .long	3808918910
+        .long	3177909005
+        .long	4136237123
+        .long	3177805716
+        .long	3462654649
+        .long	1029900033
+        .long	2051171366
+        .long	3177225921
+        .long	2396640771
+        .long	3177708721
+        .long	3062724207
+        .long	1029196786
+        .long	634920691
+        .long	1029317036
+        .long	1913570380
+        .long	1027322573
+        .long	1734886604
+        .long	3177545033
+        .long	2335489660
+        .long	1025116093
+        .long	3046154741
+        .long	1029750303
+        .long	914782743
+        .long	3176833847
+        .long	3743595607
+        .long	1028041657
+        .long	0
+        .long	1072693248
+        .long	0
+        .long	1072693248
+        .long	0
+        .long	1072693248
+        .long	0
+        .long	1072693248
+        .long	0
+        .long	1072693248
+        .long	0
+        .long	1072693248
+        .long	0
+        .long	1072693248
+        .long	0
+        .long	1072693248
+        .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	0
+        .long	32768
+        .long	0
+        .long	32768
+        .long	0
+        .long	32768
+        .long	0
+        .long	32768
+        .long	0
+        .long	32768
+        .long	0
+        .long	32768
+        .long	0
+        .long	32768
+        .long	0
+        .long	32768
+        .long	0
+        .long	4294901760
+        .long	0
+        .long	4294901760
+        .long	0
+        .long	4294901760
+        .long	0
+        .long	4294901760
+        .long	0
+        .long	4294901760
+        .long	0
+        .long	4294901760
+        .long	0
+        .long	4294901760
+        .long	0
+        .long	4294901760
+        .long	1087603010
+        .long	1069318621
+        .long	1087603010
+        .long	1069318621
+        .long	1087603010
+        .long	1069318621
+        .long	1087603010
+        .long	1069318621
+        .long	1087603010
+        .long	1069318621
+        .long	1087603010
+        .long	1069318621
+        .long	1087603010
+        .long	1069318621
+        .long	1087603010
+        .long	1069318621
+        .long	3090058096
+        .long	3217033020
+        .long	3090058096
+        .long	3217033020
+        .long	3090058096
+        .long	3217033020
+        .long	3090058096
+        .long	3217033020
+        .long	3090058096
+        .long	3217033020
+        .long	3090058096
+        .long	3217033020
+        .long	3090058096
+        .long	3217033020
+        .long	3090058096
+        .long	3217033020
+        .long	2566904552
+        .long	1069697314
+        .long	2566904552
+        .long	1069697314
+        .long	2566904552
+        .long	1069697314
+        .long	2566904552
+        .long	1069697314
+        .long	2566904552
+        .long	1069697314
+        .long	2566904552
+        .long	1069697314
+        .long	2566904552
+        .long	1069697314
+        .long	2566904552
+        .long	1069697314
+        .long	4168213957
+        .long	3217380691
+        .long	4168213957
+        .long	3217380691
+        .long	4168213957
+        .long	3217380691
+        .long	4168213957
+        .long	3217380691
+        .long	4168213957
+        .long	3217380691
+        .long	4168213957
+        .long	3217380691
+        .long	4168213957
+        .long	3217380691
+        .long	4168213957
+        .long	3217380691
+        .long	2580363594
+        .long	1070176665
+        .long	2580363594
+        .long	1070176665
+        .long	2580363594
+        .long	1070176665
+        .long	2580363594
+        .long	1070176665
+        .long	2580363594
+        .long	1070176665
+        .long	2580363594
+        .long	1070176665
+        .long	2580363594
+        .long	1070176665
+        .long	2580363594
+        .long	1070176665
+        .long	797185
+        .long	3218079744
+        .long	797185
+        .long	3218079744
+        .long	797185
+        .long	3218079744
+        .long	797185
+        .long	3218079744
+        .long	797185
+        .long	3218079744
+        .long	797185
+        .long	3218079744
+        .long	797185
+        .long	3218079744
+        .long	797185
+        .long	3218079744
+        .long	1431655522
+        .long	1070945621
+        .long	1431655522
+        .long	1070945621
+        .long	1431655522
+        .long	1070945621
+        .long	1431655522
+        .long	1070945621
+        .long	1431655522
+        .long	1070945621
+        .long	1431655522
+        .long	1070945621
+        .long	1431655522
+        .long	1070945621
+        .long	1431655522
+        .long	1070945621
+        .long	4294967237
+        .long	3219128319
+        .long	4294967237
+        .long	3219128319
+        .long	4294967237
+        .long	3219128319
+        .long	4294967237
+        .long	3219128319
+        .long	4294967237
+        .long	3219128319
+        .long	4294967237
+        .long	3219128319
+        .long	4294967237
+        .long	3219128319
+        .long	4294967237
+        .long	3219128319
+        .long	0
+        .long	1072693248
+        .long	0
+        .long	1072693248
+        .long	0
+        .long	1072693248
+        .long	0
+        .long	1072693248
+        .long	0
+        .long	1072693248
+        .long	0
+        .long	1072693248
+        .long	0
+        .long	1072693248
+        .long	0
+        .long	1072693248
+        .long	0
+        .long	1071644672
+        .long	0
+        .long	1071644672
+        .long	0
+        .long	1071644672
+        .long	0
+        .long	1071644672
+        .long	0
+        .long	1071644672
+        .long	0
+        .long	1071644672
+        .long	0
+        .long	1071644672
+        .long	0
+        .long	1071644672
+        .long	4277796864
+        .long	1072049730
+        .long	4277796864
+        .long	1072049730
+        .long	4277796864
+        .long	1072049730
+        .long	4277796864
+        .long	1072049730
+        .long	4277796864
+        .long	1072049730
+        .long	4277796864
+        .long	1072049730
+        .long	4277796864
+        .long	1072049730
+        .long	4277796864
+        .long	1072049730
+        .long	3164471296
+        .long	1031600026
+        .long	3164471296
+        .long	1031600026
+        .long	3164471296
+        .long	1031600026
+        .long	3164471296
+        .long	1031600026
+        .long	3164471296
+        .long	1031600026
+        .long	3164471296
+        .long	1031600026
+        .long	3164471296
+        .long	1031600026
+        .long	3164471296
+        .long	1031600026
+        .type	__svml_datanh_data_internal_avx512,@object
+        .size	__svml_datanh_data_internal_avx512,1280
+        .align 8
+
+__datanh_la_CoutTab:
+        .long	0
+        .long	1072693248
+        .long	0
+        .long	0
+        .long	0
+        .long	2146435072
+        .long	0
+        .long	4293918720
+        .type	__datanh_la_CoutTab,@object
+        .size	__datanh_la_CoutTab,32
diff --git a/sysdeps/x86_64/fpu/multiarch/svml_s_atanhf16_core-avx2.S b/sysdeps/x86_64/fpu/multiarch/svml_s_atanhf16_core-avx2.S
new file mode 100644
index 0000000000..1af3662f65
--- /dev/null
+++ b/sysdeps/x86_64/fpu/multiarch/svml_s_atanhf16_core-avx2.S
@@ -0,0 +1,20 @@ 
+/* AVX2 version of vectorized atanhf.
+   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_atanhf _ZGVeN16v_atanhf_avx2_wrapper
+#include "../svml_s_atanhf16_core.S"
diff --git a/sysdeps/x86_64/fpu/multiarch/svml_s_atanhf16_core.c b/sysdeps/x86_64/fpu/multiarch/svml_s_atanhf16_core.c
new file mode 100644
index 0000000000..4b1190f0eb
--- /dev/null
+++ b/sysdeps/x86_64/fpu/multiarch/svml_s_atanhf16_core.c
@@ -0,0 +1,28 @@ 
+/* Multiple versions of vectorized atanhf, 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_atanhf
+#include "ifunc-mathvec-avx512-skx.h"
+
+libc_ifunc_redirected (REDIRECT_NAME, SYMBOL_NAME, IFUNC_SELECTOR ());
+
+#ifdef SHARED
+__hidden_ver1 (_ZGVeN16v_atanhf, __GI__ZGVeN16v_atanhf,
+	       __redirect__ZGVeN16v_atanhf)
+  __attribute__ ((visibility ("hidden")));
+#endif
diff --git a/sysdeps/x86_64/fpu/multiarch/svml_s_atanhf16_core_avx512.S b/sysdeps/x86_64/fpu/multiarch/svml_s_atanhf16_core_avx512.S
new file mode 100644
index 0000000000..ebea3c7821
--- /dev/null
+++ b/sysdeps/x86_64/fpu/multiarch/svml_s_atanhf16_core_avx512.S
@@ -0,0 +1,531 @@ 
+/* Function atanhf 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:
+ *
+ *   Compute atanh(x) as 0.5 * log((1 + x)/(1 - x))
+ *   using small lookup table that map to AVX-512 permute instructions
+ *
+ *   Special cases:
+ *
+ *   atanh(0)  = 0
+ *   atanh(+1) = +INF
+ *   atanh(-1) = -INF
+ *   atanh(x)  = NaN if |x| > 1, or if x is a NaN or INF
+ *
+ */
+
+#include <sysdep.h>
+
+        .text
+ENTRY(_ZGVeN16v_atanhf_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
+        vmovups   256+__svml_satanh_data_internal_avx512(%rip), %zmm4
+
+/* round reciprocals to 1+5b mantissas */
+        vmovups   384+__svml_satanh_data_internal_avx512(%rip), %zmm14
+        vmovups   448+__svml_satanh_data_internal_avx512(%rip), %zmm1
+        vmovaps   %zmm0, %zmm11
+        vandps    320+__svml_satanh_data_internal_avx512(%rip), %zmm11, %zmm6
+
+/* 1+y */
+        vaddps    {rn-sae}, %zmm4, %zmm6, %zmm9
+
+/* 1-y */
+        vsubps    {rn-sae}, %zmm6, %zmm4, %zmm8
+        vxorps    %zmm6, %zmm11, %zmm10
+
+/* Yp_high */
+        vsubps    {rn-sae}, %zmm4, %zmm9, %zmm2
+
+/* -Ym_high */
+        vsubps    {rn-sae}, %zmm4, %zmm8, %zmm5
+
+/* RcpP ~ 1/Yp */
+        vrcp14ps  %zmm9, %zmm12
+
+/* RcpM ~ 1/Ym */
+        vrcp14ps  %zmm8, %zmm13
+
+/* input outside (-1, 1) ? */
+        vcmpps    $21, {sae}, %zmm4, %zmm6, %k0
+        vpaddd    %zmm14, %zmm12, %zmm15
+        vpaddd    %zmm14, %zmm13, %zmm0
+
+/* Yp_low */
+        vsubps    {rn-sae}, %zmm2, %zmm6, %zmm3
+        vandps    %zmm1, %zmm15, %zmm7
+        vandps    %zmm1, %zmm0, %zmm12
+
+/* Ym_low */
+        vaddps    {rn-sae}, %zmm5, %zmm6, %zmm5
+
+/* Reduced argument: Rp = (RcpP*Yp - 1)+RcpP*Yp_low */
+        vfmsub213ps {rn-sae}, %zmm4, %zmm7, %zmm9
+
+/* Reduced argument: Rm = (RcpM*Ym - 1)+RcpM*Ym_low */
+        vfmsub231ps {rn-sae}, %zmm12, %zmm8, %zmm4
+        vmovups   128+__svml_satanh_data_internal_avx512(%rip), %zmm8
+        vmovups   192+__svml_satanh_data_internal_avx512(%rip), %zmm13
+
+/* exponents */
+        vgetexpps {sae}, %zmm7, %zmm15
+        vfmadd231ps {rn-sae}, %zmm7, %zmm3, %zmm9
+
+/* Table lookups */
+        vmovups   __svml_satanh_data_internal_avx512(%rip), %zmm6
+        vgetexpps {sae}, %zmm12, %zmm14
+        vfnmadd231ps {rn-sae}, %zmm12, %zmm5, %zmm4
+
+/* Prepare table index */
+        vpsrld    $18, %zmm7, %zmm3
+        vpsrld    $18, %zmm12, %zmm2
+        vmovups   64+__svml_satanh_data_internal_avx512(%rip), %zmm7
+        vmovups   640+__svml_satanh_data_internal_avx512(%rip), %zmm12
+
+/* Km-Kp */
+        vsubps    {rn-sae}, %zmm15, %zmm14, %zmm1
+        kmovw     %k0, %edx
+        vmovaps   %zmm3, %zmm0
+        vpermi2ps %zmm13, %zmm8, %zmm3
+        vpermt2ps %zmm13, %zmm2, %zmm8
+        vpermi2ps %zmm7, %zmm6, %zmm0
+        vpermt2ps %zmm7, %zmm2, %zmm6
+        vsubps    {rn-sae}, %zmm3, %zmm8, %zmm5
+
+/* K*L2H + Th */
+        vmovups   832+__svml_satanh_data_internal_avx512(%rip), %zmm2
+
+/* K*L2L + Tl */
+        vmovups   896+__svml_satanh_data_internal_avx512(%rip), %zmm3
+
+/* polynomials */
+        vmovups   512+__svml_satanh_data_internal_avx512(%rip), %zmm7
+        vmovups   704+__svml_satanh_data_internal_avx512(%rip), %zmm13
+
+/* table values */
+        vsubps    {rn-sae}, %zmm0, %zmm6, %zmm0
+        vfmadd231ps {rn-sae}, %zmm1, %zmm2, %zmm0
+        vfmadd213ps {rn-sae}, %zmm5, %zmm3, %zmm1
+        vmovups   576+__svml_satanh_data_internal_avx512(%rip), %zmm3
+        vmovaps   %zmm3, %zmm2
+        vfmadd231ps {rn-sae}, %zmm9, %zmm7, %zmm2
+        vfmadd231ps {rn-sae}, %zmm4, %zmm7, %zmm3
+        vfmadd213ps {rn-sae}, %zmm12, %zmm9, %zmm2
+        vfmadd213ps {rn-sae}, %zmm12, %zmm4, %zmm3
+        vfmadd213ps {rn-sae}, %zmm13, %zmm9, %zmm2
+        vfmadd213ps {rn-sae}, %zmm13, %zmm4, %zmm3
+
+/* (K*L2L + Tl) + Rp*PolyP */
+        vfmadd213ps {rn-sae}, %zmm1, %zmm9, %zmm2
+        vorps     768+__svml_satanh_data_internal_avx512(%rip), %zmm10, %zmm9
+
+/* (K*L2L + Tl) + Rp*PolyP -Rm*PolyM */
+        vfnmadd213ps {rn-sae}, %zmm2, %zmm4, %zmm3
+        vaddps    {rn-sae}, %zmm3, %zmm0, %zmm4
+        vmulps    {rn-sae}, %zmm9, %zmm4, %zmm0
+        testl     %edx, %edx
+        jne       .LBL_1_3
+
+.LBL_1_2:
+        movq      %rbp, %rsp
+        popq      %rbp
+        cfi_def_cfa(7, 8)
+        cfi_restore(6)
+        ret
+        cfi_def_cfa(6, 16)
+        cfi_offset(6, -16)
+
+.LBL_1_3:
+        vmovups   %zmm11, 64(%rsp)
+        vmovups   %zmm0, 128(%rsp)
+        je        .LBL_1_2
+        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
+
+.LBL_1_7:
+        btl       %r12d, %r13d
+        jc        .LBL_1_10
+
+.LBL_1_8:
+        incl      %r12d
+        cmpl      $16, %r12d
+        jl        .LBL_1_7
+        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       .LBL_1_2
+        .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
+
+.LBL_1_10:
+        lea       64(%rsp,%r12,4), %rdi
+        lea       128(%rsp,%r12,4), %rsi
+        call      __svml_satanh_cout_rare_internal
+        jmp       .LBL_1_8
+
+END(_ZGVeN16v_atanhf_skx)
+
+        .align    16,0x90
+
+__svml_satanh_cout_rare_internal:
+
+        cfi_startproc
+
+        movzwl    2(%rdi), %edx
+        movss     (%rdi), %xmm1
+        andl      $32640, %edx
+        movb      3(%rdi), %al
+        andb      $127, %al
+        movss     %xmm1, -8(%rsp)
+        movb      %al, -5(%rsp)
+        cmpl      $32640, %edx
+        je        .LBL_2_6
+        cmpl      $1065353216, -8(%rsp)
+        jne       .LBL_2_4
+        divss     4+__satanh_la__imlsAtanhTab(%rip), %xmm1
+        movss     %xmm1, (%rsi)
+        movl      $2, %eax
+        ret
+
+.LBL_2_4:
+        movss     8+__satanh_la__imlsAtanhTab(%rip), %xmm0
+        movl      $1, %eax
+        mulss     4+__satanh_la__imlsAtanhTab(%rip), %xmm0
+        movss     %xmm0, (%rsi)
+        ret
+
+.LBL_2_6:
+        cmpl      $2139095040, -8(%rsp)
+        jne       .LBL_2_8
+        movss     4+__satanh_la__imlsAtanhTab(%rip), %xmm0
+        movl      $1, %eax
+        mulss     %xmm0, %xmm1
+        movss     %xmm1, (%rsi)
+        ret
+
+.LBL_2_8:
+        mulss     (%rdi), %xmm1
+        xorl      %eax, %eax
+        movss     %xmm1, (%rsi)
+        ret
+
+        cfi_endproc
+
+        .type	__svml_satanh_cout_rare_internal,@function
+        .size	__svml_satanh_cout_rare_internal,.-__svml_satanh_cout_rare_internal
+
+        .section .rodata, "a"
+        .align 64
+
+__svml_satanh_data_internal_avx512:
+        .long	0
+        .long	1023148032
+        .long	1031274496
+        .long	1035436032
+        .long	1039204352
+        .long	1041547264
+        .long	1043333120
+        .long	1045069824
+        .long	1046773760
+        .long	1048428544
+        .long	1049313280
+        .long	1050099712
+        .long	1050869760
+        .long	1051623424
+        .long	1052360704
+        .long	1053089792
+        .long	1053794304
+        .long	1054482432
+        .long	1055162368
+        .long	1055825920
+        .long	1056481280
+        .long	1057042432
+        .long	1057353728
+        .long	1057660928
+        .long	1057964032
+        .long	1058263040
+        .long	1058553856
+        .long	1058840576
+        .long	1059123200
+        .long	1059397632
+        .long	1059672064
+        .long	1059942400
+        .long	0
+        .long	925287326
+        .long	950209537
+        .long	928156389
+        .long	954265029
+        .long	3098231288
+        .long	3083833176
+        .long	949397309
+        .long	3045295702
+        .long	940324527
+        .long	3089323092
+        .long	945994465
+        .long	952492302
+        .long	954130348
+        .long	954989406
+        .long	3102096543
+        .long	3093041984
+        .long	947354573
+        .long	3053684310
+        .long	936642948
+        .long	3099086888
+        .long	3098368602
+        .long	946194506
+        .long	952357621
+        .long	943635681
+        .long	3097619830
+        .long	3080925892
+        .long	3078186319
+        .long	3093311347
+        .long	955801008
+        .long	934582639
+        .long	3099571146
+        .long	1065353216
+        .long	1065353216
+        .long	1065353216
+        .long	1065353216
+        .long	1065353216
+        .long	1065353216
+        .long	1065353216
+        .long	1065353216
+        .long	1065353216
+        .long	1065353216
+        .long	1065353216
+        .long	1065353216
+        .long	1065353216
+        .long	1065353216
+        .long	1065353216
+        .long	1065353216
+        .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	131072
+        .long	131072
+        .long	131072
+        .long	131072
+        .long	131072
+        .long	131072
+        .long	131072
+        .long	131072
+        .long	131072
+        .long	131072
+        .long	131072
+        .long	131072
+        .long	131072
+        .long	131072
+        .long	131072
+        .long	131072
+        .long	4294705152
+        .long	4294705152
+        .long	4294705152
+        .long	4294705152
+        .long	4294705152
+        .long	4294705152
+        .long	4294705152
+        .long	4294705152
+        .long	4294705152
+        .long	4294705152
+        .long	4294705152
+        .long	4294705152
+        .long	4294705152
+        .long	4294705152
+        .long	4294705152
+        .long	4294705152
+        .long	3196061712
+        .long	3196061712
+        .long	3196061712
+        .long	3196061712
+        .long	3196061712
+        .long	3196061712
+        .long	3196061712
+        .long	3196061712
+        .long	3196061712
+        .long	3196061712
+        .long	3196061712
+        .long	3196061712
+        .long	3196061712
+        .long	3196061712
+        .long	3196061712
+        .long	3196061712
+        .long	1051373854
+        .long	1051373854
+        .long	1051373854
+        .long	1051373854
+        .long	1051373854
+        .long	1051373854
+        .long	1051373854
+        .long	1051373854
+        .long	1051373854
+        .long	1051373854
+        .long	1051373854
+        .long	1051373854
+        .long	1051373854
+        .long	1051373854
+        .long	1051373854
+        .long	1051373854
+        .long	3204448256
+        .long	3204448256
+        .long	3204448256
+        .long	3204448256
+        .long	3204448256
+        .long	3204448256
+        .long	3204448256
+        .long	3204448256
+        .long	3204448256
+        .long	3204448256
+        .long	3204448256
+        .long	3204448256
+        .long	3204448256
+        .long	3204448256
+        .long	3204448256
+        .long	3204448256
+        .long	1065353216
+        .long	1065353216
+        .long	1065353216
+        .long	1065353216
+        .long	1065353216
+        .long	1065353216
+        .long	1065353216
+        .long	1065353216
+        .long	1065353216
+        .long	1065353216
+        .long	1065353216
+        .long	1065353216
+        .long	1065353216
+        .long	1065353216
+        .long	1065353216
+        .long	1065353216
+        .long	1056964608
+        .long	1056964608
+        .long	1056964608
+        .long	1056964608
+        .long	1056964608
+        .long	1056964608
+        .long	1056964608
+        .long	1056964608
+        .long	1056964608
+        .long	1056964608
+        .long	1056964608
+        .long	1056964608
+        .long	1056964608
+        .long	1056964608
+        .long	1056964608
+        .long	1056964608
+        .long	1060204544
+        .long	1060204544
+        .long	1060204544
+        .long	1060204544
+        .long	1060204544
+        .long	1060204544
+        .long	1060204544
+        .long	1060204544
+        .long	1060204544
+        .long	1060204544
+        .long	1060204544
+        .long	1060204544
+        .long	1060204544
+        .long	1060204544
+        .long	1060204544
+        .long	1060204544
+        .long	939916788
+        .long	939916788
+        .long	939916788
+        .long	939916788
+        .long	939916788
+        .long	939916788
+        .long	939916788
+        .long	939916788
+        .long	939916788
+        .long	939916788
+        .long	939916788
+        .long	939916788
+        .long	939916788
+        .long	939916788
+        .long	939916788
+        .long	939916788
+        .type	__svml_satanh_data_internal_avx512,@object
+        .size	__svml_satanh_data_internal_avx512,960
+        .align 4
+
+__satanh_la__imlsAtanhTab:
+        .long	1065353216
+        .long	0
+        .long	2139095040
+        .type	__satanh_la__imlsAtanhTab,@object
+        .size	__satanh_la__imlsAtanhTab,12
diff --git a/sysdeps/x86_64/fpu/multiarch/svml_s_atanhf4_core-sse2.S b/sysdeps/x86_64/fpu/multiarch/svml_s_atanhf4_core-sse2.S
new file mode 100644
index 0000000000..b750092887
--- /dev/null
+++ b/sysdeps/x86_64/fpu/multiarch/svml_s_atanhf4_core-sse2.S
@@ -0,0 +1,20 @@ 
+/* SSE2 version of vectorized atanhf, 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_atanhf _ZGVbN4v_atanhf_sse2
+#include "../svml_s_atanhf4_core.S"
diff --git a/sysdeps/x86_64/fpu/multiarch/svml_s_atanhf4_core.c b/sysdeps/x86_64/fpu/multiarch/svml_s_atanhf4_core.c
new file mode 100644
index 0000000000..46624c48cd
--- /dev/null
+++ b/sysdeps/x86_64/fpu/multiarch/svml_s_atanhf4_core.c
@@ -0,0 +1,28 @@ 
+/* Multiple versions of vectorized atanhf, 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_atanhf
+#include "ifunc-mathvec-sse4_1.h"
+
+libc_ifunc_redirected (REDIRECT_NAME, SYMBOL_NAME, IFUNC_SELECTOR ());
+
+#ifdef SHARED
+__hidden_ver1 (_ZGVbN4v_atanhf, __GI__ZGVbN4v_atanhf,
+	       __redirect__ZGVbN4v_atanhf)
+  __attribute__ ((visibility ("hidden")));
+#endif
diff --git a/sysdeps/x86_64/fpu/multiarch/svml_s_atanhf4_core_sse4.S b/sysdeps/x86_64/fpu/multiarch/svml_s_atanhf4_core_sse4.S
new file mode 100644
index 0000000000..54b55f8881
--- /dev/null
+++ b/sysdeps/x86_64/fpu/multiarch/svml_s_atanhf4_core_sse4.S
@@ -0,0 +1,2536 @@ 
+/* Function atanhf 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:
+ *
+ *   Compute atanh(x) as 0.5 * log((1 + x)/(1 - x))
+ *
+ *   Special cases:
+ *
+ *   atanh(0)  = 0
+ *   atanh(+1) = +INF
+ *   atanh(-1) = -INF
+ *   atanh(x)  = NaN if |x| > 1, or if x is a NaN or INF
+ *
+ */
+
+#include <sysdep.h>
+
+        .text
+ENTRY(_ZGVbN4v_atanhf_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
+        movups    %xmm9, 160(%rsp)
+        .cfi_escape 0x10, 0x1a, 0x0e, 0x38, 0x1c, 0x0d, 0xc0, 0xff, 0xff, 0xff, 0x1a, 0x0d, 0xa0, 0xff, 0xff, 0xff, 0x22
+        movaps    %xmm0, %xmm9
+
+/* Load constants including One = 1 */
+        movups    1920+__svml_satanh_data_internal(%rip), %xmm4
+        movaps    %xmm9, %xmm7
+
+/* Strip off the sign, so treat X as positive until right at the end */
+        movups    1088+__svml_satanh_data_internal(%rip), %xmm2
+        movaps    %xmm4, %xmm1
+        andps     %xmm9, %xmm2
+        movups    %xmm14, 112(%rsp)
+        .cfi_escape 0x10, 0x1f, 0x0e, 0x38, 0x1c, 0x0d, 0xc0, 0xff, 0xff, 0xff, 0x1a, 0x0d, 0x70, 0xff, 0xff, 0xff, 0x22
+        movaps    %xmm4, %xmm14
+        movups    %xmm11, 144(%rsp)
+
+/*
+ * Compute V = 2 * X trivially, and UHi + U_lo = 1 - X in two pieces,
+ * the upper part UHi being <= 12 bits long. Then we have
+ * atanh(X) = 1/2 * log((1 + X) / (1 - X)) = 1/2 * log1p(V / (UHi + ULo)).
+ */
+        movaps    %xmm2, %xmm0
+        .cfi_escape 0x10, 0x1c, 0x0e, 0x38, 0x1c, 0x0d, 0xc0, 0xff, 0xff, 0xff, 0x1a, 0x0d, 0x90, 0xff, 0xff, 0xff, 0x22
+        movups    2944+__svml_satanh_data_internal(%rip), %xmm11
+
+/*
+ * Check whether |X| < 1, in which case we use the main function.
+ * Otherwise set the rangemask so that the callout will get used.
+ * Note that this will also use the callout for NaNs since not(NaN < 1).
+ */
+        movaps    %xmm2, %xmm5
+        movaps    %xmm11, %xmm3
+        movaps    %xmm2, %xmm6
+        cmpnltps  %xmm4, %xmm5
+        cmpltps   3136+__svml_satanh_data_internal(%rip), %xmm6
+        mulps     %xmm9, %xmm7
+        subps     %xmm2, %xmm1
+        addps     %xmm2, %xmm0
+        movmskps  %xmm5, %edx
+        subps     %xmm1, %xmm14
+        addps     %xmm9, %xmm7
+        subps     %xmm2, %xmm14
+        andps     %xmm1, %xmm3
+        movaps    %xmm4, %xmm2
+
+/* Record the sign for eventual reincorporation. */
+        movups    2752+__svml_satanh_data_internal(%rip), %xmm5
+        subps     %xmm3, %xmm1
+        andps     %xmm9, %xmm5
+        addps     %xmm1, %xmm14
+
+/*
+ * Now compute R = 1/(UHi+ULo) * (1 - E) and the error term E
+ * The first FMR is exact (we force R to 12 bits just in case it
+ * isn't already, to make absolutely sure), and since E is ~ 2^-12,
+ * the rounding error in the other one is acceptable.
+ */
+        rcpps     %xmm3, %xmm1
+        andps     %xmm11, %xmm1
+
+/*
+ * Split V as well into upper 12 bits and lower part, so that we can get
+ * a preliminary quotient estimate without rounding error.
+ */
+        andps     %xmm0, %xmm11
+        mulps     %xmm1, %xmm3
+        subps     %xmm11, %xmm0
+        mulps     %xmm1, %xmm14
+
+/* Hence get initial quotient estimate QHi + QLo = R * VHi + R * VLo */
+        mulps     %xmm1, %xmm11
+        subps     %xmm3, %xmm2
+        mulps     %xmm0, %xmm1
+        subps     %xmm14, %xmm2
+
+/* Compute D = E + E^2 */
+        movaps    %xmm2, %xmm14
+
+/* Or the sign bit in with the tiny result to handle atanh(-0) correctly */
+        orps      %xmm5, %xmm7
+        mulps     %xmm2, %xmm14
+        andps     %xmm6, %xmm7
+        addps     %xmm14, %xmm2
+        movaps    %xmm4, %xmm14
+
+/*
+ * Compute R * (VHi + VLo) * (1 + E + E^2)
+ * = R *  (VHi + VLo) * (1 + D)
+ * = QHi + (QHi * D + QLo + QLo * D)
+ */
+        movaps    %xmm2, %xmm3
+        mulps     %xmm1, %xmm2
+        mulps     %xmm11, %xmm3
+        addps     %xmm2, %xmm1
+
+/* reduction: compute r,n */
+        movdqu    2240+__svml_satanh_data_internal(%rip), %xmm2
+        addps     %xmm1, %xmm3
+
+/*
+ * Now finally accumulate the high and low parts of the
+ * argument to log1p, H + L, with a final compensated summation.
+ */
+        movaps    %xmm3, %xmm0
+        addps     %xmm11, %xmm0
+        minps     %xmm0, %xmm14
+        subps     %xmm0, %xmm11
+        addps     %xmm11, %xmm3
+
+/*
+ * Now we feed into the log1p code, using H in place of _VARG1 and
+ * later incorporating L into the reduced argument.
+ * compute 1+x as high, low parts
+ */
+        movaps    %xmm4, %xmm11
+        maxps     %xmm0, %xmm11
+        movaps    %xmm11, %xmm1
+        movdqu    2304+__svml_satanh_data_internal(%rip), %xmm0
+        addps     %xmm14, %xmm1
+        subps     %xmm1, %xmm11
+        psubd     %xmm2, %xmm1
+        pand      %xmm1, %xmm0
+        psrad     $23, %xmm1
+        paddd     %xmm2, %xmm0
+        addps     %xmm11, %xmm14
+
+/* polynomial evaluation */
+        subps     %xmm4, %xmm0
+        addps     %xmm14, %xmm3
+        cvtdq2ps  %xmm1, %xmm14
+        pslld     $23, %xmm1
+        movaps    %xmm4, %xmm11
+        psubd     %xmm1, %xmm11
+        mulps     %xmm3, %xmm11
+
+/* final reconstruction */
+        mulps     3200+__svml_satanh_data_internal(%rip), %xmm14
+        addps     %xmm0, %xmm11
+        movups    2096+__svml_satanh_data_internal(%rip), %xmm4
+        movaps    %xmm6, %xmm0
+        mulps     %xmm11, %xmm4
+
+/* Finally, halve the result and reincorporate the sign */
+        movups    2560+__svml_satanh_data_internal(%rip), %xmm1
+        pxor      %xmm5, %xmm1
+        addps     2080+__svml_satanh_data_internal(%rip), %xmm4
+        mulps     %xmm11, %xmm4
+        addps     2064+__svml_satanh_data_internal(%rip), %xmm4
+        mulps     %xmm11, %xmm4
+        addps     2048+__svml_satanh_data_internal(%rip), %xmm4
+        mulps     %xmm11, %xmm4
+        addps     2032+__svml_satanh_data_internal(%rip), %xmm4
+        mulps     %xmm11, %xmm4
+        addps     2016+__svml_satanh_data_internal(%rip), %xmm4
+        mulps     %xmm11, %xmm4
+        addps     2000+__svml_satanh_data_internal(%rip), %xmm4
+        mulps     %xmm11, %xmm4
+        addps     1984+__svml_satanh_data_internal(%rip), %xmm4
+        mulps     %xmm11, %xmm4
+        mulps     %xmm11, %xmm4
+        addps     %xmm4, %xmm11
+        addps     %xmm14, %xmm11
+        mulps     %xmm11, %xmm1
+        andnps    %xmm1, %xmm0
+        orps      %xmm7, %xmm0
+        testl     %edx, %edx
+        jne       .LBL_1_3
+
+.LBL_1_2:
+        movups    160(%rsp), %xmm9
+        cfi_restore(26)
+        movups    144(%rsp), %xmm11
+        cfi_restore(28)
+        movups    112(%rsp), %xmm14
+        cfi_restore(31)
+        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, 0x1a, 0x0e, 0x38, 0x1c, 0x0d, 0xc0, 0xff, 0xff, 0xff, 0x1a, 0x0d, 0xa0, 0xff, 0xff, 0xff, 0x22
+        .cfi_escape 0x10, 0x1c, 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
+
+.LBL_1_3:
+        movups    %xmm9, 128(%rsp)
+        movups    %xmm0, 192(%rsp)
+        xorl      %eax, %eax
+        movups    %xmm8, 64(%rsp)
+        movups    %xmm10, 48(%rsp)
+        movups    %xmm12, 32(%rsp)
+        movups    %xmm13, 16(%rsp)
+        movups    %xmm15, (%rsp)
+        movq      %rsi, 88(%rsp)
+        movq      %rdi, 80(%rsp)
+        movq      %r12, 104(%rsp)
+        .cfi_escape 0x10, 0x04, 0x0e, 0x38, 0x1c, 0x0d, 0xc0, 0xff, 0xff, 0xff, 0x1a, 0x0d, 0x58, 0xff, 0xff, 0xff, 0x22
+        .cfi_escape 0x10, 0x05, 0x0e, 0x38, 0x1c, 0x0d, 0xc0, 0xff, 0xff, 0xff, 0x1a, 0x0d, 0x50, 0xff, 0xff, 0xff, 0x22
+        .cfi_escape 0x10, 0x0c, 0x0e, 0x38, 0x1c, 0x0d, 0xc0, 0xff, 0xff, 0xff, 0x1a, 0x0d, 0x68, 0xff, 0xff, 0xff, 0x22
+        .cfi_escape 0x10, 0x19, 0x0e, 0x38, 0x1c, 0x0d, 0xc0, 0xff, 0xff, 0xff, 0x1a, 0x0d, 0x40, 0xff, 0xff, 0xff, 0x22
+        .cfi_escape 0x10, 0x1b, 0x0e, 0x38, 0x1c, 0x0d, 0xc0, 0xff, 0xff, 0xff, 0x1a, 0x0d, 0x30, 0xff, 0xff, 0xff, 0x22
+        .cfi_escape 0x10, 0x1d, 0x0e, 0x38, 0x1c, 0x0d, 0xc0, 0xff, 0xff, 0xff, 0x1a, 0x0d, 0x20, 0xff, 0xff, 0xff, 0x22
+        .cfi_escape 0x10, 0x1e, 0x0e, 0x38, 0x1c, 0x0d, 0xc0, 0xff, 0xff, 0xff, 0x1a, 0x0d, 0x10, 0xff, 0xff, 0xff, 0x22
+        .cfi_escape 0x10, 0x20, 0x0e, 0x38, 0x1c, 0x0d, 0xc0, 0xff, 0xff, 0xff, 0x1a, 0x0d, 0x00, 0xff, 0xff, 0xff, 0x22
+        movl      %eax, %r12d
+        movq      %r13, 96(%rsp)
+        .cfi_escape 0x10, 0x0d, 0x0e, 0x38, 0x1c, 0x0d, 0xc0, 0xff, 0xff, 0xff, 0x1a, 0x0d, 0x60, 0xff, 0xff, 0xff, 0x22
+        movl      %edx, %r13d
+
+.LBL_1_7:
+        btl       %r12d, %r13d
+        jc        .LBL_1_10
+
+.LBL_1_8:
+        incl      %r12d
+        cmpl      $4, %r12d
+        jl        .LBL_1_7
+        movups    64(%rsp), %xmm8
+        cfi_restore(25)
+        movups    48(%rsp), %xmm10
+        cfi_restore(27)
+        movups    32(%rsp), %xmm12
+        cfi_restore(29)
+        movups    16(%rsp), %xmm13
+        cfi_restore(30)
+        movups    (%rsp), %xmm15
+        cfi_restore(32)
+        movq      88(%rsp), %rsi
+        cfi_restore(4)
+        movq      80(%rsp), %rdi
+        cfi_restore(5)
+        movq      104(%rsp), %r12
+        cfi_restore(12)
+        movq      96(%rsp), %r13
+        cfi_restore(13)
+        movups    192(%rsp), %xmm0
+        jmp       .LBL_1_2
+        .cfi_escape 0x10, 0x04, 0x0e, 0x38, 0x1c, 0x0d, 0xc0, 0xff, 0xff, 0xff, 0x1a, 0x0d, 0x58, 0xff, 0xff, 0xff, 0x22
+        .cfi_escape 0x10, 0x05, 0x0e, 0x38, 0x1c, 0x0d, 0xc0, 0xff, 0xff, 0xff, 0x1a, 0x0d, 0x50, 0xff, 0xff, 0xff, 0x22
+        .cfi_escape 0x10, 0x0c, 0x0e, 0x38, 0x1c, 0x0d, 0xc0, 0xff, 0xff, 0xff, 0x1a, 0x0d, 0x68, 0xff, 0xff, 0xff, 0x22
+        .cfi_escape 0x10, 0x0d, 0x0e, 0x38, 0x1c, 0x0d, 0xc0, 0xff, 0xff, 0xff, 0x1a, 0x0d, 0x60, 0xff, 0xff, 0xff, 0x22
+        .cfi_escape 0x10, 0x19, 0x0e, 0x38, 0x1c, 0x0d, 0xc0, 0xff, 0xff, 0xff, 0x1a, 0x0d, 0x40, 0xff, 0xff, 0xff, 0x22
+        .cfi_escape 0x10, 0x1b, 0x0e, 0x38, 0x1c, 0x0d, 0xc0, 0xff, 0xff, 0xff, 0x1a, 0x0d, 0x30, 0xff, 0xff, 0xff, 0x22
+        .cfi_escape 0x10, 0x1d, 0x0e, 0x38, 0x1c, 0x0d, 0xc0, 0xff, 0xff, 0xff, 0x1a, 0x0d, 0x20, 0xff, 0xff, 0xff, 0x22
+        .cfi_escape 0x10, 0x1e, 0x0e, 0x38, 0x1c, 0x0d, 0xc0, 0xff, 0xff, 0xff, 0x1a, 0x0d, 0x10, 0xff, 0xff, 0xff, 0x22
+        .cfi_escape 0x10, 0x20, 0x0e, 0x38, 0x1c, 0x0d, 0xc0, 0xff, 0xff, 0xff, 0x1a, 0x0d, 0x00, 0xff, 0xff, 0xff, 0x22
+
+.LBL_1_10:
+        lea       128(%rsp,%r12,4), %rdi
+        lea       192(%rsp,%r12,4), %rsi
+        call      __svml_satanh_cout_rare_internal
+        jmp       .LBL_1_8
+
+END(_ZGVbN4v_atanhf_sse4)
+
+        .align    16,0x90
+
+__svml_satanh_cout_rare_internal:
+
+        cfi_startproc
+
+        movzwl    2(%rdi), %edx
+        movss     (%rdi), %xmm1
+        andl      $32640, %edx
+        movb      3(%rdi), %al
+        andb      $127, %al
+        movss     %xmm1, -8(%rsp)
+        movb      %al, -5(%rsp)
+        cmpl      $32640, %edx
+        je        .LBL_2_6
+        cmpl      $1065353216, -8(%rsp)
+        jne       .LBL_2_4
+        divss     4+__satanh_la__imlsAtanhTab(%rip), %xmm1
+        movss     %xmm1, (%rsi)
+        movl      $2, %eax
+        ret
+
+.LBL_2_4:
+        movss     8+__satanh_la__imlsAtanhTab(%rip), %xmm0
+        movl      $1, %eax
+        mulss     4+__satanh_la__imlsAtanhTab(%rip), %xmm0
+        movss     %xmm0, (%rsi)
+        ret
+
+.LBL_2_6:
+        cmpl      $2139095040, -8(%rsp)
+        jne       .LBL_2_8
+        movss     4+__satanh_la__imlsAtanhTab(%rip), %xmm0
+        movl      $1, %eax
+        mulss     %xmm0, %xmm1
+        movss     %xmm1, (%rsi)
+        ret
+
+.LBL_2_8:
+        mulss     (%rdi), %xmm1
+        xorl      %eax, %eax
+        movss     %xmm1, (%rsi)
+        ret
+
+        cfi_endproc
+
+        .type	__svml_satanh_cout_rare_internal,@function
+        .size	__svml_satanh_cout_rare_internal,.-__svml_satanh_cout_rare_internal
+
+        .section .rodata, "a"
+        .align 64
+
+__svml_satanh_data_internal:
+        .long	3266227256
+        .long	3107766024
+        .long	3266228276
+        .long	3107776882
+        .long	3266229284
+        .long	3109949545
+        .long	3266230292
+        .long	3108055846
+        .long	3266231292
+        .long	3106351937
+        .long	3266232276
+        .long	3109092567
+        .long	3266233260
+        .long	3107948216
+        .long	3266234236
+        .long	3107170960
+        .long	3266235204
+        .long	3106817287
+        .long	3266236164
+        .long	3106942449
+        .long	3266237116
+        .long	3107600489
+        .long	3266238060
+        .long	3108844279
+        .long	3266239004
+        .long	3106531253
+        .long	3266239932
+        .long	3109100650
+        .long	3266240860
+        .long	3108213420
+        .long	3266241780
+        .long	3108112381
+        .long	3266242692
+        .long	3108845034
+        .long	3266243604
+        .long	3106263589
+        .long	3266244500
+        .long	3108802209
+        .long	3266245396
+        .long	3108116909
+        .long	3266246284
+        .long	3108445707
+        .long	3266247164
+        .long	3109831435
+        .long	3266248044
+        .long	3108121760
+        .long	3266248916
+        .long	3107552123
+        .long	3266249780
+        .long	3108162844
+        .long	3266250644
+        .long	3105799146
+        .long	3266251492
+        .long	3108888393
+        .long	3266252340
+        .long	3109079979
+        .long	3266253188
+        .long	3106411173
+        .long	3266254020
+        .long	3109307139
+        .long	3266254852
+        .long	3109415127
+        .long	3266255684
+        .long	3106770317
+        .long	3266256500
+        .long	3109795834
+        .long	3266257324
+        .long	3105942641
+        .long	3266258132
+        .long	3107826892
+        .long	3266258940
+        .long	3107092610
+        .long	3266259740
+        .long	3107966131
+        .long	3266260540
+        .long	3106284596
+        .long	3266261332
+        .long	3106273188
+        .long	3266262116
+        .long	3107962226
+        .long	3266262900
+        .long	3107187186
+        .long	3266263676
+        .long	3108171617
+        .long	3266264452
+        .long	3106749947
+        .long	3266265220
+        .long	3107144703
+        .long	3266265980
+        .long	3109383615
+        .long	3266266740
+        .long	3109299629
+        .long	3266267500
+        .long	3106919521
+        .long	3266268252
+        .long	3106463913
+        .long	3266268996
+        .long	3107958670
+        .long	3266269740
+        .long	3107234917
+        .long	3266270476
+        .long	3108511954
+        .long	3266271212
+        .long	3107620056
+        .long	3266271940
+        .long	3108777693
+        .long	3266272668
+        .long	3107814325
+        .long	3266273388
+        .long	3108947630
+        .long	3266274108
+        .long	3108006290
+        .long	3266274820
+        .long	3109207222
+        .long	3266275532
+        .long	3108378366
+        .long	3266276236
+        .long	3109735912
+        .long	3266276940
+        .long	3109107087
+        .long	3266277644
+        .long	3106513079
+        .long	3266278340
+        .long	3106169044
+        .long	3266279028
+        .long	3108095503
+        .long	3266279716
+        .long	3108118349
+        .long	3266280404
+        .long	3106257463
+        .long	3266281084
+        .long	3106726720
+        .long	3266281756
+        .long	3109545389
+        .long	3266282436
+        .long	3106343833
+        .long	3266283100
+        .long	3109723642
+        .long	3266283772
+        .long	3107120300
+        .long	3266284436
+        .long	3106940529
+        .long	3266285092
+        .long	3109202170
+        .long	3266285748
+        .long	3109728494
+        .long	3266286404
+        .long	3108536808
+        .long	3266287052
+        .long	3109838471
+        .long	3266287700
+        .long	3109455977
+        .long	3266288348
+        .long	3107405879
+        .long	3266288988
+        .long	3107898790
+        .long	3266289628
+        .long	3106756477
+        .long	3266290260
+        .long	3108189081
+        .long	3266290892
+        .long	3108017907
+        .long	3266291524
+        .long	3106258339
+        .long	3266292148
+        .long	3107119845
+        .long	3266292772
+        .long	3106423069
+        .long	3266293388
+        .long	3108377050
+        .long	3266294004
+        .long	3108802011
+        .long	3266294620
+        .long	3107712277
+        .long	3266295228
+        .long	3109316274
+        .long	3266295836
+        .long	3109433625
+        .long	3266296444
+        .long	3108078064
+        .long	3266297044
+        .long	3109457438
+        .long	3266297644
+        .long	3109390801
+        .long	3266298244
+        .long	3107891329
+        .long	3266298836
+        .long	3109166323
+        .long	3266299428
+        .long	3109034299
+        .long	3266300020
+        .long	3107507904
+        .long	3266300604
+        .long	3108793919
+        .long	3266301188
+        .long	3108710352
+        .long	3266301772
+        .long	3107269350
+        .long	3266302348
+        .long	3108677203
+        .long	3266302924
+        .long	3108751436
+        .long	3266303500
+        .long	3107503720
+        .long	3266304068
+        .long	3109139881
+        .long	3266304636
+        .long	3109476985
+        .long	3266305204
+        .long	3108526254
+        .long	3266305772
+        .long	3106298768
+        .long	3266306332
+        .long	3106999765
+        .long	3266306892
+        .long	3106445739
+        .long	3266307444
+        .long	3108841650
+        .long	3266308004
+        .long	3105809415
+        .long	3266308548
+        .long	3109942336
+        .long	3266309100
+        .long	3108667760
+        .long	3266309652
+        .long	3106190122
+        .long	3266310196
+        .long	3106713732
+        .long	3266310740
+        .long	3106054165
+        .long	3266311276
+        .long	3108415484
+        .long	3266311812
+        .long	3109613023
+        .long	3266312348
+        .long	3109656301
+        .long	3266312884
+        .long	3108554723
+        .long	3266313420
+        .long	3106317576
+        .long	3266313948
+        .long	3107148341
+        .long	3266314476
+        .long	3106861780
+        .long	3266314996
+        .long	3109661153
+        .long	3266315524
+        .long	3107166702
+        .long	3266316044
+        .long	3107775778
+        .long	3266316564
+        .long	3107302717
+        .long	3266317076
+        .long	3109950361
+        .long	3266317596
+        .long	3107338539
+        .long	3266318108
+        .long	3107864196
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .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	964689920
+        .long	964689920
+        .long	964689920
+        .long	964689920
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .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	4294967040
+        .long	4294967040
+        .long	4294967040
+        .long	4294967040
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .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	2139095040
+        .long	2139095040
+        .long	2139095040
+        .long	2139095040
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .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	2063597568
+        .long	2063597568
+        .long	2063597568
+        .long	2063597568
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .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	1051372345
+        .long	1051372345
+        .long	1051372345
+        .long	1051372345
+        .long	3204448310
+        .long	3204448310
+        .long	3204448310
+        .long	3204448310
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .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	8388607
+        .long	8388607
+        .long	8388607
+        .long	8388607
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .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	998244352
+        .long	998244352
+        .long	998244352
+        .long	998244352
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .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	3212836863
+        .long	3212836863
+        .long	3212836863
+        .long	3212836863
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .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	2055208960
+        .long	2055208960
+        .long	2055208960
+        .long	2055208960
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .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	4294967040
+        .long	4294967040
+        .long	4294967040
+        .long	4294967040
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .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	1060205056
+        .long	1060205056
+        .long	1060205056
+        .long	1060205056
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .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	901758464
+        .long	901758464
+        .long	901758464
+        .long	901758464
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .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	1065353216
+        .long	1065353216
+        .long	1065353216
+        .long	1065353216
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .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	3204448256
+        .long	3204448256
+        .long	3204448256
+        .long	3204448256
+        .long	1051372180
+        .long	1051372180
+        .long	1051372180
+        .long	1051372180
+        .long	3196061070
+        .long	3196061070
+        .long	3196061070
+        .long	3196061070
+        .long	1045225872
+        .long	1045225872
+        .long	1045225872
+        .long	1045225872
+        .long	3190336823
+        .long	3190336823
+        .long	3190336823
+        .long	3190336823
+        .long	1041222418
+        .long	1041222418
+        .long	1041222418
+        .long	1041222418
+        .long	3189430755
+        .long	3189430755
+        .long	3189430755
+        .long	3189430755
+        .long	1041073389
+        .long	1041073389
+        .long	1041073389
+        .long	1041073389
+        .long	16777216
+        .long	16777216
+        .long	16777216
+        .long	16777216
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .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	25165824
+        .long	25165824
+        .long	25165824
+        .long	25165824
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .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	1059760811
+        .long	1059760811
+        .long	1059760811
+        .long	1059760811
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .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	8388607
+        .long	8388607
+        .long	8388607
+        .long	8388607
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .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	1317011456
+        .long	1317011456
+        .long	1317011456
+        .long	1317011456
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .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	1052770304
+        .long	1052770304
+        .long	1052770304
+        .long	1052770304
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .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	1050673152
+        .long	1050673152
+        .long	1050673152
+        .long	1050673152
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .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	1056964608
+        .long	1056964608
+        .long	1056964608
+        .long	1056964608
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .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	2139095039
+        .long	2139095039
+        .long	2139095039
+        .long	2139095039
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .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	1031798784
+        .long	1031798784
+        .long	1031798784
+        .long	1031798784
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .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	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	1106771968
+        .long	1106771968
+        .long	1106771968
+        .long	1106771968
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .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	4294959104
+        .long	4294959104
+        .long	4294959104
+        .long	4294959104
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .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	4294963200
+        .long	4294963200
+        .long	4294963200
+        .long	4294963200
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .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	4294901760
+        .long	4294901760
+        .long	4294901760
+        .long	4294901760
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .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	813694976
+        .long	813694976
+        .long	813694976
+        .long	813694976
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .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	201326592
+        .long	201326592
+        .long	201326592
+        .long	201326592
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .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	1060205080
+        .long	1060205080
+        .long	1060205080
+        .long	1060205080
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .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	2139095040
+        .long	4286578688
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .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	1065353216
+        .long	3212836864
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .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
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .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_satanh_data_internal,@object
+        .size	__svml_satanh_data_internal,3456
+        .align 4
+
+__satanh_la__imlsAtanhTab:
+        .long	1065353216
+        .long	0
+        .long	2139095040
+        .type	__satanh_la__imlsAtanhTab,@object
+        .size	__satanh_la__imlsAtanhTab,12
diff --git a/sysdeps/x86_64/fpu/multiarch/svml_s_atanhf8_core-sse.S b/sysdeps/x86_64/fpu/multiarch/svml_s_atanhf8_core-sse.S
new file mode 100644
index 0000000000..b293bd5b41
--- /dev/null
+++ b/sysdeps/x86_64/fpu/multiarch/svml_s_atanhf8_core-sse.S
@@ -0,0 +1,20 @@ 
+/* SSE version of vectorized atanhf, 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_atanhf _ZGVdN8v_atanhf_sse_wrapper
+#include "../svml_s_atanhf8_core.S"
diff --git a/sysdeps/x86_64/fpu/multiarch/svml_s_atanhf8_core.c b/sysdeps/x86_64/fpu/multiarch/svml_s_atanhf8_core.c
new file mode 100644
index 0000000000..3df8d66c94
--- /dev/null
+++ b/sysdeps/x86_64/fpu/multiarch/svml_s_atanhf8_core.c
@@ -0,0 +1,28 @@ 
+/* Multiple versions of vectorized atanhf, 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_atanhf
+#include "ifunc-mathvec-avx2.h"
+
+libc_ifunc_redirected (REDIRECT_NAME, SYMBOL_NAME, IFUNC_SELECTOR ());
+
+#ifdef SHARED
+__hidden_ver1 (_ZGVdN8v_atanhf, __GI__ZGVdN8v_atanhf,
+	       __redirect__ZGVdN8v_atanhf)
+  __attribute__ ((visibility ("hidden")));
+#endif
diff --git a/sysdeps/x86_64/fpu/multiarch/svml_s_atanhf8_core_avx2.S b/sysdeps/x86_64/fpu/multiarch/svml_s_atanhf8_core_avx2.S
new file mode 100644
index 0000000000..be063c59a8
--- /dev/null
+++ b/sysdeps/x86_64/fpu/multiarch/svml_s_atanhf8_core_avx2.S
@@ -0,0 +1,2131 @@ 
+/* Function atanhf 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:
+ *
+ *   Compute atanh(x) as 0.5 * log((1 + x)/(1 - x))
+ *
+ *   Special cases:
+ *
+ *   atanh(0)  = 0
+ *   atanh(+1) = +INF
+ *   atanh(-1) = -INF
+ *   atanh(x)  = NaN if |x| > 1, or if x is a NaN or INF
+ *
+ */
+
+#include <sysdep.h>
+
+        .text
+ENTRY(_ZGVdN8v_atanhf_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
+
+/* Load constants including One = 1 */
+        vmovups   1920+__svml_satanh_data_internal(%rip), %ymm5
+        vmovups   %ymm8, 32(%rsp)
+        vmovups   %ymm10, 160(%rsp)
+        .cfi_escape 0x10, 0xdb, 0x00, 0x0e, 0x38, 0x1c, 0x0d, 0xc0, 0xff, 0xff, 0xff, 0x1a, 0x0d, 0xa0, 0xfe, 0xff, 0xff, 0x22
+        .cfi_escape 0x10, 0xdd, 0x00, 0x0e, 0x38, 0x1c, 0x0d, 0xc0, 0xff, 0xff, 0xff, 0x1a, 0x0d, 0x20, 0xff, 0xff, 0xff, 0x22
+        vmovups   3072+__svml_satanh_data_internal(%rip), %ymm10
+        vmovups   %ymm13, 256(%rsp)
+        vmovups   %ymm9, 96(%rsp)
+        vmovups   %ymm11, 192(%rsp)
+        vmovups   %ymm12, 224(%rsp)
+        vmovups   %ymm14, 288(%rsp)
+        vmovups   %ymm15, 320(%rsp)
+        vmovaps   %ymm0, %ymm6
+        .cfi_escape 0x10, 0xdc, 0x00, 0x0e, 0x38, 0x1c, 0x0d, 0xc0, 0xff, 0xff, 0xff, 0x1a, 0x0d, 0xe0, 0xfe, 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
+
+/* Strip off the sign, so treat X as positive until right at the end */
+        vandps    1088+__svml_satanh_data_internal(%rip), %ymm6, %ymm8
+
+/*
+ * Check whether |X| < 1, in which case we use the main function.
+ * Otherwise set the rangemask so that the callout will get used.
+ * Note that this will also use the callout for NaNs since not(NaN < 1).
+ */
+        vcmpnlt_uqps %ymm5, %ymm8, %ymm7
+        vsubps    %ymm8, %ymm5, %ymm1
+
+/*
+ * Compute V = 2 * X trivially, and UHi + U_lo = 1 - X in two pieces,
+ * the upper part UHi being <= 12 bits long. Then we have
+ * atanh(X) = 1/2 * log((1 + X) / (1 - X)) = 1/2 * log1p(V / (UHi + ULo)).
+ */
+        vaddps    %ymm8, %ymm8, %ymm11
+        vcmplt_oqps 3264+__svml_satanh_data_internal(%rip), %ymm8, %ymm4
+        vsubps    %ymm1, %ymm5, %ymm0
+        vmovmskps %ymm7, %edx
+        vrcpps    %ymm1, %ymm7
+        vsubps    %ymm8, %ymm0, %ymm9
+        vandps    %ymm10, %ymm7, %ymm13
+
+/* No need to split sU when FMA is available */
+        vfnmadd213ps %ymm5, %ymm13, %ymm1
+        vfnmadd231ps %ymm13, %ymm9, %ymm1
+
+/*
+ * Split V as well into upper 12 bits and lower part, so that we can get
+ * a preliminary quotient estimate without rounding error.
+ */
+        vandps    %ymm10, %ymm11, %ymm12
+        vsubps    %ymm12, %ymm11, %ymm14
+
+/* Hence get initial quotient estimate QHi + QLo = R * VHi + R * VLo */
+        vmulps    %ymm12, %ymm13, %ymm7
+
+/* Compute D = E + E^2 */
+        vfmadd213ps %ymm1, %ymm1, %ymm1
+        vmulps    %ymm14, %ymm13, %ymm15
+
+/*
+ * Compute R * (VHi + VLo) * (1 + E + E^2)
+ * = R *  (VHi + VLo) * (1 + D)
+ * = QHi + (QHi * D + QLo + QLo * D)
+ */
+        vmulps    %ymm1, %ymm7, %ymm0
+        vfmadd213ps %ymm15, %ymm15, %ymm1
+
+/* reduction: compute r,n */
+        vmovups   2368+__svml_satanh_data_internal(%rip), %ymm15
+        vaddps    %ymm1, %ymm0, %ymm1
+
+/*
+ * Now finally accumulate the high and low parts of the
+ * argument to log1p, H + L, with a final compensated summation.
+ */
+        vaddps    %ymm1, %ymm7, %ymm8
+        vsubps    %ymm8, %ymm7, %ymm0
+        vminps    %ymm8, %ymm5, %ymm7
+        vaddps    %ymm0, %ymm1, %ymm10
+
+/*
+ * Now we feed into the log1p code, using H in place of _VARG1 and
+ * later incorporating L into the reduced argument.
+ * compute 1+x as high, low parts
+ */
+        vmaxps    %ymm8, %ymm5, %ymm1
+        vaddps    %ymm7, %ymm1, %ymm12
+        vpsubd    %ymm15, %ymm12, %ymm13
+        vsubps    %ymm12, %ymm1, %ymm9
+        vpsrad    $23, %ymm13, %ymm12
+        vpand     2432+__svml_satanh_data_internal(%rip), %ymm13, %ymm14
+        vaddps    %ymm9, %ymm7, %ymm11
+        vcvtdq2ps %ymm12, %ymm0
+        vpslld    $23, %ymm12, %ymm13
+        vpaddd    %ymm15, %ymm14, %ymm7
+        vaddps    %ymm11, %ymm10, %ymm1
+        vpsubd    %ymm13, %ymm5, %ymm14
+
+/* polynomial evaluation */
+        vsubps    %ymm5, %ymm7, %ymm5
+        vmulps    %ymm1, %ymm14, %ymm8
+        vmovups   2208+__svml_satanh_data_internal(%rip), %ymm1
+        vaddps    %ymm5, %ymm8, %ymm5
+        vfmadd213ps 2176+__svml_satanh_data_internal(%rip), %ymm5, %ymm1
+        vfmadd213ps 2144+__svml_satanh_data_internal(%rip), %ymm5, %ymm1
+        vfmadd213ps 2112+__svml_satanh_data_internal(%rip), %ymm5, %ymm1
+        vfmadd213ps 2080+__svml_satanh_data_internal(%rip), %ymm5, %ymm1
+        vfmadd213ps 2048+__svml_satanh_data_internal(%rip), %ymm5, %ymm1
+        vfmadd213ps 2016+__svml_satanh_data_internal(%rip), %ymm5, %ymm1
+        vfmadd213ps 1984+__svml_satanh_data_internal(%rip), %ymm5, %ymm1
+        vmulps    %ymm1, %ymm5, %ymm7
+        vfmadd213ps %ymm5, %ymm5, %ymm7
+        vmovaps   %ymm6, %ymm2
+        vfmadd213ps %ymm6, %ymm6, %ymm2
+
+/* final reconstruction */
+        vfmadd132ps 3328+__svml_satanh_data_internal(%rip), %ymm7, %ymm0
+
+/* Record the sign for eventual reincorporation. */
+        vandps    2880+__svml_satanh_data_internal(%rip), %ymm6, %ymm3
+
+/* Or the sign bit in with the tiny result to handle atanh(-0) correctly */
+        vorps     %ymm3, %ymm2, %ymm2
+
+/* Finally, halve the result and reincorporate the sign */
+        vxorps    2688+__svml_satanh_data_internal(%rip), %ymm3, %ymm3
+        vmulps    %ymm0, %ymm3, %ymm0
+        vblendvps %ymm4, %ymm2, %ymm0, %ymm0
+        testl     %edx, %edx
+        jne       .LBL_1_3
+
+.LBL_1_2:
+        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
+
+.LBL_1_3:
+        vmovups   %ymm6, 64(%rsp)
+        vmovups   %ymm0, 128(%rsp)
+        je        .LBL_1_2
+        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      %edx, %r13d
+
+.LBL_1_7:
+        btl       %r12d, %r13d
+        jc        .LBL_1_10
+
+.LBL_1_8:
+        incl      %r12d
+        cmpl      $8, %r12d
+        jl        .LBL_1_7
+        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)
+        vmovups   128(%rsp), %ymm0
+        jmp       .LBL_1_2
+        .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
+
+.LBL_1_10:
+        lea       64(%rsp,%r12,4), %rdi
+        lea       128(%rsp,%r12,4), %rsi
+        call      __svml_satanh_cout_rare_internal
+        jmp       .LBL_1_8
+
+END(_ZGVdN8v_atanhf_avx2)
+
+        .align    16,0x90
+
+__svml_satanh_cout_rare_internal:
+
+        cfi_startproc
+
+        movzwl    2(%rdi), %edx
+        movss     (%rdi), %xmm1
+        andl      $32640, %edx
+        movb      3(%rdi), %al
+        andb      $127, %al
+        movss     %xmm1, -8(%rsp)
+        movb      %al, -5(%rsp)
+        cmpl      $32640, %edx
+        je        .LBL_2_6
+        cmpl      $1065353216, -8(%rsp)
+        jne       .LBL_2_4
+        divss     4+__satanh_la__imlsAtanhTab(%rip), %xmm1
+        movss     %xmm1, (%rsi)
+        movl      $2, %eax
+        ret
+
+.LBL_2_4:
+        movss     8+__satanh_la__imlsAtanhTab(%rip), %xmm0
+        movl      $1, %eax
+        mulss     4+__satanh_la__imlsAtanhTab(%rip), %xmm0
+        movss     %xmm0, (%rsi)
+        ret
+
+.LBL_2_6:
+        cmpl      $2139095040, -8(%rsp)
+        jne       .LBL_2_8
+        movss     4+__satanh_la__imlsAtanhTab(%rip), %xmm0
+        movl      $1, %eax
+        mulss     %xmm0, %xmm1
+        movss     %xmm1, (%rsi)
+        ret
+
+.LBL_2_8:
+        mulss     (%rdi), %xmm1
+        xorl      %eax, %eax
+        movss     %xmm1, (%rsi)
+        ret
+
+        cfi_endproc
+
+        .type	__svml_satanh_cout_rare_internal,@function
+        .size	__svml_satanh_cout_rare_internal,.-__svml_satanh_cout_rare_internal
+
+        .section .rodata, "a"
+        .align 64
+
+__svml_satanh_data_internal:
+        .long	3266227256
+        .long	3107766024
+        .long	3266228276
+        .long	3107776882
+        .long	3266229284
+        .long	3109949545
+        .long	3266230292
+        .long	3108055846
+        .long	3266231292
+        .long	3106351937
+        .long	3266232276
+        .long	3109092567
+        .long	3266233260
+        .long	3107948216
+        .long	3266234236
+        .long	3107170960
+        .long	3266235204
+        .long	3106817287
+        .long	3266236164
+        .long	3106942449
+        .long	3266237116
+        .long	3107600489
+        .long	3266238060
+        .long	3108844279
+        .long	3266239004
+        .long	3106531253
+        .long	3266239932
+        .long	3109100650
+        .long	3266240860
+        .long	3108213420
+        .long	3266241780
+        .long	3108112381
+        .long	3266242692
+        .long	3108845034
+        .long	3266243604
+        .long	3106263589
+        .long	3266244500
+        .long	3108802209
+        .long	3266245396
+        .long	3108116909
+        .long	3266246284
+        .long	3108445707
+        .long	3266247164
+        .long	3109831435
+        .long	3266248044
+        .long	3108121760
+        .long	3266248916
+        .long	3107552123
+        .long	3266249780
+        .long	3108162844
+        .long	3266250644
+        .long	3105799146
+        .long	3266251492
+        .long	3108888393
+        .long	3266252340
+        .long	3109079979
+        .long	3266253188
+        .long	3106411173
+        .long	3266254020
+        .long	3109307139
+        .long	3266254852
+        .long	3109415127
+        .long	3266255684
+        .long	3106770317
+        .long	3266256500
+        .long	3109795834
+        .long	3266257324
+        .long	3105942641
+        .long	3266258132
+        .long	3107826892
+        .long	3266258940
+        .long	3107092610
+        .long	3266259740
+        .long	3107966131
+        .long	3266260540
+        .long	3106284596
+        .long	3266261332
+        .long	3106273188
+        .long	3266262116
+        .long	3107962226
+        .long	3266262900
+        .long	3107187186
+        .long	3266263676
+        .long	3108171617
+        .long	3266264452
+        .long	3106749947
+        .long	3266265220
+        .long	3107144703
+        .long	3266265980
+        .long	3109383615
+        .long	3266266740
+        .long	3109299629
+        .long	3266267500
+        .long	3106919521
+        .long	3266268252
+        .long	3106463913
+        .long	3266268996
+        .long	3107958670
+        .long	3266269740
+        .long	3107234917
+        .long	3266270476
+        .long	3108511954
+        .long	3266271212
+        .long	3107620056
+        .long	3266271940
+        .long	3108777693
+        .long	3266272668
+        .long	3107814325
+        .long	3266273388
+        .long	3108947630
+        .long	3266274108
+        .long	3108006290
+        .long	3266274820
+        .long	3109207222
+        .long	3266275532
+        .long	3108378366
+        .long	3266276236
+        .long	3109735912
+        .long	3266276940
+        .long	3109107087
+        .long	3266277644
+        .long	3106513079
+        .long	3266278340
+        .long	3106169044
+        .long	3266279028
+        .long	3108095503
+        .long	3266279716
+        .long	3108118349
+        .long	3266280404
+        .long	3106257463
+        .long	3266281084
+        .long	3106726720
+        .long	3266281756
+        .long	3109545389
+        .long	3266282436
+        .long	3106343833
+        .long	3266283100
+        .long	3109723642
+        .long	3266283772
+        .long	3107120300
+        .long	3266284436
+        .long	3106940529
+        .long	3266285092
+        .long	3109202170
+        .long	3266285748
+        .long	3109728494
+        .long	3266286404
+        .long	3108536808
+        .long	3266287052
+        .long	3109838471
+        .long	3266287700
+        .long	3109455977
+        .long	3266288348
+        .long	3107405879
+        .long	3266288988
+        .long	3107898790
+        .long	3266289628
+        .long	3106756477
+        .long	3266290260
+        .long	3108189081
+        .long	3266290892
+        .long	3108017907
+        .long	3266291524
+        .long	3106258339
+        .long	3266292148
+        .long	3107119845
+        .long	3266292772
+        .long	3106423069
+        .long	3266293388
+        .long	3108377050
+        .long	3266294004
+        .long	3108802011
+        .long	3266294620
+        .long	3107712277
+        .long	3266295228
+        .long	3109316274
+        .long	3266295836
+        .long	3109433625
+        .long	3266296444
+        .long	3108078064
+        .long	3266297044
+        .long	3109457438
+        .long	3266297644
+        .long	3109390801
+        .long	3266298244
+        .long	3107891329
+        .long	3266298836
+        .long	3109166323
+        .long	3266299428
+        .long	3109034299
+        .long	3266300020
+        .long	3107507904
+        .long	3266300604
+        .long	3108793919
+        .long	3266301188
+        .long	3108710352
+        .long	3266301772
+        .long	3107269350
+        .long	3266302348
+        .long	3108677203
+        .long	3266302924
+        .long	3108751436
+        .long	3266303500
+        .long	3107503720
+        .long	3266304068
+        .long	3109139881
+        .long	3266304636
+        .long	3109476985
+        .long	3266305204
+        .long	3108526254
+        .long	3266305772
+        .long	3106298768
+        .long	3266306332
+        .long	3106999765
+        .long	3266306892
+        .long	3106445739
+        .long	3266307444
+        .long	3108841650
+        .long	3266308004
+        .long	3105809415
+        .long	3266308548
+        .long	3109942336
+        .long	3266309100
+        .long	3108667760
+        .long	3266309652
+        .long	3106190122
+        .long	3266310196
+        .long	3106713732
+        .long	3266310740
+        .long	3106054165
+        .long	3266311276
+        .long	3108415484
+        .long	3266311812
+        .long	3109613023
+        .long	3266312348
+        .long	3109656301
+        .long	3266312884
+        .long	3108554723
+        .long	3266313420
+        .long	3106317576
+        .long	3266313948
+        .long	3107148341
+        .long	3266314476
+        .long	3106861780
+        .long	3266314996
+        .long	3109661153
+        .long	3266315524
+        .long	3107166702
+        .long	3266316044
+        .long	3107775778
+        .long	3266316564
+        .long	3107302717
+        .long	3266317076
+        .long	3109950361
+        .long	3266317596
+        .long	3107338539
+        .long	3266318108
+        .long	3107864196
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .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	964689920
+        .long	964689920
+        .long	964689920
+        .long	964689920
+        .long	964689920
+        .long	964689920
+        .long	964689920
+        .long	964689920
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .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	4294967040
+        .long	4294967040
+        .long	4294967040
+        .long	4294967040
+        .long	4294967040
+        .long	4294967040
+        .long	4294967040
+        .long	4294967040
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .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	2139095040
+        .long	2139095040
+        .long	2139095040
+        .long	2139095040
+        .long	2139095040
+        .long	2139095040
+        .long	2139095040
+        .long	2139095040
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .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	2063597568
+        .long	2063597568
+        .long	2063597568
+        .long	2063597568
+        .long	2063597568
+        .long	2063597568
+        .long	2063597568
+        .long	2063597568
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .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	1051372345
+        .long	1051372345
+        .long	1051372345
+        .long	1051372345
+        .long	1051372345
+        .long	1051372345
+        .long	1051372345
+        .long	1051372345
+        .long	3204448310
+        .long	3204448310
+        .long	3204448310
+        .long	3204448310
+        .long	3204448310
+        .long	3204448310
+        .long	3204448310
+        .long	3204448310
+        .long	8388607
+        .long	8388607
+        .long	8388607
+        .long	8388607
+        .long	8388607
+        .long	8388607
+        .long	8388607
+        .long	8388607
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .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	998244352
+        .long	998244352
+        .long	998244352
+        .long	998244352
+        .long	998244352
+        .long	998244352
+        .long	998244352
+        .long	998244352
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .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	3212836863
+        .long	3212836863
+        .long	3212836863
+        .long	3212836863
+        .long	3212836863
+        .long	3212836863
+        .long	3212836863
+        .long	3212836863
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .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	2055208960
+        .long	2055208960
+        .long	2055208960
+        .long	2055208960
+        .long	2055208960
+        .long	2055208960
+        .long	2055208960
+        .long	2055208960
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .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	4294967040
+        .long	4294967040
+        .long	4294967040
+        .long	4294967040
+        .long	4294967040
+        .long	4294967040
+        .long	4294967040
+        .long	4294967040
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .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	1060205056
+        .long	1060205056
+        .long	1060205056
+        .long	1060205056
+        .long	1060205056
+        .long	1060205056
+        .long	1060205056
+        .long	1060205056
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .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	901758464
+        .long	901758464
+        .long	901758464
+        .long	901758464
+        .long	901758464
+        .long	901758464
+        .long	901758464
+        .long	901758464
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .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	1065353216
+        .long	1065353216
+        .long	1065353216
+        .long	1065353216
+        .long	1065353216
+        .long	1065353216
+        .long	1065353216
+        .long	1065353216
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .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	3204448256
+        .long	3204448256
+        .long	3204448256
+        .long	3204448256
+        .long	3204448256
+        .long	3204448256
+        .long	3204448256
+        .long	3204448256
+        .long	1051372180
+        .long	1051372180
+        .long	1051372180
+        .long	1051372180
+        .long	1051372180
+        .long	1051372180
+        .long	1051372180
+        .long	1051372180
+        .long	3196061070
+        .long	3196061070
+        .long	3196061070
+        .long	3196061070
+        .long	3196061070
+        .long	3196061070
+        .long	3196061070
+        .long	3196061070
+        .long	1045225872
+        .long	1045225872
+        .long	1045225872
+        .long	1045225872
+        .long	1045225872
+        .long	1045225872
+        .long	1045225872
+        .long	1045225872
+        .long	3190336823
+        .long	3190336823
+        .long	3190336823
+        .long	3190336823
+        .long	3190336823
+        .long	3190336823
+        .long	3190336823
+        .long	3190336823
+        .long	1041222418
+        .long	1041222418
+        .long	1041222418
+        .long	1041222418
+        .long	1041222418
+        .long	1041222418
+        .long	1041222418
+        .long	1041222418
+        .long	3189430755
+        .long	3189430755
+        .long	3189430755
+        .long	3189430755
+        .long	3189430755
+        .long	3189430755
+        .long	3189430755
+        .long	3189430755
+        .long	1041073389
+        .long	1041073389
+        .long	1041073389
+        .long	1041073389
+        .long	1041073389
+        .long	1041073389
+        .long	1041073389
+        .long	1041073389
+        .long	16777216
+        .long	16777216
+        .long	16777216
+        .long	16777216
+        .long	16777216
+        .long	16777216
+        .long	16777216
+        .long	16777216
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .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	25165824
+        .long	25165824
+        .long	25165824
+        .long	25165824
+        .long	25165824
+        .long	25165824
+        .long	25165824
+        .long	25165824
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .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	1059760811
+        .long	1059760811
+        .long	1059760811
+        .long	1059760811
+        .long	1059760811
+        .long	1059760811
+        .long	1059760811
+        .long	1059760811
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .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	8388607
+        .long	8388607
+        .long	8388607
+        .long	8388607
+        .long	8388607
+        .long	8388607
+        .long	8388607
+        .long	8388607
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .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	1317011456
+        .long	1317011456
+        .long	1317011456
+        .long	1317011456
+        .long	1317011456
+        .long	1317011456
+        .long	1317011456
+        .long	1317011456
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .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	1052770304
+        .long	1052770304
+        .long	1052770304
+        .long	1052770304
+        .long	1052770304
+        .long	1052770304
+        .long	1052770304
+        .long	1052770304
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .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	1050673152
+        .long	1050673152
+        .long	1050673152
+        .long	1050673152
+        .long	1050673152
+        .long	1050673152
+        .long	1050673152
+        .long	1050673152
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .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	1056964608
+        .long	1056964608
+        .long	1056964608
+        .long	1056964608
+        .long	1056964608
+        .long	1056964608
+        .long	1056964608
+        .long	1056964608
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .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	2139095039
+        .long	2139095039
+        .long	2139095039
+        .long	2139095039
+        .long	2139095039
+        .long	2139095039
+        .long	2139095039
+        .long	2139095039
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .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	1031798784
+        .long	1031798784
+        .long	1031798784
+        .long	1031798784
+        .long	1031798784
+        .long	1031798784
+        .long	1031798784
+        .long	1031798784
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .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	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	1106771968
+        .long	1106771968
+        .long	1106771968
+        .long	1106771968
+        .long	1106771968
+        .long	1106771968
+        .long	1106771968
+        .long	1106771968
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .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	4294959104
+        .long	4294959104
+        .long	4294959104
+        .long	4294959104
+        .long	4294959104
+        .long	4294959104
+        .long	4294959104
+        .long	4294959104
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .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	4294963200
+        .long	4294963200
+        .long	4294963200
+        .long	4294963200
+        .long	4294963200
+        .long	4294963200
+        .long	4294963200
+        .long	4294963200
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .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	4294901760
+        .long	4294901760
+        .long	4294901760
+        .long	4294901760
+        .long	4294901760
+        .long	4294901760
+        .long	4294901760
+        .long	4294901760
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .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	813694976
+        .long	813694976
+        .long	813694976
+        .long	813694976
+        .long	813694976
+        .long	813694976
+        .long	813694976
+        .long	813694976
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .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	201326592
+        .long	201326592
+        .long	201326592
+        .long	201326592
+        .long	201326592
+        .long	201326592
+        .long	201326592
+        .long	201326592
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .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	1060205080
+        .long	1060205080
+        .long	1060205080
+        .long	1060205080
+        .long	1060205080
+        .long	1060205080
+        .long	1060205080
+        .long	1060205080
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .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	2139095040
+        .long	4286578688
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .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	1065353216
+        .long	3212836864
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .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
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .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_satanh_data_internal,@object
+        .size	__svml_satanh_data_internal,3584
+        .align 4
+
+__satanh_la__imlsAtanhTab:
+        .long	1065353216
+        .long	0
+        .long	2139095040
+        .type	__satanh_la__imlsAtanhTab,@object
+        .size	__satanh_la__imlsAtanhTab,12
diff --git a/sysdeps/x86_64/fpu/svml_d_atanh2_core.S b/sysdeps/x86_64/fpu/svml_d_atanh2_core.S
new file mode 100644
index 0000000000..36f549ddd9
--- /dev/null
+++ b/sysdeps/x86_64/fpu/svml_d_atanh2_core.S
@@ -0,0 +1,29 @@ 
+/* Function atanh 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_atanh)
+WRAPPER_IMPL_SSE2 atanh
+END (_ZGVbN2v_atanh)
+
+#ifndef USE_MULTIARCH
+ libmvec_hidden_def (_ZGVbN2v_atanh)
+#endif
diff --git a/sysdeps/x86_64/fpu/svml_d_atanh4_core.S b/sysdeps/x86_64/fpu/svml_d_atanh4_core.S
new file mode 100644
index 0000000000..6d6d11e85e
--- /dev/null
+++ b/sysdeps/x86_64/fpu/svml_d_atanh4_core.S
@@ -0,0 +1,29 @@ 
+/* Function atanh 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_atanh)
+WRAPPER_IMPL_AVX _ZGVbN2v_atanh
+END (_ZGVdN4v_atanh)
+
+#ifndef USE_MULTIARCH
+ libmvec_hidden_def (_ZGVdN4v_atanh)
+#endif
diff --git a/sysdeps/x86_64/fpu/svml_d_atanh4_core_avx.S b/sysdeps/x86_64/fpu/svml_d_atanh4_core_avx.S
new file mode 100644
index 0000000000..b4cfa275c8
--- /dev/null
+++ b/sysdeps/x86_64/fpu/svml_d_atanh4_core_avx.S
@@ -0,0 +1,25 @@ 
+/* Function atanh 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_atanh)
+WRAPPER_IMPL_AVX _ZGVbN2v_atanh
+END (_ZGVcN4v_atanh)
diff --git a/sysdeps/x86_64/fpu/svml_d_atanh8_core.S b/sysdeps/x86_64/fpu/svml_d_atanh8_core.S
new file mode 100644
index 0000000000..b31a6a72a1
--- /dev/null
+++ b/sysdeps/x86_64/fpu/svml_d_atanh8_core.S
@@ -0,0 +1,25 @@ 
+/* Function atanh 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_atanh)
+WRAPPER_IMPL_AVX512 _ZGVdN4v_atanh
+END (_ZGVeN8v_atanh)
diff --git a/sysdeps/x86_64/fpu/svml_s_atanhf16_core.S b/sysdeps/x86_64/fpu/svml_s_atanhf16_core.S
new file mode 100644
index 0000000000..2ea61888e7
--- /dev/null
+++ b/sysdeps/x86_64/fpu/svml_s_atanhf16_core.S
@@ -0,0 +1,25 @@ 
+/* Function atanhf 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_atanhf)
+WRAPPER_IMPL_AVX512 _ZGVdN8v_atanhf
+END (_ZGVeN16v_atanhf)
diff --git a/sysdeps/x86_64/fpu/svml_s_atanhf4_core.S b/sysdeps/x86_64/fpu/svml_s_atanhf4_core.S
new file mode 100644
index 0000000000..6904cc388a
--- /dev/null
+++ b/sysdeps/x86_64/fpu/svml_s_atanhf4_core.S
@@ -0,0 +1,29 @@ 
+/* Function atanhf 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_atanhf)
+WRAPPER_IMPL_SSE2 atanhf
+END (_ZGVbN4v_atanhf)
+
+#ifndef USE_MULTIARCH
+ libmvec_hidden_def (_ZGVbN4v_atanhf)
+#endif
diff --git a/sysdeps/x86_64/fpu/svml_s_atanhf8_core.S b/sysdeps/x86_64/fpu/svml_s_atanhf8_core.S
new file mode 100644
index 0000000000..31d695fb5d
--- /dev/null
+++ b/sysdeps/x86_64/fpu/svml_s_atanhf8_core.S
@@ -0,0 +1,29 @@ 
+/* Function atanhf 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_atanhf)
+WRAPPER_IMPL_AVX _ZGVbN4v_atanhf
+END (_ZGVdN8v_atanhf)
+
+#ifndef USE_MULTIARCH
+ libmvec_hidden_def (_ZGVdN8v_atanhf)
+#endif
diff --git a/sysdeps/x86_64/fpu/svml_s_atanhf8_core_avx.S b/sysdeps/x86_64/fpu/svml_s_atanhf8_core_avx.S
new file mode 100644
index 0000000000..6c24eaf45c
--- /dev/null
+++ b/sysdeps/x86_64/fpu/svml_s_atanhf8_core_avx.S
@@ -0,0 +1,25 @@ 
+/* Function atanhf 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_atanhf)
+WRAPPER_IMPL_AVX _ZGVbN4v_atanhf
+END (_ZGVcN8v_atanhf)
diff --git a/sysdeps/x86_64/fpu/test-double-libmvec-atanh-avx.c b/sysdeps/x86_64/fpu/test-double-libmvec-atanh-avx.c
new file mode 100644
index 0000000000..0bdeec7851
--- /dev/null
+++ b/sysdeps/x86_64/fpu/test-double-libmvec-atanh-avx.c
@@ -0,0 +1 @@ 
+#include "test-double-libmvec-atanh.c"
diff --git a/sysdeps/x86_64/fpu/test-double-libmvec-atanh-avx2.c b/sysdeps/x86_64/fpu/test-double-libmvec-atanh-avx2.c
new file mode 100644
index 0000000000..0bdeec7851
--- /dev/null
+++ b/sysdeps/x86_64/fpu/test-double-libmvec-atanh-avx2.c
@@ -0,0 +1 @@ 
+#include "test-double-libmvec-atanh.c"
diff --git a/sysdeps/x86_64/fpu/test-double-libmvec-atanh-avx512f.c b/sysdeps/x86_64/fpu/test-double-libmvec-atanh-avx512f.c
new file mode 100644
index 0000000000..0bdeec7851
--- /dev/null
+++ b/sysdeps/x86_64/fpu/test-double-libmvec-atanh-avx512f.c
@@ -0,0 +1 @@ 
+#include "test-double-libmvec-atanh.c"
diff --git a/sysdeps/x86_64/fpu/test-double-libmvec-atanh.c b/sysdeps/x86_64/fpu/test-double-libmvec-atanh.c
new file mode 100644
index 0000000000..41dd8e7af3
--- /dev/null
+++ b/sysdeps/x86_64/fpu/test-double-libmvec-atanh.c
@@ -0,0 +1,3 @@ 
+#define LIBMVEC_TYPE double
+#define LIBMVEC_FUNC atanh
+#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 cd802e0c6d..85b3129618 100644
--- a/sysdeps/x86_64/fpu/test-double-vlen2-wrappers.c
+++ b/sysdeps/x86_64/fpu/test-double-vlen2-wrappers.c
@@ -33,6 +33,7 @@  VECTOR_WRAPPER (WRAPPER_NAME (asin), _ZGVbN2v_asin)
 VECTOR_WRAPPER (WRAPPER_NAME (asinh), _ZGVbN2v_asinh)
 VECTOR_WRAPPER (WRAPPER_NAME (atan), _ZGVbN2v_atan)
 VECTOR_WRAPPER_ff (WRAPPER_NAME (atan2), _ZGVbN2vv_atan2)
+VECTOR_WRAPPER (WRAPPER_NAME (atanh), _ZGVbN2v_atanh)
 
 #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 a04980e87a..e3e88fe268 100644
--- a/sysdeps/x86_64/fpu/test-double-vlen4-avx2-wrappers.c
+++ b/sysdeps/x86_64/fpu/test-double-vlen4-avx2-wrappers.c
@@ -36,6 +36,7 @@  VECTOR_WRAPPER (WRAPPER_NAME (asin), _ZGVdN4v_asin)
 VECTOR_WRAPPER (WRAPPER_NAME (asinh), _ZGVdN4v_asinh)
 VECTOR_WRAPPER (WRAPPER_NAME (atan), _ZGVdN4v_atan)
 VECTOR_WRAPPER_ff (WRAPPER_NAME (atan2), _ZGVdN4vv_atan2)
+VECTOR_WRAPPER (WRAPPER_NAME (atanh), _ZGVdN4v_atanh)
 
 #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 9c602445e7..6f81f13d37 100644
--- a/sysdeps/x86_64/fpu/test-double-vlen4-wrappers.c
+++ b/sysdeps/x86_64/fpu/test-double-vlen4-wrappers.c
@@ -33,6 +33,7 @@  VECTOR_WRAPPER (WRAPPER_NAME (asin), _ZGVcN4v_asin)
 VECTOR_WRAPPER (WRAPPER_NAME (asinh), _ZGVcN4v_asinh)
 VECTOR_WRAPPER (WRAPPER_NAME (atan), _ZGVcN4v_atan)
 VECTOR_WRAPPER_ff (WRAPPER_NAME (atan2), _ZGVcN4vv_atan2)
+VECTOR_WRAPPER (WRAPPER_NAME (atanh), _ZGVcN4v_atanh)
 
 #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 d1e4b8dd01..197ff12338 100644
--- a/sysdeps/x86_64/fpu/test-double-vlen8-wrappers.c
+++ b/sysdeps/x86_64/fpu/test-double-vlen8-wrappers.c
@@ -33,6 +33,7 @@  VECTOR_WRAPPER (WRAPPER_NAME (asin), _ZGVeN8v_asin)
 VECTOR_WRAPPER (WRAPPER_NAME (asinh), _ZGVeN8v_asinh)
 VECTOR_WRAPPER (WRAPPER_NAME (atan), _ZGVeN8v_atan)
 VECTOR_WRAPPER_ff (WRAPPER_NAME (atan2), _ZGVeN8vv_atan2)
+VECTOR_WRAPPER (WRAPPER_NAME (atanh), _ZGVeN8v_atanh)
 
 #ifndef __ILP32__
 # define VEC_INT_TYPE __m512i
diff --git a/sysdeps/x86_64/fpu/test-float-libmvec-atanhf-avx.c b/sysdeps/x86_64/fpu/test-float-libmvec-atanhf-avx.c
new file mode 100644
index 0000000000..6f89ae70f2
--- /dev/null
+++ b/sysdeps/x86_64/fpu/test-float-libmvec-atanhf-avx.c
@@ -0,0 +1 @@ 
+#include "test-float-libmvec-atanhf.c"
diff --git a/sysdeps/x86_64/fpu/test-float-libmvec-atanhf-avx2.c b/sysdeps/x86_64/fpu/test-float-libmvec-atanhf-avx2.c
new file mode 100644
index 0000000000..6f89ae70f2
--- /dev/null
+++ b/sysdeps/x86_64/fpu/test-float-libmvec-atanhf-avx2.c
@@ -0,0 +1 @@ 
+#include "test-float-libmvec-atanhf.c"
diff --git a/sysdeps/x86_64/fpu/test-float-libmvec-atanhf-avx512f.c b/sysdeps/x86_64/fpu/test-float-libmvec-atanhf-avx512f.c
new file mode 100644
index 0000000000..6f89ae70f2
--- /dev/null
+++ b/sysdeps/x86_64/fpu/test-float-libmvec-atanhf-avx512f.c
@@ -0,0 +1 @@ 
+#include "test-float-libmvec-atanhf.c"
diff --git a/sysdeps/x86_64/fpu/test-float-libmvec-atanhf.c b/sysdeps/x86_64/fpu/test-float-libmvec-atanhf.c
new file mode 100644
index 0000000000..33a022adb8
--- /dev/null
+++ b/sysdeps/x86_64/fpu/test-float-libmvec-atanhf.c
@@ -0,0 +1,3 @@ 
+#define LIBMVEC_TYPE float
+#define LIBMVEC_FUNC atanhf
+#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 65e0c2af7d..d21d943404 100644
--- a/sysdeps/x86_64/fpu/test-float-vlen16-wrappers.c
+++ b/sysdeps/x86_64/fpu/test-float-vlen16-wrappers.c
@@ -33,6 +33,7 @@  VECTOR_WRAPPER (WRAPPER_NAME (asinf), _ZGVeN16v_asinf)
 VECTOR_WRAPPER (WRAPPER_NAME (asinhf), _ZGVeN16v_asinhf)
 VECTOR_WRAPPER (WRAPPER_NAME (atanf), _ZGVeN16v_atanf)
 VECTOR_WRAPPER_ff (WRAPPER_NAME (atan2f), _ZGVeN16vv_atan2f)
+VECTOR_WRAPPER (WRAPPER_NAME (atanhf), _ZGVeN16v_atanhf)
 
 #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 b0cad1e107..3d24faf8dc 100644
--- a/sysdeps/x86_64/fpu/test-float-vlen4-wrappers.c
+++ b/sysdeps/x86_64/fpu/test-float-vlen4-wrappers.c
@@ -33,6 +33,7 @@  VECTOR_WRAPPER (WRAPPER_NAME (asinf), _ZGVbN4v_asinf)
 VECTOR_WRAPPER (WRAPPER_NAME (asinhf), _ZGVbN4v_asinhf)
 VECTOR_WRAPPER (WRAPPER_NAME (atanf), _ZGVbN4v_atanf)
 VECTOR_WRAPPER_ff (WRAPPER_NAME (atan2f), _ZGVbN4vv_atan2f)
+VECTOR_WRAPPER (WRAPPER_NAME (atanhf), _ZGVbN4v_atanhf)
 
 #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 359aa445ba..f176c1f4b0 100644
--- a/sysdeps/x86_64/fpu/test-float-vlen8-avx2-wrappers.c
+++ b/sysdeps/x86_64/fpu/test-float-vlen8-avx2-wrappers.c
@@ -36,6 +36,7 @@  VECTOR_WRAPPER (WRAPPER_NAME (asinf), _ZGVdN8v_asinf)
 VECTOR_WRAPPER (WRAPPER_NAME (asinhf), _ZGVdN8v_asinhf)
 VECTOR_WRAPPER (WRAPPER_NAME (atanf), _ZGVdN8v_atanf)
 VECTOR_WRAPPER_ff (WRAPPER_NAME (atan2f), _ZGVdN8vv_atan2f)
+VECTOR_WRAPPER (WRAPPER_NAME (atanhf), _ZGVdN8v_atanhf)
 
 /* 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 80730777fc..281eb58ad4 100644
--- a/sysdeps/x86_64/fpu/test-float-vlen8-wrappers.c
+++ b/sysdeps/x86_64/fpu/test-float-vlen8-wrappers.c
@@ -33,6 +33,7 @@  VECTOR_WRAPPER (WRAPPER_NAME (asinf), _ZGVcN8v_asinf)
 VECTOR_WRAPPER (WRAPPER_NAME (asinhf), _ZGVcN8v_asinhf)
 VECTOR_WRAPPER (WRAPPER_NAME (atanf), _ZGVcN8v_atanf)
 VECTOR_WRAPPER_ff (WRAPPER_NAME (atan2f), _ZGVcN8vv_atan2f)
+VECTOR_WRAPPER (WRAPPER_NAME (atanhf), _ZGVcN8v_atanhf)
 
 #define VEC_INT_TYPE __m128i