diff mbox series

[03/42] x86-64: Add vector acosh/acoshf implementation to libmvec

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

Checks

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

Commit Message

Sunil Pandey Nov. 24, 2021, 7:37 p.m. UTC
Implement vectorized acosh/acoshf containing SSE, AVX, AVX2 and
AVX512 versions for libmvec as per vector ABI.  It also contains
accuracy and ABI tests for vector acosh/acoshf 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_acosh2_core-sse2.S   |   20 +
 .../x86_64/fpu/multiarch/svml_d_acosh2_core.c |   27 +
 .../fpu/multiarch/svml_d_acosh2_core_sse4.S   | 5408 +++++++++++++++++
 .../fpu/multiarch/svml_d_acosh4_core-sse.S    |   20 +
 .../x86_64/fpu/multiarch/svml_d_acosh4_core.c |   27 +
 .../fpu/multiarch/svml_d_acosh4_core_avx2.S   | 5071 ++++++++++++++++
 .../fpu/multiarch/svml_d_acosh8_core-avx2.S   |   20 +
 .../x86_64/fpu/multiarch/svml_d_acosh8_core.c |   27 +
 .../fpu/multiarch/svml_d_acosh8_core_avx512.S |  864 +++
 .../fpu/multiarch/svml_s_acoshf16_core-avx2.S |   20 +
 .../fpu/multiarch/svml_s_acoshf16_core.c      |   28 +
 .../multiarch/svml_s_acoshf16_core_avx512.S   |  661 ++
 .../fpu/multiarch/svml_s_acoshf4_core-sse2.S  |   20 +
 .../fpu/multiarch/svml_s_acoshf4_core.c       |   28 +
 .../fpu/multiarch/svml_s_acoshf4_core_sse4.S  | 2498 ++++++++
 .../fpu/multiarch/svml_s_acoshf8_core-sse.S   |   20 +
 .../fpu/multiarch/svml_s_acoshf8_core.c       |   28 +
 .../fpu/multiarch/svml_s_acoshf8_core_avx2.S  | 2112 +++++++
 sysdeps/x86_64/fpu/svml_d_acosh2_core.S       |   29 +
 sysdeps/x86_64/fpu/svml_d_acosh4_core.S       |   29 +
 sysdeps/x86_64/fpu/svml_d_acosh4_core_avx.S   |   25 +
 sysdeps/x86_64/fpu/svml_d_acosh8_core.S       |   25 +
 sysdeps/x86_64/fpu/svml_s_acoshf16_core.S     |   25 +
 sysdeps/x86_64/fpu/svml_s_acoshf4_core.S      |   29 +
 sysdeps/x86_64/fpu/svml_s_acoshf8_core.S      |   29 +
 sysdeps/x86_64/fpu/svml_s_acoshf8_core_avx.S  |   25 +
 .../fpu/test-double-libmvec-acosh-avx.c       |    1 +
 .../fpu/test-double-libmvec-acosh-avx2.c      |    1 +
 .../fpu/test-double-libmvec-acosh-avx512f.c   |    1 +
 .../x86_64/fpu/test-double-libmvec-acosh.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-acoshf-avx.c       |    1 +
 .../fpu/test-float-libmvec-acoshf-avx2.c      |    1 +
 .../fpu/test-float-libmvec-acoshf-avx512f.c   |    1 +
 .../x86_64/fpu/test-float-libmvec-acoshf.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, 17182 insertions(+), 1 deletion(-)
 create mode 100644 sysdeps/x86_64/fpu/multiarch/svml_d_acosh2_core-sse2.S
 create mode 100644 sysdeps/x86_64/fpu/multiarch/svml_d_acosh2_core.c
 create mode 100644 sysdeps/x86_64/fpu/multiarch/svml_d_acosh2_core_sse4.S
 create mode 100644 sysdeps/x86_64/fpu/multiarch/svml_d_acosh4_core-sse.S
 create mode 100644 sysdeps/x86_64/fpu/multiarch/svml_d_acosh4_core.c
 create mode 100644 sysdeps/x86_64/fpu/multiarch/svml_d_acosh4_core_avx2.S
 create mode 100644 sysdeps/x86_64/fpu/multiarch/svml_d_acosh8_core-avx2.S
 create mode 100644 sysdeps/x86_64/fpu/multiarch/svml_d_acosh8_core.c
 create mode 100644 sysdeps/x86_64/fpu/multiarch/svml_d_acosh8_core_avx512.S
 create mode 100644 sysdeps/x86_64/fpu/multiarch/svml_s_acoshf16_core-avx2.S
 create mode 100644 sysdeps/x86_64/fpu/multiarch/svml_s_acoshf16_core.c
 create mode 100644 sysdeps/x86_64/fpu/multiarch/svml_s_acoshf16_core_avx512.S
 create mode 100644 sysdeps/x86_64/fpu/multiarch/svml_s_acoshf4_core-sse2.S
 create mode 100644 sysdeps/x86_64/fpu/multiarch/svml_s_acoshf4_core.c
 create mode 100644 sysdeps/x86_64/fpu/multiarch/svml_s_acoshf4_core_sse4.S
 create mode 100644 sysdeps/x86_64/fpu/multiarch/svml_s_acoshf8_core-sse.S
 create mode 100644 sysdeps/x86_64/fpu/multiarch/svml_s_acoshf8_core.c
 create mode 100644 sysdeps/x86_64/fpu/multiarch/svml_s_acoshf8_core_avx2.S
 create mode 100644 sysdeps/x86_64/fpu/svml_d_acosh2_core.S
 create mode 100644 sysdeps/x86_64/fpu/svml_d_acosh4_core.S
 create mode 100644 sysdeps/x86_64/fpu/svml_d_acosh4_core_avx.S
 create mode 100644 sysdeps/x86_64/fpu/svml_d_acosh8_core.S
 create mode 100644 sysdeps/x86_64/fpu/svml_s_acoshf16_core.S
 create mode 100644 sysdeps/x86_64/fpu/svml_s_acoshf4_core.S
 create mode 100644 sysdeps/x86_64/fpu/svml_s_acoshf8_core.S
 create mode 100644 sysdeps/x86_64/fpu/svml_s_acoshf8_core_avx.S
 create mode 100644 sysdeps/x86_64/fpu/test-double-libmvec-acosh-avx.c
 create mode 100644 sysdeps/x86_64/fpu/test-double-libmvec-acosh-avx2.c
 create mode 100644 sysdeps/x86_64/fpu/test-double-libmvec-acosh-avx512f.c
 create mode 100644 sysdeps/x86_64/fpu/test-double-libmvec-acosh.c
 create mode 100644 sysdeps/x86_64/fpu/test-float-libmvec-acoshf-avx.c
 create mode 100644 sysdeps/x86_64/fpu/test-float-libmvec-acoshf-avx2.c
 create mode 100644 sysdeps/x86_64/fpu/test-float-libmvec-acoshf-avx512f.c
 create mode 100644 sysdeps/x86_64/fpu/test-float-libmvec-acoshf.c
diff mbox series

Patch

diff --git a/bits/libm-simd-decl-stubs.h b/bits/libm-simd-decl-stubs.h
index 2ccdd1fc53..7408044938 100644
--- a/bits/libm-simd-decl-stubs.h
+++ b/bits/libm-simd-decl-stubs.h
@@ -109,4 +109,15 @@ 
 #define __DECL_SIMD_acosf32x
 #define __DECL_SIMD_acosf64x
 #define __DECL_SIMD_acosf128x
+
+#define __DECL_SIMD_acosh
+#define __DECL_SIMD_acoshf
+#define __DECL_SIMD_acoshl
+#define __DECL_SIMD_acoshf16
+#define __DECL_SIMD_acoshf32
+#define __DECL_SIMD_acoshf64
+#define __DECL_SIMD_acoshf128
+#define __DECL_SIMD_acoshf32x
+#define __DECL_SIMD_acoshf64x
+#define __DECL_SIMD_acoshf128x
 #endif
diff --git a/math/bits/mathcalls.h b/math/bits/mathcalls.h
index 2cc6654208..3380358eb8 100644
--- a/math/bits/mathcalls.h
+++ b/math/bits/mathcalls.h
@@ -82,7 +82,7 @@  __MATHDECL_VEC (void,sincos,,
 
 #if defined __USE_XOPEN_EXTENDED || defined __USE_ISOC99
 /* Hyperbolic arc cosine of X.  */
-__MATHCALL (acosh,, (_Mdouble_ __x));
+__MATHCALL_VEC (acosh,, (_Mdouble_ __x));
 /* Hyperbolic arc sine of X.  */
 __MATHCALL (asinh,, (_Mdouble_ __x));
 /* Hyperbolic arc tangent of X.  */
diff --git a/sysdeps/unix/sysv/linux/x86_64/libmvec.abilist b/sysdeps/unix/sysv/linux/x86_64/libmvec.abilist
index b37b55777e..dfc5cbc7dc 100644
--- a/sysdeps/unix/sysv/linux/x86_64/libmvec.abilist
+++ b/sysdeps/unix/sysv/linux/x86_64/libmvec.abilist
@@ -47,10 +47,18 @@  GLIBC_2.22 _ZGVeN8v_sin F
 GLIBC_2.22 _ZGVeN8vv_pow F
 GLIBC_2.22 _ZGVeN8vvv_sincos F
 GLIBC_2.35 _ZGVbN2v_acos F
+GLIBC_2.35 _ZGVbN2v_acosh F
 GLIBC_2.35 _ZGVbN4v_acosf F
+GLIBC_2.35 _ZGVbN4v_acoshf F
 GLIBC_2.35 _ZGVcN4v_acos F
+GLIBC_2.35 _ZGVcN4v_acosh F
 GLIBC_2.35 _ZGVcN8v_acosf F
+GLIBC_2.35 _ZGVcN8v_acoshf F
 GLIBC_2.35 _ZGVdN4v_acos F
+GLIBC_2.35 _ZGVdN4v_acosh F
 GLIBC_2.35 _ZGVdN8v_acosf F
+GLIBC_2.35 _ZGVdN8v_acoshf F
 GLIBC_2.35 _ZGVeN16v_acosf F
+GLIBC_2.35 _ZGVeN16v_acoshf F
 GLIBC_2.35 _ZGVeN8v_acos F
+GLIBC_2.35 _ZGVeN8v_acosh F
diff --git a/sysdeps/x86/fpu/bits/math-vector.h b/sysdeps/x86/fpu/bits/math-vector.h
index dabb74cbb9..e7097a0a77 100644
--- a/sysdeps/x86/fpu/bits/math-vector.h
+++ b/sysdeps/x86/fpu/bits/math-vector.h
@@ -62,6 +62,10 @@ 
 #  define __DECL_SIMD_acos __DECL_SIMD_x86_64
 #  undef __DECL_SIMD_acosf
 #  define __DECL_SIMD_acosf __DECL_SIMD_x86_64
+#  undef __DECL_SIMD_acosh
+#  define __DECL_SIMD_acosh __DECL_SIMD_x86_64
+#  undef __DECL_SIMD_acoshf
+#  define __DECL_SIMD_acoshf __DECL_SIMD_x86_64
 
 # endif
 #endif
diff --git a/sysdeps/x86_64/fpu/Makeconfig b/sysdeps/x86_64/fpu/Makeconfig
index bc781c45c7..de6e0164e9 100644
--- a/sysdeps/x86_64/fpu/Makeconfig
+++ b/sysdeps/x86_64/fpu/Makeconfig
@@ -23,6 +23,7 @@  postclean-generated += libmvec.mk
 # Define for both math and mathvec directories.
 libmvec-funcs = \
   acos \
+  acosh \
   cos \
   exp \
   log \
diff --git a/sysdeps/x86_64/fpu/Versions b/sysdeps/x86_64/fpu/Versions
index 8d337bf716..053d32d14d 100644
--- a/sysdeps/x86_64/fpu/Versions
+++ b/sysdeps/x86_64/fpu/Versions
@@ -15,6 +15,8 @@  libmvec {
 },
   GLIBC_2.35 {
     _ZGVbN2v_acos; _ZGVcN4v_acos; _ZGVdN4v_acos; _ZGVeN8v_acos;
+    _ZGVbN2v_acosh; _ZGVcN4v_acosh; _ZGVdN4v_acosh; _ZGVeN8v_acosh;
     _ZGVbN4v_acosf; _ZGVcN8v_acosf; _ZGVdN8v_acosf; _ZGVeN16v_acosf;
+    _ZGVbN4v_acoshf; _ZGVcN8v_acoshf; _ZGVdN8v_acoshf; _ZGVeN16v_acoshf;
   }
 }
diff --git a/sysdeps/x86_64/fpu/libm-test-ulps b/sysdeps/x86_64/fpu/libm-test-ulps
index 85a568ed29..8c8f4c648d 100644
--- a/sysdeps/x86_64/fpu/libm-test-ulps
+++ b/sysdeps/x86_64/fpu/libm-test-ulps
@@ -69,6 +69,26 @@  float: 2
 float128: 3
 ldouble: 3
 
+Function: "acosh_vlen16":
+float: 1
+
+Function: "acosh_vlen2":
+double: 2
+
+Function: "acosh_vlen4":
+double: 2
+float: 1
+
+Function: "acosh_vlen4_avx2":
+double: 2
+
+Function: "acosh_vlen8":
+double: 1
+float: 1
+
+Function: "acosh_vlen8_avx2":
+float: 2
+
 Function: "asin":
 double: 1
 float: 1
diff --git a/sysdeps/x86_64/fpu/multiarch/svml_d_acosh2_core-sse2.S b/sysdeps/x86_64/fpu/multiarch/svml_d_acosh2_core-sse2.S
new file mode 100644
index 0000000000..28620a03a9
--- /dev/null
+++ b/sysdeps/x86_64/fpu/multiarch/svml_d_acosh2_core-sse2.S
@@ -0,0 +1,20 @@ 
+/* SSE2 version of vectorized acosh, 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_acosh _ZGVbN2v_acosh_sse2
+#include "../svml_d_acosh2_core.S"
diff --git a/sysdeps/x86_64/fpu/multiarch/svml_d_acosh2_core.c b/sysdeps/x86_64/fpu/multiarch/svml_d_acosh2_core.c
new file mode 100644
index 0000000000..8a41507326
--- /dev/null
+++ b/sysdeps/x86_64/fpu/multiarch/svml_d_acosh2_core.c
@@ -0,0 +1,27 @@ 
+/* Multiple versions of vectorized acosh, 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_acosh
+#include "ifunc-mathvec-sse4_1.h"
+
+libc_ifunc_redirected (REDIRECT_NAME, SYMBOL_NAME, IFUNC_SELECTOR ());
+
+#ifdef SHARED
+__hidden_ver1 (_ZGVbN2v_acosh, __GI__ZGVbN2v_acosh, __redirect__ZGVbN2v_acosh)
+  __attribute__ ((visibility ("hidden")));
+#endif
diff --git a/sysdeps/x86_64/fpu/multiarch/svml_d_acosh2_core_sse4.S b/sysdeps/x86_64/fpu/multiarch/svml_d_acosh2_core_sse4.S
new file mode 100644
index 0000000000..d0bc37dd8d
--- /dev/null
+++ b/sysdeps/x86_64/fpu/multiarch/svml_d_acosh2_core_sse4.S
@@ -0,0 +1,5408 @@ 
+/* Function acosh 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 acosh(x) as log(x + sqrt(x*x - 1))
+ *
+ *   Special cases:
+ *
+ *   acosh(NaN)  = quiet NaN, and raise invalid exception
+ *   acosh(-INF) = NaN
+ *   acosh(+INF) = +INF
+ *   acosh(x)    = NaN if x < 1
+ *   acosh(1)    = +0
+ *
+ */
+
+#include <sysdep.h>
+
+        .text
+ENTRY(_ZGVbN2v_acosh_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
+        movaps    %xmm0, %xmm7
+        movups    %xmm10, 160(%rsp)
+
+/* Compute U = X - 1 and V = X + 1, naively first. */
+        movaps    %xmm7, %xmm2
+        .cfi_escape 0x10, 0x1b, 0x0e, 0x38, 0x1c, 0x0d, 0xc0, 0xff, 0xff, 0xff, 0x1a, 0x0d, 0xa0, 0xff, 0xff, 0xff, 0x22
+
+/* Load the constant 1 and possibly other stuff */
+        movups    12800+__svml_dacosh_data_internal(%rip), %xmm10
+
+/*
+ * Check that 1 < X < +inf; otherwise go to the callout function.
+ * We need the callout for X = 1 to avoid division by zero below.
+ * This test ensures that callout handles NaN and either infinity.
+ */
+        movaps    %xmm7, %xmm1
+        movaps    %xmm10, %xmm4
+        movaps    %xmm10, %xmm5
+        subpd     %xmm10, %xmm2
+        addpd     %xmm7, %xmm4
+        cmpnlepd  13952+__svml_dacosh_data_internal(%rip), %xmm1
+        cmpnltpd  %xmm7, %xmm5
+
+/* For low-accuracy versions, naivety is harmless */
+        mulpd     %xmm2, %xmm4
+
+/* dH = [X + sqrt(X^2 - 1)] - 1 */
+        sqrtpd    %xmm4, %xmm3
+        addpd     %xmm2, %xmm3
+        movups    %xmm12, 144(%rsp)
+        .cfi_escape 0x10, 0x1d, 0x0e, 0x38, 0x1c, 0x0d, 0xc0, 0xff, 0xff, 0xff, 0x1a, 0x0d, 0x90, 0xff, 0xff, 0xff, 0x22
+
+/*
+ * Now we feed into the log1p code, using H in place of _VARG1 and
+ * also adding L into Xl.
+ * compute 1+x as high, low parts
+ */
+        movaps    %xmm10, %xmm12
+        maxpd     %xmm3, %xmm12
+        orps      %xmm5, %xmm1
+        movaps    %xmm10, %xmm5
+        minpd     %xmm3, %xmm5
+        movmskpd  %xmm1, %edx
+
+/* Now multiplex to the case X = 2^-30 * input, Xl = dL = 0 in the "big" case. */
+        movups    14464+__svml_dacosh_data_internal(%rip), %xmm0
+
+/*
+ * The following computation can go wrong for very large X, e.g.
+ * the X^2 - 1 = U * V can overflow. But for large X we have
+ * acosh(X) / log(2 X) - 1 =~= 1/(4 * X^2), so for X >= 2^30
+ * we can just later stick X back into the log and tweak up the exponent.
+ * Actually we scale X by 2^-30 and tweak the exponent up by 31,
+ * to stay in the safe range for the later log computation.
+ * Compute a flag now telling us when to do this.
+ */
+        movaps    %xmm7, %xmm6
+        andps     12864+__svml_dacosh_data_internal(%rip), %xmm3
+        movaps    %xmm12, %xmm1
+        mulpd     %xmm7, %xmm0
+        cmpltpd   12928+__svml_dacosh_data_internal(%rip), %xmm3
+        cmpltpd   13568+__svml_dacosh_data_internal(%rip), %xmm6
+        addpd     %xmm5, %xmm1
+        orps      12992+__svml_dacosh_data_internal(%rip), %xmm3
+        movaps    %xmm6, %xmm4
+        andps     %xmm3, %xmm1
+        andnps    %xmm0, %xmm4
+        subpd     %xmm1, %xmm12
+        andps     %xmm6, %xmm1
+        lea       -4218816+__svml_dacosh_data_internal(%rip), %r8
+
+/*
+ * Now resume the main code.
+ * preserve mantissa, set input exponent to 2^(-10)
+ */
+        movups    12480+__svml_dacosh_data_internal(%rip), %xmm2
+        orps      %xmm1, %xmm4
+        andps     %xmm4, %xmm2
+
+/* exponent bits */
+        movaps    %xmm4, %xmm1
+        orps      12544+__svml_dacosh_data_internal(%rip), %xmm2
+        psrlq     $20, %xmm1
+
+/* reciprocal approximation good to at least 11 bits */
+        cvtpd2ps  %xmm2, %xmm3
+        addpd     %xmm12, %xmm5
+        movlhps   %xmm3, %xmm3
+        andps     %xmm6, %xmm5
+        rcpps     %xmm3, %xmm0
+        cvtps2pd  %xmm0, %xmm3
+
+/* round reciprocal to nearest integer, will have 1+9 mantissa bits */
+        movups    .FLT_24(%rip), %xmm0
+        addpd     %xmm0, %xmm3
+        subpd     %xmm0, %xmm3
+
+/* exponent of X needed to scale Xl */
+        movdqu    13376+__svml_dacosh_data_internal(%rip), %xmm12
+        movaps    %xmm6, %xmm0
+
+/* 2^ (-10-exp(X) ) */
+        movdqu    13440+__svml_dacosh_data_internal(%rip), %xmm2
+        pand      %xmm4, %xmm12
+        psubq     %xmm12, %xmm2
+
+/* scale DblRcp */
+        mulpd     %xmm3, %xmm2
+
+/* argument reduction */
+        mulpd     %xmm2, %xmm4
+        mulpd     %xmm2, %xmm5
+        subpd     %xmm10, %xmm4
+        pshufd    $221, %xmm1, %xmm12
+
+/* biased exponent in DP format */
+        cvtdq2pd  %xmm12, %xmm12
+
+/* Add 31 to the exponent in the "large" case to get log(2 * input) */
+        movups    14144+__svml_dacosh_data_internal(%rip), %xmm1
+        addpd     %xmm12, %xmm1
+        andps     %xmm6, %xmm12
+
+/*
+ * prepare table index
+ * table lookup
+ */
+        movaps    %xmm3, %xmm6
+        psrlq     $40, %xmm6
+        andnps    %xmm1, %xmm0
+        movd      %xmm6, %eax
+        orps      %xmm12, %xmm0
+        pshufd    $2, %xmm6, %xmm6
+
+/* exponent*log(2.0) */
+        movups    13184+__svml_dacosh_data_internal(%rip), %xmm12
+        movd      %xmm6, %ecx
+        movaps    %xmm4, %xmm6
+        addpd     %xmm5, %xmm6
+        cmpltpd   %xmm3, %xmm12
+        movaps    %xmm6, %xmm2
+        movaps    %xmm6, %xmm10
+        subpd     %xmm4, %xmm2
+        mulpd     %xmm6, %xmm10
+        subpd     %xmm2, %xmm5
+
+/* polynomial */
+        movups    12416+__svml_dacosh_data_internal(%rip), %xmm4
+        mulpd     %xmm6, %xmm4
+        movups    12448+__svml_dacosh_data_internal(%rip), %xmm3
+        addpd     12432+__svml_dacosh_data_internal(%rip), %xmm4
+        mulpd     %xmm6, %xmm3
+        mulpd     %xmm10, %xmm4
+        addpd     12464+__svml_dacosh_data_internal(%rip), %xmm3
+        addpd     %xmm4, %xmm3
+
+/*
+ * reconstruction
+ * VQFMA( D, R, P, R2, R );
+ */
+        mulpd     %xmm3, %xmm10
+        addpd     %xmm10, %xmm5
+        andps     13248+__svml_dacosh_data_internal(%rip), %xmm12
+        orps      13312+__svml_dacosh_data_internal(%rip), %xmm12
+        subpd     %xmm12, %xmm0
+        addpd     %xmm5, %xmm6
+        mulpd     13504+__svml_dacosh_data_internal(%rip), %xmm0
+        movslq    %eax, %rax
+        movslq    %ecx, %rcx
+        movsd     (%r8,%rax), %xmm1
+        movhpd    (%r8,%rcx), %xmm1
+        addpd     %xmm6, %xmm1
+        addpd     %xmm1, %xmm0
+        testl     %edx, %edx
+        jne       .LBL_1_3
+
+.LBL_1_2:
+        movups    160(%rsp), %xmm10
+        cfi_restore(27)
+        movups    144(%rsp), %xmm12
+        cfi_restore(29)
+        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, 0x1d, 0x0e, 0x38, 0x1c, 0x0d, 0xc0, 0xff, 0xff, 0xff, 0x1a, 0x0d, 0x90, 0xff, 0xff, 0xff, 0x22
+
+.LBL_1_3:
+        movups    %xmm7, 128(%rsp)
+        movups    %xmm0, 192(%rsp)
+        xorl      %eax, %eax
+        movups    %xmm8, 80(%rsp)
+        movups    %xmm9, 64(%rsp)
+        movups    %xmm11, 48(%rsp)
+        movups    %xmm13, 32(%rsp)
+        movups    %xmm14, 16(%rsp)
+        movups    %xmm15, (%rsp)
+        movq      %rsi, 104(%rsp)
+        movq      %rdi, 96(%rsp)
+        movq      %r12, 120(%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
+        .cfi_escape 0x10, 0x19, 0x0e, 0x38, 0x1c, 0x0d, 0xc0, 0xff, 0xff, 0xff, 0x1a, 0x0d, 0x50, 0xff, 0xff, 0xff, 0x22
+        .cfi_escape 0x10, 0x1a, 0x0e, 0x38, 0x1c, 0x0d, 0xc0, 0xff, 0xff, 0xff, 0x1a, 0x0d, 0x40, 0xff, 0xff, 0xff, 0x22
+        .cfi_escape 0x10, 0x1c, 0x0e, 0x38, 0x1c, 0x0d, 0xc0, 0xff, 0xff, 0xff, 0x1a, 0x0d, 0x30, 0xff, 0xff, 0xff, 0x22
+        .cfi_escape 0x10, 0x1e, 0x0e, 0x38, 0x1c, 0x0d, 0xc0, 0xff, 0xff, 0xff, 0x1a, 0x0d, 0x20, 0xff, 0xff, 0xff, 0x22
+        .cfi_escape 0x10, 0x1f, 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, 112(%rsp)
+        .cfi_escape 0x10, 0x0d, 0x0e, 0x38, 0x1c, 0x0d, 0xc0, 0xff, 0xff, 0xff, 0x1a, 0x0d, 0x70, 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    80(%rsp), %xmm8
+        cfi_restore(25)
+        movups    64(%rsp), %xmm9
+        cfi_restore(26)
+        movups    48(%rsp), %xmm11
+        cfi_restore(28)
+        movups    32(%rsp), %xmm13
+        cfi_restore(30)
+        movups    16(%rsp), %xmm14
+        cfi_restore(31)
+        movups    (%rsp), %xmm15
+        cfi_restore(32)
+        movq      104(%rsp), %rsi
+        cfi_restore(4)
+        movq      96(%rsp), %rdi
+        cfi_restore(5)
+        movq      120(%rsp), %r12
+        cfi_restore(12)
+        movq      112(%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, 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, 0x19, 0x0e, 0x38, 0x1c, 0x0d, 0xc0, 0xff, 0xff, 0xff, 0x1a, 0x0d, 0x50, 0xff, 0xff, 0xff, 0x22
+        .cfi_escape 0x10, 0x1a, 0x0e, 0x38, 0x1c, 0x0d, 0xc0, 0xff, 0xff, 0xff, 0x1a, 0x0d, 0x40, 0xff, 0xff, 0xff, 0x22
+        .cfi_escape 0x10, 0x1c, 0x0e, 0x38, 0x1c, 0x0d, 0xc0, 0xff, 0xff, 0xff, 0x1a, 0x0d, 0x30, 0xff, 0xff, 0xff, 0x22
+        .cfi_escape 0x10, 0x1e, 0x0e, 0x38, 0x1c, 0x0d, 0xc0, 0xff, 0xff, 0xff, 0x1a, 0x0d, 0x20, 0xff, 0xff, 0xff, 0x22
+        .cfi_escape 0x10, 0x1f, 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,8), %rdi
+        lea       192(%rsp,%r12,8), %rsi
+        call      __svml_dacosh_cout_rare_internal
+        jmp       .LBL_1_8
+
+END(_ZGVbN2v_acosh_sse4)
+
+        .align    16,0x90
+
+__svml_dacosh_cout_rare_internal:
+
+        cfi_startproc
+
+        movzwl    6(%rdi), %eax
+        andl      $32752, %eax
+        movsd     (%rdi), %xmm0
+        cmpl      $32752, %eax
+        je        .LBL_2_9
+
+.LBL_2_2:
+        movsd     %xmm0, -8(%rsp)
+        cmpl      $0, -8(%rsp)
+        jne       .LBL_2_8
+        cmpl      $1072693248, -4(%rsp)
+        je        .LBL_2_7
+        cmpl      $2146435072, -4(%rsp)
+        jne       .LBL_2_8
+        movsd     %xmm0, (%rsi)
+        xorl      %eax, %eax
+        ret
+
+.LBL_2_7:
+        movq      8+__dacosh_la_CoutTab(%rip), %rax
+        movq      %rax, (%rsi)
+        xorl      %eax, %eax
+        ret
+
+.LBL_2_8:
+        movsd     16+__dacosh_la_CoutTab(%rip), %xmm0
+        movl      $1, %eax
+        mulsd     8+__dacosh_la_CoutTab(%rip), %xmm0
+        movsd     %xmm0, (%rsi)
+        ret
+
+.LBL_2_9:
+        testl     $1048575, 4(%rdi)
+        jne       .LBL_2_12
+        cmpl      $0, (%rdi)
+        je        .LBL_2_2
+
+.LBL_2_12:
+        mulsd     %xmm0, %xmm0
+        xorl      %eax, %eax
+        movsd     %xmm0, (%rsi)
+        ret
+
+        cfi_endproc
+
+        .type	__svml_dacosh_cout_rare_internal,@function
+        .size	__svml_dacosh_cout_rare_internal,.-__svml_dacosh_cout_rare_internal
+
+        .section .rodata, "a"
+        .align 64
+
+__svml_dacosh_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	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	4294967290
+        .long	1071120383
+        .long	4294967290
+        .long	1071120383
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .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	4294967290
+        .long	1070858239
+        .long	4294967290
+        .long	1070858239
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .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	333042728
+        .long	1070694400
+        .long	333042728
+        .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	635310127
+        .long	1070563328
+        .long	635310127
+        .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	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	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_dacosh_data_internal,@object
+        .size	__svml_dacosh_data_internal,14720
+        .align 16
+
+.FLT_24:
+        .long	0x00000000,0x43380000,0x00000000,0x43380000
+        .type	.FLT_24,@object
+        .size	.FLT_24,16
+        .align 8
+
+__dacosh_la_CoutTab:
+        .long	0
+        .long	1072693248
+        .long	0
+        .long	0
+        .long	0
+        .long	2146435072
+        .long	0
+        .long	4293918720
+        .type	__dacosh_la_CoutTab,@object
+        .size	__dacosh_la_CoutTab,32
diff --git a/sysdeps/x86_64/fpu/multiarch/svml_d_acosh4_core-sse.S b/sysdeps/x86_64/fpu/multiarch/svml_d_acosh4_core-sse.S
new file mode 100644
index 0000000000..cc524d4813
--- /dev/null
+++ b/sysdeps/x86_64/fpu/multiarch/svml_d_acosh4_core-sse.S
@@ -0,0 +1,20 @@ 
+/* SSE version of vectorized acosh, 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_acosh _ZGVdN4v_acosh_sse_wrapper
+#include "../svml_d_acosh4_core.S"
diff --git a/sysdeps/x86_64/fpu/multiarch/svml_d_acosh4_core.c b/sysdeps/x86_64/fpu/multiarch/svml_d_acosh4_core.c
new file mode 100644
index 0000000000..bb07c44f4b
--- /dev/null
+++ b/sysdeps/x86_64/fpu/multiarch/svml_d_acosh4_core.c
@@ -0,0 +1,27 @@ 
+/* Multiple versions of vectorized acosh, 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_acosh
+#include "ifunc-mathvec-avx2.h"
+
+libc_ifunc_redirected (REDIRECT_NAME, SYMBOL_NAME, IFUNC_SELECTOR ());
+
+#ifdef SHARED
+__hidden_ver1 (_ZGVdN4v_acosh, __GI__ZGVdN4v_acosh, __redirect__ZGVdN4v_acosh)
+  __attribute__ ((visibility ("hidden")));
+#endif
diff --git a/sysdeps/x86_64/fpu/multiarch/svml_d_acosh4_core_avx2.S b/sysdeps/x86_64/fpu/multiarch/svml_d_acosh4_core_avx2.S
new file mode 100644
index 0000000000..9ec6fa712d
--- /dev/null
+++ b/sysdeps/x86_64/fpu/multiarch/svml_d_acosh4_core_avx2.S
@@ -0,0 +1,5071 @@ 
+/* Function acosh 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 acosh(x) as log(x + sqrt(x*x - 1))
+ *
+ *   Special cases:
+ *
+ *   acosh(NaN)  = quiet NaN, and raise invalid exception
+ *   acosh(-INF) = NaN
+ *   acosh(+INF) = +INF
+ *   acosh(x)    = NaN if x < 1
+ *   acosh(1)    = +0
+ *
+ */
+
+#include <sysdep.h>
+
+        .text
+ENTRY(_ZGVdN4v_acosh_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_dacosh_data_internal(%rip), %rax
+        vmovups   %ymm8, 224(%rsp)
+        .cfi_escape 0x10, 0xdb, 0x00, 0x0e, 0x38, 0x1c, 0x0d, 0xc0, 0xff, 0xff, 0xff, 0x1a, 0x0d, 0x60, 0xff, 0xff, 0xff, 0x22
+
+/* Load the constant 1 and possibly other stuff */
+        vmovupd   12864+__svml_dacosh_data_internal(%rip), %ymm8
+        vmovups   %ymm9, 192(%rsp)
+        vmovups   %ymm12, 160(%rsp)
+        vmovups   %ymm10, 32(%rsp)
+        vmovups   %ymm11, 96(%rsp)
+        vmovups   %ymm14, 288(%rsp)
+        vmovups   %ymm13, 256(%rsp)
+        vmovups   %ymm15, 320(%rsp)
+        .cfi_escape 0x10, 0xdc, 0x00, 0x0e, 0x38, 0x1c, 0x0d, 0xc0, 0xff, 0xff, 0xff, 0x1a, 0x0d, 0x40, 0xff, 0xff, 0xff, 0x22
+        .cfi_escape 0x10, 0xdd, 0x00, 0x0e, 0x38, 0x1c, 0x0d, 0xc0, 0xff, 0xff, 0xff, 0x1a, 0x0d, 0xa0, 0xfe, 0xff, 0xff, 0x22
+        .cfi_escape 0x10, 0xde, 0x00, 0x0e, 0x38, 0x1c, 0x0d, 0xc0, 0xff, 0xff, 0xff, 0x1a, 0x0d, 0xe0, 0xfe, 0xff, 0xff, 0x22
+        .cfi_escape 0x10, 0xdf, 0x00, 0x0e, 0x38, 0x1c, 0x0d, 0xc0, 0xff, 0xff, 0xff, 0x1a, 0x0d, 0x20, 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, %ymm9
+        vmovapd   %ymm8, %ymm1
+        vfmsub231pd %ymm9, %ymm9, %ymm1
+
+/*
+ * Now       1 / (1 + d)
+ * = 1 / (1 + (sqrt(1 - e) - 1))
+ * = 1 / sqrt(1 - e)
+ * = 1 + 1/2 * e + 3/8 * e^2 + 5/16 * e^3 + 35/128 * e^4 +
+ * 63/256 * e^5 + 231/1024 * e^6 + ....
+ * So compute the first five nonconstant terms of that, so that
+ * we have a relative correction (1 + Corr) to apply to S etc.
+ * C1 = 1/2
+ * C2 = 3/8
+ * C3 = 5/16
+ * C4 = 35/128
+ * C5 = 63/256
+ */
+        vmovupd   13952+__svml_dacosh_data_internal(%rip), %ymm0
+
+/*
+ * Check that 1 < X < +inf; otherwise go to the callout function.
+ * We need the callout for X = 1 to avoid division by zero below.
+ * This test ensures that callout handles NaN and either infinity.
+ */
+        vcmpnle_uqpd 14016+__svml_dacosh_data_internal(%rip), %ymm9, %ymm5
+        vcmpngt_uqpd %ymm8, %ymm9, %ymm4
+
+/* dU is needed later on */
+        vsubpd    %ymm8, %ymm9, %ymm6
+
+/*
+ * The following computation can go wrong for very large X, e.g.
+ * the X^2 - 1 = U * V can overflow. But for large X we have
+ * acosh(X) / log(2 X) - 1 =~= 1/(4 * X^2), so for X >= 2^30
+ * we can just later stick X back into the log and tweak up the exponent.
+ * Actually we scale X by 2^-30 and tweak the exponent up by 31,
+ * to stay in the safe range for the later log computation.
+ * Compute a flag now telling us when to do this.
+ */
+        vcmplt_oqpd 13632+__svml_dacosh_data_internal(%rip), %ymm9, %ymm7
+
+/*
+ * do the same thing but with NR iteration
+ * Finally, express Y + W = U * V accurately where Y has <= 29 bits
+ */
+        vandpd    14400+__svml_dacosh_data_internal(%rip), %ymm1, %ymm12
+
+/*
+ * Compute R = 1/sqrt(Y + W) * (1 + d)
+ * Force R to <= 12 significant bits in case it isn't already
+ * This means that R * Y and R^2 * Y are exactly representable.
+ */
+        vcvtpd2ps %ymm12, %xmm3
+        vsubpd    %ymm12, %ymm1, %ymm13
+        vrsqrtps  %xmm3, %xmm10
+        vcvtps2pd %xmm10, %ymm11
+
+/* Now multiplex to the case X = 2^-30 * input, Xl = dL = 0 in the "big" case. */
+        vmulpd    14528+__svml_dacosh_data_internal(%rip), %ymm9, %ymm10
+        vandpd    14272+__svml_dacosh_data_internal(%rip), %ymm11, %ymm14
+        vorpd     %ymm4, %ymm5, %ymm2
+
+/*
+ * Compute S = (Y/sqrt(Y + W)) * (1 + d)
+ * and T = (W/sqrt(Y + W)) * (1 + d)
+ * so that S + T = sqrt(Y + W) * (1 + d)
+ * S is exact, and the rounding error in T is OK.
+ */
+        vmulpd    %ymm14, %ymm12, %ymm5
+        vmulpd    %ymm13, %ymm14, %ymm4
+
+/*
+ * Compute e = -(2 * d + d^2)
+ * The first FMR is exact, and the rounding error in the other is acceptable
+ * since d and e are ~ 2^-12
+ */
+        vmovapd   %ymm8, %ymm15
+        vfnmadd231pd %ymm5, %ymm14, %ymm15
+
+/*
+ * For low-accuracy versions, the computation can be done
+ * just as U + ((S + T) + (S + T) * Corr)
+ */
+        vaddpd    %ymm4, %ymm5, %ymm1
+        vfnmadd231pd %ymm4, %ymm14, %ymm15
+        vfmadd213pd 13888+__svml_dacosh_data_internal(%rip), %ymm15, %ymm0
+        vfmadd213pd 13824+__svml_dacosh_data_internal(%rip), %ymm15, %ymm0
+        vfmadd213pd 13760+__svml_dacosh_data_internal(%rip), %ymm15, %ymm0
+        vfmadd213pd 13696+__svml_dacosh_data_internal(%rip), %ymm15, %ymm0
+        vmovmskpd %ymm2, %edx
+        vmulpd    %ymm0, %ymm15, %ymm2
+        vfmadd213pd %ymm1, %ymm2, %ymm1
+        vaddpd    %ymm1, %ymm6, %ymm6
+
+/*
+ * Now we feed into the log1p code, using H in place of _VARG1 and
+ * also adding L into Xl.
+ * compute 1+x as high, low parts
+ */
+        vmaxpd    %ymm6, %ymm8, %ymm1
+        vminpd    %ymm6, %ymm8, %ymm3
+        vandpd    12928+__svml_dacosh_data_internal(%rip), %ymm6, %ymm0
+        vcmplt_oqpd 12992+__svml_dacosh_data_internal(%rip), %ymm0, %ymm5
+        vaddpd    %ymm3, %ymm1, %ymm4
+        vorpd     13056+__svml_dacosh_data_internal(%rip), %ymm5, %ymm2
+        vandpd    %ymm2, %ymm4, %ymm11
+        vblendvpd %ymm7, %ymm11, %ymm10, %ymm5
+        vsubpd    %ymm11, %ymm1, %ymm6
+
+/* 2^ (-10-exp(X) ) */
+        vmovupd   13504+__svml_dacosh_data_internal(%rip), %ymm2
+        vaddpd    %ymm6, %ymm3, %ymm12
+
+/* exponent bits */
+        vpsrlq    $20, %ymm5, %ymm3
+
+/*
+ * Now resume the main code.
+ * preserve mantissa, set input exponent to 2^(-10)
+ */
+        vandpd    12544+__svml_dacosh_data_internal(%rip), %ymm5, %ymm13
+        vorpd     12608+__svml_dacosh_data_internal(%rip), %ymm13, %ymm14
+
+/* reciprocal approximation good to at least 11 bits */
+        vcvtpd2ps %ymm14, %xmm15
+        vrcpps    %xmm15, %xmm0
+        vandpd    %ymm7, %ymm12, %ymm4
+        vcvtps2pd %xmm0, %ymm10
+
+/* exponent of X needed to scale Xl */
+        vandps    13440+__svml_dacosh_data_internal(%rip), %ymm5, %ymm1
+        vpsubq    %ymm1, %ymm2, %ymm11
+        vextractf128 $1, %ymm3, %xmm6
+        vshufps   $221, %xmm6, %xmm3, %xmm12
+
+/* biased exponent in DP format */
+        vcvtdq2pd %xmm12, %ymm14
+
+/* round reciprocal to nearest integer, will have 1+9 mantissa bits */
+        vroundpd  $0, %ymm10, %ymm3
+
+/* Add 31 to the exponent in the "large" case to get log(2 * input) */
+        vaddpd    14208+__svml_dacosh_data_internal(%rip), %ymm14, %ymm13
+
+/* scale DblRcp */
+        vmulpd    %ymm11, %ymm3, %ymm2
+        vblendvpd %ymm7, %ymm14, %ymm13, %ymm1
+
+/* exponent*log(2.0) */
+        vmovupd   13248+__svml_dacosh_data_internal(%rip), %ymm13
+
+/* argument reduction */
+        vfmsub213pd %ymm8, %ymm2, %ymm5
+        vmulpd    %ymm2, %ymm4, %ymm2
+        vmovupd   12480+__svml_dacosh_data_internal(%rip), %ymm4
+
+/*
+ * prepare table index
+ * table lookup
+ */
+        vpsrlq    $40, %ymm3, %ymm7
+        vcmplt_oqpd %ymm3, %ymm13, %ymm3
+        vandpd    13312+__svml_dacosh_data_internal(%rip), %ymm3, %ymm14
+        vorpd     13376+__svml_dacosh_data_internal(%rip), %ymm14, %ymm15
+        vsubpd    %ymm15, %ymm1, %ymm1
+        vmulpd    13568+__svml_dacosh_data_internal(%rip), %ymm1, %ymm3
+        vaddpd    %ymm2, %ymm5, %ymm1
+        vsubpd    %ymm5, %ymm1, %ymm5
+        vfmadd213pd 12512+__svml_dacosh_data_internal(%rip), %ymm1, %ymm4
+        vmulpd    %ymm1, %ymm1, %ymm8
+        vsubpd    %ymm5, %ymm2, %ymm2
+
+/* polynomial */
+        vmovupd   12416+__svml_dacosh_data_internal(%rip), %ymm5
+        vfmadd213pd 12448+__svml_dacosh_data_internal(%rip), %ymm1, %ymm5
+        vfmadd213pd %ymm4, %ymm8, %ymm5
+
+/*
+ * reconstruction
+ * VQFMA( D, R, P, R2, R );
+ */
+        vfmadd213pd %ymm2, %ymm8, %ymm5
+        vaddpd    %ymm5, %ymm1, %ymm4
+        vextractf128 $1, %ymm7, %xmm10
+        vmovd     %xmm7, %ecx
+        vmovd     %xmm10, %r9d
+        movslq    %ecx, %rcx
+        vpextrd   $2, %xmm7, %r8d
+        movslq    %r9d, %r9
+        vpextrd   $2, %xmm10, %r10d
+        movslq    %r8d, %r8
+        movslq    %r10d, %r10
+        vmovsd    (%rax,%rcx), %xmm0
+        vmovsd    (%rax,%r9), %xmm11
+        vmovhpd   (%rax,%r8), %xmm0, %xmm6
+        vmovhpd   (%rax,%r10), %xmm11, %xmm12
+        vinsertf128 $1, %xmm12, %ymm6, %ymm0
+        vaddpd    %ymm4, %ymm0, %ymm0
+        vaddpd    %ymm0, %ymm3, %ymm0
+        testl     %edx, %edx
+        jne       .LBL_1_3
+
+.LBL_1_2:
+        vmovups   224(%rsp), %ymm8
+        cfi_restore(91)
+        vmovups   192(%rsp), %ymm9
+        cfi_restore(92)
+        vmovups   32(%rsp), %ymm10
+        cfi_restore(93)
+        vmovups   96(%rsp), %ymm11
+        cfi_restore(94)
+        vmovups   160(%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, 0x60, 0xff, 0xff, 0xff, 0x22
+        .cfi_escape 0x10, 0xdc, 0x00, 0x0e, 0x38, 0x1c, 0x0d, 0xc0, 0xff, 0xff, 0xff, 0x1a, 0x0d, 0x40, 0xff, 0xff, 0xff, 0x22
+        .cfi_escape 0x10, 0xdd, 0x00, 0x0e, 0x38, 0x1c, 0x0d, 0xc0, 0xff, 0xff, 0xff, 0x1a, 0x0d, 0xa0, 0xfe, 0xff, 0xff, 0x22
+        .cfi_escape 0x10, 0xde, 0x00, 0x0e, 0x38, 0x1c, 0x0d, 0xc0, 0xff, 0xff, 0xff, 0x1a, 0x0d, 0xe0, 0xfe, 0xff, 0xff, 0x22
+        .cfi_escape 0x10, 0xdf, 0x00, 0x0e, 0x38, 0x1c, 0x0d, 0xc0, 0xff, 0xff, 0xff, 0x1a, 0x0d, 0x20, 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   %ymm9, 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_dacosh_cout_rare_internal
+        jmp       .LBL_1_8
+
+END(_ZGVdN4v_acosh_avx2)
+
+        .align    16,0x90
+
+__svml_dacosh_cout_rare_internal:
+
+        cfi_startproc
+
+        movzwl    6(%rdi), %eax
+        andl      $32752, %eax
+        movsd     (%rdi), %xmm0
+        cmpl      $32752, %eax
+        je        .LBL_2_9
+
+.LBL_2_2:
+        movsd     %xmm0, -8(%rsp)
+        cmpl      $0, -8(%rsp)
+        jne       .LBL_2_8
+        cmpl      $1072693248, -4(%rsp)
+        je        .LBL_2_7
+        cmpl      $2146435072, -4(%rsp)
+        jne       .LBL_2_8
+        movsd     %xmm0, (%rsi)
+        xorl      %eax, %eax
+        ret
+
+.LBL_2_7:
+        movq      8+__dacosh_la_CoutTab(%rip), %rax
+        movq      %rax, (%rsi)
+        xorl      %eax, %eax
+        ret
+
+.LBL_2_8:
+        movsd     16+__dacosh_la_CoutTab(%rip), %xmm0
+        movl      $1, %eax
+        mulsd     8+__dacosh_la_CoutTab(%rip), %xmm0
+        movsd     %xmm0, (%rsi)
+        ret
+
+.LBL_2_9:
+        testl     $1048575, 4(%rdi)
+        jne       .LBL_2_12
+        cmpl      $0, (%rdi)
+        je        .LBL_2_2
+
+.LBL_2_12:
+        mulsd     %xmm0, %xmm0
+        xorl      %eax, %eax
+        movsd     %xmm0, (%rsi)
+        ret
+
+        cfi_endproc
+
+        .type	__svml_dacosh_cout_rare_internal,@function
+        .size	__svml_dacosh_cout_rare_internal,.-__svml_dacosh_cout_rare_internal
+
+        .section .rodata, "a"
+        .align 64
+
+__svml_dacosh_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	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	4294967290
+        .long	1071120383
+        .long	4294967290
+        .long	1071120383
+        .long	4294967290
+        .long	1071120383
+        .long	4294967290
+        .long	1071120383
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .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	4294967290
+        .long	1070858239
+        .long	4294967290
+        .long	1070858239
+        .long	4294967290
+        .long	1070858239
+        .long	4294967290
+        .long	1070858239
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .byte	0
+        .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	333042728
+        .long	1070694400
+        .long	333042728
+        .long	1070694400
+        .long	333042728
+        .long	1070694400
+        .long	333042728
+        .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	635310127
+        .long	1070563328
+        .long	635310127
+        .long	1070563328
+        .long	635310127
+        .long	1070563328
+        .long	635310127
+        .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	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	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_dacosh_data_internal,@object
+        .size	__svml_dacosh_data_internal,14784
+        .align 8
+
+__dacosh_la_CoutTab:
+        .long	0
+        .long	1072693248
+        .long	0
+        .long	0
+        .long	0
+        .long	2146435072
+        .long	0
+        .long	4293918720
+        .type	__dacosh_la_CoutTab,@object
+        .size	__dacosh_la_CoutTab,32
diff --git a/sysdeps/x86_64/fpu/multiarch/svml_d_acosh8_core-avx2.S b/sysdeps/x86_64/fpu/multiarch/svml_d_acosh8_core-avx2.S
new file mode 100644
index 0000000000..48879787c1
--- /dev/null
+++ b/sysdeps/x86_64/fpu/multiarch/svml_d_acosh8_core-avx2.S
@@ -0,0 +1,20 @@ 
+/* AVX2 version of vectorized acosh, 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_acosh _ZGVeN8v_acosh_avx2_wrapper
+#include "../svml_d_acosh8_core.S"
diff --git a/sysdeps/x86_64/fpu/multiarch/svml_d_acosh8_core.c b/sysdeps/x86_64/fpu/multiarch/svml_d_acosh8_core.c
new file mode 100644
index 0000000000..4322a5f707
--- /dev/null
+++ b/sysdeps/x86_64/fpu/multiarch/svml_d_acosh8_core.c
@@ -0,0 +1,27 @@ 
+/* Multiple versions of vectorized acosh, 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_acosh
+#include "ifunc-mathvec-avx512-skx.h"
+
+libc_ifunc_redirected (REDIRECT_NAME, SYMBOL_NAME, IFUNC_SELECTOR ());
+
+#ifdef SHARED
+__hidden_ver1 (_ZGVeN8v_acosh, __GI__ZGVeN8v_acosh, __redirect__ZGVeN8v_acosh)
+  __attribute__ ((visibility ("hidden")));
+#endif
diff --git a/sysdeps/x86_64/fpu/multiarch/svml_d_acosh8_core_avx512.S b/sysdeps/x86_64/fpu/multiarch/svml_d_acosh8_core_avx512.S
new file mode 100644
index 0000000000..381eeb2006
--- /dev/null
+++ b/sysdeps/x86_64/fpu/multiarch/svml_d_acosh8_core_avx512.S
@@ -0,0 +1,864 @@ 
+/* Function acosh 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 acosh(x) as log(x + sqrt(x*x - 1))
+ *   using RSQRT instructions for starting the
+ *   square root approximation, and small table lookups for log
+ *   that map to AVX-512 permute instructions
+ *
+ *   Special cases:
+ *
+ *   acosh(NaN)  = quiet NaN, and raise invalid exception
+ *   acosh(-INF) = NaN
+ *   acosh(+INF) = +INF
+ *   acosh(x)    = NaN if x < 1
+ *   acosh(1)    = +0
+ *
+ */
+
+#include <sysdep.h>
+
+        .text
+ENTRY(_ZGVeN8v_acosh_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_dacosh_data_internal_avx512(%rip), %zmm5
+
+/* polynomial computation for small inputs */
+        vmovups   576+__svml_dacosh_data_internal_avx512(%rip), %zmm13
+        vmovups   640+__svml_dacosh_data_internal_avx512(%rip), %zmm14
+
+/*
+ * sqrt(1+x^2) ~ Sh + Sl + Sh*Eh*poly_s
+ * poly_s = c1+c2*Eh+c3*Eh^2
+ */
+        vmovups   704+__svml_dacosh_data_internal_avx512(%rip), %zmm1
+        vmovups   832+__svml_dacosh_data_internal_avx512(%rip), %zmm2
+        vmovups   896+__svml_dacosh_data_internal_avx512(%rip), %zmm6
+
+/* very large inputs ? */
+        vmovups   448+__svml_dacosh_data_internal_avx512(%rip), %zmm15
+
+/* out of range inputs? */
+        vmovups   512+__svml_dacosh_data_internal_avx512(%rip), %zmm3
+
+/* not a very small input ? */
+        vmovups   384+__svml_dacosh_data_internal_avx512(%rip), %zmm10
+        vmovaps   %zmm0, %zmm12
+
+/* x^2 - 1 */
+        vmovaps   %zmm5, %zmm11
+        vfmsub231pd {rn-sae}, %zmm12, %zmm12, %zmm11
+        vcmppd    $21, {sae}, %zmm15, %zmm12, %k2
+        vcmppd    $22, {sae}, %zmm3, %zmm12, %k0
+        vcmppd    $18, {sae}, %zmm5, %zmm12, %k1
+        vrsqrt14pd %zmm11, %zmm4
+        vcmppd    $21, {sae}, %zmm10, %zmm11, %k3
+        vfmadd231pd {rn-sae}, %zmm11, %zmm13, %zmm14
+        vmovups   768+__svml_dacosh_data_internal_avx512(%rip), %zmm13
+
+/* Sh ~sqrt(-1+x^2) */
+        vmulpd    {rn-sae}, %zmm4, %zmm11, %zmm9
+        vmulpd    {rn-sae}, %zmm11, %zmm14, %zmm8
+
+/* Sh+x */
+        vaddpd    {rn-sae}, %zmm12, %zmm9, %zmm15
+        kmovw     %k0, %edx
+        kmovw     %k1, %eax
+
+/* Shh */
+        vsubpd    {rn-sae}, %zmm12, %zmm15, %zmm14
+
+/* (Yh*R0)_low */
+        vmovaps   %zmm11, %zmm0
+        orl       %eax, %edx
+
+/* rel. error term: Eh=1-Sh*R0 */
+        vmovaps   %zmm5, %zmm7
+        vfmsub213pd {rn-sae}, %zmm9, %zmm4, %zmm0
+        vfnmadd231pd {rn-sae}, %zmm9, %zmm4, %zmm7
+
+/* rel. error term: Eh=(1-Sh*R0)-Sl*R0 */
+        vfnmadd231pd {rn-sae}, %zmm0, %zmm4, %zmm7
+
+/* Shl */
+        vsubpd    {rn-sae}, %zmm14, %zmm9, %zmm4
+        vmovups   1472+__svml_dacosh_data_internal_avx512(%rip), %zmm14
+        vfmadd231pd {rn-sae}, %zmm7, %zmm1, %zmm13
+        vfmadd213pd {rn-sae}, %zmm2, %zmm7, %zmm13
+        vfmadd213pd {rn-sae}, %zmm6, %zmm7, %zmm13
+
+/* Sh*Eh */
+        vmulpd    {rn-sae}, %zmm7, %zmm9, %zmm7
+
+/* Sl + Sh*Eh*poly_s */
+        vfmadd213pd {rn-sae}, %zmm0, %zmm13, %zmm7
+
+/* polynomials */
+        vmovups   1344+__svml_dacosh_data_internal_avx512(%rip), %zmm13
+
+/* polynomial computation for small inputs */
+        vaddpd    {rn-sae}, %zmm7, %zmm9, %zmm0
+
+/* Xin0+Sl+Sh*Eh*poly_s ~ x+sqrt(1+x^2) */
+        vaddpd    {rn-sae}, %zmm7, %zmm15, %zmm6
+        vfmadd231pd {rn-sae}, %zmm0, %zmm8, %zmm0
+
+/* fixup for very large inputs */
+        vmovups   1216+__svml_dacosh_data_internal_avx512(%rip), %zmm8
+
+/* Sl_high */
+        vsubpd    {rn-sae}, %zmm15, %zmm6, %zmm9
+        vmovups   1536+__svml_dacosh_data_internal_avx512(%rip), %zmm15
+        vmulpd    {rn-sae}, %zmm8, %zmm12, %zmm6{%k2}
+
+/* Sl_l */
+        vsubpd    {rn-sae}, %zmm9, %zmm7, %zmm3
+        vrcp14pd  %zmm6, %zmm1
+
+/* Xin_low */
+        vaddpd    {rn-sae}, %zmm4, %zmm3, %zmm7
+
+/* Table lookups */
+        vmovups   __svml_dacosh_data_internal_avx512(%rip), %zmm3
+
+/* round reciprocal to 1+4b mantissas */
+        vpaddq    1088+__svml_dacosh_data_internal_avx512(%rip), %zmm1, %zmm2
+
+/* fixup for very large inputs */
+        vxorpd    %zmm7, %zmm7, %zmm7{%k2}
+        vmovups   1408+__svml_dacosh_data_internal_avx512(%rip), %zmm1
+        vandpd    1152+__svml_dacosh_data_internal_avx512(%rip), %zmm2, %zmm8
+        vmovups   128+__svml_dacosh_data_internal_avx512(%rip), %zmm2
+
+/* Prepare table index */
+        vpsrlq    $48, %zmm8, %zmm9
+
+/* reduced argument for log(): (Rcp*Xin-1)+Rcp*Xin_low */
+        vfmsub231pd {rn-sae}, %zmm8, %zmm6, %zmm5
+
+/* exponents */
+        vgetexppd {sae}, %zmm8, %zmm4
+        vmovups   1280+__svml_dacosh_data_internal_avx512(%rip), %zmm6
+        vpermt2pd 64+__svml_dacosh_data_internal_avx512(%rip), %zmm9, %zmm3
+        vpermt2pd 192+__svml_dacosh_data_internal_avx512(%rip), %zmm9, %zmm2
+        vsubpd    {rn-sae}, %zmm6, %zmm4, %zmm4{%k2}
+        vfmadd231pd {rn-sae}, %zmm8, %zmm7, %zmm5
+        vmovups   1600+__svml_dacosh_data_internal_avx512(%rip), %zmm6
+        vmovups   1664+__svml_dacosh_data_internal_avx512(%rip), %zmm7
+
+/* -K*L2H + Th */
+        vmovups   1920+__svml_dacosh_data_internal_avx512(%rip), %zmm8
+
+/* -K*L2L + Tl */
+        vmovups   1984+__svml_dacosh_data_internal_avx512(%rip), %zmm9
+        vfmadd231pd {rn-sae}, %zmm5, %zmm13, %zmm1
+        vmovups   1792+__svml_dacosh_data_internal_avx512(%rip), %zmm13
+        vfnmadd231pd {rn-sae}, %zmm4, %zmm8, %zmm3
+        vfnmadd213pd {rn-sae}, %zmm2, %zmm9, %zmm4
+        vfmadd213pd {rn-sae}, %zmm14, %zmm5, %zmm1
+        vmovups   1728+__svml_dacosh_data_internal_avx512(%rip), %zmm2
+        vmovups   1856+__svml_dacosh_data_internal_avx512(%rip), %zmm14
+        vfmadd213pd {rn-sae}, %zmm15, %zmm5, %zmm1
+
+/* R^2 */
+        vmulpd    {rn-sae}, %zmm5, %zmm5, %zmm15
+        vfmadd213pd {rn-sae}, %zmm6, %zmm5, %zmm1
+        vfmadd213pd {rn-sae}, %zmm7, %zmm5, %zmm1
+        vfmadd213pd {rn-sae}, %zmm2, %zmm5, %zmm1
+        vfmadd213pd {rn-sae}, %zmm13, %zmm5, %zmm1
+        vfmadd213pd {rn-sae}, %zmm14, %zmm5, %zmm1
+
+/* Tl + R^2*Poly */
+        vfmadd213pd {rn-sae}, %zmm4, %zmm15, %zmm1
+
+/* R+Tl + R^2*Poly */
+        vaddpd    {rn-sae}, %zmm5, %zmm1, %zmm5
+        vaddpd    {rn-sae}, %zmm5, %zmm3, %zmm0{%k3}
+        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   %zmm12, 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_dacosh_cout_rare_internal
+        jmp       .LBL_1_8
+
+END(_ZGVeN8v_acosh_skx)
+
+        .align    16,0x90
+
+__svml_dacosh_cout_rare_internal:
+
+        cfi_startproc
+
+        movzwl    6(%rdi), %eax
+        andl      $32752, %eax
+        movsd     (%rdi), %xmm0
+        cmpl      $32752, %eax
+        je        .LBL_2_9
+
+.LBL_2_2:
+        movsd     %xmm0, -8(%rsp)
+        cmpl      $0, -8(%rsp)
+        jne       .LBL_2_8
+        cmpl      $1072693248, -4(%rsp)
+        je        .LBL_2_7
+        cmpl      $2146435072, -4(%rsp)
+        jne       .LBL_2_8
+        movsd     %xmm0, (%rsi)
+        xorl      %eax, %eax
+        ret
+
+.LBL_2_7:
+        movq      8+__dacosh_la_CoutTab(%rip), %rax
+        movq      %rax, (%rsi)
+        xorl      %eax, %eax
+        ret
+
+.LBL_2_8:
+        movsd     16+__dacosh_la_CoutTab(%rip), %xmm0
+        movl      $1, %eax
+        mulsd     8+__dacosh_la_CoutTab(%rip), %xmm0
+        movsd     %xmm0, (%rsi)
+        ret
+
+.LBL_2_9:
+        testl     $1048575, 4(%rdi)
+        jne       .LBL_2_12
+        cmpl      $0, (%rdi)
+        je        .LBL_2_2
+
+.LBL_2_12:
+        mulsd     %xmm0, %xmm0
+        xorl      %eax, %eax
+        movsd     %xmm0, (%rsi)
+        ret
+
+        cfi_endproc
+
+        .type	__svml_dacosh_cout_rare_internal,@function
+        .size	__svml_dacosh_cout_rare_internal,.-__svml_dacosh_cout_rare_internal
+
+        .section .rodata, "a"
+        .align 64
+
+__svml_dacosh_data_internal_avx512:
+        .long	0
+        .long	0
+        .long	3222405120
+        .long	3215919664
+        .long	1848311808
+        .long	3216910087
+        .long	1890025472
+        .long	3217424176
+        .long	3348791296
+        .long	3217854455
+        .long	2880159744
+        .long	3218171740
+        .long	3256631296
+        .long	3218366859
+        .long	4139499520
+        .long	3218553303
+        .long	3971973120
+        .long	3218731811
+        .long	3348791296
+        .long	3218903031
+        .long	1605304320
+        .long	3219067535
+        .long	3827638272
+        .long	3219177074
+        .long	1584414720
+        .long	3219253343
+        .long	860823552
+        .long	3219326935
+        .long	3896934400
+        .long	3219398031
+        .long	643547136
+        .long	3219466797
+        .long	0
+        .long	0
+        .long	3496399314
+        .long	1028893491
+        .long	720371772
+        .long	1026176044
+        .long	1944193543
+        .long	3175338952
+        .long	634920691
+        .long	3175752108
+        .long	1664625295
+        .long	1029304828
+        .long	192624563
+        .long	3177103997
+        .long	3796653051
+        .long	3176138396
+        .long	3062724207
+        .long	3176680434
+        .long	634920691
+        .long	3176800684
+        .long	1913570380
+        .long	3174806221
+        .long	825194088
+        .long	3176465773
+        .long	2335489660
+        .long	3172599741
+        .long	2497625109
+        .long	1029604288
+        .long	914782743
+        .long	1029350199
+        .long	3743595607
+        .long	3175525305
+        .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	1055916032
+        .long	0
+        .long	1055916032
+        .long	0
+        .long	1055916032
+        .long	0
+        .long	1055916032
+        .long	0
+        .long	1055916032
+        .long	0
+        .long	1055916032
+        .long	0
+        .long	1055916032
+        .long	0
+        .long	1055916032
+        .long	0
+        .long	1608515584
+        .long	0
+        .long	1608515584
+        .long	0
+        .long	1608515584
+        .long	0
+        .long	1608515584
+        .long	0
+        .long	1608515584
+        .long	0
+        .long	1608515584
+        .long	0
+        .long	1608515584
+        .long	0
+        .long	1608515584
+        .long	4294967295
+        .long	2146435071
+        .long	4294967295
+        .long	2146435071
+        .long	4294967295
+        .long	2146435071
+        .long	4294967295
+        .long	2146435071
+        .long	4294967295
+        .long	2146435071
+        .long	4294967295
+        .long	2146435071
+        .long	4294967295
+        .long	2146435071
+        .long	4294967295
+        .long	2146435071
+        .long	246350567
+        .long	1068708642
+        .long	246350567
+        .long	1068708642
+        .long	246350567
+        .long	1068708642
+        .long	246350567
+        .long	1068708642
+        .long	246350567
+        .long	1068708642
+        .long	246350567
+        .long	1068708642
+        .long	246350567
+        .long	1068708642
+        .long	246350567
+        .long	1068708642
+        .long	1431445118
+        .long	3217380693
+        .long	1431445118
+        .long	3217380693
+        .long	1431445118
+        .long	3217380693
+        .long	1431445118
+        .long	3217380693
+        .long	1431445118
+        .long	3217380693
+        .long	1431445118
+        .long	3217380693
+        .long	1431445118
+        .long	3217380693
+        .long	1431445118
+        .long	3217380693
+        .long	26490386
+        .long	1070694400
+        .long	26490386
+        .long	1070694400
+        .long	26490386
+        .long	1070694400
+        .long	26490386
+        .long	1070694400
+        .long	26490386
+        .long	1070694400
+        .long	26490386
+        .long	1070694400
+        .long	26490386
+        .long	1070694400
+        .long	26490386
+        .long	1070694400
+        .long	20643840
+        .long	1070858240
+        .long	20643840
+        .long	1070858240
+        .long	20643840
+        .long	1070858240
+        .long	20643840
+        .long	1070858240
+        .long	20643840
+        .long	1070858240
+        .long	20643840
+        .long	1070858240
+        .long	20643840
+        .long	1070858240
+        .long	20643840
+        .long	1070858240
+        .long	0
+        .long	1071120384
+        .long	0
+        .long	1071120384
+        .long	0
+        .long	1071120384
+        .long	0
+        .long	1071120384
+        .long	0
+        .long	1071120384
+        .long	0
+        .long	1071120384
+        .long	0
+        .long	1071120384
+        .long	0
+        .long	1071120384
+        .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	0
+        .long	1071120384
+        .long	0
+        .long	1071120384
+        .long	0
+        .long	1071120384
+        .long	0
+        .long	1071120384
+        .long	0
+        .long	1071120384
+        .long	0
+        .long	1071120384
+        .long	0
+        .long	1071120384
+        .long	0
+        .long	1071120384
+        .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	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	0
+        .long	1069547520
+        .long	0
+        .long	1069547520
+        .long	0
+        .long	1069547520
+        .long	0
+        .long	1069547520
+        .long	0
+        .long	1069547520
+        .long	0
+        .long	1069547520
+        .long	0
+        .long	1069547520
+        .long	0
+        .long	1069547520
+        .long	0
+        .long	1074790400
+        .long	0
+        .long	1074790400
+        .long	0
+        .long	1074790400
+        .long	0
+        .long	1074790400
+        .long	0
+        .long	1074790400
+        .long	0
+        .long	1074790400
+        .long	0
+        .long	1074790400
+        .long	0
+        .long	1074790400
+        .long	1075921768
+        .long	3216615856
+        .long	1075921768
+        .long	3216615856
+        .long	1075921768
+        .long	3216615856
+        .long	1075921768
+        .long	3216615856
+        .long	1075921768
+        .long	3216615856
+        .long	1075921768
+        .long	3216615856
+        .long	1075921768
+        .long	3216615856
+        .long	1075921768
+        .long	3216615856
+        .long	1847891832
+        .long	1069318246
+        .long	1847891832
+        .long	1069318246
+        .long	1847891832
+        .long	1069318246
+        .long	1847891832
+        .long	1069318246
+        .long	1847891832
+        .long	1069318246
+        .long	1847891832
+        .long	1069318246
+        .long	1847891832
+        .long	1069318246
+        .long	1847891832
+        .long	1069318246
+        .long	2315602889
+        .long	3217031163
+        .long	2315602889
+        .long	3217031163
+        .long	2315602889
+        .long	3217031163
+        .long	2315602889
+        .long	3217031163
+        .long	2315602889
+        .long	3217031163
+        .long	2315602889
+        .long	3217031163
+        .long	2315602889
+        .long	3217031163
+        .long	2315602889
+        .long	3217031163
+        .long	4145174257
+        .long	1069697314
+        .long	4145174257
+        .long	1069697314
+        .long	4145174257
+        .long	1069697314
+        .long	4145174257
+        .long	1069697314
+        .long	4145174257
+        .long	1069697314
+        .long	4145174257
+        .long	1069697314
+        .long	4145174257
+        .long	1069697314
+        .long	4145174257
+        .long	1069697314
+        .long	1436264246
+        .long	3217380693
+        .long	1436264246
+        .long	3217380693
+        .long	1436264246
+        .long	3217380693
+        .long	1436264246
+        .long	3217380693
+        .long	1436264246
+        .long	3217380693
+        .long	1436264246
+        .long	3217380693
+        .long	1436264246
+        .long	3217380693
+        .long	1436264246
+        .long	3217380693
+        .long	2579396527
+        .long	1070176665
+        .long	2579396527
+        .long	1070176665
+        .long	2579396527
+        .long	1070176665
+        .long	2579396527
+        .long	1070176665
+        .long	2579396527
+        .long	1070176665
+        .long	2579396527
+        .long	1070176665
+        .long	2579396527
+        .long	1070176665
+        .long	2579396527
+        .long	1070176665
+        .long	4294966373
+        .long	3218079743
+        .long	4294966373
+        .long	3218079743
+        .long	4294966373
+        .long	3218079743
+        .long	4294966373
+        .long	3218079743
+        .long	4294966373
+        .long	3218079743
+        .long	4294966373
+        .long	3218079743
+        .long	4294966373
+        .long	3218079743
+        .long	4294966373
+        .long	3218079743
+        .long	1431655617
+        .long	1070945621
+        .long	1431655617
+        .long	1070945621
+        .long	1431655617
+        .long	1070945621
+        .long	1431655617
+        .long	1070945621
+        .long	1431655617
+        .long	1070945621
+        .long	1431655617
+        .long	1070945621
+        .long	1431655617
+        .long	1070945621
+        .long	1431655617
+        .long	1070945621
+        .long	0
+        .long	3219128320
+        .long	0
+        .long	3219128320
+        .long	0
+        .long	3219128320
+        .long	0
+        .long	3219128320
+        .long	0
+        .long	3219128320
+        .long	0
+        .long	3219128320
+        .long	0
+        .long	3219128320
+        .long	0
+        .long	3219128320
+        .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_dacosh_data_internal_avx512,@object
+        .size	__svml_dacosh_data_internal_avx512,2048
+        .align 8
+
+__dacosh_la_CoutTab:
+        .long	0
+        .long	1072693248
+        .long	0
+        .long	0
+        .long	0
+        .long	2146435072
+        .long	0
+        .long	4293918720
+        .type	__dacosh_la_CoutTab,@object
+        .size	__dacosh_la_CoutTab,32
diff --git a/sysdeps/x86_64/fpu/multiarch/svml_s_acoshf16_core-avx2.S b/sysdeps/x86_64/fpu/multiarch/svml_s_acoshf16_core-avx2.S
new file mode 100644
index 0000000000..a54c6863c5
--- /dev/null
+++ b/sysdeps/x86_64/fpu/multiarch/svml_s_acoshf16_core-avx2.S
@@ -0,0 +1,20 @@ 
+/* AVX2 version of vectorized acoshf.
+   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_acoshf _ZGVeN16v_acoshf_avx2_wrapper
+#include "../svml_s_acoshf16_core.S"
diff --git a/sysdeps/x86_64/fpu/multiarch/svml_s_acoshf16_core.c b/sysdeps/x86_64/fpu/multiarch/svml_s_acoshf16_core.c
new file mode 100644
index 0000000000..8109b73ebf
--- /dev/null
+++ b/sysdeps/x86_64/fpu/multiarch/svml_s_acoshf16_core.c
@@ -0,0 +1,28 @@ 
+/* Multiple versions of vectorized acoshf, 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_acoshf
+#include "ifunc-mathvec-avx512-skx.h"
+
+libc_ifunc_redirected (REDIRECT_NAME, SYMBOL_NAME, IFUNC_SELECTOR ());
+
+#ifdef SHARED
+__hidden_ver1 (_ZGVeN16v_acoshf, __GI__ZGVeN16v_acoshf,
+	       __redirect__ZGVeN16v_acoshf)
+  __attribute__ ((visibility ("hidden")));
+#endif
diff --git a/sysdeps/x86_64/fpu/multiarch/svml_s_acoshf16_core_avx512.S b/sysdeps/x86_64/fpu/multiarch/svml_s_acoshf16_core_avx512.S
new file mode 100644
index 0000000000..e187d19950
--- /dev/null
+++ b/sysdeps/x86_64/fpu/multiarch/svml_s_acoshf16_core_avx512.S
@@ -0,0 +1,661 @@ 
+/* Function acoshf 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 acosh(x) as log(x + sqrt(x*x - 1))
+ *   using RSQRT instructions for starting the
+ *   square root approximation, and small table lookups for log
+ *   that map to AVX-512 permute instructions
+ *
+ *   Special cases:
+ *
+ *   acosh(NaN)  = quiet NaN, and raise invalid exception
+ *   acosh(-INF) = NaN
+ *   acosh(+INF) = +INF
+ *   acosh(x)    = NaN if x < 1
+ *   acosh(1)    = +0
+ *
+ */
+
+#include <sysdep.h>
+
+        .text
+ENTRY(_ZGVeN16v_acoshf_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_sacosh_data_internal_avx512(%rip), %zmm1
+
+/*
+ * sqrt(1+x^2) ~ Sh + Sl + Sh*Eh*poly_s
+ * poly_s = c1+c2*Eh
+ */
+        vmovups   640+__svml_sacosh_data_internal_avx512(%rip), %zmm13
+        vmovups   704+__svml_sacosh_data_internal_avx512(%rip), %zmm15
+
+/* polynomial computation for small inputs */
+        vmovups   576+__svml_sacosh_data_internal_avx512(%rip), %zmm9
+
+/* very large inputs ? */
+        vmovups   448+__svml_sacosh_data_internal_avx512(%rip), %zmm10
+
+/* out of range inputs? */
+        vmovups   512+__svml_sacosh_data_internal_avx512(%rip), %zmm11
+
+/* not a very small input ? */
+        vmovups   384+__svml_sacosh_data_internal_avx512(%rip), %zmm6
+        vmovaps   %zmm0, %zmm8
+
+/* x^2 - 1 */
+        vmovaps   %zmm1, %zmm7
+        vfmsub231ps {rn-sae}, %zmm8, %zmm8, %zmm7
+        vcmpps    $21, {sae}, %zmm10, %zmm8, %k2
+        vcmpps    $22, {sae}, %zmm11, %zmm8, %k0
+        vcmpps    $18, {sae}, %zmm1, %zmm8, %k1
+        vrsqrt14ps %zmm7, %zmm12
+        vcmpps    $21, {sae}, %zmm6, %zmm7, %k3
+        vmulps    {rn-sae}, %zmm9, %zmm7, %zmm4
+
+/* Sh ~sqrt(-1+x^2) */
+        vmulps    {rn-sae}, %zmm12, %zmm7, %zmm5
+        kmovw     %k0, %edx
+        kmovw     %k1, %eax
+
+/* Sh+x */
+        vaddps    {rn-sae}, %zmm8, %zmm5, %zmm9
+
+/* (Yh*R0)_low */
+        vmovaps   %zmm7, %zmm0
+        orl       %eax, %edx
+
+/* rel. error term: Eh=1-Sh*R0 */
+        vmovaps   %zmm1, %zmm14
+        vfmsub213ps {rn-sae}, %zmm5, %zmm12, %zmm0
+        vfnmadd231ps {rn-sae}, %zmm5, %zmm12, %zmm14
+
+/* rel. error term: Eh=(1-Sh*R0)-Sl*R0 */
+        vfnmadd231ps {rn-sae}, %zmm0, %zmm12, %zmm14
+
+/* Sh*Eh */
+        vmulps    {rn-sae}, %zmm14, %zmm5, %zmm3
+        vfmadd231ps {rn-sae}, %zmm14, %zmm13, %zmm15
+
+/* Sl + Sh*Eh*poly_s */
+        vfmadd213ps {rn-sae}, %zmm0, %zmm15, %zmm3
+
+/* Shh */
+        vsubps    {rn-sae}, %zmm8, %zmm9, %zmm15
+
+/* polynomial computation for small inputs */
+        vaddps    {rn-sae}, %zmm3, %zmm5, %zmm0
+
+/* Xin0+Sl+Sh*Eh*poly_s ~ x+sqrt(1+x^2) */
+        vaddps    {rn-sae}, %zmm3, %zmm9, %zmm2
+
+/* Shl */
+        vsubps    {rn-sae}, %zmm15, %zmm5, %zmm10
+        vfmadd231ps {rn-sae}, %zmm0, %zmm4, %zmm0
+
+/* fixup for very large inputs */
+        vmovups   896+__svml_sacosh_data_internal_avx512(%rip), %zmm4
+
+/* Sl_high */
+        vsubps    {rn-sae}, %zmm9, %zmm2, %zmm5
+
+/* polynomial */
+        vmovups   1024+__svml_sacosh_data_internal_avx512(%rip), %zmm9
+        vmulps    {rn-sae}, %zmm4, %zmm8, %zmm2{%k2}
+
+/* -K*L2L + Tl */
+        vmovups   1280+__svml_sacosh_data_internal_avx512(%rip), %zmm4
+
+/* Sl_l */
+        vsubps    {rn-sae}, %zmm5, %zmm3, %zmm3
+        vrcp14ps  %zmm2, %zmm11
+        vmovups   128+__svml_sacosh_data_internal_avx512(%rip), %zmm5
+
+/* Xin_low */
+        vaddps    {rn-sae}, %zmm10, %zmm3, %zmm13
+
+/* round reciprocal to 1+4b mantissas */
+        vpaddd    768+__svml_sacosh_data_internal_avx512(%rip), %zmm11, %zmm12
+        vmovups   1152+__svml_sacosh_data_internal_avx512(%rip), %zmm10
+        vandps    832+__svml_sacosh_data_internal_avx512(%rip), %zmm12, %zmm14
+
+/* fixup for very large inputs */
+        vxorps    %zmm13, %zmm13, %zmm13{%k2}
+
+/* reduced argument for log(): (Rcp*Xin-1)+Rcp*Xin_low */
+        vfmsub231ps {rn-sae}, %zmm14, %zmm2, %zmm1
+
+/* exponents */
+        vgetexpps {sae}, %zmm14, %zmm12
+        vmovups   960+__svml_sacosh_data_internal_avx512(%rip), %zmm2
+
+/* Prepare table index */
+        vpsrld    $18, %zmm14, %zmm3
+        vfmadd231ps {rn-sae}, %zmm14, %zmm13, %zmm1
+        vmovups   1088+__svml_sacosh_data_internal_avx512(%rip), %zmm13
+
+/* Table lookups */
+        vmovups   __svml_sacosh_data_internal_avx512(%rip), %zmm14
+        vsubps    {rn-sae}, %zmm2, %zmm12, %zmm12{%k2}
+        vpermt2ps 192+__svml_sacosh_data_internal_avx512(%rip), %zmm3, %zmm5
+        vpermt2ps 64+__svml_sacosh_data_internal_avx512(%rip), %zmm3, %zmm14
+
+/* R^2 */
+        vmulps    {rn-sae}, %zmm1, %zmm1, %zmm11
+
+/* -K*L2H + Th */
+        vmovups   1216+__svml_sacosh_data_internal_avx512(%rip), %zmm2
+        vfmadd231ps {rn-sae}, %zmm1, %zmm9, %zmm13
+        vfnmadd231ps {rn-sae}, %zmm12, %zmm2, %zmm14
+        vfnmadd213ps {rn-sae}, %zmm5, %zmm4, %zmm12
+        vfmadd213ps {rn-sae}, %zmm10, %zmm1, %zmm13
+
+/* Tl + R^2*Poly */
+        vfmadd213ps {rn-sae}, %zmm12, %zmm11, %zmm13
+
+/* R+Tl + R^2*Poly */
+        vaddps    {rn-sae}, %zmm1, %zmm13, %zmm1
+        vaddps    {rn-sae}, %zmm1, %zmm14, %zmm0{%k3}
+        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   %zmm8, 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_sacosh_cout_rare_internal
+        jmp       .LBL_1_8
+
+END(_ZGVeN16v_acoshf_skx)
+
+        .align    16,0x90
+
+__svml_sacosh_cout_rare_internal:
+
+        cfi_startproc
+
+        movl      (%rdi), %eax
+        movl      %eax, -8(%rsp)
+        andl      $2139095040, %eax
+        cmpl      $2139095040, %eax
+        je        .LBL_2_8
+
+.LBL_2_2:
+        movl      -8(%rsp), %eax
+        cmpl      $1065353216, %eax
+        je        .LBL_2_7
+        cmpl      $2139095040, %eax
+        jne       .LBL_2_5
+        movl      8+__sacosh_la__iml_sacosh_cout_tab(%rip), %eax
+        movl      %eax, (%rsi)
+        xorl      %eax, %eax
+        ret
+
+.LBL_2_5:
+        movss     8+__sacosh_la__iml_sacosh_cout_tab(%rip), %xmm0
+        movl      $1, %eax
+        mulss     4+__sacosh_la__iml_sacosh_cout_tab(%rip), %xmm0
+        movss     %xmm0, (%rsi)
+        ret
+
+.LBL_2_7:
+        movl      4+__sacosh_la__iml_sacosh_cout_tab(%rip), %eax
+        movl      %eax, (%rsi)
+        xorl      %eax, %eax
+        ret
+
+.LBL_2_8:
+        testl     $8388607, -8(%rsp)
+        je        .LBL_2_2
+        movss     -8(%rsp), %xmm0
+        xorl      %eax, %eax
+        mulss     -8(%rsp), %xmm0
+        movss     %xmm0, (%rsi)
+        ret
+
+        cfi_endproc
+
+        .type	__svml_sacosh_cout_rare_internal,@function
+        .size	__svml_sacosh_cout_rare_internal,.-__svml_sacosh_cout_rare_internal
+
+        .section .rodata, "a"
+        .align 64
+
+__svml_sacosh_data_internal_avx512:
+        .long	0
+        .long	3170631680
+        .long	3178790912
+        .long	3182919680
+        .long	3186704384
+        .long	3189022720
+        .long	3190816768
+        .long	3192561664
+        .long	3194257408
+        .long	3195912192
+        .long	3196796928
+        .long	3197583360
+        .long	3198357504
+        .long	3199111168
+        .long	3199848448
+        .long	3200569344
+        .long	3201277952
+        .long	3201966080
+        .long	3202646016
+        .long	3203309568
+        .long	3203960832
+        .long	3204524032
+        .long	3204837376
+        .long	3205146624
+        .long	3205447680
+        .long	3205744640
+        .long	3206037504
+        .long	3206324224
+        .long	3206606848
+        .long	3206883328
+        .long	3207155712
+        .long	3207424000
+        .long	2147483648
+        .long	3072770974
+        .long	943319038
+        .long	3075640037
+        .long	930648533
+        .long	3089726480
+        .long	936349528
+        .long	944943494
+        .long	897812054
+        .long	3087808175
+        .long	941839444
+        .long	3093478113
+        .long	937982919
+        .long	931430736
+        .long	924853521
+        .long	3075349253
+        .long	945558336
+        .long	3094838221
+        .long	906200662
+        .long	3084126596
+        .long	3088015279
+        .long	3089451852
+        .long	3093678154
+        .long	938521645
+        .long	3091119329
+        .long	3090949395
+        .long	933442244
+        .long	930702671
+        .long	945827699
+        .long	913590776
+        .long	3082066287
+        .long	3087046763
+        .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	964689920
+        .long	964689920
+        .long	964689920
+        .long	964689920
+        .long	964689920
+        .long	964689920
+        .long	964689920
+        .long	964689920
+        .long	964689920
+        .long	964689920
+        .long	964689920
+        .long	964689920
+        .long	964689920
+        .long	964689920
+        .long	964689920
+        .long	964689920
+        .long	1593835520
+        .long	1593835520
+        .long	1593835520
+        .long	1593835520
+        .long	1593835520
+        .long	1593835520
+        .long	1593835520
+        .long	1593835520
+        .long	1593835520
+        .long	1593835520
+        .long	1593835520
+        .long	1593835520
+        .long	1593835520
+        .long	1593835520
+        .long	1593835520
+        .long	1593835520
+        .long	2139095039
+        .long	2139095039
+        .long	2139095039
+        .long	2139095039
+        .long	2139095039
+        .long	2139095039
+        .long	2139095039
+        .long	2139095039
+        .long	2139095039
+        .long	2139095039
+        .long	2139095039
+        .long	2139095039
+        .long	2139095039
+        .long	2139095039
+        .long	2139095039
+        .long	2139095039
+        .long	3190466014
+        .long	3190466014
+        .long	3190466014
+        .long	3190466014
+        .long	3190466014
+        .long	3190466014
+        .long	3190466014
+        .long	3190466014
+        .long	3190466014
+        .long	3190466014
+        .long	3190466014
+        .long	3190466014
+        .long	3190466014
+        .long	3190466014
+        .long	3190466014
+        .long	3190466014
+        .long	1052770304
+        .long	1052770304
+        .long	1052770304
+        .long	1052770304
+        .long	1052770304
+        .long	1052770304
+        .long	1052770304
+        .long	1052770304
+        .long	1052770304
+        .long	1052770304
+        .long	1052770304
+        .long	1052770304
+        .long	1052770304
+        .long	1052770304
+        .long	1052770304
+        .long	1052770304
+        .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	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	1040187392
+        .long	1040187392
+        .long	1040187392
+        .long	1040187392
+        .long	1040187392
+        .long	1040187392
+        .long	1040187392
+        .long	1040187392
+        .long	1040187392
+        .long	1040187392
+        .long	1040187392
+        .long	1040187392
+        .long	1040187392
+        .long	1040187392
+        .long	1040187392
+        .long	1040187392
+        .long	1082130432
+        .long	1082130432
+        .long	1082130432
+        .long	1082130432
+        .long	1082130432
+        .long	1082130432
+        .long	1082130432
+        .long	1082130432
+        .long	1082130432
+        .long	1082130432
+        .long	1082130432
+        .long	1082130432
+        .long	1082130432
+        .long	1082130432
+        .long	1082130432
+        .long	1082130432
+        .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	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_sacosh_data_internal_avx512,@object
+        .size	__svml_sacosh_data_internal_avx512,1344
+        .align 4
+
+__sacosh_la__iml_sacosh_cout_tab:
+        .long	1065353216
+        .long	0
+        .long	2139095040
+        .type	__sacosh_la__iml_sacosh_cout_tab,@object
+        .size	__sacosh_la__iml_sacosh_cout_tab,12
diff --git a/sysdeps/x86_64/fpu/multiarch/svml_s_acoshf4_core-sse2.S b/sysdeps/x86_64/fpu/multiarch/svml_s_acoshf4_core-sse2.S
new file mode 100644
index 0000000000..d789ec1d47
--- /dev/null
+++ b/sysdeps/x86_64/fpu/multiarch/svml_s_acoshf4_core-sse2.S
@@ -0,0 +1,20 @@ 
+/* SSE2 version of vectorized acoshf, 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_acoshf _ZGVbN4v_acoshf_sse2
+#include "../svml_s_acoshf4_core.S"
diff --git a/sysdeps/x86_64/fpu/multiarch/svml_s_acoshf4_core.c b/sysdeps/x86_64/fpu/multiarch/svml_s_acoshf4_core.c
new file mode 100644
index 0000000000..b2d9101c47
--- /dev/null
+++ b/sysdeps/x86_64/fpu/multiarch/svml_s_acoshf4_core.c
@@ -0,0 +1,28 @@ 
+/* Multiple versions of vectorized acoshf, 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_acoshf
+#include "ifunc-mathvec-sse4_1.h"
+
+libc_ifunc_redirected (REDIRECT_NAME, SYMBOL_NAME, IFUNC_SELECTOR ());
+
+#ifdef SHARED
+__hidden_ver1 (_ZGVbN4v_acoshf, __GI__ZGVbN4v_acoshf,
+	       __redirect__ZGVbN4v_acoshf)
+  __attribute__ ((visibility ("hidden")));
+#endif
diff --git a/sysdeps/x86_64/fpu/multiarch/svml_s_acoshf4_core_sse4.S b/sysdeps/x86_64/fpu/multiarch/svml_s_acoshf4_core_sse4.S
new file mode 100644
index 0000000000..d3694f56c4
--- /dev/null
+++ b/sysdeps/x86_64/fpu/multiarch/svml_s_acoshf4_core_sse4.S
@@ -0,0 +1,2498 @@ 
+/* Function acoshf 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 acosh(x) as log(x + sqrt(x*x - 1))
+ *
+ *   Special cases:
+ *
+ *   acosh(NaN)  = quiet NaN, and raise invalid exception
+ *   acosh(-INF) = NaN
+ *   acosh(+INF) = +INF
+ *   acosh(x)    = NaN if x < 1
+ *   acosh(1)    = +0
+ *
+ */
+
+#include <sysdep.h>
+
+        .text
+ENTRY(_ZGVbN4v_acoshf_sse4)
+        pushq     %rbp
+        cfi_def_cfa_offset(16)
+        movq      %rsp, %rbp
+        cfi_def_cfa(6, 16)
+        cfi_offset(6, -16)
+        andq      $-64, %rsp
+        subq      $320, %rsp
+
+/* Compute U = X - 1 and V = X + 1, naively first. */
+        movaps    %xmm0, %xmm3
+
+/* Load constants, always including One = 1 */
+        movups    1920+__svml_sacosh_data_internal(%rip), %xmm1
+
+/*
+ * Check that 1 < X < +inf; otherwise go to the callout function.
+ * We need the callout for X = 1 to avoid division by zero below.
+ * This test ensures that callout handles NaN and either infinity.
+ */
+        movaps    %xmm0, %xmm5
+        movaps    %xmm1, %xmm7
+        movaps    %xmm1, %xmm2
+
+/* Finally, express Y + W = U * V accurately where Y has <= 8 bits */
+        movups    3008+__svml_sacosh_data_internal(%rip), %xmm4
+        subps     %xmm1, %xmm3
+        addps     %xmm0, %xmm7
+        cmpnleps  2624+__svml_sacosh_data_internal(%rip), %xmm5
+        cmpnltps  %xmm0, %xmm2
+
+/* For low-accuracy versions, naivety is harmless */
+        mulps     %xmm3, %xmm7
+        movups    %xmm15, 144(%rsp)
+        .cfi_escape 0x10, 0x20, 0x0e, 0x38, 0x1c, 0x0d, 0xc0, 0xff, 0xff, 0xff, 0x1a, 0x0d, 0x50, 0xff, 0xff, 0xff, 0x22
+        movaps    %xmm4, %xmm15
+        andps     %xmm7, %xmm15
+        orps      %xmm2, %xmm5
+
+/*
+ * Compute R = 1/sqrt(Y + W) * (1 + d)
+ * Force R to <= 8 significant bits.
+ * This means that R * Y and R^2 * Y are exactly representable.
+ */
+        rsqrtps   %xmm15, %xmm6
+        movmskps  %xmm5, %edx
+        subps     %xmm15, %xmm7
+        andps     %xmm4, %xmm6
+
+/*
+ * Compute e = -(2 * d + d^2)
+ * The first FMR is exact, and the rounding error in the other is acceptable
+ * since d and e are ~ 2^-8
+ */
+        movaps    %xmm1, %xmm5
+
+/*
+ * Compute S = (Y/sqrt(Y + W)) * (1 + d)
+ * and T = (W/sqrt(Y + W)) * (1 + d)
+ * so that S + T = sqrt(Y + W) * (1 + d)
+ * S is exact, and the rounding error in T is OK.
+ */
+        mulps     %xmm6, %xmm15
+        movaps    %xmm6, %xmm4
+        mulps     %xmm6, %xmm7
+        mulps     %xmm15, %xmm4
+        mulps     %xmm7, %xmm6
+
+/*
+ * For low-accuracy versions, the computation can be done
+ * just as U + ((S + T) + (S + T) * Corr)
+ */
+        addps     %xmm7, %xmm15
+        subps     %xmm4, %xmm5
+
+/*
+ * Now we feed into the log1p code, using H in place of _VARG1 and
+ * also adding L into Xl.
+ * compute 1+x as high, low parts
+ */
+        movaps    %xmm1, %xmm7
+
+/*
+ * The following computation can go wrong for very large X, e.g.
+ * the X^2 - 1 = U * V can overflow. But for large X we have
+ * acosh(X) / log(2 X) - 1 =~= 1/(4 * X^2), so for X >= 2^30
+ * we can just later stick X back into the log and tweak up the exponent.
+ * Actually we scale X by 2^-30 and tweak the exponent up by 31,
+ * to stay in the safe range for the later log computation.
+ * Compute a flag now telling us when to do this.
+ */
+        movaps    %xmm0, %xmm2
+        cmpltps   2368+__svml_sacosh_data_internal(%rip), %xmm2
+        subps     %xmm6, %xmm5
+
+/*
+ * Now       1 / (1 + d)
+ * = 1 / (1 + (sqrt(1 - e) - 1))
+ * = 1 / sqrt(1 - e)
+ * = 1 + 1/2 * e + 3/8 * e^2 + 5/16 * e^3 + 35/128 * e^4 + ...
+ * So compute the first three nonconstant terms of that, so that
+ * we have a relative correction (1 + Corr) to apply to S etc.
+ * C1 = 1/2
+ * C2 = 3/8
+ * C3 = 5/16
+ */
+        movups    2496+__svml_sacosh_data_internal(%rip), %xmm6
+        movaps    %xmm2, %xmm4
+        mulps     %xmm5, %xmm6
+        addps     2432+__svml_sacosh_data_internal(%rip), %xmm6
+        mulps     %xmm5, %xmm6
+        addps     2560+__svml_sacosh_data_internal(%rip), %xmm6
+        mulps     %xmm6, %xmm5
+        mulps     %xmm15, %xmm5
+        addps     %xmm5, %xmm15
+        movaps    %xmm1, %xmm5
+        addps     %xmm15, %xmm3
+        movaps    %xmm1, %xmm15
+        maxps     %xmm3, %xmm7
+        minps     %xmm3, %xmm5
+        movaps    %xmm7, %xmm6
+
+/* Now multiplex to the case X = 2^-30 * input, Xl = 0 in the "big" case. */
+        movups    3072+__svml_sacosh_data_internal(%rip), %xmm3
+        addps     %xmm5, %xmm6
+        mulps     %xmm0, %xmm3
+        subps     %xmm6, %xmm7
+        andnps    %xmm3, %xmm4
+        andps     %xmm2, %xmm6
+        orps      %xmm6, %xmm4
+        addps     %xmm7, %xmm5
+
+/*
+ * Now resume the main code.
+ * reduction: compute r,n
+ */
+        movdqu    2240+__svml_sacosh_data_internal(%rip), %xmm7
+        andps     %xmm2, %xmm5
+        movdqu    2304+__svml_sacosh_data_internal(%rip), %xmm6
+        psubd     %xmm7, %xmm4
+        pand      %xmm4, %xmm6
+        psrad     $23, %xmm4
+        cvtdq2ps  %xmm4, %xmm3
+        pslld     $23, %xmm4
+        paddd     %xmm7, %xmm6
+        psubd     %xmm4, %xmm15
+
+/* polynomial evaluation */
+        subps     %xmm1, %xmm6
+        mulps     %xmm15, %xmm5
+        movups    2096+__svml_sacosh_data_internal(%rip), %xmm1
+        addps     %xmm6, %xmm5
+        mulps     %xmm5, %xmm1
+        movaps    %xmm2, %xmm6
+
+/* Add 31 to the exponent in the "large" case to get log(2 * input) */
+        movups    2816+__svml_sacosh_data_internal(%rip), %xmm4
+        addps     2080+__svml_sacosh_data_internal(%rip), %xmm1
+        addps     %xmm3, %xmm4
+        mulps     %xmm5, %xmm1
+        andnps    %xmm4, %xmm6
+        andps     %xmm2, %xmm3
+        orps      %xmm3, %xmm6
+        addps     2064+__svml_sacosh_data_internal(%rip), %xmm1
+
+/* final reconstruction */
+        mulps     3136+__svml_sacosh_data_internal(%rip), %xmm6
+        mulps     %xmm5, %xmm1
+        addps     2048+__svml_sacosh_data_internal(%rip), %xmm1
+        mulps     %xmm5, %xmm1
+        addps     2032+__svml_sacosh_data_internal(%rip), %xmm1
+        mulps     %xmm5, %xmm1
+        addps     2016+__svml_sacosh_data_internal(%rip), %xmm1
+        mulps     %xmm5, %xmm1
+        addps     2000+__svml_sacosh_data_internal(%rip), %xmm1
+        mulps     %xmm5, %xmm1
+        addps     1984+__svml_sacosh_data_internal(%rip), %xmm1
+        mulps     %xmm5, %xmm1
+        mulps     %xmm5, %xmm1
+        addps     %xmm1, %xmm5
+        addps     %xmm6, %xmm5
+        testl     %edx, %edx
+        jne       .LBL_1_3
+
+.LBL_1_2:
+        movups    144(%rsp), %xmm15
+        cfi_restore(32)
+        movaps    %xmm5, %xmm0
+        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, 0x20, 0x0e, 0x38, 0x1c, 0x0d, 0xc0, 0xff, 0xff, 0xff, 0x1a, 0x0d, 0x50, 0xff, 0xff, 0xff, 0x22
+
+.LBL_1_3:
+        movups    %xmm0, 192(%rsp)
+        movups    %xmm5, 256(%rsp)
+        xorl      %eax, %eax
+        movups    %xmm8, 96(%rsp)
+        movups    %xmm9, 80(%rsp)
+        movups    %xmm10, 64(%rsp)
+        movups    %xmm11, 48(%rsp)
+        movups    %xmm12, 32(%rsp)
+        movups    %xmm13, 16(%rsp)
+        movups    %xmm14, (%rsp)
+        movq      %rsi, 120(%rsp)
+        movq      %rdi, 112(%rsp)
+        movq      %r12, 136(%rsp)
+        .cfi_escape 0x10, 0x04, 0x0e, 0x38, 0x1c, 0x0d, 0xc0, 0xff, 0xff, 0xff, 0x1a, 0x0d, 0x38, 0xff, 0xff, 0xff, 0x22
+        .cfi_escape 0x10, 0x05, 0x0e, 0x38, 0x1c, 0x0d, 0xc0, 0xff, 0xff, 0xff, 0x1a, 0x0d, 0x30, 0xff, 0xff, 0xff, 0x22
+        .cfi_escape 0x10, 0x0c, 0x0e, 0x38, 0x1c, 0x0d, 0xc0, 0xff, 0xff, 0xff, 0x1a, 0x0d, 0x48, 0xff, 0xff, 0xff, 0x22
+        .cfi_escape 0x10, 0x19, 0x0e, 0x38, 0x1c, 0x0d, 0xc0, 0xff, 0xff, 0xff, 0x1a, 0x0d, 0x20, 0xff, 0xff, 0xff, 0x22
+        .cfi_escape 0x10, 0x1a, 0x0e, 0x38, 0x1c, 0x0d, 0xc0, 0xff, 0xff, 0xff, 0x1a, 0x0d, 0x10, 0xff, 0xff, 0xff, 0x22
+        .cfi_escape 0x10, 0x1b, 0x0e, 0x38, 0x1c, 0x0d, 0xc0, 0xff, 0xff, 0xff, 0x1a, 0x0d, 0x00, 0xff, 0xff, 0xff, 0x22
+        .cfi_escape 0x10, 0x1c, 0x0e, 0x38, 0x1c, 0x0d, 0xc0, 0xff, 0xff, 0xff, 0x1a, 0x0d, 0xf0, 0xfe, 0xff, 0xff, 0x22
+        .cfi_escape 0x10, 0x1d, 0x0e, 0x38, 0x1c, 0x0d, 0xc0, 0xff, 0xff, 0xff, 0x1a, 0x0d, 0xe0, 0xfe, 0xff, 0xff, 0x22
+        .cfi_escape 0x10, 0x1e, 0x0e, 0x38, 0x1c, 0x0d, 0xc0, 0xff, 0xff, 0xff, 0x1a, 0x0d, 0xd0, 0xfe, 0xff, 0xff, 0x22
+        .cfi_escape 0x10, 0x1f, 0x0e, 0x38, 0x1c, 0x0d, 0xc0, 0xff, 0xff, 0xff, 0x1a, 0x0d, 0xc0, 0xfe, 0xff, 0xff, 0x22
+        movl      %eax, %r12d
+        movq      %r13, 128(%rsp)
+        .cfi_escape 0x10, 0x0d, 0x0e, 0x38, 0x1c, 0x0d, 0xc0, 0xff, 0xff, 0xff, 0x1a, 0x0d, 0x40, 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    96(%rsp), %xmm8
+        cfi_restore(25)
+        movups    80(%rsp), %xmm9
+        cfi_restore(26)
+        movups    64(%rsp), %xmm10
+        cfi_restore(27)
+        movups    48(%rsp), %xmm11
+        cfi_restore(28)
+        movups    32(%rsp), %xmm12
+        cfi_restore(29)
+        movups    16(%rsp), %xmm13
+        cfi_restore(30)
+        movups    (%rsp), %xmm14
+        cfi_restore(31)
+        movq      120(%rsp), %rsi
+        cfi_restore(4)
+        movq      112(%rsp), %rdi
+        cfi_restore(5)
+        movq      136(%rsp), %r12
+        cfi_restore(12)
+        movq      128(%rsp), %r13
+        cfi_restore(13)
+        movups    256(%rsp), %xmm5
+        jmp       .LBL_1_2
+        .cfi_escape 0x10, 0x04, 0x0e, 0x38, 0x1c, 0x0d, 0xc0, 0xff, 0xff, 0xff, 0x1a, 0x0d, 0x38, 0xff, 0xff, 0xff, 0x22
+        .cfi_escape 0x10, 0x05, 0x0e, 0x38, 0x1c, 0x0d, 0xc0, 0xff, 0xff, 0xff, 0x1a, 0x0d, 0x30, 0xff, 0xff, 0xff, 0x22
+        .cfi_escape 0x10, 0x0c, 0x0e, 0x38, 0x1c, 0x0d, 0xc0, 0xff, 0xff, 0xff, 0x1a, 0x0d, 0x48, 0xff, 0xff, 0xff, 0x22
+        .cfi_escape 0x10, 0x0d, 0x0e, 0x38, 0x1c, 0x0d, 0xc0, 0xff, 0xff, 0xff, 0x1a, 0x0d, 0x40, 0xff, 0xff, 0xff, 0x22
+        .cfi_escape 0x10, 0x19, 0x0e, 0x38, 0x1c, 0x0d, 0xc0, 0xff, 0xff, 0xff, 0x1a, 0x0d, 0x20, 0xff, 0xff, 0xff, 0x22
+        .cfi_escape 0x10, 0x1a, 0x0e, 0x38, 0x1c, 0x0d, 0xc0, 0xff, 0xff, 0xff, 0x1a, 0x0d, 0x10, 0xff, 0xff, 0xff, 0x22
+        .cfi_escape 0x10, 0x1b, 0x0e, 0x38, 0x1c, 0x0d, 0xc0, 0xff, 0xff, 0xff, 0x1a, 0x0d, 0x00, 0xff, 0xff, 0xff, 0x22
+        .cfi_escape 0x10, 0x1c, 0x0e, 0x38, 0x1c, 0x0d, 0xc0, 0xff, 0xff, 0xff, 0x1a, 0x0d, 0xf0, 0xfe, 0xff, 0xff, 0x22
+        .cfi_escape 0x10, 0x1d, 0x0e, 0x38, 0x1c, 0x0d, 0xc0, 0xff, 0xff, 0xff, 0x1a, 0x0d, 0xe0, 0xfe, 0xff, 0xff, 0x22
+        .cfi_escape 0x10, 0x1e, 0x0e, 0x38, 0x1c, 0x0d, 0xc0, 0xff, 0xff, 0xff, 0x1a, 0x0d, 0xd0, 0xfe, 0xff, 0xff, 0x22
+        .cfi_escape 0x10, 0x1f, 0x0e, 0x38, 0x1c, 0x0d, 0xc0, 0xff, 0xff, 0xff, 0x1a, 0x0d, 0xc0, 0xfe, 0xff, 0xff, 0x22
+
+.LBL_1_10:
+        lea       192(%rsp,%r12,4), %rdi
+        lea       256(%rsp,%r12,4), %rsi
+        call      __svml_sacosh_cout_rare_internal
+        jmp       .LBL_1_8
+
+END(_ZGVbN4v_acoshf_sse4)
+
+        .align    16,0x90
+
+__svml_sacosh_cout_rare_internal:
+
+        cfi_startproc
+
+        movl      (%rdi), %eax
+        movl      %eax, -8(%rsp)
+        andl      $2139095040, %eax
+        cmpl      $2139095040, %eax
+        je        .LBL_2_8
+
+.LBL_2_2:
+        movl      -8(%rsp), %eax
+        cmpl      $1065353216, %eax
+        je        .LBL_2_7
+        cmpl      $2139095040, %eax
+        jne       .LBL_2_5
+        movl      8+__sacosh_la__iml_sacosh_cout_tab(%rip), %eax
+        movl      %eax, (%rsi)
+        xorl      %eax, %eax
+        ret
+
+.LBL_2_5:
+        movss     8+__sacosh_la__iml_sacosh_cout_tab(%rip), %xmm0
+        movl      $1, %eax
+        mulss     4+__sacosh_la__iml_sacosh_cout_tab(%rip), %xmm0
+        movss     %xmm0, (%rsi)
+        ret
+
+.LBL_2_7:
+        movl      4+__sacosh_la__iml_sacosh_cout_tab(%rip), %eax
+        movl      %eax, (%rsi)
+        xorl      %eax, %eax
+        ret
+
+.LBL_2_8:
+        testl     $8388607, -8(%rsp)
+        je        .LBL_2_2
+        movss     -8(%rsp), %xmm0
+        xorl      %eax, %eax
+        mulss     -8(%rsp), %xmm0
+        movss     %xmm0, (%rsi)
+        ret
+
+        cfi_endproc
+
+        .type	__svml_sacosh_cout_rare_internal,@function
+        .size	__svml_sacosh_cout_rare_internal,.-__svml_sacosh_cout_rare_internal
+
+        .section .rodata, "a"
+        .align 64
+
+__svml_sacosh_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	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_sacosh_data_internal,@object
+        .size	__svml_sacosh_data_internal,3392
+        .align 4
+
+__sacosh_la__iml_sacosh_cout_tab:
+        .long	1065353216
+        .long	0
+        .long	2139095040
+        .type	__sacosh_la__iml_sacosh_cout_tab,@object
+        .size	__sacosh_la__iml_sacosh_cout_tab,12
diff --git a/sysdeps/x86_64/fpu/multiarch/svml_s_acoshf8_core-sse.S b/sysdeps/x86_64/fpu/multiarch/svml_s_acoshf8_core-sse.S
new file mode 100644
index 0000000000..cb97d291c5
--- /dev/null
+++ b/sysdeps/x86_64/fpu/multiarch/svml_s_acoshf8_core-sse.S
@@ -0,0 +1,20 @@ 
+/* SSE version of vectorized acoshf, 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_acoshf _ZGVdN8v_acoshf_sse_wrapper
+#include "../svml_s_acoshf8_core.S"
diff --git a/sysdeps/x86_64/fpu/multiarch/svml_s_acoshf8_core.c b/sysdeps/x86_64/fpu/multiarch/svml_s_acoshf8_core.c
new file mode 100644
index 0000000000..db71194cd0
--- /dev/null
+++ b/sysdeps/x86_64/fpu/multiarch/svml_s_acoshf8_core.c
@@ -0,0 +1,28 @@ 
+/* Multiple versions of vectorized acoshf, 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_acoshf
+#include "ifunc-mathvec-avx2.h"
+
+libc_ifunc_redirected (REDIRECT_NAME, SYMBOL_NAME, IFUNC_SELECTOR ());
+
+#ifdef SHARED
+__hidden_ver1 (_ZGVdN8v_acoshf, __GI__ZGVdN8v_acoshf,
+	       __redirect__ZGVdN8v_acoshf)
+  __attribute__ ((visibility ("hidden")));
+#endif
diff --git a/sysdeps/x86_64/fpu/multiarch/svml_s_acoshf8_core_avx2.S b/sysdeps/x86_64/fpu/multiarch/svml_s_acoshf8_core_avx2.S
new file mode 100644
index 0000000000..d928320751
--- /dev/null
+++ b/sysdeps/x86_64/fpu/multiarch/svml_s_acoshf8_core_avx2.S
@@ -0,0 +1,2112 @@ 
+/* Function acoshf 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 acosh(x) as log(x + sqrt(x*x - 1))
+ *
+ *   Special cases:
+ *
+ *   acosh(NaN)  = quiet NaN, and raise invalid exception
+ *   acosh(-INF) = NaN
+ *   acosh(+INF) = +INF
+ *   acosh(x)    = NaN if x < 1
+ *   acosh(1)    = +0
+ *
+ */
+
+#include <sysdep.h>
+
+        .text
+ENTRY(_ZGVdN8v_acoshf_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, always including One = 1 */
+        vmovups   1920+__svml_sacosh_data_internal(%rip), %ymm2
+        vmovups   %ymm10, 160(%rsp)
+        vmovups   %ymm8, 32(%rsp)
+        vmovups   %ymm11, 192(%rsp)
+        vmovups   %ymm9, 96(%rsp)
+        .cfi_escape 0x10, 0xdb, 0x00, 0x0e, 0x38, 0x1c, 0x0d, 0xc0, 0xff, 0xff, 0xff, 0x1a, 0x0d, 0xa0, 0xfe, 0xff, 0xff, 0x22
+        .cfi_escape 0x10, 0xdc, 0x00, 0x0e, 0x38, 0x1c, 0x0d, 0xc0, 0xff, 0xff, 0xff, 0x1a, 0x0d, 0xe0, 0xfe, 0xff, 0xff, 0x22
+        .cfi_escape 0x10, 0xdd, 0x00, 0x0e, 0x38, 0x1c, 0x0d, 0xc0, 0xff, 0xff, 0xff, 0x1a, 0x0d, 0x20, 0xff, 0xff, 0xff, 0x22
+        .cfi_escape 0x10, 0xde, 0x00, 0x0e, 0x38, 0x1c, 0x0d, 0xc0, 0xff, 0xff, 0xff, 0x1a, 0x0d, 0x40, 0xff, 0xff, 0xff, 0x22
+
+/*
+ * Now       1 / (1 + d)
+ * = 1 / (1 + (sqrt(1 - e) - 1))
+ * = 1 / sqrt(1 - e)
+ * = 1 + 1/2 * e + 3/8 * e^2 + 5/16 * e^3 + 35/128 * e^4 + ...
+ * So compute the first three nonconstant terms of that, so that
+ * we have a relative correction (1 + Corr) to apply to S etc.
+ * C1 = 1/2
+ * C2 = 3/8
+ * C3 = 5/16
+ */
+        vmovups   2624+__svml_sacosh_data_internal(%rip), %ymm9
+        vmovups   %ymm12, 224(%rsp)
+        vmovups   %ymm14, 288(%rsp)
+        vmovups   %ymm13, 256(%rsp)
+        vmovups   %ymm15, 320(%rsp)
+        vmovaps   %ymm0, %ymm3
+
+/*
+ * Check that 1 < X < +inf; otherwise go to the callout function.
+ * We need the callout for X = 1 to avoid division by zero below.
+ * This test ensures that callout handles NaN and either infinity.
+ */
+        vcmpnle_uqps 2752+__svml_sacosh_data_internal(%rip), %ymm3, %ymm4
+        vcmpngt_uqps %ymm2, %ymm3, %ymm5
+        .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
+
+/* sU is needed later on */
+        vsubps    %ymm2, %ymm3, %ymm13
+
+/*
+ * The following computation can go wrong for very large X, e.g.
+ * the X^2 - 1 = U * V can overflow. But for large X we have
+ * acosh(X) / log(2 X) - 1 =~= 1/(4 * X^2), so for X >= 2^30
+ * we can just later stick X back into the log and tweak up the exponent.
+ * Actually we scale X by 2^-30 and tweak the exponent up by 31,
+ * to stay in the safe range for the later log computation.
+ * Compute a flag now telling us when to do this.
+ */
+        vcmplt_oqps 2496+__svml_sacosh_data_internal(%rip), %ymm3, %ymm1
+        vmovaps   %ymm2, %ymm7
+        vorps     %ymm5, %ymm4, %ymm6
+        vfmsub231ps %ymm3, %ymm3, %ymm7
+
+/* Finally, express Y + W = U * V accurately where Y has <= 8 bits */
+        vmovups   3136+__svml_sacosh_data_internal(%rip), %ymm4
+        vandps    %ymm4, %ymm7, %ymm5
+
+/*
+ * Compute R = 1/sqrt(Y + W) * (1 + d)
+ * Force R to <= 8 significant bits.
+ * This means that R * Y and R^2 * Y are exactly representable.
+ */
+        vrsqrtps  %ymm5, %ymm0
+        vsubps    %ymm5, %ymm7, %ymm7
+        vmovmskps %ymm6, %edx
+        vandps    %ymm4, %ymm0, %ymm6
+
+/*
+ * Compute S = (Y/sqrt(Y + W)) * (1 + d)
+ * and T = (W/sqrt(Y + W)) * (1 + d)
+ * so that S + T = sqrt(Y + W) * (1 + d)
+ * S is exact, and the rounding error in T is OK.
+ */
+        vmulps    %ymm6, %ymm5, %ymm10
+        vmulps    %ymm7, %ymm6, %ymm11
+
+/*
+ * Compute e = -(2 * d + d^2)
+ * The first FMR is exact, and the rounding error in the other is acceptable
+ * since d and e are ~ 2^-8
+ */
+        vmovaps   %ymm2, %ymm8
+        vfnmadd231ps %ymm10, %ymm6, %ymm8
+
+/*
+ * For low-accuracy versions, the computation can be done
+ * just as U + ((S + T) + (S + T) * Corr)
+ */
+        vaddps    %ymm11, %ymm10, %ymm14
+        vfnmadd231ps %ymm11, %ymm6, %ymm8
+
+/* Now multiplex to the case X = 2^-30 * input, Xl = 0 in the "big" case. */
+        vmulps    3200+__svml_sacosh_data_internal(%rip), %ymm3, %ymm6
+        vfmadd213ps 2560+__svml_sacosh_data_internal(%rip), %ymm8, %ymm9
+        vfmadd213ps 2688+__svml_sacosh_data_internal(%rip), %ymm8, %ymm9
+        vmulps    %ymm9, %ymm8, %ymm12
+        vfmadd213ps %ymm14, %ymm12, %ymm14
+
+/*
+ * Now resume the main code.
+ * reduction: compute r,n
+ */
+        vmovups   2368+__svml_sacosh_data_internal(%rip), %ymm12
+        vaddps    %ymm14, %ymm13, %ymm15
+
+/*
+ * Now we feed into the log1p code, using H in place of _VARG1 and
+ * also adding L into Xl.
+ * compute 1+x as high, low parts
+ */
+        vmaxps    %ymm15, %ymm2, %ymm0
+        vminps    %ymm15, %ymm2, %ymm4
+        vaddps    %ymm4, %ymm0, %ymm7
+        vblendvps %ymm1, %ymm7, %ymm6, %ymm9
+        vsubps    %ymm7, %ymm0, %ymm5
+        vpsubd    %ymm12, %ymm9, %ymm10
+        vaddps    %ymm5, %ymm4, %ymm8
+        vpsrad    $23, %ymm10, %ymm13
+        vpand     2432+__svml_sacosh_data_internal(%rip), %ymm10, %ymm11
+        vpslld    $23, %ymm13, %ymm14
+        vpaddd    %ymm12, %ymm11, %ymm4
+        vcvtdq2ps %ymm13, %ymm0
+        vpsubd    %ymm14, %ymm2, %ymm13
+
+/* polynomial evaluation */
+        vsubps    %ymm2, %ymm4, %ymm2
+        vmovups   2208+__svml_sacosh_data_internal(%rip), %ymm4
+        vandps    %ymm1, %ymm8, %ymm15
+        vmulps    %ymm13, %ymm15, %ymm5
+        vaddps    %ymm2, %ymm5, %ymm2
+
+/* Add 31 to the exponent in the "large" case to get log(2 * input) */
+        vaddps    2944+__svml_sacosh_data_internal(%rip), %ymm0, %ymm5
+        vfmadd213ps 2176+__svml_sacosh_data_internal(%rip), %ymm2, %ymm4
+        vblendvps %ymm1, %ymm0, %ymm5, %ymm0
+        vfmadd213ps 2144+__svml_sacosh_data_internal(%rip), %ymm2, %ymm4
+        vfmadd213ps 2112+__svml_sacosh_data_internal(%rip), %ymm2, %ymm4
+        vfmadd213ps 2080+__svml_sacosh_data_internal(%rip), %ymm2, %ymm4
+        vfmadd213ps 2048+__svml_sacosh_data_internal(%rip), %ymm2, %ymm4
+        vfmadd213ps 2016+__svml_sacosh_data_internal(%rip), %ymm2, %ymm4
+        vfmadd213ps 1984+__svml_sacosh_data_internal(%rip), %ymm2, %ymm4
+        vmulps    %ymm4, %ymm2, %ymm6
+        vfmadd213ps %ymm2, %ymm2, %ymm6
+
+/* final reconstruction */
+        vfmadd132ps 3264+__svml_sacosh_data_internal(%rip), %ymm6, %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   %ymm3, 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_sacosh_cout_rare_internal
+        jmp       .LBL_1_8
+
+END(_ZGVdN8v_acoshf_avx2)
+
+        .align    16,0x90
+
+__svml_sacosh_cout_rare_internal:
+
+        cfi_startproc
+
+        movl      (%rdi), %eax
+        movl      %eax, -8(%rsp)
+        andl      $2139095040, %eax
+        cmpl      $2139095040, %eax
+        je        .LBL_2_8
+
+.LBL_2_2:
+        movl      -8(%rsp), %eax
+        cmpl      $1065353216, %eax
+        je        .LBL_2_7
+        cmpl      $2139095040, %eax
+        jne       .LBL_2_5
+        movl      8+__sacosh_la__iml_sacosh_cout_tab(%rip), %eax
+        movl      %eax, (%rsi)
+        xorl      %eax, %eax
+        ret
+
+.LBL_2_5:
+        movss     8+__sacosh_la__iml_sacosh_cout_tab(%rip), %xmm0
+        movl      $1, %eax
+        mulss     4+__sacosh_la__iml_sacosh_cout_tab(%rip), %xmm0
+        movss     %xmm0, (%rsi)
+        ret
+
+.LBL_2_7:
+        movl      4+__sacosh_la__iml_sacosh_cout_tab(%rip), %eax
+        movl      %eax, (%rsi)
+        xorl      %eax, %eax
+        ret
+
+.LBL_2_8:
+        testl     $8388607, -8(%rsp)
+        je        .LBL_2_2
+        movss     -8(%rsp), %xmm0
+        xorl      %eax, %eax
+        mulss     -8(%rsp), %xmm0
+        movss     %xmm0, (%rsi)
+        ret
+
+        cfi_endproc
+
+        .type	__svml_sacosh_cout_rare_internal,@function
+        .size	__svml_sacosh_cout_rare_internal,.-__svml_sacosh_cout_rare_internal
+
+        .section .rodata, "a"
+        .align 64
+
+__svml_sacosh_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	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_sacosh_data_internal,@object
+        .size	__svml_sacosh_data_internal,3520
+        .align 4
+
+__sacosh_la__iml_sacosh_cout_tab:
+        .long	1065353216
+        .long	0
+        .long	2139095040
+        .type	__sacosh_la__iml_sacosh_cout_tab,@object
+        .size	__sacosh_la__iml_sacosh_cout_tab,12
diff --git a/sysdeps/x86_64/fpu/svml_d_acosh2_core.S b/sysdeps/x86_64/fpu/svml_d_acosh2_core.S
new file mode 100644
index 0000000000..42bd5c1b5d
--- /dev/null
+++ b/sysdeps/x86_64/fpu/svml_d_acosh2_core.S
@@ -0,0 +1,29 @@ 
+/* Function acosh 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_acosh)
+WRAPPER_IMPL_SSE2 acosh
+END (_ZGVbN2v_acosh)
+
+#ifndef USE_MULTIARCH
+ libmvec_hidden_def (_ZGVbN2v_acosh)
+#endif
diff --git a/sysdeps/x86_64/fpu/svml_d_acosh4_core.S b/sysdeps/x86_64/fpu/svml_d_acosh4_core.S
new file mode 100644
index 0000000000..433192bae1
--- /dev/null
+++ b/sysdeps/x86_64/fpu/svml_d_acosh4_core.S
@@ -0,0 +1,29 @@ 
+/* Function acosh 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_acosh)
+WRAPPER_IMPL_AVX _ZGVbN2v_acosh
+END (_ZGVdN4v_acosh)
+
+#ifndef USE_MULTIARCH
+ libmvec_hidden_def (_ZGVdN4v_acosh)
+#endif
diff --git a/sysdeps/x86_64/fpu/svml_d_acosh4_core_avx.S b/sysdeps/x86_64/fpu/svml_d_acosh4_core_avx.S
new file mode 100644
index 0000000000..9e60289c45
--- /dev/null
+++ b/sysdeps/x86_64/fpu/svml_d_acosh4_core_avx.S
@@ -0,0 +1,25 @@ 
+/* Function acosh 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_acosh)
+WRAPPER_IMPL_AVX _ZGVbN2v_acosh
+END (_ZGVcN4v_acosh)
diff --git a/sysdeps/x86_64/fpu/svml_d_acosh8_core.S b/sysdeps/x86_64/fpu/svml_d_acosh8_core.S
new file mode 100644
index 0000000000..ef1f8b3426
--- /dev/null
+++ b/sysdeps/x86_64/fpu/svml_d_acosh8_core.S
@@ -0,0 +1,25 @@ 
+/* Function acosh 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_acosh)
+WRAPPER_IMPL_AVX512 _ZGVdN4v_acosh
+END (_ZGVeN8v_acosh)
diff --git a/sysdeps/x86_64/fpu/svml_s_acoshf16_core.S b/sysdeps/x86_64/fpu/svml_s_acoshf16_core.S
new file mode 100644
index 0000000000..41c0241492
--- /dev/null
+++ b/sysdeps/x86_64/fpu/svml_s_acoshf16_core.S
@@ -0,0 +1,25 @@ 
+/* Function acoshf 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_acoshf)
+WRAPPER_IMPL_AVX512 _ZGVdN8v_acoshf
+END (_ZGVeN16v_acoshf)
diff --git a/sysdeps/x86_64/fpu/svml_s_acoshf4_core.S b/sysdeps/x86_64/fpu/svml_s_acoshf4_core.S
new file mode 100644
index 0000000000..2ef7f428c0
--- /dev/null
+++ b/sysdeps/x86_64/fpu/svml_s_acoshf4_core.S
@@ -0,0 +1,29 @@ 
+/* Function acoshf 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_acoshf)
+WRAPPER_IMPL_SSE2 acoshf
+END (_ZGVbN4v_acoshf)
+
+#ifndef USE_MULTIARCH
+ libmvec_hidden_def (_ZGVbN4v_acoshf)
+#endif
diff --git a/sysdeps/x86_64/fpu/svml_s_acoshf8_core.S b/sysdeps/x86_64/fpu/svml_s_acoshf8_core.S
new file mode 100644
index 0000000000..40f1066ce2
--- /dev/null
+++ b/sysdeps/x86_64/fpu/svml_s_acoshf8_core.S
@@ -0,0 +1,29 @@ 
+/* Function acoshf 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_acoshf)
+WRAPPER_IMPL_AVX _ZGVbN4v_acoshf
+END (_ZGVdN8v_acoshf)
+
+#ifndef USE_MULTIARCH
+ libmvec_hidden_def (_ZGVdN8v_acoshf)
+#endif
diff --git a/sysdeps/x86_64/fpu/svml_s_acoshf8_core_avx.S b/sysdeps/x86_64/fpu/svml_s_acoshf8_core_avx.S
new file mode 100644
index 0000000000..b44a9ed28b
--- /dev/null
+++ b/sysdeps/x86_64/fpu/svml_s_acoshf8_core_avx.S
@@ -0,0 +1,25 @@ 
+/* Function acoshf 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_acoshf)
+WRAPPER_IMPL_AVX _ZGVbN4v_acoshf
+END (_ZGVcN8v_acoshf)
diff --git a/sysdeps/x86_64/fpu/test-double-libmvec-acosh-avx.c b/sysdeps/x86_64/fpu/test-double-libmvec-acosh-avx.c
new file mode 100644
index 0000000000..331c6d71cc
--- /dev/null
+++ b/sysdeps/x86_64/fpu/test-double-libmvec-acosh-avx.c
@@ -0,0 +1 @@ 
+#include "test-double-libmvec-acosh.c"
diff --git a/sysdeps/x86_64/fpu/test-double-libmvec-acosh-avx2.c b/sysdeps/x86_64/fpu/test-double-libmvec-acosh-avx2.c
new file mode 100644
index 0000000000..331c6d71cc
--- /dev/null
+++ b/sysdeps/x86_64/fpu/test-double-libmvec-acosh-avx2.c
@@ -0,0 +1 @@ 
+#include "test-double-libmvec-acosh.c"
diff --git a/sysdeps/x86_64/fpu/test-double-libmvec-acosh-avx512f.c b/sysdeps/x86_64/fpu/test-double-libmvec-acosh-avx512f.c
new file mode 100644
index 0000000000..331c6d71cc
--- /dev/null
+++ b/sysdeps/x86_64/fpu/test-double-libmvec-acosh-avx512f.c
@@ -0,0 +1 @@ 
+#include "test-double-libmvec-acosh.c"
diff --git a/sysdeps/x86_64/fpu/test-double-libmvec-acosh.c b/sysdeps/x86_64/fpu/test-double-libmvec-acosh.c
new file mode 100644
index 0000000000..19b5997414
--- /dev/null
+++ b/sysdeps/x86_64/fpu/test-double-libmvec-acosh.c
@@ -0,0 +1,3 @@ 
+#define LIBMVEC_TYPE double
+#define LIBMVEC_FUNC acosh
+#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 0abc7d2021..3a6b956116 100644
--- a/sysdeps/x86_64/fpu/test-double-vlen2-wrappers.c
+++ b/sysdeps/x86_64/fpu/test-double-vlen2-wrappers.c
@@ -28,6 +28,7 @@  VECTOR_WRAPPER (WRAPPER_NAME (log), _ZGVbN2v_log)
 VECTOR_WRAPPER (WRAPPER_NAME (exp), _ZGVbN2v_exp)
 VECTOR_WRAPPER_ff (WRAPPER_NAME (pow), _ZGVbN2vv_pow)
 VECTOR_WRAPPER (WRAPPER_NAME (acos), _ZGVbN2v_acos)
+VECTOR_WRAPPER (WRAPPER_NAME (acosh), _ZGVbN2v_acosh)
 
 #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 dda093b914..55dd89aa4d 100644
--- a/sysdeps/x86_64/fpu/test-double-vlen4-avx2-wrappers.c
+++ b/sysdeps/x86_64/fpu/test-double-vlen4-avx2-wrappers.c
@@ -31,6 +31,7 @@  VECTOR_WRAPPER (WRAPPER_NAME (log), _ZGVdN4v_log)
 VECTOR_WRAPPER (WRAPPER_NAME (exp), _ZGVdN4v_exp)
 VECTOR_WRAPPER_ff (WRAPPER_NAME (pow), _ZGVdN4vv_pow)
 VECTOR_WRAPPER (WRAPPER_NAME (acos), _ZGVdN4v_acos)
+VECTOR_WRAPPER (WRAPPER_NAME (acosh), _ZGVdN4v_acosh)
 
 #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 f3230463bb..93a05f8eac 100644
--- a/sysdeps/x86_64/fpu/test-double-vlen4-wrappers.c
+++ b/sysdeps/x86_64/fpu/test-double-vlen4-wrappers.c
@@ -28,6 +28,7 @@  VECTOR_WRAPPER (WRAPPER_NAME (log), _ZGVcN4v_log)
 VECTOR_WRAPPER (WRAPPER_NAME (exp), _ZGVcN4v_exp)
 VECTOR_WRAPPER_ff (WRAPPER_NAME (pow), _ZGVcN4vv_pow)
 VECTOR_WRAPPER (WRAPPER_NAME (acos), _ZGVcN4v_acos)
+VECTOR_WRAPPER (WRAPPER_NAME (acosh), _ZGVcN4v_acosh)
 
 #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 cf9f52faf0..284fc75888 100644
--- a/sysdeps/x86_64/fpu/test-double-vlen8-wrappers.c
+++ b/sysdeps/x86_64/fpu/test-double-vlen8-wrappers.c
@@ -28,6 +28,7 @@  VECTOR_WRAPPER (WRAPPER_NAME (log), _ZGVeN8v_log)
 VECTOR_WRAPPER (WRAPPER_NAME (exp), _ZGVeN8v_exp)
 VECTOR_WRAPPER_ff (WRAPPER_NAME (pow), _ZGVeN8vv_pow)
 VECTOR_WRAPPER (WRAPPER_NAME (acos), _ZGVeN8v_acos)
+VECTOR_WRAPPER (WRAPPER_NAME (acosh), _ZGVeN8v_acosh)
 
 #ifndef __ILP32__
 # define VEC_INT_TYPE __m512i
diff --git a/sysdeps/x86_64/fpu/test-float-libmvec-acoshf-avx.c b/sysdeps/x86_64/fpu/test-float-libmvec-acoshf-avx.c
new file mode 100644
index 0000000000..7d75108bc0
--- /dev/null
+++ b/sysdeps/x86_64/fpu/test-float-libmvec-acoshf-avx.c
@@ -0,0 +1 @@ 
+#include "test-float-libmvec-acoshf.c"
diff --git a/sysdeps/x86_64/fpu/test-float-libmvec-acoshf-avx2.c b/sysdeps/x86_64/fpu/test-float-libmvec-acoshf-avx2.c
new file mode 100644
index 0000000000..7d75108bc0
--- /dev/null
+++ b/sysdeps/x86_64/fpu/test-float-libmvec-acoshf-avx2.c
@@ -0,0 +1 @@ 
+#include "test-float-libmvec-acoshf.c"
diff --git a/sysdeps/x86_64/fpu/test-float-libmvec-acoshf-avx512f.c b/sysdeps/x86_64/fpu/test-float-libmvec-acoshf-avx512f.c
new file mode 100644
index 0000000000..7d75108bc0
--- /dev/null
+++ b/sysdeps/x86_64/fpu/test-float-libmvec-acoshf-avx512f.c
@@ -0,0 +1 @@ 
+#include "test-float-libmvec-acoshf.c"
diff --git a/sysdeps/x86_64/fpu/test-float-libmvec-acoshf.c b/sysdeps/x86_64/fpu/test-float-libmvec-acoshf.c
new file mode 100644
index 0000000000..f8b536df2e
--- /dev/null
+++ b/sysdeps/x86_64/fpu/test-float-libmvec-acoshf.c
@@ -0,0 +1,3 @@ 
+#define LIBMVEC_TYPE float
+#define LIBMVEC_FUNC acoshf
+#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 abbd3ed870..69c45f82a4 100644
--- a/sysdeps/x86_64/fpu/test-float-vlen16-wrappers.c
+++ b/sysdeps/x86_64/fpu/test-float-vlen16-wrappers.c
@@ -28,6 +28,7 @@  VECTOR_WRAPPER (WRAPPER_NAME (logf), _ZGVeN16v_logf)
 VECTOR_WRAPPER (WRAPPER_NAME (expf), _ZGVeN16v_expf)
 VECTOR_WRAPPER_ff (WRAPPER_NAME (powf), _ZGVeN16vv_powf)
 VECTOR_WRAPPER (WRAPPER_NAME (acosf), _ZGVeN16v_acosf)
+VECTOR_WRAPPER (WRAPPER_NAME (acoshf), _ZGVeN16v_acoshf)
 
 #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 8a24027952..05296b1c06 100644
--- a/sysdeps/x86_64/fpu/test-float-vlen4-wrappers.c
+++ b/sysdeps/x86_64/fpu/test-float-vlen4-wrappers.c
@@ -28,6 +28,7 @@  VECTOR_WRAPPER (WRAPPER_NAME (logf), _ZGVbN4v_logf)
 VECTOR_WRAPPER (WRAPPER_NAME (expf), _ZGVbN4v_expf)
 VECTOR_WRAPPER_ff (WRAPPER_NAME (powf), _ZGVbN4vv_powf)
 VECTOR_WRAPPER (WRAPPER_NAME (acosf), _ZGVbN4v_acosf)
+VECTOR_WRAPPER (WRAPPER_NAME (acoshf), _ZGVbN4v_acoshf)
 
 #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 aff0442606..13b9aba8d9 100644
--- a/sysdeps/x86_64/fpu/test-float-vlen8-avx2-wrappers.c
+++ b/sysdeps/x86_64/fpu/test-float-vlen8-avx2-wrappers.c
@@ -31,6 +31,7 @@  VECTOR_WRAPPER (WRAPPER_NAME (logf), _ZGVdN8v_logf)
 VECTOR_WRAPPER (WRAPPER_NAME (expf), _ZGVdN8v_expf)
 VECTOR_WRAPPER_ff (WRAPPER_NAME (powf), _ZGVdN8vv_powf)
 VECTOR_WRAPPER (WRAPPER_NAME (acosf), _ZGVdN8v_acosf)
+VECTOR_WRAPPER (WRAPPER_NAME (acoshf), _ZGVdN8v_acoshf)
 
 /* 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 913584d111..274b742448 100644
--- a/sysdeps/x86_64/fpu/test-float-vlen8-wrappers.c
+++ b/sysdeps/x86_64/fpu/test-float-vlen8-wrappers.c
@@ -28,6 +28,7 @@  VECTOR_WRAPPER (WRAPPER_NAME (logf), _ZGVcN8v_logf)
 VECTOR_WRAPPER (WRAPPER_NAME (expf), _ZGVcN8v_expf)
 VECTOR_WRAPPER_ff (WRAPPER_NAME (powf), _ZGVcN8vv_powf)
 VECTOR_WRAPPER (WRAPPER_NAME (acosf), _ZGVcN8v_acosf)
+VECTOR_WRAPPER (WRAPPER_NAME (acoshf), _ZGVcN8v_acoshf)
 
 #define VEC_INT_TYPE __m128i