From patchwork Wed Nov 24 19:37:44 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Sunil Pandey X-Patchwork-Id: 48106 Return-Path: X-Original-To: patchwork@sourceware.org Delivered-To: patchwork@sourceware.org Received: from server2.sourceware.org (localhost [IPv6:::1]) by sourceware.org (Postfix) with ESMTP id DDBEC3857C76 for ; Wed, 24 Nov 2021 20:32:49 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org DDBEC3857C76 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=sourceware.org; s=default; t=1637785970; bh=Ji2IqP1IVu50lJYd4rKZLqLTzQVs6XvHY3kHNqYbizo=; h=To:Subject:Date:In-Reply-To:References:List-Id:List-Unsubscribe: List-Archive:List-Post:List-Help:List-Subscribe:From:Reply-To:Cc: From; b=T3Jya3UVtoXo/zzB0CMBfXM9jgly0Qmg764NC4WPwjXUMyDtRkgXHAuQu4UynoEal avk4YUzHOnnN9/ozkk5aZx3ApnDLGecAF/pzUKFCP3RNCFl9mgn3gDgUOolY5bFzjv tpnu/zL3E5eDBh/zBzpgGiTlNRWWSog1qu8Uyo8k= X-Original-To: libc-alpha@sourceware.org Delivered-To: libc-alpha@sourceware.org Received: from mga07.intel.com (mga07.intel.com [134.134.136.100]) by sourceware.org (Postfix) with ESMTPS id A01613858031 for ; Wed, 24 Nov 2021 19:38:30 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.1 sourceware.org A01613858031 X-IronPort-AV: E=McAfee;i="6200,9189,10178"; a="298763435" X-IronPort-AV: E=Sophos;i="5.87,261,1631602800"; d="scan'208";a="298763435" Received: from orsmga004.jf.intel.com ([10.7.209.38]) by orsmga105.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 24 Nov 2021 11:38:12 -0800 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.87,261,1631602800"; d="scan'208";a="607313109" Received: from scymds02.sc.intel.com ([10.82.73.244]) by orsmga004.jf.intel.com with ESMTP; 24 Nov 2021 11:38:11 -0800 Received: from gskx-1.sc.intel.com (gskx-1.sc.intel.com [172.25.149.211]) by scymds02.sc.intel.com with ESMTP id 1AOJc7X6021555; Wed, 24 Nov 2021 11:38:10 -0800 To: libc-alpha@sourceware.org Subject: [PATCH 19/42] x86-64: Add vector erf/erff implementation to libmvec Date: Wed, 24 Nov 2021 11:37:44 -0800 Message-Id: <20211124193807.2093208-20-skpgkp2@gmail.com> X-Mailer: git-send-email 2.31.1 In-Reply-To: <20211124193807.2093208-1-skpgkp2@gmail.com> References: <20211124193807.2093208-1-skpgkp2@gmail.com> MIME-Version: 1.0 X-Spam-Status: No, score=-6.7 required=5.0 tests=BAYES_00, DKIM_ADSP_CUSTOM_MED, FORGED_GMAIL_RCVD, FREEMAIL_ENVFROM_END_DIGIT, FREEMAIL_FROM, GIT_PATCH_0, HK_RANDOM_ENVFROM, HK_RANDOM_FROM, KAM_DMARC_NONE, KAM_DMARC_STATUS, KAM_SHORT, KAM_STOCKGEN, LOTS_OF_MONEY, NML_ADSP_CUSTOM_MED, SPF_HELO_NONE, SPF_SOFTFAIL, TXREP autolearn=ham autolearn_force=no version=3.4.4 X-Spam-Checker-Version: SpamAssassin 3.4.4 (2020-01-24) on server2.sourceware.org X-BeenThere: libc-alpha@sourceware.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Libc-alpha mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-Patchwork-Original-From: Sunil K Pandey via Libc-alpha From: Sunil Pandey Reply-To: Sunil K Pandey Cc: andrey.kolesov@intel.com Errors-To: libc-alpha-bounces+patchwork=sourceware.org@sourceware.org Sender: "Libc-alpha" Implement vectorized erf/erff containing SSE, AVX, AVX2 and AVX512 versions for libmvec as per vector ABI. It also contains accuracy and ABI tests for vector erf/erff 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_erf2_core-sse2.S | 20 + .../x86_64/fpu/multiarch/svml_d_erf2_core.c | 27 + .../fpu/multiarch/svml_d_erf2_core_sse4.S | 5608 +++++++++++++++++ .../fpu/multiarch/svml_d_erf4_core-sse.S | 20 + .../x86_64/fpu/multiarch/svml_d_erf4_core.c | 27 + .../fpu/multiarch/svml_d_erf4_core_avx2.S | 5107 +++++++++++++++ .../fpu/multiarch/svml_d_erf8_core-avx2.S | 20 + .../x86_64/fpu/multiarch/svml_d_erf8_core.c | 27 + .../fpu/multiarch/svml_d_erf8_core_avx512.S | 4087 ++++++++++++ .../fpu/multiarch/svml_s_erff16_core-avx2.S | 20 + .../x86_64/fpu/multiarch/svml_s_erff16_core.c | 28 + .../fpu/multiarch/svml_s_erff16_core_avx512.S | 2199 +++++++ .../fpu/multiarch/svml_s_erff4_core-sse2.S | 20 + .../x86_64/fpu/multiarch/svml_s_erff4_core.c | 28 + .../fpu/multiarch/svml_s_erff4_core_sse4.S | 3439 ++++++++++ .../fpu/multiarch/svml_s_erff8_core-sse.S | 20 + .../x86_64/fpu/multiarch/svml_s_erff8_core.c | 28 + .../fpu/multiarch/svml_s_erff8_core_avx2.S | 3062 +++++++++ sysdeps/x86_64/fpu/svml_d_erf2_core.S | 29 + sysdeps/x86_64/fpu/svml_d_erf4_core.S | 29 + sysdeps/x86_64/fpu/svml_d_erf4_core_avx.S | 25 + sysdeps/x86_64/fpu/svml_d_erf8_core.S | 25 + sysdeps/x86_64/fpu/svml_s_erff16_core.S | 25 + sysdeps/x86_64/fpu/svml_s_erff4_core.S | 29 + sysdeps/x86_64/fpu/svml_s_erff8_core.S | 29 + sysdeps/x86_64/fpu/svml_s_erff8_core_avx.S | 25 + .../x86_64/fpu/test-double-libmvec-erf-avx.c | 1 + .../x86_64/fpu/test-double-libmvec-erf-avx2.c | 1 + .../fpu/test-double-libmvec-erf-avx512f.c | 1 + sysdeps/x86_64/fpu/test-double-libmvec-erf.c | 3 + .../x86_64/fpu/test-double-vlen2-wrappers.c | 1 + .../fpu/test-double-vlen4-avx2-wrappers.c | 1 + .../x86_64/fpu/test-double-vlen4-wrappers.c | 1 + .../x86_64/fpu/test-double-vlen8-wrappers.c | 1 + .../x86_64/fpu/test-float-libmvec-erff-avx.c | 1 + .../x86_64/fpu/test-float-libmvec-erff-avx2.c | 1 + .../fpu/test-float-libmvec-erff-avx512f.c | 1 + sysdeps/x86_64/fpu/test-float-libmvec-erff.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, 24070 insertions(+), 1 deletion(-) create mode 100644 sysdeps/x86_64/fpu/multiarch/svml_d_erf2_core-sse2.S create mode 100644 sysdeps/x86_64/fpu/multiarch/svml_d_erf2_core.c create mode 100644 sysdeps/x86_64/fpu/multiarch/svml_d_erf2_core_sse4.S create mode 100644 sysdeps/x86_64/fpu/multiarch/svml_d_erf4_core-sse.S create mode 100644 sysdeps/x86_64/fpu/multiarch/svml_d_erf4_core.c create mode 100644 sysdeps/x86_64/fpu/multiarch/svml_d_erf4_core_avx2.S create mode 100644 sysdeps/x86_64/fpu/multiarch/svml_d_erf8_core-avx2.S create mode 100644 sysdeps/x86_64/fpu/multiarch/svml_d_erf8_core.c create mode 100644 sysdeps/x86_64/fpu/multiarch/svml_d_erf8_core_avx512.S create mode 100644 sysdeps/x86_64/fpu/multiarch/svml_s_erff16_core-avx2.S create mode 100644 sysdeps/x86_64/fpu/multiarch/svml_s_erff16_core.c create mode 100644 sysdeps/x86_64/fpu/multiarch/svml_s_erff16_core_avx512.S create mode 100644 sysdeps/x86_64/fpu/multiarch/svml_s_erff4_core-sse2.S create mode 100644 sysdeps/x86_64/fpu/multiarch/svml_s_erff4_core.c create mode 100644 sysdeps/x86_64/fpu/multiarch/svml_s_erff4_core_sse4.S create mode 100644 sysdeps/x86_64/fpu/multiarch/svml_s_erff8_core-sse.S create mode 100644 sysdeps/x86_64/fpu/multiarch/svml_s_erff8_core.c create mode 100644 sysdeps/x86_64/fpu/multiarch/svml_s_erff8_core_avx2.S create mode 100644 sysdeps/x86_64/fpu/svml_d_erf2_core.S create mode 100644 sysdeps/x86_64/fpu/svml_d_erf4_core.S create mode 100644 sysdeps/x86_64/fpu/svml_d_erf4_core_avx.S create mode 100644 sysdeps/x86_64/fpu/svml_d_erf8_core.S create mode 100644 sysdeps/x86_64/fpu/svml_s_erff16_core.S create mode 100644 sysdeps/x86_64/fpu/svml_s_erff4_core.S create mode 100644 sysdeps/x86_64/fpu/svml_s_erff8_core.S create mode 100644 sysdeps/x86_64/fpu/svml_s_erff8_core_avx.S create mode 100644 sysdeps/x86_64/fpu/test-double-libmvec-erf-avx.c create mode 100644 sysdeps/x86_64/fpu/test-double-libmvec-erf-avx2.c create mode 100644 sysdeps/x86_64/fpu/test-double-libmvec-erf-avx512f.c create mode 100644 sysdeps/x86_64/fpu/test-double-libmvec-erf.c create mode 100644 sysdeps/x86_64/fpu/test-float-libmvec-erff-avx.c create mode 100644 sysdeps/x86_64/fpu/test-float-libmvec-erff-avx2.c create mode 100644 sysdeps/x86_64/fpu/test-float-libmvec-erff-avx512f.c create mode 100644 sysdeps/x86_64/fpu/test-float-libmvec-erff.c diff --git a/bits/libm-simd-decl-stubs.h b/bits/libm-simd-decl-stubs.h index f028b18620..25ba2824a2 100644 --- a/bits/libm-simd-decl-stubs.h +++ b/bits/libm-simd-decl-stubs.h @@ -197,4 +197,15 @@ #define __DECL_SIMD_coshf32x #define __DECL_SIMD_coshf64x #define __DECL_SIMD_coshf128x + +#define __DECL_SIMD_erf +#define __DECL_SIMD_erff +#define __DECL_SIMD_erfl +#define __DECL_SIMD_erff16 +#define __DECL_SIMD_erff32 +#define __DECL_SIMD_erff64 +#define __DECL_SIMD_erff128 +#define __DECL_SIMD_erff32x +#define __DECL_SIMD_erff64x +#define __DECL_SIMD_erff128x #endif diff --git a/math/bits/mathcalls.h b/math/bits/mathcalls.h index bc5a81b365..3901457082 100644 --- a/math/bits/mathcalls.h +++ b/math/bits/mathcalls.h @@ -228,7 +228,7 @@ __MATHCALL (yn,, (int, _Mdouble_)); #if defined __USE_XOPEN || defined __USE_ISOC99 /* Error and gamma functions. */ -__MATHCALL (erf,, (_Mdouble_)); +__MATHCALL_VEC (erf,, (_Mdouble_)); __MATHCALL (erfc,, (_Mdouble_)); __MATHCALL (lgamma,, (_Mdouble_)); #endif diff --git a/sysdeps/unix/sysv/linux/x86_64/libmvec.abilist b/sysdeps/unix/sysv/linux/x86_64/libmvec.abilist index 4b5753146e..a3bccae8ad 100644 --- a/sysdeps/unix/sysv/linux/x86_64/libmvec.abilist +++ b/sysdeps/unix/sysv/linux/x86_64/libmvec.abilist @@ -54,6 +54,7 @@ GLIBC_2.35 _ZGVbN2v_atan F GLIBC_2.35 _ZGVbN2v_atanh F GLIBC_2.35 _ZGVbN2v_cbrt F GLIBC_2.35 _ZGVbN2v_cosh F +GLIBC_2.35 _ZGVbN2v_erf F GLIBC_2.35 _ZGVbN2vv_atan2 F GLIBC_2.35 _ZGVbN4v_acosf F GLIBC_2.35 _ZGVbN4v_acoshf F @@ -63,6 +64,7 @@ GLIBC_2.35 _ZGVbN4v_atanf F GLIBC_2.35 _ZGVbN4v_atanhf F GLIBC_2.35 _ZGVbN4v_cbrtf F GLIBC_2.35 _ZGVbN4v_coshf F +GLIBC_2.35 _ZGVbN4v_erff F GLIBC_2.35 _ZGVbN4vv_atan2f F GLIBC_2.35 _ZGVcN4v_acos F GLIBC_2.35 _ZGVcN4v_acosh F @@ -72,6 +74,7 @@ GLIBC_2.35 _ZGVcN4v_atan F GLIBC_2.35 _ZGVcN4v_atanh F GLIBC_2.35 _ZGVcN4v_cbrt F GLIBC_2.35 _ZGVcN4v_cosh F +GLIBC_2.35 _ZGVcN4v_erf F GLIBC_2.35 _ZGVcN4vv_atan2 F GLIBC_2.35 _ZGVcN8v_acosf F GLIBC_2.35 _ZGVcN8v_acoshf F @@ -81,6 +84,7 @@ GLIBC_2.35 _ZGVcN8v_atanf F GLIBC_2.35 _ZGVcN8v_atanhf F GLIBC_2.35 _ZGVcN8v_cbrtf F GLIBC_2.35 _ZGVcN8v_coshf F +GLIBC_2.35 _ZGVcN8v_erff F GLIBC_2.35 _ZGVcN8vv_atan2f F GLIBC_2.35 _ZGVdN4v_acos F GLIBC_2.35 _ZGVdN4v_acosh F @@ -90,6 +94,7 @@ GLIBC_2.35 _ZGVdN4v_atan F GLIBC_2.35 _ZGVdN4v_atanh F GLIBC_2.35 _ZGVdN4v_cbrt F GLIBC_2.35 _ZGVdN4v_cosh F +GLIBC_2.35 _ZGVdN4v_erf F GLIBC_2.35 _ZGVdN4vv_atan2 F GLIBC_2.35 _ZGVdN8v_acosf F GLIBC_2.35 _ZGVdN8v_acoshf F @@ -99,6 +104,7 @@ GLIBC_2.35 _ZGVdN8v_atanf F GLIBC_2.35 _ZGVdN8v_atanhf F GLIBC_2.35 _ZGVdN8v_cbrtf F GLIBC_2.35 _ZGVdN8v_coshf F +GLIBC_2.35 _ZGVdN8v_erff F GLIBC_2.35 _ZGVdN8vv_atan2f F GLIBC_2.35 _ZGVeN16v_acosf F GLIBC_2.35 _ZGVeN16v_acoshf F @@ -108,6 +114,7 @@ GLIBC_2.35 _ZGVeN16v_atanf F GLIBC_2.35 _ZGVeN16v_atanhf F GLIBC_2.35 _ZGVeN16v_cbrtf F GLIBC_2.35 _ZGVeN16v_coshf F +GLIBC_2.35 _ZGVeN16v_erff F GLIBC_2.35 _ZGVeN16vv_atan2f F GLIBC_2.35 _ZGVeN8v_acos F GLIBC_2.35 _ZGVeN8v_acosh F @@ -117,4 +124,5 @@ GLIBC_2.35 _ZGVeN8v_atan F GLIBC_2.35 _ZGVeN8v_atanh F GLIBC_2.35 _ZGVeN8v_cbrt F GLIBC_2.35 _ZGVeN8v_cosh F +GLIBC_2.35 _ZGVeN8v_erf F GLIBC_2.35 _ZGVeN8vv_atan2 F diff --git a/sysdeps/x86/fpu/bits/math-vector.h b/sysdeps/x86/fpu/bits/math-vector.h index a8465a23a7..b65f5af463 100644 --- a/sysdeps/x86/fpu/bits/math-vector.h +++ b/sysdeps/x86/fpu/bits/math-vector.h @@ -94,6 +94,10 @@ # define __DECL_SIMD_cosh __DECL_SIMD_x86_64 # undef __DECL_SIMD_coshf # define __DECL_SIMD_coshf __DECL_SIMD_x86_64 +# undef __DECL_SIMD_erf +# define __DECL_SIMD_erf __DECL_SIMD_x86_64 +# undef __DECL_SIMD_erff +# define __DECL_SIMD_erff __DECL_SIMD_x86_64 # endif #endif diff --git a/sysdeps/x86_64/fpu/Makeconfig b/sysdeps/x86_64/fpu/Makeconfig index 29750a07e6..b46ad59255 100644 --- a/sysdeps/x86_64/fpu/Makeconfig +++ b/sysdeps/x86_64/fpu/Makeconfig @@ -32,6 +32,7 @@ libmvec-funcs = \ cbrt \ cos \ cosh \ + erf \ exp \ log \ pow \ diff --git a/sysdeps/x86_64/fpu/Versions b/sysdeps/x86_64/fpu/Versions index 82b5723aca..4532c6c764 100644 --- a/sysdeps/x86_64/fpu/Versions +++ b/sysdeps/x86_64/fpu/Versions @@ -22,6 +22,7 @@ libmvec { _ZGVbN2v_atanh; _ZGVcN4v_atanh; _ZGVdN4v_atanh; _ZGVeN8v_atanh; _ZGVbN2v_cbrt; _ZGVcN4v_cbrt; _ZGVdN4v_cbrt; _ZGVeN8v_cbrt; _ZGVbN2v_cosh; _ZGVcN4v_cosh; _ZGVdN4v_cosh; _ZGVeN8v_cosh; + _ZGVbN2v_erf; _ZGVcN4v_erf; _ZGVdN4v_erf; _ZGVeN8v_erf; _ZGVbN2vv_atan2; _ZGVcN4vv_atan2; _ZGVdN4vv_atan2; _ZGVeN8vv_atan2; _ZGVbN4v_acosf; _ZGVcN8v_acosf; _ZGVdN8v_acosf; _ZGVeN16v_acosf; _ZGVbN4v_acoshf; _ZGVcN8v_acoshf; _ZGVdN8v_acoshf; _ZGVeN16v_acoshf; @@ -31,6 +32,7 @@ libmvec { _ZGVbN4v_atanhf; _ZGVcN8v_atanhf; _ZGVdN8v_atanhf; _ZGVeN16v_atanhf; _ZGVbN4v_cbrtf; _ZGVcN8v_cbrtf; _ZGVdN8v_cbrtf; _ZGVeN16v_cbrtf; _ZGVbN4v_coshf; _ZGVcN8v_coshf; _ZGVdN8v_coshf; _ZGVeN16v_coshf; + _ZGVbN4v_erff; _ZGVcN8v_erff; _ZGVdN8v_erff; _ZGVeN16v_erff; _ZGVbN4vv_atan2f; _ZGVcN8vv_atan2f; _ZGVdN8vv_atan2f; _ZGVeN16vv_atan2f; } } diff --git a/sysdeps/x86_64/fpu/libm-test-ulps b/sysdeps/x86_64/fpu/libm-test-ulps index d9296ac12e..0d9520f9c5 100644 --- a/sysdeps/x86_64/fpu/libm-test-ulps +++ b/sysdeps/x86_64/fpu/libm-test-ulps @@ -1315,6 +1315,26 @@ float: 1 float128: 2 ldouble: 1 +Function: "erf_vlen16": +float: 1 + +Function: "erf_vlen2": +double: 1 + +Function: "erf_vlen4": +double: 1 +float: 2 + +Function: "erf_vlen4_avx2": +double: 1 + +Function: "erf_vlen8": +double: 1 +float: 2 + +Function: "erf_vlen8_avx2": +float: 2 + Function: "erfc": double: 5 float: 3 diff --git a/sysdeps/x86_64/fpu/multiarch/svml_d_erf2_core-sse2.S b/sysdeps/x86_64/fpu/multiarch/svml_d_erf2_core-sse2.S new file mode 100644 index 0000000000..2b5735ebb3 --- /dev/null +++ b/sysdeps/x86_64/fpu/multiarch/svml_d_erf2_core-sse2.S @@ -0,0 +1,20 @@ +/* SSE2 version of vectorized erf, 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 + . */ + +#define _ZGVbN2v_erf _ZGVbN2v_erf_sse2 +#include "../svml_d_erf2_core.S" diff --git a/sysdeps/x86_64/fpu/multiarch/svml_d_erf2_core.c b/sysdeps/x86_64/fpu/multiarch/svml_d_erf2_core.c new file mode 100644 index 0000000000..74757be88f --- /dev/null +++ b/sysdeps/x86_64/fpu/multiarch/svml_d_erf2_core.c @@ -0,0 +1,27 @@ +/* Multiple versions of vectorized erf, 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 + . */ + +#define SYMBOL_NAME _ZGVbN2v_erf +#include "ifunc-mathvec-sse4_1.h" + +libc_ifunc_redirected (REDIRECT_NAME, SYMBOL_NAME, IFUNC_SELECTOR ()); + +#ifdef SHARED +__hidden_ver1 (_ZGVbN2v_erf, __GI__ZGVbN2v_erf, __redirect__ZGVbN2v_erf) + __attribute__ ((visibility ("hidden"))); +#endif diff --git a/sysdeps/x86_64/fpu/multiarch/svml_d_erf2_core_sse4.S b/sysdeps/x86_64/fpu/multiarch/svml_d_erf2_core_sse4.S new file mode 100644 index 0000000000..6c5a835a24 --- /dev/null +++ b/sysdeps/x86_64/fpu/multiarch/svml_d_erf2_core_sse4.S @@ -0,0 +1,5608 @@ +/* Function erf 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: + * + * Basic formula is + * erf(x) ~ erf(x0) + + * + exp(-x0*x0)*D*(1+c0+T*P1(T)+D^2*P3(T)+D^4*P5(T)+D^6*p7+D^8*p9) + * where D=x-x0, T=x0*D + * x0 is x rounded to a specified number of fractional bits (in this case 7), + * except that x0=0 for |x|<3.5/128.0 (using x0=0 for first 4 table entries) + * + * Data table packs both erf(x0)_high and a few bits of erf(x0)_low in one + * entry (in place of redundant exponent bits) + * + */ + +#include + + .text +ENTRY(_ZGVbN2v_erf_sse4) +/* + * vector gather: erf(x0), + * second value is exp(-x0*x0) + */ + lea __svml_derf_data_internal(%rip), %rcx + movups %xmm14, -24(%rsp) + cfi_offset(31, -32) + movups 12288+__svml_derf_data_internal(%rip), %xmm14 + andps %xmm0, %xmm14 + +/* + * erf(x) rounds to 1.0 for x>_MaxThreshold (5.9921875) + * can compute all results in the main path + */ + movaps %xmm14, %xmm4 + +/* save sign */ + pxor %xmm14, %xmm0 + minpd 12352+__svml_derf_data_internal(%rip), %xmm4 + movups 12416+__svml_derf_data_internal(%rip), %xmm6 + movaps %xmm6, %xmm7 + addpd %xmm4, %xmm7 + movaps %xmm7, %xmm3 + psllq $4, %xmm7 + subpd %xmm6, %xmm3 + movd %xmm7, %eax + movups 12480+__svml_derf_data_internal(%rip), %xmm5 + cmpltpd %xmm4, %xmm5 + subpd %xmm3, %xmm4 + mulpd %xmm4, %xmm3 + movups %xmm15, -40(%rsp) + andps %xmm4, %xmm5 + cfi_offset(32, -48) + +/* + * _LA_ polynomial computation + * Start polynomial evaluation + */ + movups 12672+__svml_derf_data_internal(%rip), %xmm15 + mulpd %xmm3, %xmm15 + +/* D2 = Diff^2 */ + mulpd %xmm5, %xmm5 + addpd 12736+__svml_derf_data_internal(%rip), %xmm15 + +/* NaN fixup */ + minpd %xmm14, %xmm4 + mulpd %xmm3, %xmm15 + movups 12800+__svml_derf_data_internal(%rip), %xmm6 + +/* T^2 */ + movaps %xmm3, %xmm14 + mulpd %xmm3, %xmm6 + addpd 13056+__svml_derf_data_internal(%rip), %xmm15 + addpd 12864+__svml_derf_data_internal(%rip), %xmm6 + mulpd %xmm3, %xmm14 + mulpd %xmm3, %xmm6 + mulpd %xmm3, %xmm15 + addpd 13120+__svml_derf_data_internal(%rip), %xmm6 + addpd 13184+__svml_derf_data_internal(%rip), %xmm15 + mulpd %xmm3, %xmm6 + +/* P1 = T^2*P1 - T */ + mulpd %xmm15, %xmm14 + pshufd $2, %xmm7, %xmm1 + +/* Sign | Diff */ + pxor %xmm0, %xmm4 + movups 12928+__svml_derf_data_internal(%rip), %xmm7 + mulpd %xmm3, %xmm7 + movd %xmm1, %edx + movups -40(%rsp), %xmm15 + cfi_restore(32) + addpd 12992+__svml_derf_data_internal(%rip), %xmm7 + subpd %xmm3, %xmm14 + mulpd %xmm5, %xmm7 + addpd 13248+__svml_derf_data_internal(%rip), %xmm7 + addpd %xmm6, %xmm7 + movslq %eax, %rax + +/* P1 + P3*D2 */ + mulpd %xmm7, %xmm5 + movslq %edx, %rdx + movups (%rcx,%rax), %xmm2 + movaps %xmm2, %xmm1 + addpd %xmm5, %xmm14 + unpckhpd (%rcx,%rdx), %xmm2 + +/* exp_h(x0) * Diff */ + mulpd %xmm4, %xmm2 + +/* + * branch-free + * low part of result: exp_h(x0) * Diff*(1+P1) + */ + mulpd %xmm2, %xmm14 + addpd %xmm14, %xmm2 + movhpd (%rcx,%rdx), %xmm1 + +/* Sign | _Erf_H */ + pxor %xmm0, %xmm1 + +/* Final result */ + addpd %xmm2, %xmm1 + movups -24(%rsp), %xmm14 + cfi_restore(31) + +/* Fix erf(-0) = -0 */ + orps %xmm1, %xmm0 + ret + +END(_ZGVbN2v_erf_sse4) + + .align 16,0x90 + +__svml_derf_cout_rare_internal: + + cfi_startproc + + movq %rdi, %r8 + lea 64+_imldErfHATab(%rip), %rdx + movb 7(%r8), %cl + movb %cl, %al + andb $-128, %al + shrb $7, %al + movzbl %al, %edi + movzwl 6(%r8), %eax + andl $32752, %eax + shrl $4, %eax + movq (%rdx,%rdi,8), %rdx + cmpl $2047, %eax + je .LBL_2_13 + cmpl $2046, %eax + jne .LBL_2_4 + +.LBL_2_3: + movq %rdx, (%rsi) + jmp .LBL_2_11 + +.LBL_2_4: + movsd (%r8), %xmm6 + andb $127, %cl + movsd %xmm6, -8(%rsp) + movb %cl, -1(%rsp) + movsd -8(%rsp), %xmm0 + ucomisd 48+_imldErfHATab(%rip), %xmm0 + jp .LBL_2_5 + je .LBL_2_12 + +.LBL_2_5: + testl %eax, %eax + jne .LBL_2_7 + comisd 88+_imldErfHATab(%rip), %xmm0 + jb .LBL_2_8 + +.LBL_2_7: + movsd 24+_imldErfHATab(%rip), %xmm0 + mulsd %xmm0, %xmm6 + movsd 40+_imldErfHATab(%rip), %xmm1 + mulsd %xmm6, %xmm1 + movsd %xmm1, -24(%rsp) + movsd -24(%rsp), %xmm2 + movsd 8+_imldErfHATab(%rip), %xmm12 + subsd %xmm6, %xmm2 + movsd %xmm2, -16(%rsp) + movsd -24(%rsp), %xmm4 + movsd -16(%rsp), %xmm3 + movsd 8+_imldErfHATab(%rip), %xmm9 + subsd %xmm3, %xmm4 + movsd %xmm4, -24(%rsp) + movsd -24(%rsp), %xmm5 + subsd %xmm5, %xmm6 + movsd %xmm6, -16(%rsp) + movsd 16+_imldErfHATab(%rip), %xmm6 + movsd -24(%rsp), %xmm7 + movaps %xmm6, %xmm10 + movsd -16(%rsp), %xmm8 + mulsd %xmm7, %xmm12 + mulsd %xmm8, %xmm10 + mulsd %xmm6, %xmm7 + mulsd %xmm8, %xmm9 + addsd %xmm7, %xmm10 + addsd %xmm9, %xmm10 + movsd %xmm10, -24(%rsp) + movsd -24(%rsp), %xmm11 + addsd %xmm11, %xmm12 + mulsd 32+_imldErfHATab(%rip), %xmm12 + movsd %xmm12, (%rsi) + jmp .LBL_2_11 + +.LBL_2_8: + comisd 80+_imldErfHATab(%rip), %xmm0 + jb .LBL_2_10 + movsd 24+_imldErfHATab(%rip), %xmm0 + mulsd %xmm0, %xmm6 + movsd 40+_imldErfHATab(%rip), %xmm1 + mulsd %xmm6, %xmm1 + movsd %xmm1, -24(%rsp) + movsd -24(%rsp), %xmm2 + movsd 8+_imldErfHATab(%rip), %xmm0 + subsd %xmm6, %xmm2 + movsd %xmm2, -16(%rsp) + movsd -24(%rsp), %xmm4 + movsd -16(%rsp), %xmm3 + movsd 8+_imldErfHATab(%rip), %xmm9 + subsd %xmm3, %xmm4 + movsd %xmm4, -24(%rsp) + movsd -24(%rsp), %xmm5 + movsd 40+_imldErfHATab(%rip), %xmm11 + subsd %xmm5, %xmm6 + movsd %xmm6, -16(%rsp) + movsd 16+_imldErfHATab(%rip), %xmm6 + movsd -24(%rsp), %xmm7 + movaps %xmm6, %xmm10 + movsd -16(%rsp), %xmm8 + mulsd %xmm7, %xmm0 + mulsd %xmm8, %xmm10 + mulsd %xmm6, %xmm7 + mulsd %xmm8, %xmm9 + mulsd %xmm0, %xmm11 + addsd %xmm7, %xmm10 + addsd %xmm9, %xmm10 + movsd %xmm10, -24(%rsp) + movsd -24(%rsp), %xmm1 + movsd %xmm11, -24(%rsp) + movsd -24(%rsp), %xmm12 + subsd %xmm0, %xmm12 + movsd %xmm12, -16(%rsp) + movsd -24(%rsp), %xmm14 + movsd -16(%rsp), %xmm13 + subsd %xmm13, %xmm14 + movsd %xmm14, -24(%rsp) + movsd -24(%rsp), %xmm15 + subsd %xmm15, %xmm0 + movsd %xmm0, -16(%rsp) + movsd -24(%rsp), %xmm12 + movsd -16(%rsp), %xmm11 + mulsd 32+_imldErfHATab(%rip), %xmm12 + addsd %xmm11, %xmm1 + mulsd 32+_imldErfHATab(%rip), %xmm1 + movsd %xmm12, -24(%rsp) + movsd %xmm1, -16(%rsp) + movsd -24(%rsp), %xmm3 + movsd -16(%rsp), %xmm2 + addsd %xmm2, %xmm3 + movsd %xmm3, (%rsi) + jmp .LBL_2_11 + +.LBL_2_10: + movsd _imldErfHATab(%rip), %xmm0 + mulsd %xmm0, %xmm6 + movsd %xmm6, (%rsi) + +.LBL_2_11: + xorl %eax, %eax + ret + +.LBL_2_12: + lea 48+_imldErfHATab(%rip), %rax + movq (%rax,%rdi,8), %rdx + movq %rdx, (%rsi) + jmp .LBL_2_11 + +.LBL_2_13: + testl $1048575, 4(%r8) + jne .LBL_2_16 + cmpl $0, (%r8) + je .LBL_2_3 + +.LBL_2_16: + movsd (%r8), %xmm0 + addsd %xmm0, %xmm0 + movsd %xmm0, (%rsi) + jmp .LBL_2_11 + + cfi_endproc + + .type __svml_derf_cout_rare_internal,@function + .size __svml_derf_cout_rare_internal,.-__svml_derf_cout_rare_internal + + .section .rodata, "a" + .align 64 + +__svml_derf_data_internal: + .long 0 + .long 0 + .long 1346542445 + .long 1072827863 + .long 1038816064 + .long 1065487807 + .long 427149405 + .long 1072827791 + .long 138352544 + .long 1066536311 + .long 2077512391 + .long 1072827574 + .long 217416924 + .long 1067127678 + .long 2343319233 + .long 1072827213 + .long 1172120888 + .long 1067584598 + .long 1792097487 + .long 1072826708 + .long 1002214694 + .long 1067880029 + .long 1217900872 + .long 1072826059 + .long 4011022149 + .long 1068175279 + .long 1640824915 + .long 1072825266 + .long 2008889377 + .long 1068470314 + .long 11417604 + .long 1072824330 + .long 2162755160 + .long 1068632020 + .long 2094822099 + .long 1072823250 + .long 3900605843 + .long 1068779267 + .long 995044552 + .long 1072822028 + .long 2716351325 + .long 1068926353 + .long 2923726463 + .long 1072820663 + .long 3951725859 + .long 1069073259 + .long 1429174619 + .long 1072819157 + .long 344622906 + .long 1069219969 + .long 3164864724 + .long 1072817509 + .long 2121311411 + .long 1069366463 + .long 2118204713 + .long 1072815721 + .long 2663955280 + .long 1069512725 + .long 1083806794 + .long 1072813793 + .long 6252005 + .long 1069603129 + .long 3071858204 + .long 1072811725 + .long 2740730761 + .long 1069676001 + .long 2716363190 + .long 1072809519 + .long 368405780 + .long 1069748732 + .long 3453061548 + .long 1072807175 + .long 3270920537 + .long 1069821311 + .long 337483221 + .long 1072804695 + .long 589420486 + .long 1069893732 + .long 1517584741 + .long 1072802078 + .long 3187124383 + .long 1069965984 + .long 2461623467 + .long 1072799326 + .long 712400798 + .long 1070038061 + .long 3135584772 + .long 1072796440 + .long 266066941 + .long 1070109953 + .long 3705654820 + .long 1072793421 + .long 644014413 + .long 1070181652 + .long 240577552 + .long 1072790271 + .long 939402534 + .long 1070253150 + .long 1888734604 + .long 1072786989 + .long 554739272 + .long 1070324439 + .long 810473775 + .long 1072783578 + .long 3508744759 + .long 1070395510 + .long 2239870849 + .long 1072780038 + .long 1268186934 + .long 1070466357 + .long 3006777612 + .long 1072776371 + .long 2824159458 + .long 1070536970 + .long 123537259 + .long 1072772579 + .long 2319306557 + .long 1070601719 + .long 3666566110 + .long 1072768661 + .long 1770174792 + .long 1070636781 + .long 2413196824 + .long 1072764621 + .long 515431986 + .long 1070671715 + .long 2492870238 + .long 1072760459 + .long 3794982409 + .long 1070706516 + .long 1613725249 + .long 1072756177 + .long 4163230114 + .long 1070741182 + .long 1943804817 + .long 1072751776 + .long 2969010815 + .long 1070775709 + .long 1517338984 + .long 1072747258 + .long 1770633177 + .long 1070810093 + .long 2820813657 + .long 1072742624 + .long 2340732634 + .long 1070844330 + .long 4199089955 + .long 1072737876 + .long 2376033378 + .long 1070878417 + .long 4146348395 + .long 1072733016 + .long 4091885358 + .long 1070912350 + .long 1301992007 + .long 1072728046 + .long 1341835662 + .long 1070946127 + .long 3036413564 + .long 1072722966 + .long 1096806975 + .long 1070979743 + .long 3971924632 + .long 1072717779 + .long 1974469745 + .long 1071013195 + .long 3158326576 + .long 1072712487 + .long 2833250162 + .long 1071046480 + .long 4068552111 + .long 1072707091 + .long 2776266431 + .long 1071079595 + .long 1709348165 + .long 1072701594 + .long 1155126244 + .long 1071112537 + .long 4091643817 + .long 1072695996 + .long 1868551104 + .long 1071145302 + .long 27554567 + .long 1072687355 + .long 480989547 + .long 1071177888 + .long 4013208754 + .long 1072675771 + .long 1405858118 + .long 1071210291 + .long 2463469560 + .long 1072664000 + .long 728899385 + .long 1071242509 + .long 3673248531 + .long 1072652044 + .long 3391132564 + .long 1071274538 + .long 3245080601 + .long 1072639908 + .long 1716951687 + .long 1071306377 + .long 1259566555 + .long 1072627596 + .long 1186716264 + .long 1071338022 + .long 2265889960 + .long 1072615111 + .long 3259520440 + .long 1071369470 + .long 2387383118 + .long 1072602458 + .long 1080714748 + .long 1071400720 + .long 2196854969 + .long 1072589641 + .long 959081773 + .long 1071431768 + .long 2412015218 + .long 1072576664 + .long 894188496 + .long 1071462612 + .long 3885838402 + .long 1072563531 + .long 3463326280 + .long 1071493249 + .long 3301940522 + .long 1072550247 + .long 2938496088 + .long 1071523678 + .long 1754844591 + .long 1072536816 + .long 2468013648 + .long 1071553896 + .long 445338472 + .long 1072523242 + .long 1193192369 + .long 1071583901 + .long 670801289 + .long 1072509529 + .long 2839711645 + .long 1071613690 + .long 3815538169 + .long 1072495681 + .long 2833997776 + .long 1071643262 + .long 2751195712 + .long 1072481704 + .long 2742112668 + .long 1071658643 + .long 3301970792 + .long 1072467601 + .long 1253231335 + .long 1071673209 + .long 2760175517 + .long 1072453377 + .long 1545137618 + .long 1071687663 + .long 2761576465 + .long 1072439036 + .long 4064802502 + .long 1071702004 + .long 685940062 + .long 1072424583 + .long 816685333 + .long 1071716233 + .long 2532463670 + .long 1072410021 + .long 1132731221 + .long 1071730347 + .long 1435524088 + .long 1072395356 + .long 1607720272 + .long 1071744346 + .long 3425128494 + .long 1072380591 + .long 3279184281 + .long 1071758229 + .long 1647826366 + .long 1072365732 + .long 3037447390 + .long 1071771996 + .long 2127303697 + .long 1072350782 + .long 2215464304 + .long 1071785646 + .long 2280417801 + .long 1072335746 + .long 2293685631 + .long 1071799178 + .long 3793057312 + .long 1072320628 + .long 604852941 + .long 1071812592 + .long 4021258398 + .long 1072305433 + .long 3218593473 + .long 1071825886 + .long 277321282 + .long 1072290166 + .long 3466207732 + .long 1071839061 + .long 2705965375 + .long 1072274829 + .long 3415062139 + .long 1071852116 + .long 4210920931 + .long 1072259428 + .long 983176269 + .long 1071865051 + .long 1921243050 + .long 1072243968 + .long 2823547761 + .long 1071877864 + .long 1477876472 + .long 1072228452 + .long 2848673694 + .long 1071890556 + .long 4140476189 + .long 1072212884 + .long 3704680757 + .long 1071903126 + .long 2484292510 + .long 1072197270 + .long 3885653926 + .long 1071915574 + .long 1866994493 + .long 1072181613 + .long 2027772262 + .long 1071927900 + .long 3240926857 + .long 1072165917 + .long 1203383746 + .long 1071940103 + .long 3145379609 + .long 1072150187 + .long 330118419 + .long 1071952183 + .long 2288940035 + .long 1072134427 + .long 2759812044 + .long 1071964139 + .long 1247094627 + .long 1072118641 + .long 3392535852 + .long 1071975972 + .long 454954036 + .long 1072102833 + .long 1560373839 + .long 1071987682 + .long 200137461 + .long 1072087007 + .long 1026243227 + .long 1071999268 + .long 615820036 + .long 1072071167 + .long 1392726659 + .long 1072010730 + .long 1673946580 + .long 1072055317 + .long 2395753923 + .long 1072022068 + .long 3178614907 + .long 1072039461 + .long 3903265363 + .long 1072033282 + .long 464664423 + .long 1072023604 + .long 1618858333 + .long 1072044373 + .long 1571276620 + .long 1072007748 + .long 4260221847 + .long 1072055339 + .long 1466080688 + .long 1071991898 + .long 3492884098 + .long 1072066182 + .long 3514079945 + .long 1071976057 + .long 3993456657 + .long 1072076901 + .long 2292055455 + .long 1071960230 + .long 1973227103 + .long 1072087497 + .long 762892997 + .long 1071944420 + .long 2356414747 + .long 1072097969 + .long 1680293156 + .long 1071928630 + .long 1598646874 + .long 1072108318 + .long 3288637392 + .long 1071912864 + .long 570166456 + .long 1072118544 + .long 3612978933 + .long 1071897126 + .long 259132527 + .long 1072128647 + .long 454258010 + .long 1071881420 + .long 1769851247 + .long 1072138627 + .long 4269611837 + .long 1071865747 + .long 2026004535 + .long 1072148485 + .long 3808238226 + .long 1071850113 + .long 2358747003 + .long 1072158221 + .long 466930684 + .long 1071834521 + .long 4209868920 + .long 1072167835 + .long 3991103291 + .long 1071818972 + .long 539961339 + .long 1072177329 + .long 2406207743 + .long 1071803472 + .long 1596290573 + .long 1072186701 + .long 668823419 + .long 1071788023 + .long 551103050 + .long 1072195953 + .long 3483369050 + .long 1071772627 + .long 3564413664 + .long 1072205084 + .long 2413978135 + .long 1071757289 + .long 4012194871 + .long 1072214096 + .long 1651276306 + .long 1071742011 + .long 3959183150 + .long 1072222989 + .long 829681671 + .long 1071726796 + .long 1271925764 + .long 1072231764 + .long 3614704403 + .long 1071711646 + .long 2501611462 + .long 1072240420 + .long 520637331 + .long 1071696566 + .long 1407144504 + .long 1072248959 + .long 3268048090 + .long 1071681556 + .long 427874865 + .long 1072257381 + .long 1832052951 + .long 1071666621 + .long 2091542065 + .long 1072265686 + .long 3095161192 + .long 1071651762 + .long 422205205 + .long 1072273876 + .long 1561666736 + .long 1071629294 + .long 2412931770 + .long 1072281950 + .long 2443607338 + .long 1071599898 + .long 2253835330 + .long 1072289910 + .long 3767899416 + .long 1071570670 + .long 2804744118 + .long 1072297756 + .long 4205206053 + .long 1071541615 + .long 2708123311 + .long 1072305489 + .long 1868283784 + .long 1071512738 + .long 681859986 + .long 1072313110 + .long 2900434531 + .long 1071484042 + .long 4107010292 + .long 1072320618 + .long 4294514068 + .long 1071455532 + .long 3255804563 + .long 1072328016 + .long 2482100151 + .long 1071427213 + .long 1354224973 + .long 1072335304 + .long 1923011912 + .long 1071399088 + .long 1694909286 + .long 1072342482 + .long 2220339163 + .long 1071371161 + .long 3339989603 + .long 1072349551 + .long 2415682179 + .long 1071343436 + .long 1118900120 + .long 1072356513 + .long 989760182 + .long 1071315917 + .long 2806057099 + .long 1072363367 + .long 158317606 + .long 1071288607 + .long 3348870180 + .long 1072370115 + .long 1578420540 + .long 1071261509 + .long 2045432220 + .long 1072376758 + .long 2055072070 + .long 1071234627 + .long 2542346734 + .long 1072383296 + .long 2133042299 + .long 1071207964 + .long 4242628757 + .long 1072389730 + .long 1804103059 + .long 1071181523 + .long 2303549486 + .long 1072396062 + .long 509530065 + .long 1071155307 + .long 519393155 + .long 1072402292 + .long 1437865959 + .long 1071129318 + .long 2729388920 + .long 1072408420 + .long 2938068361 + .long 1071103559 + .long 4225655329 + .long 1072414448 + .long 2817839853 + .long 1071078033 + .long 341027652 + .long 1072420378 + .long 2642231032 + .long 1071052742 + .long 3626834524 + .long 1072426208 + .long 3442574974 + .long 1071027688 + .long 901148195 + .long 1072431942 + .long 1425680479 + .long 1071002874 + .long 491364740 + .long 1072437579 + .long 863146005 + .long 1070978301 + .long 2167390653 + .long 1072443120 + .long 1211113923 + .long 1070953971 + .long 1434586468 + .long 1072448567 + .long 1410130595 + .long 1070929886 + .long 2416664529 + .long 1072453920 + .long 4185235532 + .long 1070906047 + .long 673836130 + .long 1072459181 + .long 3166402837 + .long 1070882457 + .long 380718319 + .long 1072464350 + .long 73967522 + .long 1070859117 + .long 1439491741 + .long 1072469428 + .long 429421420 + .long 1070836027 + .long 3772950565 + .long 1072474416 + .long 676472817 + .long 1070813189 + .long 3027641485 + .long 1072479316 + .long 1072100387 + .long 1070790604 + .long 3456896295 + .long 1072484128 + .long 1397920641 + .long 1070768273 + .long 739118475 + .long 1072488854 + .long 966697529 + .long 1070746197 + .long 3450801209 + .long 1072493493 + .long 2923986376 + .long 1070724376 + .long 2999964233 + .long 1072498048 + .long 1370067789 + .long 1070702812 + .long 3689159840 + .long 1072502519 + .long 2841771284 + .long 1070681504 + .long 1238898896 + .long 1072506908 + .long 549802159 + .long 1070660454 + .long 4260777949 + .long 1072511214 + .long 155811627 + .long 1070639661 + .long 4191027417 + .long 1072515440 + .long 2599921926 + .long 1070619125 + .long 1058663746 + .long 1072519587 + .long 4108240803 + .long 1070598847 + .long 3483867367 + .long 1072523654 + .long 990911579 + .long 1070561560 + .long 2906586881 + .long 1072527644 + .long 114935845 + .long 1070522036 + .long 3649748481 + .long 1072531557 + .long 4208768690 + .long 1070483026 + .long 1442888585 + .long 1072535395 + .long 2526808836 + .long 1070444532 + .long 600523232 + .long 1072539158 + .long 743445360 + .long 1070406552 + .long 1135777805 + .long 1072542847 + .long 3789340407 + .long 1070369084 + .long 3053917615 + .long 1072546463 + .long 2982814329 + .long 1070332129 + .long 2055975837 + .long 1072550008 + .long 1816057167 + .long 1070295685 + .long 2422282765 + .long 1072553482 + .long 3086740885 + .long 1070259750 + .long 4126223656 + .long 1072556886 + .long 324691238 + .long 1070224324 + .long 2832930958 + .long 1072560222 + .long 3578376465 + .long 1070189403 + .long 2782911091 + .long 1072563490 + .long 776951344 + .long 1070154988 + .long 3905900216 + .long 1072566691 + .long 696731218 + .long 1070121075 + .long 1819654744 + .long 1072569827 + .long 2913260122 + .long 1070087662 + .long 713676646 + .long 1072572898 + .long 2113142428 + .long 1070054748 + .long 463167950 + .long 1072575905 + .long 995821495 + .long 1070022330 + .long 922887372 + .long 1072578849 + .long 1700521760 + .long 1069990405 + .long 1926072615 + .long 1072581731 + .long 1528145825 + .long 1069958971 + .long 3283395580 + .long 1072584552 + .long 1548049162 + .long 1069928025 + .long 486983136 + .long 1072587314 + .long 2319876962 + .long 1069897564 + .long 1889307149 + .long 1072590016 + .long 3910320901 + .long 1069867585 + .long 2932434228 + .long 1072592660 + .long 1614850098 + .long 1069838086 + .long 3326980969 + .long 1072595247 + .long 3154209172 + .long 1069809062 + .long 2756265128 + .long 1072597778 + .long 2921163421 + .long 1069780511 + .long 875456323 + .long 1072600254 + .long 3471794055 + .long 1069752429 + .long 1605726087 + .long 1072602675 + .long 2656954908 + .long 1069724813 + .long 248560569 + .long 1072605043 + .long 2228455793 + .long 1069697659 + .long 664875946 + .long 1072607358 + .long 3560224787 + .long 1069670963 + .long 2389394126 + .long 1072609621 + .long 3369342261 + .long 1069644722 + .long 629951466 + .long 1072611834 + .long 2321839820 + .long 1069618932 + .long 3446707524 + .long 1072613996 + .long 753451907 + .long 1069593589 + .long 1686744094 + .long 1072616110 + .long 2980148458 + .long 1069568688 + .long 3343203939 + .long 1072618175 + .long 267339392 + .long 1069540934 + .long 3489949996 + .long 1072620193 + .long 483064631 + .long 1069492880 + .long 1460894432 + .long 1072622165 + .long 649602217 + .long 1069445687 + .long 849487740 + .long 1072624091 + .long 2890701232 + .long 1069399346 + .long 918302122 + .long 1072625972 + .long 261234300 + .long 1069353850 + .long 893545254 + .long 1072627809 + .long 2545983092 + .long 1069309188 + .long 4259602150 + .long 1072629602 + .long 1928478288 + .long 1069265353 + .long 1578768264 + .long 1072631354 + .long 3083934340 + .long 1069222335 + .long 555650133 + .long 1072633064 + .long 1732151351 + .long 1069180126 + .long 267018061 + .long 1072634733 + .long 1844687288 + .long 1069138716 + .long 4046390903 + .long 1072636361 + .long 2786814309 + .long 1069098096 + .long 2303875791 + .long 1072637951 + .long 3638890659 + .long 1069058257 + .long 2590673673 + .long 1072639502 + .long 3222303380 + .long 1069019190 + .long 3829035115 + .long 1072641015 + .long 124941498 + .long 1068980886 + .long 607011814 + .long 1072642492 + .long 1316127179 + .long 1068943334 + .long 358134174 + .long 1072643932 + .long 696292715 + .long 1068906526 + .long 1886406929 + .long 1072645336 + .long 595841400 + .long 1068870452 + .long 3956099039 + .long 1072646705 + .long 3208742923 + .long 1068835102 + .long 996654455 + .long 1072648041 + .long 2025629493 + .long 1068800468 + .long 282461591 + .long 1072649343 + .long 3331159491 + .long 1068766539 + .long 457938895 + .long 1072650612 + .long 456233562 + .long 1068733307 + .long 127412743 + .long 1072651849 + .long 3864275015 + .long 1068700760 + .long 2150048793 + .long 1072653054 + .long 2517520227 + .long 1068668891 + .long 754934402 + .long 1072654229 + .long 2552204883 + .long 1068637689 + .long 3015919169 + .long 1072655373 + .long 1528723567 + .long 1068607145 + .long 3081834457 + .long 1072656488 + .long 1335976541 + .long 1068577249 + .long 3651371907 + .long 1072657574 + .long 3915328100 + .long 1068547991 + .long 3088241816 + .long 1072658632 + .long 2689078049 + .long 1068519363 + .long 4011185713 + .long 1072659662 + .long 3811402329 + .long 1068483765 + .long 409169671 + .long 1072660666 + .long 3249658772 + .long 1068428968 + .long 3411299989 + .long 1072661642 + .long 4058137866 + .long 1068375372 + .long 2632245636 + .long 1072662593 + .long 2585699919 + .long 1068322959 + .long 532120432 + .long 1072663519 + .long 4081392135 + .long 1068271709 + .long 3826707455 + .long 1072664419 + .long 1250224180 + .long 1068221605 + .long 2012796269 + .long 1072665296 + .long 52563989 + .long 1068172627 + .long 1728109198 + .long 1072666149 + .long 2552846462 + .long 1068124756 + .long 981699159 + .long 1072666979 + .long 2652176382 + .long 1068077975 + .long 2039066381 + .long 1072667786 + .long 3294767379 + .long 1068032265 + .long 2832451379 + .long 1072668571 + .long 3608617230 + .long 1067987608 + .long 1256042053 + .long 1072669335 + .long 3225068209 + .long 1067943986 + .long 3756159862 + .long 1072670077 + .long 2302425099 + .long 1067901381 + .long 3856686221 + .long 1072670799 + .long 1548607803 + .long 1067859775 + .long 3634172681 + .long 1072671501 + .long 2242848736 + .long 1067819150 + .long 833223107 + .long 1072672184 + .long 1961478441 + .long 1067779489 + .long 1751689540 + .long 1072672847 + .long 3187679808 + .long 1067740774 + .long 4061106433 + .long 1072673491 + .long 445484238 + .long 1067702989 + .long 1101970377 + .long 1072674118 + .long 1792596734 + .long 1067666115 + .long 3358897570 + .long 1072674726 + .long 3067683861 + .long 1067630136 + .long 4101214576 + .long 1072675317 + .long 791483465 + .long 1067595036 + .long 858131621 + .long 1072675892 + .long 772076534 + .long 1067560797 + .long 4009021290 + .long 1072676449 + .long 939498435 + .long 1067527403 + .long 2424031124 + .long 1072676991 + .long 4244278389 + .long 1067494837 + .long 2119146704 + .long 1072677517 + .long 1490379385 + .long 1067463085 + .long 486751354 + .long 1072678028 + .long 2823928994 + .long 1067413890 + .long 3475864463 + .long 1072678523 + .long 1239644147 + .long 1067353540 + .long 4117679416 + .long 1072679004 + .long 1583294687 + .long 1067294720 + .long 4000779385 + .long 1072679471 + .long 183503499 + .long 1067237400 + .long 386619275 + .long 1072679925 + .long 3539777017 + .long 1067181548 + .long 3389782899 + .long 1072680364 + .long 2569008951 + .long 1067127136 + .long 1618636412 + .long 1072680791 + .long 2685116163 + .long 1067074133 + .long 830429231 + .long 1072681205 + .long 2337656347 + .long 1067022510 + .long 2456855919 + .long 1072681606 + .long 1613838398 + .long 1066972238 + .long 3604457349 + .long 1072681995 + .long 2249252296 + .long 1066923288 + .long 1349991605 + .long 1072682373 + .long 3342318405 + .long 1066875632 + .long 1330774330 + .long 1072682739 + .long 1362423571 + .long 1066829243 + .long 565217133 + .long 1072683094 + .long 3041711418 + .long 1066784092 + .long 338138595 + .long 1072683438 + .long 3905919518 + .long 1066740153 + .long 1906207337 + .long 1072683771 + .long 1163773073 + .long 1066697400 + .long 2203386035 + .long 1072684094 + .long 2300262366 + .long 1066655805 + .long 2431278016 + .long 1072684407 + .long 3604033067 + .long 1066615343 + .long 3764572361 + .long 1072684710 + .long 3053431638 + .long 1066575989 + .long 3056489171 + .long 1072685004 + .long 316598267 + .long 1066537718 + .long 1429126614 + .long 1072685289 + .long 1045509085 + .long 1066500504 + .long 4273873027 + .long 1072685564 + .long 3989163593 + .long 1066464323 + .long 4071949264 + .long 1072685831 + .long 990720597 + .long 1066429153 + .long 1869655883 + .long 1072686090 + .long 1212065788 + .long 1066388145 + .long 2983815532 + .long 1072686340 + .long 363369668 + .long 1066321702 + .long 4117279489 + .long 1072686582 + .long 1763689544 + .long 1066257139 + .long 1949269238 + .long 1072686817 + .long 2478908466 + .long 1066194412 + .long 1725716385 + .long 1072687044 + .long 2888078907 + .long 1066133477 + .long 79796966 + .long 1072687264 + .long 2372613493 + .long 1066074291 + .long 2212202096 + .long 1072687476 + .long 3593940430 + .long 1066016811 + .long 416700746 + .long 1072687682 + .long 3884847023 + .long 1065960996 + .long 4145307718 + .long 1072687880 + .long 3819341470 + .long 1065906805 + .long 1353972341 + .long 1072688073 + .long 2896320203 + .long 1065854198 + .long 1452643118 + .long 1072688259 + .long 3811934768 + .long 1065803135 + .long 945918203 + .long 1072688439 + .long 3845878455 + .long 1065753578 + .long 613300468 + .long 1072688613 + .long 3426419565 + .long 1065705489 + .long 1214612974 + .long 1072688781 + .long 1809465164 + .long 1065658831 + .long 3490378522 + .long 1072688943 + .long 1346545806 + .long 1065613567 + .long 3867228532 + .long 1072689100 + .long 3161905125 + .long 1065569661 + .long 3048210366 + .long 1072689252 + .long 2828680980 + .long 1065527079 + .long 1718189174 + .long 1072689399 + .long 3224098489 + .long 1065485786 + .long 544213361 + .long 1072689541 + .long 1614052134 + .long 1065445749 + .long 175876290 + .long 1072689678 + .long 2506733613 + .long 1065406934 + .long 1245674115 + .long 1072689810 + .long 440778734 + .long 1065369310 + .long 74392377 + .long 1072689938 + .long 2854914290 + .long 1065312472 + .long 1556357759 + .long 1072690061 + .long 2885144677 + .long 1065241796 + .long 1979914676 + .long 1072690180 + .long 2850023781 + .long 1065173315 + .long 1912668770 + .long 1072690295 + .long 1599866748 + .long 1065106970 + .long 1906856997 + .long 1072690406 + .long 3477767080 + .long 1065042702 + .long 2499680735 + .long 1072690513 + .long 1069144869 + .long 1064980456 + .long 4213634550 + .long 1072690616 + .long 900163108 + .long 1064920175 + .long 3261863288 + .long 1072690716 + .long 1890778166 + .long 1064861805 + .long 138416642 + .long 1072690813 + .long 3871912933 + .long 1064805293 + .long 3913531953 + .long 1072690905 + .long 3217154659 + .long 1064750588 + .long 2169174156 + .long 1072690995 + .long 1358854176 + .long 1064697639 + .long 3949015241 + .long 1072691081 + .long 418893404 + .long 1064646396 + .long 1104030541 + .long 1072691165 + .long 3134058972 + .long 1064596810 + .long 2652534488 + .long 1072691245 + .long 4191186495 + .long 1064548835 + .long 420735059 + .long 1072691323 + .long 3036910975 + .long 1064502425 + .long 3402760357 + .long 1072691397 + .long 3802347199 + .long 1064457534 + .long 3401203862 + .long 1072691469 + .long 2342760329 + .long 1064414119 + .long 797207216 + .long 1072691539 + .long 3341957742 + .long 1064372136 + .long 255767335 + .long 1072691606 + .long 3056948772 + .long 1064331544 + .long 2136071610 + .long 1072691670 + .long 4254871605 + .long 1064279964 + .long 2491763111 + .long 1072691732 + .long 2411097017 + .long 1064204100 + .long 1661135790 + .long 1072691792 + .long 1761415536 + .long 1064130778 + .long 4267390501 + .long 1072691849 + .long 3209400075 + .long 1064059922 + .long 2039017291 + .long 1072691905 + .long 2939049396 + .long 1063991459 + .long 3874813376 + .long 1072691958 + .long 855986431 + .long 1063925317 + .long 1484387166 + .long 1072692010 + .long 439408485 + .long 1063861425 + .long 3748134511 + .long 1072692059 + .long 4870352 + .long 1063799715 + .long 2357733727 + .long 1072692107 + .long 1147781519 + .long 1063740120 + .long 1881145616 + .long 1072692153 + .long 7952899 + .long 1063682576 + .long 2582968793 + .long 1072692197 + .long 9969043 + .long 1063627019 + .long 424659812 + .long 1072692240 + .long 3129779709 + .long 1063573387 + .long 4244618108 + .long 1072692280 + .long 1162410711 + .long 1063521622 + .long 1398659061 + .long 1072692320 + .long 1350592543 + .long 1063471664 + .long 709894103 + .long 1072692358 + .long 475017707 + .long 1063423457 + .long 2404162538 + .long 1072692394 + .long 1895560955 + .long 1063376945 + .long 2405197521 + .long 1072692429 + .long 2529068952 + .long 1063332075 + .long 924755159 + .long 1072692463 + .long 1303374431 + .long 1063288795 + .long 2462804903 + .long 1072692495 + .long 2340583905 + .long 1063238043 + .long 2922813959 + .long 1072692526 + .long 765339184 + .long 1063157539 + .long 2496831451 + .long 1072692556 + .long 1905645544 + .long 1063079917 + .long 1370699398 + .long 1072692585 + .long 4160263103 + .long 1063005084 + .long 4019194350 + .long 1072692612 + .long 45342386 + .long 1062932951 + .long 2026328650 + .long 1072692639 + .long 1710715325 + .long 1062863427 + .long 4150288103 + .long 1072692664 + .long 2034959285 + .long 1062796428 + .long 1963856416 + .long 1072692689 + .long 148304367 + .long 1062731871 + .long 4214312639 + .long 1072692712 + .long 1189117402 + .long 1062669674 + .long 2463848165 + .long 1072692735 + .long 3178906437 + .long 1062609759 + .long 1154489547 + .long 1072692757 + .long 1080654215 + .long 1062552051 + .long 428377468 + .long 1072692778 + .long 3745546411 + .long 1062496474 + .long 422878663 + .long 1072692798 + .long 3618581269 + .long 1062442958 + .long 1270727063 + .long 1072692817 + .long 2282300494 + .long 1062391433 + .long 3100161527 + .long 1072692835 + .long 1644348923 + .long 1062341831 + .long 1740092897 + .long 1072692853 + .long 3718552903 + .long 1062294086 + .long 1605136939 + .long 1072692870 + .long 1819661463 + .long 1062248136 + .long 2810840233 + .long 1072692886 + .long 3652931310 + .long 1062200348 + .long 1173804762 + .long 1072692902 + .long 997716742 + .long 1062115258 + .long 1096711236 + .long 1072692917 + .long 611465250 + .long 1062033397 + .long 2683535545 + .long 1072692931 + .long 1268352122 + .long 1061954653 + .long 1739664066 + .long 1072692945 + .long 3774361106 + .long 1061878917 + .long 2656907874 + .long 1072692958 + .long 1990048797 + .long 1061806085 + .long 1233742957 + .long 1072692971 + .long 3925276832 + .long 1061736053 + .long 1855285919 + .long 1072692983 + .long 1301510391 + .long 1061668724 + .long 313528501 + .long 1072692995 + .long 3545772009 + .long 1061604000 + .long 987307714 + .long 1072693006 + .long 3072231739 + .long 1061541790 + .long 3957502177 + .long 1072693016 + .long 700415168 + .long 1061482004 + .long 712160398 + .long 1072693027 + .long 1015674294 + .long 1061424554 + .long 4211364825 + .long 1072693036 + .long 3441679162 + .long 1061369356 + .long 1642682013 + .long 1072693046 + .long 1909782298 + .long 1061316330 + .long 1665890809 + .long 1072693055 + .long 1715136991 + .long 1061265396 + .long 53329472 + .long 1072693064 + .long 2019904798 + .long 1061216478 + .long 1164815244 + .long 1072693072 + .long 4133034056 + .long 1061169502 + .long 767855920 + .long 1072693080 + .long 938778593 + .long 1061089885 + .long 3217597497 + .long 1072693087 + .long 45480017 + .long 1061003281 + .long 4277031209 + .long 1072693094 + .long 316452781 + .long 1060920148 + .long 4001969454 + .long 1072693101 + .long 2721989136 + .long 1060840357 + .long 2446150390 + .long 1072693108 + .long 1032835521 + .long 1060763785 + .long 3956275029 + .long 1072693114 + .long 2753065605 + .long 1060690310 + .long 4287173117 + .long 1072693120 + .long 2820848798 + .long 1060619817 + .long 3486770775 + .long 1072693126 + .long 271267104 + .long 1060552194 + .long 1601187023 + .long 1072693132 + .long 2026441674 + .long 1060487331 + .long 2969762984 + .long 1072693137 + .long 927900277 + .long 1060425125 + .long 3340220053 + .long 1072693142 + .long 1025459971 + .long 1060365474 + .long 2753620020 + .long 1072693147 + .long 4223106765 + .long 1060308280 + .long 1249454257 + .long 1072693152 + .long 1231370686 + .long 1060253451 + .long 3160665754 + .long 1072693156 + .long 1185758032 + .long 1060200894 + .long 4228800307 + .long 1072693160 + .long 1146814719 + .long 1060150522 + .long 193992533 + .long 1072693165 + .long 1416679249 + .long 1060094165 + .long 3974884891 + .long 1072693168 + .long 3168049461 + .long 1060001659 + .long 2719002994 + .long 1072693172 + .long 1524549056 + .long 1059913034 + .long 752475327 + .long 1072693176 + .long 1702683749 + .long 1059828137 + .long 2400209350 + .long 1072693179 + .long 2214749525 + .long 1059746822 + .long 3396000745 + .long 1072693182 + .long 2714889529 + .long 1059668948 + .long 3767477749 + .long 1072693185 + .long 3275007653 + .long 1059594379 + .long 3541174945 + .long 1072693188 + .long 3680105052 + .long 1059522984 + .long 2742573010 + .long 1072693191 + .long 2742671543 + .long 1059454637 + .long 1396137187 + .long 1072693194 + .long 1930731778 + .long 1059389216 + .long 3820321791 + .long 1072693196 + .long 424277854 + .long 1059326604 + .long 1447737015 + .long 1072693199 + .long 3074559673 + .long 1059266687 + .long 2889954809 + .long 1072693201 + .long 2611163775 + .long 1059209358 + .long 3872771463 + .long 1072693203 + .long 521028298 + .long 1059154512 + .long 121142023 + .long 1072693206 + .long 2174524969 + .long 1059102047 + .long 244113626 + .long 1072693208 + .long 2461272610 + .long 1059041975 + .long 4260019406 + .long 1072693209 + .long 1131027093 + .long 1058945999 + .long 3596507856 + .long 1072693211 + .long 2009173253 + .long 1058854226 + .long 2565407666 + .long 1072693213 + .long 1615100380 + .long 1058766484 + .long 1182885939 + .long 1072693215 + .long 3221825245 + .long 1058682606 + .long 3759409239 + .long 1072693216 + .long 3000825785 + .long 1058602433 + .long 1719899946 + .long 1072693218 + .long 1965540345 + .long 1058525811 + .long 3668531992 + .long 1072693219 + .long 763189321 + .long 1058452592 + .long 1029016297 + .long 1072693221 + .long 3084060488 + .long 1058382633 + .long 2404362103 + .long 1072693222 + .long 1917799745 + .long 1058315799 + .long 3512128068 + .long 1072693223 + .long 195668558 + .long 1058251958 + .long 69345537 + .long 1072693225 + .long 1393620869 + .long 1058190983 + .long 677441054 + .long 1072693226 + .long 160341434 + .long 1058132754 + .long 1052452475 + .long 1072693227 + .long 3034396383 + .long 1058077153 + .long 1204917335 + .long 1072693228 + .long 1940473490 + .long 1058024070 + .long 1144924039 + .long 1072693229 + .long 2791683145 + .long 1057933609 + .long 882129685 + .long 1072693230 + .long 1284377069 + .long 1057836875 + .long 425777245 + .long 1072693231 + .long 3138430378 + .long 1057744555 + .long 4079679407 + .long 1072693231 + .long 3254443766 + .long 1057656460 + .long 3262365346 + .long 1072693232 + .long 3585789915 + .long 1057572407 + .long 2276899854 + .long 1072693233 + .long 3340902607 + .long 1057492221 + .long 1131028956 + .long 1072693234 + .long 2109898645 + .long 1057415734 + .long 4127128746 + .long 1072693234 + .long 3029561298 + .long 1057342784 + .long 2682349923 + .long 1072693235 + .long 3100733692 + .long 1057273217 + .long 1098434770 + .long 1072693236 + .long 721863346 + .long 1057206885 + .long 3676827974 + .long 1072693236 + .long 3257818550 + .long 1057143644 + .long 1833786974 + .long 1072693237 + .long 283247917 + .long 1057083360 + .long 4165164796 + .long 1072693237 + .long 1283760382 + .long 1057025900 + .long 2086683008 + .long 1072693238 + .long 375021366 + .long 1056971140 + .long 4193680981 + .long 1072693238 + .long 2365640311 + .long 1056873310 + .long 1901387990 + .long 1072693239 + .long 1902930970 + .long 1056773877 + .long 3804671650 + .long 1072693239 + .long 903220739 + .long 1056679152 + .long 1318309237 + .long 1072693240 + .long 2063855685 + .long 1056588923 + .long 3036735356 + .long 1072693240 + .long 3397372173 + .long 1056502988 + .long 374312518 + .long 1072693241 + .long 1034711862 + .long 1056421154 + .long 1925078105 + .long 1072693241 + .long 670870767 + .long 1056343234 + .long 3397981554 + .long 1072693241 + .long 3291650888 + .long 1056269050 + .long 501794178 + .long 1072693242 + .long 3834664178 + .long 1056198433 + .long 1830018675 + .long 1072693242 + .long 2783069783 + .long 1056131220 + .long 3091092664 + .long 1072693242 + .long 625790851 + .long 1056067255 + .long 4288264900 + .long 1072693242 + .long 952568083 + .long 1056006388 + .long 1129667423 + .long 1072693243 + .long 707602500 + .long 1055948477 + .long 2208191219 + .long 1072693243 + .long 3920299786 + .long 1055870738 + .long 3231688653 + .long 1072693243 + .long 187138140 + .long 1055765933 + .long 4202848619 + .long 1072693243 + .long 4197216078 + .long 1055666254 + .long 829267664 + .long 1072693244 + .long 3910421342 + .long 1055571465 + .long 1703324662 + .long 1072693244 + .long 2296866372 + .long 1055481337 + .long 2532382302 + .long 1072693244 + .long 2605637707 + .long 1055395651 + .long 3318661313 + .long 1072693244 + .long 2292620388 + .long 1055314199 + .long 4064278012 + .long 1072693244 + .long 4195044292 + .long 1055236781 + .long 476281643 + .long 1072693245 + .long 2000853903 + .long 1055163208 + .long 1146528013 + .long 1072693245 + .long 140279194 + .long 1055093297 + .long 1781879969 + .long 1072693245 + .long 3672993662 + .long 1055026873 + .long 2384080674 + .long 1072693245 + .long 3938617616 + .long 1054963772 + .long 2954790214 + .long 1072693245 + .long 2918251757 + .long 1054903835 + .long 3495589354 + .long 1072693245 + .long 2286364164 + .long 1054826365 + .long 4007983120 + .long 1072693245 + .long 1376975757 + .long 1054718251 + .long 198436946 + .long 1072693246 + .long 3549789914 + .long 1054615596 + .long 658249143 + .long 1072693246 + .long 3134081244 + .long 1054518138 + .long 1093750278 + .long 1072693246 + .long 3217770792 + .long 1054425625 + .long 1506175371 + .long 1072693246 + .long 544573006 + .long 1054337818 + .long 1896699486 + .long 1072693246 + .long 563778522 + .long 1054254487 + .long 2266440493 + .long 1072693246 + .long 2499998483 + .long 1054175414 + .long 2616461708 + .long 1072693246 + .long 1684473986 + .long 1054100392 + .long 2947774421 + .long 1072693246 + .long 555072738 + .long 1054029222 + .long 3261340318 + .long 1072693246 + .long 2552316963 + .long 1053961714 + .long 3558073783 + .long 1072693246 + .long 1793581277 + .long 1053897689 + .long 3838844118 + .long 1072693246 + .long 2882522604 + .long 1053836974 + .long 4104477652 + .long 1072693246 + .long 4263347778 + .long 1053739932 + .long 60792463 + .long 1072693247 + .long 2125306315 + .long 1053630777 + .long 298469494 + .long 1072693247 + .long 1283904372 + .long 1053527305 + .long 523250625 + .long 1072693247 + .long 4039517916 + .long 1053429232 + .long 735809613 + .long 1072693247 + .long 1769278009 + .long 1053336290 + .long 936786486 + .long 1072693247 + .long 2403362003 + .long 1053248220 + .long 1126789145 + .long 1072693247 + .long 2174681212 + .long 1053164778 + .long 1306394904 + .long 1072693247 + .long 422102777 + .long 1053085731 + .long 1476151957 + .long 1072693247 + .long 1608658464 + .long 1053010856 + .long 1636580774 + .long 1072693247 + .long 255934547 + .long 1052939943 + .long 1788175440 + .long 1072693247 + .long 330542066 + .long 1052872790 + .long 1931404929 + .long 1072693247 + .long 359609029 + .long 1052809206 + .long 2066714326 + .long 1072693247 + .long 212821653 + .long 1052727714 + .long 2194525979 + .long 1072693247 + .long 1771024860 + .long 1052613747 + .long 2315240618 + .long 1072693247 + .long 3323366318 + .long 1052505878 + .long 2429238401 + .long 1072693247 + .long 3333784466 + .long 1052403794 + .long 2536879931 + .long 1072693247 + .long 1884899977 + .long 1052307197 + .long 2638507212 + .long 1072693247 + .long 1901768341 + .long 1052215803 + .long 2734444565 + .long 1072693247 + .long 1919585796 + .long 1052129343 + .long 2824999505 + .long 1072693247 + .long 1864802922 + .long 1052047561 + .long 2910463570 + .long 1072693247 + .long 369621280 + .long 1051970214 + .long 2991113117 + .long 1072693247 + .long 794742200 + .long 1051897070 + .long 3067210077 + .long 1072693247 + .long 185746157 + .long 1051827910 + .long 3139002674 + .long 1072693247 + .long 4108134519 + .long 1051762524 + .long 3206726114 + .long 1072693247 + .long 1569140952 + .long 1051679705 + .long 3270603235 + .long 1072693247 + .long 3808394293 + .long 1051562865 + .long 3330845135 + .long 1072693247 + .long 3847034202 + .long 1051452445 + .long 3387651756 + .long 1072693247 + .long 3767465203 + .long 1051348105 + .long 3441212456 + .long 1072693247 + .long 2207887660 + .long 1051249523 + .long 3491706543 + .long 1072693247 + .long 3687336940 + .long 1051156392 + .long 3539303784 + .long 1072693247 + .long 2322652348 + .long 1051068423 + .long 3584164895 + .long 1072693247 + .long 60084372 + .long 1050985340 + .long 3626442002 + .long 1072693247 + .long 3580394494 + .long 1050906880 + .long 3666279081 + .long 1072693247 + .long 4166097879 + .long 1050832797 + .long 3703812375 + .long 1072693247 + .long 654319384 + .long 1050762856 + .long 3739170797 + .long 1072693247 + .long 1044918721 + .long 1050696832 + .long 3772476305 + .long 1072693247 + .long 1221590325 + .long 1050595877 + .long 3803844261 + .long 1072693247 + .long 1858992497 + .long 1050478253 + .long 3833383776 + .long 1072693247 + .long 2222963862 + .long 1050367260 + .long 3861198036 + .long 1072693247 + .long 4044534932 + .long 1050262537 + .long 3887384606 + .long 1072693247 + .long 4037682077 + .long 1050163743 + .long 3912035731 + .long 1072693247 + .long 2751298525 + .long 1050070554 + .long 3935238607 + .long 1072693247 + .long 726747225 + .long 1049982663 + .long 3957075654 + .long 1072693247 + .long 3427405224 + .long 1049899778 + .long 3977624762 + .long 1072693247 + .long 572377531 + .long 1049821626 + .long 3996959532 + .long 1072693247 + .long 1471006056 + .long 1049747944 + .long 4015149506 + .long 1072693247 + .long 1796687607 + .long 1049678486 + .long 4032260375 + .long 1072693247 + .long 4103915186 + .long 1049601460 + .long 4048354194 + .long 1072693247 + .long 817191958 + .long 1049478062 + .long 4063489565 + .long 1072693247 + .long 1436794216 + .long 1049361781 + .long 4077721832 + .long 1072693247 + .long 2657182346 + .long 1049252221 + .long 4091103247 + .long 1072693247 + .long 2406257951 + .long 1049149007 + .long 4103683142 + .long 1072693247 + .long 3738473273 + .long 1049051783 + .long 4115508082 + .long 1072693247 + .long 1777519924 + .long 1048960214 + .long 4126622017 + .long 1072693247 + .long 942680177 + .long 1048873981 + .long 4137066424 + .long 1072693247 + .long 2319192650 + .long 1048792783 + .long 4146880438 + .long 1072693247 + .long 4112632783 + .long 1048716336 + .long 4156100982 + .long 1072693247 + .long 2293150261 + .long 1048644372 + .long 4164762887 + .long 1072693247 + .long 10642342 + .long 1048576636 + .long 4172899006 + .long 1072693247 + .long 5176375 + .long 1048449774 + .long 4180540322 + .long 1072693247 + .long 2922557803 + .long 1048329796 + .long 4187716050 + .long 1072693247 + .long 2705392296 + .long 1048216910 + .long 4194453736 + .long 1072693247 + .long 359265373 + .long 1048110710 + .long 4200779348 + .long 1072693247 + .long 2889113445 + .long 1048010811 + .long 4206717364 + .long 1072693247 + .long 1020973057 + .long 1047916853 + .long 4212290853 + .long 1072693247 + .long 3016231241 + .long 1047828492 + .long 4217521554 + .long 1072693247 + .long 11971917 + .long 1047745407 + .long 4222429951 + .long 1072693247 + .long 314571880 + .long 1047667291 + .long 4227035341 + .long 1072693247 + .long 3786258409 + .long 1047593856 + .long 4231355901 + .long 1072693247 + .long 131461034 + .long 1047522241 + .long 4235408754 + .long 1072693247 + .long 2699979079 + .long 1047392498 + .long 4239210022 + .long 1072693247 + .long 411815652 + .long 1047270578 + .long 4242774887 + .long 1072693247 + .long 1157099645 + .long 1047156022 + .long 4246117644 + .long 1072693247 + .long 3456465376 + .long 1047048399 + .long 4249251749 + .long 1072693247 + .long 3319603447 + .long 1046947303 + .long 4252189866 + .long 1072693247 + .long 1417286464 + .long 1046852350 + .long 4254943915 + .long 1072693247 + .long 1961438867 + .long 1046763177 + .long 4257525114 + .long 1072693247 + .long 3278475384 + .long 1046679443 + .long 4259944014 + .long 1072693247 + .long 1536658680 + .long 1046600827 + .long 4262210544 + .long 1072693247 + .long 3319082773 + .long 1046527024 + .long 4264334043 + .long 1072693247 + .long 3864661119 + .long 1046436651 + .long 4266323294 + .long 1072693247 + .long 2380952407 + .long 1046306618 + .long 4268186557 + .long 1072693247 + .long 1526944091 + .long 1046184593 + .long 4269931598 + .long 1072693247 + .long 2121831560 + .long 1046070097 + .long 4271565719 + .long 1072693247 + .long 3741717358 + .long 1045962679 + .long 4273095783 + .long 1072693247 + .long 2372148486 + .long 1045861915 + .long 4274528242 + .long 1072693247 + .long 1301376174 + .long 1045767404 + .long 4275869159 + .long 1072693247 + .long 876419281 + .long 1045678769 + .long 4277124229 + .long 1072693247 + .long 1464367617 + .long 1045595655 + .long 4278298806 + .long 1072693247 + .long 2422592759 + .long 1045517728 + .long 4279397918 + .long 1072693247 + .long 1357171196 + .long 1045444674 + .long 4280426288 + .long 1072693247 + .long 194145400 + .long 1045322121 + .long 4281388351 + .long 1072693247 + .long 380152291 + .long 1045193761 + .long 4282288274 + .long 1072693247 + .long 1583684278 + .long 1045073472 + .long 4283129967 + .long 1072693247 + .long 2165635186 + .long 1044960761 + .long 4283917101 + .long 1072693247 + .long 1516692231 + .long 1044855164 + .long 4284653124 + .long 1072693247 + .long 1455793348 + .long 1044756244 + .long 4285341270 + .long 1072693247 + .long 3729863063 + .long 1044663590 + .long 4285984575 + .long 1072693247 + .long 3593934135 + .long 1044576817 + .long 4286585887 + .long 1072693247 + .long 926645059 + .long 1044495562 + .long 4287147879 + .long 1072693247 + .long 3092460447 + .long 1044419482 + .long 4287673059 + .long 1072693247 + .long 410724451 + .long 1044314821 + .long 4288163777 + .long 1072693247 + .long 1647694055 + .long 1044181480 + .long 4288622239 + .long 1072693247 + .long 2719124395 + .long 1044056680 + .long 4289050512 + .long 1072693247 + .long 1706837060 + .long 1043939889 + .long 4289450537 + .long 1072693247 + .long 1950214717 + .long 1043830606 + .long 4289824130 + .long 1072693247 + .long 3939307600 + .long 1043728361 + .long 4290172996 + .long 1072693247 + .long 1960757033 + .long 1043632714 + .long 4290498730 + .long 1072693247 + .long 2651595104 + .long 1043543249 + .long 4290802831 + .long 1072693247 + .long 1012882634 + .long 1043459578 + .long 4291086700 + .long 1072693247 + .long 4055189249 + .long 1043381334 + .long 4291351650 + .long 1072693247 + .long 2246068185 + .long 1043283233 + .long 4291598913 + .long 1072693247 + .long 2274647687 + .long 1043146443 + .long 4291829641 + .long 1072693247 + .long 2890637209 + .long 1043018575 + .long 4292044913 + .long 1072693247 + .long 4153511196 + .long 1042899062 + .long 4292245741 + .long 1072693247 + .long 1929129059 + .long 1042787373 + .long 4292433070 + .long 1072693247 + .long 357577118 + .long 1042683008 + .long 4292607786 + .long 1072693247 + .long 3367143719 + .long 1042585498 + .long 4292770720 + .long 1072693247 + .long 2385315144 + .long 1042494406 + .long 4292922646 + .long 1072693247 + .long 3169025495 + .long 1042409319 + .long 4293064292 + .long 1072693247 + .long 1533871520 + .long 1042329852 + .long 4293196336 + .long 1072693247 + .long 599006589 + .long 1042226741 + .long 4293319415 + .long 1072693247 + .long 1711861758 + .long 1042088158 + .long 4293434124 + .long 1072693247 + .long 3081973787 + .long 1041958776 + .long 4293541018 + .long 1072693247 + .long 1321268943 + .long 1041838000 + .long 4293640617 + .long 1072693247 + .long 3969874170 + .long 1041725270 + .long 4293733409 + .long 1072693247 + .long 2452445702 + .long 1041620065 + .long 4293819848 + .long 1072693247 + .long 1452932973 + .long 1041521894 + .long 4293900359 + .long 1072693247 + .long 1595251056 + .long 1041430298 + .long 4293975339 + .long 1072693247 + .long 4117849423 + .long 1041344847 + .long 4294045161 + .long 1072693247 + .long 3152677356 + .long 1041265140 + .long 4294110170 + .long 1072693247 + .long 4175288180 + .long 1041145631 + .long 4294170691 + .long 1072693247 + .long 597820103 + .long 1041006978 + .long 4294227027 + .long 1072693247 + .long 3535028301 + .long 1040877691 + .long 4294279462 + .long 1072693247 + .long 918940523 + .long 1040757155 + .long 4294328259 + .long 1072693247 + .long 857999498 + .long 1040644790 + .long 4294373665 + .long 1072693247 + .long 3808560570 + .long 1040540055 + .long 4294415910 + .long 1072693247 + .long 1160780690 + .long 1040442446 + .long 4294455211 + .long 1072693247 + .long 201215039 + .long 1040351488 + .long 4294491767 + .long 1072693247 + .long 2402111668 + .long 1040266738 + .long 4294525766 + .long 1072693247 + .long 3723319669 + .long 1040187783 + .long 4294557384 + .long 1072693247 + .long 3725520897 + .long 1040041081 + .long 4294586783 + .long 1072693247 + .long 3671313057 + .long 1039904079 + .long 4294614115 + .long 1072693247 + .long 1053981368 + .long 1039776493 + .long 4294639524 + .long 1072693247 + .long 3460466107 + .long 1039657689 + .long 4294663141 + .long 1072693247 + .long 3035482254 + .long 1039547078 + .long 4294685090 + .long 1072693247 + .long 3802544396 + .long 1039444107 + .long 4294705486 + .long 1072693247 + .long 2441474464 + .long 1039348261 + .long 4294724438 + .long 1072693247 + .long 4084805700 + .long 1039259057 + .long 4294742044 + .long 1072693247 + .long 79094155 + .long 1039176047 + .long 4294758399 + .long 1072693247 + .long 31353126 + .long 1039058801 + .long 4294773590 + .long 1072693247 + .long 4063319008 + .long 1038915083 + .long 4294787697 + .long 1072693247 + .long 264658679 + .long 1038781394 + .long 4294800797 + .long 1072693247 + .long 1173126429 + .long 1038657047 + .long 4294812960 + .long 1072693247 + .long 242573921 + .long 1038541405 + .long 4294824252 + .long 1072693247 + .long 2098620107 + .long 1038433871 + .long 4294834733 + .long 1072693247 + .long 2055068430 + .long 1038333890 + .long 4294844461 + .long 1072693247 + .long 741519124 + .long 1038240943 + .long 4294853489 + .long 1072693247 + .long 2256555279 + .long 1038154545 + .long 4294861866 + .long 1072693247 + .long 196354007 + .long 1038058252 + .long 4294869638 + .long 1072693247 + .long 445761606 + .long 1037909007 + .long 4294876848 + .long 1072693247 + .long 3476364679 + .long 1037770330 + .long 4294883536 + .long 1072693247 + .long 3529100902 + .long 1037641490 + .long 4294889738 + .long 1072693247 + .long 1621116022 + .long 1037521804 + .long 4294895490 + .long 1072693247 + .long 78936185 + .long 1037410635 + .long 4294900823 + .long 1072693247 + .long 2269474636 + .long 1037307389 + .long 4294905767 + .long 1072693247 + .long 292731349 + .long 1037211515 + .long 4294910351 + .long 1072693247 + .long 2122912913 + .long 1037122496 + .long 4294914599 + .long 1072693247 + .long 3023046673 + .long 1037038043 + .long 4294918536 + .long 1072693247 + .long 254831576 + .long 1036884616 + .long 4294922185 + .long 1072693247 + .long 571168224 + .long 1036742213 + .long 4294925565 + .long 1072693247 + .long 871548122 + .long 1036610059 + .long 4294928697 + .long 1072693247 + .long 3924370604 + .long 1036487431 + .long 4294931598 + .long 1072693247 + .long 2976320978 + .long 1036373658 + .long 4294934285 + .long 1072693247 + .long 1728080816 + .long 1036268113 + .long 4294936773 + .long 1072693247 + .long 892927807 + .long 1036170213 + .long 4294939078 + .long 1072693247 + .long 2817804388 + .long 1036079415 + .long 4294941211 + .long 1072693247 + .long 4045759389 + .long 1035995215 + .long 4294943186 + .long 1072693247 + .long 3073449671 + .long 1035841200 + .long 4294945014 + .long 1072693247 + .long 3519286355 + .long 1035696439 + .long 4294946706 + .long 1072693247 + .long 794405638 + .long 1035562248 + .long 4294948272 + .long 1072693247 + .long 2678131373 + .long 1035437869 + .long 4294949720 + .long 1072693247 + .long 3816540112 + .long 1035322600 + .long 4294951061 + .long 1072693247 + .long 234134080 + .long 1035215788 + .long 4294952301 + .long 1072693247 + .long 587911812 + .long 1035116823 + .long 4294953448 + .long 1072693247 + .long 4031748504 + .long 1035025140 + .long 4294954509 + .long 1072693247 + .long 925164896 + .long 1034935920 + .long 4294955489 + .long 1072693247 + .long 3358488129 + .long 1034778608 + .long 4294956396 + .long 1072693247 + .long 638703581 + .long 1034632928 + .long 4294957235 + .long 1072693247 + .long 807654845 + .long 1034498035 + .long 4294958010 + .long 1072693247 + .long 2657744191 + .long 1034373146 + .long 4294958726 + .long 1072693247 + .long 3663858009 + .long 1034257534 + .long 4294959389 + .long 1072693247 + .long 533492925 + .long 1034150524 + .long 4294960000 + .long 1072693247 + .long 3770229724 + .long 1034051486 + .long 4294960566 + .long 1072693247 + .long 1751462400 + .long 1033959840 + .long 4294961088 + .long 1072693247 + .long 1904247472 + .long 1033854151 + .long 4294961570 + .long 1072693247 + .long 1030368421 + .long 1033697253 + .long 4294962016 + .long 1072693247 + .long 4079129458 + .long 1033552117 + .long 4294962427 + .long 1072693247 + .long 1682458602 + .long 1033417880 + .long 4294962807 + .long 1072693247 + .long 3167377884 + .long 1033293737 + .long 4294963158 + .long 1072693247 + .long 491770573 + .long 1033178945 + .long 4294963482 + .long 1072693247 + .long 2200416094 + .long 1033072811 + .long 4294963781 + .long 1072693247 + .long 4169952110 + .long 1032974695 + .long 4294964057 + .long 1072693247 + .long 140330391 + .long 1032884004 + .long 4294964311 + .long 1072693247 + .long 3783382554 + .long 1032753008 + .long 4294964546 + .long 1072693247 + .long 551761884 + .long 1032598092 + .long 4294964763 + .long 1072693247 + .long 359970126 + .long 1032454950 + .long 4294964963 + .long 1072693247 + .long 1021270101 + .long 1032322704 + .long 4294965147 + .long 1072693247 + .long 1490695248 + .long 1032200540 + .long 4294965317 + .long 1072693247 + .long 3568738246 + .long 1032087703 + .long 4294965474 + .long 1072693247 + .long 2104695675 + .long 1031983495 + .long 4294965619 + .long 1072693247 + .long 2259752215 + .long 1031887267 + .long 4294965752 + .long 1072693247 + .long 2928907214 + .long 1031798055 + .long 4294965875 + .long 1072693247 + .long 825285899 + .long 1031634009 + .long 4294965988 + .long 1072693247 + .long 130522063 + .long 1031482582 + .long 4294966092 + .long 1072693247 + .long 3544208977 + .long 1031342820 + .long 4294966189 + .long 1072693247 + .long 3709295074 + .long 1031213842 + .long 4294966277 + .long 1072693247 + .long 4124611741 + .long 1031094830 + .long 4294966359 + .long 1072693247 + .long 2968308055 + .long 1030985028 + .long 4294966434 + .long 1072693247 + .long 4148065245 + .long 1030883735 + .long 4294966503 + .long 1072693247 + .long 3937194615 + .long 1030790304 + .long 4294966567 + .long 1072693247 + .long 693670124 + .long 1030658064 + .long 4294966626 + .long 1072693247 + .long 3047836189 + .long 1030499141 + .long 4294966680 + .long 1072693247 + .long 1761244566 + .long 1030352608 + .long 4294966730 + .long 1072693247 + .long 966529192 + .long 1030217515 + .long 4294966776 + .long 1072693247 + .long 2050080133 + .long 1030092984 + .long 4294966818 + .long 1072693247 + .long 2531893977 + .long 1029978204 + .long 4294966857 + .long 1072693247 + .long 871320764 + .long 1029872425 + .long 4294966892 + .long 1072693247 + .long 2788659082 + .long 1029774952 + .long 4294966925 + .long 1072693247 + .long 2156308587 + .long 1029668659 + .long 4294966955 + .long 1072693247 + .long 3654157322 + .long 1029503191 + .long 4294966983 + .long 1072693247 + .long 622519429 + .long 1029350775 + .long 4294967009 + .long 1072693247 + .long 1939798879 + .long 1029210397 + .long 4294967032 + .long 1072693247 + .long 3844698302 + .long 1029081123 + .long 4294967054 + .long 1072693247 + .long 3868101452 + .long 1028962090 + .long 4294967074 + .long 1072693247 + .long 3689445052 + .long 1028852500 + .long 4294967092 + .long 1072693247 + .long 788030992 + .long 1028751617 + .long 4294967109 + .long 1072693247 + .long 3128526661 + .long 1028658759 + .long 4294967124 + .long 1072693247 + .long 393221749 + .long 1028493545 + .long 4294967138 + .long 1072693247 + .long 3899460746 + .long 1028336263 + .long 4294967151 + .long 1072693247 + .long 3409408659 + .long 1028191549 + .long 4294967163 + .long 1072693247 + .long 622192947 + .long 1028058415 + .long 4294967174 + .long 1072693247 + .long 2664726297 + .long 1027935948 + .long 4294967184 + .long 1072693247 + .long 1558673822 + .long 1027823309 + .long 4294967194 + .long 1072693247 + .long 2777131896 + .long 1027719721 + .long 4294967202 + .long 1072693247 + .long 3972527094 + .long 1027624469 + .long 4294967210 + .long 1072693247 + .long 2120900631 + .long 1027469308 + .long 4294967217 + .long 1072693247 + .long 137556752 + .long 1027308292 + .long 4294967224 + .long 1072693247 + .long 569601398 + .long 1027160288 + .long 4294967230 + .long 1072693247 + .long 280212019 + .long 1027024262 + .long 4294967235 + .long 1072693247 + .long 4236421385 + .long 1026899259 + .long 4294967240 + .long 1072693247 + .long 3132998397 + .long 1026784402 + .long 4294967245 + .long 1072693247 + .long 269619050 + .long 1026678880 + .long 4294967249 + .long 1072693247 + .long 1633775828 + .long 1026581945 + .long 4294967253 + .long 1072693247 + .long 2528343355 + .long 1026429917 + .long 4294967257 + .long 1072693247 + .long 843477906 + .long 1026266381 + .long 4294967260 + .long 1072693247 + .long 640833957 + .long 1026116210 + .long 4294967263 + .long 1072693247 + .long 1040411868 + .long 1025978329 + .long 4294967266 + .long 1072693247 + .long 1466509739 + .long 1025851748 + .long 4294967268 + .long 1072693247 + .long 3307339414 + .long 1025735555 + .long 4294967271 + .long 1072693247 + .long 857222806 + .long 1025628912 + .long 4294967273 + .long 1072693247 + .long 33935978 + .long 1025531045 + .long 4294967275 + .long 1072693247 + .long 592853498 + .long 1025375158 + .long 4294967277 + .long 1072693247 + .long 3801380895 + .long 1025210375 + .long 4294967278 + .long 1072693247 + .long 3715147572 + .long 1025059210 + .long 4294967280 + .long 1072693247 + .long 4190633910 + .long 1024920554 + .long 4294967281 + .long 1072693247 + .long 3597701666 + .long 1024793388 + .long 4294967283 + .long 1072693247 + .long 3481239551 + .long 1024676774 + .long 4294967284 + .long 1072693247 + .long 2361296039 + .long 1024569850 + .long 4294967285 + .long 1072693247 + .long 265722145 + .long 1024471823 + .long 4294967286 + .long 1072693247 + .long 1895395227 + .long 1024305174 + .long 4294967287 + .long 1072693247 + .long 1800210858 + .long 1024140449 + .long 4294967287 + .long 1072693247 + .long 3069172694 + .long 1023989486 + .long 4294967288 + .long 1072693247 + .long 2893236102 + .long 1023851153 + .long 4294967289 + .long 1072693247 + .long 1719077557 + .long 1023724409 + .long 4294967289 + .long 1072693247 + .long 1914505601 + .long 1023608297 + .long 4294967290 + .long 1072693247 + .long 301987594 + .long 1023501939 + .long 4294967291 + .long 1072693247 + .long 282470485 + .long 1023398878 + .long 4294967291 + .long 1072693247 + .long 3168046348 + .long 1023220463 + .long 4294967291 + .long 1072693247 + .long 1009101993 + .long 1023057097 + .long 4294967292 + .long 1072693247 + .long 3997083445 + .long 1022907527 + .long 4294967292 + .long 1072693247 + .long 2336955916 + .long 1022770607 + .long 4294967293 + .long 1072693247 + .long 3868880033 + .long 1022645281 + .long 4294967293 + .long 1072693247 + .long 1476581786 + .long 1022530583 + .long 4294967293 + .long 1072693247 + .long 3208709775 + .long 1022425623 + .long 4294967293 + .long 1072693247 + .long 716057529 + .long 1022297576 + .long 4294967294 + .long 1072693247 + .long 28479576 + .long 1022121857 + .long 4294967294 + .long 1072693247 + .long 3319607164 + .long 1021961117 + .long 4294967294 + .long 1072693247 + .long 2804464626 + .long 1021814099 + .long 4294967294 + .long 1072693247 + .long 148574980 + .long 1021679648 + .long 4294967294 + .long 1072693247 + .long 69395739 + .long 1021556704 + .long 4294967294 + .long 1072693247 + .long 2564419134 + .long 1021444296 + .long 4294967295 + .long 1072693247 + .long 2125879894 + .long 1021341535 + .long 4294967295 + .long 1072693247 + .long 344595749 + .long 1021182185 + .long 4294967295 + .long 1072693247 + .long 872566418 + .long 1021010487 + .long 4294967295 + .long 1072693247 + .long 25762808 + .long 1020853582 + .long 4294967295 + .long 1072693247 + .long 3343322505 + .long 1020710212 + .long 4294967295 + .long 1072693247 + .long 68521175 + .long 1020579228 + .long 4294967295 + .long 1072693247 + .long 3210511172 + .long 1020459572 + .long 4294967295 + .long 1072693247 + .long 2432640097 + .long 1020350280 + .long 4294967295 + .long 1072693247 + .long 2650426869 + .long 1020236484 + .long 4294967295 + .long 1072693247 + .long 2803544287 + .long 1020054190 + .long 4294967295 + .long 1072693247 + .long 2667581847 + .long 1019887746 + .long 0 + .long 1072693248 + .long 995748204 + .long 1019735793 + .long 0 + .long 1072693248 + .long 438643701 + .long 1019597086 + .long 0 + .long 1072693248 + .long 809181847 + .long 1019470486 + .long 0 + .long 1072693248 + .long 10437582 + .long 1019354951 + .long 0 + .long 1072693248 + .long 2354988354 + .long 1019249526 + .long 0 + .long 1072693248 + .long 3627099743 + .long 1019090807 + .long 0 + .long 1072693248 + .long 184652213 + .long 1018915313 + .long 0 + .long 1072693248 + .long 2690341715 + .long 1018755235 + .long 0 + .long 1072693248 + .long 1010878695 + .long 1018609239 + .long 0 + .long 1072693248 + .long 3130597339 + .long 1018476101 + .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 1075312640 + .long 0 + .long 1075312640 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 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 1119879168 + .long 0 + .long 1119879168 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 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 804257792 + .long 0 + .long 804257792 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 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 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 2958810789 + .long 3215376749 + .long 2958810789 + .long 3215376749 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .long 899900337 + .long 1069617426 + .long 899900337 + .long 1069617426 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .long 477227863 + .long 1070363082 + .long 477227863 + .long 1070363082 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .long 736288168 + .long 3218708892 + .long 736288168 + .long 3218708892 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .long 6991 + .long 3217380696 + .long 6991 + .long 3217380696 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .long 736293154 + .long 1069128094 + .long 736293154 + .long 1069128094 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .long 1431652342 + .long 3218429269 + .long 1431652342 + .long 3218429269 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .long 4294956237 + .long 1071644671 + .long 4294956237 + .long 1071644671 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .long 1431653132 + .long 1071994197 + .long 1431653132 + .long 1071994197 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .long 1431655765 + .long 3218429269 + .long 1431655765 + .long 3218429269 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 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 3220176896 + .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 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 0 + .long 4294967295 + .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 + .long 3149651110 + .long 1071994199 + .long 3149651110 + .long 1071994199 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .long 2147488809 + .long 3220176897 + .long 2147488809 + .long 3220176897 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .long 22118 + .long 1071644676 + .long 22118 + .long 1071644676 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .long 2290691940 + .long 3218429276 + .long 2290691940 + .long 3218429276 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .long 3748619702 + .long 1076933868 + .long 3748619702 + .long 1076933868 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .long 1332865885 + .long 1072827863 + .long 1332865885 + .long 1072827863 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .long 4175280127 + .long 3218608755 + .long 4175280127 + .long 3218608755 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .long 1654303500 + .long 1069343463 + .long 1654303500 + .long 1069343463 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .long 2550143969 + .long 3214639717 + .long 2550143969 + .long 3214639717 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .long 1811974982 + .long 1064657815 + .long 1811974982 + .long 1064657815 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .long 2000717462 + .long 3209426147 + .long 2000717462 + .long 3209426147 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .long 3946397046 + .long 1059020016 + .long 3946397046 + .long 1059020016 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .long 2418528937 + .long 3203304934 + .long 2418528937 + .long 3203304934 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .long 1917951611 + .long 1052370084 + .long 1917951611 + .long 1052370084 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .long 15579687 + .long 3196251740 + .long 15579687 + .long 3196251740 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .long 3028475240 + .long 1044872454 + .long 3028475240 + .long 1044872454 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .long 4080210287 + .long 3188206558 + .long 4080210287 + .long 3188206558 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .long 2207563104 + .long 1036259756 + .long 2207563104 + .long 1036259756 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .long 3335582481 + .long 3178889284 + .long 3335582481 + .long 3178889284 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .long 965701323 + .long 1026106865 + .long 965701323 + .long 1026106865 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .long 125167645 + .long 3167813598 + .long 125167645 + .long 3167813598 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .long 374732026 + .long 1013747294 + .long 374732026 + .long 1013747294 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .long 385891618 + .long 3153485771 + .long 385891618 + .long 3153485771 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .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_derf_data_internal,@object + .size __svml_derf_data_internal,14976 + .align 32 + +_imldErfHATab: + .long 1346542445 + .long 1072827863 + .long 1342177280 + .long 1072827863 + .long 1147899556 + .long 1041278683 + .long 0 + .long 1282408448 + .long 0 + .long 862978048 + .long 33554432 + .long 1101004800 + .long 0 + .long 0 + .long 0 + .long 2147483648 + .long 0 + .long 1072693248 + .long 0 + .long 3220176896 + .long 0 + .long 256 + .long 1222277045 + .long 929276 + .type _imldErfHATab,@object + .size _imldErfHATab,96 diff --git a/sysdeps/x86_64/fpu/multiarch/svml_d_erf4_core-sse.S b/sysdeps/x86_64/fpu/multiarch/svml_d_erf4_core-sse.S new file mode 100644 index 0000000000..704785738f --- /dev/null +++ b/sysdeps/x86_64/fpu/multiarch/svml_d_erf4_core-sse.S @@ -0,0 +1,20 @@ +/* SSE version of vectorized erf, 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 + . */ + +#define _ZGVdN4v_erf _ZGVdN4v_erf_sse_wrapper +#include "../svml_d_erf4_core.S" diff --git a/sysdeps/x86_64/fpu/multiarch/svml_d_erf4_core.c b/sysdeps/x86_64/fpu/multiarch/svml_d_erf4_core.c new file mode 100644 index 0000000000..0647917209 --- /dev/null +++ b/sysdeps/x86_64/fpu/multiarch/svml_d_erf4_core.c @@ -0,0 +1,27 @@ +/* Multiple versions of vectorized erf, 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 + . */ + +#define SYMBOL_NAME _ZGVdN4v_erf +#include "ifunc-mathvec-avx2.h" + +libc_ifunc_redirected (REDIRECT_NAME, SYMBOL_NAME, IFUNC_SELECTOR ()); + +#ifdef SHARED +__hidden_ver1 (_ZGVdN4v_erf, __GI__ZGVdN4v_erf, __redirect__ZGVdN4v_erf) + __attribute__ ((visibility ("hidden"))); +#endif diff --git a/sysdeps/x86_64/fpu/multiarch/svml_d_erf4_core_avx2.S b/sysdeps/x86_64/fpu/multiarch/svml_d_erf4_core_avx2.S new file mode 100644 index 0000000000..2422ffe3fe --- /dev/null +++ b/sysdeps/x86_64/fpu/multiarch/svml_d_erf4_core_avx2.S @@ -0,0 +1,5107 @@ +/* Function erf 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: + * + * Basic formula is + * erf(x) ~ erf(x0) + + * + exp(-x0*x0)*D*(1+c0+T*P1(T)+D^2*P3(T)+D^4*P5(T)+D^6*p7+D^8*p9) + * where D=x-x0, T=x0*D + * x0 is x rounded to a specified number of fractional bits (in this case 7), + * except that x0=0 for |x|<3.5/128.0 (using x0=0 for first 4 table entries) + * + * Data table packs both erf(x0)_high and a few bits of erf(x0)_low in one + * entry (in place of redundant exponent bits) + * + */ + +#include + + .text +ENTRY(_ZGVdN4v_erf_avx2) + pushq %rbp + cfi_def_cfa_offset(16) + movq %rsp, %rbp + cfi_def_cfa(6, 16) + cfi_offset(6, -16) + andq $-64, %rsp + +/* + * vector gather: erf(x0), + * second value is exp(-x0*x0) + */ + lea __svml_derf_data_internal(%rip), %rax + vmovupd 12416+__svml_derf_data_internal(%rip), %ymm1 + vmovups %ymm14, -32(%rsp) + vmovups %ymm15, -64(%rsp) + vandpd 12288+__svml_derf_data_internal(%rip), %ymm0, %ymm4 + +/* + * erf(x) rounds to 1.0 for x>_MaxThreshold (5.9921875) + * can compute all results in the main path + */ + vminpd 12352+__svml_derf_data_internal(%rip), %ymm4, %ymm5 + .cfi_escape 0x10, 0xe1, 0x00, 0x0e, 0x38, 0x1c, 0x0d, 0xc0, 0xff, 0xff, 0xff, 0x1a, 0x0d, 0xe0, 0xff, 0xff, 0xff, 0x22 + .cfi_escape 0x10, 0xe2, 0x00, 0x0e, 0x38, 0x1c, 0x0d, 0xc0, 0xff, 0xff, 0xff, 0x1a, 0x0d, 0xc0, 0xff, 0xff, 0xff, 0x22 + vaddpd %ymm1, %ymm5, %ymm14 + vcmpgt_oqpd 12480+__svml_derf_data_internal(%rip), %ymm5, %ymm6 + vsubpd %ymm1, %ymm14, %ymm3 + +/* save sign */ + vxorpd %ymm0, %ymm4, %ymm2 + vpsllq $4, %ymm14, %ymm0 + vsubpd %ymm3, %ymm5, %ymm7 + vandps 13440+__svml_derf_data_internal(%rip), %ymm0, %ymm5 + vmulpd %ymm7, %ymm3, %ymm1 + vandpd %ymm6, %ymm7, %ymm6 + +/* NaN fixup */ + vminpd %ymm4, %ymm7, %ymm7 + +/* T^2 */ + vmulpd %ymm1, %ymm1, %ymm4 + vextractf128 $1, %ymm5, %xmm3 + vmovd %xmm5, %edx + vmovd %xmm3, %r8d + movslq %edx, %rdx + vpextrd $2, %xmm5, %ecx + movslq %r8d, %r8 + vpextrd $2, %xmm3, %r9d + movslq %ecx, %rcx + movslq %r9d, %r9 + vmovupd (%rax,%rdx), %xmm14 + vmovupd (%rax,%r8), %xmm15 + vmovhpd (%rax,%rcx), %xmm14, %xmm0 + vunpckhpd (%rax,%rcx), %xmm14, %xmm14 + vmovhpd (%rax,%r9), %xmm15, %xmm5 + vunpckhpd (%rax,%r9), %xmm15, %xmm15 + vinsertf128 $1, %xmm5, %ymm0, %ymm3 + vinsertf128 $1, %xmm15, %ymm14, %ymm0 + +/* D2 = Diff^2 */ + vmulpd %ymm6, %ymm6, %ymm14 + +/* + * _LA_ polynomial computation + * Start polynomial evaluation + */ + vmovupd 12672+__svml_derf_data_internal(%rip), %ymm6 + vmovupd 12928+__svml_derf_data_internal(%rip), %ymm15 + vfmadd213pd 12736+__svml_derf_data_internal(%rip), %ymm1, %ymm6 + vfmadd213pd 12992+__svml_derf_data_internal(%rip), %ymm1, %ymm15 + vfmadd213pd 13056+__svml_derf_data_internal(%rip), %ymm1, %ymm6 + vfmadd213pd 13248+__svml_derf_data_internal(%rip), %ymm14, %ymm15 + vfmadd213pd 13184+__svml_derf_data_internal(%rip), %ymm1, %ymm6 + +/* Sign | Diff */ + vxorpd %ymm2, %ymm7, %ymm5 + vmovupd 12800+__svml_derf_data_internal(%rip), %ymm7 + +/* P1 = T^2*P1 - T */ + vfmsub213pd %ymm1, %ymm4, %ymm6 + vfmadd213pd 12864+__svml_derf_data_internal(%rip), %ymm1, %ymm7 + vfmadd213pd 13120+__svml_derf_data_internal(%rip), %ymm1, %ymm7 + vfmadd213pd %ymm15, %ymm1, %ymm7 + +/* exp_h(x0) * Diff */ + vmulpd %ymm5, %ymm0, %ymm1 + vmovups -64(%rsp), %ymm15 + cfi_restore(98) + +/* P1 + P3*D2 */ + vfmadd213pd %ymm6, %ymm14, %ymm7 + vmovups -32(%rsp), %ymm14 + cfi_restore(97) + +/* + * branch-free + * low part of result: exp_h(x0) * Diff*(1+P1) + */ + vfmadd213pd %ymm1, %ymm1, %ymm7 + +/* Sign | _Erf_H */ + vxorpd %ymm2, %ymm3, %ymm3 + +/* Final result */ + vaddpd %ymm7, %ymm3, %ymm4 + +/* Fix erf(-0) = -0 */ + vorpd %ymm2, %ymm4, %ymm0 + movq %rbp, %rsp + popq %rbp + cfi_def_cfa(7, 8) + cfi_restore(6) + ret + +END(_ZGVdN4v_erf_avx2) + + .align 16,0x90 + +__svml_derf_cout_rare_internal: + + cfi_startproc + + movq %rdi, %r8 + lea 64+_imldErfHATab(%rip), %rdx + movb 7(%r8), %cl + movb %cl, %al + andb $-128, %al + shrb $7, %al + movzbl %al, %edi + movzwl 6(%r8), %eax + andl $32752, %eax + shrl $4, %eax + movq (%rdx,%rdi,8), %rdx + cmpl $2047, %eax + je .LBL_2_13 + cmpl $2046, %eax + jne .LBL_2_4 + +.LBL_2_3: + movq %rdx, (%rsi) + jmp .LBL_2_11 + +.LBL_2_4: + movsd (%r8), %xmm6 + andb $127, %cl + movsd %xmm6, -8(%rsp) + movb %cl, -1(%rsp) + movsd -8(%rsp), %xmm0 + ucomisd 48+_imldErfHATab(%rip), %xmm0 + jp .LBL_2_5 + je .LBL_2_12 + +.LBL_2_5: + testl %eax, %eax + jne .LBL_2_7 + comisd 88+_imldErfHATab(%rip), %xmm0 + jb .LBL_2_8 + +.LBL_2_7: + movsd 24+_imldErfHATab(%rip), %xmm0 + mulsd %xmm0, %xmm6 + movsd 40+_imldErfHATab(%rip), %xmm1 + mulsd %xmm6, %xmm1 + movsd %xmm1, -24(%rsp) + movsd -24(%rsp), %xmm2 + movsd 8+_imldErfHATab(%rip), %xmm12 + subsd %xmm6, %xmm2 + movsd %xmm2, -16(%rsp) + movsd -24(%rsp), %xmm4 + movsd -16(%rsp), %xmm3 + movsd 8+_imldErfHATab(%rip), %xmm9 + subsd %xmm3, %xmm4 + movsd %xmm4, -24(%rsp) + movsd -24(%rsp), %xmm5 + subsd %xmm5, %xmm6 + movsd %xmm6, -16(%rsp) + movsd 16+_imldErfHATab(%rip), %xmm6 + movsd -24(%rsp), %xmm7 + movaps %xmm6, %xmm10 + movsd -16(%rsp), %xmm8 + mulsd %xmm7, %xmm12 + mulsd %xmm8, %xmm10 + mulsd %xmm6, %xmm7 + mulsd %xmm8, %xmm9 + addsd %xmm7, %xmm10 + addsd %xmm9, %xmm10 + movsd %xmm10, -24(%rsp) + movsd -24(%rsp), %xmm11 + addsd %xmm11, %xmm12 + mulsd 32+_imldErfHATab(%rip), %xmm12 + movsd %xmm12, (%rsi) + jmp .LBL_2_11 + +.LBL_2_8: + comisd 80+_imldErfHATab(%rip), %xmm0 + jb .LBL_2_10 + movsd 24+_imldErfHATab(%rip), %xmm0 + mulsd %xmm0, %xmm6 + movsd 40+_imldErfHATab(%rip), %xmm1 + mulsd %xmm6, %xmm1 + movsd %xmm1, -24(%rsp) + movsd -24(%rsp), %xmm2 + movsd 8+_imldErfHATab(%rip), %xmm0 + subsd %xmm6, %xmm2 + movsd %xmm2, -16(%rsp) + movsd -24(%rsp), %xmm4 + movsd -16(%rsp), %xmm3 + movsd 8+_imldErfHATab(%rip), %xmm9 + subsd %xmm3, %xmm4 + movsd %xmm4, -24(%rsp) + movsd -24(%rsp), %xmm5 + movsd 40+_imldErfHATab(%rip), %xmm11 + subsd %xmm5, %xmm6 + movsd %xmm6, -16(%rsp) + movsd 16+_imldErfHATab(%rip), %xmm6 + movsd -24(%rsp), %xmm7 + movaps %xmm6, %xmm10 + movsd -16(%rsp), %xmm8 + mulsd %xmm7, %xmm0 + mulsd %xmm8, %xmm10 + mulsd %xmm6, %xmm7 + mulsd %xmm8, %xmm9 + mulsd %xmm0, %xmm11 + addsd %xmm7, %xmm10 + addsd %xmm9, %xmm10 + movsd %xmm10, -24(%rsp) + movsd -24(%rsp), %xmm1 + movsd %xmm11, -24(%rsp) + movsd -24(%rsp), %xmm12 + subsd %xmm0, %xmm12 + movsd %xmm12, -16(%rsp) + movsd -24(%rsp), %xmm14 + movsd -16(%rsp), %xmm13 + subsd %xmm13, %xmm14 + movsd %xmm14, -24(%rsp) + movsd -24(%rsp), %xmm15 + subsd %xmm15, %xmm0 + movsd %xmm0, -16(%rsp) + movsd -24(%rsp), %xmm12 + movsd -16(%rsp), %xmm11 + mulsd 32+_imldErfHATab(%rip), %xmm12 + addsd %xmm11, %xmm1 + mulsd 32+_imldErfHATab(%rip), %xmm1 + movsd %xmm12, -24(%rsp) + movsd %xmm1, -16(%rsp) + movsd -24(%rsp), %xmm3 + movsd -16(%rsp), %xmm2 + addsd %xmm2, %xmm3 + movsd %xmm3, (%rsi) + jmp .LBL_2_11 + +.LBL_2_10: + movsd _imldErfHATab(%rip), %xmm0 + mulsd %xmm0, %xmm6 + movsd %xmm6, (%rsi) + +.LBL_2_11: + xorl %eax, %eax + ret + +.LBL_2_12: + lea 48+_imldErfHATab(%rip), %rax + movq (%rax,%rdi,8), %rdx + movq %rdx, (%rsi) + jmp .LBL_2_11 + +.LBL_2_13: + testl $1048575, 4(%r8) + jne .LBL_2_16 + cmpl $0, (%r8) + je .LBL_2_3 + +.LBL_2_16: + movsd (%r8), %xmm0 + addsd %xmm0, %xmm0 + movsd %xmm0, (%rsi) + jmp .LBL_2_11 + + cfi_endproc + + .type __svml_derf_cout_rare_internal,@function + .size __svml_derf_cout_rare_internal,.-__svml_derf_cout_rare_internal + + .section .rodata, "a" + .align 64 + +__svml_derf_data_internal: + .long 0 + .long 0 + .long 1346542445 + .long 1072827863 + .long 1038816064 + .long 1065487807 + .long 427149405 + .long 1072827791 + .long 138352544 + .long 1066536311 + .long 2077512391 + .long 1072827574 + .long 217416924 + .long 1067127678 + .long 2343319233 + .long 1072827213 + .long 1172120888 + .long 1067584598 + .long 1792097487 + .long 1072826708 + .long 1002214694 + .long 1067880029 + .long 1217900872 + .long 1072826059 + .long 4011022149 + .long 1068175279 + .long 1640824915 + .long 1072825266 + .long 2008889377 + .long 1068470314 + .long 11417604 + .long 1072824330 + .long 2162755160 + .long 1068632020 + .long 2094822099 + .long 1072823250 + .long 3900605843 + .long 1068779267 + .long 995044552 + .long 1072822028 + .long 2716351325 + .long 1068926353 + .long 2923726463 + .long 1072820663 + .long 3951725859 + .long 1069073259 + .long 1429174619 + .long 1072819157 + .long 344622906 + .long 1069219969 + .long 3164864724 + .long 1072817509 + .long 2121311411 + .long 1069366463 + .long 2118204713 + .long 1072815721 + .long 2663955280 + .long 1069512725 + .long 1083806794 + .long 1072813793 + .long 6252005 + .long 1069603129 + .long 3071858204 + .long 1072811725 + .long 2740730761 + .long 1069676001 + .long 2716363190 + .long 1072809519 + .long 368405780 + .long 1069748732 + .long 3453061548 + .long 1072807175 + .long 3270920537 + .long 1069821311 + .long 337483221 + .long 1072804695 + .long 589420486 + .long 1069893732 + .long 1517584741 + .long 1072802078 + .long 3187124383 + .long 1069965984 + .long 2461623467 + .long 1072799326 + .long 712400798 + .long 1070038061 + .long 3135584772 + .long 1072796440 + .long 266066941 + .long 1070109953 + .long 3705654820 + .long 1072793421 + .long 644014413 + .long 1070181652 + .long 240577552 + .long 1072790271 + .long 939402534 + .long 1070253150 + .long 1888734604 + .long 1072786989 + .long 554739272 + .long 1070324439 + .long 810473775 + .long 1072783578 + .long 3508744759 + .long 1070395510 + .long 2239870849 + .long 1072780038 + .long 1268186934 + .long 1070466357 + .long 3006777612 + .long 1072776371 + .long 2824159458 + .long 1070536970 + .long 123537259 + .long 1072772579 + .long 2319306557 + .long 1070601719 + .long 3666566110 + .long 1072768661 + .long 1770174792 + .long 1070636781 + .long 2413196824 + .long 1072764621 + .long 515431986 + .long 1070671715 + .long 2492870238 + .long 1072760459 + .long 3794982409 + .long 1070706516 + .long 1613725249 + .long 1072756177 + .long 4163230114 + .long 1070741182 + .long 1943804817 + .long 1072751776 + .long 2969010815 + .long 1070775709 + .long 1517338984 + .long 1072747258 + .long 1770633177 + .long 1070810093 + .long 2820813657 + .long 1072742624 + .long 2340732634 + .long 1070844330 + .long 4199089955 + .long 1072737876 + .long 2376033378 + .long 1070878417 + .long 4146348395 + .long 1072733016 + .long 4091885358 + .long 1070912350 + .long 1301992007 + .long 1072728046 + .long 1341835662 + .long 1070946127 + .long 3036413564 + .long 1072722966 + .long 1096806975 + .long 1070979743 + .long 3971924632 + .long 1072717779 + .long 1974469745 + .long 1071013195 + .long 3158326576 + .long 1072712487 + .long 2833250162 + .long 1071046480 + .long 4068552111 + .long 1072707091 + .long 2776266431 + .long 1071079595 + .long 1709348165 + .long 1072701594 + .long 1155126244 + .long 1071112537 + .long 4091643817 + .long 1072695996 + .long 1868551104 + .long 1071145302 + .long 27554567 + .long 1072687355 + .long 480989547 + .long 1071177888 + .long 4013208754 + .long 1072675771 + .long 1405858118 + .long 1071210291 + .long 2463469560 + .long 1072664000 + .long 728899385 + .long 1071242509 + .long 3673248531 + .long 1072652044 + .long 3391132564 + .long 1071274538 + .long 3245080601 + .long 1072639908 + .long 1716951687 + .long 1071306377 + .long 1259566555 + .long 1072627596 + .long 1186716264 + .long 1071338022 + .long 2265889960 + .long 1072615111 + .long 3259520440 + .long 1071369470 + .long 2387383118 + .long 1072602458 + .long 1080714748 + .long 1071400720 + .long 2196854969 + .long 1072589641 + .long 959081773 + .long 1071431768 + .long 2412015218 + .long 1072576664 + .long 894188496 + .long 1071462612 + .long 3885838402 + .long 1072563531 + .long 3463326280 + .long 1071493249 + .long 3301940522 + .long 1072550247 + .long 2938496088 + .long 1071523678 + .long 1754844591 + .long 1072536816 + .long 2468013648 + .long 1071553896 + .long 445338472 + .long 1072523242 + .long 1193192369 + .long 1071583901 + .long 670801289 + .long 1072509529 + .long 2839711645 + .long 1071613690 + .long 3815538169 + .long 1072495681 + .long 2833997776 + .long 1071643262 + .long 2751195712 + .long 1072481704 + .long 2742112668 + .long 1071658643 + .long 3301970792 + .long 1072467601 + .long 1253231335 + .long 1071673209 + .long 2760175517 + .long 1072453377 + .long 1545137618 + .long 1071687663 + .long 2761576465 + .long 1072439036 + .long 4064802502 + .long 1071702004 + .long 685940062 + .long 1072424583 + .long 816685333 + .long 1071716233 + .long 2532463670 + .long 1072410021 + .long 1132731221 + .long 1071730347 + .long 1435524088 + .long 1072395356 + .long 1607720272 + .long 1071744346 + .long 3425128494 + .long 1072380591 + .long 3279184281 + .long 1071758229 + .long 1647826366 + .long 1072365732 + .long 3037447390 + .long 1071771996 + .long 2127303697 + .long 1072350782 + .long 2215464304 + .long 1071785646 + .long 2280417801 + .long 1072335746 + .long 2293685631 + .long 1071799178 + .long 3793057312 + .long 1072320628 + .long 604852941 + .long 1071812592 + .long 4021258398 + .long 1072305433 + .long 3218593473 + .long 1071825886 + .long 277321282 + .long 1072290166 + .long 3466207732 + .long 1071839061 + .long 2705965375 + .long 1072274829 + .long 3415062139 + .long 1071852116 + .long 4210920931 + .long 1072259428 + .long 983176269 + .long 1071865051 + .long 1921243050 + .long 1072243968 + .long 2823547761 + .long 1071877864 + .long 1477876472 + .long 1072228452 + .long 2848673694 + .long 1071890556 + .long 4140476189 + .long 1072212884 + .long 3704680757 + .long 1071903126 + .long 2484292510 + .long 1072197270 + .long 3885653926 + .long 1071915574 + .long 1866994493 + .long 1072181613 + .long 2027772262 + .long 1071927900 + .long 3240926857 + .long 1072165917 + .long 1203383746 + .long 1071940103 + .long 3145379609 + .long 1072150187 + .long 330118419 + .long 1071952183 + .long 2288940035 + .long 1072134427 + .long 2759812044 + .long 1071964139 + .long 1247094627 + .long 1072118641 + .long 3392535852 + .long 1071975972 + .long 454954036 + .long 1072102833 + .long 1560373839 + .long 1071987682 + .long 200137461 + .long 1072087007 + .long 1026243227 + .long 1071999268 + .long 615820036 + .long 1072071167 + .long 1392726659 + .long 1072010730 + .long 1673946580 + .long 1072055317 + .long 2395753923 + .long 1072022068 + .long 3178614907 + .long 1072039461 + .long 3903265363 + .long 1072033282 + .long 464664423 + .long 1072023604 + .long 1618858333 + .long 1072044373 + .long 1571276620 + .long 1072007748 + .long 4260221847 + .long 1072055339 + .long 1466080688 + .long 1071991898 + .long 3492884098 + .long 1072066182 + .long 3514079945 + .long 1071976057 + .long 3993456657 + .long 1072076901 + .long 2292055455 + .long 1071960230 + .long 1973227103 + .long 1072087497 + .long 762892997 + .long 1071944420 + .long 2356414747 + .long 1072097969 + .long 1680293156 + .long 1071928630 + .long 1598646874 + .long 1072108318 + .long 3288637392 + .long 1071912864 + .long 570166456 + .long 1072118544 + .long 3612978933 + .long 1071897126 + .long 259132527 + .long 1072128647 + .long 454258010 + .long 1071881420 + .long 1769851247 + .long 1072138627 + .long 4269611837 + .long 1071865747 + .long 2026004535 + .long 1072148485 + .long 3808238226 + .long 1071850113 + .long 2358747003 + .long 1072158221 + .long 466930684 + .long 1071834521 + .long 4209868920 + .long 1072167835 + .long 3991103291 + .long 1071818972 + .long 539961339 + .long 1072177329 + .long 2406207743 + .long 1071803472 + .long 1596290573 + .long 1072186701 + .long 668823419 + .long 1071788023 + .long 551103050 + .long 1072195953 + .long 3483369050 + .long 1071772627 + .long 3564413664 + .long 1072205084 + .long 2413978135 + .long 1071757289 + .long 4012194871 + .long 1072214096 + .long 1651276306 + .long 1071742011 + .long 3959183150 + .long 1072222989 + .long 829681671 + .long 1071726796 + .long 1271925764 + .long 1072231764 + .long 3614704403 + .long 1071711646 + .long 2501611462 + .long 1072240420 + .long 520637331 + .long 1071696566 + .long 1407144504 + .long 1072248959 + .long 3268048090 + .long 1071681556 + .long 427874865 + .long 1072257381 + .long 1832052951 + .long 1071666621 + .long 2091542065 + .long 1072265686 + .long 3095161192 + .long 1071651762 + .long 422205205 + .long 1072273876 + .long 1561666736 + .long 1071629294 + .long 2412931770 + .long 1072281950 + .long 2443607338 + .long 1071599898 + .long 2253835330 + .long 1072289910 + .long 3767899416 + .long 1071570670 + .long 2804744118 + .long 1072297756 + .long 4205206053 + .long 1071541615 + .long 2708123311 + .long 1072305489 + .long 1868283784 + .long 1071512738 + .long 681859986 + .long 1072313110 + .long 2900434531 + .long 1071484042 + .long 4107010292 + .long 1072320618 + .long 4294514068 + .long 1071455532 + .long 3255804563 + .long 1072328016 + .long 2482100151 + .long 1071427213 + .long 1354224973 + .long 1072335304 + .long 1923011912 + .long 1071399088 + .long 1694909286 + .long 1072342482 + .long 2220339163 + .long 1071371161 + .long 3339989603 + .long 1072349551 + .long 2415682179 + .long 1071343436 + .long 1118900120 + .long 1072356513 + .long 989760182 + .long 1071315917 + .long 2806057099 + .long 1072363367 + .long 158317606 + .long 1071288607 + .long 3348870180 + .long 1072370115 + .long 1578420540 + .long 1071261509 + .long 2045432220 + .long 1072376758 + .long 2055072070 + .long 1071234627 + .long 2542346734 + .long 1072383296 + .long 2133042299 + .long 1071207964 + .long 4242628757 + .long 1072389730 + .long 1804103059 + .long 1071181523 + .long 2303549486 + .long 1072396062 + .long 509530065 + .long 1071155307 + .long 519393155 + .long 1072402292 + .long 1437865959 + .long 1071129318 + .long 2729388920 + .long 1072408420 + .long 2938068361 + .long 1071103559 + .long 4225655329 + .long 1072414448 + .long 2817839853 + .long 1071078033 + .long 341027652 + .long 1072420378 + .long 2642231032 + .long 1071052742 + .long 3626834524 + .long 1072426208 + .long 3442574974 + .long 1071027688 + .long 901148195 + .long 1072431942 + .long 1425680479 + .long 1071002874 + .long 491364740 + .long 1072437579 + .long 863146005 + .long 1070978301 + .long 2167390653 + .long 1072443120 + .long 1211113923 + .long 1070953971 + .long 1434586468 + .long 1072448567 + .long 1410130595 + .long 1070929886 + .long 2416664529 + .long 1072453920 + .long 4185235532 + .long 1070906047 + .long 673836130 + .long 1072459181 + .long 3166402837 + .long 1070882457 + .long 380718319 + .long 1072464350 + .long 73967522 + .long 1070859117 + .long 1439491741 + .long 1072469428 + .long 429421420 + .long 1070836027 + .long 3772950565 + .long 1072474416 + .long 676472817 + .long 1070813189 + .long 3027641485 + .long 1072479316 + .long 1072100387 + .long 1070790604 + .long 3456896295 + .long 1072484128 + .long 1397920641 + .long 1070768273 + .long 739118475 + .long 1072488854 + .long 966697529 + .long 1070746197 + .long 3450801209 + .long 1072493493 + .long 2923986376 + .long 1070724376 + .long 2999964233 + .long 1072498048 + .long 1370067789 + .long 1070702812 + .long 3689159840 + .long 1072502519 + .long 2841771284 + .long 1070681504 + .long 1238898896 + .long 1072506908 + .long 549802159 + .long 1070660454 + .long 4260777949 + .long 1072511214 + .long 155811627 + .long 1070639661 + .long 4191027417 + .long 1072515440 + .long 2599921926 + .long 1070619125 + .long 1058663746 + .long 1072519587 + .long 4108240803 + .long 1070598847 + .long 3483867367 + .long 1072523654 + .long 990911579 + .long 1070561560 + .long 2906586881 + .long 1072527644 + .long 114935845 + .long 1070522036 + .long 3649748481 + .long 1072531557 + .long 4208768690 + .long 1070483026 + .long 1442888585 + .long 1072535395 + .long 2526808836 + .long 1070444532 + .long 600523232 + .long 1072539158 + .long 743445360 + .long 1070406552 + .long 1135777805 + .long 1072542847 + .long 3789340407 + .long 1070369084 + .long 3053917615 + .long 1072546463 + .long 2982814329 + .long 1070332129 + .long 2055975837 + .long 1072550008 + .long 1816057167 + .long 1070295685 + .long 2422282765 + .long 1072553482 + .long 3086740885 + .long 1070259750 + .long 4126223656 + .long 1072556886 + .long 324691238 + .long 1070224324 + .long 2832930958 + .long 1072560222 + .long 3578376465 + .long 1070189403 + .long 2782911091 + .long 1072563490 + .long 776951344 + .long 1070154988 + .long 3905900216 + .long 1072566691 + .long 696731218 + .long 1070121075 + .long 1819654744 + .long 1072569827 + .long 2913260122 + .long 1070087662 + .long 713676646 + .long 1072572898 + .long 2113142428 + .long 1070054748 + .long 463167950 + .long 1072575905 + .long 995821495 + .long 1070022330 + .long 922887372 + .long 1072578849 + .long 1700521760 + .long 1069990405 + .long 1926072615 + .long 1072581731 + .long 1528145825 + .long 1069958971 + .long 3283395580 + .long 1072584552 + .long 1548049162 + .long 1069928025 + .long 486983136 + .long 1072587314 + .long 2319876962 + .long 1069897564 + .long 1889307149 + .long 1072590016 + .long 3910320901 + .long 1069867585 + .long 2932434228 + .long 1072592660 + .long 1614850098 + .long 1069838086 + .long 3326980969 + .long 1072595247 + .long 3154209172 + .long 1069809062 + .long 2756265128 + .long 1072597778 + .long 2921163421 + .long 1069780511 + .long 875456323 + .long 1072600254 + .long 3471794055 + .long 1069752429 + .long 1605726087 + .long 1072602675 + .long 2656954908 + .long 1069724813 + .long 248560569 + .long 1072605043 + .long 2228455793 + .long 1069697659 + .long 664875946 + .long 1072607358 + .long 3560224787 + .long 1069670963 + .long 2389394126 + .long 1072609621 + .long 3369342261 + .long 1069644722 + .long 629951466 + .long 1072611834 + .long 2321839820 + .long 1069618932 + .long 3446707524 + .long 1072613996 + .long 753451907 + .long 1069593589 + .long 1686744094 + .long 1072616110 + .long 2980148458 + .long 1069568688 + .long 3343203939 + .long 1072618175 + .long 267339392 + .long 1069540934 + .long 3489949996 + .long 1072620193 + .long 483064631 + .long 1069492880 + .long 1460894432 + .long 1072622165 + .long 649602217 + .long 1069445687 + .long 849487740 + .long 1072624091 + .long 2890701232 + .long 1069399346 + .long 918302122 + .long 1072625972 + .long 261234300 + .long 1069353850 + .long 893545254 + .long 1072627809 + .long 2545983092 + .long 1069309188 + .long 4259602150 + .long 1072629602 + .long 1928478288 + .long 1069265353 + .long 1578768264 + .long 1072631354 + .long 3083934340 + .long 1069222335 + .long 555650133 + .long 1072633064 + .long 1732151351 + .long 1069180126 + .long 267018061 + .long 1072634733 + .long 1844687288 + .long 1069138716 + .long 4046390903 + .long 1072636361 + .long 2786814309 + .long 1069098096 + .long 2303875791 + .long 1072637951 + .long 3638890659 + .long 1069058257 + .long 2590673673 + .long 1072639502 + .long 3222303380 + .long 1069019190 + .long 3829035115 + .long 1072641015 + .long 124941498 + .long 1068980886 + .long 607011814 + .long 1072642492 + .long 1316127179 + .long 1068943334 + .long 358134174 + .long 1072643932 + .long 696292715 + .long 1068906526 + .long 1886406929 + .long 1072645336 + .long 595841400 + .long 1068870452 + .long 3956099039 + .long 1072646705 + .long 3208742923 + .long 1068835102 + .long 996654455 + .long 1072648041 + .long 2025629493 + .long 1068800468 + .long 282461591 + .long 1072649343 + .long 3331159491 + .long 1068766539 + .long 457938895 + .long 1072650612 + .long 456233562 + .long 1068733307 + .long 127412743 + .long 1072651849 + .long 3864275015 + .long 1068700760 + .long 2150048793 + .long 1072653054 + .long 2517520227 + .long 1068668891 + .long 754934402 + .long 1072654229 + .long 2552204883 + .long 1068637689 + .long 3015919169 + .long 1072655373 + .long 1528723567 + .long 1068607145 + .long 3081834457 + .long 1072656488 + .long 1335976541 + .long 1068577249 + .long 3651371907 + .long 1072657574 + .long 3915328100 + .long 1068547991 + .long 3088241816 + .long 1072658632 + .long 2689078049 + .long 1068519363 + .long 4011185713 + .long 1072659662 + .long 3811402329 + .long 1068483765 + .long 409169671 + .long 1072660666 + .long 3249658772 + .long 1068428968 + .long 3411299989 + .long 1072661642 + .long 4058137866 + .long 1068375372 + .long 2632245636 + .long 1072662593 + .long 2585699919 + .long 1068322959 + .long 532120432 + .long 1072663519 + .long 4081392135 + .long 1068271709 + .long 3826707455 + .long 1072664419 + .long 1250224180 + .long 1068221605 + .long 2012796269 + .long 1072665296 + .long 52563989 + .long 1068172627 + .long 1728109198 + .long 1072666149 + .long 2552846462 + .long 1068124756 + .long 981699159 + .long 1072666979 + .long 2652176382 + .long 1068077975 + .long 2039066381 + .long 1072667786 + .long 3294767379 + .long 1068032265 + .long 2832451379 + .long 1072668571 + .long 3608617230 + .long 1067987608 + .long 1256042053 + .long 1072669335 + .long 3225068209 + .long 1067943986 + .long 3756159862 + .long 1072670077 + .long 2302425099 + .long 1067901381 + .long 3856686221 + .long 1072670799 + .long 1548607803 + .long 1067859775 + .long 3634172681 + .long 1072671501 + .long 2242848736 + .long 1067819150 + .long 833223107 + .long 1072672184 + .long 1961478441 + .long 1067779489 + .long 1751689540 + .long 1072672847 + .long 3187679808 + .long 1067740774 + .long 4061106433 + .long 1072673491 + .long 445484238 + .long 1067702989 + .long 1101970377 + .long 1072674118 + .long 1792596734 + .long 1067666115 + .long 3358897570 + .long 1072674726 + .long 3067683861 + .long 1067630136 + .long 4101214576 + .long 1072675317 + .long 791483465 + .long 1067595036 + .long 858131621 + .long 1072675892 + .long 772076534 + .long 1067560797 + .long 4009021290 + .long 1072676449 + .long 939498435 + .long 1067527403 + .long 2424031124 + .long 1072676991 + .long 4244278389 + .long 1067494837 + .long 2119146704 + .long 1072677517 + .long 1490379385 + .long 1067463085 + .long 486751354 + .long 1072678028 + .long 2823928994 + .long 1067413890 + .long 3475864463 + .long 1072678523 + .long 1239644147 + .long 1067353540 + .long 4117679416 + .long 1072679004 + .long 1583294687 + .long 1067294720 + .long 4000779385 + .long 1072679471 + .long 183503499 + .long 1067237400 + .long 386619275 + .long 1072679925 + .long 3539777017 + .long 1067181548 + .long 3389782899 + .long 1072680364 + .long 2569008951 + .long 1067127136 + .long 1618636412 + .long 1072680791 + .long 2685116163 + .long 1067074133 + .long 830429231 + .long 1072681205 + .long 2337656347 + .long 1067022510 + .long 2456855919 + .long 1072681606 + .long 1613838398 + .long 1066972238 + .long 3604457349 + .long 1072681995 + .long 2249252296 + .long 1066923288 + .long 1349991605 + .long 1072682373 + .long 3342318405 + .long 1066875632 + .long 1330774330 + .long 1072682739 + .long 1362423571 + .long 1066829243 + .long 565217133 + .long 1072683094 + .long 3041711418 + .long 1066784092 + .long 338138595 + .long 1072683438 + .long 3905919518 + .long 1066740153 + .long 1906207337 + .long 1072683771 + .long 1163773073 + .long 1066697400 + .long 2203386035 + .long 1072684094 + .long 2300262366 + .long 1066655805 + .long 2431278016 + .long 1072684407 + .long 3604033067 + .long 1066615343 + .long 3764572361 + .long 1072684710 + .long 3053431638 + .long 1066575989 + .long 3056489171 + .long 1072685004 + .long 316598267 + .long 1066537718 + .long 1429126614 + .long 1072685289 + .long 1045509085 + .long 1066500504 + .long 4273873027 + .long 1072685564 + .long 3989163593 + .long 1066464323 + .long 4071949264 + .long 1072685831 + .long 990720597 + .long 1066429153 + .long 1869655883 + .long 1072686090 + .long 1212065788 + .long 1066388145 + .long 2983815532 + .long 1072686340 + .long 363369668 + .long 1066321702 + .long 4117279489 + .long 1072686582 + .long 1763689544 + .long 1066257139 + .long 1949269238 + .long 1072686817 + .long 2478908466 + .long 1066194412 + .long 1725716385 + .long 1072687044 + .long 2888078907 + .long 1066133477 + .long 79796966 + .long 1072687264 + .long 2372613493 + .long 1066074291 + .long 2212202096 + .long 1072687476 + .long 3593940430 + .long 1066016811 + .long 416700746 + .long 1072687682 + .long 3884847023 + .long 1065960996 + .long 4145307718 + .long 1072687880 + .long 3819341470 + .long 1065906805 + .long 1353972341 + .long 1072688073 + .long 2896320203 + .long 1065854198 + .long 1452643118 + .long 1072688259 + .long 3811934768 + .long 1065803135 + .long 945918203 + .long 1072688439 + .long 3845878455 + .long 1065753578 + .long 613300468 + .long 1072688613 + .long 3426419565 + .long 1065705489 + .long 1214612974 + .long 1072688781 + .long 1809465164 + .long 1065658831 + .long 3490378522 + .long 1072688943 + .long 1346545806 + .long 1065613567 + .long 3867228532 + .long 1072689100 + .long 3161905125 + .long 1065569661 + .long 3048210366 + .long 1072689252 + .long 2828680980 + .long 1065527079 + .long 1718189174 + .long 1072689399 + .long 3224098489 + .long 1065485786 + .long 544213361 + .long 1072689541 + .long 1614052134 + .long 1065445749 + .long 175876290 + .long 1072689678 + .long 2506733613 + .long 1065406934 + .long 1245674115 + .long 1072689810 + .long 440778734 + .long 1065369310 + .long 74392377 + .long 1072689938 + .long 2854914290 + .long 1065312472 + .long 1556357759 + .long 1072690061 + .long 2885144677 + .long 1065241796 + .long 1979914676 + .long 1072690180 + .long 2850023781 + .long 1065173315 + .long 1912668770 + .long 1072690295 + .long 1599866748 + .long 1065106970 + .long 1906856997 + .long 1072690406 + .long 3477767080 + .long 1065042702 + .long 2499680735 + .long 1072690513 + .long 1069144869 + .long 1064980456 + .long 4213634550 + .long 1072690616 + .long 900163108 + .long 1064920175 + .long 3261863288 + .long 1072690716 + .long 1890778166 + .long 1064861805 + .long 138416642 + .long 1072690813 + .long 3871912933 + .long 1064805293 + .long 3913531953 + .long 1072690905 + .long 3217154659 + .long 1064750588 + .long 2169174156 + .long 1072690995 + .long 1358854176 + .long 1064697639 + .long 3949015241 + .long 1072691081 + .long 418893404 + .long 1064646396 + .long 1104030541 + .long 1072691165 + .long 3134058972 + .long 1064596810 + .long 2652534488 + .long 1072691245 + .long 4191186495 + .long 1064548835 + .long 420735059 + .long 1072691323 + .long 3036910975 + .long 1064502425 + .long 3402760357 + .long 1072691397 + .long 3802347199 + .long 1064457534 + .long 3401203862 + .long 1072691469 + .long 2342760329 + .long 1064414119 + .long 797207216 + .long 1072691539 + .long 3341957742 + .long 1064372136 + .long 255767335 + .long 1072691606 + .long 3056948772 + .long 1064331544 + .long 2136071610 + .long 1072691670 + .long 4254871605 + .long 1064279964 + .long 2491763111 + .long 1072691732 + .long 2411097017 + .long 1064204100 + .long 1661135790 + .long 1072691792 + .long 1761415536 + .long 1064130778 + .long 4267390501 + .long 1072691849 + .long 3209400075 + .long 1064059922 + .long 2039017291 + .long 1072691905 + .long 2939049396 + .long 1063991459 + .long 3874813376 + .long 1072691958 + .long 855986431 + .long 1063925317 + .long 1484387166 + .long 1072692010 + .long 439408485 + .long 1063861425 + .long 3748134511 + .long 1072692059 + .long 4870352 + .long 1063799715 + .long 2357733727 + .long 1072692107 + .long 1147781519 + .long 1063740120 + .long 1881145616 + .long 1072692153 + .long 7952899 + .long 1063682576 + .long 2582968793 + .long 1072692197 + .long 9969043 + .long 1063627019 + .long 424659812 + .long 1072692240 + .long 3129779709 + .long 1063573387 + .long 4244618108 + .long 1072692280 + .long 1162410711 + .long 1063521622 + .long 1398659061 + .long 1072692320 + .long 1350592543 + .long 1063471664 + .long 709894103 + .long 1072692358 + .long 475017707 + .long 1063423457 + .long 2404162538 + .long 1072692394 + .long 1895560955 + .long 1063376945 + .long 2405197521 + .long 1072692429 + .long 2529068952 + .long 1063332075 + .long 924755159 + .long 1072692463 + .long 1303374431 + .long 1063288795 + .long 2462804903 + .long 1072692495 + .long 2340583905 + .long 1063238043 + .long 2922813959 + .long 1072692526 + .long 765339184 + .long 1063157539 + .long 2496831451 + .long 1072692556 + .long 1905645544 + .long 1063079917 + .long 1370699398 + .long 1072692585 + .long 4160263103 + .long 1063005084 + .long 4019194350 + .long 1072692612 + .long 45342386 + .long 1062932951 + .long 2026328650 + .long 1072692639 + .long 1710715325 + .long 1062863427 + .long 4150288103 + .long 1072692664 + .long 2034959285 + .long 1062796428 + .long 1963856416 + .long 1072692689 + .long 148304367 + .long 1062731871 + .long 4214312639 + .long 1072692712 + .long 1189117402 + .long 1062669674 + .long 2463848165 + .long 1072692735 + .long 3178906437 + .long 1062609759 + .long 1154489547 + .long 1072692757 + .long 1080654215 + .long 1062552051 + .long 428377468 + .long 1072692778 + .long 3745546411 + .long 1062496474 + .long 422878663 + .long 1072692798 + .long 3618581269 + .long 1062442958 + .long 1270727063 + .long 1072692817 + .long 2282300494 + .long 1062391433 + .long 3100161527 + .long 1072692835 + .long 1644348923 + .long 1062341831 + .long 1740092897 + .long 1072692853 + .long 3718552903 + .long 1062294086 + .long 1605136939 + .long 1072692870 + .long 1819661463 + .long 1062248136 + .long 2810840233 + .long 1072692886 + .long 3652931310 + .long 1062200348 + .long 1173804762 + .long 1072692902 + .long 997716742 + .long 1062115258 + .long 1096711236 + .long 1072692917 + .long 611465250 + .long 1062033397 + .long 2683535545 + .long 1072692931 + .long 1268352122 + .long 1061954653 + .long 1739664066 + .long 1072692945 + .long 3774361106 + .long 1061878917 + .long 2656907874 + .long 1072692958 + .long 1990048797 + .long 1061806085 + .long 1233742957 + .long 1072692971 + .long 3925276832 + .long 1061736053 + .long 1855285919 + .long 1072692983 + .long 1301510391 + .long 1061668724 + .long 313528501 + .long 1072692995 + .long 3545772009 + .long 1061604000 + .long 987307714 + .long 1072693006 + .long 3072231739 + .long 1061541790 + .long 3957502177 + .long 1072693016 + .long 700415168 + .long 1061482004 + .long 712160398 + .long 1072693027 + .long 1015674294 + .long 1061424554 + .long 4211364825 + .long 1072693036 + .long 3441679162 + .long 1061369356 + .long 1642682013 + .long 1072693046 + .long 1909782298 + .long 1061316330 + .long 1665890809 + .long 1072693055 + .long 1715136991 + .long 1061265396 + .long 53329472 + .long 1072693064 + .long 2019904798 + .long 1061216478 + .long 1164815244 + .long 1072693072 + .long 4133034056 + .long 1061169502 + .long 767855920 + .long 1072693080 + .long 938778593 + .long 1061089885 + .long 3217597497 + .long 1072693087 + .long 45480017 + .long 1061003281 + .long 4277031209 + .long 1072693094 + .long 316452781 + .long 1060920148 + .long 4001969454 + .long 1072693101 + .long 2721989136 + .long 1060840357 + .long 2446150390 + .long 1072693108 + .long 1032835521 + .long 1060763785 + .long 3956275029 + .long 1072693114 + .long 2753065605 + .long 1060690310 + .long 4287173117 + .long 1072693120 + .long 2820848798 + .long 1060619817 + .long 3486770775 + .long 1072693126 + .long 271267104 + .long 1060552194 + .long 1601187023 + .long 1072693132 + .long 2026441674 + .long 1060487331 + .long 2969762984 + .long 1072693137 + .long 927900277 + .long 1060425125 + .long 3340220053 + .long 1072693142 + .long 1025459971 + .long 1060365474 + .long 2753620020 + .long 1072693147 + .long 4223106765 + .long 1060308280 + .long 1249454257 + .long 1072693152 + .long 1231370686 + .long 1060253451 + .long 3160665754 + .long 1072693156 + .long 1185758032 + .long 1060200894 + .long 4228800307 + .long 1072693160 + .long 1146814719 + .long 1060150522 + .long 193992533 + .long 1072693165 + .long 1416679249 + .long 1060094165 + .long 3974884891 + .long 1072693168 + .long 3168049461 + .long 1060001659 + .long 2719002994 + .long 1072693172 + .long 1524549056 + .long 1059913034 + .long 752475327 + .long 1072693176 + .long 1702683749 + .long 1059828137 + .long 2400209350 + .long 1072693179 + .long 2214749525 + .long 1059746822 + .long 3396000745 + .long 1072693182 + .long 2714889529 + .long 1059668948 + .long 3767477749 + .long 1072693185 + .long 3275007653 + .long 1059594379 + .long 3541174945 + .long 1072693188 + .long 3680105052 + .long 1059522984 + .long 2742573010 + .long 1072693191 + .long 2742671543 + .long 1059454637 + .long 1396137187 + .long 1072693194 + .long 1930731778 + .long 1059389216 + .long 3820321791 + .long 1072693196 + .long 424277854 + .long 1059326604 + .long 1447737015 + .long 1072693199 + .long 3074559673 + .long 1059266687 + .long 2889954809 + .long 1072693201 + .long 2611163775 + .long 1059209358 + .long 3872771463 + .long 1072693203 + .long 521028298 + .long 1059154512 + .long 121142023 + .long 1072693206 + .long 2174524969 + .long 1059102047 + .long 244113626 + .long 1072693208 + .long 2461272610 + .long 1059041975 + .long 4260019406 + .long 1072693209 + .long 1131027093 + .long 1058945999 + .long 3596507856 + .long 1072693211 + .long 2009173253 + .long 1058854226 + .long 2565407666 + .long 1072693213 + .long 1615100380 + .long 1058766484 + .long 1182885939 + .long 1072693215 + .long 3221825245 + .long 1058682606 + .long 3759409239 + .long 1072693216 + .long 3000825785 + .long 1058602433 + .long 1719899946 + .long 1072693218 + .long 1965540345 + .long 1058525811 + .long 3668531992 + .long 1072693219 + .long 763189321 + .long 1058452592 + .long 1029016297 + .long 1072693221 + .long 3084060488 + .long 1058382633 + .long 2404362103 + .long 1072693222 + .long 1917799745 + .long 1058315799 + .long 3512128068 + .long 1072693223 + .long 195668558 + .long 1058251958 + .long 69345537 + .long 1072693225 + .long 1393620869 + .long 1058190983 + .long 677441054 + .long 1072693226 + .long 160341434 + .long 1058132754 + .long 1052452475 + .long 1072693227 + .long 3034396383 + .long 1058077153 + .long 1204917335 + .long 1072693228 + .long 1940473490 + .long 1058024070 + .long 1144924039 + .long 1072693229 + .long 2791683145 + .long 1057933609 + .long 882129685 + .long 1072693230 + .long 1284377069 + .long 1057836875 + .long 425777245 + .long 1072693231 + .long 3138430378 + .long 1057744555 + .long 4079679407 + .long 1072693231 + .long 3254443766 + .long 1057656460 + .long 3262365346 + .long 1072693232 + .long 3585789915 + .long 1057572407 + .long 2276899854 + .long 1072693233 + .long 3340902607 + .long 1057492221 + .long 1131028956 + .long 1072693234 + .long 2109898645 + .long 1057415734 + .long 4127128746 + .long 1072693234 + .long 3029561298 + .long 1057342784 + .long 2682349923 + .long 1072693235 + .long 3100733692 + .long 1057273217 + .long 1098434770 + .long 1072693236 + .long 721863346 + .long 1057206885 + .long 3676827974 + .long 1072693236 + .long 3257818550 + .long 1057143644 + .long 1833786974 + .long 1072693237 + .long 283247917 + .long 1057083360 + .long 4165164796 + .long 1072693237 + .long 1283760382 + .long 1057025900 + .long 2086683008 + .long 1072693238 + .long 375021366 + .long 1056971140 + .long 4193680981 + .long 1072693238 + .long 2365640311 + .long 1056873310 + .long 1901387990 + .long 1072693239 + .long 1902930970 + .long 1056773877 + .long 3804671650 + .long 1072693239 + .long 903220739 + .long 1056679152 + .long 1318309237 + .long 1072693240 + .long 2063855685 + .long 1056588923 + .long 3036735356 + .long 1072693240 + .long 3397372173 + .long 1056502988 + .long 374312518 + .long 1072693241 + .long 1034711862 + .long 1056421154 + .long 1925078105 + .long 1072693241 + .long 670870767 + .long 1056343234 + .long 3397981554 + .long 1072693241 + .long 3291650888 + .long 1056269050 + .long 501794178 + .long 1072693242 + .long 3834664178 + .long 1056198433 + .long 1830018675 + .long 1072693242 + .long 2783069783 + .long 1056131220 + .long 3091092664 + .long 1072693242 + .long 625790851 + .long 1056067255 + .long 4288264900 + .long 1072693242 + .long 952568083 + .long 1056006388 + .long 1129667423 + .long 1072693243 + .long 707602500 + .long 1055948477 + .long 2208191219 + .long 1072693243 + .long 3920299786 + .long 1055870738 + .long 3231688653 + .long 1072693243 + .long 187138140 + .long 1055765933 + .long 4202848619 + .long 1072693243 + .long 4197216078 + .long 1055666254 + .long 829267664 + .long 1072693244 + .long 3910421342 + .long 1055571465 + .long 1703324662 + .long 1072693244 + .long 2296866372 + .long 1055481337 + .long 2532382302 + .long 1072693244 + .long 2605637707 + .long 1055395651 + .long 3318661313 + .long 1072693244 + .long 2292620388 + .long 1055314199 + .long 4064278012 + .long 1072693244 + .long 4195044292 + .long 1055236781 + .long 476281643 + .long 1072693245 + .long 2000853903 + .long 1055163208 + .long 1146528013 + .long 1072693245 + .long 140279194 + .long 1055093297 + .long 1781879969 + .long 1072693245 + .long 3672993662 + .long 1055026873 + .long 2384080674 + .long 1072693245 + .long 3938617616 + .long 1054963772 + .long 2954790214 + .long 1072693245 + .long 2918251757 + .long 1054903835 + .long 3495589354 + .long 1072693245 + .long 2286364164 + .long 1054826365 + .long 4007983120 + .long 1072693245 + .long 1376975757 + .long 1054718251 + .long 198436946 + .long 1072693246 + .long 3549789914 + .long 1054615596 + .long 658249143 + .long 1072693246 + .long 3134081244 + .long 1054518138 + .long 1093750278 + .long 1072693246 + .long 3217770792 + .long 1054425625 + .long 1506175371 + .long 1072693246 + .long 544573006 + .long 1054337818 + .long 1896699486 + .long 1072693246 + .long 563778522 + .long 1054254487 + .long 2266440493 + .long 1072693246 + .long 2499998483 + .long 1054175414 + .long 2616461708 + .long 1072693246 + .long 1684473986 + .long 1054100392 + .long 2947774421 + .long 1072693246 + .long 555072738 + .long 1054029222 + .long 3261340318 + .long 1072693246 + .long 2552316963 + .long 1053961714 + .long 3558073783 + .long 1072693246 + .long 1793581277 + .long 1053897689 + .long 3838844118 + .long 1072693246 + .long 2882522604 + .long 1053836974 + .long 4104477652 + .long 1072693246 + .long 4263347778 + .long 1053739932 + .long 60792463 + .long 1072693247 + .long 2125306315 + .long 1053630777 + .long 298469494 + .long 1072693247 + .long 1283904372 + .long 1053527305 + .long 523250625 + .long 1072693247 + .long 4039517916 + .long 1053429232 + .long 735809613 + .long 1072693247 + .long 1769278009 + .long 1053336290 + .long 936786486 + .long 1072693247 + .long 2403362003 + .long 1053248220 + .long 1126789145 + .long 1072693247 + .long 2174681212 + .long 1053164778 + .long 1306394904 + .long 1072693247 + .long 422102777 + .long 1053085731 + .long 1476151957 + .long 1072693247 + .long 1608658464 + .long 1053010856 + .long 1636580774 + .long 1072693247 + .long 255934547 + .long 1052939943 + .long 1788175440 + .long 1072693247 + .long 330542066 + .long 1052872790 + .long 1931404929 + .long 1072693247 + .long 359609029 + .long 1052809206 + .long 2066714326 + .long 1072693247 + .long 212821653 + .long 1052727714 + .long 2194525979 + .long 1072693247 + .long 1771024860 + .long 1052613747 + .long 2315240618 + .long 1072693247 + .long 3323366318 + .long 1052505878 + .long 2429238401 + .long 1072693247 + .long 3333784466 + .long 1052403794 + .long 2536879931 + .long 1072693247 + .long 1884899977 + .long 1052307197 + .long 2638507212 + .long 1072693247 + .long 1901768341 + .long 1052215803 + .long 2734444565 + .long 1072693247 + .long 1919585796 + .long 1052129343 + .long 2824999505 + .long 1072693247 + .long 1864802922 + .long 1052047561 + .long 2910463570 + .long 1072693247 + .long 369621280 + .long 1051970214 + .long 2991113117 + .long 1072693247 + .long 794742200 + .long 1051897070 + .long 3067210077 + .long 1072693247 + .long 185746157 + .long 1051827910 + .long 3139002674 + .long 1072693247 + .long 4108134519 + .long 1051762524 + .long 3206726114 + .long 1072693247 + .long 1569140952 + .long 1051679705 + .long 3270603235 + .long 1072693247 + .long 3808394293 + .long 1051562865 + .long 3330845135 + .long 1072693247 + .long 3847034202 + .long 1051452445 + .long 3387651756 + .long 1072693247 + .long 3767465203 + .long 1051348105 + .long 3441212456 + .long 1072693247 + .long 2207887660 + .long 1051249523 + .long 3491706543 + .long 1072693247 + .long 3687336940 + .long 1051156392 + .long 3539303784 + .long 1072693247 + .long 2322652348 + .long 1051068423 + .long 3584164895 + .long 1072693247 + .long 60084372 + .long 1050985340 + .long 3626442002 + .long 1072693247 + .long 3580394494 + .long 1050906880 + .long 3666279081 + .long 1072693247 + .long 4166097879 + .long 1050832797 + .long 3703812375 + .long 1072693247 + .long 654319384 + .long 1050762856 + .long 3739170797 + .long 1072693247 + .long 1044918721 + .long 1050696832 + .long 3772476305 + .long 1072693247 + .long 1221590325 + .long 1050595877 + .long 3803844261 + .long 1072693247 + .long 1858992497 + .long 1050478253 + .long 3833383776 + .long 1072693247 + .long 2222963862 + .long 1050367260 + .long 3861198036 + .long 1072693247 + .long 4044534932 + .long 1050262537 + .long 3887384606 + .long 1072693247 + .long 4037682077 + .long 1050163743 + .long 3912035731 + .long 1072693247 + .long 2751298525 + .long 1050070554 + .long 3935238607 + .long 1072693247 + .long 726747225 + .long 1049982663 + .long 3957075654 + .long 1072693247 + .long 3427405224 + .long 1049899778 + .long 3977624762 + .long 1072693247 + .long 572377531 + .long 1049821626 + .long 3996959532 + .long 1072693247 + .long 1471006056 + .long 1049747944 + .long 4015149506 + .long 1072693247 + .long 1796687607 + .long 1049678486 + .long 4032260375 + .long 1072693247 + .long 4103915186 + .long 1049601460 + .long 4048354194 + .long 1072693247 + .long 817191958 + .long 1049478062 + .long 4063489565 + .long 1072693247 + .long 1436794216 + .long 1049361781 + .long 4077721832 + .long 1072693247 + .long 2657182346 + .long 1049252221 + .long 4091103247 + .long 1072693247 + .long 2406257951 + .long 1049149007 + .long 4103683142 + .long 1072693247 + .long 3738473273 + .long 1049051783 + .long 4115508082 + .long 1072693247 + .long 1777519924 + .long 1048960214 + .long 4126622017 + .long 1072693247 + .long 942680177 + .long 1048873981 + .long 4137066424 + .long 1072693247 + .long 2319192650 + .long 1048792783 + .long 4146880438 + .long 1072693247 + .long 4112632783 + .long 1048716336 + .long 4156100982 + .long 1072693247 + .long 2293150261 + .long 1048644372 + .long 4164762887 + .long 1072693247 + .long 10642342 + .long 1048576636 + .long 4172899006 + .long 1072693247 + .long 5176375 + .long 1048449774 + .long 4180540322 + .long 1072693247 + .long 2922557803 + .long 1048329796 + .long 4187716050 + .long 1072693247 + .long 2705392296 + .long 1048216910 + .long 4194453736 + .long 1072693247 + .long 359265373 + .long 1048110710 + .long 4200779348 + .long 1072693247 + .long 2889113445 + .long 1048010811 + .long 4206717364 + .long 1072693247 + .long 1020973057 + .long 1047916853 + .long 4212290853 + .long 1072693247 + .long 3016231241 + .long 1047828492 + .long 4217521554 + .long 1072693247 + .long 11971917 + .long 1047745407 + .long 4222429951 + .long 1072693247 + .long 314571880 + .long 1047667291 + .long 4227035341 + .long 1072693247 + .long 3786258409 + .long 1047593856 + .long 4231355901 + .long 1072693247 + .long 131461034 + .long 1047522241 + .long 4235408754 + .long 1072693247 + .long 2699979079 + .long 1047392498 + .long 4239210022 + .long 1072693247 + .long 411815652 + .long 1047270578 + .long 4242774887 + .long 1072693247 + .long 1157099645 + .long 1047156022 + .long 4246117644 + .long 1072693247 + .long 3456465376 + .long 1047048399 + .long 4249251749 + .long 1072693247 + .long 3319603447 + .long 1046947303 + .long 4252189866 + .long 1072693247 + .long 1417286464 + .long 1046852350 + .long 4254943915 + .long 1072693247 + .long 1961438867 + .long 1046763177 + .long 4257525114 + .long 1072693247 + .long 3278475384 + .long 1046679443 + .long 4259944014 + .long 1072693247 + .long 1536658680 + .long 1046600827 + .long 4262210544 + .long 1072693247 + .long 3319082773 + .long 1046527024 + .long 4264334043 + .long 1072693247 + .long 3864661119 + .long 1046436651 + .long 4266323294 + .long 1072693247 + .long 2380952407 + .long 1046306618 + .long 4268186557 + .long 1072693247 + .long 1526944091 + .long 1046184593 + .long 4269931598 + .long 1072693247 + .long 2121831560 + .long 1046070097 + .long 4271565719 + .long 1072693247 + .long 3741717358 + .long 1045962679 + .long 4273095783 + .long 1072693247 + .long 2372148486 + .long 1045861915 + .long 4274528242 + .long 1072693247 + .long 1301376174 + .long 1045767404 + .long 4275869159 + .long 1072693247 + .long 876419281 + .long 1045678769 + .long 4277124229 + .long 1072693247 + .long 1464367617 + .long 1045595655 + .long 4278298806 + .long 1072693247 + .long 2422592759 + .long 1045517728 + .long 4279397918 + .long 1072693247 + .long 1357171196 + .long 1045444674 + .long 4280426288 + .long 1072693247 + .long 194145400 + .long 1045322121 + .long 4281388351 + .long 1072693247 + .long 380152291 + .long 1045193761 + .long 4282288274 + .long 1072693247 + .long 1583684278 + .long 1045073472 + .long 4283129967 + .long 1072693247 + .long 2165635186 + .long 1044960761 + .long 4283917101 + .long 1072693247 + .long 1516692231 + .long 1044855164 + .long 4284653124 + .long 1072693247 + .long 1455793348 + .long 1044756244 + .long 4285341270 + .long 1072693247 + .long 3729863063 + .long 1044663590 + .long 4285984575 + .long 1072693247 + .long 3593934135 + .long 1044576817 + .long 4286585887 + .long 1072693247 + .long 926645059 + .long 1044495562 + .long 4287147879 + .long 1072693247 + .long 3092460447 + .long 1044419482 + .long 4287673059 + .long 1072693247 + .long 410724451 + .long 1044314821 + .long 4288163777 + .long 1072693247 + .long 1647694055 + .long 1044181480 + .long 4288622239 + .long 1072693247 + .long 2719124395 + .long 1044056680 + .long 4289050512 + .long 1072693247 + .long 1706837060 + .long 1043939889 + .long 4289450537 + .long 1072693247 + .long 1950214717 + .long 1043830606 + .long 4289824130 + .long 1072693247 + .long 3939307600 + .long 1043728361 + .long 4290172996 + .long 1072693247 + .long 1960757033 + .long 1043632714 + .long 4290498730 + .long 1072693247 + .long 2651595104 + .long 1043543249 + .long 4290802831 + .long 1072693247 + .long 1012882634 + .long 1043459578 + .long 4291086700 + .long 1072693247 + .long 4055189249 + .long 1043381334 + .long 4291351650 + .long 1072693247 + .long 2246068185 + .long 1043283233 + .long 4291598913 + .long 1072693247 + .long 2274647687 + .long 1043146443 + .long 4291829641 + .long 1072693247 + .long 2890637209 + .long 1043018575 + .long 4292044913 + .long 1072693247 + .long 4153511196 + .long 1042899062 + .long 4292245741 + .long 1072693247 + .long 1929129059 + .long 1042787373 + .long 4292433070 + .long 1072693247 + .long 357577118 + .long 1042683008 + .long 4292607786 + .long 1072693247 + .long 3367143719 + .long 1042585498 + .long 4292770720 + .long 1072693247 + .long 2385315144 + .long 1042494406 + .long 4292922646 + .long 1072693247 + .long 3169025495 + .long 1042409319 + .long 4293064292 + .long 1072693247 + .long 1533871520 + .long 1042329852 + .long 4293196336 + .long 1072693247 + .long 599006589 + .long 1042226741 + .long 4293319415 + .long 1072693247 + .long 1711861758 + .long 1042088158 + .long 4293434124 + .long 1072693247 + .long 3081973787 + .long 1041958776 + .long 4293541018 + .long 1072693247 + .long 1321268943 + .long 1041838000 + .long 4293640617 + .long 1072693247 + .long 3969874170 + .long 1041725270 + .long 4293733409 + .long 1072693247 + .long 2452445702 + .long 1041620065 + .long 4293819848 + .long 1072693247 + .long 1452932973 + .long 1041521894 + .long 4293900359 + .long 1072693247 + .long 1595251056 + .long 1041430298 + .long 4293975339 + .long 1072693247 + .long 4117849423 + .long 1041344847 + .long 4294045161 + .long 1072693247 + .long 3152677356 + .long 1041265140 + .long 4294110170 + .long 1072693247 + .long 4175288180 + .long 1041145631 + .long 4294170691 + .long 1072693247 + .long 597820103 + .long 1041006978 + .long 4294227027 + .long 1072693247 + .long 3535028301 + .long 1040877691 + .long 4294279462 + .long 1072693247 + .long 918940523 + .long 1040757155 + .long 4294328259 + .long 1072693247 + .long 857999498 + .long 1040644790 + .long 4294373665 + .long 1072693247 + .long 3808560570 + .long 1040540055 + .long 4294415910 + .long 1072693247 + .long 1160780690 + .long 1040442446 + .long 4294455211 + .long 1072693247 + .long 201215039 + .long 1040351488 + .long 4294491767 + .long 1072693247 + .long 2402111668 + .long 1040266738 + .long 4294525766 + .long 1072693247 + .long 3723319669 + .long 1040187783 + .long 4294557384 + .long 1072693247 + .long 3725520897 + .long 1040041081 + .long 4294586783 + .long 1072693247 + .long 3671313057 + .long 1039904079 + .long 4294614115 + .long 1072693247 + .long 1053981368 + .long 1039776493 + .long 4294639524 + .long 1072693247 + .long 3460466107 + .long 1039657689 + .long 4294663141 + .long 1072693247 + .long 3035482254 + .long 1039547078 + .long 4294685090 + .long 1072693247 + .long 3802544396 + .long 1039444107 + .long 4294705486 + .long 1072693247 + .long 2441474464 + .long 1039348261 + .long 4294724438 + .long 1072693247 + .long 4084805700 + .long 1039259057 + .long 4294742044 + .long 1072693247 + .long 79094155 + .long 1039176047 + .long 4294758399 + .long 1072693247 + .long 31353126 + .long 1039058801 + .long 4294773590 + .long 1072693247 + .long 4063319008 + .long 1038915083 + .long 4294787697 + .long 1072693247 + .long 264658679 + .long 1038781394 + .long 4294800797 + .long 1072693247 + .long 1173126429 + .long 1038657047 + .long 4294812960 + .long 1072693247 + .long 242573921 + .long 1038541405 + .long 4294824252 + .long 1072693247 + .long 2098620107 + .long 1038433871 + .long 4294834733 + .long 1072693247 + .long 2055068430 + .long 1038333890 + .long 4294844461 + .long 1072693247 + .long 741519124 + .long 1038240943 + .long 4294853489 + .long 1072693247 + .long 2256555279 + .long 1038154545 + .long 4294861866 + .long 1072693247 + .long 196354007 + .long 1038058252 + .long 4294869638 + .long 1072693247 + .long 445761606 + .long 1037909007 + .long 4294876848 + .long 1072693247 + .long 3476364679 + .long 1037770330 + .long 4294883536 + .long 1072693247 + .long 3529100902 + .long 1037641490 + .long 4294889738 + .long 1072693247 + .long 1621116022 + .long 1037521804 + .long 4294895490 + .long 1072693247 + .long 78936185 + .long 1037410635 + .long 4294900823 + .long 1072693247 + .long 2269474636 + .long 1037307389 + .long 4294905767 + .long 1072693247 + .long 292731349 + .long 1037211515 + .long 4294910351 + .long 1072693247 + .long 2122912913 + .long 1037122496 + .long 4294914599 + .long 1072693247 + .long 3023046673 + .long 1037038043 + .long 4294918536 + .long 1072693247 + .long 254831576 + .long 1036884616 + .long 4294922185 + .long 1072693247 + .long 571168224 + .long 1036742213 + .long 4294925565 + .long 1072693247 + .long 871548122 + .long 1036610059 + .long 4294928697 + .long 1072693247 + .long 3924370604 + .long 1036487431 + .long 4294931598 + .long 1072693247 + .long 2976320978 + .long 1036373658 + .long 4294934285 + .long 1072693247 + .long 1728080816 + .long 1036268113 + .long 4294936773 + .long 1072693247 + .long 892927807 + .long 1036170213 + .long 4294939078 + .long 1072693247 + .long 2817804388 + .long 1036079415 + .long 4294941211 + .long 1072693247 + .long 4045759389 + .long 1035995215 + .long 4294943186 + .long 1072693247 + .long 3073449671 + .long 1035841200 + .long 4294945014 + .long 1072693247 + .long 3519286355 + .long 1035696439 + .long 4294946706 + .long 1072693247 + .long 794405638 + .long 1035562248 + .long 4294948272 + .long 1072693247 + .long 2678131373 + .long 1035437869 + .long 4294949720 + .long 1072693247 + .long 3816540112 + .long 1035322600 + .long 4294951061 + .long 1072693247 + .long 234134080 + .long 1035215788 + .long 4294952301 + .long 1072693247 + .long 587911812 + .long 1035116823 + .long 4294953448 + .long 1072693247 + .long 4031748504 + .long 1035025140 + .long 4294954509 + .long 1072693247 + .long 925164896 + .long 1034935920 + .long 4294955489 + .long 1072693247 + .long 3358488129 + .long 1034778608 + .long 4294956396 + .long 1072693247 + .long 638703581 + .long 1034632928 + .long 4294957235 + .long 1072693247 + .long 807654845 + .long 1034498035 + .long 4294958010 + .long 1072693247 + .long 2657744191 + .long 1034373146 + .long 4294958726 + .long 1072693247 + .long 3663858009 + .long 1034257534 + .long 4294959389 + .long 1072693247 + .long 533492925 + .long 1034150524 + .long 4294960000 + .long 1072693247 + .long 3770229724 + .long 1034051486 + .long 4294960566 + .long 1072693247 + .long 1751462400 + .long 1033959840 + .long 4294961088 + .long 1072693247 + .long 1904247472 + .long 1033854151 + .long 4294961570 + .long 1072693247 + .long 1030368421 + .long 1033697253 + .long 4294962016 + .long 1072693247 + .long 4079129458 + .long 1033552117 + .long 4294962427 + .long 1072693247 + .long 1682458602 + .long 1033417880 + .long 4294962807 + .long 1072693247 + .long 3167377884 + .long 1033293737 + .long 4294963158 + .long 1072693247 + .long 491770573 + .long 1033178945 + .long 4294963482 + .long 1072693247 + .long 2200416094 + .long 1033072811 + .long 4294963781 + .long 1072693247 + .long 4169952110 + .long 1032974695 + .long 4294964057 + .long 1072693247 + .long 140330391 + .long 1032884004 + .long 4294964311 + .long 1072693247 + .long 3783382554 + .long 1032753008 + .long 4294964546 + .long 1072693247 + .long 551761884 + .long 1032598092 + .long 4294964763 + .long 1072693247 + .long 359970126 + .long 1032454950 + .long 4294964963 + .long 1072693247 + .long 1021270101 + .long 1032322704 + .long 4294965147 + .long 1072693247 + .long 1490695248 + .long 1032200540 + .long 4294965317 + .long 1072693247 + .long 3568738246 + .long 1032087703 + .long 4294965474 + .long 1072693247 + .long 2104695675 + .long 1031983495 + .long 4294965619 + .long 1072693247 + .long 2259752215 + .long 1031887267 + .long 4294965752 + .long 1072693247 + .long 2928907214 + .long 1031798055 + .long 4294965875 + .long 1072693247 + .long 825285899 + .long 1031634009 + .long 4294965988 + .long 1072693247 + .long 130522063 + .long 1031482582 + .long 4294966092 + .long 1072693247 + .long 3544208977 + .long 1031342820 + .long 4294966189 + .long 1072693247 + .long 3709295074 + .long 1031213842 + .long 4294966277 + .long 1072693247 + .long 4124611741 + .long 1031094830 + .long 4294966359 + .long 1072693247 + .long 2968308055 + .long 1030985028 + .long 4294966434 + .long 1072693247 + .long 4148065245 + .long 1030883735 + .long 4294966503 + .long 1072693247 + .long 3937194615 + .long 1030790304 + .long 4294966567 + .long 1072693247 + .long 693670124 + .long 1030658064 + .long 4294966626 + .long 1072693247 + .long 3047836189 + .long 1030499141 + .long 4294966680 + .long 1072693247 + .long 1761244566 + .long 1030352608 + .long 4294966730 + .long 1072693247 + .long 966529192 + .long 1030217515 + .long 4294966776 + .long 1072693247 + .long 2050080133 + .long 1030092984 + .long 4294966818 + .long 1072693247 + .long 2531893977 + .long 1029978204 + .long 4294966857 + .long 1072693247 + .long 871320764 + .long 1029872425 + .long 4294966892 + .long 1072693247 + .long 2788659082 + .long 1029774952 + .long 4294966925 + .long 1072693247 + .long 2156308587 + .long 1029668659 + .long 4294966955 + .long 1072693247 + .long 3654157322 + .long 1029503191 + .long 4294966983 + .long 1072693247 + .long 622519429 + .long 1029350775 + .long 4294967009 + .long 1072693247 + .long 1939798879 + .long 1029210397 + .long 4294967032 + .long 1072693247 + .long 3844698302 + .long 1029081123 + .long 4294967054 + .long 1072693247 + .long 3868101452 + .long 1028962090 + .long 4294967074 + .long 1072693247 + .long 3689445052 + .long 1028852500 + .long 4294967092 + .long 1072693247 + .long 788030992 + .long 1028751617 + .long 4294967109 + .long 1072693247 + .long 3128526661 + .long 1028658759 + .long 4294967124 + .long 1072693247 + .long 393221749 + .long 1028493545 + .long 4294967138 + .long 1072693247 + .long 3899460746 + .long 1028336263 + .long 4294967151 + .long 1072693247 + .long 3409408659 + .long 1028191549 + .long 4294967163 + .long 1072693247 + .long 622192947 + .long 1028058415 + .long 4294967174 + .long 1072693247 + .long 2664726297 + .long 1027935948 + .long 4294967184 + .long 1072693247 + .long 1558673822 + .long 1027823309 + .long 4294967194 + .long 1072693247 + .long 2777131896 + .long 1027719721 + .long 4294967202 + .long 1072693247 + .long 3972527094 + .long 1027624469 + .long 4294967210 + .long 1072693247 + .long 2120900631 + .long 1027469308 + .long 4294967217 + .long 1072693247 + .long 137556752 + .long 1027308292 + .long 4294967224 + .long 1072693247 + .long 569601398 + .long 1027160288 + .long 4294967230 + .long 1072693247 + .long 280212019 + .long 1027024262 + .long 4294967235 + .long 1072693247 + .long 4236421385 + .long 1026899259 + .long 4294967240 + .long 1072693247 + .long 3132998397 + .long 1026784402 + .long 4294967245 + .long 1072693247 + .long 269619050 + .long 1026678880 + .long 4294967249 + .long 1072693247 + .long 1633775828 + .long 1026581945 + .long 4294967253 + .long 1072693247 + .long 2528343355 + .long 1026429917 + .long 4294967257 + .long 1072693247 + .long 843477906 + .long 1026266381 + .long 4294967260 + .long 1072693247 + .long 640833957 + .long 1026116210 + .long 4294967263 + .long 1072693247 + .long 1040411868 + .long 1025978329 + .long 4294967266 + .long 1072693247 + .long 1466509739 + .long 1025851748 + .long 4294967268 + .long 1072693247 + .long 3307339414 + .long 1025735555 + .long 4294967271 + .long 1072693247 + .long 857222806 + .long 1025628912 + .long 4294967273 + .long 1072693247 + .long 33935978 + .long 1025531045 + .long 4294967275 + .long 1072693247 + .long 592853498 + .long 1025375158 + .long 4294967277 + .long 1072693247 + .long 3801380895 + .long 1025210375 + .long 4294967278 + .long 1072693247 + .long 3715147572 + .long 1025059210 + .long 4294967280 + .long 1072693247 + .long 4190633910 + .long 1024920554 + .long 4294967281 + .long 1072693247 + .long 3597701666 + .long 1024793388 + .long 4294967283 + .long 1072693247 + .long 3481239551 + .long 1024676774 + .long 4294967284 + .long 1072693247 + .long 2361296039 + .long 1024569850 + .long 4294967285 + .long 1072693247 + .long 265722145 + .long 1024471823 + .long 4294967286 + .long 1072693247 + .long 1895395227 + .long 1024305174 + .long 4294967287 + .long 1072693247 + .long 1800210858 + .long 1024140449 + .long 4294967287 + .long 1072693247 + .long 3069172694 + .long 1023989486 + .long 4294967288 + .long 1072693247 + .long 2893236102 + .long 1023851153 + .long 4294967289 + .long 1072693247 + .long 1719077557 + .long 1023724409 + .long 4294967289 + .long 1072693247 + .long 1914505601 + .long 1023608297 + .long 4294967290 + .long 1072693247 + .long 301987594 + .long 1023501939 + .long 4294967291 + .long 1072693247 + .long 282470485 + .long 1023398878 + .long 4294967291 + .long 1072693247 + .long 3168046348 + .long 1023220463 + .long 4294967291 + .long 1072693247 + .long 1009101993 + .long 1023057097 + .long 4294967292 + .long 1072693247 + .long 3997083445 + .long 1022907527 + .long 4294967292 + .long 1072693247 + .long 2336955916 + .long 1022770607 + .long 4294967293 + .long 1072693247 + .long 3868880033 + .long 1022645281 + .long 4294967293 + .long 1072693247 + .long 1476581786 + .long 1022530583 + .long 4294967293 + .long 1072693247 + .long 3208709775 + .long 1022425623 + .long 4294967293 + .long 1072693247 + .long 716057529 + .long 1022297576 + .long 4294967294 + .long 1072693247 + .long 28479576 + .long 1022121857 + .long 4294967294 + .long 1072693247 + .long 3319607164 + .long 1021961117 + .long 4294967294 + .long 1072693247 + .long 2804464626 + .long 1021814099 + .long 4294967294 + .long 1072693247 + .long 148574980 + .long 1021679648 + .long 4294967294 + .long 1072693247 + .long 69395739 + .long 1021556704 + .long 4294967294 + .long 1072693247 + .long 2564419134 + .long 1021444296 + .long 4294967295 + .long 1072693247 + .long 2125879894 + .long 1021341535 + .long 4294967295 + .long 1072693247 + .long 344595749 + .long 1021182185 + .long 4294967295 + .long 1072693247 + .long 872566418 + .long 1021010487 + .long 4294967295 + .long 1072693247 + .long 25762808 + .long 1020853582 + .long 4294967295 + .long 1072693247 + .long 3343322505 + .long 1020710212 + .long 4294967295 + .long 1072693247 + .long 68521175 + .long 1020579228 + .long 4294967295 + .long 1072693247 + .long 3210511172 + .long 1020459572 + .long 4294967295 + .long 1072693247 + .long 2432640097 + .long 1020350280 + .long 4294967295 + .long 1072693247 + .long 2650426869 + .long 1020236484 + .long 4294967295 + .long 1072693247 + .long 2803544287 + .long 1020054190 + .long 4294967295 + .long 1072693247 + .long 2667581847 + .long 1019887746 + .long 0 + .long 1072693248 + .long 995748204 + .long 1019735793 + .long 0 + .long 1072693248 + .long 438643701 + .long 1019597086 + .long 0 + .long 1072693248 + .long 809181847 + .long 1019470486 + .long 0 + .long 1072693248 + .long 10437582 + .long 1019354951 + .long 0 + .long 1072693248 + .long 2354988354 + .long 1019249526 + .long 0 + .long 1072693248 + .long 3627099743 + .long 1019090807 + .long 0 + .long 1072693248 + .long 184652213 + .long 1018915313 + .long 0 + .long 1072693248 + .long 2690341715 + .long 1018755235 + .long 0 + .long 1072693248 + .long 1010878695 + .long 1018609239 + .long 0 + .long 1072693248 + .long 3130597339 + .long 1018476101 + .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 1075312640 + .long 0 + .long 1075312640 + .long 0 + .long 1075312640 + .long 0 + .long 1075312640 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 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 1119879168 + .long 0 + .long 1119879168 + .long 0 + .long 1119879168 + .long 0 + .long 1119879168 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 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 804257792 + .long 0 + .long 804257792 + .long 0 + .long 804257792 + .long 0 + .long 804257792 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 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 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 2958810789 + .long 3215376749 + .long 2958810789 + .long 3215376749 + .long 2958810789 + .long 3215376749 + .long 2958810789 + .long 3215376749 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .long 899900337 + .long 1069617426 + .long 899900337 + .long 1069617426 + .long 899900337 + .long 1069617426 + .long 899900337 + .long 1069617426 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .long 477227863 + .long 1070363082 + .long 477227863 + .long 1070363082 + .long 477227863 + .long 1070363082 + .long 477227863 + .long 1070363082 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .long 736288168 + .long 3218708892 + .long 736288168 + .long 3218708892 + .long 736288168 + .long 3218708892 + .long 736288168 + .long 3218708892 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .long 6991 + .long 3217380696 + .long 6991 + .long 3217380696 + .long 6991 + .long 3217380696 + .long 6991 + .long 3217380696 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .long 736293154 + .long 1069128094 + .long 736293154 + .long 1069128094 + .long 736293154 + .long 1069128094 + .long 736293154 + .long 1069128094 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .long 1431652342 + .long 3218429269 + .long 1431652342 + .long 3218429269 + .long 1431652342 + .long 3218429269 + .long 1431652342 + .long 3218429269 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .long 4294956237 + .long 1071644671 + .long 4294956237 + .long 1071644671 + .long 4294956237 + .long 1071644671 + .long 4294956237 + .long 1071644671 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .long 1431653132 + .long 1071994197 + .long 1431653132 + .long 1071994197 + .long 1431653132 + .long 1071994197 + .long 1431653132 + .long 1071994197 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .long 1431655765 + .long 3218429269 + .long 1431655765 + .long 3218429269 + .long 1431655765 + .long 3218429269 + .long 1431655765 + .long 3218429269 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 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 3220176896 + .long 0 + .long 3220176896 + .long 0 + .long 3220176896 + .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 + .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 0 + .long 4294967295 + .long 0 + .long 4294967295 + .long 0 + .long 4294967295 + .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 + .long 3149651110 + .long 1071994199 + .long 3149651110 + .long 1071994199 + .long 3149651110 + .long 1071994199 + .long 3149651110 + .long 1071994199 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .long 2147488809 + .long 3220176897 + .long 2147488809 + .long 3220176897 + .long 2147488809 + .long 3220176897 + .long 2147488809 + .long 3220176897 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .long 22118 + .long 1071644676 + .long 22118 + .long 1071644676 + .long 22118 + .long 1071644676 + .long 22118 + .long 1071644676 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .long 2290691940 + .long 3218429276 + .long 2290691940 + .long 3218429276 + .long 2290691940 + .long 3218429276 + .long 2290691940 + .long 3218429276 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .long 3748619702 + .long 1076933868 + .long 3748619702 + .long 1076933868 + .long 3748619702 + .long 1076933868 + .long 3748619702 + .long 1076933868 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .long 1332865885 + .long 1072827863 + .long 1332865885 + .long 1072827863 + .long 1332865885 + .long 1072827863 + .long 1332865885 + .long 1072827863 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .long 4175280127 + .long 3218608755 + .long 4175280127 + .long 3218608755 + .long 4175280127 + .long 3218608755 + .long 4175280127 + .long 3218608755 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .long 1654303500 + .long 1069343463 + .long 1654303500 + .long 1069343463 + .long 1654303500 + .long 1069343463 + .long 1654303500 + .long 1069343463 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .long 2550143969 + .long 3214639717 + .long 2550143969 + .long 3214639717 + .long 2550143969 + .long 3214639717 + .long 2550143969 + .long 3214639717 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .long 1811974982 + .long 1064657815 + .long 1811974982 + .long 1064657815 + .long 1811974982 + .long 1064657815 + .long 1811974982 + .long 1064657815 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .long 2000717462 + .long 3209426147 + .long 2000717462 + .long 3209426147 + .long 2000717462 + .long 3209426147 + .long 2000717462 + .long 3209426147 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .long 3946397046 + .long 1059020016 + .long 3946397046 + .long 1059020016 + .long 3946397046 + .long 1059020016 + .long 3946397046 + .long 1059020016 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .long 2418528937 + .long 3203304934 + .long 2418528937 + .long 3203304934 + .long 2418528937 + .long 3203304934 + .long 2418528937 + .long 3203304934 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .long 1917951611 + .long 1052370084 + .long 1917951611 + .long 1052370084 + .long 1917951611 + .long 1052370084 + .long 1917951611 + .long 1052370084 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .long 15579687 + .long 3196251740 + .long 15579687 + .long 3196251740 + .long 15579687 + .long 3196251740 + .long 15579687 + .long 3196251740 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .long 3028475240 + .long 1044872454 + .long 3028475240 + .long 1044872454 + .long 3028475240 + .long 1044872454 + .long 3028475240 + .long 1044872454 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .long 4080210287 + .long 3188206558 + .long 4080210287 + .long 3188206558 + .long 4080210287 + .long 3188206558 + .long 4080210287 + .long 3188206558 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .long 2207563104 + .long 1036259756 + .long 2207563104 + .long 1036259756 + .long 2207563104 + .long 1036259756 + .long 2207563104 + .long 1036259756 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .long 3335582481 + .long 3178889284 + .long 3335582481 + .long 3178889284 + .long 3335582481 + .long 3178889284 + .long 3335582481 + .long 3178889284 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .long 965701323 + .long 1026106865 + .long 965701323 + .long 1026106865 + .long 965701323 + .long 1026106865 + .long 965701323 + .long 1026106865 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .long 125167645 + .long 3167813598 + .long 125167645 + .long 3167813598 + .long 125167645 + .long 3167813598 + .long 125167645 + .long 3167813598 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .long 374732026 + .long 1013747294 + .long 374732026 + .long 1013747294 + .long 374732026 + .long 1013747294 + .long 374732026 + .long 1013747294 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .long 385891618 + .long 3153485771 + .long 385891618 + .long 3153485771 + .long 385891618 + .long 3153485771 + .long 385891618 + .long 3153485771 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .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_derf_data_internal,@object + .size __svml_derf_data_internal,14976 + .align 32 + +_imldErfHATab: + .long 1346542445 + .long 1072827863 + .long 1342177280 + .long 1072827863 + .long 1147899556 + .long 1041278683 + .long 0 + .long 1282408448 + .long 0 + .long 862978048 + .long 33554432 + .long 1101004800 + .long 0 + .long 0 + .long 0 + .long 2147483648 + .long 0 + .long 1072693248 + .long 0 + .long 3220176896 + .long 0 + .long 256 + .long 1222277045 + .long 929276 + .type _imldErfHATab,@object + .size _imldErfHATab,96 diff --git a/sysdeps/x86_64/fpu/multiarch/svml_d_erf8_core-avx2.S b/sysdeps/x86_64/fpu/multiarch/svml_d_erf8_core-avx2.S new file mode 100644 index 0000000000..3456142289 --- /dev/null +++ b/sysdeps/x86_64/fpu/multiarch/svml_d_erf8_core-avx2.S @@ -0,0 +1,20 @@ +/* AVX2 version of vectorized erf, 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 + . */ + +#define _ZGVeN8v_erf _ZGVeN8v_erf_avx2_wrapper +#include "../svml_d_erf8_core.S" diff --git a/sysdeps/x86_64/fpu/multiarch/svml_d_erf8_core.c b/sysdeps/x86_64/fpu/multiarch/svml_d_erf8_core.c new file mode 100644 index 0000000000..78e4a852c6 --- /dev/null +++ b/sysdeps/x86_64/fpu/multiarch/svml_d_erf8_core.c @@ -0,0 +1,27 @@ +/* Multiple versions of vectorized erf, 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 + . */ + +#define SYMBOL_NAME _ZGVeN8v_erf +#include "ifunc-mathvec-avx512-skx.h" + +libc_ifunc_redirected (REDIRECT_NAME, SYMBOL_NAME, IFUNC_SELECTOR ()); + +#ifdef SHARED +__hidden_ver1 (_ZGVeN8v_erf, __GI__ZGVeN8v_erf, __redirect__ZGVeN8v_erf) + __attribute__ ((visibility ("hidden"))); +#endif diff --git a/sysdeps/x86_64/fpu/multiarch/svml_d_erf8_core_avx512.S b/sysdeps/x86_64/fpu/multiarch/svml_d_erf8_core_avx512.S new file mode 100644 index 0000000000..9e4936b48a --- /dev/null +++ b/sysdeps/x86_64/fpu/multiarch/svml_d_erf8_core_avx512.S @@ -0,0 +1,4087 @@ +/* Function erf 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: + * + * Basic formula is + * erf(x) ~ erf(x0) + + * + exp(-x0*x0)*D*(1+c0+T*P1(T)+D^2*P3(T)+D^4*P5(T)+D^6*p7+D^8*p9) + * where D=x-x0, T=x0*D + * x0 is x rounded to a specified number of fractional bits (in this case 7), + * except that x0=0 for |x|<3.5/128.0 (using x0=0 for first 4 table entries) + * + * Data table packs both erf(x0)_high and a few bits of erf(x0)_low in one + * entry (in place of redundant exponent bits) + * + */ + +#include + + .text +ENTRY(_ZGVeN8v_erf_skx) +/* + * vector gather: erf(x0), + * second value is exp(-x0*x0) + */ + lea __svml_derf_data_internal(%rip), %rax + +/* + * erf(x) rounds to 1.0 for x>_MaxThreshold (5.9921875) + * can compute all results in the main path + */ + vmovups 12352+__svml_derf_data_internal(%rip), %zmm9 + vmovups 12416+__svml_derf_data_internal(%rip), %zmm11 + vmovups 12480+__svml_derf_data_internal(%rip), %zmm10 + vandpd 12288+__svml_derf_data_internal(%rip), %zmm0, %zmm7 + vpbroadcastq .FLT_20(%rip), %zmm14 + kxnorw %k0, %k0, %k3 + kxnorw %k0, %k0, %k2 + vminpd {sae}, %zmm9, %zmm7, %zmm12 + +/* save sign */ + vxorpd %zmm0, %zmm7, %zmm8 + vaddpd {rn-sae}, %zmm11, %zmm12, %zmm15 + vcmppd $26, {sae}, %zmm10, %zmm12, %k1 + +/* + * _LA_ polynomial computation + * Start polynomial evaluation + */ + vmovups 12672+__svml_derf_data_internal(%rip), %zmm10 + vpsllq $4, %zmm15, %zmm3 + vsubpd {rn-sae}, %zmm11, %zmm15, %zmm13 + vmovups 12800+__svml_derf_data_internal(%rip), %zmm11 + vmovups 13248+__svml_derf_data_internal(%rip), %zmm15 + vsubpd {rn-sae}, %zmm13, %zmm12, %zmm1 + vmulpd {rn-sae}, %zmm1, %zmm13, %zmm6 + +/* NaN fixup */ + vminpd {sae}, %zmm7, %zmm1, %zmm7 + vmovups 13056+__svml_derf_data_internal(%rip), %zmm13 + vpandq 13440+__svml_derf_data_internal(%rip), %zmm3, %zmm2 + vpmovqd %zmm2, %ymm0 + vmovups 12736+__svml_derf_data_internal(%rip), %zmm2 + vfmadd231pd {rn-sae}, %zmm6, %zmm10, %zmm2 + vfmadd213pd {rn-sae}, %zmm13, %zmm6, %zmm2 + vpxord %zmm4, %zmm4, %zmm4 + vgatherdpd 8(%rax,%ymm0), %zmm4{%k3} + vpxord %zmm5, %zmm5, %zmm5 + vgatherdpd (%rax,%ymm0), %zmm5{%k2} + vmovups 12864+__svml_derf_data_internal(%rip), %zmm0 + +/* Sign | _Erf_H */ + vxorpd %zmm8, %zmm5, %zmm5 + vfmadd231pd {rn-sae}, %zmm6, %zmm11, %zmm0 + vpandnq %zmm12, %zmm12, %zmm14{%k1} + vandpd %zmm14, %zmm1, %zmm9 + +/* Sign | Diff */ + vxorpd %zmm8, %zmm7, %zmm1 + vmovups 12928+__svml_derf_data_internal(%rip), %zmm12 + vmovups 12992+__svml_derf_data_internal(%rip), %zmm7 + vmovups 13120+__svml_derf_data_internal(%rip), %zmm14 + +/* D2 = Diff^2 */ + vmulpd {rn-sae}, %zmm9, %zmm9, %zmm3 + +/* T^2 */ + vmulpd {rn-sae}, %zmm6, %zmm6, %zmm9 + +/* exp_h(x0) * Diff */ + vmulpd {rn-sae}, %zmm1, %zmm4, %zmm4 + vfmadd231pd {rn-sae}, %zmm6, %zmm12, %zmm7 + vmovups 13184+__svml_derf_data_internal(%rip), %zmm12 + vfmadd213pd {rn-sae}, %zmm14, %zmm6, %zmm0 + vfmadd213pd {rn-sae}, %zmm15, %zmm3, %zmm7 + vfmadd213pd {rn-sae}, %zmm12, %zmm6, %zmm2 + vfmadd213pd {rn-sae}, %zmm7, %zmm6, %zmm0 + +/* P1 = T^2*P1 - T */ + vfmsub213pd {rn-sae}, %zmm6, %zmm9, %zmm2 + +/* P1 + P3*D2 */ + vfmadd213pd {rn-sae}, %zmm2, %zmm3, %zmm0 + +/* + * branch-free + * low part of result: exp_h(x0) * Diff*(1+P1) + */ + vfmadd213pd {rn-sae}, %zmm4, %zmm4, %zmm0 + +/* Final result */ + vaddpd {rn-sae}, %zmm5, %zmm0, %zmm6 + +/* Fix erf(-0) = -0 */ + vorpd %zmm8, %zmm6, %zmm0 + ret + +END(_ZGVeN8v_erf_skx) + + .align 16,0x90 + +__svml_derf_cout_rare_internal: + + cfi_startproc + + movq %rdi, %r8 + lea 64+_imldErfHATab(%rip), %rdx + movb 7(%r8), %cl + movb %cl, %al + andb $-128, %al + shrb $7, %al + movzbl %al, %edi + movzwl 6(%r8), %eax + andl $32752, %eax + shrl $4, %eax + movq (%rdx,%rdi,8), %rdx + cmpl $2047, %eax + je .LBL_2_13 + cmpl $2046, %eax + jne .LBL_2_4 + +.LBL_2_3: + movq %rdx, (%rsi) + jmp .LBL_2_11 + +.LBL_2_4: + movsd (%r8), %xmm6 + andb $127, %cl + movsd %xmm6, -8(%rsp) + movb %cl, -1(%rsp) + movsd -8(%rsp), %xmm0 + ucomisd 48+_imldErfHATab(%rip), %xmm0 + jp .LBL_2_5 + je .LBL_2_12 + +.LBL_2_5: + testl %eax, %eax + jne .LBL_2_7 + comisd 88+_imldErfHATab(%rip), %xmm0 + jb .LBL_2_8 + +.LBL_2_7: + movsd 24+_imldErfHATab(%rip), %xmm0 + mulsd %xmm0, %xmm6 + movsd 40+_imldErfHATab(%rip), %xmm1 + mulsd %xmm6, %xmm1 + movsd %xmm1, -24(%rsp) + movsd -24(%rsp), %xmm2 + movsd 8+_imldErfHATab(%rip), %xmm12 + subsd %xmm6, %xmm2 + movsd %xmm2, -16(%rsp) + movsd -24(%rsp), %xmm4 + movsd -16(%rsp), %xmm3 + movsd 8+_imldErfHATab(%rip), %xmm9 + subsd %xmm3, %xmm4 + movsd %xmm4, -24(%rsp) + movsd -24(%rsp), %xmm5 + subsd %xmm5, %xmm6 + movsd %xmm6, -16(%rsp) + movsd 16+_imldErfHATab(%rip), %xmm6 + movsd -24(%rsp), %xmm7 + movaps %xmm6, %xmm10 + movsd -16(%rsp), %xmm8 + mulsd %xmm7, %xmm12 + mulsd %xmm8, %xmm10 + mulsd %xmm6, %xmm7 + mulsd %xmm8, %xmm9 + addsd %xmm7, %xmm10 + addsd %xmm9, %xmm10 + movsd %xmm10, -24(%rsp) + movsd -24(%rsp), %xmm11 + addsd %xmm11, %xmm12 + mulsd 32+_imldErfHATab(%rip), %xmm12 + movsd %xmm12, (%rsi) + jmp .LBL_2_11 + +.LBL_2_8: + comisd 80+_imldErfHATab(%rip), %xmm0 + jb .LBL_2_10 + movsd 24+_imldErfHATab(%rip), %xmm0 + mulsd %xmm0, %xmm6 + movsd 40+_imldErfHATab(%rip), %xmm1 + mulsd %xmm6, %xmm1 + movsd %xmm1, -24(%rsp) + movsd -24(%rsp), %xmm2 + movsd 8+_imldErfHATab(%rip), %xmm0 + subsd %xmm6, %xmm2 + movsd %xmm2, -16(%rsp) + movsd -24(%rsp), %xmm4 + movsd -16(%rsp), %xmm3 + movsd 8+_imldErfHATab(%rip), %xmm9 + subsd %xmm3, %xmm4 + movsd %xmm4, -24(%rsp) + movsd -24(%rsp), %xmm5 + movsd 40+_imldErfHATab(%rip), %xmm11 + subsd %xmm5, %xmm6 + movsd %xmm6, -16(%rsp) + movsd 16+_imldErfHATab(%rip), %xmm6 + movsd -24(%rsp), %xmm7 + movaps %xmm6, %xmm10 + movsd -16(%rsp), %xmm8 + mulsd %xmm7, %xmm0 + mulsd %xmm8, %xmm10 + mulsd %xmm6, %xmm7 + mulsd %xmm8, %xmm9 + mulsd %xmm0, %xmm11 + addsd %xmm7, %xmm10 + addsd %xmm9, %xmm10 + movsd %xmm10, -24(%rsp) + movsd -24(%rsp), %xmm1 + movsd %xmm11, -24(%rsp) + movsd -24(%rsp), %xmm12 + subsd %xmm0, %xmm12 + movsd %xmm12, -16(%rsp) + movsd -24(%rsp), %xmm14 + movsd -16(%rsp), %xmm13 + subsd %xmm13, %xmm14 + movsd %xmm14, -24(%rsp) + movsd -24(%rsp), %xmm15 + subsd %xmm15, %xmm0 + movsd %xmm0, -16(%rsp) + movsd -24(%rsp), %xmm12 + movsd -16(%rsp), %xmm11 + mulsd 32+_imldErfHATab(%rip), %xmm12 + addsd %xmm11, %xmm1 + mulsd 32+_imldErfHATab(%rip), %xmm1 + movsd %xmm12, -24(%rsp) + movsd %xmm1, -16(%rsp) + movsd -24(%rsp), %xmm3 + movsd -16(%rsp), %xmm2 + addsd %xmm2, %xmm3 + movsd %xmm3, (%rsi) + jmp .LBL_2_11 + +.LBL_2_10: + movsd _imldErfHATab(%rip), %xmm0 + mulsd %xmm0, %xmm6 + movsd %xmm6, (%rsi) + +.LBL_2_11: + xorl %eax, %eax + ret + +.LBL_2_12: + lea 48+_imldErfHATab(%rip), %rax + movq (%rax,%rdi,8), %rdx + movq %rdx, (%rsi) + jmp .LBL_2_11 + +.LBL_2_13: + testl $1048575, 4(%r8) + jne .LBL_2_16 + cmpl $0, (%r8) + je .LBL_2_3 + +.LBL_2_16: + movsd (%r8), %xmm0 + addsd %xmm0, %xmm0 + movsd %xmm0, (%rsi) + jmp .LBL_2_11 + + cfi_endproc + + .type __svml_derf_cout_rare_internal,@function + .size __svml_derf_cout_rare_internal,.-__svml_derf_cout_rare_internal + + .section .rodata, "a" + .align 64 + +__svml_derf_data_internal: + .long 0 + .long 0 + .long 1346542445 + .long 1072827863 + .long 1038816064 + .long 1065487807 + .long 427149405 + .long 1072827791 + .long 138352544 + .long 1066536311 + .long 2077512391 + .long 1072827574 + .long 217416924 + .long 1067127678 + .long 2343319233 + .long 1072827213 + .long 1172120888 + .long 1067584598 + .long 1792097487 + .long 1072826708 + .long 1002214694 + .long 1067880029 + .long 1217900872 + .long 1072826059 + .long 4011022149 + .long 1068175279 + .long 1640824915 + .long 1072825266 + .long 2008889377 + .long 1068470314 + .long 11417604 + .long 1072824330 + .long 2162755160 + .long 1068632020 + .long 2094822099 + .long 1072823250 + .long 3900605843 + .long 1068779267 + .long 995044552 + .long 1072822028 + .long 2716351325 + .long 1068926353 + .long 2923726463 + .long 1072820663 + .long 3951725859 + .long 1069073259 + .long 1429174619 + .long 1072819157 + .long 344622906 + .long 1069219969 + .long 3164864724 + .long 1072817509 + .long 2121311411 + .long 1069366463 + .long 2118204713 + .long 1072815721 + .long 2663955280 + .long 1069512725 + .long 1083806794 + .long 1072813793 + .long 6252005 + .long 1069603129 + .long 3071858204 + .long 1072811725 + .long 2740730761 + .long 1069676001 + .long 2716363190 + .long 1072809519 + .long 368405780 + .long 1069748732 + .long 3453061548 + .long 1072807175 + .long 3270920537 + .long 1069821311 + .long 337483221 + .long 1072804695 + .long 589420486 + .long 1069893732 + .long 1517584741 + .long 1072802078 + .long 3187124383 + .long 1069965984 + .long 2461623467 + .long 1072799326 + .long 712400798 + .long 1070038061 + .long 3135584772 + .long 1072796440 + .long 266066941 + .long 1070109953 + .long 3705654820 + .long 1072793421 + .long 644014413 + .long 1070181652 + .long 240577552 + .long 1072790271 + .long 939402534 + .long 1070253150 + .long 1888734604 + .long 1072786989 + .long 554739272 + .long 1070324439 + .long 810473775 + .long 1072783578 + .long 3508744759 + .long 1070395510 + .long 2239870849 + .long 1072780038 + .long 1268186934 + .long 1070466357 + .long 3006777612 + .long 1072776371 + .long 2824159458 + .long 1070536970 + .long 123537259 + .long 1072772579 + .long 2319306557 + .long 1070601719 + .long 3666566110 + .long 1072768661 + .long 1770174792 + .long 1070636781 + .long 2413196824 + .long 1072764621 + .long 515431986 + .long 1070671715 + .long 2492870238 + .long 1072760459 + .long 3794982409 + .long 1070706516 + .long 1613725249 + .long 1072756177 + .long 4163230114 + .long 1070741182 + .long 1943804817 + .long 1072751776 + .long 2969010815 + .long 1070775709 + .long 1517338984 + .long 1072747258 + .long 1770633177 + .long 1070810093 + .long 2820813657 + .long 1072742624 + .long 2340732634 + .long 1070844330 + .long 4199089955 + .long 1072737876 + .long 2376033378 + .long 1070878417 + .long 4146348395 + .long 1072733016 + .long 4091885358 + .long 1070912350 + .long 1301992007 + .long 1072728046 + .long 1341835662 + .long 1070946127 + .long 3036413564 + .long 1072722966 + .long 1096806975 + .long 1070979743 + .long 3971924632 + .long 1072717779 + .long 1974469745 + .long 1071013195 + .long 3158326576 + .long 1072712487 + .long 2833250162 + .long 1071046480 + .long 4068552111 + .long 1072707091 + .long 2776266431 + .long 1071079595 + .long 1709348165 + .long 1072701594 + .long 1155126244 + .long 1071112537 + .long 4091643817 + .long 1072695996 + .long 1868551104 + .long 1071145302 + .long 27554567 + .long 1072687355 + .long 480989547 + .long 1071177888 + .long 4013208754 + .long 1072675771 + .long 1405858118 + .long 1071210291 + .long 2463469560 + .long 1072664000 + .long 728899385 + .long 1071242509 + .long 3673248531 + .long 1072652044 + .long 3391132564 + .long 1071274538 + .long 3245080601 + .long 1072639908 + .long 1716951687 + .long 1071306377 + .long 1259566555 + .long 1072627596 + .long 1186716264 + .long 1071338022 + .long 2265889960 + .long 1072615111 + .long 3259520440 + .long 1071369470 + .long 2387383118 + .long 1072602458 + .long 1080714748 + .long 1071400720 + .long 2196854969 + .long 1072589641 + .long 959081773 + .long 1071431768 + .long 2412015218 + .long 1072576664 + .long 894188496 + .long 1071462612 + .long 3885838402 + .long 1072563531 + .long 3463326280 + .long 1071493249 + .long 3301940522 + .long 1072550247 + .long 2938496088 + .long 1071523678 + .long 1754844591 + .long 1072536816 + .long 2468013648 + .long 1071553896 + .long 445338472 + .long 1072523242 + .long 1193192369 + .long 1071583901 + .long 670801289 + .long 1072509529 + .long 2839711645 + .long 1071613690 + .long 3815538169 + .long 1072495681 + .long 2833997776 + .long 1071643262 + .long 2751195712 + .long 1072481704 + .long 2742112668 + .long 1071658643 + .long 3301970792 + .long 1072467601 + .long 1253231335 + .long 1071673209 + .long 2760175517 + .long 1072453377 + .long 1545137618 + .long 1071687663 + .long 2761576465 + .long 1072439036 + .long 4064802502 + .long 1071702004 + .long 685940062 + .long 1072424583 + .long 816685333 + .long 1071716233 + .long 2532463670 + .long 1072410021 + .long 1132731221 + .long 1071730347 + .long 1435524088 + .long 1072395356 + .long 1607720272 + .long 1071744346 + .long 3425128494 + .long 1072380591 + .long 3279184281 + .long 1071758229 + .long 1647826366 + .long 1072365732 + .long 3037447390 + .long 1071771996 + .long 2127303697 + .long 1072350782 + .long 2215464304 + .long 1071785646 + .long 2280417801 + .long 1072335746 + .long 2293685631 + .long 1071799178 + .long 3793057312 + .long 1072320628 + .long 604852941 + .long 1071812592 + .long 4021258398 + .long 1072305433 + .long 3218593473 + .long 1071825886 + .long 277321282 + .long 1072290166 + .long 3466207732 + .long 1071839061 + .long 2705965375 + .long 1072274829 + .long 3415062139 + .long 1071852116 + .long 4210920931 + .long 1072259428 + .long 983176269 + .long 1071865051 + .long 1921243050 + .long 1072243968 + .long 2823547761 + .long 1071877864 + .long 1477876472 + .long 1072228452 + .long 2848673694 + .long 1071890556 + .long 4140476189 + .long 1072212884 + .long 3704680757 + .long 1071903126 + .long 2484292510 + .long 1072197270 + .long 3885653926 + .long 1071915574 + .long 1866994493 + .long 1072181613 + .long 2027772262 + .long 1071927900 + .long 3240926857 + .long 1072165917 + .long 1203383746 + .long 1071940103 + .long 3145379609 + .long 1072150187 + .long 330118419 + .long 1071952183 + .long 2288940035 + .long 1072134427 + .long 2759812044 + .long 1071964139 + .long 1247094627 + .long 1072118641 + .long 3392535852 + .long 1071975972 + .long 454954036 + .long 1072102833 + .long 1560373839 + .long 1071987682 + .long 200137461 + .long 1072087007 + .long 1026243227 + .long 1071999268 + .long 615820036 + .long 1072071167 + .long 1392726659 + .long 1072010730 + .long 1673946580 + .long 1072055317 + .long 2395753923 + .long 1072022068 + .long 3178614907 + .long 1072039461 + .long 3903265363 + .long 1072033282 + .long 464664423 + .long 1072023604 + .long 1618858333 + .long 1072044373 + .long 1571276620 + .long 1072007748 + .long 4260221847 + .long 1072055339 + .long 1466080688 + .long 1071991898 + .long 3492884098 + .long 1072066182 + .long 3514079945 + .long 1071976057 + .long 3993456657 + .long 1072076901 + .long 2292055455 + .long 1071960230 + .long 1973227103 + .long 1072087497 + .long 762892997 + .long 1071944420 + .long 2356414747 + .long 1072097969 + .long 1680293156 + .long 1071928630 + .long 1598646874 + .long 1072108318 + .long 3288637392 + .long 1071912864 + .long 570166456 + .long 1072118544 + .long 3612978933 + .long 1071897126 + .long 259132527 + .long 1072128647 + .long 454258010 + .long 1071881420 + .long 1769851247 + .long 1072138627 + .long 4269611837 + .long 1071865747 + .long 2026004535 + .long 1072148485 + .long 3808238226 + .long 1071850113 + .long 2358747003 + .long 1072158221 + .long 466930684 + .long 1071834521 + .long 4209868920 + .long 1072167835 + .long 3991103291 + .long 1071818972 + .long 539961339 + .long 1072177329 + .long 2406207743 + .long 1071803472 + .long 1596290573 + .long 1072186701 + .long 668823419 + .long 1071788023 + .long 551103050 + .long 1072195953 + .long 3483369050 + .long 1071772627 + .long 3564413664 + .long 1072205084 + .long 2413978135 + .long 1071757289 + .long 4012194871 + .long 1072214096 + .long 1651276306 + .long 1071742011 + .long 3959183150 + .long 1072222989 + .long 829681671 + .long 1071726796 + .long 1271925764 + .long 1072231764 + .long 3614704403 + .long 1071711646 + .long 2501611462 + .long 1072240420 + .long 520637331 + .long 1071696566 + .long 1407144504 + .long 1072248959 + .long 3268048090 + .long 1071681556 + .long 427874865 + .long 1072257381 + .long 1832052951 + .long 1071666621 + .long 2091542065 + .long 1072265686 + .long 3095161192 + .long 1071651762 + .long 422205205 + .long 1072273876 + .long 1561666736 + .long 1071629294 + .long 2412931770 + .long 1072281950 + .long 2443607338 + .long 1071599898 + .long 2253835330 + .long 1072289910 + .long 3767899416 + .long 1071570670 + .long 2804744118 + .long 1072297756 + .long 4205206053 + .long 1071541615 + .long 2708123311 + .long 1072305489 + .long 1868283784 + .long 1071512738 + .long 681859986 + .long 1072313110 + .long 2900434531 + .long 1071484042 + .long 4107010292 + .long 1072320618 + .long 4294514068 + .long 1071455532 + .long 3255804563 + .long 1072328016 + .long 2482100151 + .long 1071427213 + .long 1354224973 + .long 1072335304 + .long 1923011912 + .long 1071399088 + .long 1694909286 + .long 1072342482 + .long 2220339163 + .long 1071371161 + .long 3339989603 + .long 1072349551 + .long 2415682179 + .long 1071343436 + .long 1118900120 + .long 1072356513 + .long 989760182 + .long 1071315917 + .long 2806057099 + .long 1072363367 + .long 158317606 + .long 1071288607 + .long 3348870180 + .long 1072370115 + .long 1578420540 + .long 1071261509 + .long 2045432220 + .long 1072376758 + .long 2055072070 + .long 1071234627 + .long 2542346734 + .long 1072383296 + .long 2133042299 + .long 1071207964 + .long 4242628757 + .long 1072389730 + .long 1804103059 + .long 1071181523 + .long 2303549486 + .long 1072396062 + .long 509530065 + .long 1071155307 + .long 519393155 + .long 1072402292 + .long 1437865959 + .long 1071129318 + .long 2729388920 + .long 1072408420 + .long 2938068361 + .long 1071103559 + .long 4225655329 + .long 1072414448 + .long 2817839853 + .long 1071078033 + .long 341027652 + .long 1072420378 + .long 2642231032 + .long 1071052742 + .long 3626834524 + .long 1072426208 + .long 3442574974 + .long 1071027688 + .long 901148195 + .long 1072431942 + .long 1425680479 + .long 1071002874 + .long 491364740 + .long 1072437579 + .long 863146005 + .long 1070978301 + .long 2167390653 + .long 1072443120 + .long 1211113923 + .long 1070953971 + .long 1434586468 + .long 1072448567 + .long 1410130595 + .long 1070929886 + .long 2416664529 + .long 1072453920 + .long 4185235532 + .long 1070906047 + .long 673836130 + .long 1072459181 + .long 3166402837 + .long 1070882457 + .long 380718319 + .long 1072464350 + .long 73967522 + .long 1070859117 + .long 1439491741 + .long 1072469428 + .long 429421420 + .long 1070836027 + .long 3772950565 + .long 1072474416 + .long 676472817 + .long 1070813189 + .long 3027641485 + .long 1072479316 + .long 1072100387 + .long 1070790604 + .long 3456896295 + .long 1072484128 + .long 1397920641 + .long 1070768273 + .long 739118475 + .long 1072488854 + .long 966697529 + .long 1070746197 + .long 3450801209 + .long 1072493493 + .long 2923986376 + .long 1070724376 + .long 2999964233 + .long 1072498048 + .long 1370067789 + .long 1070702812 + .long 3689159840 + .long 1072502519 + .long 2841771284 + .long 1070681504 + .long 1238898896 + .long 1072506908 + .long 549802159 + .long 1070660454 + .long 4260777949 + .long 1072511214 + .long 155811627 + .long 1070639661 + .long 4191027417 + .long 1072515440 + .long 2599921926 + .long 1070619125 + .long 1058663746 + .long 1072519587 + .long 4108240803 + .long 1070598847 + .long 3483867367 + .long 1072523654 + .long 990911579 + .long 1070561560 + .long 2906586881 + .long 1072527644 + .long 114935845 + .long 1070522036 + .long 3649748481 + .long 1072531557 + .long 4208768690 + .long 1070483026 + .long 1442888585 + .long 1072535395 + .long 2526808836 + .long 1070444532 + .long 600523232 + .long 1072539158 + .long 743445360 + .long 1070406552 + .long 1135777805 + .long 1072542847 + .long 3789340407 + .long 1070369084 + .long 3053917615 + .long 1072546463 + .long 2982814329 + .long 1070332129 + .long 2055975837 + .long 1072550008 + .long 1816057167 + .long 1070295685 + .long 2422282765 + .long 1072553482 + .long 3086740885 + .long 1070259750 + .long 4126223656 + .long 1072556886 + .long 324691238 + .long 1070224324 + .long 2832930958 + .long 1072560222 + .long 3578376465 + .long 1070189403 + .long 2782911091 + .long 1072563490 + .long 776951344 + .long 1070154988 + .long 3905900216 + .long 1072566691 + .long 696731218 + .long 1070121075 + .long 1819654744 + .long 1072569827 + .long 2913260122 + .long 1070087662 + .long 713676646 + .long 1072572898 + .long 2113142428 + .long 1070054748 + .long 463167950 + .long 1072575905 + .long 995821495 + .long 1070022330 + .long 922887372 + .long 1072578849 + .long 1700521760 + .long 1069990405 + .long 1926072615 + .long 1072581731 + .long 1528145825 + .long 1069958971 + .long 3283395580 + .long 1072584552 + .long 1548049162 + .long 1069928025 + .long 486983136 + .long 1072587314 + .long 2319876962 + .long 1069897564 + .long 1889307149 + .long 1072590016 + .long 3910320901 + .long 1069867585 + .long 2932434228 + .long 1072592660 + .long 1614850098 + .long 1069838086 + .long 3326980969 + .long 1072595247 + .long 3154209172 + .long 1069809062 + .long 2756265128 + .long 1072597778 + .long 2921163421 + .long 1069780511 + .long 875456323 + .long 1072600254 + .long 3471794055 + .long 1069752429 + .long 1605726087 + .long 1072602675 + .long 2656954908 + .long 1069724813 + .long 248560569 + .long 1072605043 + .long 2228455793 + .long 1069697659 + .long 664875946 + .long 1072607358 + .long 3560224787 + .long 1069670963 + .long 2389394126 + .long 1072609621 + .long 3369342261 + .long 1069644722 + .long 629951466 + .long 1072611834 + .long 2321839820 + .long 1069618932 + .long 3446707524 + .long 1072613996 + .long 753451907 + .long 1069593589 + .long 1686744094 + .long 1072616110 + .long 2980148458 + .long 1069568688 + .long 3343203939 + .long 1072618175 + .long 267339392 + .long 1069540934 + .long 3489949996 + .long 1072620193 + .long 483064631 + .long 1069492880 + .long 1460894432 + .long 1072622165 + .long 649602217 + .long 1069445687 + .long 849487740 + .long 1072624091 + .long 2890701232 + .long 1069399346 + .long 918302122 + .long 1072625972 + .long 261234300 + .long 1069353850 + .long 893545254 + .long 1072627809 + .long 2545983092 + .long 1069309188 + .long 4259602150 + .long 1072629602 + .long 1928478288 + .long 1069265353 + .long 1578768264 + .long 1072631354 + .long 3083934340 + .long 1069222335 + .long 555650133 + .long 1072633064 + .long 1732151351 + .long 1069180126 + .long 267018061 + .long 1072634733 + .long 1844687288 + .long 1069138716 + .long 4046390903 + .long 1072636361 + .long 2786814309 + .long 1069098096 + .long 2303875791 + .long 1072637951 + .long 3638890659 + .long 1069058257 + .long 2590673673 + .long 1072639502 + .long 3222303380 + .long 1069019190 + .long 3829035115 + .long 1072641015 + .long 124941498 + .long 1068980886 + .long 607011814 + .long 1072642492 + .long 1316127179 + .long 1068943334 + .long 358134174 + .long 1072643932 + .long 696292715 + .long 1068906526 + .long 1886406929 + .long 1072645336 + .long 595841400 + .long 1068870452 + .long 3956099039 + .long 1072646705 + .long 3208742923 + .long 1068835102 + .long 996654455 + .long 1072648041 + .long 2025629493 + .long 1068800468 + .long 282461591 + .long 1072649343 + .long 3331159491 + .long 1068766539 + .long 457938895 + .long 1072650612 + .long 456233562 + .long 1068733307 + .long 127412743 + .long 1072651849 + .long 3864275015 + .long 1068700760 + .long 2150048793 + .long 1072653054 + .long 2517520227 + .long 1068668891 + .long 754934402 + .long 1072654229 + .long 2552204883 + .long 1068637689 + .long 3015919169 + .long 1072655373 + .long 1528723567 + .long 1068607145 + .long 3081834457 + .long 1072656488 + .long 1335976541 + .long 1068577249 + .long 3651371907 + .long 1072657574 + .long 3915328100 + .long 1068547991 + .long 3088241816 + .long 1072658632 + .long 2689078049 + .long 1068519363 + .long 4011185713 + .long 1072659662 + .long 3811402329 + .long 1068483765 + .long 409169671 + .long 1072660666 + .long 3249658772 + .long 1068428968 + .long 3411299989 + .long 1072661642 + .long 4058137866 + .long 1068375372 + .long 2632245636 + .long 1072662593 + .long 2585699919 + .long 1068322959 + .long 532120432 + .long 1072663519 + .long 4081392135 + .long 1068271709 + .long 3826707455 + .long 1072664419 + .long 1250224180 + .long 1068221605 + .long 2012796269 + .long 1072665296 + .long 52563989 + .long 1068172627 + .long 1728109198 + .long 1072666149 + .long 2552846462 + .long 1068124756 + .long 981699159 + .long 1072666979 + .long 2652176382 + .long 1068077975 + .long 2039066381 + .long 1072667786 + .long 3294767379 + .long 1068032265 + .long 2832451379 + .long 1072668571 + .long 3608617230 + .long 1067987608 + .long 1256042053 + .long 1072669335 + .long 3225068209 + .long 1067943986 + .long 3756159862 + .long 1072670077 + .long 2302425099 + .long 1067901381 + .long 3856686221 + .long 1072670799 + .long 1548607803 + .long 1067859775 + .long 3634172681 + .long 1072671501 + .long 2242848736 + .long 1067819150 + .long 833223107 + .long 1072672184 + .long 1961478441 + .long 1067779489 + .long 1751689540 + .long 1072672847 + .long 3187679808 + .long 1067740774 + .long 4061106433 + .long 1072673491 + .long 445484238 + .long 1067702989 + .long 1101970377 + .long 1072674118 + .long 1792596734 + .long 1067666115 + .long 3358897570 + .long 1072674726 + .long 3067683861 + .long 1067630136 + .long 4101214576 + .long 1072675317 + .long 791483465 + .long 1067595036 + .long 858131621 + .long 1072675892 + .long 772076534 + .long 1067560797 + .long 4009021290 + .long 1072676449 + .long 939498435 + .long 1067527403 + .long 2424031124 + .long 1072676991 + .long 4244278389 + .long 1067494837 + .long 2119146704 + .long 1072677517 + .long 1490379385 + .long 1067463085 + .long 486751354 + .long 1072678028 + .long 2823928994 + .long 1067413890 + .long 3475864463 + .long 1072678523 + .long 1239644147 + .long 1067353540 + .long 4117679416 + .long 1072679004 + .long 1583294687 + .long 1067294720 + .long 4000779385 + .long 1072679471 + .long 183503499 + .long 1067237400 + .long 386619275 + .long 1072679925 + .long 3539777017 + .long 1067181548 + .long 3389782899 + .long 1072680364 + .long 2569008951 + .long 1067127136 + .long 1618636412 + .long 1072680791 + .long 2685116163 + .long 1067074133 + .long 830429231 + .long 1072681205 + .long 2337656347 + .long 1067022510 + .long 2456855919 + .long 1072681606 + .long 1613838398 + .long 1066972238 + .long 3604457349 + .long 1072681995 + .long 2249252296 + .long 1066923288 + .long 1349991605 + .long 1072682373 + .long 3342318405 + .long 1066875632 + .long 1330774330 + .long 1072682739 + .long 1362423571 + .long 1066829243 + .long 565217133 + .long 1072683094 + .long 3041711418 + .long 1066784092 + .long 338138595 + .long 1072683438 + .long 3905919518 + .long 1066740153 + .long 1906207337 + .long 1072683771 + .long 1163773073 + .long 1066697400 + .long 2203386035 + .long 1072684094 + .long 2300262366 + .long 1066655805 + .long 2431278016 + .long 1072684407 + .long 3604033067 + .long 1066615343 + .long 3764572361 + .long 1072684710 + .long 3053431638 + .long 1066575989 + .long 3056489171 + .long 1072685004 + .long 316598267 + .long 1066537718 + .long 1429126614 + .long 1072685289 + .long 1045509085 + .long 1066500504 + .long 4273873027 + .long 1072685564 + .long 3989163593 + .long 1066464323 + .long 4071949264 + .long 1072685831 + .long 990720597 + .long 1066429153 + .long 1869655883 + .long 1072686090 + .long 1212065788 + .long 1066388145 + .long 2983815532 + .long 1072686340 + .long 363369668 + .long 1066321702 + .long 4117279489 + .long 1072686582 + .long 1763689544 + .long 1066257139 + .long 1949269238 + .long 1072686817 + .long 2478908466 + .long 1066194412 + .long 1725716385 + .long 1072687044 + .long 2888078907 + .long 1066133477 + .long 79796966 + .long 1072687264 + .long 2372613493 + .long 1066074291 + .long 2212202096 + .long 1072687476 + .long 3593940430 + .long 1066016811 + .long 416700746 + .long 1072687682 + .long 3884847023 + .long 1065960996 + .long 4145307718 + .long 1072687880 + .long 3819341470 + .long 1065906805 + .long 1353972341 + .long 1072688073 + .long 2896320203 + .long 1065854198 + .long 1452643118 + .long 1072688259 + .long 3811934768 + .long 1065803135 + .long 945918203 + .long 1072688439 + .long 3845878455 + .long 1065753578 + .long 613300468 + .long 1072688613 + .long 3426419565 + .long 1065705489 + .long 1214612974 + .long 1072688781 + .long 1809465164 + .long 1065658831 + .long 3490378522 + .long 1072688943 + .long 1346545806 + .long 1065613567 + .long 3867228532 + .long 1072689100 + .long 3161905125 + .long 1065569661 + .long 3048210366 + .long 1072689252 + .long 2828680980 + .long 1065527079 + .long 1718189174 + .long 1072689399 + .long 3224098489 + .long 1065485786 + .long 544213361 + .long 1072689541 + .long 1614052134 + .long 1065445749 + .long 175876290 + .long 1072689678 + .long 2506733613 + .long 1065406934 + .long 1245674115 + .long 1072689810 + .long 440778734 + .long 1065369310 + .long 74392377 + .long 1072689938 + .long 2854914290 + .long 1065312472 + .long 1556357759 + .long 1072690061 + .long 2885144677 + .long 1065241796 + .long 1979914676 + .long 1072690180 + .long 2850023781 + .long 1065173315 + .long 1912668770 + .long 1072690295 + .long 1599866748 + .long 1065106970 + .long 1906856997 + .long 1072690406 + .long 3477767080 + .long 1065042702 + .long 2499680735 + .long 1072690513 + .long 1069144869 + .long 1064980456 + .long 4213634550 + .long 1072690616 + .long 900163108 + .long 1064920175 + .long 3261863288 + .long 1072690716 + .long 1890778166 + .long 1064861805 + .long 138416642 + .long 1072690813 + .long 3871912933 + .long 1064805293 + .long 3913531953 + .long 1072690905 + .long 3217154659 + .long 1064750588 + .long 2169174156 + .long 1072690995 + .long 1358854176 + .long 1064697639 + .long 3949015241 + .long 1072691081 + .long 418893404 + .long 1064646396 + .long 1104030541 + .long 1072691165 + .long 3134058972 + .long 1064596810 + .long 2652534488 + .long 1072691245 + .long 4191186495 + .long 1064548835 + .long 420735059 + .long 1072691323 + .long 3036910975 + .long 1064502425 + .long 3402760357 + .long 1072691397 + .long 3802347199 + .long 1064457534 + .long 3401203862 + .long 1072691469 + .long 2342760329 + .long 1064414119 + .long 797207216 + .long 1072691539 + .long 3341957742 + .long 1064372136 + .long 255767335 + .long 1072691606 + .long 3056948772 + .long 1064331544 + .long 2136071610 + .long 1072691670 + .long 4254871605 + .long 1064279964 + .long 2491763111 + .long 1072691732 + .long 2411097017 + .long 1064204100 + .long 1661135790 + .long 1072691792 + .long 1761415536 + .long 1064130778 + .long 4267390501 + .long 1072691849 + .long 3209400075 + .long 1064059922 + .long 2039017291 + .long 1072691905 + .long 2939049396 + .long 1063991459 + .long 3874813376 + .long 1072691958 + .long 855986431 + .long 1063925317 + .long 1484387166 + .long 1072692010 + .long 439408485 + .long 1063861425 + .long 3748134511 + .long 1072692059 + .long 4870352 + .long 1063799715 + .long 2357733727 + .long 1072692107 + .long 1147781519 + .long 1063740120 + .long 1881145616 + .long 1072692153 + .long 7952899 + .long 1063682576 + .long 2582968793 + .long 1072692197 + .long 9969043 + .long 1063627019 + .long 424659812 + .long 1072692240 + .long 3129779709 + .long 1063573387 + .long 4244618108 + .long 1072692280 + .long 1162410711 + .long 1063521622 + .long 1398659061 + .long 1072692320 + .long 1350592543 + .long 1063471664 + .long 709894103 + .long 1072692358 + .long 475017707 + .long 1063423457 + .long 2404162538 + .long 1072692394 + .long 1895560955 + .long 1063376945 + .long 2405197521 + .long 1072692429 + .long 2529068952 + .long 1063332075 + .long 924755159 + .long 1072692463 + .long 1303374431 + .long 1063288795 + .long 2462804903 + .long 1072692495 + .long 2340583905 + .long 1063238043 + .long 2922813959 + .long 1072692526 + .long 765339184 + .long 1063157539 + .long 2496831451 + .long 1072692556 + .long 1905645544 + .long 1063079917 + .long 1370699398 + .long 1072692585 + .long 4160263103 + .long 1063005084 + .long 4019194350 + .long 1072692612 + .long 45342386 + .long 1062932951 + .long 2026328650 + .long 1072692639 + .long 1710715325 + .long 1062863427 + .long 4150288103 + .long 1072692664 + .long 2034959285 + .long 1062796428 + .long 1963856416 + .long 1072692689 + .long 148304367 + .long 1062731871 + .long 4214312639 + .long 1072692712 + .long 1189117402 + .long 1062669674 + .long 2463848165 + .long 1072692735 + .long 3178906437 + .long 1062609759 + .long 1154489547 + .long 1072692757 + .long 1080654215 + .long 1062552051 + .long 428377468 + .long 1072692778 + .long 3745546411 + .long 1062496474 + .long 422878663 + .long 1072692798 + .long 3618581269 + .long 1062442958 + .long 1270727063 + .long 1072692817 + .long 2282300494 + .long 1062391433 + .long 3100161527 + .long 1072692835 + .long 1644348923 + .long 1062341831 + .long 1740092897 + .long 1072692853 + .long 3718552903 + .long 1062294086 + .long 1605136939 + .long 1072692870 + .long 1819661463 + .long 1062248136 + .long 2810840233 + .long 1072692886 + .long 3652931310 + .long 1062200348 + .long 1173804762 + .long 1072692902 + .long 997716742 + .long 1062115258 + .long 1096711236 + .long 1072692917 + .long 611465250 + .long 1062033397 + .long 2683535545 + .long 1072692931 + .long 1268352122 + .long 1061954653 + .long 1739664066 + .long 1072692945 + .long 3774361106 + .long 1061878917 + .long 2656907874 + .long 1072692958 + .long 1990048797 + .long 1061806085 + .long 1233742957 + .long 1072692971 + .long 3925276832 + .long 1061736053 + .long 1855285919 + .long 1072692983 + .long 1301510391 + .long 1061668724 + .long 313528501 + .long 1072692995 + .long 3545772009 + .long 1061604000 + .long 987307714 + .long 1072693006 + .long 3072231739 + .long 1061541790 + .long 3957502177 + .long 1072693016 + .long 700415168 + .long 1061482004 + .long 712160398 + .long 1072693027 + .long 1015674294 + .long 1061424554 + .long 4211364825 + .long 1072693036 + .long 3441679162 + .long 1061369356 + .long 1642682013 + .long 1072693046 + .long 1909782298 + .long 1061316330 + .long 1665890809 + .long 1072693055 + .long 1715136991 + .long 1061265396 + .long 53329472 + .long 1072693064 + .long 2019904798 + .long 1061216478 + .long 1164815244 + .long 1072693072 + .long 4133034056 + .long 1061169502 + .long 767855920 + .long 1072693080 + .long 938778593 + .long 1061089885 + .long 3217597497 + .long 1072693087 + .long 45480017 + .long 1061003281 + .long 4277031209 + .long 1072693094 + .long 316452781 + .long 1060920148 + .long 4001969454 + .long 1072693101 + .long 2721989136 + .long 1060840357 + .long 2446150390 + .long 1072693108 + .long 1032835521 + .long 1060763785 + .long 3956275029 + .long 1072693114 + .long 2753065605 + .long 1060690310 + .long 4287173117 + .long 1072693120 + .long 2820848798 + .long 1060619817 + .long 3486770775 + .long 1072693126 + .long 271267104 + .long 1060552194 + .long 1601187023 + .long 1072693132 + .long 2026441674 + .long 1060487331 + .long 2969762984 + .long 1072693137 + .long 927900277 + .long 1060425125 + .long 3340220053 + .long 1072693142 + .long 1025459971 + .long 1060365474 + .long 2753620020 + .long 1072693147 + .long 4223106765 + .long 1060308280 + .long 1249454257 + .long 1072693152 + .long 1231370686 + .long 1060253451 + .long 3160665754 + .long 1072693156 + .long 1185758032 + .long 1060200894 + .long 4228800307 + .long 1072693160 + .long 1146814719 + .long 1060150522 + .long 193992533 + .long 1072693165 + .long 1416679249 + .long 1060094165 + .long 3974884891 + .long 1072693168 + .long 3168049461 + .long 1060001659 + .long 2719002994 + .long 1072693172 + .long 1524549056 + .long 1059913034 + .long 752475327 + .long 1072693176 + .long 1702683749 + .long 1059828137 + .long 2400209350 + .long 1072693179 + .long 2214749525 + .long 1059746822 + .long 3396000745 + .long 1072693182 + .long 2714889529 + .long 1059668948 + .long 3767477749 + .long 1072693185 + .long 3275007653 + .long 1059594379 + .long 3541174945 + .long 1072693188 + .long 3680105052 + .long 1059522984 + .long 2742573010 + .long 1072693191 + .long 2742671543 + .long 1059454637 + .long 1396137187 + .long 1072693194 + .long 1930731778 + .long 1059389216 + .long 3820321791 + .long 1072693196 + .long 424277854 + .long 1059326604 + .long 1447737015 + .long 1072693199 + .long 3074559673 + .long 1059266687 + .long 2889954809 + .long 1072693201 + .long 2611163775 + .long 1059209358 + .long 3872771463 + .long 1072693203 + .long 521028298 + .long 1059154512 + .long 121142023 + .long 1072693206 + .long 2174524969 + .long 1059102047 + .long 244113626 + .long 1072693208 + .long 2461272610 + .long 1059041975 + .long 4260019406 + .long 1072693209 + .long 1131027093 + .long 1058945999 + .long 3596507856 + .long 1072693211 + .long 2009173253 + .long 1058854226 + .long 2565407666 + .long 1072693213 + .long 1615100380 + .long 1058766484 + .long 1182885939 + .long 1072693215 + .long 3221825245 + .long 1058682606 + .long 3759409239 + .long 1072693216 + .long 3000825785 + .long 1058602433 + .long 1719899946 + .long 1072693218 + .long 1965540345 + .long 1058525811 + .long 3668531992 + .long 1072693219 + .long 763189321 + .long 1058452592 + .long 1029016297 + .long 1072693221 + .long 3084060488 + .long 1058382633 + .long 2404362103 + .long 1072693222 + .long 1917799745 + .long 1058315799 + .long 3512128068 + .long 1072693223 + .long 195668558 + .long 1058251958 + .long 69345537 + .long 1072693225 + .long 1393620869 + .long 1058190983 + .long 677441054 + .long 1072693226 + .long 160341434 + .long 1058132754 + .long 1052452475 + .long 1072693227 + .long 3034396383 + .long 1058077153 + .long 1204917335 + .long 1072693228 + .long 1940473490 + .long 1058024070 + .long 1144924039 + .long 1072693229 + .long 2791683145 + .long 1057933609 + .long 882129685 + .long 1072693230 + .long 1284377069 + .long 1057836875 + .long 425777245 + .long 1072693231 + .long 3138430378 + .long 1057744555 + .long 4079679407 + .long 1072693231 + .long 3254443766 + .long 1057656460 + .long 3262365346 + .long 1072693232 + .long 3585789915 + .long 1057572407 + .long 2276899854 + .long 1072693233 + .long 3340902607 + .long 1057492221 + .long 1131028956 + .long 1072693234 + .long 2109898645 + .long 1057415734 + .long 4127128746 + .long 1072693234 + .long 3029561298 + .long 1057342784 + .long 2682349923 + .long 1072693235 + .long 3100733692 + .long 1057273217 + .long 1098434770 + .long 1072693236 + .long 721863346 + .long 1057206885 + .long 3676827974 + .long 1072693236 + .long 3257818550 + .long 1057143644 + .long 1833786974 + .long 1072693237 + .long 283247917 + .long 1057083360 + .long 4165164796 + .long 1072693237 + .long 1283760382 + .long 1057025900 + .long 2086683008 + .long 1072693238 + .long 375021366 + .long 1056971140 + .long 4193680981 + .long 1072693238 + .long 2365640311 + .long 1056873310 + .long 1901387990 + .long 1072693239 + .long 1902930970 + .long 1056773877 + .long 3804671650 + .long 1072693239 + .long 903220739 + .long 1056679152 + .long 1318309237 + .long 1072693240 + .long 2063855685 + .long 1056588923 + .long 3036735356 + .long 1072693240 + .long 3397372173 + .long 1056502988 + .long 374312518 + .long 1072693241 + .long 1034711862 + .long 1056421154 + .long 1925078105 + .long 1072693241 + .long 670870767 + .long 1056343234 + .long 3397981554 + .long 1072693241 + .long 3291650888 + .long 1056269050 + .long 501794178 + .long 1072693242 + .long 3834664178 + .long 1056198433 + .long 1830018675 + .long 1072693242 + .long 2783069783 + .long 1056131220 + .long 3091092664 + .long 1072693242 + .long 625790851 + .long 1056067255 + .long 4288264900 + .long 1072693242 + .long 952568083 + .long 1056006388 + .long 1129667423 + .long 1072693243 + .long 707602500 + .long 1055948477 + .long 2208191219 + .long 1072693243 + .long 3920299786 + .long 1055870738 + .long 3231688653 + .long 1072693243 + .long 187138140 + .long 1055765933 + .long 4202848619 + .long 1072693243 + .long 4197216078 + .long 1055666254 + .long 829267664 + .long 1072693244 + .long 3910421342 + .long 1055571465 + .long 1703324662 + .long 1072693244 + .long 2296866372 + .long 1055481337 + .long 2532382302 + .long 1072693244 + .long 2605637707 + .long 1055395651 + .long 3318661313 + .long 1072693244 + .long 2292620388 + .long 1055314199 + .long 4064278012 + .long 1072693244 + .long 4195044292 + .long 1055236781 + .long 476281643 + .long 1072693245 + .long 2000853903 + .long 1055163208 + .long 1146528013 + .long 1072693245 + .long 140279194 + .long 1055093297 + .long 1781879969 + .long 1072693245 + .long 3672993662 + .long 1055026873 + .long 2384080674 + .long 1072693245 + .long 3938617616 + .long 1054963772 + .long 2954790214 + .long 1072693245 + .long 2918251757 + .long 1054903835 + .long 3495589354 + .long 1072693245 + .long 2286364164 + .long 1054826365 + .long 4007983120 + .long 1072693245 + .long 1376975757 + .long 1054718251 + .long 198436946 + .long 1072693246 + .long 3549789914 + .long 1054615596 + .long 658249143 + .long 1072693246 + .long 3134081244 + .long 1054518138 + .long 1093750278 + .long 1072693246 + .long 3217770792 + .long 1054425625 + .long 1506175371 + .long 1072693246 + .long 544573006 + .long 1054337818 + .long 1896699486 + .long 1072693246 + .long 563778522 + .long 1054254487 + .long 2266440493 + .long 1072693246 + .long 2499998483 + .long 1054175414 + .long 2616461708 + .long 1072693246 + .long 1684473986 + .long 1054100392 + .long 2947774421 + .long 1072693246 + .long 555072738 + .long 1054029222 + .long 3261340318 + .long 1072693246 + .long 2552316963 + .long 1053961714 + .long 3558073783 + .long 1072693246 + .long 1793581277 + .long 1053897689 + .long 3838844118 + .long 1072693246 + .long 2882522604 + .long 1053836974 + .long 4104477652 + .long 1072693246 + .long 4263347778 + .long 1053739932 + .long 60792463 + .long 1072693247 + .long 2125306315 + .long 1053630777 + .long 298469494 + .long 1072693247 + .long 1283904372 + .long 1053527305 + .long 523250625 + .long 1072693247 + .long 4039517916 + .long 1053429232 + .long 735809613 + .long 1072693247 + .long 1769278009 + .long 1053336290 + .long 936786486 + .long 1072693247 + .long 2403362003 + .long 1053248220 + .long 1126789145 + .long 1072693247 + .long 2174681212 + .long 1053164778 + .long 1306394904 + .long 1072693247 + .long 422102777 + .long 1053085731 + .long 1476151957 + .long 1072693247 + .long 1608658464 + .long 1053010856 + .long 1636580774 + .long 1072693247 + .long 255934547 + .long 1052939943 + .long 1788175440 + .long 1072693247 + .long 330542066 + .long 1052872790 + .long 1931404929 + .long 1072693247 + .long 359609029 + .long 1052809206 + .long 2066714326 + .long 1072693247 + .long 212821653 + .long 1052727714 + .long 2194525979 + .long 1072693247 + .long 1771024860 + .long 1052613747 + .long 2315240618 + .long 1072693247 + .long 3323366318 + .long 1052505878 + .long 2429238401 + .long 1072693247 + .long 3333784466 + .long 1052403794 + .long 2536879931 + .long 1072693247 + .long 1884899977 + .long 1052307197 + .long 2638507212 + .long 1072693247 + .long 1901768341 + .long 1052215803 + .long 2734444565 + .long 1072693247 + .long 1919585796 + .long 1052129343 + .long 2824999505 + .long 1072693247 + .long 1864802922 + .long 1052047561 + .long 2910463570 + .long 1072693247 + .long 369621280 + .long 1051970214 + .long 2991113117 + .long 1072693247 + .long 794742200 + .long 1051897070 + .long 3067210077 + .long 1072693247 + .long 185746157 + .long 1051827910 + .long 3139002674 + .long 1072693247 + .long 4108134519 + .long 1051762524 + .long 3206726114 + .long 1072693247 + .long 1569140952 + .long 1051679705 + .long 3270603235 + .long 1072693247 + .long 3808394293 + .long 1051562865 + .long 3330845135 + .long 1072693247 + .long 3847034202 + .long 1051452445 + .long 3387651756 + .long 1072693247 + .long 3767465203 + .long 1051348105 + .long 3441212456 + .long 1072693247 + .long 2207887660 + .long 1051249523 + .long 3491706543 + .long 1072693247 + .long 3687336940 + .long 1051156392 + .long 3539303784 + .long 1072693247 + .long 2322652348 + .long 1051068423 + .long 3584164895 + .long 1072693247 + .long 60084372 + .long 1050985340 + .long 3626442002 + .long 1072693247 + .long 3580394494 + .long 1050906880 + .long 3666279081 + .long 1072693247 + .long 4166097879 + .long 1050832797 + .long 3703812375 + .long 1072693247 + .long 654319384 + .long 1050762856 + .long 3739170797 + .long 1072693247 + .long 1044918721 + .long 1050696832 + .long 3772476305 + .long 1072693247 + .long 1221590325 + .long 1050595877 + .long 3803844261 + .long 1072693247 + .long 1858992497 + .long 1050478253 + .long 3833383776 + .long 1072693247 + .long 2222963862 + .long 1050367260 + .long 3861198036 + .long 1072693247 + .long 4044534932 + .long 1050262537 + .long 3887384606 + .long 1072693247 + .long 4037682077 + .long 1050163743 + .long 3912035731 + .long 1072693247 + .long 2751298525 + .long 1050070554 + .long 3935238607 + .long 1072693247 + .long 726747225 + .long 1049982663 + .long 3957075654 + .long 1072693247 + .long 3427405224 + .long 1049899778 + .long 3977624762 + .long 1072693247 + .long 572377531 + .long 1049821626 + .long 3996959532 + .long 1072693247 + .long 1471006056 + .long 1049747944 + .long 4015149506 + .long 1072693247 + .long 1796687607 + .long 1049678486 + .long 4032260375 + .long 1072693247 + .long 4103915186 + .long 1049601460 + .long 4048354194 + .long 1072693247 + .long 817191958 + .long 1049478062 + .long 4063489565 + .long 1072693247 + .long 1436794216 + .long 1049361781 + .long 4077721832 + .long 1072693247 + .long 2657182346 + .long 1049252221 + .long 4091103247 + .long 1072693247 + .long 2406257951 + .long 1049149007 + .long 4103683142 + .long 1072693247 + .long 3738473273 + .long 1049051783 + .long 4115508082 + .long 1072693247 + .long 1777519924 + .long 1048960214 + .long 4126622017 + .long 1072693247 + .long 942680177 + .long 1048873981 + .long 4137066424 + .long 1072693247 + .long 2319192650 + .long 1048792783 + .long 4146880438 + .long 1072693247 + .long 4112632783 + .long 1048716336 + .long 4156100982 + .long 1072693247 + .long 2293150261 + .long 1048644372 + .long 4164762887 + .long 1072693247 + .long 10642342 + .long 1048576636 + .long 4172899006 + .long 1072693247 + .long 5176375 + .long 1048449774 + .long 4180540322 + .long 1072693247 + .long 2922557803 + .long 1048329796 + .long 4187716050 + .long 1072693247 + .long 2705392296 + .long 1048216910 + .long 4194453736 + .long 1072693247 + .long 359265373 + .long 1048110710 + .long 4200779348 + .long 1072693247 + .long 2889113445 + .long 1048010811 + .long 4206717364 + .long 1072693247 + .long 1020973057 + .long 1047916853 + .long 4212290853 + .long 1072693247 + .long 3016231241 + .long 1047828492 + .long 4217521554 + .long 1072693247 + .long 11971917 + .long 1047745407 + .long 4222429951 + .long 1072693247 + .long 314571880 + .long 1047667291 + .long 4227035341 + .long 1072693247 + .long 3786258409 + .long 1047593856 + .long 4231355901 + .long 1072693247 + .long 131461034 + .long 1047522241 + .long 4235408754 + .long 1072693247 + .long 2699979079 + .long 1047392498 + .long 4239210022 + .long 1072693247 + .long 411815652 + .long 1047270578 + .long 4242774887 + .long 1072693247 + .long 1157099645 + .long 1047156022 + .long 4246117644 + .long 1072693247 + .long 3456465376 + .long 1047048399 + .long 4249251749 + .long 1072693247 + .long 3319603447 + .long 1046947303 + .long 4252189866 + .long 1072693247 + .long 1417286464 + .long 1046852350 + .long 4254943915 + .long 1072693247 + .long 1961438867 + .long 1046763177 + .long 4257525114 + .long 1072693247 + .long 3278475384 + .long 1046679443 + .long 4259944014 + .long 1072693247 + .long 1536658680 + .long 1046600827 + .long 4262210544 + .long 1072693247 + .long 3319082773 + .long 1046527024 + .long 4264334043 + .long 1072693247 + .long 3864661119 + .long 1046436651 + .long 4266323294 + .long 1072693247 + .long 2380952407 + .long 1046306618 + .long 4268186557 + .long 1072693247 + .long 1526944091 + .long 1046184593 + .long 4269931598 + .long 1072693247 + .long 2121831560 + .long 1046070097 + .long 4271565719 + .long 1072693247 + .long 3741717358 + .long 1045962679 + .long 4273095783 + .long 1072693247 + .long 2372148486 + .long 1045861915 + .long 4274528242 + .long 1072693247 + .long 1301376174 + .long 1045767404 + .long 4275869159 + .long 1072693247 + .long 876419281 + .long 1045678769 + .long 4277124229 + .long 1072693247 + .long 1464367617 + .long 1045595655 + .long 4278298806 + .long 1072693247 + .long 2422592759 + .long 1045517728 + .long 4279397918 + .long 1072693247 + .long 1357171196 + .long 1045444674 + .long 4280426288 + .long 1072693247 + .long 194145400 + .long 1045322121 + .long 4281388351 + .long 1072693247 + .long 380152291 + .long 1045193761 + .long 4282288274 + .long 1072693247 + .long 1583684278 + .long 1045073472 + .long 4283129967 + .long 1072693247 + .long 2165635186 + .long 1044960761 + .long 4283917101 + .long 1072693247 + .long 1516692231 + .long 1044855164 + .long 4284653124 + .long 1072693247 + .long 1455793348 + .long 1044756244 + .long 4285341270 + .long 1072693247 + .long 3729863063 + .long 1044663590 + .long 4285984575 + .long 1072693247 + .long 3593934135 + .long 1044576817 + .long 4286585887 + .long 1072693247 + .long 926645059 + .long 1044495562 + .long 4287147879 + .long 1072693247 + .long 3092460447 + .long 1044419482 + .long 4287673059 + .long 1072693247 + .long 410724451 + .long 1044314821 + .long 4288163777 + .long 1072693247 + .long 1647694055 + .long 1044181480 + .long 4288622239 + .long 1072693247 + .long 2719124395 + .long 1044056680 + .long 4289050512 + .long 1072693247 + .long 1706837060 + .long 1043939889 + .long 4289450537 + .long 1072693247 + .long 1950214717 + .long 1043830606 + .long 4289824130 + .long 1072693247 + .long 3939307600 + .long 1043728361 + .long 4290172996 + .long 1072693247 + .long 1960757033 + .long 1043632714 + .long 4290498730 + .long 1072693247 + .long 2651595104 + .long 1043543249 + .long 4290802831 + .long 1072693247 + .long 1012882634 + .long 1043459578 + .long 4291086700 + .long 1072693247 + .long 4055189249 + .long 1043381334 + .long 4291351650 + .long 1072693247 + .long 2246068185 + .long 1043283233 + .long 4291598913 + .long 1072693247 + .long 2274647687 + .long 1043146443 + .long 4291829641 + .long 1072693247 + .long 2890637209 + .long 1043018575 + .long 4292044913 + .long 1072693247 + .long 4153511196 + .long 1042899062 + .long 4292245741 + .long 1072693247 + .long 1929129059 + .long 1042787373 + .long 4292433070 + .long 1072693247 + .long 357577118 + .long 1042683008 + .long 4292607786 + .long 1072693247 + .long 3367143719 + .long 1042585498 + .long 4292770720 + .long 1072693247 + .long 2385315144 + .long 1042494406 + .long 4292922646 + .long 1072693247 + .long 3169025495 + .long 1042409319 + .long 4293064292 + .long 1072693247 + .long 1533871520 + .long 1042329852 + .long 4293196336 + .long 1072693247 + .long 599006589 + .long 1042226741 + .long 4293319415 + .long 1072693247 + .long 1711861758 + .long 1042088158 + .long 4293434124 + .long 1072693247 + .long 3081973787 + .long 1041958776 + .long 4293541018 + .long 1072693247 + .long 1321268943 + .long 1041838000 + .long 4293640617 + .long 1072693247 + .long 3969874170 + .long 1041725270 + .long 4293733409 + .long 1072693247 + .long 2452445702 + .long 1041620065 + .long 4293819848 + .long 1072693247 + .long 1452932973 + .long 1041521894 + .long 4293900359 + .long 1072693247 + .long 1595251056 + .long 1041430298 + .long 4293975339 + .long 1072693247 + .long 4117849423 + .long 1041344847 + .long 4294045161 + .long 1072693247 + .long 3152677356 + .long 1041265140 + .long 4294110170 + .long 1072693247 + .long 4175288180 + .long 1041145631 + .long 4294170691 + .long 1072693247 + .long 597820103 + .long 1041006978 + .long 4294227027 + .long 1072693247 + .long 3535028301 + .long 1040877691 + .long 4294279462 + .long 1072693247 + .long 918940523 + .long 1040757155 + .long 4294328259 + .long 1072693247 + .long 857999498 + .long 1040644790 + .long 4294373665 + .long 1072693247 + .long 3808560570 + .long 1040540055 + .long 4294415910 + .long 1072693247 + .long 1160780690 + .long 1040442446 + .long 4294455211 + .long 1072693247 + .long 201215039 + .long 1040351488 + .long 4294491767 + .long 1072693247 + .long 2402111668 + .long 1040266738 + .long 4294525766 + .long 1072693247 + .long 3723319669 + .long 1040187783 + .long 4294557384 + .long 1072693247 + .long 3725520897 + .long 1040041081 + .long 4294586783 + .long 1072693247 + .long 3671313057 + .long 1039904079 + .long 4294614115 + .long 1072693247 + .long 1053981368 + .long 1039776493 + .long 4294639524 + .long 1072693247 + .long 3460466107 + .long 1039657689 + .long 4294663141 + .long 1072693247 + .long 3035482254 + .long 1039547078 + .long 4294685090 + .long 1072693247 + .long 3802544396 + .long 1039444107 + .long 4294705486 + .long 1072693247 + .long 2441474464 + .long 1039348261 + .long 4294724438 + .long 1072693247 + .long 4084805700 + .long 1039259057 + .long 4294742044 + .long 1072693247 + .long 79094155 + .long 1039176047 + .long 4294758399 + .long 1072693247 + .long 31353126 + .long 1039058801 + .long 4294773590 + .long 1072693247 + .long 4063319008 + .long 1038915083 + .long 4294787697 + .long 1072693247 + .long 264658679 + .long 1038781394 + .long 4294800797 + .long 1072693247 + .long 1173126429 + .long 1038657047 + .long 4294812960 + .long 1072693247 + .long 242573921 + .long 1038541405 + .long 4294824252 + .long 1072693247 + .long 2098620107 + .long 1038433871 + .long 4294834733 + .long 1072693247 + .long 2055068430 + .long 1038333890 + .long 4294844461 + .long 1072693247 + .long 741519124 + .long 1038240943 + .long 4294853489 + .long 1072693247 + .long 2256555279 + .long 1038154545 + .long 4294861866 + .long 1072693247 + .long 196354007 + .long 1038058252 + .long 4294869638 + .long 1072693247 + .long 445761606 + .long 1037909007 + .long 4294876848 + .long 1072693247 + .long 3476364679 + .long 1037770330 + .long 4294883536 + .long 1072693247 + .long 3529100902 + .long 1037641490 + .long 4294889738 + .long 1072693247 + .long 1621116022 + .long 1037521804 + .long 4294895490 + .long 1072693247 + .long 78936185 + .long 1037410635 + .long 4294900823 + .long 1072693247 + .long 2269474636 + .long 1037307389 + .long 4294905767 + .long 1072693247 + .long 292731349 + .long 1037211515 + .long 4294910351 + .long 1072693247 + .long 2122912913 + .long 1037122496 + .long 4294914599 + .long 1072693247 + .long 3023046673 + .long 1037038043 + .long 4294918536 + .long 1072693247 + .long 254831576 + .long 1036884616 + .long 4294922185 + .long 1072693247 + .long 571168224 + .long 1036742213 + .long 4294925565 + .long 1072693247 + .long 871548122 + .long 1036610059 + .long 4294928697 + .long 1072693247 + .long 3924370604 + .long 1036487431 + .long 4294931598 + .long 1072693247 + .long 2976320978 + .long 1036373658 + .long 4294934285 + .long 1072693247 + .long 1728080816 + .long 1036268113 + .long 4294936773 + .long 1072693247 + .long 892927807 + .long 1036170213 + .long 4294939078 + .long 1072693247 + .long 2817804388 + .long 1036079415 + .long 4294941211 + .long 1072693247 + .long 4045759389 + .long 1035995215 + .long 4294943186 + .long 1072693247 + .long 3073449671 + .long 1035841200 + .long 4294945014 + .long 1072693247 + .long 3519286355 + .long 1035696439 + .long 4294946706 + .long 1072693247 + .long 794405638 + .long 1035562248 + .long 4294948272 + .long 1072693247 + .long 2678131373 + .long 1035437869 + .long 4294949720 + .long 1072693247 + .long 3816540112 + .long 1035322600 + .long 4294951061 + .long 1072693247 + .long 234134080 + .long 1035215788 + .long 4294952301 + .long 1072693247 + .long 587911812 + .long 1035116823 + .long 4294953448 + .long 1072693247 + .long 4031748504 + .long 1035025140 + .long 4294954509 + .long 1072693247 + .long 925164896 + .long 1034935920 + .long 4294955489 + .long 1072693247 + .long 3358488129 + .long 1034778608 + .long 4294956396 + .long 1072693247 + .long 638703581 + .long 1034632928 + .long 4294957235 + .long 1072693247 + .long 807654845 + .long 1034498035 + .long 4294958010 + .long 1072693247 + .long 2657744191 + .long 1034373146 + .long 4294958726 + .long 1072693247 + .long 3663858009 + .long 1034257534 + .long 4294959389 + .long 1072693247 + .long 533492925 + .long 1034150524 + .long 4294960000 + .long 1072693247 + .long 3770229724 + .long 1034051486 + .long 4294960566 + .long 1072693247 + .long 1751462400 + .long 1033959840 + .long 4294961088 + .long 1072693247 + .long 1904247472 + .long 1033854151 + .long 4294961570 + .long 1072693247 + .long 1030368421 + .long 1033697253 + .long 4294962016 + .long 1072693247 + .long 4079129458 + .long 1033552117 + .long 4294962427 + .long 1072693247 + .long 1682458602 + .long 1033417880 + .long 4294962807 + .long 1072693247 + .long 3167377884 + .long 1033293737 + .long 4294963158 + .long 1072693247 + .long 491770573 + .long 1033178945 + .long 4294963482 + .long 1072693247 + .long 2200416094 + .long 1033072811 + .long 4294963781 + .long 1072693247 + .long 4169952110 + .long 1032974695 + .long 4294964057 + .long 1072693247 + .long 140330391 + .long 1032884004 + .long 4294964311 + .long 1072693247 + .long 3783382554 + .long 1032753008 + .long 4294964546 + .long 1072693247 + .long 551761884 + .long 1032598092 + .long 4294964763 + .long 1072693247 + .long 359970126 + .long 1032454950 + .long 4294964963 + .long 1072693247 + .long 1021270101 + .long 1032322704 + .long 4294965147 + .long 1072693247 + .long 1490695248 + .long 1032200540 + .long 4294965317 + .long 1072693247 + .long 3568738246 + .long 1032087703 + .long 4294965474 + .long 1072693247 + .long 2104695675 + .long 1031983495 + .long 4294965619 + .long 1072693247 + .long 2259752215 + .long 1031887267 + .long 4294965752 + .long 1072693247 + .long 2928907214 + .long 1031798055 + .long 4294965875 + .long 1072693247 + .long 825285899 + .long 1031634009 + .long 4294965988 + .long 1072693247 + .long 130522063 + .long 1031482582 + .long 4294966092 + .long 1072693247 + .long 3544208977 + .long 1031342820 + .long 4294966189 + .long 1072693247 + .long 3709295074 + .long 1031213842 + .long 4294966277 + .long 1072693247 + .long 4124611741 + .long 1031094830 + .long 4294966359 + .long 1072693247 + .long 2968308055 + .long 1030985028 + .long 4294966434 + .long 1072693247 + .long 4148065245 + .long 1030883735 + .long 4294966503 + .long 1072693247 + .long 3937194615 + .long 1030790304 + .long 4294966567 + .long 1072693247 + .long 693670124 + .long 1030658064 + .long 4294966626 + .long 1072693247 + .long 3047836189 + .long 1030499141 + .long 4294966680 + .long 1072693247 + .long 1761244566 + .long 1030352608 + .long 4294966730 + .long 1072693247 + .long 966529192 + .long 1030217515 + .long 4294966776 + .long 1072693247 + .long 2050080133 + .long 1030092984 + .long 4294966818 + .long 1072693247 + .long 2531893977 + .long 1029978204 + .long 4294966857 + .long 1072693247 + .long 871320764 + .long 1029872425 + .long 4294966892 + .long 1072693247 + .long 2788659082 + .long 1029774952 + .long 4294966925 + .long 1072693247 + .long 2156308587 + .long 1029668659 + .long 4294966955 + .long 1072693247 + .long 3654157322 + .long 1029503191 + .long 4294966983 + .long 1072693247 + .long 622519429 + .long 1029350775 + .long 4294967009 + .long 1072693247 + .long 1939798879 + .long 1029210397 + .long 4294967032 + .long 1072693247 + .long 3844698302 + .long 1029081123 + .long 4294967054 + .long 1072693247 + .long 3868101452 + .long 1028962090 + .long 4294967074 + .long 1072693247 + .long 3689445052 + .long 1028852500 + .long 4294967092 + .long 1072693247 + .long 788030992 + .long 1028751617 + .long 4294967109 + .long 1072693247 + .long 3128526661 + .long 1028658759 + .long 4294967124 + .long 1072693247 + .long 393221749 + .long 1028493545 + .long 4294967138 + .long 1072693247 + .long 3899460746 + .long 1028336263 + .long 4294967151 + .long 1072693247 + .long 3409408659 + .long 1028191549 + .long 4294967163 + .long 1072693247 + .long 622192947 + .long 1028058415 + .long 4294967174 + .long 1072693247 + .long 2664726297 + .long 1027935948 + .long 4294967184 + .long 1072693247 + .long 1558673822 + .long 1027823309 + .long 4294967194 + .long 1072693247 + .long 2777131896 + .long 1027719721 + .long 4294967202 + .long 1072693247 + .long 3972527094 + .long 1027624469 + .long 4294967210 + .long 1072693247 + .long 2120900631 + .long 1027469308 + .long 4294967217 + .long 1072693247 + .long 137556752 + .long 1027308292 + .long 4294967224 + .long 1072693247 + .long 569601398 + .long 1027160288 + .long 4294967230 + .long 1072693247 + .long 280212019 + .long 1027024262 + .long 4294967235 + .long 1072693247 + .long 4236421385 + .long 1026899259 + .long 4294967240 + .long 1072693247 + .long 3132998397 + .long 1026784402 + .long 4294967245 + .long 1072693247 + .long 269619050 + .long 1026678880 + .long 4294967249 + .long 1072693247 + .long 1633775828 + .long 1026581945 + .long 4294967253 + .long 1072693247 + .long 2528343355 + .long 1026429917 + .long 4294967257 + .long 1072693247 + .long 843477906 + .long 1026266381 + .long 4294967260 + .long 1072693247 + .long 640833957 + .long 1026116210 + .long 4294967263 + .long 1072693247 + .long 1040411868 + .long 1025978329 + .long 4294967266 + .long 1072693247 + .long 1466509739 + .long 1025851748 + .long 4294967268 + .long 1072693247 + .long 3307339414 + .long 1025735555 + .long 4294967271 + .long 1072693247 + .long 857222806 + .long 1025628912 + .long 4294967273 + .long 1072693247 + .long 33935978 + .long 1025531045 + .long 4294967275 + .long 1072693247 + .long 592853498 + .long 1025375158 + .long 4294967277 + .long 1072693247 + .long 3801380895 + .long 1025210375 + .long 4294967278 + .long 1072693247 + .long 3715147572 + .long 1025059210 + .long 4294967280 + .long 1072693247 + .long 4190633910 + .long 1024920554 + .long 4294967281 + .long 1072693247 + .long 3597701666 + .long 1024793388 + .long 4294967283 + .long 1072693247 + .long 3481239551 + .long 1024676774 + .long 4294967284 + .long 1072693247 + .long 2361296039 + .long 1024569850 + .long 4294967285 + .long 1072693247 + .long 265722145 + .long 1024471823 + .long 4294967286 + .long 1072693247 + .long 1895395227 + .long 1024305174 + .long 4294967287 + .long 1072693247 + .long 1800210858 + .long 1024140449 + .long 4294967287 + .long 1072693247 + .long 3069172694 + .long 1023989486 + .long 4294967288 + .long 1072693247 + .long 2893236102 + .long 1023851153 + .long 4294967289 + .long 1072693247 + .long 1719077557 + .long 1023724409 + .long 4294967289 + .long 1072693247 + .long 1914505601 + .long 1023608297 + .long 4294967290 + .long 1072693247 + .long 301987594 + .long 1023501939 + .long 4294967291 + .long 1072693247 + .long 282470485 + .long 1023398878 + .long 4294967291 + .long 1072693247 + .long 3168046348 + .long 1023220463 + .long 4294967291 + .long 1072693247 + .long 1009101993 + .long 1023057097 + .long 4294967292 + .long 1072693247 + .long 3997083445 + .long 1022907527 + .long 4294967292 + .long 1072693247 + .long 2336955916 + .long 1022770607 + .long 4294967293 + .long 1072693247 + .long 3868880033 + .long 1022645281 + .long 4294967293 + .long 1072693247 + .long 1476581786 + .long 1022530583 + .long 4294967293 + .long 1072693247 + .long 3208709775 + .long 1022425623 + .long 4294967293 + .long 1072693247 + .long 716057529 + .long 1022297576 + .long 4294967294 + .long 1072693247 + .long 28479576 + .long 1022121857 + .long 4294967294 + .long 1072693247 + .long 3319607164 + .long 1021961117 + .long 4294967294 + .long 1072693247 + .long 2804464626 + .long 1021814099 + .long 4294967294 + .long 1072693247 + .long 148574980 + .long 1021679648 + .long 4294967294 + .long 1072693247 + .long 69395739 + .long 1021556704 + .long 4294967294 + .long 1072693247 + .long 2564419134 + .long 1021444296 + .long 4294967295 + .long 1072693247 + .long 2125879894 + .long 1021341535 + .long 4294967295 + .long 1072693247 + .long 344595749 + .long 1021182185 + .long 4294967295 + .long 1072693247 + .long 872566418 + .long 1021010487 + .long 4294967295 + .long 1072693247 + .long 25762808 + .long 1020853582 + .long 4294967295 + .long 1072693247 + .long 3343322505 + .long 1020710212 + .long 4294967295 + .long 1072693247 + .long 68521175 + .long 1020579228 + .long 4294967295 + .long 1072693247 + .long 3210511172 + .long 1020459572 + .long 4294967295 + .long 1072693247 + .long 2432640097 + .long 1020350280 + .long 4294967295 + .long 1072693247 + .long 2650426869 + .long 1020236484 + .long 4294967295 + .long 1072693247 + .long 2803544287 + .long 1020054190 + .long 4294967295 + .long 1072693247 + .long 2667581847 + .long 1019887746 + .long 0 + .long 1072693248 + .long 995748204 + .long 1019735793 + .long 0 + .long 1072693248 + .long 438643701 + .long 1019597086 + .long 0 + .long 1072693248 + .long 809181847 + .long 1019470486 + .long 0 + .long 1072693248 + .long 10437582 + .long 1019354951 + .long 0 + .long 1072693248 + .long 2354988354 + .long 1019249526 + .long 0 + .long 1072693248 + .long 3627099743 + .long 1019090807 + .long 0 + .long 1072693248 + .long 184652213 + .long 1018915313 + .long 0 + .long 1072693248 + .long 2690341715 + .long 1018755235 + .long 0 + .long 1072693248 + .long 1010878695 + .long 1018609239 + .long 0 + .long 1072693248 + .long 3130597339 + .long 1018476101 + .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 1075312640 + .long 0 + .long 1075312640 + .long 0 + .long 1075312640 + .long 0 + .long 1075312640 + .long 0 + .long 1075312640 + .long 0 + .long 1075312640 + .long 0 + .long 1075312640 + .long 0 + .long 1075312640 + .long 0 + .long 1119879168 + .long 0 + .long 1119879168 + .long 0 + .long 1119879168 + .long 0 + .long 1119879168 + .long 0 + .long 1119879168 + .long 0 + .long 1119879168 + .long 0 + .long 1119879168 + .long 0 + .long 1119879168 + .long 0 + .long 804257792 + .long 0 + .long 804257792 + .long 0 + .long 804257792 + .long 0 + .long 804257792 + .long 0 + .long 804257792 + .long 0 + .long 804257792 + .long 0 + .long 804257792 + .long 0 + .long 804257792 + .long 0 + .long 2147483648 + .long 0 + .long 2147483648 + .long 0 + .long 2147483648 + .long 0 + .long 2147483648 + .long 0 + .long 2147483648 + .long 0 + .long 2147483648 + .long 0 + .long 2147483648 + .long 0 + .long 2147483648 + .long 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 2958810789 + .long 3215376749 + .long 2958810789 + .long 3215376749 + .long 2958810789 + .long 3215376749 + .long 2958810789 + .long 3215376749 + .long 2958810789 + .long 3215376749 + .long 2958810789 + .long 3215376749 + .long 2958810789 + .long 3215376749 + .long 2958810789 + .long 3215376749 + .long 899900337 + .long 1069617426 + .long 899900337 + .long 1069617426 + .long 899900337 + .long 1069617426 + .long 899900337 + .long 1069617426 + .long 899900337 + .long 1069617426 + .long 899900337 + .long 1069617426 + .long 899900337 + .long 1069617426 + .long 899900337 + .long 1069617426 + .long 477227863 + .long 1070363082 + .long 477227863 + .long 1070363082 + .long 477227863 + .long 1070363082 + .long 477227863 + .long 1070363082 + .long 477227863 + .long 1070363082 + .long 477227863 + .long 1070363082 + .long 477227863 + .long 1070363082 + .long 477227863 + .long 1070363082 + .long 736288168 + .long 3218708892 + .long 736288168 + .long 3218708892 + .long 736288168 + .long 3218708892 + .long 736288168 + .long 3218708892 + .long 736288168 + .long 3218708892 + .long 736288168 + .long 3218708892 + .long 736288168 + .long 3218708892 + .long 736288168 + .long 3218708892 + .long 6991 + .long 3217380696 + .long 6991 + .long 3217380696 + .long 6991 + .long 3217380696 + .long 6991 + .long 3217380696 + .long 6991 + .long 3217380696 + .long 6991 + .long 3217380696 + .long 6991 + .long 3217380696 + .long 6991 + .long 3217380696 + .long 736293154 + .long 1069128094 + .long 736293154 + .long 1069128094 + .long 736293154 + .long 1069128094 + .long 736293154 + .long 1069128094 + .long 736293154 + .long 1069128094 + .long 736293154 + .long 1069128094 + .long 736293154 + .long 1069128094 + .long 736293154 + .long 1069128094 + .long 1431652342 + .long 3218429269 + .long 1431652342 + .long 3218429269 + .long 1431652342 + .long 3218429269 + .long 1431652342 + .long 3218429269 + .long 1431652342 + .long 3218429269 + .long 1431652342 + .long 3218429269 + .long 1431652342 + .long 3218429269 + .long 1431652342 + .long 3218429269 + .long 4294956237 + .long 1071644671 + .long 4294956237 + .long 1071644671 + .long 4294956237 + .long 1071644671 + .long 4294956237 + .long 1071644671 + .long 4294956237 + .long 1071644671 + .long 4294956237 + .long 1071644671 + .long 4294956237 + .long 1071644671 + .long 4294956237 + .long 1071644671 + .long 1431653132 + .long 1071994197 + .long 1431653132 + .long 1071994197 + .long 1431653132 + .long 1071994197 + .long 1431653132 + .long 1071994197 + .long 1431653132 + .long 1071994197 + .long 1431653132 + .long 1071994197 + .long 1431653132 + .long 1071994197 + .long 1431653132 + .long 1071994197 + .long 1431655765 + .long 3218429269 + .long 1431655765 + .long 3218429269 + .long 1431655765 + .long 3218429269 + .long 1431655765 + .long 3218429269 + .long 1431655765 + .long 3218429269 + .long 1431655765 + .long 3218429269 + .long 1431655765 + .long 3218429269 + .long 1431655765 + .long 3218429269 + .long 0 + .long 3220176896 + .long 0 + .long 3220176896 + .long 0 + .long 3220176896 + .long 0 + .long 3220176896 + .long 0 + .long 3220176896 + .long 0 + .long 3220176896 + .long 0 + .long 3220176896 + .long 0 + .long 3220176896 + .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 0 + .long 4294967295 + .long 0 + .long 4294967295 + .long 0 + .long 4294967295 + .long 0 + .long 4294967295 + .long 0 + .long 4294967295 + .long 0 + .long 4294967295 + .long 0 + .long 4294967295 + .long 0 + .long 3149651110 + .long 1071994199 + .long 3149651110 + .long 1071994199 + .long 3149651110 + .long 1071994199 + .long 3149651110 + .long 1071994199 + .long 3149651110 + .long 1071994199 + .long 3149651110 + .long 1071994199 + .long 3149651110 + .long 1071994199 + .long 3149651110 + .long 1071994199 + .long 2147488809 + .long 3220176897 + .long 2147488809 + .long 3220176897 + .long 2147488809 + .long 3220176897 + .long 2147488809 + .long 3220176897 + .long 2147488809 + .long 3220176897 + .long 2147488809 + .long 3220176897 + .long 2147488809 + .long 3220176897 + .long 2147488809 + .long 3220176897 + .long 22118 + .long 1071644676 + .long 22118 + .long 1071644676 + .long 22118 + .long 1071644676 + .long 22118 + .long 1071644676 + .long 22118 + .long 1071644676 + .long 22118 + .long 1071644676 + .long 22118 + .long 1071644676 + .long 22118 + .long 1071644676 + .long 2290691940 + .long 3218429276 + .long 2290691940 + .long 3218429276 + .long 2290691940 + .long 3218429276 + .long 2290691940 + .long 3218429276 + .long 2290691940 + .long 3218429276 + .long 2290691940 + .long 3218429276 + .long 2290691940 + .long 3218429276 + .long 2290691940 + .long 3218429276 + .long 3748619702 + .long 1076933868 + .long 3748619702 + .long 1076933868 + .long 3748619702 + .long 1076933868 + .long 3748619702 + .long 1076933868 + .long 3748619702 + .long 1076933868 + .long 3748619702 + .long 1076933868 + .long 3748619702 + .long 1076933868 + .long 3748619702 + .long 1076933868 + .long 1332865885 + .long 1072827863 + .long 1332865885 + .long 1072827863 + .long 1332865885 + .long 1072827863 + .long 1332865885 + .long 1072827863 + .long 1332865885 + .long 1072827863 + .long 1332865885 + .long 1072827863 + .long 1332865885 + .long 1072827863 + .long 1332865885 + .long 1072827863 + .long 4175280127 + .long 3218608755 + .long 4175280127 + .long 3218608755 + .long 4175280127 + .long 3218608755 + .long 4175280127 + .long 3218608755 + .long 4175280127 + .long 3218608755 + .long 4175280127 + .long 3218608755 + .long 4175280127 + .long 3218608755 + .long 4175280127 + .long 3218608755 + .long 1654303500 + .long 1069343463 + .long 1654303500 + .long 1069343463 + .long 1654303500 + .long 1069343463 + .long 1654303500 + .long 1069343463 + .long 1654303500 + .long 1069343463 + .long 1654303500 + .long 1069343463 + .long 1654303500 + .long 1069343463 + .long 1654303500 + .long 1069343463 + .long 2550143969 + .long 3214639717 + .long 2550143969 + .long 3214639717 + .long 2550143969 + .long 3214639717 + .long 2550143969 + .long 3214639717 + .long 2550143969 + .long 3214639717 + .long 2550143969 + .long 3214639717 + .long 2550143969 + .long 3214639717 + .long 2550143969 + .long 3214639717 + .long 1811974982 + .long 1064657815 + .long 1811974982 + .long 1064657815 + .long 1811974982 + .long 1064657815 + .long 1811974982 + .long 1064657815 + .long 1811974982 + .long 1064657815 + .long 1811974982 + .long 1064657815 + .long 1811974982 + .long 1064657815 + .long 1811974982 + .long 1064657815 + .long 2000717462 + .long 3209426147 + .long 2000717462 + .long 3209426147 + .long 2000717462 + .long 3209426147 + .long 2000717462 + .long 3209426147 + .long 2000717462 + .long 3209426147 + .long 2000717462 + .long 3209426147 + .long 2000717462 + .long 3209426147 + .long 2000717462 + .long 3209426147 + .long 3946397046 + .long 1059020016 + .long 3946397046 + .long 1059020016 + .long 3946397046 + .long 1059020016 + .long 3946397046 + .long 1059020016 + .long 3946397046 + .long 1059020016 + .long 3946397046 + .long 1059020016 + .long 3946397046 + .long 1059020016 + .long 3946397046 + .long 1059020016 + .long 2418528937 + .long 3203304934 + .long 2418528937 + .long 3203304934 + .long 2418528937 + .long 3203304934 + .long 2418528937 + .long 3203304934 + .long 2418528937 + .long 3203304934 + .long 2418528937 + .long 3203304934 + .long 2418528937 + .long 3203304934 + .long 2418528937 + .long 3203304934 + .long 1917951611 + .long 1052370084 + .long 1917951611 + .long 1052370084 + .long 1917951611 + .long 1052370084 + .long 1917951611 + .long 1052370084 + .long 1917951611 + .long 1052370084 + .long 1917951611 + .long 1052370084 + .long 1917951611 + .long 1052370084 + .long 1917951611 + .long 1052370084 + .long 15579687 + .long 3196251740 + .long 15579687 + .long 3196251740 + .long 15579687 + .long 3196251740 + .long 15579687 + .long 3196251740 + .long 15579687 + .long 3196251740 + .long 15579687 + .long 3196251740 + .long 15579687 + .long 3196251740 + .long 15579687 + .long 3196251740 + .long 3028475240 + .long 1044872454 + .long 3028475240 + .long 1044872454 + .long 3028475240 + .long 1044872454 + .long 3028475240 + .long 1044872454 + .long 3028475240 + .long 1044872454 + .long 3028475240 + .long 1044872454 + .long 3028475240 + .long 1044872454 + .long 3028475240 + .long 1044872454 + .long 4080210287 + .long 3188206558 + .long 4080210287 + .long 3188206558 + .long 4080210287 + .long 3188206558 + .long 4080210287 + .long 3188206558 + .long 4080210287 + .long 3188206558 + .long 4080210287 + .long 3188206558 + .long 4080210287 + .long 3188206558 + .long 4080210287 + .long 3188206558 + .long 2207563104 + .long 1036259756 + .long 2207563104 + .long 1036259756 + .long 2207563104 + .long 1036259756 + .long 2207563104 + .long 1036259756 + .long 2207563104 + .long 1036259756 + .long 2207563104 + .long 1036259756 + .long 2207563104 + .long 1036259756 + .long 2207563104 + .long 1036259756 + .long 3335582481 + .long 3178889284 + .long 3335582481 + .long 3178889284 + .long 3335582481 + .long 3178889284 + .long 3335582481 + .long 3178889284 + .long 3335582481 + .long 3178889284 + .long 3335582481 + .long 3178889284 + .long 3335582481 + .long 3178889284 + .long 3335582481 + .long 3178889284 + .long 965701323 + .long 1026106865 + .long 965701323 + .long 1026106865 + .long 965701323 + .long 1026106865 + .long 965701323 + .long 1026106865 + .long 965701323 + .long 1026106865 + .long 965701323 + .long 1026106865 + .long 965701323 + .long 1026106865 + .long 965701323 + .long 1026106865 + .long 125167645 + .long 3167813598 + .long 125167645 + .long 3167813598 + .long 125167645 + .long 3167813598 + .long 125167645 + .long 3167813598 + .long 125167645 + .long 3167813598 + .long 125167645 + .long 3167813598 + .long 125167645 + .long 3167813598 + .long 125167645 + .long 3167813598 + .long 374732026 + .long 1013747294 + .long 374732026 + .long 1013747294 + .long 374732026 + .long 1013747294 + .long 374732026 + .long 1013747294 + .long 374732026 + .long 1013747294 + .long 374732026 + .long 1013747294 + .long 374732026 + .long 1013747294 + .long 374732026 + .long 1013747294 + .long 385891618 + .long 3153485771 + .long 385891618 + .long 3153485771 + .long 385891618 + .long 3153485771 + .long 385891618 + .long 3153485771 + .long 385891618 + .long 3153485771 + .long 385891618 + .long 3153485771 + .long 385891618 + .long 3153485771 + .long 385891618 + .long 3153485771 + .type __svml_derf_data_internal,@object + .size __svml_derf_data_internal,14976 + .align 32 + +_imldErfHATab: + .long 1346542445 + .long 1072827863 + .long 1342177280 + .long 1072827863 + .long 1147899556 + .long 1041278683 + .long 0 + .long 1282408448 + .long 0 + .long 862978048 + .long 33554432 + .long 1101004800 + .long 0 + .long 0 + .long 0 + .long 2147483648 + .long 0 + .long 1072693248 + .long 0 + .long 3220176896 + .long 0 + .long 256 + .long 1222277045 + .long 929276 + .type _imldErfHATab,@object + .size _imldErfHATab,96 + .align 8 + +.FLT_20: + .long 0xffffffff,0xffffffff + .type .FLT_20,@object + .size .FLT_20,8 diff --git a/sysdeps/x86_64/fpu/multiarch/svml_s_erff16_core-avx2.S b/sysdeps/x86_64/fpu/multiarch/svml_s_erff16_core-avx2.S new file mode 100644 index 0000000000..852a247f83 --- /dev/null +++ b/sysdeps/x86_64/fpu/multiarch/svml_s_erff16_core-avx2.S @@ -0,0 +1,20 @@ +/* AVX2 version of vectorized erff. + 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 + . */ + +#define _ZGVeN16v_erff _ZGVeN16v_erff_avx2_wrapper +#include "../svml_s_erff16_core.S" diff --git a/sysdeps/x86_64/fpu/multiarch/svml_s_erff16_core.c b/sysdeps/x86_64/fpu/multiarch/svml_s_erff16_core.c new file mode 100644 index 0000000000..5714eaf023 --- /dev/null +++ b/sysdeps/x86_64/fpu/multiarch/svml_s_erff16_core.c @@ -0,0 +1,28 @@ +/* Multiple versions of vectorized erff, 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 + . */ + +#define SYMBOL_NAME _ZGVeN16v_erff +#include "ifunc-mathvec-avx512-skx.h" + +libc_ifunc_redirected (REDIRECT_NAME, SYMBOL_NAME, IFUNC_SELECTOR ()); + +#ifdef SHARED +__hidden_ver1 (_ZGVeN16v_erff, __GI__ZGVeN16v_erff, + __redirect__ZGVeN16v_erff) + __attribute__ ((visibility ("hidden"))); +#endif diff --git a/sysdeps/x86_64/fpu/multiarch/svml_s_erff16_core_avx512.S b/sysdeps/x86_64/fpu/multiarch/svml_s_erff16_core_avx512.S new file mode 100644 index 0000000000..20f1b8ff97 --- /dev/null +++ b/sysdeps/x86_64/fpu/multiarch/svml_s_erff16_core_avx512.S @@ -0,0 +1,2199 @@ +/* Function erff 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: + * + * erf(x) is computed as higher precision simple polynomial + * with no lookup table: + * + * R = P0 + x^2*(P1 + x^2*(P2 + .... x^2*P12)); + * erf(x) = R * R * x; + * + * Special cases: + * + * erf(0) = 0 + * erf(+INF) = +1 + * erf(-INF) = -1 + * erf(QNaN) = QNaN + * erf(SNaN) = QNaN + * + */ + +#include + + .text +ENTRY(_ZGVeN16v_erff_skx) + vmovaps %zmm0, %zmm8 + vmulps {rn-sae}, %zmm8, %zmm8, %zmm11 + vmovups 7680+__svml_serf_data_internal(%rip), %zmm15 + vmovups 7744+__svml_serf_data_internal(%rip), %zmm10 + vmovups 7616+__svml_serf_data_internal(%rip), %zmm9 + vmovups 7552+__svml_serf_data_internal(%rip), %zmm7 + vmovups 7488+__svml_serf_data_internal(%rip), %zmm0 + vmovups 7424+__svml_serf_data_internal(%rip), %zmm1 + vmovups 7360+__svml_serf_data_internal(%rip), %zmm2 + vmovups 7296+__svml_serf_data_internal(%rip), %zmm3 + vmovups 7232+__svml_serf_data_internal(%rip), %zmm4 + vmovups 7168+__svml_serf_data_internal(%rip), %zmm5 + vmovups 7104+__svml_serf_data_internal(%rip), %zmm6 + vextractf32x8 $1, %zmm8, %ymm13 + vcvtps2pd {sae}, %ymm8, %zmm12 + vcvtps2pd {sae}, %ymm13, %zmm14 + vmulpd {rn-sae}, %zmm12, %zmm12, %zmm12 + vmulpd {rn-sae}, %zmm14, %zmm14, %zmm13 + +/* R = P0 + x^2*(P1 + x^2*(P2 + .... x^2*P12)); */ + vmovaps %zmm15, %zmm14 + vfmadd231pd {rn-sae}, %zmm12, %zmm10, %zmm14 + vfmadd231pd {rn-sae}, %zmm13, %zmm10, %zmm15 + vmovups 7040+__svml_serf_data_internal(%rip), %zmm10 + vfmadd213pd {rn-sae}, %zmm9, %zmm12, %zmm14 + vfmadd231pd {rn-sae}, %zmm13, %zmm15, %zmm9 + vfmadd213pd {rn-sae}, %zmm7, %zmm12, %zmm14 + vfmadd231pd {rn-sae}, %zmm13, %zmm9, %zmm7 + vfmadd213pd {rn-sae}, %zmm0, %zmm12, %zmm14 + vfmadd231pd {rn-sae}, %zmm13, %zmm7, %zmm0 + vmovups 6912+__svml_serf_data_internal(%rip), %zmm7 + vfmadd213pd {rn-sae}, %zmm1, %zmm12, %zmm14 + vfmadd231pd {rn-sae}, %zmm13, %zmm0, %zmm1 + vmovups 6976+__svml_serf_data_internal(%rip), %zmm0 + vcmpps $22, {sae}, %zmm11, %zmm7, %k1 + vfmadd213pd {rn-sae}, %zmm2, %zmm12, %zmm14 + vfmadd231pd {rn-sae}, %zmm13, %zmm1, %zmm2 + vfmadd213pd {rn-sae}, %zmm3, %zmm12, %zmm14 + vfmadd231pd {rn-sae}, %zmm13, %zmm2, %zmm3 + vfmadd213pd {rn-sae}, %zmm4, %zmm12, %zmm14 + vfmadd231pd {rn-sae}, %zmm13, %zmm3, %zmm4 + vfmadd213pd {rn-sae}, %zmm5, %zmm12, %zmm14 + vfmadd231pd {rn-sae}, %zmm13, %zmm4, %zmm5 + vfmadd213pd {rn-sae}, %zmm6, %zmm12, %zmm14 + vfmadd231pd {rn-sae}, %zmm13, %zmm5, %zmm6 + vmovups 6080+__svml_serf_data_internal(%rip), %zmm5 + vfmadd213pd {rn-sae}, %zmm10, %zmm12, %zmm14 + vfmadd231pd {rn-sae}, %zmm13, %zmm6, %zmm10 + vandnps %zmm8, %zmm5, %zmm6 + vfmadd213pd {rn-sae}, %zmm0, %zmm14, %zmm12 + vfmadd213pd {rn-sae}, %zmm0, %zmm10, %zmm13 + vorps 6144+__svml_serf_data_internal(%rip), %zmm6, %zmm0 + vmulpd {rn-sae}, %zmm12, %zmm12, %zmm1 + vmulpd {rn-sae}, %zmm13, %zmm13, %zmm3 + vcvtpd2ps {rn-sae}, %zmm1, %ymm2 + vcvtpd2ps {rn-sae}, %zmm3, %ymm4 + vinsertf32x8 $1, %ymm4, %zmm2, %zmm9 + +/* erf(x) = R * R * x; */ + vmulps {rn-sae}, %zmm8, %zmm9, %zmm0{%k1} + ret + +END(_ZGVeN16v_erff_skx) + + .section .rodata, "a" + .align 64 + +__svml_serf_data_internal: + .long 0 + .long 1066430139 + .long 1007709690 + .long 1066429561 + .long 1016097720 + .long 1066427828 + .long 1020828656 + .long 1066424940 + .long 1024484018 + .long 1066420899 + .long 1026847466 + .long 1066415706 + .long 1029209471 + .long 1066409363 + .long 1031569748 + .long 1066401872 + .long 1032863396 + .long 1066393236 + .long 1034041375 + .long 1066383458 + .long 1035218061 + .long 1066372541 + .long 1036393311 + .long 1066360491 + .long 1037566985 + .long 1066347310 + .long 1038738940 + .long 1066333004 + .long 1039909037 + .long 1066317578 + .long 1040632264 + .long 1066301038 + .long 1041215245 + .long 1066283389 + .long 1041797089 + .long 1066264638 + .long 1042377726 + .long 1066244793 + .long 1042957089 + .long 1066223859 + .long 1043535110 + .long 1066201845 + .long 1044111721 + .long 1066178758 + .long 1044686856 + .long 1066154607 + .long 1045260449 + .long 1066129400 + .long 1045832434 + .long 1066103148 + .long 1046402745 + .long 1066075858 + .long 1046971319 + .long 1066047540 + .long 1047538090 + .long 1066018206 + .long 1048102997 + .long 1065987864 + .long 1048620988 + .long 1065956527 + .long 1048901483 + .long 1065924204 + .long 1049180953 + .long 1065890909 + .long 1049459367 + .long 1065856651 + .long 1049736696 + .long 1065821444 + .long 1050012910 + .long 1065785299 + .long 1050287979 + .long 1065748229 + .long 1050561876 + .long 1065710248 + .long 1050834572 + .long 1065671368 + .long 1051106040 + .long 1065631602 + .long 1051376250 + .long 1065590966 + .long 1051645178 + .long 1065549471 + .long 1051912796 + .long 1065507134 + .long 1052179077 + .long 1065463968 + .long 1052443997 + .long 1065419987 + .long 1052707530 + .long 1065375208 + .long 1052969651 + .long 1065306072 + .long 1053230337 + .long 1065213407 + .long 1053489563 + .long 1065119237 + .long 1053747305 + .long 1065023591 + .long 1054003542 + .long 1064926502 + .long 1054258251 + .long 1064828002 + .long 1054511410 + .long 1064728124 + .long 1054762998 + .long 1064626900 + .long 1055012994 + .long 1064524364 + .long 1055261378 + .long 1064420548 + .long 1055508130 + .long 1064315487 + .long 1055753230 + .long 1064209214 + .long 1055996661 + .long 1064101763 + .long 1056238405 + .long 1063993169 + .long 1056478442 + .long 1063883465 + .long 1056716757 + .long 1063772687 + .long 1056953333 + .long 1063660869 + .long 1057076381 + .long 1063548046 + .long 1057192906 + .long 1063434253 + .long 1057308539 + .long 1063319525 + .long 1057423272 + .long 1063203897 + .long 1057537098 + .long 1063087405 + .long 1057650010 + .long 1062970083 + .long 1057762003 + .long 1062851966 + .long 1057873070 + .long 1062733091 + .long 1057983206 + .long 1062613492 + .long 1058092404 + .long 1062493204 + .long 1058200660 + .long 1062372263 + .long 1058307969 + .long 1062250703 + .long 1058414326 + .long 1062128561 + .long 1058519726 + .long 1062005869 + .long 1058624166 + .long 1061882664 + .long 1058727642 + .long 1061758980 + .long 1058830149 + .long 1061634851 + .long 1058931685 + .long 1061510312 + .long 1059032247 + .long 1061385397 + .long 1059131831 + .long 1061260139 + .long 1059230436 + .long 1061134574 + .long 1059328058 + .long 1061008734 + .long 1059424697 + .long 1060882652 + .long 1059520349 + .long 1060756362 + .long 1059615014 + .long 1060629897 + .long 1059708691 + .long 1060503288 + .long 1059801378 + .long 1060376569 + .long 1059893075 + .long 1060249771 + .long 1059983780 + .long 1060122926 + .long 1060073495 + .long 1059996065 + .long 1060162219 + .long 1059869219 + .long 1060249952 + .long 1059742419 + .long 1060336695 + .long 1059615695 + .long 1060422447 + .long 1059489076 + .long 1060507212 + .long 1059362593 + .long 1060590988 + .long 1059236275 + .long 1060673779 + .long 1059110150 + .long 1060755585 + .long 1058984247 + .long 1060836408 + .long 1058858593 + .long 1060916251 + .long 1058733216 + .long 1060995116 + .long 1058608143 + .long 1061073004 + .long 1058483401 + .long 1061149920 + .long 1058359015 + .long 1061225865 + .long 1058235012 + .long 1061300843 + .long 1058111417 + .long 1061374857 + .long 1057988254 + .long 1061447911 + .long 1057865548 + .long 1061520007 + .long 1057743323 + .long 1061591151 + .long 1057621602 + .long 1061661346 + .long 1057500407 + .long 1061730597 + .long 1057379761 + .long 1061798907 + .long 1057259686 + .long 1061866281 + .long 1057140203 + .long 1061932724 + .long 1057021334 + .long 1061998241 + .long 1056841587 + .long 1062062836 + .long 1056606421 + .long 1062126516 + .long 1056372599 + .long 1062189285 + .long 1056140160 + .long 1062251149 + .long 1055909139 + .long 1062312113 + .long 1055679573 + .long 1062372184 + .long 1055451496 + .long 1062431366 + .long 1055224941 + .long 1062489667 + .long 1054999940 + .long 1062547091 + .long 1054776524 + .long 1062603646 + .long 1054554724 + .long 1062659338 + .long 1054334570 + .long 1062714173 + .long 1054116088 + .long 1062768158 + .long 1053899307 + .long 1062821300 + .long 1053684252 + .long 1062873605 + .long 1053470948 + .long 1062925080 + .long 1053259419 + .long 1062975732 + .long 1053049689 + .long 1063025569 + .long 1052841779 + .long 1063074597 + .long 1052635709 + .long 1063122824 + .long 1052431501 + .long 1063170257 + .long 1052229173 + .long 1063216903 + .long 1052028742 + .long 1063262770 + .long 1051830227 + .long 1063307865 + .long 1051633642 + .long 1063352196 + .long 1051439002 + .long 1063395771 + .long 1051246323 + .long 1063438597 + .long 1051055616 + .long 1063480681 + .long 1050866894 + .long 1063522033 + .long 1050680168 + .long 1063562659 + .long 1050495449 + .long 1063602567 + .long 1050312745 + .long 1063641766 + .long 1050132066 + .long 1063680262 + .long 1049953419 + .long 1063718065 + .long 1049776810 + .long 1063755182 + .long 1049602245 + .long 1063791622 + .long 1049429731 + .long 1063827391 + .long 1049259269 + .long 1063862498 + .long 1049090865 + .long 1063896952 + .long 1048924520 + .long 1063930760 + .long 1048760237 + .long 1063963930 + .long 1048598016 + .long 1063996470 + .long 1048299714 + .long 1064028389 + .long 1047983520 + .long 1064059695 + .long 1047671448 + .long 1064090395 + .long 1047363493 + .long 1064120497 + .long 1047059649 + .long 1064150010 + .long 1046759911 + .long 1064178942 + .long 1046464270 + .long 1064207300 + .long 1046172715 + .long 1064235093 + .long 1045885238 + .long 1064262328 + .long 1045601825 + .long 1064289013 + .long 1045322463 + .long 1064315157 + .long 1045047137 + .long 1064340767 + .long 1044775833 + .long 1064365851 + .long 1044508533 + .long 1064390417 + .long 1044245220 + .long 1064414473 + .long 1043985874 + .long 1064438026 + .long 1043730475 + .long 1064461084 + .long 1043479003 + .long 1064483654 + .long 1043231435 + .long 1064505745 + .long 1042987748 + .long 1064527364 + .long 1042747919 + .long 1064548517 + .long 1042511923 + .long 1064569214 + .long 1042279734 + .long 1064589461 + .long 1042051325 + .long 1064609266 + .long 1041826670 + .long 1064628635 + .long 1041605741 + .long 1064647576 + .long 1041388508 + .long 1064666097 + .long 1041174943 + .long 1064684204 + .long 1040965014 + .long 1064701905 + .long 1040758692 + .long 1064719206 + .long 1040555945 + .long 1064736115 + .long 1040356742 + .long 1064752638 + .long 1040134704 + .long 1064768783 + .long 1039750273 + .long 1064784555 + .long 1039372729 + .long 1064799962 + .long 1039002005 + .long 1064815010 + .long 1038638032 + .long 1064829706 + .long 1038280741 + .long 1064844056 + .long 1037930060 + .long 1064858067 + .long 1037585918 + .long 1064871745 + .long 1037248243 + .long 1064885096 + .long 1036916963 + .long 1064898128 + .long 1036592005 + .long 1064910844 + .long 1036273295 + .long 1064923253 + .long 1035960758 + .long 1064935359 + .long 1035654320 + .long 1064947169 + .long 1035353906 + .long 1064958689 + .long 1035059441 + .long 1064969924 + .long 1034770849 + .long 1064980879 + .long 1034488054 + .long 1064991562 + .long 1034210980 + .long 1065001977 + .long 1033939550 + .long 1065012129 + .long 1033673689 + .long 1065022024 + .long 1033413319 + .long 1065031668 + .long 1033158365 + .long 1065041065 + .long 1032908749 + .long 1065050222 + .long 1032664395 + .long 1065059142 + .long 1032425226 + .long 1065067831 + .long 1032191167 + .long 1065076294 + .long 1031962141 + .long 1065084535 + .long 1031677359 + .long 1065092561 + .long 1031238982 + .long 1065100374 + .long 1030810216 + .long 1065107981 + .long 1030390909 + .long 1065115385 + .long 1029980912 + .long 1065122591 + .long 1029580074 + .long 1065129604 + .long 1029188248 + .long 1065136427 + .long 1028805285 + .long 1065143066 + .long 1028431037 + .long 1065149524 + .long 1028065358 + .long 1065155805 + .long 1027708103 + .long 1065161914 + .long 1027359126 + .long 1065167855 + .long 1027018284 + .long 1065173631 + .long 1026685435 + .long 1065179247 + .long 1026360436 + .long 1065184706 + .long 1026043148 + .long 1065190011 + .long 1025733430 + .long 1065195168 + .long 1025431145 + .long 1065200178 + .long 1025136155 + .long 1065205046 + .long 1024848326 + .long 1065209776 + .long 1024567521 + .long 1065214370 + .long 1024293609 + .long 1065218831 + .long 1024026458 + .long 1065223165 + .long 1023765936 + .long 1065227372 + .long 1023511915 + .long 1065231457 + .long 1023118357 + .long 1065235422 + .long 1022635554 + .long 1065239272 + .long 1022164995 + .long 1065243007 + .long 1021706432 + .long 1065246633 + .long 1021259623 + .long 1065250150 + .long 1020824325 + .long 1065253563 + .long 1020400301 + .long 1065256874 + .long 1019987316 + .long 1065260085 + .long 1019585139 + .long 1065263199 + .long 1019193540 + .long 1065266219 + .long 1018812294 + .long 1065269146 + .long 1018441179 + .long 1065271985 + .long 1018079974 + .long 1065274737 + .long 1017728463 + .long 1065277404 + .long 1017386434 + .long 1065279988 + .long 1017053676 + .long 1065282493 + .long 1016729983 + .long 1065284919 + .long 1016415150 + .long 1065287270 + .long 1016108977 + .long 1065289547 + .long 1015811266 + .long 1065291752 + .long 1015521823 + .long 1065293888 + .long 1015240458 + .long 1065295955 + .long 1014912394 + .long 1065297958 + .long 1014380849 + .long 1065299896 + .long 1013864347 + .long 1065301772 + .long 1013362533 + .long 1065303587 + .long 1012875053 + .long 1065305344 + .long 1012401564 + .long 1065307044 + .long 1011941727 + .long 1065308689 + .long 1011495207 + .long 1065310280 + .long 1011061679 + .long 1065311819 + .long 1010640821 + .long 1065313307 + .long 1010232319 + .long 1065314746 + .long 1009835863 + .long 1065316137 + .long 1009451150 + .long 1065317482 + .long 1009077883 + .long 1065318783 + .long 1008715771 + .long 1065320039 + .long 1008364526 + .long 1065321254 + .long 1008023869 + .long 1065322427 + .long 1007693526 + .long 1065323561 + .long 1007373227 + .long 1065324656 + .long 1007062709 + .long 1065325714 + .long 1006761713 + .long 1065326736 + .long 1006307013 + .long 1065327723 + .long 1005741605 + .long 1065328676 + .long 1005193757 + .long 1065329596 + .long 1004662995 + .long 1065330484 + .long 1004148854 + .long 1065331341 + .long 1003650882 + .long 1065332168 + .long 1003168634 + .long 1065332966 + .long 1002701676 + .long 1065333736 + .long 1002249583 + .long 1065334479 + .long 1001811942 + .long 1065335196 + .long 1001388347 + .long 1065335887 + .long 1000978401 + .long 1065336554 + .long 1000581718 + .long 1065337197 + .long 1000197920 + .long 1065337817 + .long 999826638 + .long 1065338414 + .long 999467511 + .long 1065338990 + .long 999120188 + .long 1065339545 + .long 998784326 + .long 1065340080 + .long 998459590 + .long 1065340596 + .long 998046952 + .long 1065341093 + .long 997440036 + .long 1065341571 + .long 996853459 + .long 1065342032 + .long 996286614 + .long 1065342476 + .long 995738909 + .long 1065342903 + .long 995209770 + .long 1065343315 + .long 994698633 + .long 1065343711 + .long 994204952 + .long 1065344092 + .long 993728194 + .long 1065344460 + .long 993267840 + .long 1065344813 + .long 992823384 + .long 1065345153 + .long 992394334 + .long 1065345480 + .long 991980210 + .long 1065345795 + .long 991580547 + .long 1065346097 + .long 991194889 + .long 1065346388 + .long 990822796 + .long 1065346668 + .long 990463837 + .long 1065346938 + .long 990117594 + .long 1065347197 + .long 989711580 + .long 1065347445 + .long 989067545 + .long 1065347685 + .long 988446572 + .long 1065347915 + .long 987847912 + .long 1065348135 + .long 987270840 + .long 1065348348 + .long 986714651 + .long 1065348552 + .long 986178660 + .long 1065348748 + .long 985662200 + .long 1065348936 + .long 985164626 + .long 1065349117 + .long 984685310 + .long 1065349290 + .long 984223642 + .long 1065349457 + .long 983779031 + .long 1065349617 + .long 983350903 + .long 1065349770 + .long 982938700 + .long 1065349918 + .long 982541883 + .long 1065350059 + .long 982159927 + .long 1065350195 + .long 981792323 + .long 1065350325 + .long 981410023 + .long 1065350450 + .long 980729298 + .long 1065350570 + .long 980074409 + .long 1065350685 + .long 979444458 + .long 1065350795 + .long 978838575 + .long 1065350901 + .long 978255916 + .long 1065351002 + .long 977695663 + .long 1065351099 + .long 977157026 + .long 1065351193 + .long 976639239 + .long 1065351282 + .long 976141558 + .long 1065351367 + .long 975663265 + .long 1065351449 + .long 975203666 + .long 1065351528 + .long 974762086 + .long 1065351603 + .long 974337876 + .long 1065351675 + .long 973930403 + .long 1065351744 + .long 973539060 + .long 1065351810 + .long 973163256 + .long 1065351873 + .long 972526314 + .long 1065351934 + .long 971833480 + .long 1065351992 + .long 971168417 + .long 1065352047 + .long 970530093 + .long 1065352101 + .long 969917514 + .long 1065352151 + .long 969329717 + .long 1065352200 + .long 968765773 + .long 1065352246 + .long 968224785 + .long 1065352291 + .long 967705884 + .long 1065352334 + .long 967208234 + .long 1065352374 + .long 966731026 + .long 1065352413 + .long 966273480 + .long 1065352450 + .long 965834842 + .long 1065352486 + .long 965414386 + .long 1065352520 + .long 965011410 + .long 1065352552 + .long 964560555 + .long 1065352583 + .long 963820510 + .long 1065352613 + .long 963111507 + .long 1065352641 + .long 962432331 + .long 1065352668 + .long 961781812 + .long 1065352694 + .long 961158821 + .long 1065352719 + .long 960562270 + .long 1065352743 + .long 959991111 + .long 1065352765 + .long 959444333 + .long 1065352787 + .long 958920964 + .long 1065352807 + .long 958420065 + .long 1065352827 + .long 957940734 + .long 1065352845 + .long 957482101 + .long 1065352863 + .long 957043329 + .long 1065352880 + .long 956623612 + .long 1065352896 + .long 956143037 + .long 1065352912 + .long 955375226 + .long 1065352927 + .long 954641044 + .long 1065352941 + .long 953939107 + .long 1065352954 + .long 953268086 + .long 1065352967 + .long 952626702 + .long 1065352979 + .long 952013724 + .long 1065352991 + .long 951427969 + .long 1065353002 + .long 950868302 + .long 1065353012 + .long 950333628 + .long 1065353023 + .long 949822896 + .long 1065353032 + .long 949335099 + .long 1065353041 + .long 948869264 + .long 1065353050 + .long 948424462 + .long 1065353058 + .long 947999796 + .long 1065353066 + .long 947276109 + .long 1065353074 + .long 946502234 + .long 1065353081 + .long 945763678 + .long 1065353088 + .long 945058918 + .long 1065353094 + .long 944386495 + .long 1065353100 + .long 943745006 + .long 1065353106 + .long 943133108 + .long 1065353112 + .long 942549510 + .long 1065353117 + .long 941992974 + .long 1065353122 + .long 941462313 + .long 1065353127 + .long 940956390 + .long 1065353131 + .long 940474113 + .long 1065353136 + .long 940014434 + .long 1065353140 + .long 939576353 + .long 1065353144 + .long 938793716 + .long 1065353148 + .long 937998252 + .long 1065353151 + .long 937240450 + .long 1065353154 + .long 936518620 + .long 1065353158 + .long 935831142 + .long 1065353161 + .long 935176466 + .long 1065353164 + .long 934553105 + .long 1065353166 + .long 933959638 + .long 1065353169 + .long 933394703 + .long 1065353171 + .long 932856997 + .long 1065353174 + .long 932345273 + .long 1065353176 + .long 931858338 + .long 1065353178 + .long 931395049 + .long 1065353180 + .long 930773143 + .long 1065353182 + .long 929934696 + .long 1065353184 + .long 929137272 + .long 1065353186 + .long 928378959 + .long 1065353187 + .long 927657932 + .long 1065353189 + .long 926972445 + .long 1065353190 + .long 926320828 + .long 1065353192 + .long 925701488 + .long 1065353193 + .long 925112900 + .long 1065353194 + .long 924553608 + .long 1065353195 + .long 924022223 + .long 1065353196 + .long 923517415 + .long 1065353198 + .long 923037917 + .long 1065353199 + .long 922418156 + .long 1065353199 + .long 921553243 + .long 1065353200 + .long 920732007 + .long 1065353201 + .long 919952342 + .long 1065353202 + .long 919212238 + .long 1065353203 + .long 918509777 + .long 1065353204 + .long 917843129 + .long 1065353204 + .long 917210549 + .long 1065353205 + .long 916610371 + .long 1065353205 + .long 916041009 + .long 1065353206 + .long 915500949 + .long 1065353207 + .long 914988747 + .long 1065353207 + .long 914503029 + .long 1065353208 + .long 913726696 + .long 1065353208 + .long 912853452 + .long 1065353209 + .long 912025674 + .long 1065353209 + .long 911241096 + .long 1065353209 + .long 910497555 + .long 1065353210 + .long 909792996 + .long 1065353210 + .long 909125460 + .long 1065353210 + .long 908493081 + .long 1065353211 + .long 907894083 + .long 1065353211 + .long 907326776 + .long 1065353211 + .long 906789553 + .long 1065353212 + .long 906280881 + .long 1065353212 + .long 905628944 + .long 1065353212 + .long 904717211 + .long 1065353212 + .long 903854262 + .long 1065353213 + .long 903037590 + .long 1065353213 + .long 902264812 + .long 1065353213 + .long 901533660 + .long 1065353213 + .long 900841980 + .long 1065353213 + .long 900187723 + .long 1065353213 + .long 899568945 + .long 1065353214 + .long 898983793 + .long 1065353214 + .long 898430512 + .long 1065353214 + .long 897907432 + .long 1065353214 + .long 897244875 + .long 1065353214 + .long 896310159 + .long 1065353214 + .long 895426799 + .long 1065353214 + .long 894592079 + .long 1065353214 + .long 893803420 + .long 1065353215 + .long 893058375 + .long 1065353215 + .long 892354620 + .long 1065353215 + .long 891689952 + .long 1065353215 + .long 891062279 + .long 1065353215 + .long 890469616 + .long 1065353215 + .long 889910081 + .long 1065353215 + .long 889381890 + .long 1065353215 + .long 888574250 + .long 1065353215 + .long 887633259 + .long 1065353215 + .long 886745316 + .long 1065353215 + .long 885907536 + .long 1065353215 + .long 885117184 + .long 1065353215 + .long 884371669 + .long 1065353215 + .long 883668537 + .long 1065353215 + .long 883005462 + .long 1065353215 + .long 882380241 + .long 1065353215 + .long 881790787 + .long 1065353215 + .long 881235123 + .long 1065353216 + .long 880618920 + .long 1065353216 + .long 879631730 + .long 0 + .long 1007709690 + .long 1016097720 + .long 1020828656 + .long 1024484018 + .long 1026847466 + .long 1029209471 + .long 1031569748 + .long 1032863396 + .long 1034041375 + .long 1035218061 + .long 1036393311 + .long 1037566985 + .long 1038738940 + .long 1039909037 + .long 1040632264 + .long 1041215245 + .long 1041797089 + .long 1042377726 + .long 1042957089 + .long 1043535110 + .long 1044111721 + .long 1044686856 + .long 1045260449 + .long 1045832434 + .long 1046402745 + .long 1046971319 + .long 1047538090 + .long 1048102997 + .long 1048620988 + .long 1048901483 + .long 1049180953 + .long 1049459367 + .long 1049736696 + .long 1050012910 + .long 1050287979 + .long 1050561876 + .long 1050834572 + .long 1051106040 + .long 1051376250 + .long 1051645178 + .long 1051912796 + .long 1052179077 + .long 1052443997 + .long 1052707530 + .long 1052969651 + .long 1053230337 + .long 1053489563 + .long 1053747305 + .long 1054003542 + .long 1054258251 + .long 1054511410 + .long 1054762998 + .long 1055012994 + .long 1055261378 + .long 1055508130 + .long 1055753230 + .long 1055996661 + .long 1056238405 + .long 1056478442 + .long 1056716757 + .long 1056953333 + .long 1057076381 + .long 1057192906 + .long 1057308539 + .long 1057423272 + .long 1057537098 + .long 1057650010 + .long 1057762003 + .long 1057873070 + .long 1057983206 + .long 1058092404 + .long 1058200660 + .long 1058307969 + .long 1058414326 + .long 1058519726 + .long 1058624166 + .long 1058727642 + .long 1058830149 + .long 1058931685 + .long 1059032247 + .long 1059131831 + .long 1059230436 + .long 1059328058 + .long 1059424697 + .long 1059520349 + .long 1059615014 + .long 1059708691 + .long 1059801378 + .long 1059893075 + .long 1059983780 + .long 1060073495 + .long 1060162219 + .long 1060249952 + .long 1060336695 + .long 1060422447 + .long 1060507212 + .long 1060590988 + .long 1060673779 + .long 1060755585 + .long 1060836408 + .long 1060916251 + .long 1060995116 + .long 1061073004 + .long 1061149920 + .long 1061225865 + .long 1061300843 + .long 1061374857 + .long 1061447911 + .long 1061520007 + .long 1061591151 + .long 1061661346 + .long 1061730597 + .long 1061798907 + .long 1061866281 + .long 1061932724 + .long 1061998241 + .long 1062062836 + .long 1062126516 + .long 1062189285 + .long 1062251149 + .long 1062312113 + .long 1062372184 + .long 1062431366 + .long 1062489667 + .long 1062547091 + .long 1062603646 + .long 1062659338 + .long 1062714173 + .long 1062768158 + .long 1062821300 + .long 1062873605 + .long 1062925080 + .long 1062975732 + .long 1063025569 + .long 1063074597 + .long 1063122824 + .long 1063170257 + .long 1063216903 + .long 1063262770 + .long 1063307865 + .long 1063352196 + .long 1063395771 + .long 1063438597 + .long 1063480681 + .long 1063522033 + .long 1063562659 + .long 1063602567 + .long 1063641766 + .long 1063680262 + .long 1063718065 + .long 1063755182 + .long 1063791622 + .long 1063827391 + .long 1063862498 + .long 1063896952 + .long 1063930760 + .long 1063963930 + .long 1063996470 + .long 1064028389 + .long 1064059695 + .long 1064090395 + .long 1064120497 + .long 1064150010 + .long 1064178942 + .long 1064207300 + .long 1064235093 + .long 1064262328 + .long 1064289013 + .long 1064315157 + .long 1064340767 + .long 1064365851 + .long 1064390417 + .long 1064414473 + .long 1064438026 + .long 1064461084 + .long 1064483654 + .long 1064505745 + .long 1064527364 + .long 1064548517 + .long 1064569214 + .long 1064589461 + .long 1064609266 + .long 1064628635 + .long 1064647576 + .long 1064666097 + .long 1064684204 + .long 1064701905 + .long 1064719206 + .long 1064736115 + .long 1064752638 + .long 1064768783 + .long 1064784555 + .long 1064799962 + .long 1064815010 + .long 1064829706 + .long 1064844056 + .long 1064858067 + .long 1064871745 + .long 1064885096 + .long 1064898128 + .long 1064910844 + .long 1064923253 + .long 1064935359 + .long 1064947169 + .long 1064958689 + .long 1064969924 + .long 1064980879 + .long 1064991562 + .long 1065001977 + .long 1065012129 + .long 1065022024 + .long 1065031668 + .long 1065041065 + .long 1065050222 + .long 1065059142 + .long 1065067831 + .long 1065076294 + .long 1065084535 + .long 1065092561 + .long 1065100374 + .long 1065107981 + .long 1065115385 + .long 1065122591 + .long 1065129604 + .long 1065136427 + .long 1065143066 + .long 1065149524 + .long 1065155805 + .long 1065161914 + .long 1065167855 + .long 1065173631 + .long 1065179247 + .long 1065184706 + .long 1065190011 + .long 1065195168 + .long 1065200178 + .long 1065205046 + .long 1065209776 + .long 1065214370 + .long 1065218831 + .long 1065223165 + .long 1065227372 + .long 1065231457 + .long 1065235422 + .long 1065239272 + .long 1065243007 + .long 1065246633 + .long 1065250150 + .long 1065253563 + .long 1065256874 + .long 1065260085 + .long 1065263199 + .long 1065266219 + .long 1065269146 + .long 1065271985 + .long 1065274737 + .long 1065277404 + .long 1065279988 + .long 1065282493 + .long 1065284919 + .long 1065287270 + .long 1065289547 + .long 1065291752 + .long 1065293888 + .long 1065295955 + .long 1065297958 + .long 1065299896 + .long 1065301772 + .long 1065303587 + .long 1065305344 + .long 1065307044 + .long 1065308689 + .long 1065310280 + .long 1065311819 + .long 1065313307 + .long 1065314746 + .long 1065316137 + .long 1065317482 + .long 1065318783 + .long 1065320039 + .long 1065321254 + .long 1065322427 + .long 1065323561 + .long 1065324656 + .long 1065325714 + .long 1065326736 + .long 1065327723 + .long 1065328676 + .long 1065329596 + .long 1065330484 + .long 1065331341 + .long 1065332168 + .long 1065332966 + .long 1065333736 + .long 1065334479 + .long 1065335196 + .long 1065335887 + .long 1065336554 + .long 1065337197 + .long 1065337817 + .long 1065338414 + .long 1065338990 + .long 1065339545 + .long 1065340080 + .long 1065340596 + .long 1065341093 + .long 1065341571 + .long 1065342032 + .long 1065342476 + .long 1065342903 + .long 1065343315 + .long 1065343711 + .long 1065344092 + .long 1065344460 + .long 1065344813 + .long 1065345153 + .long 1065345480 + .long 1065345795 + .long 1065346097 + .long 1065346388 + .long 1065346668 + .long 1065346938 + .long 1065347197 + .long 1065347445 + .long 1065347685 + .long 1065347915 + .long 1065348135 + .long 1065348348 + .long 1065348552 + .long 1065348748 + .long 1065348936 + .long 1065349117 + .long 1065349290 + .long 1065349457 + .long 1065349617 + .long 1065349770 + .long 1065349918 + .long 1065350059 + .long 1065350195 + .long 1065350325 + .long 1065350450 + .long 1065350570 + .long 1065350685 + .long 1065350795 + .long 1065350901 + .long 1065351002 + .long 1065351099 + .long 1065351193 + .long 1065351282 + .long 1065351367 + .long 1065351449 + .long 1065351528 + .long 1065351603 + .long 1065351675 + .long 1065351744 + .long 1065351810 + .long 1065351873 + .long 1065351934 + .long 1065351992 + .long 1065352047 + .long 1065352101 + .long 1065352151 + .long 1065352200 + .long 1065352246 + .long 1065352291 + .long 1065352334 + .long 1065352374 + .long 1065352413 + .long 1065352450 + .long 1065352486 + .long 1065352520 + .long 1065352552 + .long 1065352583 + .long 1065352613 + .long 1065352641 + .long 1065352668 + .long 1065352694 + .long 1065352719 + .long 1065352743 + .long 1065352765 + .long 1065352787 + .long 1065352807 + .long 1065352827 + .long 1065352845 + .long 1065352863 + .long 1065352880 + .long 1065352896 + .long 1065352912 + .long 1065352927 + .long 1065352941 + .long 1065352954 + .long 1065352967 + .long 1065352979 + .long 1065352991 + .long 1065353002 + .long 1065353012 + .long 1065353023 + .long 1065353032 + .long 1065353041 + .long 1065353050 + .long 1065353058 + .long 1065353066 + .long 1065353074 + .long 1065353081 + .long 1065353088 + .long 1065353094 + .long 1065353100 + .long 1065353106 + .long 1065353112 + .long 1065353117 + .long 1065353122 + .long 1065353127 + .long 1065353131 + .long 1065353136 + .long 1065353140 + .long 1065353144 + .long 1065353148 + .long 1065353151 + .long 1065353154 + .long 1065353158 + .long 1065353161 + .long 1065353164 + .long 1065353166 + .long 1065353169 + .long 1065353171 + .long 1065353174 + .long 1065353176 + .long 1065353178 + .long 1065353180 + .long 1065353182 + .long 1065353184 + .long 1065353186 + .long 1065353187 + .long 1065353189 + .long 1065353190 + .long 1065353192 + .long 1065353193 + .long 1065353194 + .long 1065353195 + .long 1065353196 + .long 1065353198 + .long 1065353199 + .long 1065353199 + .long 1065353200 + .long 1065353201 + .long 1065353202 + .long 1065353203 + .long 1065353204 + .long 1065353204 + .long 1065353205 + .long 1065353205 + .long 1065353206 + .long 1065353207 + .long 1065353207 + .long 1065353208 + .long 1065353208 + .long 1065353209 + .long 1065353209 + .long 1065353209 + .long 1065353210 + .long 1065353210 + .long 1065353210 + .long 1065353211 + .long 1065353211 + .long 1065353211 + .long 1065353212 + .long 1065353212 + .long 1065353212 + .long 1065353212 + .long 1065353213 + .long 1065353213 + .long 1065353213 + .long 1065353213 + .long 1065353213 + .long 1065353213 + .long 1065353214 + .long 1065353214 + .long 1065353214 + .long 1065353214 + .long 1065353214 + .long 1065353214 + .long 1065353214 + .long 1065353214 + .long 1065353215 + .long 1065353215 + .long 1065353215 + .long 1065353215 + .long 1065353215 + .long 1065353215 + .long 1065353215 + .long 1065353215 + .long 1065353215 + .long 1065353215 + .long 1065353215 + .long 1065353215 + .long 1065353215 + .long 1065353215 + .long 1065353215 + .long 1065353215 + .long 1065353215 + .long 1065353215 + .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 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 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 8191 + .long 8191 + .long 8191 + .long 8191 + .long 8191 + .long 8191 + .long 8191 + .long 8191 + .long 8191 + .long 8191 + .long 8191 + .long 8191 + .long 8191 + .long 8191 + .long 8191 + .long 8191 + .long 2147483648 + .long 2147483648 + .long 2147483648 + .long 2147483648 + .long 2147483648 + .long 2147483648 + .long 2147483648 + .long 2147483648 + .long 2147483648 + .long 2147483648 + .long 2147483648 + .long 2147483648 + .long 2147483648 + .long 2147483648 + .long 2147483648 + .long 2147483648 + .long 1081835520 + .long 1081835520 + .long 1081835520 + .long 1081835520 + .long 1081835520 + .long 1081835520 + .long 1081835520 + .long 1081835520 + .long 1081835520 + .long 1081835520 + .long 1081835520 + .long 1081835520 + .long 1081835520 + .long 1081835520 + .long 1081835520 + .long 1081835520 + .long 1066430139 + .long 1066430139 + .long 1066430139 + .long 1066430139 + .long 1066430139 + .long 1066430139 + .long 1066430139 + .long 1066430139 + .long 1066430139 + .long 1066430139 + .long 1066430139 + .long 1066430139 + .long 1066430139 + .long 1066430139 + .long 1066430139 + .long 1066430139 + .long 1199570944 + .long 1199570944 + .long 1199570944 + .long 1199570944 + .long 1199570944 + .long 1199570944 + .long 1199570944 + .long 1199570944 + .long 1199570944 + .long 1199570944 + .long 1199570944 + .long 1199570944 + .long 1199570944 + .long 1199570944 + .long 1199570944 + .long 1199570944 + .long 1021313024 + .long 1021313024 + .long 1021313024 + .long 1021313024 + .long 1021313024 + .long 1021313024 + .long 1021313024 + .long 1021313024 + .long 1021313024 + .long 1021313024 + .long 1021313024 + .long 1021313024 + .long 1021313024 + .long 1021313024 + .long 1021313024 + .long 1021313024 + .long 796917760 + .long 796917760 + .long 796917760 + .long 796917760 + .long 796917760 + .long 796917760 + .long 796917760 + .long 796917760 + .long 796917760 + .long 796917760 + .long 796917760 + .long 796917760 + .long 796917760 + .long 796917760 + .long 796917760 + .long 796917760 + .long 1059760819 + .long 1059760819 + .long 1059760819 + .long 1059760819 + .long 1059760819 + .long 1059760819 + .long 1059760819 + .long 1059760819 + .long 1059760819 + .long 1059760819 + .long 1059760819 + .long 1059760819 + .long 1059760819 + .long 1059760819 + .long 1059760819 + .long 1059760819 + .long 3212836869 + .long 3212836869 + .long 3212836869 + .long 3212836869 + .long 3212836869 + .long 3212836869 + .long 3212836869 + .long 3212836869 + .long 3212836869 + .long 3212836869 + .long 3212836869 + .long 3212836869 + .long 3212836869 + .long 3212836869 + .long 3212836869 + .long 3212836869 + .long 3198855902 + .long 3198855902 + .long 3198855902 + .long 3198855902 + .long 3198855902 + .long 3198855902 + .long 3198855902 + .long 3198855902 + .long 3198855902 + .long 3198855902 + .long 3198855902 + .long 3198855902 + .long 3198855902 + .long 3198855902 + .long 3198855902 + .long 3198855902 + .long 3212836874 + .long 3212836874 + .long 3212836874 + .long 3212836874 + .long 3212836874 + .long 3212836874 + .long 3212836874 + .long 3212836874 + .long 3212836874 + .long 3212836874 + .long 3212836874 + .long 3212836874 + .long 3212836874 + .long 3212836874 + .long 3212836874 + .long 3212836874 + .long 1096125530 + .long 1096125530 + .long 1096125530 + .long 1096125530 + .long 1096125530 + .long 1096125530 + .long 1096125530 + .long 1096125530 + .long 1096125530 + .long 1096125530 + .long 1096125530 + .long 1096125530 + .long 1096125530 + .long 1096125530 + .long 1096125530 + .long 1096125530 + .long 3644045571 + .long 1072758523 + .long 3644045571 + .long 1072758523 + .long 3644045571 + .long 1072758523 + .long 3644045571 + .long 1072758523 + .long 3644045571 + .long 1072758523 + .long 3644045571 + .long 1072758523 + .long 3644045571 + .long 1072758523 + .long 3644045571 + .long 1072758523 + .long 270426983 + .long 3217467720 + .long 270426983 + .long 3217467720 + .long 270426983 + .long 3217467720 + .long 270426983 + .long 3217467720 + .long 270426983 + .long 3217467720 + .long 270426983 + .long 3217467720 + .long 270426983 + .long 3217467720 + .long 270426983 + .long 3217467720 + .long 3462409323 + .long 1067688756 + .long 3462409323 + .long 1067688756 + .long 3462409323 + .long 1067688756 + .long 3462409323 + .long 1067688756 + .long 3462409323 + .long 1067688756 + .long 3462409323 + .long 1067688756 + .long 3462409323 + .long 1067688756 + .long 3462409323 + .long 1067688756 + .long 3926688220 + .long 3212415753 + .long 3926688220 + .long 3212415753 + .long 3926688220 + .long 3212415753 + .long 3926688220 + .long 3212415753 + .long 3926688220 + .long 3212415753 + .long 3926688220 + .long 3212415753 + .long 3926688220 + .long 3212415753 + .long 3926688220 + .long 3212415753 + .long 1245766546 + .long 1061645814 + .long 1245766546 + .long 1061645814 + .long 1245766546 + .long 1061645814 + .long 1245766546 + .long 1061645814 + .long 1245766546 + .long 1061645814 + .long 1245766546 + .long 1061645814 + .long 1245766546 + .long 1061645814 + .long 1245766546 + .long 1061645814 + .long 3109064414 + .long 3205124630 + .long 3109064414 + .long 3205124630 + .long 3109064414 + .long 3205124630 + .long 3109064414 + .long 3205124630 + .long 3109064414 + .long 3205124630 + .long 3109064414 + .long 3205124630 + .long 3109064414 + .long 3205124630 + .long 3109064414 + .long 3205124630 + .long 2512971936 + .long 1051031883 + .long 2512971936 + .long 1051031883 + .long 2512971936 + .long 1051031883 + .long 2512971936 + .long 1051031883 + .long 2512971936 + .long 1051031883 + .long 2512971936 + .long 1051031883 + .long 2512971936 + .long 1051031883 + .long 2512971936 + .long 1051031883 + .long 3028677391 + .long 1049933504 + .long 3028677391 + .long 1049933504 + .long 3028677391 + .long 1049933504 + .long 3028677391 + .long 1049933504 + .long 3028677391 + .long 1049933504 + .long 3028677391 + .long 1049933504 + .long 3028677391 + .long 1049933504 + .long 3028677391 + .long 1049933504 + .long 3783197987 + .long 3194323052 + .long 3783197987 + .long 3194323052 + .long 3783197987 + .long 3194323052 + .long 3783197987 + .long 3194323052 + .long 3783197987 + .long 3194323052 + .long 3783197987 + .long 3194323052 + .long 3783197987 + .long 3194323052 + .long 3783197987 + .long 3194323052 + .long 74505031 + .long 1042748772 + .long 74505031 + .long 1042748772 + .long 74505031 + .long 1042748772 + .long 74505031 + .long 1042748772 + .long 74505031 + .long 1042748772 + .long 74505031 + .long 1042748772 + .long 74505031 + .long 1042748772 + .long 74505031 + .long 1042748772 + .long 1406668547 + .long 3185429286 + .long 1406668547 + .long 3185429286 + .long 1406668547 + .long 3185429286 + .long 1406668547 + .long 3185429286 + .long 1406668547 + .long 3185429286 + .long 1406668547 + .long 3185429286 + .long 1406668547 + .long 3185429286 + .long 1406668547 + .long 3185429286 + .long 3345142763 + .long 1032186591 + .long 3345142763 + .long 1032186591 + .long 3345142763 + .long 1032186591 + .long 3345142763 + .long 1032186591 + .long 3345142763 + .long 1032186591 + .long 3345142763 + .long 1032186591 + .long 3345142763 + .long 1032186591 + .long 3345142763 + .long 1032186591 + .long 678555889 + .long 3172755082 + .long 678555889 + .long 3172755082 + .long 678555889 + .long 3172755082 + .long 678555889 + .long 3172755082 + .long 678555889 + .long 3172755082 + .long 678555889 + .long 3172755082 + .long 678555889 + .long 3172755082 + .long 678555889 + .long 3172755082 + .long 1087852134 + .long 1087852134 + .long 1087852134 + .long 1087852134 + .long 1087852134 + .long 1087852134 + .long 1087852134 + .long 1087852134 + .long 1087852134 + .long 1087852134 + .long 1087852134 + .long 1087852134 + .long 1087852134 + .long 1087852134 + .long 1087852134 + .long 1087852134 + .long 1065874727 + .long 1065874727 + .long 1065874727 + .long 1065874727 + .long 1065874727 + .long 1065874727 + .long 1065874727 + .long 1065874727 + .long 1065874727 + .long 1065874727 + .long 1065874727 + .long 1065874727 + .long 1065874727 + .long 1065874727 + .long 1065874727 + .long 1065874727 + .long 3191107981 + .long 3191107981 + .long 3191107981 + .long 3191107981 + .long 3191107981 + .long 3191107981 + .long 3191107981 + .long 3191107981 + .long 3191107981 + .long 3191107981 + .long 3191107981 + .long 3191107981 + .long 3191107981 + .long 3191107981 + .long 3191107981 + .long 3191107981 + .long 1024942079 + .long 1024942079 + .long 1024942079 + .long 1024942079 + .long 1024942079 + .long 1024942079 + .long 1024942079 + .long 1024942079 + .long 1024942079 + .long 1024942079 + .long 1024942079 + .long 1024942079 + .long 1024942079 + .long 1024942079 + .long 1024942079 + .long 1024942079 + .long 3148844381 + .long 3148844381 + .long 3148844381 + .long 3148844381 + .long 3148844381 + .long 3148844381 + .long 3148844381 + .long 3148844381 + .long 3148844381 + .long 3148844381 + .long 3148844381 + .long 3148844381 + .long 3148844381 + .long 3148844381 + .long 3148844381 + .long 3148844381 + .long 972031746 + .long 972031746 + .long 972031746 + .long 972031746 + .long 972031746 + .long 972031746 + .long 972031746 + .long 972031746 + .long 972031746 + .long 972031746 + .long 972031746 + .long 972031746 + .long 972031746 + .long 972031746 + .long 972031746 + .long 972031746 + .long 3079608568 + .long 3079608568 + .long 3079608568 + .long 3079608568 + .long 3079608568 + .long 3079608568 + .long 3079608568 + .long 3079608568 + .long 3079608568 + .long 3079608568 + .long 3079608568 + .long 3079608568 + .long 3079608568 + .long 3079608568 + .long 3079608568 + .long 3079608568 + .type __svml_serf_data_internal,@object + .size __svml_serf_data_internal,8256 diff --git a/sysdeps/x86_64/fpu/multiarch/svml_s_erff4_core-sse2.S b/sysdeps/x86_64/fpu/multiarch/svml_s_erff4_core-sse2.S new file mode 100644 index 0000000000..651fd267a5 --- /dev/null +++ b/sysdeps/x86_64/fpu/multiarch/svml_s_erff4_core-sse2.S @@ -0,0 +1,20 @@ +/* SSE2 version of vectorized erff, 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 + . */ + +#define _ZGVbN4v_erff _ZGVbN4v_erff_sse2 +#include "../svml_s_erff4_core.S" diff --git a/sysdeps/x86_64/fpu/multiarch/svml_s_erff4_core.c b/sysdeps/x86_64/fpu/multiarch/svml_s_erff4_core.c new file mode 100644 index 0000000000..02286a68c6 --- /dev/null +++ b/sysdeps/x86_64/fpu/multiarch/svml_s_erff4_core.c @@ -0,0 +1,28 @@ +/* Multiple versions of vectorized erff, 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 + . */ + +#define SYMBOL_NAME _ZGVbN4v_erff +#include "ifunc-mathvec-sse4_1.h" + +libc_ifunc_redirected (REDIRECT_NAME, SYMBOL_NAME, IFUNC_SELECTOR ()); + +#ifdef SHARED +__hidden_ver1 (_ZGVbN4v_erff, __GI__ZGVbN4v_erff, + __redirect__ZGVbN4v_erff) + __attribute__ ((visibility ("hidden"))); +#endif diff --git a/sysdeps/x86_64/fpu/multiarch/svml_s_erff4_core_sse4.S b/sysdeps/x86_64/fpu/multiarch/svml_s_erff4_core_sse4.S new file mode 100644 index 0000000000..664cb259af --- /dev/null +++ b/sysdeps/x86_64/fpu/multiarch/svml_s_erff4_core_sse4.S @@ -0,0 +1,3439 @@ +/* Function erff 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: + * + * Basic formula is + * erf(x) ~ erf(x0) + + * + exp(-x0*x0)*D*(1+c0+T*P1(T)+D^2*P3(T)+D^4*p5) + * where D=x-x0, T=x0*D + * x0 is x rounded to a specified number of fractional bits (in this case 8), + * except that x0=0 for |x|<3.5/256.0 (using x0=0 for first 4 table entries) + * + * Data table packs both erf(x0)_high and a few bits of erf(x0)_low in one + * entry (in place of redundant exponent bits) + * + */ + +#include + + .text +ENTRY(_ZGVbN4v_erff_sse4) + lea -1006632960+__svml_serf_data_internal(%rip), %rax + movups 6080+__svml_serf_data_internal(%rip), %xmm4 + andps %xmm0, %xmm4 + +/* + * erf(x) rounds to 1.0 for x>_MaxThreshold (3.9375) + * can compute all results in the main path + */ + movaps %xmm4, %xmm5 + +/* save sign */ + pxor %xmm4, %xmm0 + minps 6336+__svml_serf_data_internal(%rip), %xmm5 + +/* + * vector gather: + * erf(x0), exp(-x0*x0)*2.0/sqrt(pi) + */ + movups 6464+__svml_serf_data_internal(%rip), %xmm3 + movaps %xmm3, %xmm6 + movups %xmm15, -24(%rsp) + addps %xmm5, %xmm6 + cfi_offset(32, -32) + movaps %xmm6, %xmm15 + pslld $3, %xmm6 + movups 6592+__svml_serf_data_internal(%rip), %xmm7 + subps %xmm3, %xmm15 + cmpltps %xmm5, %xmm7 + movd %xmm6, %edx + subps %xmm15, %xmm5 + andps %xmm5, %xmm7 + +/* D2 = Diff^2 */ + mulps %xmm7, %xmm7 + mulps %xmm5, %xmm15 + +/* NaN fixup */ + minps %xmm4, %xmm5 + +/* + * Start polynomial evaluation + * P1 + */ + mulps 6784+__svml_serf_data_internal(%rip), %xmm7 + pshufd $1, %xmm6, %xmm1 + subps %xmm15, %xmm7 + movd %xmm1, %ecx + pshufd $2, %xmm6, %xmm1 + pshufd $3, %xmm6, %xmm6 + movd %xmm1, %r8d + movd %xmm6, %r9d + movups -24(%rsp), %xmm15 + cfi_restore(32) + +/* + * branch-free + * (exp_h(x0) * Diff) * (poly + 1.0) + */ + mulps %xmm5, %xmm7 + movslq %edx, %rdx + addps %xmm7, %xmm5 + movslq %ecx, %rcx + movslq %r8d, %r8 + movslq %r9d, %r9 + movq (%rax,%rdx), %xmm3 + movq (%rax,%rcx), %xmm2 + movq (%rax,%r8), %xmm1 + movq (%rax,%r9), %xmm6 + unpcklps %xmm2, %xmm3 + unpcklps %xmm6, %xmm1 + movaps %xmm3, %xmm2 + shufps $238, %xmm1, %xmm3 + +/* Final result */ + mulps %xmm5, %xmm3 + movlhps %xmm1, %xmm2 + addps %xmm3, %xmm2 + +/* set sign */ + orps %xmm2, %xmm0 + ret + +END(_ZGVbN4v_erff_sse4) + + .section .rodata, "a" + .align 64 + +__svml_serf_data_internal: + .long 0 + .long 1066430139 + .long 1007709690 + .long 1066429561 + .long 1016097720 + .long 1066427828 + .long 1020828656 + .long 1066424940 + .long 1024484018 + .long 1066420899 + .long 1026847466 + .long 1066415706 + .long 1029209471 + .long 1066409363 + .long 1031569748 + .long 1066401872 + .long 1032863396 + .long 1066393236 + .long 1034041375 + .long 1066383458 + .long 1035218061 + .long 1066372541 + .long 1036393311 + .long 1066360491 + .long 1037566985 + .long 1066347310 + .long 1038738940 + .long 1066333004 + .long 1039909037 + .long 1066317578 + .long 1040632264 + .long 1066301038 + .long 1041215245 + .long 1066283389 + .long 1041797089 + .long 1066264638 + .long 1042377726 + .long 1066244793 + .long 1042957089 + .long 1066223859 + .long 1043535110 + .long 1066201845 + .long 1044111721 + .long 1066178758 + .long 1044686856 + .long 1066154607 + .long 1045260449 + .long 1066129400 + .long 1045832434 + .long 1066103148 + .long 1046402745 + .long 1066075858 + .long 1046971319 + .long 1066047540 + .long 1047538090 + .long 1066018206 + .long 1048102997 + .long 1065987864 + .long 1048620988 + .long 1065956527 + .long 1048901483 + .long 1065924204 + .long 1049180953 + .long 1065890909 + .long 1049459367 + .long 1065856651 + .long 1049736696 + .long 1065821444 + .long 1050012910 + .long 1065785299 + .long 1050287979 + .long 1065748229 + .long 1050561876 + .long 1065710248 + .long 1050834572 + .long 1065671368 + .long 1051106040 + .long 1065631602 + .long 1051376250 + .long 1065590966 + .long 1051645178 + .long 1065549471 + .long 1051912796 + .long 1065507134 + .long 1052179077 + .long 1065463968 + .long 1052443997 + .long 1065419987 + .long 1052707530 + .long 1065375208 + .long 1052969651 + .long 1065306072 + .long 1053230337 + .long 1065213407 + .long 1053489563 + .long 1065119237 + .long 1053747305 + .long 1065023591 + .long 1054003542 + .long 1064926502 + .long 1054258251 + .long 1064828002 + .long 1054511410 + .long 1064728124 + .long 1054762998 + .long 1064626900 + .long 1055012994 + .long 1064524364 + .long 1055261378 + .long 1064420548 + .long 1055508130 + .long 1064315487 + .long 1055753230 + .long 1064209214 + .long 1055996661 + .long 1064101763 + .long 1056238405 + .long 1063993169 + .long 1056478442 + .long 1063883465 + .long 1056716757 + .long 1063772687 + .long 1056953333 + .long 1063660869 + .long 1057076381 + .long 1063548046 + .long 1057192906 + .long 1063434253 + .long 1057308539 + .long 1063319525 + .long 1057423272 + .long 1063203897 + .long 1057537098 + .long 1063087405 + .long 1057650010 + .long 1062970083 + .long 1057762003 + .long 1062851966 + .long 1057873070 + .long 1062733091 + .long 1057983206 + .long 1062613492 + .long 1058092404 + .long 1062493204 + .long 1058200660 + .long 1062372263 + .long 1058307969 + .long 1062250703 + .long 1058414326 + .long 1062128561 + .long 1058519726 + .long 1062005869 + .long 1058624166 + .long 1061882664 + .long 1058727642 + .long 1061758980 + .long 1058830149 + .long 1061634851 + .long 1058931685 + .long 1061510312 + .long 1059032247 + .long 1061385397 + .long 1059131831 + .long 1061260139 + .long 1059230436 + .long 1061134574 + .long 1059328058 + .long 1061008734 + .long 1059424697 + .long 1060882652 + .long 1059520349 + .long 1060756362 + .long 1059615014 + .long 1060629897 + .long 1059708691 + .long 1060503288 + .long 1059801378 + .long 1060376569 + .long 1059893075 + .long 1060249771 + .long 1059983780 + .long 1060122926 + .long 1060073495 + .long 1059996065 + .long 1060162219 + .long 1059869219 + .long 1060249952 + .long 1059742419 + .long 1060336695 + .long 1059615695 + .long 1060422447 + .long 1059489076 + .long 1060507212 + .long 1059362593 + .long 1060590988 + .long 1059236275 + .long 1060673779 + .long 1059110150 + .long 1060755585 + .long 1058984247 + .long 1060836408 + .long 1058858593 + .long 1060916251 + .long 1058733216 + .long 1060995116 + .long 1058608143 + .long 1061073004 + .long 1058483401 + .long 1061149920 + .long 1058359015 + .long 1061225865 + .long 1058235012 + .long 1061300843 + .long 1058111417 + .long 1061374857 + .long 1057988254 + .long 1061447911 + .long 1057865548 + .long 1061520007 + .long 1057743323 + .long 1061591151 + .long 1057621602 + .long 1061661346 + .long 1057500407 + .long 1061730597 + .long 1057379761 + .long 1061798907 + .long 1057259686 + .long 1061866281 + .long 1057140203 + .long 1061932724 + .long 1057021334 + .long 1061998241 + .long 1056841587 + .long 1062062836 + .long 1056606421 + .long 1062126516 + .long 1056372599 + .long 1062189285 + .long 1056140160 + .long 1062251149 + .long 1055909139 + .long 1062312113 + .long 1055679573 + .long 1062372184 + .long 1055451496 + .long 1062431366 + .long 1055224941 + .long 1062489667 + .long 1054999940 + .long 1062547091 + .long 1054776524 + .long 1062603646 + .long 1054554724 + .long 1062659338 + .long 1054334570 + .long 1062714173 + .long 1054116088 + .long 1062768158 + .long 1053899307 + .long 1062821300 + .long 1053684252 + .long 1062873605 + .long 1053470948 + .long 1062925080 + .long 1053259419 + .long 1062975732 + .long 1053049689 + .long 1063025569 + .long 1052841779 + .long 1063074597 + .long 1052635709 + .long 1063122824 + .long 1052431501 + .long 1063170257 + .long 1052229173 + .long 1063216903 + .long 1052028742 + .long 1063262770 + .long 1051830227 + .long 1063307865 + .long 1051633642 + .long 1063352196 + .long 1051439002 + .long 1063395771 + .long 1051246323 + .long 1063438597 + .long 1051055616 + .long 1063480681 + .long 1050866894 + .long 1063522033 + .long 1050680168 + .long 1063562659 + .long 1050495449 + .long 1063602567 + .long 1050312745 + .long 1063641766 + .long 1050132066 + .long 1063680262 + .long 1049953419 + .long 1063718065 + .long 1049776810 + .long 1063755182 + .long 1049602245 + .long 1063791622 + .long 1049429731 + .long 1063827391 + .long 1049259269 + .long 1063862498 + .long 1049090865 + .long 1063896952 + .long 1048924520 + .long 1063930760 + .long 1048760237 + .long 1063963930 + .long 1048598016 + .long 1063996470 + .long 1048299714 + .long 1064028389 + .long 1047983520 + .long 1064059695 + .long 1047671448 + .long 1064090395 + .long 1047363493 + .long 1064120497 + .long 1047059649 + .long 1064150010 + .long 1046759911 + .long 1064178942 + .long 1046464270 + .long 1064207300 + .long 1046172715 + .long 1064235093 + .long 1045885238 + .long 1064262328 + .long 1045601825 + .long 1064289013 + .long 1045322463 + .long 1064315157 + .long 1045047137 + .long 1064340767 + .long 1044775833 + .long 1064365851 + .long 1044508533 + .long 1064390417 + .long 1044245220 + .long 1064414473 + .long 1043985874 + .long 1064438026 + .long 1043730475 + .long 1064461084 + .long 1043479003 + .long 1064483654 + .long 1043231435 + .long 1064505745 + .long 1042987748 + .long 1064527364 + .long 1042747919 + .long 1064548517 + .long 1042511923 + .long 1064569214 + .long 1042279734 + .long 1064589461 + .long 1042051325 + .long 1064609266 + .long 1041826670 + .long 1064628635 + .long 1041605741 + .long 1064647576 + .long 1041388508 + .long 1064666097 + .long 1041174943 + .long 1064684204 + .long 1040965014 + .long 1064701905 + .long 1040758692 + .long 1064719206 + .long 1040555945 + .long 1064736115 + .long 1040356742 + .long 1064752638 + .long 1040134704 + .long 1064768783 + .long 1039750273 + .long 1064784555 + .long 1039372729 + .long 1064799962 + .long 1039002005 + .long 1064815010 + .long 1038638032 + .long 1064829706 + .long 1038280741 + .long 1064844056 + .long 1037930060 + .long 1064858067 + .long 1037585918 + .long 1064871745 + .long 1037248243 + .long 1064885096 + .long 1036916963 + .long 1064898128 + .long 1036592005 + .long 1064910844 + .long 1036273295 + .long 1064923253 + .long 1035960758 + .long 1064935359 + .long 1035654320 + .long 1064947169 + .long 1035353906 + .long 1064958689 + .long 1035059441 + .long 1064969924 + .long 1034770849 + .long 1064980879 + .long 1034488054 + .long 1064991562 + .long 1034210980 + .long 1065001977 + .long 1033939550 + .long 1065012129 + .long 1033673689 + .long 1065022024 + .long 1033413319 + .long 1065031668 + .long 1033158365 + .long 1065041065 + .long 1032908749 + .long 1065050222 + .long 1032664395 + .long 1065059142 + .long 1032425226 + .long 1065067831 + .long 1032191167 + .long 1065076294 + .long 1031962141 + .long 1065084535 + .long 1031677359 + .long 1065092561 + .long 1031238982 + .long 1065100374 + .long 1030810216 + .long 1065107981 + .long 1030390909 + .long 1065115385 + .long 1029980912 + .long 1065122591 + .long 1029580074 + .long 1065129604 + .long 1029188248 + .long 1065136427 + .long 1028805285 + .long 1065143066 + .long 1028431037 + .long 1065149524 + .long 1028065358 + .long 1065155805 + .long 1027708103 + .long 1065161914 + .long 1027359126 + .long 1065167855 + .long 1027018284 + .long 1065173631 + .long 1026685435 + .long 1065179247 + .long 1026360436 + .long 1065184706 + .long 1026043148 + .long 1065190011 + .long 1025733430 + .long 1065195168 + .long 1025431145 + .long 1065200178 + .long 1025136155 + .long 1065205046 + .long 1024848326 + .long 1065209776 + .long 1024567521 + .long 1065214370 + .long 1024293609 + .long 1065218831 + .long 1024026458 + .long 1065223165 + .long 1023765936 + .long 1065227372 + .long 1023511915 + .long 1065231457 + .long 1023118357 + .long 1065235422 + .long 1022635554 + .long 1065239272 + .long 1022164995 + .long 1065243007 + .long 1021706432 + .long 1065246633 + .long 1021259623 + .long 1065250150 + .long 1020824325 + .long 1065253563 + .long 1020400301 + .long 1065256874 + .long 1019987316 + .long 1065260085 + .long 1019585139 + .long 1065263199 + .long 1019193540 + .long 1065266219 + .long 1018812294 + .long 1065269146 + .long 1018441179 + .long 1065271985 + .long 1018079974 + .long 1065274737 + .long 1017728463 + .long 1065277404 + .long 1017386434 + .long 1065279988 + .long 1017053676 + .long 1065282493 + .long 1016729983 + .long 1065284919 + .long 1016415150 + .long 1065287270 + .long 1016108977 + .long 1065289547 + .long 1015811266 + .long 1065291752 + .long 1015521823 + .long 1065293888 + .long 1015240458 + .long 1065295955 + .long 1014912394 + .long 1065297958 + .long 1014380849 + .long 1065299896 + .long 1013864347 + .long 1065301772 + .long 1013362533 + .long 1065303587 + .long 1012875053 + .long 1065305344 + .long 1012401564 + .long 1065307044 + .long 1011941727 + .long 1065308689 + .long 1011495207 + .long 1065310280 + .long 1011061679 + .long 1065311819 + .long 1010640821 + .long 1065313307 + .long 1010232319 + .long 1065314746 + .long 1009835863 + .long 1065316137 + .long 1009451150 + .long 1065317482 + .long 1009077883 + .long 1065318783 + .long 1008715771 + .long 1065320039 + .long 1008364526 + .long 1065321254 + .long 1008023869 + .long 1065322427 + .long 1007693526 + .long 1065323561 + .long 1007373227 + .long 1065324656 + .long 1007062709 + .long 1065325714 + .long 1006761713 + .long 1065326736 + .long 1006307013 + .long 1065327723 + .long 1005741605 + .long 1065328676 + .long 1005193757 + .long 1065329596 + .long 1004662995 + .long 1065330484 + .long 1004148854 + .long 1065331341 + .long 1003650882 + .long 1065332168 + .long 1003168634 + .long 1065332966 + .long 1002701676 + .long 1065333736 + .long 1002249583 + .long 1065334479 + .long 1001811942 + .long 1065335196 + .long 1001388347 + .long 1065335887 + .long 1000978401 + .long 1065336554 + .long 1000581718 + .long 1065337197 + .long 1000197920 + .long 1065337817 + .long 999826638 + .long 1065338414 + .long 999467511 + .long 1065338990 + .long 999120188 + .long 1065339545 + .long 998784326 + .long 1065340080 + .long 998459590 + .long 1065340596 + .long 998046952 + .long 1065341093 + .long 997440036 + .long 1065341571 + .long 996853459 + .long 1065342032 + .long 996286614 + .long 1065342476 + .long 995738909 + .long 1065342903 + .long 995209770 + .long 1065343315 + .long 994698633 + .long 1065343711 + .long 994204952 + .long 1065344092 + .long 993728194 + .long 1065344460 + .long 993267840 + .long 1065344813 + .long 992823384 + .long 1065345153 + .long 992394334 + .long 1065345480 + .long 991980210 + .long 1065345795 + .long 991580547 + .long 1065346097 + .long 991194889 + .long 1065346388 + .long 990822796 + .long 1065346668 + .long 990463837 + .long 1065346938 + .long 990117594 + .long 1065347197 + .long 989711580 + .long 1065347445 + .long 989067545 + .long 1065347685 + .long 988446572 + .long 1065347915 + .long 987847912 + .long 1065348135 + .long 987270840 + .long 1065348348 + .long 986714651 + .long 1065348552 + .long 986178660 + .long 1065348748 + .long 985662200 + .long 1065348936 + .long 985164626 + .long 1065349117 + .long 984685310 + .long 1065349290 + .long 984223642 + .long 1065349457 + .long 983779031 + .long 1065349617 + .long 983350903 + .long 1065349770 + .long 982938700 + .long 1065349918 + .long 982541883 + .long 1065350059 + .long 982159927 + .long 1065350195 + .long 981792323 + .long 1065350325 + .long 981410023 + .long 1065350450 + .long 980729298 + .long 1065350570 + .long 980074409 + .long 1065350685 + .long 979444458 + .long 1065350795 + .long 978838575 + .long 1065350901 + .long 978255916 + .long 1065351002 + .long 977695663 + .long 1065351099 + .long 977157026 + .long 1065351193 + .long 976639239 + .long 1065351282 + .long 976141558 + .long 1065351367 + .long 975663265 + .long 1065351449 + .long 975203666 + .long 1065351528 + .long 974762086 + .long 1065351603 + .long 974337876 + .long 1065351675 + .long 973930403 + .long 1065351744 + .long 973539060 + .long 1065351810 + .long 973163256 + .long 1065351873 + .long 972526314 + .long 1065351934 + .long 971833480 + .long 1065351992 + .long 971168417 + .long 1065352047 + .long 970530093 + .long 1065352101 + .long 969917514 + .long 1065352151 + .long 969329717 + .long 1065352200 + .long 968765773 + .long 1065352246 + .long 968224785 + .long 1065352291 + .long 967705884 + .long 1065352334 + .long 967208234 + .long 1065352374 + .long 966731026 + .long 1065352413 + .long 966273480 + .long 1065352450 + .long 965834842 + .long 1065352486 + .long 965414386 + .long 1065352520 + .long 965011410 + .long 1065352552 + .long 964560555 + .long 1065352583 + .long 963820510 + .long 1065352613 + .long 963111507 + .long 1065352641 + .long 962432331 + .long 1065352668 + .long 961781812 + .long 1065352694 + .long 961158821 + .long 1065352719 + .long 960562270 + .long 1065352743 + .long 959991111 + .long 1065352765 + .long 959444333 + .long 1065352787 + .long 958920964 + .long 1065352807 + .long 958420065 + .long 1065352827 + .long 957940734 + .long 1065352845 + .long 957482101 + .long 1065352863 + .long 957043329 + .long 1065352880 + .long 956623612 + .long 1065352896 + .long 956143037 + .long 1065352912 + .long 955375226 + .long 1065352927 + .long 954641044 + .long 1065352941 + .long 953939107 + .long 1065352954 + .long 953268086 + .long 1065352967 + .long 952626702 + .long 1065352979 + .long 952013724 + .long 1065352991 + .long 951427969 + .long 1065353002 + .long 950868302 + .long 1065353012 + .long 950333628 + .long 1065353023 + .long 949822896 + .long 1065353032 + .long 949335099 + .long 1065353041 + .long 948869264 + .long 1065353050 + .long 948424462 + .long 1065353058 + .long 947999796 + .long 1065353066 + .long 947276109 + .long 1065353074 + .long 946502234 + .long 1065353081 + .long 945763678 + .long 1065353088 + .long 945058918 + .long 1065353094 + .long 944386495 + .long 1065353100 + .long 943745006 + .long 1065353106 + .long 943133108 + .long 1065353112 + .long 942549510 + .long 1065353117 + .long 941992974 + .long 1065353122 + .long 941462313 + .long 1065353127 + .long 940956390 + .long 1065353131 + .long 940474113 + .long 1065353136 + .long 940014434 + .long 1065353140 + .long 939576353 + .long 1065353144 + .long 938793716 + .long 1065353148 + .long 937998252 + .long 1065353151 + .long 937240450 + .long 1065353154 + .long 936518620 + .long 1065353158 + .long 935831142 + .long 1065353161 + .long 935176466 + .long 1065353164 + .long 934553105 + .long 1065353166 + .long 933959638 + .long 1065353169 + .long 933394703 + .long 1065353171 + .long 932856997 + .long 1065353174 + .long 932345273 + .long 1065353176 + .long 931858338 + .long 1065353178 + .long 931395049 + .long 1065353180 + .long 930773143 + .long 1065353182 + .long 929934696 + .long 1065353184 + .long 929137272 + .long 1065353186 + .long 928378959 + .long 1065353187 + .long 927657932 + .long 1065353189 + .long 926972445 + .long 1065353190 + .long 926320828 + .long 1065353192 + .long 925701488 + .long 1065353193 + .long 925112900 + .long 1065353194 + .long 924553608 + .long 1065353195 + .long 924022223 + .long 1065353196 + .long 923517415 + .long 1065353198 + .long 923037917 + .long 1065353199 + .long 922418156 + .long 1065353199 + .long 921553243 + .long 1065353200 + .long 920732007 + .long 1065353201 + .long 919952342 + .long 1065353202 + .long 919212238 + .long 1065353203 + .long 918509777 + .long 1065353204 + .long 917843129 + .long 1065353204 + .long 917210549 + .long 1065353205 + .long 916610371 + .long 1065353205 + .long 916041009 + .long 1065353206 + .long 915500949 + .long 1065353207 + .long 914988747 + .long 1065353207 + .long 914503029 + .long 1065353208 + .long 913726696 + .long 1065353208 + .long 912853452 + .long 1065353209 + .long 912025674 + .long 1065353209 + .long 911241096 + .long 1065353209 + .long 910497555 + .long 1065353210 + .long 909792996 + .long 1065353210 + .long 909125460 + .long 1065353210 + .long 908493081 + .long 1065353211 + .long 907894083 + .long 1065353211 + .long 907326776 + .long 1065353211 + .long 906789553 + .long 1065353212 + .long 906280881 + .long 1065353212 + .long 905628944 + .long 1065353212 + .long 904717211 + .long 1065353212 + .long 903854262 + .long 1065353213 + .long 903037590 + .long 1065353213 + .long 902264812 + .long 1065353213 + .long 901533660 + .long 1065353213 + .long 900841980 + .long 1065353213 + .long 900187723 + .long 1065353213 + .long 899568945 + .long 1065353214 + .long 898983793 + .long 1065353214 + .long 898430512 + .long 1065353214 + .long 897907432 + .long 1065353214 + .long 897244875 + .long 1065353214 + .long 896310159 + .long 1065353214 + .long 895426799 + .long 1065353214 + .long 894592079 + .long 1065353214 + .long 893803420 + .long 1065353215 + .long 893058375 + .long 1065353215 + .long 892354620 + .long 1065353215 + .long 891689952 + .long 1065353215 + .long 891062279 + .long 1065353215 + .long 890469616 + .long 1065353215 + .long 889910081 + .long 1065353215 + .long 889381890 + .long 1065353215 + .long 888574250 + .long 1065353215 + .long 887633259 + .long 1065353215 + .long 886745316 + .long 1065353215 + .long 885907536 + .long 1065353215 + .long 885117184 + .long 1065353215 + .long 884371669 + .long 1065353215 + .long 883668537 + .long 1065353215 + .long 883005462 + .long 1065353215 + .long 882380241 + .long 1065353215 + .long 881790787 + .long 1065353215 + .long 881235123 + .long 1065353216 + .long 880618920 + .long 1065353216 + .long 879631730 + .long 0 + .long 1007709690 + .long 1016097720 + .long 1020828656 + .long 1024484018 + .long 1026847466 + .long 1029209471 + .long 1031569748 + .long 1032863396 + .long 1034041375 + .long 1035218061 + .long 1036393311 + .long 1037566985 + .long 1038738940 + .long 1039909037 + .long 1040632264 + .long 1041215245 + .long 1041797089 + .long 1042377726 + .long 1042957089 + .long 1043535110 + .long 1044111721 + .long 1044686856 + .long 1045260449 + .long 1045832434 + .long 1046402745 + .long 1046971319 + .long 1047538090 + .long 1048102997 + .long 1048620988 + .long 1048901483 + .long 1049180953 + .long 1049459367 + .long 1049736696 + .long 1050012910 + .long 1050287979 + .long 1050561876 + .long 1050834572 + .long 1051106040 + .long 1051376250 + .long 1051645178 + .long 1051912796 + .long 1052179077 + .long 1052443997 + .long 1052707530 + .long 1052969651 + .long 1053230337 + .long 1053489563 + .long 1053747305 + .long 1054003542 + .long 1054258251 + .long 1054511410 + .long 1054762998 + .long 1055012994 + .long 1055261378 + .long 1055508130 + .long 1055753230 + .long 1055996661 + .long 1056238405 + .long 1056478442 + .long 1056716757 + .long 1056953333 + .long 1057076381 + .long 1057192906 + .long 1057308539 + .long 1057423272 + .long 1057537098 + .long 1057650010 + .long 1057762003 + .long 1057873070 + .long 1057983206 + .long 1058092404 + .long 1058200660 + .long 1058307969 + .long 1058414326 + .long 1058519726 + .long 1058624166 + .long 1058727642 + .long 1058830149 + .long 1058931685 + .long 1059032247 + .long 1059131831 + .long 1059230436 + .long 1059328058 + .long 1059424697 + .long 1059520349 + .long 1059615014 + .long 1059708691 + .long 1059801378 + .long 1059893075 + .long 1059983780 + .long 1060073495 + .long 1060162219 + .long 1060249952 + .long 1060336695 + .long 1060422447 + .long 1060507212 + .long 1060590988 + .long 1060673779 + .long 1060755585 + .long 1060836408 + .long 1060916251 + .long 1060995116 + .long 1061073004 + .long 1061149920 + .long 1061225865 + .long 1061300843 + .long 1061374857 + .long 1061447911 + .long 1061520007 + .long 1061591151 + .long 1061661346 + .long 1061730597 + .long 1061798907 + .long 1061866281 + .long 1061932724 + .long 1061998241 + .long 1062062836 + .long 1062126516 + .long 1062189285 + .long 1062251149 + .long 1062312113 + .long 1062372184 + .long 1062431366 + .long 1062489667 + .long 1062547091 + .long 1062603646 + .long 1062659338 + .long 1062714173 + .long 1062768158 + .long 1062821300 + .long 1062873605 + .long 1062925080 + .long 1062975732 + .long 1063025569 + .long 1063074597 + .long 1063122824 + .long 1063170257 + .long 1063216903 + .long 1063262770 + .long 1063307865 + .long 1063352196 + .long 1063395771 + .long 1063438597 + .long 1063480681 + .long 1063522033 + .long 1063562659 + .long 1063602567 + .long 1063641766 + .long 1063680262 + .long 1063718065 + .long 1063755182 + .long 1063791622 + .long 1063827391 + .long 1063862498 + .long 1063896952 + .long 1063930760 + .long 1063963930 + .long 1063996470 + .long 1064028389 + .long 1064059695 + .long 1064090395 + .long 1064120497 + .long 1064150010 + .long 1064178942 + .long 1064207300 + .long 1064235093 + .long 1064262328 + .long 1064289013 + .long 1064315157 + .long 1064340767 + .long 1064365851 + .long 1064390417 + .long 1064414473 + .long 1064438026 + .long 1064461084 + .long 1064483654 + .long 1064505745 + .long 1064527364 + .long 1064548517 + .long 1064569214 + .long 1064589461 + .long 1064609266 + .long 1064628635 + .long 1064647576 + .long 1064666097 + .long 1064684204 + .long 1064701905 + .long 1064719206 + .long 1064736115 + .long 1064752638 + .long 1064768783 + .long 1064784555 + .long 1064799962 + .long 1064815010 + .long 1064829706 + .long 1064844056 + .long 1064858067 + .long 1064871745 + .long 1064885096 + .long 1064898128 + .long 1064910844 + .long 1064923253 + .long 1064935359 + .long 1064947169 + .long 1064958689 + .long 1064969924 + .long 1064980879 + .long 1064991562 + .long 1065001977 + .long 1065012129 + .long 1065022024 + .long 1065031668 + .long 1065041065 + .long 1065050222 + .long 1065059142 + .long 1065067831 + .long 1065076294 + .long 1065084535 + .long 1065092561 + .long 1065100374 + .long 1065107981 + .long 1065115385 + .long 1065122591 + .long 1065129604 + .long 1065136427 + .long 1065143066 + .long 1065149524 + .long 1065155805 + .long 1065161914 + .long 1065167855 + .long 1065173631 + .long 1065179247 + .long 1065184706 + .long 1065190011 + .long 1065195168 + .long 1065200178 + .long 1065205046 + .long 1065209776 + .long 1065214370 + .long 1065218831 + .long 1065223165 + .long 1065227372 + .long 1065231457 + .long 1065235422 + .long 1065239272 + .long 1065243007 + .long 1065246633 + .long 1065250150 + .long 1065253563 + .long 1065256874 + .long 1065260085 + .long 1065263199 + .long 1065266219 + .long 1065269146 + .long 1065271985 + .long 1065274737 + .long 1065277404 + .long 1065279988 + .long 1065282493 + .long 1065284919 + .long 1065287270 + .long 1065289547 + .long 1065291752 + .long 1065293888 + .long 1065295955 + .long 1065297958 + .long 1065299896 + .long 1065301772 + .long 1065303587 + .long 1065305344 + .long 1065307044 + .long 1065308689 + .long 1065310280 + .long 1065311819 + .long 1065313307 + .long 1065314746 + .long 1065316137 + .long 1065317482 + .long 1065318783 + .long 1065320039 + .long 1065321254 + .long 1065322427 + .long 1065323561 + .long 1065324656 + .long 1065325714 + .long 1065326736 + .long 1065327723 + .long 1065328676 + .long 1065329596 + .long 1065330484 + .long 1065331341 + .long 1065332168 + .long 1065332966 + .long 1065333736 + .long 1065334479 + .long 1065335196 + .long 1065335887 + .long 1065336554 + .long 1065337197 + .long 1065337817 + .long 1065338414 + .long 1065338990 + .long 1065339545 + .long 1065340080 + .long 1065340596 + .long 1065341093 + .long 1065341571 + .long 1065342032 + .long 1065342476 + .long 1065342903 + .long 1065343315 + .long 1065343711 + .long 1065344092 + .long 1065344460 + .long 1065344813 + .long 1065345153 + .long 1065345480 + .long 1065345795 + .long 1065346097 + .long 1065346388 + .long 1065346668 + .long 1065346938 + .long 1065347197 + .long 1065347445 + .long 1065347685 + .long 1065347915 + .long 1065348135 + .long 1065348348 + .long 1065348552 + .long 1065348748 + .long 1065348936 + .long 1065349117 + .long 1065349290 + .long 1065349457 + .long 1065349617 + .long 1065349770 + .long 1065349918 + .long 1065350059 + .long 1065350195 + .long 1065350325 + .long 1065350450 + .long 1065350570 + .long 1065350685 + .long 1065350795 + .long 1065350901 + .long 1065351002 + .long 1065351099 + .long 1065351193 + .long 1065351282 + .long 1065351367 + .long 1065351449 + .long 1065351528 + .long 1065351603 + .long 1065351675 + .long 1065351744 + .long 1065351810 + .long 1065351873 + .long 1065351934 + .long 1065351992 + .long 1065352047 + .long 1065352101 + .long 1065352151 + .long 1065352200 + .long 1065352246 + .long 1065352291 + .long 1065352334 + .long 1065352374 + .long 1065352413 + .long 1065352450 + .long 1065352486 + .long 1065352520 + .long 1065352552 + .long 1065352583 + .long 1065352613 + .long 1065352641 + .long 1065352668 + .long 1065352694 + .long 1065352719 + .long 1065352743 + .long 1065352765 + .long 1065352787 + .long 1065352807 + .long 1065352827 + .long 1065352845 + .long 1065352863 + .long 1065352880 + .long 1065352896 + .long 1065352912 + .long 1065352927 + .long 1065352941 + .long 1065352954 + .long 1065352967 + .long 1065352979 + .long 1065352991 + .long 1065353002 + .long 1065353012 + .long 1065353023 + .long 1065353032 + .long 1065353041 + .long 1065353050 + .long 1065353058 + .long 1065353066 + .long 1065353074 + .long 1065353081 + .long 1065353088 + .long 1065353094 + .long 1065353100 + .long 1065353106 + .long 1065353112 + .long 1065353117 + .long 1065353122 + .long 1065353127 + .long 1065353131 + .long 1065353136 + .long 1065353140 + .long 1065353144 + .long 1065353148 + .long 1065353151 + .long 1065353154 + .long 1065353158 + .long 1065353161 + .long 1065353164 + .long 1065353166 + .long 1065353169 + .long 1065353171 + .long 1065353174 + .long 1065353176 + .long 1065353178 + .long 1065353180 + .long 1065353182 + .long 1065353184 + .long 1065353186 + .long 1065353187 + .long 1065353189 + .long 1065353190 + .long 1065353192 + .long 1065353193 + .long 1065353194 + .long 1065353195 + .long 1065353196 + .long 1065353198 + .long 1065353199 + .long 1065353199 + .long 1065353200 + .long 1065353201 + .long 1065353202 + .long 1065353203 + .long 1065353204 + .long 1065353204 + .long 1065353205 + .long 1065353205 + .long 1065353206 + .long 1065353207 + .long 1065353207 + .long 1065353208 + .long 1065353208 + .long 1065353209 + .long 1065353209 + .long 1065353209 + .long 1065353210 + .long 1065353210 + .long 1065353210 + .long 1065353211 + .long 1065353211 + .long 1065353211 + .long 1065353212 + .long 1065353212 + .long 1065353212 + .long 1065353212 + .long 1065353213 + .long 1065353213 + .long 1065353213 + .long 1065353213 + .long 1065353213 + .long 1065353213 + .long 1065353214 + .long 1065353214 + .long 1065353214 + .long 1065353214 + .long 1065353214 + .long 1065353214 + .long 1065353214 + .long 1065353214 + .long 1065353215 + .long 1065353215 + .long 1065353215 + .long 1065353215 + .long 1065353215 + .long 1065353215 + .long 1065353215 + .long 1065353215 + .long 1065353215 + .long 1065353215 + .long 1065353215 + .long 1065353215 + .long 1065353215 + .long 1065353215 + .long 1065353215 + .long 1065353215 + .long 1065353215 + .long 1065353215 + .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 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 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 8191 + .long 8191 + .long 8191 + .long 8191 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 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 1081835520 + .long 1081835520 + .long 1081835520 + .long 1081835520 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .long 1066430139 + .long 1066430139 + .long 1066430139 + .long 1066430139 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .long 1199570944 + .long 1199570944 + .long 1199570944 + .long 1199570944 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .long 1021313024 + .long 1021313024 + .long 1021313024 + .long 1021313024 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .long 796917760 + .long 796917760 + .long 796917760 + .long 796917760 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .long 1059760819 + .long 1059760819 + .long 1059760819 + .long 1059760819 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .long 3212836869 + .long 3212836869 + .long 3212836869 + .long 3212836869 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .long 3198855902 + .long 3198855902 + .long 3198855902 + .long 3198855902 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .long 3212836874 + .long 3212836874 + .long 3212836874 + .long 3212836874 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .long 1096125530 + .long 1096125530 + .long 1096125530 + .long 1096125530 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .long 3644045571 + .long 1072758523 + .long 3644045571 + .long 1072758523 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .long 270426983 + .long 3217467720 + .long 270426983 + .long 3217467720 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .long 3462409323 + .long 1067688756 + .long 3462409323 + .long 1067688756 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .long 3926688220 + .long 3212415753 + .long 3926688220 + .long 3212415753 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .long 1245766546 + .long 1061645814 + .long 1245766546 + .long 1061645814 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .long 3109064414 + .long 3205124630 + .long 3109064414 + .long 3205124630 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .long 2512971936 + .long 1051031883 + .long 2512971936 + .long 1051031883 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .long 3028677391 + .long 1049933504 + .long 3028677391 + .long 1049933504 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .long 3783197987 + .long 3194323052 + .long 3783197987 + .long 3194323052 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .long 74505031 + .long 1042748772 + .long 74505031 + .long 1042748772 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .long 1406668547 + .long 3185429286 + .long 1406668547 + .long 3185429286 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .long 3345142763 + .long 1032186591 + .long 3345142763 + .long 1032186591 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .long 678555889 + .long 3172755082 + .long 678555889 + .long 3172755082 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .long 1087852134 + .long 1087852134 + .long 1087852134 + .long 1087852134 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .long 1065874727 + .long 1065874727 + .long 1065874727 + .long 1065874727 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .long 3191107981 + .long 3191107981 + .long 3191107981 + .long 3191107981 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .long 1024942079 + .long 1024942079 + .long 1024942079 + .long 1024942079 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .long 3148844381 + .long 3148844381 + .long 3148844381 + .long 3148844381 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .long 972031746 + .long 972031746 + .long 972031746 + .long 972031746 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .long 3079608568 + .long 3079608568 + .long 3079608568 + .long 3079608568 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .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_serf_data_internal,@object + .size __svml_serf_data_internal,8256 diff --git a/sysdeps/x86_64/fpu/multiarch/svml_s_erff8_core-sse.S b/sysdeps/x86_64/fpu/multiarch/svml_s_erff8_core-sse.S new file mode 100644 index 0000000000..4b939f8c55 --- /dev/null +++ b/sysdeps/x86_64/fpu/multiarch/svml_s_erff8_core-sse.S @@ -0,0 +1,20 @@ +/* SSE version of vectorized erff, 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 + . */ + +#define _ZGVdN8v_erff _ZGVdN8v_erff_sse_wrapper +#include "../svml_s_erff8_core.S" diff --git a/sysdeps/x86_64/fpu/multiarch/svml_s_erff8_core.c b/sysdeps/x86_64/fpu/multiarch/svml_s_erff8_core.c new file mode 100644 index 0000000000..50f5901db1 --- /dev/null +++ b/sysdeps/x86_64/fpu/multiarch/svml_s_erff8_core.c @@ -0,0 +1,28 @@ +/* Multiple versions of vectorized erff, 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 + . */ + +#define SYMBOL_NAME _ZGVdN8v_erff +#include "ifunc-mathvec-avx2.h" + +libc_ifunc_redirected (REDIRECT_NAME, SYMBOL_NAME, IFUNC_SELECTOR ()); + +#ifdef SHARED +__hidden_ver1 (_ZGVdN8v_erff, __GI__ZGVdN8v_erff, + __redirect__ZGVdN8v_erff) + __attribute__ ((visibility ("hidden"))); +#endif diff --git a/sysdeps/x86_64/fpu/multiarch/svml_s_erff8_core_avx2.S b/sysdeps/x86_64/fpu/multiarch/svml_s_erff8_core_avx2.S new file mode 100644 index 0000000000..6fe38713b0 --- /dev/null +++ b/sysdeps/x86_64/fpu/multiarch/svml_s_erff8_core_avx2.S @@ -0,0 +1,3062 @@ +/* Function erff 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: + * + * Basic formula is + * erf(x) ~ erf(x0) + + * + exp(-x0*x0)*D*(1+c0+T*P1(T)+D^2*P3(T)+D^4*p5) + * where D=x-x0, T=x0*D + * x0 is x rounded to a specified number of fractional bits (in this case 8), + * except that x0=0 for |x|<3.5/256.0 (using x0=0 for first 4 table entries) + * + * Data table packs both erf(x0)_high and a few bits of erf(x0)_low in one + * entry (in place of redundant exponent bits) + * + */ + +#include + + .text +ENTRY(_ZGVdN8v_erff_avx2) + 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 + lea -1006632960+__svml_serf_data_internal(%rip), %rax + +/* + * vector gather: + * erf(x0), exp(-x0*x0)*2.0/sqrt(pi) + */ + vmovups 6464+__svml_serf_data_internal(%rip), %ymm3 + vmovups %ymm11, 128(%rsp) + vmovups %ymm13, 64(%rsp) + vmovups %ymm14, 32(%rsp) + vmovups %ymm15, (%rsp) + vmovups %ymm12, 96(%rsp) + vandps 6080+__svml_serf_data_internal(%rip), %ymm0, %ymm2 + +/* + * erf(x) rounds to 1.0 for x>_MaxThreshold (3.9375) + * can compute all results in the main path + */ + vminps 6336+__svml_serf_data_internal(%rip), %ymm2, %ymm4 + vaddps %ymm3, %ymm4, %ymm7 + vcmpgt_oqps 6592+__svml_serf_data_internal(%rip), %ymm4, %ymm1 + .cfi_escape 0x10, 0xde, 0x00, 0x0e, 0x38, 0x1c, 0x0d, 0xc0, 0xff, 0xff, 0xff, 0x1a, 0x0d, 0xc0, 0xff, 0xff, 0xff, 0x22 + .cfi_escape 0x10, 0xdf, 0x00, 0x0e, 0x38, 0x1c, 0x0d, 0xc0, 0xff, 0xff, 0xff, 0x1a, 0x0d, 0xa0, 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, 0x60, 0xff, 0xff, 0xff, 0x22 + .cfi_escape 0x10, 0xe2, 0x00, 0x0e, 0x38, 0x1c, 0x0d, 0xc0, 0xff, 0xff, 0xff, 0x1a, 0x0d, 0x40, 0xff, 0xff, 0xff, 0x22 + vpslld $3, %ymm7, %ymm11 + vsubps %ymm3, %ymm7, %ymm3 + vsubps %ymm3, %ymm4, %ymm5 + vandps %ymm1, %ymm5, %ymm4 + +/* NaN fixup */ + vminps %ymm2, %ymm5, %ymm5 + +/* save sign */ + vxorps %ymm0, %ymm2, %ymm6 + +/* D2 = Diff^2 */ + vmulps %ymm4, %ymm4, %ymm2 + +/* + * Start polynomial evaluation + * P1 + */ + vfmsub231ps 6784+__svml_serf_data_internal(%rip), %ymm5, %ymm3 + +/* + * branch-free + * (exp_h(x0) * Diff) * (poly + 1.0) + */ + vfmadd213ps %ymm5, %ymm2, %ymm3 + vmovd %xmm11, %edx + vextractf128 $1, %ymm11, %xmm13 + vpextrd $1, %xmm11, %ecx + movslq %edx, %rdx + movslq %ecx, %rcx + vmovd %xmm13, %r10d + vmovq (%rax,%rdx), %xmm14 + vpextrd $2, %xmm11, %r8d + vpextrd $3, %xmm11, %r9d + vmovq (%rax,%rcx), %xmm0 + vpextrd $1, %xmm13, %r11d + vpextrd $2, %xmm13, %edx + vpextrd $3, %xmm13, %ecx + movslq %r8d, %r8 + movslq %r9d, %r9 + movslq %r10d, %r10 + movslq %r11d, %r11 + movslq %edx, %rdx + movslq %ecx, %rcx + vmovq (%rax,%r8), %xmm15 + vmovq (%rax,%r9), %xmm1 + vmovq (%rax,%r10), %xmm7 + vmovq (%rax,%r11), %xmm11 + vmovq (%rax,%rdx), %xmm12 + vmovq (%rax,%rcx), %xmm13 + vunpcklps %xmm15, %xmm14, %xmm15 + vunpcklps %xmm1, %xmm0, %xmm14 + vunpcklps %xmm12, %xmm7, %xmm0 + vunpcklps %xmm13, %xmm11, %xmm1 + vmovups 128(%rsp), %ymm11 + cfi_restore(94) + vmovups 64(%rsp), %ymm13 + cfi_restore(96) + vinsertf128 $1, %xmm0, %ymm15, %ymm7 + vinsertf128 $1, %xmm1, %ymm14, %ymm12 + vunpcklps %ymm12, %ymm7, %ymm0 + vunpckhps %ymm12, %ymm7, %ymm7 + vmovups 96(%rsp), %ymm12 + cfi_restore(95) + vmovups 32(%rsp), %ymm14 + cfi_restore(97) + vmovups (%rsp), %ymm15 + cfi_restore(98) + +/* Final result */ + vfmadd213ps %ymm0, %ymm7, %ymm3 + +/* set sign */ + vorps %ymm6, %ymm3, %ymm0 + movq %rbp, %rsp + popq %rbp + cfi_def_cfa(7, 8) + cfi_restore(6) + ret + +END(_ZGVdN8v_erff_avx2) + + .section .rodata, "a" + .align 64 + +__svml_serf_data_internal: + .long 0 + .long 1066430139 + .long 1007709690 + .long 1066429561 + .long 1016097720 + .long 1066427828 + .long 1020828656 + .long 1066424940 + .long 1024484018 + .long 1066420899 + .long 1026847466 + .long 1066415706 + .long 1029209471 + .long 1066409363 + .long 1031569748 + .long 1066401872 + .long 1032863396 + .long 1066393236 + .long 1034041375 + .long 1066383458 + .long 1035218061 + .long 1066372541 + .long 1036393311 + .long 1066360491 + .long 1037566985 + .long 1066347310 + .long 1038738940 + .long 1066333004 + .long 1039909037 + .long 1066317578 + .long 1040632264 + .long 1066301038 + .long 1041215245 + .long 1066283389 + .long 1041797089 + .long 1066264638 + .long 1042377726 + .long 1066244793 + .long 1042957089 + .long 1066223859 + .long 1043535110 + .long 1066201845 + .long 1044111721 + .long 1066178758 + .long 1044686856 + .long 1066154607 + .long 1045260449 + .long 1066129400 + .long 1045832434 + .long 1066103148 + .long 1046402745 + .long 1066075858 + .long 1046971319 + .long 1066047540 + .long 1047538090 + .long 1066018206 + .long 1048102997 + .long 1065987864 + .long 1048620988 + .long 1065956527 + .long 1048901483 + .long 1065924204 + .long 1049180953 + .long 1065890909 + .long 1049459367 + .long 1065856651 + .long 1049736696 + .long 1065821444 + .long 1050012910 + .long 1065785299 + .long 1050287979 + .long 1065748229 + .long 1050561876 + .long 1065710248 + .long 1050834572 + .long 1065671368 + .long 1051106040 + .long 1065631602 + .long 1051376250 + .long 1065590966 + .long 1051645178 + .long 1065549471 + .long 1051912796 + .long 1065507134 + .long 1052179077 + .long 1065463968 + .long 1052443997 + .long 1065419987 + .long 1052707530 + .long 1065375208 + .long 1052969651 + .long 1065306072 + .long 1053230337 + .long 1065213407 + .long 1053489563 + .long 1065119237 + .long 1053747305 + .long 1065023591 + .long 1054003542 + .long 1064926502 + .long 1054258251 + .long 1064828002 + .long 1054511410 + .long 1064728124 + .long 1054762998 + .long 1064626900 + .long 1055012994 + .long 1064524364 + .long 1055261378 + .long 1064420548 + .long 1055508130 + .long 1064315487 + .long 1055753230 + .long 1064209214 + .long 1055996661 + .long 1064101763 + .long 1056238405 + .long 1063993169 + .long 1056478442 + .long 1063883465 + .long 1056716757 + .long 1063772687 + .long 1056953333 + .long 1063660869 + .long 1057076381 + .long 1063548046 + .long 1057192906 + .long 1063434253 + .long 1057308539 + .long 1063319525 + .long 1057423272 + .long 1063203897 + .long 1057537098 + .long 1063087405 + .long 1057650010 + .long 1062970083 + .long 1057762003 + .long 1062851966 + .long 1057873070 + .long 1062733091 + .long 1057983206 + .long 1062613492 + .long 1058092404 + .long 1062493204 + .long 1058200660 + .long 1062372263 + .long 1058307969 + .long 1062250703 + .long 1058414326 + .long 1062128561 + .long 1058519726 + .long 1062005869 + .long 1058624166 + .long 1061882664 + .long 1058727642 + .long 1061758980 + .long 1058830149 + .long 1061634851 + .long 1058931685 + .long 1061510312 + .long 1059032247 + .long 1061385397 + .long 1059131831 + .long 1061260139 + .long 1059230436 + .long 1061134574 + .long 1059328058 + .long 1061008734 + .long 1059424697 + .long 1060882652 + .long 1059520349 + .long 1060756362 + .long 1059615014 + .long 1060629897 + .long 1059708691 + .long 1060503288 + .long 1059801378 + .long 1060376569 + .long 1059893075 + .long 1060249771 + .long 1059983780 + .long 1060122926 + .long 1060073495 + .long 1059996065 + .long 1060162219 + .long 1059869219 + .long 1060249952 + .long 1059742419 + .long 1060336695 + .long 1059615695 + .long 1060422447 + .long 1059489076 + .long 1060507212 + .long 1059362593 + .long 1060590988 + .long 1059236275 + .long 1060673779 + .long 1059110150 + .long 1060755585 + .long 1058984247 + .long 1060836408 + .long 1058858593 + .long 1060916251 + .long 1058733216 + .long 1060995116 + .long 1058608143 + .long 1061073004 + .long 1058483401 + .long 1061149920 + .long 1058359015 + .long 1061225865 + .long 1058235012 + .long 1061300843 + .long 1058111417 + .long 1061374857 + .long 1057988254 + .long 1061447911 + .long 1057865548 + .long 1061520007 + .long 1057743323 + .long 1061591151 + .long 1057621602 + .long 1061661346 + .long 1057500407 + .long 1061730597 + .long 1057379761 + .long 1061798907 + .long 1057259686 + .long 1061866281 + .long 1057140203 + .long 1061932724 + .long 1057021334 + .long 1061998241 + .long 1056841587 + .long 1062062836 + .long 1056606421 + .long 1062126516 + .long 1056372599 + .long 1062189285 + .long 1056140160 + .long 1062251149 + .long 1055909139 + .long 1062312113 + .long 1055679573 + .long 1062372184 + .long 1055451496 + .long 1062431366 + .long 1055224941 + .long 1062489667 + .long 1054999940 + .long 1062547091 + .long 1054776524 + .long 1062603646 + .long 1054554724 + .long 1062659338 + .long 1054334570 + .long 1062714173 + .long 1054116088 + .long 1062768158 + .long 1053899307 + .long 1062821300 + .long 1053684252 + .long 1062873605 + .long 1053470948 + .long 1062925080 + .long 1053259419 + .long 1062975732 + .long 1053049689 + .long 1063025569 + .long 1052841779 + .long 1063074597 + .long 1052635709 + .long 1063122824 + .long 1052431501 + .long 1063170257 + .long 1052229173 + .long 1063216903 + .long 1052028742 + .long 1063262770 + .long 1051830227 + .long 1063307865 + .long 1051633642 + .long 1063352196 + .long 1051439002 + .long 1063395771 + .long 1051246323 + .long 1063438597 + .long 1051055616 + .long 1063480681 + .long 1050866894 + .long 1063522033 + .long 1050680168 + .long 1063562659 + .long 1050495449 + .long 1063602567 + .long 1050312745 + .long 1063641766 + .long 1050132066 + .long 1063680262 + .long 1049953419 + .long 1063718065 + .long 1049776810 + .long 1063755182 + .long 1049602245 + .long 1063791622 + .long 1049429731 + .long 1063827391 + .long 1049259269 + .long 1063862498 + .long 1049090865 + .long 1063896952 + .long 1048924520 + .long 1063930760 + .long 1048760237 + .long 1063963930 + .long 1048598016 + .long 1063996470 + .long 1048299714 + .long 1064028389 + .long 1047983520 + .long 1064059695 + .long 1047671448 + .long 1064090395 + .long 1047363493 + .long 1064120497 + .long 1047059649 + .long 1064150010 + .long 1046759911 + .long 1064178942 + .long 1046464270 + .long 1064207300 + .long 1046172715 + .long 1064235093 + .long 1045885238 + .long 1064262328 + .long 1045601825 + .long 1064289013 + .long 1045322463 + .long 1064315157 + .long 1045047137 + .long 1064340767 + .long 1044775833 + .long 1064365851 + .long 1044508533 + .long 1064390417 + .long 1044245220 + .long 1064414473 + .long 1043985874 + .long 1064438026 + .long 1043730475 + .long 1064461084 + .long 1043479003 + .long 1064483654 + .long 1043231435 + .long 1064505745 + .long 1042987748 + .long 1064527364 + .long 1042747919 + .long 1064548517 + .long 1042511923 + .long 1064569214 + .long 1042279734 + .long 1064589461 + .long 1042051325 + .long 1064609266 + .long 1041826670 + .long 1064628635 + .long 1041605741 + .long 1064647576 + .long 1041388508 + .long 1064666097 + .long 1041174943 + .long 1064684204 + .long 1040965014 + .long 1064701905 + .long 1040758692 + .long 1064719206 + .long 1040555945 + .long 1064736115 + .long 1040356742 + .long 1064752638 + .long 1040134704 + .long 1064768783 + .long 1039750273 + .long 1064784555 + .long 1039372729 + .long 1064799962 + .long 1039002005 + .long 1064815010 + .long 1038638032 + .long 1064829706 + .long 1038280741 + .long 1064844056 + .long 1037930060 + .long 1064858067 + .long 1037585918 + .long 1064871745 + .long 1037248243 + .long 1064885096 + .long 1036916963 + .long 1064898128 + .long 1036592005 + .long 1064910844 + .long 1036273295 + .long 1064923253 + .long 1035960758 + .long 1064935359 + .long 1035654320 + .long 1064947169 + .long 1035353906 + .long 1064958689 + .long 1035059441 + .long 1064969924 + .long 1034770849 + .long 1064980879 + .long 1034488054 + .long 1064991562 + .long 1034210980 + .long 1065001977 + .long 1033939550 + .long 1065012129 + .long 1033673689 + .long 1065022024 + .long 1033413319 + .long 1065031668 + .long 1033158365 + .long 1065041065 + .long 1032908749 + .long 1065050222 + .long 1032664395 + .long 1065059142 + .long 1032425226 + .long 1065067831 + .long 1032191167 + .long 1065076294 + .long 1031962141 + .long 1065084535 + .long 1031677359 + .long 1065092561 + .long 1031238982 + .long 1065100374 + .long 1030810216 + .long 1065107981 + .long 1030390909 + .long 1065115385 + .long 1029980912 + .long 1065122591 + .long 1029580074 + .long 1065129604 + .long 1029188248 + .long 1065136427 + .long 1028805285 + .long 1065143066 + .long 1028431037 + .long 1065149524 + .long 1028065358 + .long 1065155805 + .long 1027708103 + .long 1065161914 + .long 1027359126 + .long 1065167855 + .long 1027018284 + .long 1065173631 + .long 1026685435 + .long 1065179247 + .long 1026360436 + .long 1065184706 + .long 1026043148 + .long 1065190011 + .long 1025733430 + .long 1065195168 + .long 1025431145 + .long 1065200178 + .long 1025136155 + .long 1065205046 + .long 1024848326 + .long 1065209776 + .long 1024567521 + .long 1065214370 + .long 1024293609 + .long 1065218831 + .long 1024026458 + .long 1065223165 + .long 1023765936 + .long 1065227372 + .long 1023511915 + .long 1065231457 + .long 1023118357 + .long 1065235422 + .long 1022635554 + .long 1065239272 + .long 1022164995 + .long 1065243007 + .long 1021706432 + .long 1065246633 + .long 1021259623 + .long 1065250150 + .long 1020824325 + .long 1065253563 + .long 1020400301 + .long 1065256874 + .long 1019987316 + .long 1065260085 + .long 1019585139 + .long 1065263199 + .long 1019193540 + .long 1065266219 + .long 1018812294 + .long 1065269146 + .long 1018441179 + .long 1065271985 + .long 1018079974 + .long 1065274737 + .long 1017728463 + .long 1065277404 + .long 1017386434 + .long 1065279988 + .long 1017053676 + .long 1065282493 + .long 1016729983 + .long 1065284919 + .long 1016415150 + .long 1065287270 + .long 1016108977 + .long 1065289547 + .long 1015811266 + .long 1065291752 + .long 1015521823 + .long 1065293888 + .long 1015240458 + .long 1065295955 + .long 1014912394 + .long 1065297958 + .long 1014380849 + .long 1065299896 + .long 1013864347 + .long 1065301772 + .long 1013362533 + .long 1065303587 + .long 1012875053 + .long 1065305344 + .long 1012401564 + .long 1065307044 + .long 1011941727 + .long 1065308689 + .long 1011495207 + .long 1065310280 + .long 1011061679 + .long 1065311819 + .long 1010640821 + .long 1065313307 + .long 1010232319 + .long 1065314746 + .long 1009835863 + .long 1065316137 + .long 1009451150 + .long 1065317482 + .long 1009077883 + .long 1065318783 + .long 1008715771 + .long 1065320039 + .long 1008364526 + .long 1065321254 + .long 1008023869 + .long 1065322427 + .long 1007693526 + .long 1065323561 + .long 1007373227 + .long 1065324656 + .long 1007062709 + .long 1065325714 + .long 1006761713 + .long 1065326736 + .long 1006307013 + .long 1065327723 + .long 1005741605 + .long 1065328676 + .long 1005193757 + .long 1065329596 + .long 1004662995 + .long 1065330484 + .long 1004148854 + .long 1065331341 + .long 1003650882 + .long 1065332168 + .long 1003168634 + .long 1065332966 + .long 1002701676 + .long 1065333736 + .long 1002249583 + .long 1065334479 + .long 1001811942 + .long 1065335196 + .long 1001388347 + .long 1065335887 + .long 1000978401 + .long 1065336554 + .long 1000581718 + .long 1065337197 + .long 1000197920 + .long 1065337817 + .long 999826638 + .long 1065338414 + .long 999467511 + .long 1065338990 + .long 999120188 + .long 1065339545 + .long 998784326 + .long 1065340080 + .long 998459590 + .long 1065340596 + .long 998046952 + .long 1065341093 + .long 997440036 + .long 1065341571 + .long 996853459 + .long 1065342032 + .long 996286614 + .long 1065342476 + .long 995738909 + .long 1065342903 + .long 995209770 + .long 1065343315 + .long 994698633 + .long 1065343711 + .long 994204952 + .long 1065344092 + .long 993728194 + .long 1065344460 + .long 993267840 + .long 1065344813 + .long 992823384 + .long 1065345153 + .long 992394334 + .long 1065345480 + .long 991980210 + .long 1065345795 + .long 991580547 + .long 1065346097 + .long 991194889 + .long 1065346388 + .long 990822796 + .long 1065346668 + .long 990463837 + .long 1065346938 + .long 990117594 + .long 1065347197 + .long 989711580 + .long 1065347445 + .long 989067545 + .long 1065347685 + .long 988446572 + .long 1065347915 + .long 987847912 + .long 1065348135 + .long 987270840 + .long 1065348348 + .long 986714651 + .long 1065348552 + .long 986178660 + .long 1065348748 + .long 985662200 + .long 1065348936 + .long 985164626 + .long 1065349117 + .long 984685310 + .long 1065349290 + .long 984223642 + .long 1065349457 + .long 983779031 + .long 1065349617 + .long 983350903 + .long 1065349770 + .long 982938700 + .long 1065349918 + .long 982541883 + .long 1065350059 + .long 982159927 + .long 1065350195 + .long 981792323 + .long 1065350325 + .long 981410023 + .long 1065350450 + .long 980729298 + .long 1065350570 + .long 980074409 + .long 1065350685 + .long 979444458 + .long 1065350795 + .long 978838575 + .long 1065350901 + .long 978255916 + .long 1065351002 + .long 977695663 + .long 1065351099 + .long 977157026 + .long 1065351193 + .long 976639239 + .long 1065351282 + .long 976141558 + .long 1065351367 + .long 975663265 + .long 1065351449 + .long 975203666 + .long 1065351528 + .long 974762086 + .long 1065351603 + .long 974337876 + .long 1065351675 + .long 973930403 + .long 1065351744 + .long 973539060 + .long 1065351810 + .long 973163256 + .long 1065351873 + .long 972526314 + .long 1065351934 + .long 971833480 + .long 1065351992 + .long 971168417 + .long 1065352047 + .long 970530093 + .long 1065352101 + .long 969917514 + .long 1065352151 + .long 969329717 + .long 1065352200 + .long 968765773 + .long 1065352246 + .long 968224785 + .long 1065352291 + .long 967705884 + .long 1065352334 + .long 967208234 + .long 1065352374 + .long 966731026 + .long 1065352413 + .long 966273480 + .long 1065352450 + .long 965834842 + .long 1065352486 + .long 965414386 + .long 1065352520 + .long 965011410 + .long 1065352552 + .long 964560555 + .long 1065352583 + .long 963820510 + .long 1065352613 + .long 963111507 + .long 1065352641 + .long 962432331 + .long 1065352668 + .long 961781812 + .long 1065352694 + .long 961158821 + .long 1065352719 + .long 960562270 + .long 1065352743 + .long 959991111 + .long 1065352765 + .long 959444333 + .long 1065352787 + .long 958920964 + .long 1065352807 + .long 958420065 + .long 1065352827 + .long 957940734 + .long 1065352845 + .long 957482101 + .long 1065352863 + .long 957043329 + .long 1065352880 + .long 956623612 + .long 1065352896 + .long 956143037 + .long 1065352912 + .long 955375226 + .long 1065352927 + .long 954641044 + .long 1065352941 + .long 953939107 + .long 1065352954 + .long 953268086 + .long 1065352967 + .long 952626702 + .long 1065352979 + .long 952013724 + .long 1065352991 + .long 951427969 + .long 1065353002 + .long 950868302 + .long 1065353012 + .long 950333628 + .long 1065353023 + .long 949822896 + .long 1065353032 + .long 949335099 + .long 1065353041 + .long 948869264 + .long 1065353050 + .long 948424462 + .long 1065353058 + .long 947999796 + .long 1065353066 + .long 947276109 + .long 1065353074 + .long 946502234 + .long 1065353081 + .long 945763678 + .long 1065353088 + .long 945058918 + .long 1065353094 + .long 944386495 + .long 1065353100 + .long 943745006 + .long 1065353106 + .long 943133108 + .long 1065353112 + .long 942549510 + .long 1065353117 + .long 941992974 + .long 1065353122 + .long 941462313 + .long 1065353127 + .long 940956390 + .long 1065353131 + .long 940474113 + .long 1065353136 + .long 940014434 + .long 1065353140 + .long 939576353 + .long 1065353144 + .long 938793716 + .long 1065353148 + .long 937998252 + .long 1065353151 + .long 937240450 + .long 1065353154 + .long 936518620 + .long 1065353158 + .long 935831142 + .long 1065353161 + .long 935176466 + .long 1065353164 + .long 934553105 + .long 1065353166 + .long 933959638 + .long 1065353169 + .long 933394703 + .long 1065353171 + .long 932856997 + .long 1065353174 + .long 932345273 + .long 1065353176 + .long 931858338 + .long 1065353178 + .long 931395049 + .long 1065353180 + .long 930773143 + .long 1065353182 + .long 929934696 + .long 1065353184 + .long 929137272 + .long 1065353186 + .long 928378959 + .long 1065353187 + .long 927657932 + .long 1065353189 + .long 926972445 + .long 1065353190 + .long 926320828 + .long 1065353192 + .long 925701488 + .long 1065353193 + .long 925112900 + .long 1065353194 + .long 924553608 + .long 1065353195 + .long 924022223 + .long 1065353196 + .long 923517415 + .long 1065353198 + .long 923037917 + .long 1065353199 + .long 922418156 + .long 1065353199 + .long 921553243 + .long 1065353200 + .long 920732007 + .long 1065353201 + .long 919952342 + .long 1065353202 + .long 919212238 + .long 1065353203 + .long 918509777 + .long 1065353204 + .long 917843129 + .long 1065353204 + .long 917210549 + .long 1065353205 + .long 916610371 + .long 1065353205 + .long 916041009 + .long 1065353206 + .long 915500949 + .long 1065353207 + .long 914988747 + .long 1065353207 + .long 914503029 + .long 1065353208 + .long 913726696 + .long 1065353208 + .long 912853452 + .long 1065353209 + .long 912025674 + .long 1065353209 + .long 911241096 + .long 1065353209 + .long 910497555 + .long 1065353210 + .long 909792996 + .long 1065353210 + .long 909125460 + .long 1065353210 + .long 908493081 + .long 1065353211 + .long 907894083 + .long 1065353211 + .long 907326776 + .long 1065353211 + .long 906789553 + .long 1065353212 + .long 906280881 + .long 1065353212 + .long 905628944 + .long 1065353212 + .long 904717211 + .long 1065353212 + .long 903854262 + .long 1065353213 + .long 903037590 + .long 1065353213 + .long 902264812 + .long 1065353213 + .long 901533660 + .long 1065353213 + .long 900841980 + .long 1065353213 + .long 900187723 + .long 1065353213 + .long 899568945 + .long 1065353214 + .long 898983793 + .long 1065353214 + .long 898430512 + .long 1065353214 + .long 897907432 + .long 1065353214 + .long 897244875 + .long 1065353214 + .long 896310159 + .long 1065353214 + .long 895426799 + .long 1065353214 + .long 894592079 + .long 1065353214 + .long 893803420 + .long 1065353215 + .long 893058375 + .long 1065353215 + .long 892354620 + .long 1065353215 + .long 891689952 + .long 1065353215 + .long 891062279 + .long 1065353215 + .long 890469616 + .long 1065353215 + .long 889910081 + .long 1065353215 + .long 889381890 + .long 1065353215 + .long 888574250 + .long 1065353215 + .long 887633259 + .long 1065353215 + .long 886745316 + .long 1065353215 + .long 885907536 + .long 1065353215 + .long 885117184 + .long 1065353215 + .long 884371669 + .long 1065353215 + .long 883668537 + .long 1065353215 + .long 883005462 + .long 1065353215 + .long 882380241 + .long 1065353215 + .long 881790787 + .long 1065353215 + .long 881235123 + .long 1065353216 + .long 880618920 + .long 1065353216 + .long 879631730 + .long 0 + .long 1007709690 + .long 1016097720 + .long 1020828656 + .long 1024484018 + .long 1026847466 + .long 1029209471 + .long 1031569748 + .long 1032863396 + .long 1034041375 + .long 1035218061 + .long 1036393311 + .long 1037566985 + .long 1038738940 + .long 1039909037 + .long 1040632264 + .long 1041215245 + .long 1041797089 + .long 1042377726 + .long 1042957089 + .long 1043535110 + .long 1044111721 + .long 1044686856 + .long 1045260449 + .long 1045832434 + .long 1046402745 + .long 1046971319 + .long 1047538090 + .long 1048102997 + .long 1048620988 + .long 1048901483 + .long 1049180953 + .long 1049459367 + .long 1049736696 + .long 1050012910 + .long 1050287979 + .long 1050561876 + .long 1050834572 + .long 1051106040 + .long 1051376250 + .long 1051645178 + .long 1051912796 + .long 1052179077 + .long 1052443997 + .long 1052707530 + .long 1052969651 + .long 1053230337 + .long 1053489563 + .long 1053747305 + .long 1054003542 + .long 1054258251 + .long 1054511410 + .long 1054762998 + .long 1055012994 + .long 1055261378 + .long 1055508130 + .long 1055753230 + .long 1055996661 + .long 1056238405 + .long 1056478442 + .long 1056716757 + .long 1056953333 + .long 1057076381 + .long 1057192906 + .long 1057308539 + .long 1057423272 + .long 1057537098 + .long 1057650010 + .long 1057762003 + .long 1057873070 + .long 1057983206 + .long 1058092404 + .long 1058200660 + .long 1058307969 + .long 1058414326 + .long 1058519726 + .long 1058624166 + .long 1058727642 + .long 1058830149 + .long 1058931685 + .long 1059032247 + .long 1059131831 + .long 1059230436 + .long 1059328058 + .long 1059424697 + .long 1059520349 + .long 1059615014 + .long 1059708691 + .long 1059801378 + .long 1059893075 + .long 1059983780 + .long 1060073495 + .long 1060162219 + .long 1060249952 + .long 1060336695 + .long 1060422447 + .long 1060507212 + .long 1060590988 + .long 1060673779 + .long 1060755585 + .long 1060836408 + .long 1060916251 + .long 1060995116 + .long 1061073004 + .long 1061149920 + .long 1061225865 + .long 1061300843 + .long 1061374857 + .long 1061447911 + .long 1061520007 + .long 1061591151 + .long 1061661346 + .long 1061730597 + .long 1061798907 + .long 1061866281 + .long 1061932724 + .long 1061998241 + .long 1062062836 + .long 1062126516 + .long 1062189285 + .long 1062251149 + .long 1062312113 + .long 1062372184 + .long 1062431366 + .long 1062489667 + .long 1062547091 + .long 1062603646 + .long 1062659338 + .long 1062714173 + .long 1062768158 + .long 1062821300 + .long 1062873605 + .long 1062925080 + .long 1062975732 + .long 1063025569 + .long 1063074597 + .long 1063122824 + .long 1063170257 + .long 1063216903 + .long 1063262770 + .long 1063307865 + .long 1063352196 + .long 1063395771 + .long 1063438597 + .long 1063480681 + .long 1063522033 + .long 1063562659 + .long 1063602567 + .long 1063641766 + .long 1063680262 + .long 1063718065 + .long 1063755182 + .long 1063791622 + .long 1063827391 + .long 1063862498 + .long 1063896952 + .long 1063930760 + .long 1063963930 + .long 1063996470 + .long 1064028389 + .long 1064059695 + .long 1064090395 + .long 1064120497 + .long 1064150010 + .long 1064178942 + .long 1064207300 + .long 1064235093 + .long 1064262328 + .long 1064289013 + .long 1064315157 + .long 1064340767 + .long 1064365851 + .long 1064390417 + .long 1064414473 + .long 1064438026 + .long 1064461084 + .long 1064483654 + .long 1064505745 + .long 1064527364 + .long 1064548517 + .long 1064569214 + .long 1064589461 + .long 1064609266 + .long 1064628635 + .long 1064647576 + .long 1064666097 + .long 1064684204 + .long 1064701905 + .long 1064719206 + .long 1064736115 + .long 1064752638 + .long 1064768783 + .long 1064784555 + .long 1064799962 + .long 1064815010 + .long 1064829706 + .long 1064844056 + .long 1064858067 + .long 1064871745 + .long 1064885096 + .long 1064898128 + .long 1064910844 + .long 1064923253 + .long 1064935359 + .long 1064947169 + .long 1064958689 + .long 1064969924 + .long 1064980879 + .long 1064991562 + .long 1065001977 + .long 1065012129 + .long 1065022024 + .long 1065031668 + .long 1065041065 + .long 1065050222 + .long 1065059142 + .long 1065067831 + .long 1065076294 + .long 1065084535 + .long 1065092561 + .long 1065100374 + .long 1065107981 + .long 1065115385 + .long 1065122591 + .long 1065129604 + .long 1065136427 + .long 1065143066 + .long 1065149524 + .long 1065155805 + .long 1065161914 + .long 1065167855 + .long 1065173631 + .long 1065179247 + .long 1065184706 + .long 1065190011 + .long 1065195168 + .long 1065200178 + .long 1065205046 + .long 1065209776 + .long 1065214370 + .long 1065218831 + .long 1065223165 + .long 1065227372 + .long 1065231457 + .long 1065235422 + .long 1065239272 + .long 1065243007 + .long 1065246633 + .long 1065250150 + .long 1065253563 + .long 1065256874 + .long 1065260085 + .long 1065263199 + .long 1065266219 + .long 1065269146 + .long 1065271985 + .long 1065274737 + .long 1065277404 + .long 1065279988 + .long 1065282493 + .long 1065284919 + .long 1065287270 + .long 1065289547 + .long 1065291752 + .long 1065293888 + .long 1065295955 + .long 1065297958 + .long 1065299896 + .long 1065301772 + .long 1065303587 + .long 1065305344 + .long 1065307044 + .long 1065308689 + .long 1065310280 + .long 1065311819 + .long 1065313307 + .long 1065314746 + .long 1065316137 + .long 1065317482 + .long 1065318783 + .long 1065320039 + .long 1065321254 + .long 1065322427 + .long 1065323561 + .long 1065324656 + .long 1065325714 + .long 1065326736 + .long 1065327723 + .long 1065328676 + .long 1065329596 + .long 1065330484 + .long 1065331341 + .long 1065332168 + .long 1065332966 + .long 1065333736 + .long 1065334479 + .long 1065335196 + .long 1065335887 + .long 1065336554 + .long 1065337197 + .long 1065337817 + .long 1065338414 + .long 1065338990 + .long 1065339545 + .long 1065340080 + .long 1065340596 + .long 1065341093 + .long 1065341571 + .long 1065342032 + .long 1065342476 + .long 1065342903 + .long 1065343315 + .long 1065343711 + .long 1065344092 + .long 1065344460 + .long 1065344813 + .long 1065345153 + .long 1065345480 + .long 1065345795 + .long 1065346097 + .long 1065346388 + .long 1065346668 + .long 1065346938 + .long 1065347197 + .long 1065347445 + .long 1065347685 + .long 1065347915 + .long 1065348135 + .long 1065348348 + .long 1065348552 + .long 1065348748 + .long 1065348936 + .long 1065349117 + .long 1065349290 + .long 1065349457 + .long 1065349617 + .long 1065349770 + .long 1065349918 + .long 1065350059 + .long 1065350195 + .long 1065350325 + .long 1065350450 + .long 1065350570 + .long 1065350685 + .long 1065350795 + .long 1065350901 + .long 1065351002 + .long 1065351099 + .long 1065351193 + .long 1065351282 + .long 1065351367 + .long 1065351449 + .long 1065351528 + .long 1065351603 + .long 1065351675 + .long 1065351744 + .long 1065351810 + .long 1065351873 + .long 1065351934 + .long 1065351992 + .long 1065352047 + .long 1065352101 + .long 1065352151 + .long 1065352200 + .long 1065352246 + .long 1065352291 + .long 1065352334 + .long 1065352374 + .long 1065352413 + .long 1065352450 + .long 1065352486 + .long 1065352520 + .long 1065352552 + .long 1065352583 + .long 1065352613 + .long 1065352641 + .long 1065352668 + .long 1065352694 + .long 1065352719 + .long 1065352743 + .long 1065352765 + .long 1065352787 + .long 1065352807 + .long 1065352827 + .long 1065352845 + .long 1065352863 + .long 1065352880 + .long 1065352896 + .long 1065352912 + .long 1065352927 + .long 1065352941 + .long 1065352954 + .long 1065352967 + .long 1065352979 + .long 1065352991 + .long 1065353002 + .long 1065353012 + .long 1065353023 + .long 1065353032 + .long 1065353041 + .long 1065353050 + .long 1065353058 + .long 1065353066 + .long 1065353074 + .long 1065353081 + .long 1065353088 + .long 1065353094 + .long 1065353100 + .long 1065353106 + .long 1065353112 + .long 1065353117 + .long 1065353122 + .long 1065353127 + .long 1065353131 + .long 1065353136 + .long 1065353140 + .long 1065353144 + .long 1065353148 + .long 1065353151 + .long 1065353154 + .long 1065353158 + .long 1065353161 + .long 1065353164 + .long 1065353166 + .long 1065353169 + .long 1065353171 + .long 1065353174 + .long 1065353176 + .long 1065353178 + .long 1065353180 + .long 1065353182 + .long 1065353184 + .long 1065353186 + .long 1065353187 + .long 1065353189 + .long 1065353190 + .long 1065353192 + .long 1065353193 + .long 1065353194 + .long 1065353195 + .long 1065353196 + .long 1065353198 + .long 1065353199 + .long 1065353199 + .long 1065353200 + .long 1065353201 + .long 1065353202 + .long 1065353203 + .long 1065353204 + .long 1065353204 + .long 1065353205 + .long 1065353205 + .long 1065353206 + .long 1065353207 + .long 1065353207 + .long 1065353208 + .long 1065353208 + .long 1065353209 + .long 1065353209 + .long 1065353209 + .long 1065353210 + .long 1065353210 + .long 1065353210 + .long 1065353211 + .long 1065353211 + .long 1065353211 + .long 1065353212 + .long 1065353212 + .long 1065353212 + .long 1065353212 + .long 1065353213 + .long 1065353213 + .long 1065353213 + .long 1065353213 + .long 1065353213 + .long 1065353213 + .long 1065353214 + .long 1065353214 + .long 1065353214 + .long 1065353214 + .long 1065353214 + .long 1065353214 + .long 1065353214 + .long 1065353214 + .long 1065353215 + .long 1065353215 + .long 1065353215 + .long 1065353215 + .long 1065353215 + .long 1065353215 + .long 1065353215 + .long 1065353215 + .long 1065353215 + .long 1065353215 + .long 1065353215 + .long 1065353215 + .long 1065353215 + .long 1065353215 + .long 1065353215 + .long 1065353215 + .long 1065353215 + .long 1065353215 + .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 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 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 8191 + .long 8191 + .long 8191 + .long 8191 + .long 8191 + .long 8191 + .long 8191 + .long 8191 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 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 1081835520 + .long 1081835520 + .long 1081835520 + .long 1081835520 + .long 1081835520 + .long 1081835520 + .long 1081835520 + .long 1081835520 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .long 1066430139 + .long 1066430139 + .long 1066430139 + .long 1066430139 + .long 1066430139 + .long 1066430139 + .long 1066430139 + .long 1066430139 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .long 1199570944 + .long 1199570944 + .long 1199570944 + .long 1199570944 + .long 1199570944 + .long 1199570944 + .long 1199570944 + .long 1199570944 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .long 1021313024 + .long 1021313024 + .long 1021313024 + .long 1021313024 + .long 1021313024 + .long 1021313024 + .long 1021313024 + .long 1021313024 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .long 796917760 + .long 796917760 + .long 796917760 + .long 796917760 + .long 796917760 + .long 796917760 + .long 796917760 + .long 796917760 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .long 1059760819 + .long 1059760819 + .long 1059760819 + .long 1059760819 + .long 1059760819 + .long 1059760819 + .long 1059760819 + .long 1059760819 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .long 3212836869 + .long 3212836869 + .long 3212836869 + .long 3212836869 + .long 3212836869 + .long 3212836869 + .long 3212836869 + .long 3212836869 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .long 3198855902 + .long 3198855902 + .long 3198855902 + .long 3198855902 + .long 3198855902 + .long 3198855902 + .long 3198855902 + .long 3198855902 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .long 3212836874 + .long 3212836874 + .long 3212836874 + .long 3212836874 + .long 3212836874 + .long 3212836874 + .long 3212836874 + .long 3212836874 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .long 1096125530 + .long 1096125530 + .long 1096125530 + .long 1096125530 + .long 1096125530 + .long 1096125530 + .long 1096125530 + .long 1096125530 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .long 3644045571 + .long 1072758523 + .long 3644045571 + .long 1072758523 + .long 3644045571 + .long 1072758523 + .long 3644045571 + .long 1072758523 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .long 270426983 + .long 3217467720 + .long 270426983 + .long 3217467720 + .long 270426983 + .long 3217467720 + .long 270426983 + .long 3217467720 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .long 3462409323 + .long 1067688756 + .long 3462409323 + .long 1067688756 + .long 3462409323 + .long 1067688756 + .long 3462409323 + .long 1067688756 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .long 3926688220 + .long 3212415753 + .long 3926688220 + .long 3212415753 + .long 3926688220 + .long 3212415753 + .long 3926688220 + .long 3212415753 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .long 1245766546 + .long 1061645814 + .long 1245766546 + .long 1061645814 + .long 1245766546 + .long 1061645814 + .long 1245766546 + .long 1061645814 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .long 3109064414 + .long 3205124630 + .long 3109064414 + .long 3205124630 + .long 3109064414 + .long 3205124630 + .long 3109064414 + .long 3205124630 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .long 2512971936 + .long 1051031883 + .long 2512971936 + .long 1051031883 + .long 2512971936 + .long 1051031883 + .long 2512971936 + .long 1051031883 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .long 3028677391 + .long 1049933504 + .long 3028677391 + .long 1049933504 + .long 3028677391 + .long 1049933504 + .long 3028677391 + .long 1049933504 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .long 3783197987 + .long 3194323052 + .long 3783197987 + .long 3194323052 + .long 3783197987 + .long 3194323052 + .long 3783197987 + .long 3194323052 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .long 74505031 + .long 1042748772 + .long 74505031 + .long 1042748772 + .long 74505031 + .long 1042748772 + .long 74505031 + .long 1042748772 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .long 1406668547 + .long 3185429286 + .long 1406668547 + .long 3185429286 + .long 1406668547 + .long 3185429286 + .long 1406668547 + .long 3185429286 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .long 3345142763 + .long 1032186591 + .long 3345142763 + .long 1032186591 + .long 3345142763 + .long 1032186591 + .long 3345142763 + .long 1032186591 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .long 678555889 + .long 3172755082 + .long 678555889 + .long 3172755082 + .long 678555889 + .long 3172755082 + .long 678555889 + .long 3172755082 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .long 1087852134 + .long 1087852134 + .long 1087852134 + .long 1087852134 + .long 1087852134 + .long 1087852134 + .long 1087852134 + .long 1087852134 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .long 1065874727 + .long 1065874727 + .long 1065874727 + .long 1065874727 + .long 1065874727 + .long 1065874727 + .long 1065874727 + .long 1065874727 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .long 3191107981 + .long 3191107981 + .long 3191107981 + .long 3191107981 + .long 3191107981 + .long 3191107981 + .long 3191107981 + .long 3191107981 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .long 1024942079 + .long 1024942079 + .long 1024942079 + .long 1024942079 + .long 1024942079 + .long 1024942079 + .long 1024942079 + .long 1024942079 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .long 3148844381 + .long 3148844381 + .long 3148844381 + .long 3148844381 + .long 3148844381 + .long 3148844381 + .long 3148844381 + .long 3148844381 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .long 972031746 + .long 972031746 + .long 972031746 + .long 972031746 + .long 972031746 + .long 972031746 + .long 972031746 + .long 972031746 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .long 3079608568 + .long 3079608568 + .long 3079608568 + .long 3079608568 + .long 3079608568 + .long 3079608568 + .long 3079608568 + .long 3079608568 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .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_serf_data_internal,@object + .size __svml_serf_data_internal,8256 diff --git a/sysdeps/x86_64/fpu/svml_d_erf2_core.S b/sysdeps/x86_64/fpu/svml_d_erf2_core.S new file mode 100644 index 0000000000..6ef30af2bd --- /dev/null +++ b/sysdeps/x86_64/fpu/svml_d_erf2_core.S @@ -0,0 +1,29 @@ +/* Function erf 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 + . */ + +#include +#include "svml_d_wrapper_impl.h" + + .text +ENTRY (_ZGVbN2v_erf) +WRAPPER_IMPL_SSE2 erf +END (_ZGVbN2v_erf) + +#ifndef USE_MULTIARCH + libmvec_hidden_def (_ZGVbN2v_erf) +#endif diff --git a/sysdeps/x86_64/fpu/svml_d_erf4_core.S b/sysdeps/x86_64/fpu/svml_d_erf4_core.S new file mode 100644 index 0000000000..2ca8dfe92e --- /dev/null +++ b/sysdeps/x86_64/fpu/svml_d_erf4_core.S @@ -0,0 +1,29 @@ +/* Function erf 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 + . */ + +#include +#include "svml_d_wrapper_impl.h" + + .text +ENTRY (_ZGVdN4v_erf) +WRAPPER_IMPL_AVX _ZGVbN2v_erf +END (_ZGVdN4v_erf) + +#ifndef USE_MULTIARCH + libmvec_hidden_def (_ZGVdN4v_erf) +#endif diff --git a/sysdeps/x86_64/fpu/svml_d_erf4_core_avx.S b/sysdeps/x86_64/fpu/svml_d_erf4_core_avx.S new file mode 100644 index 0000000000..264ff09459 --- /dev/null +++ b/sysdeps/x86_64/fpu/svml_d_erf4_core_avx.S @@ -0,0 +1,25 @@ +/* Function erf 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 + . */ + +#include +#include "svml_d_wrapper_impl.h" + + .text +ENTRY (_ZGVcN4v_erf) +WRAPPER_IMPL_AVX _ZGVbN2v_erf +END (_ZGVcN4v_erf) diff --git a/sysdeps/x86_64/fpu/svml_d_erf8_core.S b/sysdeps/x86_64/fpu/svml_d_erf8_core.S new file mode 100644 index 0000000000..de8c2a48bb --- /dev/null +++ b/sysdeps/x86_64/fpu/svml_d_erf8_core.S @@ -0,0 +1,25 @@ +/* Function erf 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 + . */ + +#include +#include "svml_d_wrapper_impl.h" + + .text +ENTRY (_ZGVeN8v_erf) +WRAPPER_IMPL_AVX512 _ZGVdN4v_erf +END (_ZGVeN8v_erf) diff --git a/sysdeps/x86_64/fpu/svml_s_erff16_core.S b/sysdeps/x86_64/fpu/svml_s_erff16_core.S new file mode 100644 index 0000000000..2c5037a0ec --- /dev/null +++ b/sysdeps/x86_64/fpu/svml_s_erff16_core.S @@ -0,0 +1,25 @@ +/* Function erff 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 + . */ + +#include +#include "svml_s_wrapper_impl.h" + + .text +ENTRY (_ZGVeN16v_erff) +WRAPPER_IMPL_AVX512 _ZGVdN8v_erff +END (_ZGVeN16v_erff) diff --git a/sysdeps/x86_64/fpu/svml_s_erff4_core.S b/sysdeps/x86_64/fpu/svml_s_erff4_core.S new file mode 100644 index 0000000000..0f58bb7aaf --- /dev/null +++ b/sysdeps/x86_64/fpu/svml_s_erff4_core.S @@ -0,0 +1,29 @@ +/* Function erff 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 + . */ + +#include +#include "svml_s_wrapper_impl.h" + + .text +ENTRY (_ZGVbN4v_erff) +WRAPPER_IMPL_SSE2 erff +END (_ZGVbN4v_erff) + +#ifndef USE_MULTIARCH + libmvec_hidden_def (_ZGVbN4v_erff) +#endif diff --git a/sysdeps/x86_64/fpu/svml_s_erff8_core.S b/sysdeps/x86_64/fpu/svml_s_erff8_core.S new file mode 100644 index 0000000000..a9f287c420 --- /dev/null +++ b/sysdeps/x86_64/fpu/svml_s_erff8_core.S @@ -0,0 +1,29 @@ +/* Function erff 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 + . */ + +#include +#include "svml_s_wrapper_impl.h" + + .text +ENTRY (_ZGVdN8v_erff) +WRAPPER_IMPL_AVX _ZGVbN4v_erff +END (_ZGVdN8v_erff) + +#ifndef USE_MULTIARCH + libmvec_hidden_def (_ZGVdN8v_erff) +#endif diff --git a/sysdeps/x86_64/fpu/svml_s_erff8_core_avx.S b/sysdeps/x86_64/fpu/svml_s_erff8_core_avx.S new file mode 100644 index 0000000000..ca5a8048e8 --- /dev/null +++ b/sysdeps/x86_64/fpu/svml_s_erff8_core_avx.S @@ -0,0 +1,25 @@ +/* Function erff 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 + . */ + +#include +#include "svml_s_wrapper_impl.h" + + .text +ENTRY (_ZGVcN8v_erff) +WRAPPER_IMPL_AVX _ZGVbN4v_erff +END (_ZGVcN8v_erff) diff --git a/sysdeps/x86_64/fpu/test-double-libmvec-erf-avx.c b/sysdeps/x86_64/fpu/test-double-libmvec-erf-avx.c new file mode 100644 index 0000000000..a2eceefc9b --- /dev/null +++ b/sysdeps/x86_64/fpu/test-double-libmvec-erf-avx.c @@ -0,0 +1 @@ +#include "test-double-libmvec-erf.c" diff --git a/sysdeps/x86_64/fpu/test-double-libmvec-erf-avx2.c b/sysdeps/x86_64/fpu/test-double-libmvec-erf-avx2.c new file mode 100644 index 0000000000..a2eceefc9b --- /dev/null +++ b/sysdeps/x86_64/fpu/test-double-libmvec-erf-avx2.c @@ -0,0 +1 @@ +#include "test-double-libmvec-erf.c" diff --git a/sysdeps/x86_64/fpu/test-double-libmvec-erf-avx512f.c b/sysdeps/x86_64/fpu/test-double-libmvec-erf-avx512f.c new file mode 100644 index 0000000000..a2eceefc9b --- /dev/null +++ b/sysdeps/x86_64/fpu/test-double-libmvec-erf-avx512f.c @@ -0,0 +1 @@ +#include "test-double-libmvec-erf.c" diff --git a/sysdeps/x86_64/fpu/test-double-libmvec-erf.c b/sysdeps/x86_64/fpu/test-double-libmvec-erf.c new file mode 100644 index 0000000000..c1ded24b1d --- /dev/null +++ b/sysdeps/x86_64/fpu/test-double-libmvec-erf.c @@ -0,0 +1,3 @@ +#define LIBMVEC_TYPE double +#define LIBMVEC_FUNC erf +#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 03fcb80d95..cc04bd4515 100644 --- a/sysdeps/x86_64/fpu/test-double-vlen2-wrappers.c +++ b/sysdeps/x86_64/fpu/test-double-vlen2-wrappers.c @@ -36,6 +36,7 @@ VECTOR_WRAPPER_ff (WRAPPER_NAME (atan2), _ZGVbN2vv_atan2) VECTOR_WRAPPER (WRAPPER_NAME (atanh), _ZGVbN2v_atanh) VECTOR_WRAPPER (WRAPPER_NAME (cbrt), _ZGVbN2v_cbrt) VECTOR_WRAPPER (WRAPPER_NAME (cosh), _ZGVbN2v_cosh) +VECTOR_WRAPPER (WRAPPER_NAME (erf), _ZGVbN2v_erf) #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 03e1d9eeda..25c2c67d01 100644 --- a/sysdeps/x86_64/fpu/test-double-vlen4-avx2-wrappers.c +++ b/sysdeps/x86_64/fpu/test-double-vlen4-avx2-wrappers.c @@ -39,6 +39,7 @@ VECTOR_WRAPPER_ff (WRAPPER_NAME (atan2), _ZGVdN4vv_atan2) VECTOR_WRAPPER (WRAPPER_NAME (atanh), _ZGVdN4v_atanh) VECTOR_WRAPPER (WRAPPER_NAME (cbrt), _ZGVdN4v_cbrt) VECTOR_WRAPPER (WRAPPER_NAME (cosh), _ZGVdN4v_cosh) +VECTOR_WRAPPER (WRAPPER_NAME (erf), _ZGVdN4v_erf) #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 ed0f71570a..34ee56dc3d 100644 --- a/sysdeps/x86_64/fpu/test-double-vlen4-wrappers.c +++ b/sysdeps/x86_64/fpu/test-double-vlen4-wrappers.c @@ -36,6 +36,7 @@ VECTOR_WRAPPER_ff (WRAPPER_NAME (atan2), _ZGVcN4vv_atan2) VECTOR_WRAPPER (WRAPPER_NAME (atanh), _ZGVcN4v_atanh) VECTOR_WRAPPER (WRAPPER_NAME (cbrt), _ZGVcN4v_cbrt) VECTOR_WRAPPER (WRAPPER_NAME (cosh), _ZGVcN4v_cosh) +VECTOR_WRAPPER (WRAPPER_NAME (erf), _ZGVcN4v_erf) #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 3cb0f61667..16890dd28e 100644 --- a/sysdeps/x86_64/fpu/test-double-vlen8-wrappers.c +++ b/sysdeps/x86_64/fpu/test-double-vlen8-wrappers.c @@ -36,6 +36,7 @@ VECTOR_WRAPPER_ff (WRAPPER_NAME (atan2), _ZGVeN8vv_atan2) VECTOR_WRAPPER (WRAPPER_NAME (atanh), _ZGVeN8v_atanh) VECTOR_WRAPPER (WRAPPER_NAME (cbrt), _ZGVeN8v_cbrt) VECTOR_WRAPPER (WRAPPER_NAME (cosh), _ZGVeN8v_cosh) +VECTOR_WRAPPER (WRAPPER_NAME (erf), _ZGVeN8v_erf) #ifndef __ILP32__ # define VEC_INT_TYPE __m512i diff --git a/sysdeps/x86_64/fpu/test-float-libmvec-erff-avx.c b/sysdeps/x86_64/fpu/test-float-libmvec-erff-avx.c new file mode 100644 index 0000000000..8cdf4dc069 --- /dev/null +++ b/sysdeps/x86_64/fpu/test-float-libmvec-erff-avx.c @@ -0,0 +1 @@ +#include "test-float-libmvec-erff.c" diff --git a/sysdeps/x86_64/fpu/test-float-libmvec-erff-avx2.c b/sysdeps/x86_64/fpu/test-float-libmvec-erff-avx2.c new file mode 100644 index 0000000000..8cdf4dc069 --- /dev/null +++ b/sysdeps/x86_64/fpu/test-float-libmvec-erff-avx2.c @@ -0,0 +1 @@ +#include "test-float-libmvec-erff.c" diff --git a/sysdeps/x86_64/fpu/test-float-libmvec-erff-avx512f.c b/sysdeps/x86_64/fpu/test-float-libmvec-erff-avx512f.c new file mode 100644 index 0000000000..8cdf4dc069 --- /dev/null +++ b/sysdeps/x86_64/fpu/test-float-libmvec-erff-avx512f.c @@ -0,0 +1 @@ +#include "test-float-libmvec-erff.c" diff --git a/sysdeps/x86_64/fpu/test-float-libmvec-erff.c b/sysdeps/x86_64/fpu/test-float-libmvec-erff.c new file mode 100644 index 0000000000..ba83826ab9 --- /dev/null +++ b/sysdeps/x86_64/fpu/test-float-libmvec-erff.c @@ -0,0 +1,3 @@ +#define LIBMVEC_TYPE float +#define LIBMVEC_FUNC erff +#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 c0ac6809e8..94653998c5 100644 --- a/sysdeps/x86_64/fpu/test-float-vlen16-wrappers.c +++ b/sysdeps/x86_64/fpu/test-float-vlen16-wrappers.c @@ -36,6 +36,7 @@ VECTOR_WRAPPER_ff (WRAPPER_NAME (atan2f), _ZGVeN16vv_atan2f) VECTOR_WRAPPER (WRAPPER_NAME (atanhf), _ZGVeN16v_atanhf) VECTOR_WRAPPER (WRAPPER_NAME (cbrtf), _ZGVeN16v_cbrtf) VECTOR_WRAPPER (WRAPPER_NAME (coshf), _ZGVeN16v_coshf) +VECTOR_WRAPPER (WRAPPER_NAME (erff), _ZGVeN16v_erff) #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 5fb185e6fe..ebd49667d6 100644 --- a/sysdeps/x86_64/fpu/test-float-vlen4-wrappers.c +++ b/sysdeps/x86_64/fpu/test-float-vlen4-wrappers.c @@ -36,6 +36,7 @@ VECTOR_WRAPPER_ff (WRAPPER_NAME (atan2f), _ZGVbN4vv_atan2f) VECTOR_WRAPPER (WRAPPER_NAME (atanhf), _ZGVbN4v_atanhf) VECTOR_WRAPPER (WRAPPER_NAME (cbrtf), _ZGVbN4v_cbrtf) VECTOR_WRAPPER (WRAPPER_NAME (coshf), _ZGVbN4v_coshf) +VECTOR_WRAPPER (WRAPPER_NAME (erff), _ZGVbN4v_erff) #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 7ab40a72d0..7419674f5c 100644 --- a/sysdeps/x86_64/fpu/test-float-vlen8-avx2-wrappers.c +++ b/sysdeps/x86_64/fpu/test-float-vlen8-avx2-wrappers.c @@ -39,6 +39,7 @@ VECTOR_WRAPPER_ff (WRAPPER_NAME (atan2f), _ZGVdN8vv_atan2f) VECTOR_WRAPPER (WRAPPER_NAME (atanhf), _ZGVdN8v_atanhf) VECTOR_WRAPPER (WRAPPER_NAME (cbrtf), _ZGVdN8v_cbrtf) VECTOR_WRAPPER (WRAPPER_NAME (coshf), _ZGVdN8v_coshf) +VECTOR_WRAPPER (WRAPPER_NAME (erff), _ZGVdN8v_erff) /* 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 efd661db69..8a77b15c6e 100644 --- a/sysdeps/x86_64/fpu/test-float-vlen8-wrappers.c +++ b/sysdeps/x86_64/fpu/test-float-vlen8-wrappers.c @@ -36,6 +36,7 @@ VECTOR_WRAPPER_ff (WRAPPER_NAME (atan2f), _ZGVcN8vv_atan2f) VECTOR_WRAPPER (WRAPPER_NAME (atanhf), _ZGVcN8v_atanhf) VECTOR_WRAPPER (WRAPPER_NAME (cbrtf), _ZGVcN8v_cbrtf) VECTOR_WRAPPER (WRAPPER_NAME (coshf), _ZGVcN8v_coshf) +VECTOR_WRAPPER (WRAPPER_NAME (erff), _ZGVcN8v_erff) #define VEC_INT_TYPE __m128i