/* Function erf vectorized with AVX2.
   Copyright (C) 2021-2024 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)
 *
 */

/* Offsets for data table __svml_derf_data_internal
 */
#define _erf_tbl			0
#define _AbsMask			12288
#define _MaxThreshold			12320
#define _SRound				12352
#define _U2Threshold			12384
#define _poly1_0			12416
#define _poly1_1			12448
#define _poly3_0			12480
#define _poly3_1			12512
#define _poly5_0			12544
#define _poly5_1			12576
#define _poly1_2			12608
#define _poly3_2			12640
#define _poly1_3			12672
#define _poly3_3			12704
#define _Mask32				12736

#include <sysdep.h>

	.section .text.avx2, "ax", @progbits
ENTRY(_ZGVdN4v_erf_avx2)
	/*
	 * vector gather: erf(x0),
	 * second value is exp(-x0*x0)
	 */
	lea	__svml_derf_data_internal(%rip), %rdi
	vmovupd	_SRound+__svml_derf_data_internal(%rip), %ymm6
	vandpd	_AbsMask+__svml_derf_data_internal(%rip), %ymm0, %ymm5

	/*
	 * erf(x) rounds to 1.0 for x>_MaxThreshold (5.9921875)
	 * can compute all results in the main path
	 */
	vminpd	_MaxThreshold+__svml_derf_data_internal(%rip), %ymm5, %ymm7
	vaddpd	%ymm6, %ymm7, %ymm10
	vcmpgt_oqpd _U2Threshold+__svml_derf_data_internal(%rip), %ymm7, %ymm9
	vpsllq	$4, %ymm10, %ymm11
	vsubpd	%ymm6, %ymm10, %ymm8
	vandps	_Mask32+__svml_derf_data_internal(%rip), %ymm11, %ymm12
	vsubpd	%ymm8, %ymm7, %ymm3
	vmulpd	%ymm3, %ymm8, %ymm2
	vandpd	%ymm9, %ymm3, %ymm1

	/* NaN fixup */
	vminpd	%ymm5, %ymm3, %ymm3

	/* save sign */
	vxorpd	%ymm0, %ymm5, %ymm4

	/* T^2 */
	vmulpd	%ymm2, %ymm2, %ymm5
	vextractf128 $1, %ymm12, %xmm13
	vmovd	%xmm12, %eax
	vmovd	%xmm13, %ecx
	vpextrd	$2, %xmm12, %edx
	vpextrd	$2, %xmm13, %esi
	movslq	%eax, %rax
	movslq	%edx, %rdx
	movslq	%ecx, %rcx
	movslq	%esi, %rsi

	/* Sign | Diff */
	vxorpd	%ymm4, %ymm3, %ymm12

	/*
	 * _LA_ polynomial computation
	 * Start polynomial evaluation
	 */
	vmovupd	_poly1_0+__svml_derf_data_internal(%rip), %ymm3
	vmovupd	(%rdi, %rax), %xmm6
	vmovupd	(%rdi, %rdx), %xmm7
	vmovupd	(%rdi, %rcx), %xmm8
	vmovupd	(%rdi, %rsi), %xmm9
	vunpcklpd %xmm7, %xmm6, %xmm14
	vunpcklpd %xmm9, %xmm8, %xmm15

	/* D2 = Diff^2 */
	vmulpd	%ymm1, %ymm1, %ymm13
	vfmadd213pd _poly1_1+__svml_derf_data_internal(%rip), %ymm2, %ymm3
	vmovupd	_poly5_0+__svml_derf_data_internal(%rip), %ymm1
	vunpckhpd %xmm9, %xmm8, %xmm10
	vfmadd213pd _poly1_2+__svml_derf_data_internal(%rip), %ymm2, %ymm3
	vfmadd213pd _poly5_1+__svml_derf_data_internal(%rip), %ymm2, %ymm1
	vfmadd213pd _poly1_3+__svml_derf_data_internal(%rip), %ymm2, %ymm3
	vfmadd213pd _poly3_3+__svml_derf_data_internal(%rip), %ymm13, %ymm1

	/* P1 = T^2*P1 - T */
	vfmsub213pd %ymm2, %ymm5, %ymm3
	vinsertf128 $1, %xmm15, %ymm14, %ymm0
	vunpckhpd %xmm7, %xmm6, %xmm14
	vmovupd	_poly3_0+__svml_derf_data_internal(%rip), %ymm6
	vfmadd213pd _poly3_1+__svml_derf_data_internal(%rip), %ymm2, %ymm6
	vfmadd213pd _poly3_2+__svml_derf_data_internal(%rip), %ymm2, %ymm6
	vfmadd213pd %ymm1, %ymm2, %ymm6

	/* P1 + P3*D2 */
	vfmadd213pd %ymm3, %ymm13, %ymm6

	/* Sign | _Erf_H */
	vxorpd	%ymm4, %ymm0, %ymm0
	vinsertf128 $1, %xmm10, %ymm14, %ymm11

	/* exp_h(x0) * Diff */
	vmulpd	%ymm12, %ymm11, %ymm2

	/*
	 * branch-free
	 * low part of result: exp_h(x0) * Diff*(1+P1)
	 */
	vfmadd213pd %ymm2, %ymm2, %ymm6

	/* Final result */
	vaddpd	%ymm6, %ymm0, %ymm15

	/* Fix erf(-0) = -0 */
	vorpd	%ymm4, %ymm15, %ymm0
	ret

END(_ZGVdN4v_erf_avx2)

	.section .rodata, "a"
	.align	32

#ifdef __svml_derf_data_internal_typedef
typedef unsigned int VUINT32;
typedef struct {
	__declspec(align(32)) VUINT32 _erf_tbl[6*128*2][2];
	__declspec(align(32)) VUINT32 _AbsMask[4][2];
	__declspec(align(32)) VUINT32 _MaxThreshold[4][2];
	__declspec(align(32)) VUINT32 _SRound[4][2];
	__declspec(align(32)) VUINT32 _U2Threshold[4][2];
	__declspec(align(32)) VUINT32 _poly1_0[4][2];
	__declspec(align(32)) VUINT32 _poly1_1[4][2];
	__declspec(align(32)) VUINT32 _poly3_0[4][2];
	__declspec(align(32)) VUINT32 _poly3_1[4][2];
	__declspec(align(32)) VUINT32 _poly5_0[4][2];
	__declspec(align(32)) VUINT32 _poly5_1[4][2];
	__declspec(align(32)) VUINT32 _poly1_2[4][2];
	__declspec(align(32)) VUINT32 _poly3_2[4][2];
	__declspec(align(32)) VUINT32 _poly1_3[4][2];
	__declspec(align(32)) VUINT32 _poly3_3[4][2];
	__declspec(align(32)) VUINT32 _Mask32[4][2];
} __svml_derf_data_internal;
#endif
__svml_derf_data_internal:
	/* _erf_tbl */
	.quad	0x0000000000000000, 0x3ff20dd750429b6d
	.quad	0x3f820dbf3deb1340, 0x3ff20d8f1975c85d
	.quad	0x3f920d77083f17a0, 0x3ff20cb67bd452c7
	.quad	0x3f9b137e0cf584dc, 0x3ff20b4d8bac36c1
	.quad	0x3fa20c5645dd2538, 0x3ff209546ad13ccf
	.quad	0x3fa68e5d3bbc9526, 0x3ff206cb4897b148
	.quad	0x3fab0fafef135745, 0x3ff203b261cd0053
	.quad	0x3faf902a77bd3821, 0x3ff2000a00ae3804
	.quad	0x3fb207d480e90658, 0x3ff1fbd27cdc72d3
	.quad	0x3fb44703e87e8593, 0x3ff1f70c3b4f2cc8
	.quad	0x3fb68591a1e83b5d, 0x3ff1f1b7ae44867f
	.quad	0x3fb8c36beb8a8d23, 0x3ff1ebd5552f795b
	.quad	0x3fbb0081148a873a, 0x3ff1e565bca400d4
	.quad	0x3fbd3cbf7e70a4b3, 0x3ff1de697e413d29
	.quad	0x3fbf78159ec8bb50, 0x3ff1d6e14099944a
	.quad	0x3fc0d939005f65e5, 0x3ff1cecdb718d61c
	.quad	0x3fc1f5e1a35c3b89, 0x3ff1c62fa1e869b6
	.quad	0x3fc311fc15f56d14, 0x3ff1bd07cdd189ac
	.quad	0x3fc42d7fc2f64959, 0x3ff1b357141d95d5
	.quad	0x3fc548642321d7c6, 0x3ff1a91e5a748165
	.quad	0x3fc662a0bdf7a89f, 0x3ff19e5e92b964ab
	.quad	0x3fc77c2d2a765f9e, 0x3ff19318bae53a04
	.quad	0x3fc895010fdbdbfd, 0x3ff1874ddcdfce24
	.quad	0x3fc9ad142662e14d, 0x3ff17aff0e56ec10
	.quad	0x3fcac45e37fe2526, 0x3ff16e2d7093cd8c
	.quad	0x3fcbdad72110a648, 0x3ff160da304ed92f
	.quad	0x3fccf076d1233237, 0x3ff153068581b781
	.quad	0x3fce05354b96ff36, 0x3ff144b3b337c90c
	.quad	0x3fcf190aa85540e2, 0x3ff135e3075d076b
	.quad	0x3fd015f78a3dcf3d, 0x3ff12695da8b5bde
	.quad	0x3fd09eed6982b948, 0x3ff116cd8fd67618
	.quad	0x3fd127631eb8de32, 0x3ff1068b94962e5e
	.quad	0x3fd1af54e232d609, 0x3ff0f5d1602f7e41
	.quad	0x3fd236bef825d9a2, 0x3ff0e4a073dc1b91
	.quad	0x3fd2bd9db0f7827f, 0x3ff0d2fa5a70c168
	.quad	0x3fd343ed6989b7d9, 0x3ff0c0e0a8223359
	.quad	0x3fd3c9aa8b84beda, 0x3ff0ae54fa490723
	.quad	0x3fd44ed18d9f6462, 0x3ff09b58f724416b
	.quad	0x3fd4d35ef3e5372e, 0x3ff087ee4d9ad247
	.quad	0x3fd5574f4ffac98e, 0x3ff07416b4fbfe7c
	.quad	0x3fd5da9f415ff23f, 0x3ff05fd3ecbec298
	.quad	0x3fd65d4b75b00471, 0x3ff04b27bc403d30
	.quad	0x3fd6df50a8dff772, 0x3ff03613f2812daf
	.quad	0x3fd760aba57a76bf, 0x3ff0209a65e29545
	.quad	0x3fd7e15944d9d3e4, 0x3ff00abcf3e187a9
	.quad	0x3fd861566f5fd3c0, 0x3fefe8fb01a47307
	.quad	0x3fd8e0a01cab516b, 0x3fefbbbbef34b4b2
	.quad	0x3fd95f3353cbb146, 0x3fef8dc092d58ff8
	.quad	0x3fd9dd0d2b721f39, 0x3fef5f0cdaf15313
	.quad	0x3fda5a2aca209394, 0x3fef2fa4c16c0019
	.quad	0x3fdad68966569a87, 0x3feeff8c4b1375db
	.quad	0x3fdb522646bbda68, 0x3feecec7870ebca8
	.quad	0x3fdbccfec24855b8, 0x3fee9d5a8e4c934e
	.quad	0x3fdc4710406a65fc, 0x3fee6b4982f158b9
	.quad	0x3fdcc058392a6d2d, 0x3fee38988fc46e72
	.quad	0x3fdd38d4354c3bd0, 0x3fee054be79d3042
	.quad	0x3fddb081ce6e2a48, 0x3fedd167c4cf9d2a
	.quad	0x3fde275eaf25e458, 0x3fed9cf06898cdaf
	.quad	0x3fde9d68931ae650, 0x3fed67ea1a8b5368
	.quad	0x3fdf129d471eabb1, 0x3fed325927fb9d89
	.quad	0x3fdf86faa9428f9d, 0x3fecfc41e36c7df9
	.quad	0x3fdffa7ea8eb5fd0, 0x3fecc5a8a3fbea40
	.quad	0x3fe03693a371519c, 0x3fec8e91c4d01368
	.quad	0x3fe06f794ab2cae7, 0x3fec5701a484ef9d
	.quad	0x3fe0a7ef5c18edd2, 0x3fec1efca49a5011
	.quad	0x3fe0dff4f247f6c6, 0x3febe68728e29d5e
	.quad	0x3fe1178930ada115, 0x3febada596f25436
	.quad	0x3fe14eab43841b55, 0x3feb745c55905bf8
	.quad	0x3fe1855a5fd3dd50, 0x3feb3aafcc27502e
	.quad	0x3fe1bb95c3746199, 0x3feb00a46237d5be
	.quad	0x3fe1f15cb50bc4de, 0x3feac63e7ecc1411
	.quad	0x3fe226ae840d4d70, 0x3fea8b8287ec6a09
	.quad	0x3fe25b8a88b6dd7f, 0x3fea5074e2157620
	.quad	0x3fe28ff0240d52cd, 0x3fea1519efaf889e
	.quad	0x3fe2c3debfd7d6c1, 0x3fe9d97610879642
	.quad	0x3fe2f755ce9a21f4, 0x3fe99d8da149c13f
	.quad	0x3fe32a54cb8db67b, 0x3fe96164fafd8de3
	.quad	0x3fe35cdb3a9a144d, 0x3fe925007283d7aa
	.quad	0x3fe38ee8a84beb71, 0x3fe8e86458169af8
	.quad	0x3fe3c07ca9cb4f9e, 0x3fe8ab94f6caa71d
	.quad	0x3fe3f196dcd0f135, 0x3fe86e9694134b9e
	.quad	0x3fe42236e79a5fa6, 0x3fe8316d6f48133d
	.quad	0x3fe4525c78dd5966, 0x3fe7f41dc12c9e89
	.quad	0x3fe4820747ba2dc2, 0x3fe7b6abbb7aaf19
	.quad	0x3fe4b13713ad3513, 0x3fe7791b886e7403
	.quad	0x3fe4dfeba47f63cc, 0x3fe73b714a552763
	.quad	0x3fe50e24ca35fd2c, 0x3fe6fdb11b1e0c34
	.quad	0x3fe53be25d016a4f, 0x3fe6bfdf0beddaf5
	.quad	0x3fe569243d2b3a9b, 0x3fe681ff24b4ab04
	.quad	0x3fe595ea53035283, 0x3fe6441563c665d4
	.quad	0x3fe5c2348ecc4dc3, 0x3fe60625bd75d07b
	.quad	0x3fe5ee02e8a71a53, 0x3fe5c8341bb23767
	.quad	0x3fe61955607dd15d, 0x3fe58a445da7c74c
	.quad	0x3fe6442bfdedd397, 0x3fe54c5a57629db0
	.quad	0x3fe66e86d0312e82, 0x3fe50e79d1749ac9
	.quad	0x3fe69865ee075011, 0x3fe4d0a6889dfd9f
	.quad	0x3fe6c1c9759d0e5f, 0x3fe492e42d78d2c5
	.quad	0x3fe6eab18c74091b, 0x3fe4553664273d24
	.quad	0x3fe7131e5f496a5a, 0x3fe417a0c4049fd0
	.quad	0x3fe73b1021fc0cb8, 0x3fe3da26d759aef5
	.quad	0x3fe762870f720c6f, 0x3fe39ccc1b136d5a
	.quad	0x3fe78983697dc96f, 0x3fe35f93fe7d1b3d
	.quad	0x3fe7b00578c26037, 0x3fe32281e2fd1a92
	.quad	0x3fe7d60d8c979f7b, 0x3fe2e5991bd4cbfc
	.quad	0x3fe7fb9bfaed8078, 0x3fe2a8dcede3673b
	.quad	0x3fe820b1202f27fb, 0x3fe26c508f6bd0ff
	.quad	0x3fe8454d5f25760d, 0x3fe22ff727dd6f7b
	.quad	0x3fe8697120d92a4a, 0x3fe1f3d3cf9ffe5a
	.quad	0x3fe88d1cd474a2e0, 0x3fe1b7e98fe26217
	.quad	0x3fe8b050ef253c37, 0x3fe17c3b626c7a12
	.quad	0x3fe8d30debfc572e, 0x3fe140cc3173f007
	.quad	0x3fe8f5544bd00c04, 0x3fe1059ed7740313
	.quad	0x3fe91724951b8fc6, 0x3fe0cab61f084b93
	.quad	0x3fe9387f53df5238, 0x3fe09014c2ca74da
	.quad	0x3fe959651980da31, 0x3fe055bd6d32e8d7
	.quad	0x3fe979d67caa6631, 0x3fe01bb2b87c6968
	.quad	0x3fe999d4192a5715, 0x3fdfc3ee5d1524b0
	.quad	0x3fe9b95e8fd26aba, 0x3fdf511a91a67d2a
	.quad	0x3fe9d8768656cc42, 0x3fdedeeee0959518
	.quad	0x3fe9f71ca72cffb6, 0x3fde6d6ffaa65a25
	.quad	0x3fea1551a16aaeaf, 0x3fddfca26f5bbf88
	.quad	0x3fea331628a45b92, 0x3fdd8c8aace11e63
	.quad	0x3fea506af4cc00f4, 0x3fdd1d2cfff91594
	.quad	0x3fea6d50c20fa293, 0x3fdcae8d93f1d7b7
	.quad	0x3fea89c850b7d54d, 0x3fdc40b0729ed548
	.quad	0x3feaa5d265064366, 0x3fdbd3998457afdb
	.quad	0x3feac16fc7143263, 0x3fdb674c8ffc6283
	.quad	0x3feadca142b10f98, 0x3fdafbcd3afe8ab6
	.quad	0x3feaf767a741088b, 0x3fda911f096fbc26
	.quad	0x3feb11c3c79bb424, 0x3fda27455e14c93c
	.quad	0x3feb2bb679ead19c, 0x3fd9be437a7de946
	.quad	0x3feb4540978921ee, 0x3fd9561c7f23a47b
	.quad	0x3feb5e62fce16095, 0x3fd8eed36b886d93
	.quad	0x3feb771e894d602e, 0x3fd8886b1e5ecfd1
	.quad	0x3feb8f741ef54f83, 0x3fd822e655b417e7
	.quad	0x3feba764a2af2b78, 0x3fd7be47af1f5d89
	.quad	0x3febbef0fbde6221, 0x3fd75a91a7f4d2ed
	.quad	0x3febd61a1453ab44, 0x3fd6f7c69d7d3ef8
	.quad	0x3febece0d82d1a5c, 0x3fd695e8cd31867e
	.quad	0x3fec034635b66e23, 0x3fd634fa54fa285f
	.quad	0x3fec194b1d49a184, 0x3fd5d4fd33729015
	.quad	0x3fec2ef0812fc1bd, 0x3fd575f3483021c3
	.quad	0x3fec443755820d64, 0x3fd517de540ce2a3
	.quad	0x3fec5920900b5fd1, 0x3fd4babff975a04c
	.quad	0x3fec6dad2829ec62, 0x3fd45e99bcbb7915
	.quad	0x3fec81de16b14cef, 0x3fd4036d0468a7a2
	.quad	0x3fec95b455cce69d, 0x3fd3a93b1998736c
	.quad	0x3feca930e0e2a825, 0x3fd35005285227f1
	.quad	0x3fecbc54b476248d, 0x3fd2f7cc3fe6f423
	.quad	0x3feccf20ce0c0d27, 0x3fd2a09153529381
	.quad	0x3fece1962c0e0d8b, 0x3fd24a55399ea239
	.quad	0x3fecf3b5cdaf0c39, 0x3fd1f518ae487dc8
	.quad	0x3fed0580b2cfd249, 0x3fd1a0dc51a9934d
	.quad	0x3fed16f7dbe41ca0, 0x3fd14da0a961fd14
	.quad	0x3fed281c49d818d0, 0x3fd0fb6620c550af
	.quad	0x3fed38eefdf64fdd, 0x3fd0aa2d09497f2b
	.quad	0x3fed4970f9ce00d9, 0x3fd059f59af7a906
	.quad	0x3fed59a33f19ed42, 0x3fd00abff4dec7a3
	.quad	0x3fed6986cfa798e7, 0x3fcf79183b101c5b
	.quad	0x3fed791cad3eff01, 0x3fcedeb406d9c825
	.quad	0x3fed8865d98abe01, 0x3fce4652fadcb6b2
	.quad	0x3fed97635600bb89, 0x3fcdaff4969c0b04
	.quad	0x3feda61623cb41e0, 0x3fcd1b982c501370
	.quad	0x3fedb47f43b2980d, 0x3fcc893ce1dcbef7
	.quad	0x3fedc29fb60715af, 0x3fcbf8e1b1ca2279
	.quad	0x3fedd0787a8bb39d, 0x3fcb6a856c3ed54f
	.quad	0x3fedde0a90611a0d, 0x3fcade26b7fbed95
	.quad	0x3fedeb56f5f12d28, 0x3fca53c4135a6526
	.quad	0x3fedf85ea8db188e, 0x3fc9cb5bd549b111
	.quad	0x3fee0522a5dfda73, 0x3fc944ec2e4f5630
	.quad	0x3fee11a3e8cf4eb8, 0x3fc8c07329874652
	.quad	0x3fee1de36c75ba58, 0x3fc83deeada4d25a
	.quad	0x3fee29e22a89d766, 0x3fc7bd5c7df3fe9c
	.quad	0x3fee35a11b9b61ce, 0x3fc73eba3b5b07b7
	.quad	0x3fee4121370224cc, 0x3fc6c205655be720
	.quad	0x3fee4c6372cd8927, 0x3fc6473b5b15a7a1
	.quad	0x3fee5768c3b4a3fc, 0x3fc5ce595c455b0a
	.quad	0x3fee62321d06c5e0, 0x3fc5575c8a468362
	.quad	0x3fee6cc0709c8a0d, 0x3fc4e241e912c305
	.quad	0x3fee7714aec96534, 0x3fc46f066040a832
	.quad	0x3fee812fc64db369, 0x3fc3fda6bc016994
	.quad	0x3fee8b12a44944a8, 0x3fc38e1fae1d6a9d
	.quad	0x3fee94be342e6743, 0x3fc3206dceef5f87
	.quad	0x3fee9e335fb56f87, 0x3fc2b48d9e5dea1c
	.quad	0x3feea7730ed0bbb9, 0x3fc24a7b84d38971
	.quad	0x3feeb07e27a133aa, 0x3fc1e233d434b813
	.quad	0x3feeb9558e6b42ce, 0x3fc17bb2c8d41535
	.quad	0x3feec1fa258c4bea, 0x3fc116f48a6476cc
	.quad	0x3feeca6ccd709544, 0x3fc0b3f52ce8c383
	.quad	0x3feed2ae6489ac1e, 0x3fc052b0b1a174ea
	.quad	0x3feedabfc7453e63, 0x3fbfe6460fef4680
	.quad	0x3feee2a1d004692c, 0x3fbf2a901ccafb37
	.quad	0x3feeea5557137ae0, 0x3fbe723726b824a9
	.quad	0x3feef1db32a2277c, 0x3fbdbd32ac4c99b0
	.quad	0x3feef93436bc2daa, 0x3fbd0b7a0f921e7c
	.quad	0x3fef006135426b26, 0x3fbc5d0497c09e74
	.quad	0x3fef0762fde45ee6, 0x3fbbb1c972f23e50
	.quad	0x3fef0e3a5e1a1788, 0x3fbb09bfb7d11a84
	.quad	0x3fef14e8211e8c55, 0x3fba64de673e8837
	.quad	0x3fef1b6d0fea5f4d, 0x3fb9c31c6df3b1b8
	.quad	0x3fef21c9f12f0677, 0x3fb92470a61b6965
	.quad	0x3fef27ff89525acf, 0x3fb888d1d8e510a3
	.quad	0x3fef2e0e9a6a8b09, 0x3fb7f036c0107294
	.quad	0x3fef33f7e43a706b, 0x3fb75a96077274ba
	.quad	0x3fef39bc242e43e6, 0x3fb6c7e64e7281cb
	.quad	0x3fef3f5c1558b19e, 0x3fb6381e2980956b
	.quad	0x3fef44d870704911, 0x3fb5ab342383d178
	.quad	0x3fef4a31ebcd47df, 0x3fb5211ebf41880b
	.quad	0x3fef4f693b67bd77, 0x3fb499d478bca735
	.quad	0x3fef547f10d60597, 0x3fb4154bc68d75c3
	.quad	0x3fef59741b4b97cf, 0x3fb3937b1b31925a
	.quad	0x3fef5e4907982a07, 0x3fb31458e6542847
	.quad	0x3fef62fe80272419, 0x3fb297db960e4f63
	.quad	0x3fef67952cff6282, 0x3fb21df9981f8e53
	.quad	0x3fef6c0db3c34641, 0x3fb1a6a95b1e786f
	.quad	0x3fef7068b7b10fd9, 0x3fb131e14fa1625d
	.quad	0x3fef74a6d9a38383, 0x3fb0bf97e95f2a64
	.quad	0x3fef78c8b812d498, 0x3fb04fc3a0481321
	.quad	0x3fef7cceef15d631, 0x3fafc4b5e32d6259
	.quad	0x3fef80ba18636f07, 0x3faeeea8c1b1db94
	.quad	0x3fef848acb544e95, 0x3fae1d4cf1e2450a
	.quad	0x3fef88419ce4e184, 0x3fad508f9a1ea64f
	.quad	0x3fef8bdf1fb78370, 0x3fac885df3451a07
	.quad	0x3fef8f63e416ebff, 0x3fabc4a54a84e834
	.quad	0x3fef92d077f8d56d, 0x3fab055303221015
	.quad	0x3fef96256700da8e, 0x3faa4a549829587e
	.quad	0x3fef99633a838a57, 0x3fa993979e14fffe
	.quad	0x3fef9c8a7989af0d, 0x3fa8e109c4622913
	.quad	0x3fef9f9ba8d3c733, 0x3fa83298d717210e
	.quad	0x3fefa2974addae45, 0x3fa78832c03aa2b1
	.quad	0x3fefa57ddfe27376, 0x3fa6e1c5893c380b
	.quad	0x3fefa84fe5e05c8d, 0x3fa63f3f5c4de13b
	.quad	0x3fefab0dd89d1309, 0x3fa5a08e85af27e0
	.quad	0x3fefadb831a9f9c3, 0x3fa505a174e9c929
	.quad	0x3fefb04f6868a944, 0x3fa46e66be002240
	.quad	0x3fefb2d3f20f9101, 0x3fa3dacd1a8d8cce
	.quad	0x3fefb54641aebbc9, 0x3fa34ac36ad8dafe
	.quad	0x3fefb7a6c834b5a2, 0x3fa2be38b6d92415
	.quad	0x3fefb9f5f4739170, 0x3fa2351c2f2d1449
	.quad	0x3fefbc3433260ca5, 0x3fa1af5d2e04f3f6
	.quad	0x3fefbe61eef4cf6a, 0x3fa12ceb37ff9bc3
	.quad	0x3fefc07f907bc794, 0x3fa0adb5fcfa8c75
	.quad	0x3fefc28d7e4f9cd0, 0x3fa031ad58d56279
	.quad	0x3fefc48c1d033c7a, 0x3f9f7182a851bca2
	.quad	0x3fefc67bcf2d7b8f, 0x3f9e85c449e377f3
	.quad	0x3fefc85cf56ecd38, 0x3f9da0005e5f28df
	.quad	0x3fefca2fee770c79, 0x3f9cc0180af00a8b
	.quad	0x3fefcbf5170b578b, 0x3f9be5ecd2fcb5f9
	.quad	0x3fefcdacca0bfb73, 0x3f9b1160991ff737
	.quad	0x3fefcf57607a6e7c, 0x3f9a4255a00b9f03
	.quad	0x3fefd0f5317f582f, 0x3f9978ae8b55ce1b
	.quad	0x3fefd2869270a56f, 0x3f98b44e6031383e
	.quad	0x3fefd40bd6d7a785, 0x3f97f5188610ddc8
	.quad	0x3fefd58550773cb5, 0x3f973af0c737bb45
	.quad	0x3fefd6f34f52013a, 0x3f9685bb5134ef13
	.quad	0x3fefd85621b0876d, 0x3f95d55cb54cd53a
	.quad	0x3fefd9ae142795e3, 0x3f9529b9e8cf9a1e
	.quad	0x3fefdafb719e6a69, 0x3f9482b8455dc491
	.quad	0x3fefdc3e835500b3, 0x3f93e03d891b37de
	.quad	0x3fefdd7790ea5bc0, 0x3f93422fd6d12e2b
	.quad	0x3fefdea6e062d0c9, 0x3f92a875b5ffab56
	.quad	0x3fefdfccb62e52d3, 0x3f9212f612dee7fb
	.quad	0x3fefe0e9552ebdd6, 0x3f9181983e5133dd
	.quad	0x3fefe1fcfebe2083, 0x3f90f443edc5ce49
	.quad	0x3fefe307f2b503d0, 0x3f906ae13b0d3255
	.quad	0x3fefe40a6f70af4b, 0x3f8fcab1483ea7fc
	.quad	0x3fefe504b1d9696c, 0x3f8ec72615a894c4
	.quad	0x3fefe5f6f568b301, 0x3f8dcaf3691fc448
	.quad	0x3fefe6e1742f7cf6, 0x3f8cd5ec93c12432
	.quad	0x3fefe7c466dc57a1, 0x3f8be7e5ac24963b
	.quad	0x3fefe8a004c19ae6, 0x3f8b00b38d6b3575
	.quad	0x3fefe97483db8670, 0x3f8a202bd6372dce
	.quad	0x3fefea4218d6594a, 0x3f894624e78e0faf
	.quad	0x3fefeb08f7146046, 0x3f887275e3a6869e
	.quad	0x3fefebc950b3fa75, 0x3f87a4f6aca256cb
	.quad	0x3fefec835695932e, 0x3f86dd7fe3358230
	.quad	0x3fefed37386190fb, 0x3f861beae53b72b7
	.quad	0x3fefede5248e38f4, 0x3f856011cc3b036d
	.quad	0x3fefee8d486585ee, 0x3f84a9cf6bda3f4c
	.quad	0x3fefef2fd00af31a, 0x3f83f8ff5042a88e
	.quad	0x3fefefcce6813974, 0x3f834d7dbc76d7e5
	.quad	0x3feff064b5afffbe, 0x3f82a727a89a3f14
	.quad	0x3feff0f766697c76, 0x3f8205dac02bd6b9
	.quad	0x3feff18520700971, 0x3f81697560347b26
	.quad	0x3feff20e0a7ba8c2, 0x3f80d1d69569b82d
	.quad	0x3feff2924a3f7a83, 0x3f803ede1a45bfee
	.quad	0x3feff312046f2339, 0x3f7f60d8aa2a88f2
	.quad	0x3feff38d5cc4227f, 0x3f7e4cc4abf7d065
	.quad	0x3feff404760319b4, 0x3f7d4143a9dfe965
	.quad	0x3feff47772010262, 0x3f7c3e1a5f5c077c
	.quad	0x3feff4e671a85425, 0x3f7b430ecf4a83a8
	.quad	0x3feff55194fe19df, 0x3f7a4fe83fb9db25
	.quad	0x3feff5b8fb26f5f6, 0x3f79646f35a76624
	.quad	0x3feff61cc26c1578, 0x3f78806d70b2fc36
	.quad	0x3feff67d08401202, 0x3f77a3ade6c8b3e5
	.quad	0x3feff6d9e943c231, 0x3f76cdfcbfc1e263
	.quad	0x3feff733814af88c, 0x3f75ff2750fe7820
	.quad	0x3feff789eb6130c9, 0x3f7536fc18f7ce5c
	.quad	0x3feff7dd41ce2b4d, 0x3f74754abacdf1dc
	.quad	0x3feff82d9e1a76d8, 0x3f73b9e3f9d06e3f
	.quad	0x3feff87b1913e853, 0x3f730499b503957f
	.quad	0x3feff8c5cad200a5, 0x3f72553ee2a336bf
	.quad	0x3feff90dcaba4096, 0x3f71aba78ba3af89
	.quad	0x3feff9532f846ab0, 0x3f7107a8c7323a6e
	.quad	0x3feff9960f3eb327, 0x3f706918b6355624
	.quad	0x3feff9d67f51ddba, 0x3f6f9f9cfd9c3035
	.quad	0x3feffa14948549a7, 0x3f6e77448fb66bb9
	.quad	0x3feffa506302ebae, 0x3f6d58da68fd1170
	.quad	0x3feffa89fe5b3625, 0x3f6c4412bf4b8f0b
	.quad	0x3feffac17988ef4b, 0x3f6b38a3af2e55b4
	.quad	0x3feffaf6e6f4f5c0, 0x3f6a3645330550ff
	.quad	0x3feffb2a5879f35e, 0x3f693cb11a30d765
	.quad	0x3feffb5bdf67fe6f, 0x3f684ba3004a50d0
	.quad	0x3feffb8b8c88295f, 0x3f6762d84469c18f
	.quad	0x3feffbb970200110, 0x3f66821000795a03
	.quad	0x3feffbe599f4f9d9, 0x3f65a90b00981d93
	.quad	0x3feffc10194fcb64, 0x3f64d78bba8ca5fd
	.quad	0x3feffc38fcffbb7c, 0x3f640d564548fad7
	.quad	0x3feffc60535dd7f5, 0x3f634a305080681f
	.quad	0x3feffc862a501fd7, 0x3f628de11c5031eb
	.quad	0x3feffcaa8f4c9bea, 0x3f61d83170fbf6fb
	.quad	0x3feffccd8f5c66d1, 0x3f6128eb96be8798
	.quad	0x3feffcef371ea4d7, 0x3f607fdb4dafea5f
	.quad	0x3feffd0f92cb6ba7, 0x3f5fb99b8b8279e1
	.quad	0x3feffd2eae369a07, 0x3f5e7f232d9e2630
	.quad	0x3feffd4c94d29fdb, 0x3f5d4fed7195d7e8
	.quad	0x3feffd6951b33686, 0x3f5c2b9cf7f893bf
	.quad	0x3feffd84ef9009ee, 0x3f5b11d702b3deb2
	.quad	0x3feffd9f78c7524a, 0x3f5a024365f771bd
	.quad	0x3feffdb8f7605ee7, 0x3f58fc8c794b03b5
	.quad	0x3feffdd1750e1220, 0x3f58005f08d6f1ef
	.quad	0x3feffde8fb314ebf, 0x3f570d6a46e07dda
	.quad	0x3feffdff92db56e5, 0x3f56235fbd7a4345
	.quad	0x3feffe1544d01ccb, 0x3f5541f340697987
	.quad	0x3feffe2a1988857c, 0x3f5468dadf4080ab
	.quad	0x3feffe3e19349dc7, 0x3f5397ced7af2b15
	.quad	0x3feffe514bbdc197, 0x3f52ce898809244e
	.quad	0x3feffe63b8c8b5f7, 0x3f520cc76202c5fb
	.quad	0x3feffe7567b7b5e1, 0x3f515246dda49d47
	.quad	0x3feffe865fac722b, 0x3f509ec86c75d497
	.quad	0x3feffe96a78a04a9, 0x3f4fe41cd9bb4eee
	.quad	0x3feffea645f6d6da, 0x3f4e97ba3b77f306
	.quad	0x3feffeb5415e7c44, 0x3f4d57f524723822
	.quad	0x3feffec39ff380b9, 0x3f4c245d4b99847a
	.quad	0x3feffed167b12ac2, 0x3f4afc85e0f82e12
	.quad	0x3feffede9e5d3262, 0x3f49e005769dbc1d
	.quad	0x3feffeeb49896c6d, 0x3f48ce75e9f6f8a0
	.quad	0x3feffef76e956a9f, 0x3f47c7744d9378f7
	.quad	0x3fefff0312b010b5, 0x3f46caa0d3582fe9
	.quad	0x3fefff0e3ad91ec2, 0x3f45d79eb71e893b
	.quad	0x3fefff18ebe2b0e1, 0x3f44ee1429bf7cc0
	.quad	0x3fefff232a72b48e, 0x3f440daa3c89f5b6
	.quad	0x3fefff2cfb0453d9, 0x3f43360ccd23db3a
	.quad	0x3fefff3661e9569d, 0x3f4266ea71d4f71a
	.quad	0x3fefff3f634b79f9, 0x3f419ff4663ae9df
	.quad	0x3fefff48032dbe40, 0x3f40e0de78654d1e
	.quad	0x3fefff50456dab8c, 0x3f40295ef6591848
	.quad	0x3fefff582dc48d30, 0x3f3ef25d37f49fe1
	.quad	0x3fefff5fbfc8a439, 0x3f3da01102b5f851
	.quad	0x3fefff66feee5129, 0x3f3c5b5412dcafad
	.quad	0x3fefff6dee89352e, 0x3f3b23a5a23e4210
	.quad	0x3fefff7491cd4af6, 0x3f39f8893d8fd1c1
	.quad	0x3fefff7aebcff755, 0x3f38d986a4187285
	.quad	0x3fefff80ff8911fd, 0x3f37c629a822bc9e
	.quad	0x3fefff86cfd3e657, 0x3f36be02102b3520
	.quad	0x3fefff8c5f702ccf, 0x3f35c0a378c90bca
	.quad	0x3fefff91b102fca8, 0x3f34cda5374ea275
	.quad	0x3fefff96c717b695, 0x3f33e4a23d1f4703
	.quad	0x3fefff9ba420e834, 0x3f330538fbb77ecd
	.quad	0x3fefffa04a7928b1, 0x3f322f0b496539be
	.quad	0x3fefffa4bc63ee9a, 0x3f3161be46ad3b50
	.quad	0x3fefffa8fc0e5f33, 0x3f309cfa445b00ff
	.quad	0x3fefffad0b901755, 0x3f2fc0d55470cf51
	.quad	0x3fefffb0ecebee1b, 0x3f2e577bbcd49935
	.quad	0x3fefffb4a210b172, 0x3f2cfd4a5adec5c0
	.quad	0x3fefffb82cd9dcbf, 0x3f2bb1a9657ce465
	.quad	0x3fefffbb8f1049c6, 0x3f2a740684026555
	.quad	0x3fefffbeca6adbe9, 0x3f2943d4a1d1ed39
	.quad	0x3fefffc1e08f25f5, 0x3f28208bc334a6a5
	.quad	0x3fefffc4d3120aa1, 0x3f2709a8db59f25c
	.quad	0x3fefffc7a37857d2, 0x3f25feada379d8b7
	.quad	0x3fefffca53375ce3, 0x3f24ff207314a102
	.quad	0x3fefffcce3b57bff, 0x3f240a8c1949f75e
	.quad	0x3fefffcf564ab6b7, 0x3f23207fb7420eb9
	.quad	0x3fefffd1ac4135f9, 0x3f22408e9ba3327f
	.quad	0x3fefffd3e6d5cd87, 0x3f216a501f0e42ca
	.quad	0x3fefffd607387b07, 0x3f209d5f819c9e29
	.quad	0x3fefffd80e8ce0da, 0x3f1fb2b792b40a22
	.quad	0x3fefffd9fdeabcce, 0x3f1e3bcf436a1a95
	.quad	0x3fefffdbd65e5ad0, 0x3f1cd55277c18d05
	.quad	0x3fefffdd98e903b2, 0x3f1b7e94604479dc
	.quad	0x3fefffdf46816833, 0x3f1a36eec00926dd
	.quad	0x3fefffe0e0140857, 0x3f18fdc1b2dcf7b9
	.quad	0x3fefffe26683972a, 0x3f17d2737527c3f9
	.quad	0x3fefffe3daa95b18, 0x3f16b4702d7d5849
	.quad	0x3fefffe53d558ae9, 0x3f15a329b7d30748
	.quad	0x3fefffe68f4fa777, 0x3f149e17724f4d41
	.quad	0x3fefffe7d156d244, 0x3f13a4b60ba9aa4e
	.quad	0x3fefffe904222101, 0x3f12b6875310f785
	.quad	0x3fefffea2860ee1e, 0x3f11d312098e9dba
	.quad	0x3fefffeb3ebb267b, 0x3f10f9e1b4dd36df
	.quad	0x3fefffec47d19457, 0x3f102a8673a94692
	.quad	0x3fefffed443e2787, 0x3f0ec929a665b449
	.quad	0x3fefffee34943b15, 0x3f0d4f4b4c8e09ed
	.quad	0x3fefffef1960d85d, 0x3f0be6abbb10a5aa
	.quad	0x3fefffeff32af7af, 0x3f0a8e8cc1fadef6
	.quad	0x3feffff0c273bea2, 0x3f094637d5bacfdb
	.quad	0x3feffff187b6bc0e, 0x3f080cfdc72220cf
	.quad	0x3feffff2436a21dc, 0x3f06e2367dc27f95
	.quad	0x3feffff2f5fefcaa, 0x3f05c540b4936fd2
	.quad	0x3feffff39fe16963, 0x3f04b581b8d170fc
	.quad	0x3feffff44178c8d2, 0x3f03b2652b06c2b2
	.quad	0x3feffff4db27f146, 0x3f02bb5cc22e5db6
	.quad	0x3feffff56d4d5e5e, 0x3f01cfe010e2052d
	.quad	0x3feffff5f8435efc, 0x3f00ef6c4c84a0fe
	.quad	0x3feffff67c604180, 0x3f001984165a5f36
	.quad	0x3feffff6f9f67e55, 0x3efe9b5e8d00ce77
	.quad	0x3feffff77154e0d6, 0x3efd16f5716c6c1a
	.quad	0x3feffff7e2c6aea2, 0x3efba4f035d60e03
	.quad	0x3feffff84e93cd75, 0x3efa447b7b03f045
	.quad	0x3feffff8b500e77c, 0x3ef8f4ccca7fc90d
	.quad	0x3feffff9164f8e46, 0x3ef7b5223dac7336
	.quad	0x3feffff972be5c59, 0x3ef684c227fcacef
	.quad	0x3feffff9ca891572, 0x3ef562fac4329b48
	.quad	0x3feffffa1de8c582, 0x3ef44f21e49054f2
	.quad	0x3feffffa6d13de73, 0x3ef34894a5e24657
	.quad	0x3feffffab83e54b8, 0x3ef24eb7254ccf83
	.quad	0x3feffffaff99bac4, 0x3ef160f438c70913
	.quad	0x3feffffb43555b5f, 0x3ef07ebd2a2d2844
	.quad	0x3feffffb839e52f3, 0x3eef4f12e9ab070a
	.quad	0x3feffffbc09fa7cd, 0x3eedb5ad0b27805c
	.quad	0x3feffffbfa82616b, 0x3eec304efa2c6f4e
	.quad	0x3feffffc316d9ed0, 0x3eeabe09e9144b5e
	.quad	0x3feffffc6586abf6, 0x3ee95df988e76644
	.quad	0x3feffffc96f1165e, 0x3ee80f439b4ee04b
	.quad	0x3feffffcc5cec0c1, 0x3ee6d11788a69c64
	.quad	0x3feffffcf23ff5fc, 0x3ee5a2adfa0b4bc4
	.quad	0x3feffffd1c637b2b, 0x3ee4834877429b8f
	.quad	0x3feffffd4456a10d, 0x3ee37231085c7d9a
	.quad	0x3feffffd6a3554a1, 0x3ee26eb9daed6f7e
	.quad	0x3feffffd8e1a2f22, 0x3ee1783ceac28910
	.quad	0x3feffffdb01e8546, 0x3ee08e1badf0fced
	.quad	0x3feffffdd05a75ea, 0x3edf5f7d88472604
	.quad	0x3feffffdeee4f810, 0x3eddb92b5212fb8d
	.quad	0x3feffffe0bd3e852, 0x3edc282cd3957eda
	.quad	0x3feffffe273c15b7, 0x3edaab7abace48dc
	.quad	0x3feffffe41314e06, 0x3ed94219bfcb4928
	.quad	0x3feffffe59c6698b, 0x3ed7eb1a2075864e
	.quad	0x3feffffe710d565e, 0x3ed6a597219a93da
	.quad	0x3feffffe8717232d, 0x3ed570b69502f313
	.quad	0x3feffffe9bf4098c, 0x3ed44ba864670882
	.quad	0x3feffffeafb377d5, 0x3ed335a62115bce2
	.quad	0x3feffffec2641a9e, 0x3ed22df298214423
	.quad	0x3feffffed413e5b7, 0x3ed133d96ae7e0dd
	.quad	0x3feffffee4d01cd6, 0x3ed046aeabcfcdec
	.quad	0x3feffffef4a55bd4, 0x3ececb9cfe1d8642
	.quad	0x3fefffff039f9e8f, 0x3ecd21397ead99cb
	.quad	0x3fefffff11ca4876, 0x3ecb8d094c86d374
	.quad	0x3fefffff1f302bc1, 0x3eca0df0f0c626dc
	.quad	0x3fefffff2bdb904d, 0x3ec8a2e269750a39
	.quad	0x3fefffff37d63a36, 0x3ec74adc8f4064d3
	.quad	0x3fefffff43297019, 0x3ec604ea819f007c
	.quad	0x3fefffff4dde0118, 0x3ec4d0231928c6f9
	.quad	0x3fefffff57fc4a95, 0x3ec3aba85fe22e20
	.quad	0x3fefffff618c3da6, 0x3ec296a70f414053
	.quad	0x3fefffff6a956450, 0x3ec1905613b3abf2
	.quad	0x3fefffff731ee681, 0x3ec097f6156f32c5
	.quad	0x3fefffff7b2f8ed6, 0x3ebf59a20caf6695
	.quad	0x3fefffff82cdcf1b, 0x3ebd9c73698fb1dc
	.quad	0x3fefffff89ffc4aa, 0x3ebbf716c6168bae
	.quad	0x3fefffff90cb3c81, 0x3eba6852c6b58392
	.quad	0x3fefffff9735b73b, 0x3eb8eefd70594a89
	.quad	0x3fefffff9d446ccc, 0x3eb789fb715aae95
	.quad	0x3fefffffa2fc5015, 0x3eb6383f726a8e04
	.quad	0x3fefffffa8621251, 0x3eb4f8c96f26a26a
	.quad	0x3fefffffad7a2652, 0x3eb3caa61607f920
	.quad	0x3fefffffb248c39d, 0x3eb2acee2f5ecdb8
	.quad	0x3fefffffb6d1e95d, 0x3eb19ec60b1242ed
	.quad	0x3fefffffbb196132, 0x3eb09f5cf4dd2877
	.quad	0x3fefffffbf22c1e2, 0x3eaf5bd95d8730d8
	.quad	0x3fefffffc2f171e3, 0x3ead9371e2ff7c35
	.quad	0x3fefffffc688a9cf, 0x3eabe41de54d155a
	.quad	0x3fefffffc9eb76ac, 0x3eaa4c89e08ef4f3
	.quad	0x3fefffffcd1cbc28, 0x3ea8cb738399b12c
	.quad	0x3fefffffd01f36af, 0x3ea75fa8dbc84bec
	.quad	0x3fefffffd2f57d68, 0x3ea608078a70dcbc
	.quad	0x3fefffffd5a2041f, 0x3ea4c37c0394d094
	.quad	0x3fefffffd8271d12, 0x3ea39100d5687bfe
	.quad	0x3fefffffda86faa9, 0x3ea26f9df8519bd7
	.quad	0x3fefffffdcc3b117, 0x3ea15e6827001f18
	.quad	0x3fefffffdedf37ed, 0x3ea05c803e4831c1
	.quad	0x3fefffffe0db6b91, 0x3e9ed22548cffd35
	.quad	0x3fefffffe2ba0ea5, 0x3e9d06ad6ecdf971
	.quad	0x3fefffffe47ccb60, 0x3e9b551c847fbc96
	.quad	0x3fefffffe62534d4, 0x3e99bc09f112b494
	.quad	0x3fefffffe7b4c81e, 0x3e983a1ff0aa239d
	.quad	0x3fefffffe92ced93, 0x3e96ce1aa3fd7bdd
	.quad	0x3fefffffea8ef9cf, 0x3e9576c72b514859
	.quad	0x3fefffffebdc2ec6, 0x3e943302cc4a0da8
	.quad	0x3fefffffed15bcba, 0x3e9301ba221dc9bb
	.quad	0x3fefffffee3cc32c, 0x3e91e1e857adc568
	.quad	0x3fefffffef5251c2, 0x3e90d2966b1746f7
	.quad	0x3feffffff0576917, 0x3e8fa5b4f49cc6b2
	.quad	0x3feffffff14cfb92, 0x3e8dc3ae30b55c16
	.quad	0x3feffffff233ee1d, 0x3e8bfd7555a3bd68
	.quad	0x3feffffff30d18e8, 0x3e8a517d9e61628a
	.quad	0x3feffffff3d9480f, 0x3e88be4f8f6c951f
	.quad	0x3feffffff4993c46, 0x3e874287ded49339
	.quad	0x3feffffff54dab72, 0x3e85dcd669f2cd34
	.quad	0x3feffffff5f74141, 0x3e848bfd38302871
	.quad	0x3feffffff6969fb8, 0x3e834ecf8a3c124a
	.quad	0x3feffffff72c5fb6, 0x3e822430f521cbcf
	.quad	0x3feffffff7b91176, 0x3e810b1488aeb235
	.quad	0x3feffffff83d3d07, 0x3e80027c00a263a6
	.quad	0x3feffffff8b962be, 0x3e7e12ee004efc37
	.quad	0x3feffffff92dfba2, 0x3e7c3e44ae32b16b
	.quad	0x3feffffff99b79d2, 0x3e7a854ea14102a8
	.quad	0x3feffffffa0248e8, 0x3e78e6761569f45d
	.quad	0x3feffffffa62ce54, 0x3e77603bac345f65
	.quad	0x3feffffffabd69b4, 0x3e75f1353cdad001
	.quad	0x3feffffffb127525, 0x3e74980cb3c80949
	.quad	0x3feffffffb624592, 0x3e73537f00b6ad4d
	.quad	0x3feffffffbad2aff, 0x3e72225b12bffc68
	.quad	0x3feffffffbf370cd, 0x3e710380e1adb7e9
	.quad	0x3feffffffc355dfd, 0x3e6febc107d5efaa
	.quad	0x3feffffffc733572, 0x3e6df0f2a0ee6947
	.quad	0x3feffffffcad3626, 0x3e6c14b2188bcee4
	.quad	0x3feffffffce39b67, 0x3e6a553644f7f07d
	.quad	0x3feffffffd169d0c, 0x3e68b0cfce0579e0
	.quad	0x3feffffffd466fa5, 0x3e6725e7c5dd20f7
	.quad	0x3feffffffd7344aa, 0x3e65b2fe547a1340
	.quad	0x3feffffffd9d4aab, 0x3e6456a974e92e93
	.quad	0x3feffffffdc4ad7a, 0x3e630f93c3699078
	.quad	0x3feffffffde9964e, 0x3e61dc7b5b978cf8
	.quad	0x3feffffffe0c2bf0, 0x3e60bc30c5d52f15
	.quad	0x3feffffffe2c92db, 0x3e5f5b2be65a0c7f
	.quad	0x3feffffffe4aed5e, 0x3e5d5f3a8dea7357
	.quad	0x3feffffffe675bbd, 0x3e5b82915b03515b
	.quad	0x3feffffffe81fc4e, 0x3e59c3517e789488
	.quad	0x3feffffffe9aeb97, 0x3e581fb7df06136e
	.quad	0x3feffffffeb24467, 0x3e56961b8d641d06
	.quad	0x3feffffffec81ff2, 0x3e5524ec4d916cae
	.quad	0x3feffffffedc95e7, 0x3e53cab1343d18d1
	.quad	0x3feffffffeefbc85, 0x3e52860757487a01
	.quad	0x3fefffffff01a8b6, 0x3e5155a09065d4f7
	.quad	0x3fefffffff126e1e, 0x3e50384250e4c9fc
	.quad	0x3fefffffff221f30, 0x3e4e59890b926c78
	.quad	0x3fefffffff30cd3f, 0x3e4c642116a8a9e3
	.quad	0x3fefffffff3e8892, 0x3e4a8e405e651ab6
	.quad	0x3fefffffff4b606f, 0x3e48d5f98114f872
	.quad	0x3fefffffff57632d, 0x3e47397c5a66e307
	.quad	0x3fefffffff629e44, 0x3e45b71456c5a4c4
	.quad	0x3fefffffff6d1e56, 0x3e444d26de513197
	.quad	0x3fefffffff76ef3f, 0x3e42fa31d6371537
	.quad	0x3fefffffff801c1f, 0x3e41bcca373b7b43
	.quad	0x3fefffffff88af67, 0x3e40939ab853339f
	.quad	0x3fefffffff90b2e3, 0x3e3efac5187b2863
	.quad	0x3fefffffff982fc1, 0x3e3cf1e86235d0e7
	.quad	0x3fefffffff9f2e9f, 0x3e3b0a68a2128bab
	.quad	0x3fefffffffa5b790, 0x3e39423165bc4444
	.quad	0x3fefffffffabd229, 0x3e37974e743dea3d
	.quad	0x3fefffffffb18582, 0x3e3607e9eacd1050
	.quad	0x3fefffffffb6d844, 0x3e34924a74dec729
	.quad	0x3fefffffffbbd0aa, 0x3e3334d19e0c2160
	.quad	0x3fefffffffc0748f, 0x3e31edfa3c5f5cca
	.quad	0x3fefffffffc4c96c, 0x3e30bc56f1b54701
	.quad	0x3fefffffffc8d462, 0x3e2f3d2185e047d9
	.quad	0x3fefffffffcc9a41, 0x3e2d26cb87945e87
	.quad	0x3fefffffffd01f89, 0x3e2b334fac4b9f99
	.quad	0x3fefffffffd36871, 0x3e296076f7918d1c
	.quad	0x3fefffffffd678ed, 0x3e27ac2d72fc2c63
	.quad	0x3fefffffffd954ae, 0x3e2614801550319e
	.quad	0x3fefffffffdbff2a, 0x3e24979ac8b28927
	.quad	0x3fefffffffde7ba0, 0x3e2333c68e2d0548
	.quad	0x3fefffffffe0cd16, 0x3e21e767bce37dd7
	.quad	0x3fefffffffe2f664, 0x3e20b0fc5b6d05a0
	.quad	0x3fefffffffe4fa30, 0x3e1f1e3523b41d7d
	.quad	0x3fefffffffe6daf7, 0x3e1d00de6608effe
	.quad	0x3fefffffffe89b0c, 0x3e1b0778b7b3301b
	.quad	0x3fefffffffea3c9a, 0x3e192fb04ec0f6cf
	.quad	0x3fefffffffebc1a9, 0x3e177756ec9f78fa
	.quad	0x3fefffffffed2c21, 0x3e15dc61922d5a06
	.quad	0x3fefffffffee7dc8, 0x3e145ce65699ff6d
	.quad	0x3fefffffffefb847, 0x3e12f71a5f159970
	.quad	0x3feffffffff0dd2b, 0x3e11a94ff571654f
	.quad	0x3feffffffff1ede9, 0x3e1071f4bbea09ec
	.quad	0x3feffffffff2ebda, 0x3e0e9f1ff8ddd774
	.quad	0x3feffffffff3d843, 0x3e0c818223a202c7
	.quad	0x3feffffffff4b453, 0x3e0a887bd2b4404d
	.quad	0x3feffffffff58126, 0x3e08b1a336c5eb6b
	.quad	0x3feffffffff63fc3, 0x3e06fab63324088a
	.quad	0x3feffffffff6f121, 0x3e056197e30205ba
	.quad	0x3feffffffff79626, 0x3e03e44e45301b92
	.quad	0x3feffffffff82fab, 0x3e0281000bfe4c3f
	.quad	0x3feffffffff8be77, 0x3e0135f28f2d50b4
	.quad	0x3feffffffff94346, 0x3e000187dded5975
	.quad	0x3feffffffff9bec8, 0x3dfdc479de0ef001
	.quad	0x3feffffffffa319f, 0x3dfbad4fdad3caa1
	.quad	0x3feffffffffa9c63, 0x3df9baed3ed27ab8
	.quad	0x3feffffffffaffa4, 0x3df7ead9ce4285bb
	.quad	0x3feffffffffb5be5, 0x3df63ac6b4edc88e
	.quad	0x3feffffffffbb1a2, 0x3df4a88be2a6390c
	.quad	0x3feffffffffc014e, 0x3df332259185f1a0
	.quad	0x3feffffffffc4b56, 0x3df1d5b1f3793044
	.quad	0x3feffffffffc901c, 0x3df0916f04b6e18b
	.quad	0x3feffffffffccfff, 0x3deec77101de6926
	.quad	0x3feffffffffd0b56, 0x3dec960bf23153e0
	.quad	0x3feffffffffd4271, 0x3dea8bd20fc65ef7
	.quad	0x3feffffffffd759d, 0x3de8a61745ec7d1d
	.quad	0x3feffffffffda520, 0x3de6e25d0e756261
	.quad	0x3feffffffffdd13c, 0x3de53e4f7d1666cb
	.quad	0x3feffffffffdfa2d, 0x3de3b7c27a7ddb0e
	.quad	0x3feffffffffe202d, 0x3de24caf2c32af14
	.quad	0x3feffffffffe4371, 0x3de0fb3186804d0f
	.quad	0x3feffffffffe642a, 0x3ddf830c0bb41fd7
	.quad	0x3feffffffffe8286, 0x3ddd3c0f1a91c846
	.quad	0x3feffffffffe9eb0, 0x3ddb1e5acf351d87
	.quad	0x3feffffffffeb8d0, 0x3dd92712d259ce66
	.quad	0x3feffffffffed10a, 0x3dd7538c60a04476
	.quad	0x3feffffffffee782, 0x3dd5a14b04b47879
	.quad	0x3feffffffffefc57, 0x3dd40dfd87456f4c
	.quad	0x3fefffffffff0fa7, 0x3dd2977b1172b9d5
	.quad	0x3fefffffffff218f, 0x3dd13bc07e891491
	.quad	0x3fefffffffff3227, 0x3dcff1dbb4300811
	.quad	0x3fefffffffff4188, 0x3dcd9a880f306bd8
	.quad	0x3fefffffffff4fc9, 0x3dcb6e45220b55e0
	.quad	0x3fefffffffff5cfd, 0x3dc96a0b33f2c4da
	.quad	0x3fefffffffff6939, 0x3dc78b07e9e924ac
	.quad	0x3fefffffffff748e, 0x3dc5ce9ab1670dd2
	.quad	0x3fefffffffff7f0d, 0x3dc4325167006bb0
	.quad	0x3fefffffffff88c5, 0x3dc2b3e53538ff3f
	.quad	0x3fefffffffff91c6, 0x3dc15137a7f44864
	.quad	0x3fefffffffff9a1b, 0x3dc0084ff125639d
	.quad	0x3fefffffffffa1d2, 0x3dbdaeb0b7311ec7
	.quad	0x3fefffffffffa8f6, 0x3dbb7937d1c40c53
	.quad	0x3fefffffffffaf92, 0x3db96d082f59ab06
	.quad	0x3fefffffffffb5b0, 0x3db7872d9fa10aad
	.quad	0x3fefffffffffbb58, 0x3db5c4e8e37bc7d0
	.quad	0x3fefffffffffc095, 0x3db423ac0df49a40
	.quad	0x3fefffffffffc56d, 0x3db2a117230ad284
	.quad	0x3fefffffffffc9e8, 0x3db13af4f04f9998
	.quad	0x3fefffffffffce0d, 0x3dafde703724e560
	.quad	0x3fefffffffffd1e1, 0x3dad77f0c82e7641
	.quad	0x3fefffffffffd56c, 0x3dab3ee02611d7dd
	.quad	0x3fefffffffffd8b3, 0x3da92ff33023d5bd
	.quad	0x3fefffffffffdbba, 0x3da7481a9e69f53f
	.quad	0x3fefffffffffde86, 0x3da5847eda620959
	.quad	0x3fefffffffffe11d, 0x3da3e27c1fcc74bd
	.quad	0x3fefffffffffe380, 0x3da25f9ee0b923dc
	.quad	0x3fefffffffffe5b6, 0x3da0f9a068653200
	.quad	0x3fefffffffffe7c0, 0x3d9f5cc7718082b0
	.quad	0x3fefffffffffe9a2, 0x3d9cf7e53d6a2ca5
	.quad	0x3fefffffffffeb60, 0x3d9ac0f5f3229372
	.quad	0x3fefffffffffecfb, 0x3d98b498644847ea
	.quad	0x3fefffffffffee77, 0x3d96cfa9bcca59dc
	.quad	0x3fefffffffffefd6, 0x3d950f411d4fd2cd
	.quad	0x3feffffffffff11a, 0x3d9370ab8327af5e
	.quad	0x3feffffffffff245, 0x3d91f167f88c6b6e
	.quad	0x3feffffffffff359, 0x3d908f24085d4597
	.quad	0x3feffffffffff457, 0x3d8e8f70e181d61a
	.quad	0x3feffffffffff542, 0x3d8c324c20e337dc
	.quad	0x3feffffffffff61b, 0x3d8a03261574b54e
	.quad	0x3feffffffffff6e3, 0x3d87fe903cdf5855
	.quad	0x3feffffffffff79b, 0x3d86215c58da3450
	.quad	0x3feffffffffff845, 0x3d846897d4b69fc6
	.quad	0x3feffffffffff8e2, 0x3d82d1877d731b7b
	.quad	0x3feffffffffff973, 0x3d8159a386b11517
	.quad	0x3feffffffffff9f8, 0x3d7ffd27ae9393ce
	.quad	0x3feffffffffffa73, 0x3d7d7c593130dd0b
	.quad	0x3feffffffffffae4, 0x3d7b2cd607c79bcf
	.quad	0x3feffffffffffb4c, 0x3d790ae4d3405651
	.quad	0x3feffffffffffbad, 0x3d771312dd1759e2
	.quad	0x3feffffffffffc05, 0x3d75422ef5d8949d
	.quad	0x3feffffffffffc57, 0x3d739544b0ecc957
	.quad	0x3feffffffffffca2, 0x3d720997f73e73dd
	.quad	0x3feffffffffffce7, 0x3d709ca0eaacd277
	.quad	0x3feffffffffffd27, 0x3d6e9810295890ec
	.quad	0x3feffffffffffd62, 0x3d6c2b45b5aa4a1d
	.quad	0x3feffffffffffd98, 0x3d69eee068fa7596
	.quad	0x3feffffffffffdca, 0x3d67df2b399c10a8
	.quad	0x3feffffffffffdf8, 0x3d65f8b87a31bd85
	.quad	0x3feffffffffffe22, 0x3d64385c96e9a2d9
	.quad	0x3feffffffffffe49, 0x3d629b2933ef4cbc
	.quad	0x3feffffffffffe6c, 0x3d611e68a6378f8a
	.quad	0x3feffffffffffe8d, 0x3d5f7f338086a86b
	.quad	0x3feffffffffffeab, 0x3d5cf8d7d9ce040a
	.quad	0x3feffffffffffec7, 0x3d5aa577251ae485
	.quad	0x3feffffffffffee1, 0x3d58811d739efb5f
	.quad	0x3feffffffffffef8, 0x3d568823e52970be
	.quad	0x3fefffffffffff0e, 0x3d54b72ae68e8b4c
	.quad	0x3fefffffffffff22, 0x3d530b14dbe876bc
	.quad	0x3fefffffffffff34, 0x3d5181012ef86610
	.quad	0x3fefffffffffff45, 0x3d501647ba798745
	.quad	0x3fefffffffffff54, 0x3d4d90e917701675
	.quad	0x3fefffffffffff62, 0x3d4b2a87e86d0c8a
	.quad	0x3fefffffffffff6f, 0x3d48f53dcb377293
	.quad	0x3fefffffffffff7b, 0x3d46ed2f2515e933
	.quad	0x3fefffffffffff86, 0x3d450ecc9ed47f19
	.quad	0x3fefffffffffff90, 0x3d4356cd5ce7799e
	.quad	0x3fefffffffffff9a, 0x3d41c229a587ab78
	.quad	0x3fefffffffffffa2, 0x3d404e15ecc7f3f6
	.quad	0x3fefffffffffffaa, 0x3d3deffc7e6a6017
	.quad	0x3fefffffffffffb1, 0x3d3b7b040832f310
	.quad	0x3fefffffffffffb8, 0x3d3938e021f36d76
	.quad	0x3fefffffffffffbe, 0x3d37258610b3b233
	.quad	0x3fefffffffffffc3, 0x3d353d3bfc82a909
	.quad	0x3fefffffffffffc8, 0x3d337c92babdc2fd
	.quad	0x3fefffffffffffcd, 0x3d31e06010120f6a
	.quad	0x3fefffffffffffd1, 0x3d3065b9616170d4
	.quad	0x3fefffffffffffd5, 0x3d2e13dd96b3753b
	.quad	0x3fefffffffffffd9, 0x3d2b950d32467392
	.quad	0x3fefffffffffffdc, 0x3d294a72263259a5
	.quad	0x3fefffffffffffdf, 0x3d272fd93e036cdc
	.quad	0x3fefffffffffffe2, 0x3d254164576929ab
	.quad	0x3fefffffffffffe4, 0x3d237b83c521fe96
	.quad	0x3fefffffffffffe7, 0x3d21daf033182e96
	.quad	0x3fefffffffffffe9, 0x3d205ca50205d26a
	.quad	0x3fefffffffffffeb, 0x3d1dfbb6235639fa
	.quad	0x3fefffffffffffed, 0x3d1b7807e294781f
	.quad	0x3fefffffffffffee, 0x3d19298add70a734
	.quad	0x3feffffffffffff0, 0x3d170beaf9c7ffb6
	.quad	0x3feffffffffffff1, 0x3d151b2cd6709222
	.quad	0x3feffffffffffff3, 0x3d1353a6cf7f7fff
	.quad	0x3feffffffffffff4, 0x3d11b1fa8cbe84a7
	.quad	0x3feffffffffffff5, 0x3d10330f0fd69921
	.quad	0x3feffffffffffff6, 0x3d0da81670f96f9b
	.quad	0x3feffffffffffff7, 0x3d0b24a16b4d09aa
	.quad	0x3feffffffffffff7, 0x3d08d6eeb6efdbd6
	.quad	0x3feffffffffffff8, 0x3d06ba91ac734786
	.quad	0x3feffffffffffff9, 0x3d04cb7966770ab5
	.quad	0x3feffffffffffff9, 0x3d0305e9721d0981
	.quad	0x3feffffffffffffa, 0x3d01667311fff70a
	.quad	0x3feffffffffffffb, 0x3cffd3de10d62855
	.quad	0x3feffffffffffffb, 0x3cfd1aefbcd48d0c
	.quad	0x3feffffffffffffb, 0x3cfa9cc93c25aca9
	.quad	0x3feffffffffffffc, 0x3cf85487ee3ea735
	.quad	0x3feffffffffffffc, 0x3cf63daf8b4b1e0c
	.quad	0x3feffffffffffffd, 0x3cf45421e69a6ca1
	.quad	0x3feffffffffffffd, 0x3cf294175802d99a
	.quad	0x3feffffffffffffd, 0x3cf0fa17bf41068f
	.quad	0x3feffffffffffffd, 0x3cef05e82aae2bb9
	.quad	0x3feffffffffffffe, 0x3cec578101b29058
	.quad	0x3feffffffffffffe, 0x3ce9e39dc5dd2f7c
	.quad	0x3feffffffffffffe, 0x3ce7a553a728bbf2
	.quad	0x3feffffffffffffe, 0x3ce5982008db1304
	.quad	0x3feffffffffffffe, 0x3ce3b7e00422e51b
	.quad	0x3feffffffffffffe, 0x3ce200c898d9ee3e
	.quad	0x3fefffffffffffff, 0x3ce06f5f7eb65a56
	.quad	0x3fefffffffffffff, 0x3cde00e9148a1d25
	.quad	0x3fefffffffffffff, 0x3cdb623734024e92
	.quad	0x3fefffffffffffff, 0x3cd8fd4e01891bf8
	.quad	0x3fefffffffffffff, 0x3cd6cd44c7470d89
	.quad	0x3fefffffffffffff, 0x3cd4cd9c04158cd7
	.quad	0x3fefffffffffffff, 0x3cd2fa34bf5c8344
	.quad	0x3fefffffffffffff, 0x3cd14f4890ff2461
	.quad	0x3fefffffffffffff, 0x3ccf92c49dfa4df5
	.quad	0x3fefffffffffffff, 0x3ccccaaea71ab0df
	.quad	0x3fefffffffffffff, 0x3cca40829f001197
	.quad	0x3ff0000000000000, 0x3cc7eef13b59e96c
	.quad	0x3ff0000000000000, 0x3cc5d11e1a252bf5
	.quad	0x3ff0000000000000, 0x3cc3e296303b2297
	.quad	0x3ff0000000000000, 0x3cc21f47009f43ce
	.quad	0x3ff0000000000000, 0x3cc083768c5e4542
	.quad	0x3ff0000000000000, 0x3cbe1777d831265f
	.quad	0x3ff0000000000000, 0x3cbb69f10b0191b5
	.quad	0x3ff0000000000000, 0x3cb8f8a3a05b5b53
	.quad	0x3ff0000000000000, 0x3cb6be573c40c8e7
	.quad	0x3ff0000000000000, 0x3cb4b645ba991fdb
	.align	32
	.quad	0x7fffffffffffffff, 0x7fffffffffffffff, 0x7fffffffffffffff, 0x7fffffffffffffff /* _AbsMask */
	.align	32
	.quad	0x4017f80000000000, 0x4017f80000000000, 0x4017f80000000000, 0x4017f80000000000 /* _MaxThreshold = 6.0 - 1.0/128.0 */
	.align	32
	.quad	0x42c0000000000000, 0x42c0000000000000, 0x42c0000000000000, 0x42c0000000000000 /* SRound */
	.align	32
	.quad	0x2ff0000000000000, 0x2ff0000000000000, 0x2ff0000000000000, 0x2ff0000000000000 /* _U2THreshold */
	.align	32
	.quad	0xbfa6c16db05bdea5, 0xbfa6c16db05bdea5, 0xbfa6c16db05bdea5, 0xbfa6c16db05bdea5 /* _poly_1_0 */
	.align	32
	.quad	0x3fc1111235a363b1, 0x3fc1111235a363b1, 0x3fc1111235a363b1, 0x3fc1111235a363b1 /* _poly_1_1 */
	.align	32
	.quad	0x3fcc71ca1c71eb57, 0x3fcc71ca1c71eb57, 0x3fcc71ca1c71eb57, 0x3fcc71ca1c71eb57 /* _poly_3_0 */
	.align	32
	.quad	0xbfd9999c2be2dda8, 0xbfd9999c2be2dda8, 0xbfd9999c2be2dda8, 0xbfd9999c2be2dda8 /* _poly_3_1 */
	.align	32
	.quad	0xbfc5555800001B4F, 0xbfc5555800001B4F, 0xbfc5555800001B4F, 0xbfc5555800001B4F /* _poly_5_0 */
	.align	32
	.quad	0x3fb9999E2BE2F122, 0x3fb9999E2BE2F122, 0x3fb9999E2BE2F122, 0x3fb9999E2BE2F122 /* _poly_5_1 */
	.align	32
	.quad	0xbfd55555555547f6, 0xbfd55555555547f6, 0xbfd55555555547f6, 0xbfd55555555547f6 /* _poly_1_2 */
	.align	32
	.quad	0x3fdfffffffffd4cd, 0x3fdfffffffffd4cd, 0x3fdfffffffffd4cd, 0x3fdfffffffffd4cd /* _poly_3_2 */
	.align	32
	.quad	0x3fe5555555554b0c, 0x3fe5555555554b0c, 0x3fe5555555554b0c, 0x3fe5555555554b0c /* _poly_1_3 */
	.align	32
	.quad	0xbfd5555555555555, 0xbfd5555555555555, 0xbfd5555555555555, 0xbfd5555555555555 /* _poly_3_3 */
	.align	32
	.quad	0x00000000ffffffff, 0x00000000ffffffff, 0x00000000ffffffff, 0x00000000ffffffff /* _Mask32 */
	.align	32
	.type	__svml_derf_data_internal, @object
	.size	__svml_derf_data_internal, .-__svml_derf_data_internal
